Categorías destacadas
programacion php    
Artículo
16
¡votar!

 Gráficos con Java 2D


Filtrar un BufferedImage

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

Publicado por:
Ricard Lou Torrijos
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon