sábado, 7 de marzo de 2009

Control de Movimiento

import ij.IJ;
import ij.ImagePlus;
import ij.WindowManager;
import ij.process.*;
import ij.gui.GenericDialog;
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";
elsewindowTitles[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;
}
}
}

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
{
magePlus 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>=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";
elsewindowTitles[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;
}
}
}

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";
elsewindowTitles[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;
}
}
}

UMBRALIZACION

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class Filter_Umbralizacion implements PlugInFilter
{
ImagePlus imp;public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_8G;
}
public void run(ImageProcessor ip)
{
int w=ip.getWidth();
int n=ip.getHeight();
for(int i =0; i < w;
i++){for(int j= 0;
j < n;
j++){int p =ip.getPixel(i,j);
//p = (int)(p*2+50);
if (p < 50){p=0;
}else if(p > =50)
{
p=255;
}
ip.putPixel(i,j,p)
;
}
}
}
}

CONTRASTE

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class Filter_Contraste implements PlugInFilter
{
ImagePlus imp;
public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_8G;
}
public void run(ImageProcessor ip)
{
int w=ip.getWidth();
int n=ip.getHeight();
for(int i =0; i < w;i++)
{
for(int j= 0;
j {int p =ip.getPixel(i,j);
p = (int)(p*2+50);
if (p > 255){p=255;
}
ip.putPixel(i,j,p);
}
}
}
}

katiuska Proaño

Ecualización
import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class Filtro_Ecualizacion implements PlugInFilter
{
ImagePlus imp;
public int setup(String arg, ImagePlus imp){this.imp = imp;
return DOES_ALL;
}
public void run(ImageProcessor ip){int [] vec= ip.getHistogram();
int I=255;
for (int k=1; k< vec.length; k++){vec[k]=vec[k-1]+vec[k];
}
int w=ip.getWidth();
int h=ip.getHeight();
for(int i =0; i < w; i++)
{
for(int j= 0; j < h; j++)
{
int img =(int)(ip.getPixel(i, j));
img=vec[img]*((I-1)/(i*j));
ip.putPixel(i,j,i,img);
}
}
}
}

Filtro de Contraste

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class Filter_Contraste implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_8G;
}

public void run(ImageProcessor ip)
{
int w=ip.getWidth();
int n=ip.getHeight();
for(int i =0; i < w;i++)
{
for(int j= 0; j
{
int p =ip.getPixel(i,j);
p = (int)(p*2+50);
if (p > 255){
p=255;
}
ip.putPixel(i,j,p);
}
}
}

}

lunes, 2 de marzo de 2009

Ecualización

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class Filtro_Ecualizacion implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip)
{
int [] vec= ip.getHistogram();
int I=255;
for (int k=1; k< vec.length; k++)
{
vec[k]=vec[k-1]+vec[k];
}

int w=ip.getWidth();
int h=ip.getHeight();
for(int i =0; i < w; i++)
{
for(int j= 0; j < h; j++)
{
int img =(int)(ip.getPixel(i, j));
img=vec[img]*((I-1)/(i*j));
ip.putPixel(i,j,i,img);
}
}
}

}

Ecualización

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class Filtro_Ecualizacion implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip)
{
int [] vec= ip.getHistogram();
int I=255;
for (int k=1; k< vec.length; k++)
{
vec[k]=vec[k-1]+vec[k];
}

int w=ip.getWidth();
int h=ip.getHeight();
for(int i =0; i < w; i++)
{
for(int j= 0; j < h; j++)
{
int img =(int)(ip.getPixel(i, j));
img=vec[img]*((I-1)/(i*j));
ip.putPixel(i,j,i,img);
}
}
}

}

miércoles, 25 de febrero de 2009

Control de Movimiento

Control de Movimiento
import ij.ImagePlus;
import ij.WindowManager;import ij.process.*;
import ij.gui.GenericDialog;import ij.gui.*;
import ij.plugin.filter.PlugInFilterRunner;
import java.awt.*;import ij.plugin.filter.*;

public class Filtro_Control_Movimiento implements PlugInFilter
{
static double alpha = 0.5;
ImagePlus Iplus = null;
public int setup(String arg, ImagePlus imp)
{
return DOES_8G;
}
public void run(ImageProcessor ip)
{
if(runDialog())
{
ImageProcessor Ipro = Iplus.getProcessor().convertToByte(false);
Ipro = Ipro.duplicate();
Ipro.multiply(1-alpha);
Ipro.multiply(alpha);
Ipro.copyBits(Ipro, 0, 0, Blitter.ADD);
}
}
boolean runDialog()
{
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();
Iplus=WindowManager.getImage(windowList[fgIdx]); alpha=gd.getNextNumber();
return true;
}
}
}

Manejo de Imagenes
import ij.IJ;
import ij.ImagePlus;
import ij.WindowManager;
import ij.process.*;
import ij.gui.GenericDialog;
import ij.gui.*;
import ij.plugin.filter.PlugInFilterRunner;
import java.awt.*;
import ij.plugin.filter.*;

public class Filtro_Control_Movimiento implements PlugInFilter
{
static double alpha = 0.5;
ImagePlus Iplus = null;

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

public void run(ImageProcessor ip)
{
if(runDialog())
{
ImageProcessor Ipro = Iplus.getProcessor().convertToByte(false);
Ipro = Ipro.duplicate();
Ipro.multiply(1-alpha);
Ipro.multiply(alpha);
Ipro.copyBits(Ipro, 0, 0, Blitter.ADD);
}

}

boolean runDialog()
{
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();
Iplus=WindowManager.getImage(windowList[fgIdx]);
alpha=gd.getNextNumber();
return true;
}
}
}

Manejo de Imagenes

Manejo de Imagenes
import ij.IJ;
import ij.ImagePlus;
import ij.WindowManager;
import ij.process.*;
import ij.gui.GenericDialog;
import ij.gui.*;
import ij.plugin.filter.PlugInFilterRunner;
import java.awt.*;
import ij.plugin.filter.*;

public class Filtro_Control_Movimiento implements PlugInFilter
{
static double alpha = 0.5;
ImagePlus Iplus = null;

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

public void run(ImageProcessor ip)
{
if(runDialog())
{
ImageProcessor Ipro = Iplus.getProcessor().convertToByte(false);
Ipro = Ipro.duplicate();
Ipro.multiply(1-alpha);
Ipro.multiply(alpha);
Ipro.copyBits(Ipro, 0, 0, Blitter.ADD);
}

}

boolean runDialog()
{
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();
Iplus=WindowManager.getImage(windowList[fgIdx]);
alpha=gd.getNextNumber();
return true;
}
}
}

Manejo de Imagenes Multiples

Manejo de Imagenes Multiples
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();
fgIp.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.copyBits(fgIp, 0, 0, Blitter.ADD);
}
}

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;
}

}

}

Manejo de Imagenes Multiples

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();
fgIp.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.copyBits(fgIp, 0, 0, Blitter.ADD);
}
}

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;
}

}

}

Manejo de Imagenes

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

public class Filtro_Control_Movimiento implements PlugInFilter
{
static double alpha = 0.5;
ImagePlus Iplus = null;

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

public void run(ImageProcessor ip)
{
if(runDialog())
{
ImageProcessor Ipro = Iplus.getProcessor().convertToByte(false);
Ipro = Ipro.duplicate();
Ipro.multiply(1-alpha);
Ipro.multiply(alpha);
Ipro.copyBits(Ipro, 0, 0, Blitter.ADD);
}

}

boolean runDialog()
{
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();
Iplus=WindowManager.getImage(windowList[fgIdx]);
alpha=gd.getNextNumber();
return true;
}
}
}

Control de movimiento

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

public class Filtro_Control_Movimiento implements PlugInFilter
{
static double alpha = 0.5;
ImagePlus Iplus = null;
public int setup(String arg, ImagePlus imp)
{
return DOES_8G;
}
public void run(ImageProcessor ip)
{
if(runDialog())
{
ImageProcessor Ipro = Iplus.getProcessor().convertToByte(false);
Ipro = Ipro.duplicate();
Ipro.multiply(1-alpha);
Ipro.multiply(alpha);
Ipro.copyBits(Ipro, 0, 0, Blitter.ADD);
}
}
boolean runDialog()
{
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();
Iplus=WindowManager.getImage(windowList[fgIdx]); alpha=gd.getNextNumber();
return true;
}
}
}

Filtro Contraste

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class Filter_Contraste implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_8G;
}

public void run(ImageProcessor ip)
{
int w=ip.getWidth();
int n=ip.getHeight();
for(int i =0; i < w;i++)
{
for(int j= 0; j
{
int p =ip.getPixel(i,j);
p = (int)(p*2+50);
if (p > 255){
p=255;
}
ip.putPixel(i,j,p);
}
}
}

}

miércoles, 18 de febrero de 2009

Filtro

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class Filter_Plugin1 implements PlugInFilter{
ImagePlus imp;
public int setup(String arg, ImagePlus imp) {
this.imp = imp;
return DOES_ALL;
}
public void run(ImageProcessor ip) {
int [ ]H=ip.getHistogram();
int w=ip.getWidth();
int h=ip.getHeight();
int k=256;
int a,b ;
for(int i=1;iH[i]=H[i-1]+H[i];
}
for(int i=0;ifor(int j=0;ja=ip.getPixel(i,j);
b=(int)(a*(k-1)/(w*h));
ip.putPixel(i,j,b);
}}}}

Umbralización

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class ejemplo1 implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip)
{

int w=ip.getWidth();
int n=ip.getHeight();
for(int i=0;i for(int j=0;j int p=ip.getPixel(i,j);
if(p<50){
p=0;
}
if(p>50){
p=255;
}
ip.putPixel(i,j,255-p);
}
}
}
}

Histograma por pixel

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class ejemplo implements PlugInFilter {
ImagePlus imp;

public int setup(String arg, ImagePlus imp) {
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip) {
int w=ip.getWidth();
int n=ip.getHeight();
for(int i=0;i for(int j=0;j int p=ip.getPixel(i,j);
p=(int)(p*0.5+1.5);
ip.putPixel(i,j,255-p);
}
ip.setPixel(i,j,255+p);
}
}
}

Umbralización

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class ejemplo_neg3 implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip)
{

int w=ip.getWidth();
int n=ip.getHeight();
for(int i=0;i {
for(int j=0;j {
int p=ip.getPixel(i,j);
if(p<50)
{
p=0;
}
if(p>50)
{
p=255;
}
ip.putPixel(i,j,255-p);
}

}
}

}

histograma de filtro

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class Filter_Plugin1 implements PlugInFilter{
ImagePlus imp;
public int setup(String arg, ImagePlus imp) {
this.imp = imp;
return DOES_ALL;
}
public void run(ImageProcessor ip) {
int [ ]H=ip.getHistogram();
int w=ip.getWidth();
int h=ip.getHeight();
int k=256;
int a,b ;
for(int i=1;iH[i]=H[i-1]+H[i];
}
for(int i=0;ifor(int j=0;ja=ip.getPixel(i,j);
b=(int)(a*(k-1)/(w*h));
ip.putPixel(i,j,b);
}
}
}
}

histograma pixel por pixel

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class ejemplo_neg3 implements PlugInFilter
{
ImagePlus imp;

public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}

public void run(ImageProcessor ip)
{

int w=ip.getWidth();
int n=ip.getHeight();
for(int i=0;i {
for(int j=0;j {
int p=ip.getPixel(i,j);
p=(int)(p*0.5+1.5);
ip.putPixel(i,j,255-p);
}
ip.setPixel(i,j,255+p);

}
}

}

miércoles, 28 de enero de 2009

histograma a color

Imagenes a color
 Modelo RGB
 

El histograma es descripción de la apariencia de una imagen de forma que si los niveles de gris están concentrados en los extremo la, imagen será oscura; y si los extremos son blancos la imagen será brillante

Un histograma que tiene un perfil estrecho se presenta una imagen de bajo contraste y un histograma con una dispersión en su perfil muestra una imagen de alto contraste.

La imagen a color aparecen tres histogramas, para elaborar el histograma, el algoritmo debe separar el color correspondiente a cada pixel en sus componentes RGB rojo, verde y azul.

Ecualización del histograma:

La ecualización del histograma es un proceso que en en lugar de utilizar la información correspondiente a todos los pixeles de la imagen tan sólo se tienen en cuenta los correspondientes a una región .

El proceso es definir una máscara puede ser rectangular o circular este entrada en un determinado pixel y aplicar la ecualización del histograma sólo sobre dicha región.

Se puede sustituir el pixel central por su nuevo nivel de gris, permaneciendo los restantes como en la imagen original, pudiendo repetirse el proceso con máscaras centradas en otros pixeles de la región de interés.

Original

martes, 27 de enero de 2009

Histograma a color

Histograma a Color

Dada una imagen en niveles de grises, con un rango de 256 colores (de 0 a 255). El histograma de la imagen consiste en una gráfica donde se muestra el número de píxeles de cada nivel de gris que aparecen en la imagen.


Las imágenes digitales a color están en los mismos conceptos de muestreo, cuantificación y resolución que las imágenes en escala de grises.

Sin embargo, en lugar de un único valor de intensidad que expresa el nivel de gris, los píxeles de las imágenes a color están cuantificados usando tres componentes independientes uno por cada color primario (RGB = rojo, verde y azul).

Combinando distintas intensidades de estos tres colores, podemos obtener todos los colores visibles. En algunos casos, son más apropiados los modelos diferentes del RGB para algoritmos y aplicaciones específicas. De cualquier manera, cualquier otro modelo sólo requiere una conversión matemática simple para obtener el modelo RGB.

MODELADO DEL HISTOGRAMA EN IMÁGENES EN COLOR

PSEUDOCOLOR



Histograma correspondiente al rojo

Histograma correspondiente al verde

Histograma correspondiente al azul





martes, 20 de enero de 2009

Calculo de la mediana y la media en scilab

Mediana

M = [25, 25, 25, 25, 25;25,45,35,35,35;25,45,35,35,25;25,45,35,35,25;25,25,25,25,25]
[n,m]=size(M)
for i=2:n-1
for j=2:m-1
M(i,j)=fix((M(i-1,j-1)+M(i-1+j)+M(i-1,j+1)+M(i,j-1)+M(i,j)+M(i,j+1)+M(i+1,j-1)+M(i+1,j)+M(i+1,j+1))/9)
end
end


Media

M = [25, 25, 25, 25, 25;25,128,35,35,25;25,45,35,128,25;25,25,35,25,25]
[n,m]=size(M)
for i=2:n-1
for j=2:m-1
V = M(i-1:i+1,j-1)
V=[V,M(i-1:i+1,j)]
V=[V,M(i-1:i+1,j+1)]
sort(V)
M(i,j)=V(4)
end
end