miércoles, 25 de febrero de 2009

Detector de movimiento

import ij.IJ;
import ij.ImagePlus;
import ij.WindowManager;
import ij.process.*;
import ij.gui.GenericDialog;
import java.awt.*;
import ij.plugin.filter.*;

public class Alpha_Blending implements PlugInFilter {
ImagePlus fgIm = null;
static double alpha = 0.5;

public int setup(String arg, ImagePlus img) {
return DOES_8G;
}

public void run(ImageProcessor bgIp) {

if(runDialog()){
ImageProcessor fgIp=fgIm.getProcessor().convertToByte(false);
fgIp = fgIp.duplicate();
bgIp.copyBits(fgIp, 0, 0, Blitter.DIFFERENCE);
int w=bgIp.getWidth();
int n=bgIp.getHeight();
for(int i =0; i < w;i++)
{
for(int j= 0; j < n;j++)
{
int p =bgIp.getPixel(i,j);
if (p <150){
p=0;
}else if(p>=150){
p=255;
}
bgIp.putPixel(i,j,p);
}
}

}
}

boolean runDialog(){
int[] windowList = WindowManager.getIDList();
if (windowList == null){
IJ.noImage();
return false;
}
String[] windowTitles = new String[windowList.length];
for(int i = 0; i < windowList.length; i++)
{
ImagePlus im = WindowManager.getImage (windowList[i]);
if (im == null)
windowTitles[i] = "untitled";
else
windowTitles[i] = im.getShortTitle();
}
GenericDialog gd = new GenericDialog("Alpha Blending");
gd.addChoice("Foreground image: ", windowTitles, windowTitles[0]);
gd. addNumericField("Alpha value [0. . 1]: " , alpha, 2);
gd.showDialog();
if (gd.wasCanceled())
return false;
else {
int fgIdx = gd.getNextChoiceIndex();
fgIm = WindowManager.getImage(windowList[fgIdx]);
alpha = gd.getNextNumber ();
return true;
}

}

}

1 comentario:

Pato Tapia dijo...

Mi estimado Juanito, te manifiesto lo mismo que a Carlos Carrillo, es decir ,utilizo bitter.ADD para cuando monto una imagen sobre otra y Bitter.DIFERENCE, se me ocurre que podría hacer una especie de desmontaje, por ejemplo suponiendo que la operación de montaje de dos imágenes se ha concluido pero no satisface nuestras espectativas como imagen, entonces podríamos desmontar la segunda imagen mediante Bitter.DIFERENCE , así que realmente no entiendo el título de "Detector de Movimiento" para el código tuyo.