RLPark 1.0.0
Reinforcement Learning Framework in Java

ImageTrace.java

Go to the documentation of this file.
00001 package rlpark.plugin.opencv;
00002 
00003 import java.awt.image.BufferedImage;
00004 
00005 import rlpark.plugin.opencv.zephyr.OpenCVImageProvider;
00006 import zephyr.plugin.core.api.viewable.ImageProvider;
00007 
00008 import com.googlecode.javacv.cpp.opencv_core;
00009 import com.googlecode.javacv.cpp.opencv_core.IplImage;
00010 
00011 public class ImageTrace implements ImageProvider {
00012   public final double lambda;
00013   private double d = 0.0;
00014   private final ImageBuffer buffer01;
00015   private final ImageBuffer average;
00016   private final ImageBuffer trace;
00017   private final OpenCVImageProvider provider = new OpenCVImageProvider();
00018 
00019   public ImageTrace(double lambda, int width, int height, int depth, int channels) {
00020     this.lambda = lambda;
00021     trace = new ImageBuffer(width, height, depth, channels);
00022     buffer01 = new ImageBuffer(width, height, depth, channels);
00023     average = new ImageBuffer(width, height, depth, channels);
00024   }
00025 
00026   public IplImage update(IplImage currentFrame) {
00027     opencv_core.cvScale(average.im(), average.im(), lambda, 0.0);
00028     opencv_core.cvScale(currentFrame, buffer01.im(), 1.0 - lambda, 0.0);
00029     opencv_core.cvAdd(average.im(), buffer01.im(), average.im(), null);
00030     d = lambda * d + (1 - lambda);
00031     opencv_core.cvScale(average.im(), trace.im(), 1.0 / d, 0.0);
00032     provider.update(trace.im());
00033     return trace.im();
00034   }
00035 
00036   @Override
00037   public BufferedImage image() {
00038     return provider.image();
00039   }
00040 
00041   public IplImage im() {
00042     return trace.im();
00043   }
00044 
00045   public void dispose() {
00046     average.dispose();
00047     buffer01.dispose();
00048     trace.dispose();
00049     provider.dispose();
00050   }
00051 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark