Tratamiento de imagenes con Java
Febrero 24th, 2004 - [Enlace local]
Estos últimos días han sido frenéticos. Después de los exámenes no pude descansar porque tuve que acabar “La Práctica”. Y lo digo así, entre comillas y en mayúsculas porque sin duda ha sido la práctica a la que más tiempo he dedicado en mis muchos (demasiados) años de estudiante. La terminé a última hora, como siempre, y aunque ahora uno se queda mucho más descansado, lo cierto es que la práctica también fue divertida y me sirvió para introducirme en un mundillo que hasta ahora desconocía: el tratamiento de imágenes con java. Así que a continuación va una lista de librerías y programas que o bien he utilizado o bien he encontrado en mi tarea de documentación para hacer el trabajo.
La primera cita es ineludiblemente con las librerías “oficiales” de java:
- Java 2D: Extiende las posibilidades de AWT y permite trabajar entre otras cosas con lineas, texto, imagenes, formas, etc, permitiendo operaciones como la rotación, el escalado, etc. Siempre, como su nombre indica, trabajando en dos dimensiones
- Java 3D:Para trabajar con objetos en tres dimensiones. No la he utilizado.
- Java Advanced Imaging (JAI): Proporciona un conjunto de interfaces para el tratamiento avanzado de imágenes, incluyendo distintas operaciones de procesamiento. Se puede decir que es la “madre del cordero” ya que el resto de librerías y aplicaciones se basan en este API. Es el que he utilizado en la práctica y su forma de trabajar es curiosa: funciona como un grafo, primero se obtienen las imagenes y despues se relacionan entre si por medio de las operaciones. Finalmente se evalúa el grafo y obtenemos la imagen resultado. Las operaciones de procesado que ofrece se dividen en varias categorías: Operadores de Punto, de Area, Geométricos, de cuantización de color, de archivo, de frecuencia, estadísticos, de extracción de bordes y misceláneos
También están las librerías que ofrecen alguna funcionalidad extra o los programas de procesado de imágenes hechos en java (utilizando en su mayoría JAI):
- Java Vision Toolkit: es un proyecto muy interesante pero al que he encontrado alguna deficiencia. Algunas de las operaciones que efectuaba tardaban demasiado tiempo en comparación con otros programas, lo sufiente como para pensar que la programación de algunas partes no es correcta. Ofrece además de una librería para desarrollar, una aplicación gráfica destinada a usuarios finales.
- ImageJ: una de las grandes sorpresas. Un programa para el tratamiento de imágenes que ofrece una buena velocidad (presumen de ser el programa de procesado de imágenes hecho en java “puro” más rapido) y un buen número de operaciones, que además puede ser ampliado mediante plug-ins desarrollados por terceros. Y parece que este programa ha tenido éxito porque el número de plug-ins disponibles es considerable (aquí hay un buen puñado). Este programa lo utilicé debido a su rapidez para ir viendo sobre la marcha como iban a quedar algunas operaciones y para situar sobre la imagen determinados pixeles según sus coordenadas.
- Java Imaging and Graphics Library (JIGL): es una librería que pretende combinar la potencia necesaria para la investigación, con la simplicidad necesaria para la educación.
- ImageApp: es una aplicación GUI que permite operar de la misma manera que JAI, es decir, construyendo un grafo de imágenes/operaciones, pero de manera gráfica. Es un proyecto a tener en cuenta pero cuya pega es que de momento no implementa demasiadas operaciones, aunque entre sus planes está incluir todas las operaciones definidas en JAI.
- NeatVision: otra de las grandes sorpresas que he encontrado. Se trata de un software de gran calidad para el procesado de imágenes, destinado sobre todo al usuario final. Opera de la misma manera que el anterior, es decir, el usuario va creando gráficamente en su entorno de trabajo un grafo que representa las operaciones que se van a efectuar con las imágenes. La diferencia es que NeatVision sí implementa un gran número de operaciones. Yo lo utilicé de la misma manera que ImageJ pero cuando tenía que probar una combinación de varias operaciones, ya que el método de arrastrar/soltar operaciones, y conectar estas operaciones entre sí me permitió realizar pruebas con combinaciones muy rápidamente.
Y hasta aquí mi pequeño recorrido por el mundo del procesado de imágenes con Java, aunque se me ha olvidado decir que todo el software anterior es libre (bueno, todo menos las librerias de Sun, ejem, ejem) y por eso es de destacar mas aún la gran calidad de productos como ImageJ y NeatVision. Espero que le sirva a alguien.
» Leer más, comentarios, etc...