Utilizando JAI api para el Tratamiento de imágenes digitales en Java
La Liberia JAI (Java Advanced Imaging (JAI) ) es una API que permite el manejo de funciones de entrada , salida y procesamiento de imágenes de una manera más sencilla y cómoda . Contiene una gran cantidad de métodos relacionados con el tratamiento de imágenes. los cuales comúnmente se te conocen como :
• Adquisición de imágenes.
• Espacios de Color.
• Mejoramiento de imágenes.
• Manipulación de imágenes.
• Manipulación geométrica.
• Análisis de imágenes
• Renderizado.
• Procesamiento de imágenes.

El tratamiento de imágenes tiene muchas aplicaciones , una de ellas es la segmentación de imágenes digitales para el análisis de áreas determinadas . En este caso empleare la segmentación para el conteo de pixeles que hay en una región (la foto de un mango) , utilizando los métodos de Segmentación de imágenes por umbralizacion , erosión y dilatación.
Codigo Fuente
-
// Librerias
-
-
import java.awt.*;
-
import javax.swing.*;
-
import java.awt.image.BufferedImage;
-
import javax.media.jai.PlanarImage;
-
-
// Clase ...
-
-
private filtros Aplicar;
-
private Conversion Conver;
-
public testJAI() {
-
super("Erosion y Dilatacion de testJAI");
-
Aplicar = new filtros(320,240); // Definimos la dimenciones de la imagen
-
Conver = new Conversion();
-
-
}
-
-
// Dibujar Imagen
-
-
//(1) Obetener Imagen
-
g2.drawImage(Buff, 0, 20, this);
-
-
-
//(2) Conversion a escala de grises
-
Buff = Conver.convertToGrayscale(Buff);
-
g2.drawImage(Buff, 0, 260, this);
-
-
//(3) Aplicar Umbralizacion
-
Buff = Aplicar.Binarizacion(Buff,5);
-
g2.drawImage(Buff, 320, 20, this);
-
-
//(3) Obetener Imagen
-
Buff = Aplicar.erode(Buff);
-
g2.drawImage(Buff, 320, 260, this);
-
-
-
-
-
}
-
-
// Cargar Jframe
-
testJAI ventana = new testJAI();
-
ventana.setDefaultCloseOperation(EXIT_ON_CLOSE);
-
ventana.setSize(640,500);
-
ventana.setVisible(true);
-
}
-
}
-
// Clase en Java para el manejo de Filtros en java Usando la Libreria JAI
-
import javax.media.jai.*;
-
import javax.media.jai.JAI;
-
import javax.media.jai.KernelJAI;
-
import javax.media.jai.PlanarImage;
-
import java.awt.image.renderable.ParameterBlock;
-
import java.awt.image.BufferedImage;
-
import java.awt.image.RenderedImage;
-
import java.awt.Color;
-
-
-
-
public class filtros {
-
-
private int Ancho;
-
private int Largo;
-
private int color[];
-
-
-
// Constructor
-
public filtros(int Largo , int Ancho ) {
-
-
this.Ancho = Ancho;
-
this.Largo = Largo;
-
-
color = new int [2];
-
-
// Blanco ...
-
-
// Negro ...
-
-
-
-
}
-
-
// Filtro para Erocion
-
-
// Cargar Matrix al Kernel
-
KernelJAI kernel = new KernelJAI(7, 7, new float[]{
-
0, 0, 0, 0, 0, 0, 0,
-
0, 1, 1, 1, 1, 1, 0,
-
0, 1, 1, 1, 1, 1, 0,
-
0, 1, 1, 1, 1, 1, 0,
-
0, 1, 1, 1, 1, 1, 0,
-
0, 1, 1, 1, 1, 1, 0,
-
0, 0, 0, 0, 0, 0, 0
-
});
-
pb.addSource(img);
-
pb.add(kernel);
-
return JAI.create("erode", pb).getAsBufferedImage();
-
}
-
-
// Conversion de imagen a escala de grises
-
-
-
// Variables del metodo ...
-
-
long Umbral = 500000;
-
-
// Creamos un nuevo BufferedImage ...
-
-
-
// Proceso de Binarizacion (recorrido del mapa de bits )
-
-
for (int i = 0; i <Largo ; i ++) {
-
for ( int j = 0; j <Ancho ; j ++ ) {
-
-
if ( ImageBfrd.getRGB(i,j) <-Umbral * n) {
-
-
-
Nueva_Imagen.setRGB(i,j,color[1]);
-
-
} else {
-
-
Nueva_Imagen.setRGB(i,j,color[0]);
-
-
} // fin del if
-
-
} // fin del for j
-
-
} // fin del for i
-
-
//ImagenOriginal = Nueva_Imagen;
-
-
return Nueva_Imagen;
-
-
} // fin del metodo
-
-
} // fin de la clase
-
// Librerias ----
-
import java.awt.*;
-
import java.awt.image.BufferedImage;
-
import javax.swing.ImageIcon;
-
import java.awt.color.*;
-
import java.awt.image.*;
-
-
-
public class Conversion {
-
-
/** miramos uqe la imagen no sea ya una instancia de BufferedImage */
-
/** genial, no hay que hacer nada */
-
} else {
-
/** nos aseguramos que la imagen está totalmente cargada */
-
/** creamos la nueva imagen */
-
image.getWidth(null),
-
image.getHeight(null),
-
g.drawImage(image,0,0,null);
-
g.dispose();
-
return( bufferedImage );
-
}
-
} // fin del metodo
-
-
-
return (imagenGris);
-
-
} // fin de la metodo
-
-
-
}// fin de la clase
Blog
Foro
Codes
Feed rss