Gráficos con Java 2D

El API Java 2D define varias operaciones de filtrado para objetos BufferedImage . Cada operaci�n de proceso de im�genes est� incluida en una clase que implementa el interface BufferedImageOp. La manipulaci�n de im�genes se realiza en el m�todo filter. La clase BufferedImageOp en el API Java 2D soporta:

  • Tranformaci�n afin.
  • Escalado.
  • Modificaci�n de Aspecto.
  • Combinaci�n Linear de Bandas.
  • Conversi�n de color.
  • Convoluci�n.

Para filtrar un BufferedImage usando una de las clases de operaci�n de imagen, debemos

  1. Constuir un ejemplar de una de las clases BufferedImageOp: AffineTransformOp, BandCombineOp, ColorConvertOp, ConvolveOp, LookupOp , o RescaleOp.
  2. Llamar al m�todo de operaci�n filter, pasando en el BufferedImage que queremos filtrar y el BufferedImage donde queremos almacenar el resultado.

.�Ejemplo: ImageOps

El siguiente applet ilustra el uso de cuatro operaciones de filtrado de imagenes: low-pass, sharpen, lookup, y rescale.

Pulsa sobre la imagen para ejecutar el  applet.

Esta es una imagen del GUI del applet. Para ajecutar el applet, pulsa sobre ella. El applet aparecer� en una nueva ventana del navegador.

El c�digo completo del applet est� en ImageOps.java. El applet usa estos dos ficheros de imagen: bld.jpg y boat.gif .

El filtro sharpen se realiza usando un ConvolveOp. Convoluci�n es el proceso de hacer m�s pesado el valor de cada pixel en una imagen con los valores de los pixels vecinos. La mayor�a de los algoritmos de filtrado espacial estan basados en las operaciones de convoluci�n.

Para construir y aplicar este tipo de filtrado al BufferedImage, este ejemplo usa un c�digo similar al del siguiente fragmento.

public static final float[] SHARPEN3x3 = {
                            0.f, -1.f, 0.f,
                            -1.f, 5.0f, -1.f,
                            0.f, -1.f, 0.f};
BufferedImage dstbimg = new 
              BufferedImage(iw,ih,BufferedImage.TYPE_INT_RGB);
Kernel kernel = new Kernel(3,3,SHARPEN3x3);
ConvolveOp cop = new ConvolveOp(kernel,
                                ConvolveOp.EDGE_NO_OP,
                                null);
cop.filter(srcbimg,dstbimg);

El objeto Kernel define matem�ticamente c�mo se ve afectada la salida de cada pixels en su �rea inmediata. La definici�n del Kernel determina el resultado del filtro. Para m�s informaci�n sobre c�mo trabaja el kernel con ConvolveOp puedes ver la secci�n 'Image Processing and Enhancement' en Java 2D Programmer's Guide

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO