martes, 3 de marzo de 2009

Filtro imagenes en movimiento o dobles

"Aqui se describira el codigo de como realizar la variacion de alguna de las imagenes que esten juntas al hacer desaparecer del recuadro la imagen que falta"


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

public class Alpha_Blending implements PlugInFilter
{

static double alpha = 0.5; //
ImagePlus fgIm = null; //


public int setup (String arg, ImagePlus imp)
{

return DOES_8G;
}

public void run(ImageProcessor bgIp) {
if(runDialog()){
ImageProcesor fgIp
= fgIm.getProcessor().convertToByte(false);
fgIm = fgIp.duplicate();
fgIm.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.copyBits(fgIp, 0, 0, Blitter.ADD);

}
}

boolean runDialog(){
//get list of open images
int[]windowList = WindowManager.getIDList();
if(windowList == null){
IJ.noImage();
return false;
}

String[] windowTitles = new String[windowList.length];
for (int i=0; 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;
}
}
}

FILTRO (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 Control_Moviento 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;
}
}
}