RLPark 1.0.0
Reinforcement Learning Framework in Java

MotionMeasure.java

Go to the documentation of this file.
00001 package rlpark.plugin.opencv;
00002 
00003 import zephyr.plugin.core.api.monitoring.annotations.IgnoreMonitor;
00004 import zephyr.plugin.core.api.monitoring.annotations.Monitor;
00005 
00006 import com.googlecode.javacv.cpp.opencv_core;
00007 import com.googlecode.javacv.cpp.opencv_core.CvScalar;
00008 import com.googlecode.javacv.cpp.opencv_core.IplImage;
00009 
00010 @Monitor
00011 public class MotionMeasure {
00012   private final ImageTrace trace;
00013   private final ImageBuffer difference;
00014   @IgnoreMonitor
00015   private final double area;
00016   private double measure;
00017 
00018   public MotionMeasure(double lambda, int width, int height, int depth, int channels) {
00019     trace = new ImageTrace(lambda, width, height, depth, channels);
00020     difference = new ImageBuffer(width, height, depth, channels);
00021     area = width * height;
00022   }
00023 
00024   public double update(IplImage currentFrame) {
00025     trace.update(currentFrame);
00026     opencv_core.cvAbsDiff(trace.im(), currentFrame, difference.im());
00027     measure = toValue(opencv_core.cvSum(difference.im()));
00028     return measure;
00029   }
00030 
00031   private double toValue(CvScalar scalar) {
00032     return (scalar.red() + scalar.green() + scalar.blue()) / area;
00033   }
00034 
00035   public void dispose() {
00036     trace.dispose();
00037     difference.dispose();
00038   }
00039 
00040   public int channels() {
00041     return trace.im().nChannels();
00042   }
00043 
00044   public ImageTrace trace() {
00045     return trace;
00046   }
00047 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark