Package VideoProcessing

Source Code of VideoProcessing.RgbDiffEffect

package VideoProcessing;

import java.awt.image.WritableRaster;

import javax.media.Format;
import javax.media.format.RGBFormat;
import javax.media.format.VideoFormat;

public class RgbDiffEffect extends RgbVideoEffect {

  private BackgroundUpdater bgUpdater;

  public RgbDiffEffect(BackgroundUpdater bgUpdater) {
    supportedIns = new Format[] { new RGBFormat() };
    supportedOuts = new Format[] { new RGBFormat() };
    this.bgUpdater = bgUpdater;
  }

  public String getName() {
    return "RGB-Difference from Background Image";
  }

  protected boolean processRGB(byte[] bin, byte[] bout, VideoFormat format) {
    if (bgUpdater.getBackground() != null) {
      // // Calculate difference between input and background
      int now, before, diff;
      // long totalAmt = 0;
      byte[] background = bgUpdater.getBackground();
      for (int i = 0; i < bin.length; i++) {
        now = byte2Int(bin[i]);
        before = byte2Int(background[i]);
        diff = Math.abs(now - before);
        bout[i] = (byte) (diff);
      }

    } else {
      // // Make output show no differences
      for (int i = 0; i < bin.length; i++) {
        bout[i] = 0;
      }
    }
    return true;
  }

  protected void updateImage(byte[] bout, VideoFormat vformat) {
    synchronized (displayImage) {
      // // Copy pixels to image
      WritableRaster rast = displayImage.getRaster();
      int[] pixel = new int[] { 0, 0, 0, 255 };
      int p = 0;
      for (int y = vformat.getSize().height - 1; y >= 0; y--) {
        for (int x = 0; x < vformat.getSize().width; x++) {
          pixel[0] = pixel[1] = pixel[2] = bout[p++];
          rast.setPixel(x, y, pixel);
        }
      }
    }
  }
}
TOP

Related Classes of VideoProcessing.RgbDiffEffect

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.