Colaboradores
miércoles, 25 de febrero de 2009
4) ALPHA BLENDING
import ij.IJ;
import ij.ImagePlus;
import ij.WindowsManager;
import ij.gui.GenericDialog;
import ij.Plugin.Filter.PluginFilter;
import ij.proces;
public class Alpha_Blending implements PlugInfilter {
static double alpha = 05;
ImagePlus fgIm = null;
public int setup (ImageProcessor bgIp)
{
return DOES_BG;
}
public void run (ImageProcessor bgIp)
{
if (runDialog())
{
ImageProcessor fgIp=fgIm.getProcessor().converToByte(false)
fgIp = fgIp.duplicate();
fgIp.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.copyBits(fgIp, 0, 0, Blitter.ADD)
}
}
boolean runDialog()
{
int [] windowslist = WindowsManager.getIDList();
if ()windowsList == null)
{
IJ.noImage();
return false;
}
String [] windowsTitles = new String [windowslist.length];
for(int i=; i< windowsLength; i++)
{
ImagePlus im = WindowsManager.getImage(windowsList[i]);
if (im == null)
windowsTiltles[i]= "untitled";
else
windowsTitles[i]=im.getShortTitle();
}
GenericDialog gd = new GenericDialog ("Alpha_Blending");
gd.addChoice("ForeGround image:", windowsTitles, windowsTiltles[0]);
gd.addNumericField("Alpha value [0..1];",alpha, 2);
gd.showDialog();
if (gd.waasCanceled())
return false;
else
{
int fgIdx = gd.getNextChoiceIndex();
fgIm = WindowsManager.getImage(windowsList[fgIdx]);
alpha = gd.getNextnumeber();
return true;
}
}
}
Alpha_Blending
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 fqIm=null;
public int setup(String arg, ImagePlus imp){
return DOES_8G;
}
public void run(ImageProcessor bgIp) {
if (runDialog()){
ImageProcessor fgIp=fgIm.getProcessor().convertToByte(false);
fqIp=fgIp.duplicate();
fgIp.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.CopyBits(fqIp,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 = 0; i < windowlist.length; i++){
ImagePlus im = WindowManager.getImage(windowsList[i]);
if (im == null)
windowTitles[i] = "untitled";
else
windowsTitles[i]= im.getShortTitle();
}
GenericDialog gd = new GenericDialog("Alpha Bleding");
gd.addChoice("Foreground image:",
windowTitles, windowsTitles[0]);
gd.addNumericField("Alpha value [0..1]:", alpha, 2);
gd.showDialog())
return false;
elsae {
int fgIdx=gd.getNextChoiceIndex();
fglm=WindowManager.getImage(windowList[fgIdx]);
alpha=gd.getNextNumber();
return true;
}
}
}//end of class Alpha_Blending
Brillo y Contraste
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class ejemplo3 implements PlugInFilter
{
ImagePlus imp;
public int setup(String arg, ImagePlus imp)
{
this.imp = imp;
return DOES_ALL;
}
public void run(ImageProcessor ip)
{
int s=ip.getWidth();
int d=ip.getHeight();
for(int i=0;i
for(int j=0;j
int o=ip.getPixel(i,j);
o=(int)(o*0.5+1.5);
ip.putPixel(i,j,255-0);
}ip.setPixel(i,j,255+o);
}
}
}
Ecualizar una imagen
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 a=ip.getWidth();
int b=ip.getHeight();
int ck=256;
int w,h ;
for(int i=1;i
H[i]=H[i-1]+H[i];
}
for(int i=0;i
for(int j=0;j
w=ip.getPixel(i,j);
h=(int)(w*(k-1)/(w*h));
ip.putPixel(i,j,h);
}
}
}
}
Umbralización
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 a=ip.getWidth();
int b=ip.getHeight();
for(int i=0;i
for(int j=0;j
int m=ip.getPixel(i,j);
if(p<50)
{
m=0;
}
if(p>50)
{
m=255;
}
im.putPixel(i,j,255-p);
}
}
}
}
Alpha_Blending
import ij.ImagePlus;
import ij.WindowsManager;
import ij.gui.GenericDialog;
import ij.Plugin.Filter.PluginFilter;
import ij.proces;
public class Alpha_Blending implements PlugInfilter {
static double alpha = 05;
ImagePlus fgIm = null;
public int setup (ImageProcessor bgIp){
return DOES_BG;
}
public void run (ImageProcessor bgIp){
if (runDialog()){
ImageProcessor fgIp
=fgIm.getProcessor().converToByte(false)
fgIp = fgIp.duplicate();
fgIp.multiply(1-alpha);
bgIp.multiply(alpha);
bgIp.copyBits(fgIp, 0, 0, Blitter.ADD)
}
}
boolean runDialog(){
int [] windowslist = WindowsManager.getIDList();
if ()windowsList == null){
IJ.noImage();
return false;
}
String [] windowsTitles = new String [windowslist.length];
for(int i=; i< windowsLength; i++){
ImagePlus im = WindowsManager.getImage(windowsList[i]);
if (im == null)
windowsTiltles[i]= "untitled";
else
windowsTitles[i]=im.getShortTitle();
}
GenericDialog gd = new GenericDialog ("Alpha_Blending");
gd.addChoice("ForeGround image:", windowsTitles, windowsTiltles[0]);
gd.addNumericField("Alpha value [0..1];",alpha, 2);
gd.showDialog();
if (gd.waasCanceled())
return false;
else{
int fgIdx = gd.getNextChoiceIndex();
fgIm = WindowsManager.getImage(windowsList[fgIdx]);
alpha = gd.getNextnumeber();
return true;
}
}
}
martes, 24 de febrero de 2009
Ecualizar una imagen
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;i
}
for(int i=0;i
b=(int)(a*(k-1)/(w*h));
ip.putPixel(i,j,b);
}
}
}
}
Contraste y brillo
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class afecta_contrastebri 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);
}
}
}
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);
}
}
}
}
miércoles, 18 de febrero de 2009
UMBRALIZACION / FIL.CONTRASTE / FIL.ECUALIZACION
Creado por: DANIEL DAVILA C.
import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class umbralizacion_1 implements PlugInFilter
{
ImagePlus umb;
public int setup(String arg, ImagePlus umb)
{
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);
}
}
}
}
FIL. CONTRASTE
import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class filtro_contraste 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 n=(int)((ip.getPixel(i,j))*0.7+1.5);
if(n > 255)
{
n=255;
}
ip.putPixel(i,j,p);
}
}
}
}
FIL. ECUALIZACION
import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class filtro_2 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);
}
}
}
Filtro Contraste Brillo
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;
public class tareafiltro implements PlugInFilter
{
ImagePlus imp;
public int setup(String arg, ImagePlus imp)
{
this.imp = imp; return DOES_ALL;
}
public void run(ImageProcessor ip)
{
int x=ip.getWidth();
int y=ip.getHeight();
for(int i =0; i
{
for(int m= 0; m
{
int n=(int)((ip.getPixel(i,j))*0.8+1.3);
if(n > 255)
{
n=255;} ip.putPixel(i,j,p);
}
}
}
}
TRABAJO DE UMBRALIZACION
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
{
p=255;
}
ip.putPixel(i,j,255-p);
}
}
}
}
miércoles, 28 de enero de 2009
HISTOGRAMA DE UNA IMAGEN RGB

los histogramsa de una imagen digital cualquiera es la que permite diagramar la intensidad y su respectiva distribucion coin respecto a los pixeles de una imagen, es decir el numero de pixeles que corresponde a cada intensidad luminosa, los histogramas usan las siguientres representaciones: a la izquierda en color oscuro y a la derecha en color claro , en el caso de las imagenes a coilor se debe realizar en varios histogramas uno por ccada color principal es decir histogramas por el verde histograma por el rojo e histograma por el azul ya que son los colores primarios
HISTOGRAMA DE UNA IMAGEN A COLOR
CREADO POR: DANIEL DAVILA C.
El histograma de una imagen a color ( RGB ) consiste en 3 gráficas, siendo cada imagen el histograma de cada color primario:
El conjunto de técnicas que permite modificar una imagen digital con el objetivo de mejorarla o extraer de ella información se conoce como procesamiento digital de imágenes.
Para realizar el histograma de una imagen se debe tener en cuenta que son 256 tonalidades las cuales van desde el gris al blanco. Se utiliza un vector el cual recorre todas las posiciones y determina el tono del pixel. Un histograma nos ayuda para conocer la apariencia de la imagen.
Un histograma representa el nivel de intensidad con coordinadas en X que van desde lo más oscuro (a la izquierda) a lo más claro (a la derecha).
De acuerdo a los niveles de tonalidad se conocerá la apariencia de la imagen si el rango es mayor hacía el extremo de los grises la imagen será oscura y viceversa.
Existen 2 técnicas para procesar una imagen:
- Ecualización
-Es mucho más usada para imágenes en escala de grises.
-Es armonizar la distribución del nivel de luminosidad de la imagen.
-Esta operación se propone aumentar los matices de la imagen.
- Especificación
-Consiste en modificar el histograma de manera de distribuir las intensidades en la escala de valores disponibles de la mejor forma posible.
-Expandir el histograma de manera que el valor de la intensidad más baja sea cero y el de la intensidad más alta sea el valor máximo.
Ambas se basan en :
- La aplicación de una función (T)
- Niveles de grises imagen original (r)
- Niveles de grises imagen transformada (s)
s=T(r)
Histograma de imagen a color
En las imágenes a color se necesitan varios histogramas, para una imagen codificada en RGB se necesitan: un histograma que representa la distribución de la luminancia (intensidad luminosa de una imagen) y tres histogramas que representan la distribución de los valores Rojo, Azul y Verde, en las imagenes a color en X se mide la intensidad que va de los oscuro al color
Ejemlo de la descomposición de una imagen a color en sus histogramas
Histograma de una imagen al color Hecho por Tavo
Un histograma guarda la información de la probabilidad que existe de que una imagen adopte los distintos colores que la componen. Cuando se habla de una imagen a color se habla de que tiene tres tonalidades distintas Rojo, Verde y Azul. Cabe recalcar que cualquier cambio hecho en cualquiera de los histogramas después de descomponer la imagen, alterará la imagen original cuando se la vuelva a compilar en conjuto. Adicionalmente existe otro histograma que denota la luminosidad de la imagen
Cuando se habla de una imagen en escala de grises se entende que la imagen tiene tonos que van desde el 0 o negro hasta el 256 o blanco mientras que al tratarse de una imagen a color esta contiene tonos desde el 0 hasta el color que corresponda dentro del formato RGB. De ahí que un algoritmo para gestionar los histogramas de una imagen a color este debe ser capaz de diferenciar el color correspondiente a cada pixel dentro de la imagen para luego separarlo.
Hay dos Técnicas de procesado de histogramas que son la ecualización y la especificación
La ecualización es una técnica que pretende que exista un número homogéneo de pixeles para cada nivel de gris dentro de la escala en la imagen, como se puede notar esta es una técnica especifica para imágenes en escalas de grises pero sin embargo se puede utilizar en una imagen a color si se aplica en el histograma correspondiente a la luminosidad de la imagen, lo que afecta directamente el contraste de la misma. Pasos de la ecualización
1. Calcular el histograma
2. Calcular la suma normalizada del histograma
3. Transformar la imagen de entrada en la imagen de salida
La especificación es una técnica que se usa cuando se quiere aclarar o oscurecer la imagen, este proceso se realiza mediante dos ecualizaciones en el siguiente orden:
1. Ecualizar el histograma de la imagen inicial
Nos permite obtener una imagen más uniforme mediante la ecualización
2. Realizar una ecualización inversa sobre el histograma de la imagen ecualizada.
Nos permite pasar de el neutral de la imagen a una imagen cuya forma viene dada por el histograma original
martes, 27 de enero de 2009
Histogramas de una imagen a color
El histograma proporciona una descripción de la apariencia global de una imagen.
Si los niveles de gris están concentrados hacia el extremo oscuro del rango de la escala de gris, la apariencia global de la imagen será oscura y si sucede justo lo contrario, la imagen correspondiente será brillante.
Si aparecen tres histogramas, de forma que el tratamiento de imágenes en color se complica por la aparición de nuevos componentes. El histograma no contiene los tonos del negro al blanco, sino del negro al color correspondiente (rojo, verde ó azul -RGB-).
• T(r) es de valor único y monótonamente creciente en el intervalo 0≤r≤1 (de forma que se preserve el orden entre blanco y negro de la escala de grises)
• 0≤T(r)≤1 para 0≤r≤1 (de manera que se garantice que la aplicación es coherente con el rango de valores de pixel permitidos)
El histograma de una imagen da una idea de la probabilidad de que aparezca cada nivel de gris disponible en la misma, podríamos decir, por tanto, que correspondería a la función densidad de probabilidad de dichos niveles de gris.
miércoles, 21 de enero de 2009
Filtro de la Media
k=I(:,:,1);
imshow(k);
[m,n]=size(k);
for i = 2:m-2
for j=2:n-2
a=double((k(i-1,j-1)+k(i-1,j)+k(i-1,j+1)+k(i,j-1)+k(i,j)+k(i,j+1)+k(i+1,j-1)+k(i+1,j)+k(i+1,j+1))/9);
k(i,j)=ui;
end
end
figure
imshow(k)
Definición de Imagen Digital
Una imagen digital es una representación bidimensional de una imagen utilizando bits. Dependiendo de si la resolución de la imagen es estática o dinámica, puede tratarse de un gráfico vectorial convertida a mapa de bits o de un gráfico vectorial. A menos de que se indique que la imagen de mapa de bits fue convertida e imagen vectorial.
La imagen digital es cualquier imagen, fija o en movimiento, que se capture en un medio electrónico y que se represente como un archivo de información leído como una serie de pulsos eléctricos.
Digital es la información representada por una serie de pulsos eléctricos basados en un sistema binario. Esta información es interpretada correctamente por el procesador de una computadora
Las imágenes pueden guardarse en distintos formatos gráficos, cada uno con distintas posibilidades y limitaciones. Entre los formatos más populares: BMP (gráfico/fotográfico sin compresión), GIF (gráfico/animaciones), JPG (fotográfico con compresión), etc.
Tipos de Imágenes:
Imágenes vectoriales
Están conpuestas de contornos y rellenos definidos vectorialmente mediante ecuaciones que describen cada lustración. Esto permite que sean escalables sin que su calidad cambie de alguna manera cuando estan se quieran reproducir. Esta característica es muy importnte en imagenes que contienen zonas con contornos curvos.
Imágenes en mapa de bits
Las imágenes de mapa de bits están compuestas de una gran cantidad de píxels, que están rellenos de color aunque éstos sólo sea blanco o negro.
martes, 20 de enero de 2009
creado por daniel davila
IMÁGENES DIGITALES
Son fotos electrónicas tomadas de una escena o escaneadas de documentos -fotografías, manuscritos, textos impresos e ilustraciones. Se realiza una muestra de la imagen digital y se confecciona un mapa de ella en forma de cuadrícula de puntos o elementos de la figura (píxeles). A cada píxel se le asigna un valor tonal (negro, blanco, matices de gris o color), el cual está representado en un código binario (ceros y unos). Los dígitos binarios ("bits") para cada píxel son almacenados por una computadora en una secuencia, y con frecuencia se los reduce a una representación matemática (comprimida). Luego la computadora interpreta y lee los bits para producir una versión analógica para su visualización o impresión.

hecho por daniel davila
HISTOGRAMAS
n=5;
s=1000;
for g=1:s,
k=1;
for x=1:w-2,
for y=1:z-2, for i=x:x+2,
for j=y:y+2,
c(k)=b(i,j);
k=k+1;
end;
end;
for l=1:k-1,
for m=1:k-1,
if (c(l)>c(m))
d=c(l);
c(l)=c(m);
c(m)=d;
end;
b(i-1,j-1)=c(5);
end;
end;
k=1;
end;
end;
end;
histogramas
mediana
MEDIANA
B=P;
n=5;
for i = 2:n-1,
for j = 2:n-1,
B(i,j)=(B(i-1,j)+B(i,j-1)+B(i,j)+B(i,j+1)+B(i+1,j))/5;
end;
end
B
MEDIA
=P;n
=5;
for i = 2:n-1, for j = 2:n-1,
A(i,j)=(A(i-1,j-1)+A(i-1,j)+A(i-1,j+1)+A(i,j-1)+A(i,j)+A(i,j+1)+A(i+1,j-1)+A(i+1,j)
+Ai+1,j+1))/9;
end;
end
double[,] X = new double[9, 2];
for (int i = 0; i < 9; i++)
matrizt[i, 0] = i + 1;
for (int i = 0; i < 9; i++)
matrizZ1[i,0]=Math.Pow(0.3017779,matrizt[i,0])*Math.Cos(3.1415927*matrizt[i,0]);
for (int i = 0; i < 9; i++)
matrizZ2[i,0]=Math.Pow(0.3017779,matrizt[i,0])*Math.Sin(3.1415927*matrizt[i,0]);
for (int i = 0; i < 9; i++)
{
X[i, 0] = matrizZ1[i, 0];
X[i, 1] = matrizZ2[i, 0];
}
B1 = operaciones.inversa(operaciones.multiplicacion(operaciones.transpuesta(X), X));
B2 = operaciones.multiplicacion(operaciones.transpuesta(X), operaciones.matrizY);
B = operaciones.multiplicacion(B1, B2);
matrizZ1 = operaciones.MatrizXNumero(matrizZ1, B[0, 0]);
matrizZ2 = operaciones.MatrizXNumero(matrizZ2, B[1, 0]);
matrizZol = operaciones.sumaMatrices(B1, B2);
}
private void Form1_Load(object sender, EventArgs e)
{
operaciones.filasM1 = 9;
operaciones.filasM2 = 9;
operaciones.columnasM1 = 1;
operaciones.columnasM2 = 1;
operaciones.Inicializar();
listPIB.Items.Clear();
for (int j = 0; j < operaciones.matrizY.GetLength(0); j++)
listPIB.Items.Add(operaciones.matrizY[j, 0]);
listCuadrados.Items.Add(operaciones.matrizX[0, 0] + " " + operaciones.matrizX[0, 1]);
for (int j = 1; j < operaciones.matrizX.GetLength(0); j++)
{
listCuadrados.Items.Add(operaciones.matrizX[j, 0] + " " + operaciones.matrizX[j, 1]);
}
}
private void button2_Click(object sender, EventArgs e)
{
double[,] B1 = new double[2, 2];
double[,] B2 = new double[2, 2];
double[,] B = new double[1, 2];
double[,] R = new double[9, 1];
double[,] R1 = new double[9, 2];
R = operaciones.MatrizLog(operaciones.divisionMatriz(operaciones.matrizK,operaciones.matrizL));
for (int j = 0; j < R.GetLength(0); j++)
{
R1[j, 0] = 1;
R1[j, 1] = R[j,0];
}
listKL.Items.Clear();
for (int j = 0; j < R1.GetLength(0); j++)
{
listKL.Items.Add(R1[j, 0] + " " + R1[j, 1]);
}
R = operaciones.MatrizLog(operaciones.divisionMatriz(operaciones.matrizY, operaciones.matrizL));
listYL.Items.Clear();
for (int j = 0; j < operaciones.matrizY.GetLength(0); j++)
listYL.Items.Add(R[j, 0]);
B1 = operaciones.inversa(operaciones.multiplicacion(operaciones.transpuesta(R1),R1));
B2 = operaciones.multiplicacion(operaciones.transpuesta(R1), R);
B = operaciones.multiplicacion(B1, B2);
listBEta3.Items.Clear();
listBEta3.Items.Add(B[0, 0]);
listBEta3.Items.Add(B[1, 0]);
txtA.Text = Math.Pow(Math.E, B[0, 0]).ToString();
}
}
}
media
h=zeros(255,1);
for i=1:5,
for j=1:5,
in=a(i,j);
h(in)=(h(in)+1);
end;
end;
plot(h);

