Mini-Articulo para Linux Magazine

Publicado en CUSL3-coolImaging el Marzo 20, 2009 por luisette

Cool Imaging Project

Sistema de caracterización global y local de imágenes digitales mediante extracción de rasgos basados en contenido

Desarrollo software llevado a cabo por Luis A. González Jaime y Ricardo J. Palma Durán, estudiantes de Ingeniería Informática de la Universidad de Granada.

Motivación

Nuestro objetivo es el de contribuir al desarrollo científico, mediante un proyecto de caracterización de imágenes mediante la extracción de rasgos basados en contenido, donde se puedan realizar estudios globales y locales. El sistema permite, en última instancia, caracterizar tanto global como localmente una imagen digital, mediante rasgos matemáticos de utilidad para la propia caracterización. La idea que nos mueve es la de crear una herramienta de propósito general que aglutine una gran diversidad de técnicas de caracterización basadas en contenido, la cual pueda ser usada por todo tipo de especialistas, independientemente del campo en el que se muevan. Al tratarse de una aplicación de tratamiento de imágenes, ésta debe incluir herramientas clásicas de manipulación de imágenes digitales, independientemente de la caracterización que posteriormente se pudiera hacer de éstas.

La caracterización de imágenes es un campo en continuo avance. El avance científico en este área permite el desarrollo de nuevas técnicas de caracterización. Es por ello que el proyecto se ha desarrollado con la filosofía de ampliabilidad en mente: una estructura fácilmente extensible permitirá la incorporación de nuevas técnicas y algoritmos para los que no se haya dado soporte inicialmente.

Desarrollo y Funcionamiento

Teniendo en cuenta el concepto de ampliabilidad y que la aplicación pueda ser utilizada por cualquier tipo de especialista, el desarrollo del proyecto se ha visto altamente influenciado por la herramienta de desarrollo seleccionada. Se eligió el framework Eclipse Rich Client Platform por dos razones fundamentales. Por un lado, permite aprovechar la potencia del framework Eclipse para nuestra aplicación, especialmente el sistema de Plug-in’s, de manera que una persona con conocimientos de programación pueda implementar nuevas operaciones sin tener que saber el funcionamiento interno de la aplicación. Por otro lado, la estética homogénea que provee, que junto al diseño realizado, trata que la utilización de la aplicación sea intuitiva y homogénea, haciendo que las operaciones se puedan realizar a golpe de click e introduciendo los parámetros requeridos. Una operación en la aplicación se llevaría a cabo de la siguiente manera: se abre una imagen, se dirige uno al menú izquierdo de operaciones, selecciona la operación deseada, introduce los parámetros si la operación los requiere y aplica la operación sobre la imagen haciendo click en aplicar.

Más información: https://forja.rediris.es/projects/cusl3-coolimage/

Creados ejecutables Alpha

Publicado en CUSL3-coolImaging el Marzo 17, 2009 por luisette

Hemos creado los primeros ejecutables de la aplicación cool Imaging.

No tienen toda la funcionalidad que nos gustaría, pero se puede empezar a trastear.

Aquí se pueden encontrar los ejecutables

Los ejecutables de linux presentan problemas en la presentación de los nombres (Lo solventaremos lo antes posible).
Puede ser que si tienes la configuración del ordenador en inglés aparezca media aplicación en inglés y la otra media en español (Debido a que no tenemos la internacionalización acabada)

Si presenta algún problema en la instalación, aquí puedes encontrar una pequeña ayuda INSTALL

Para cualquier duda, sugerencia… agradeceríamos que se hiciera a través de este post o a la dirección de correo coolimaging@gmail.com

Trabajando en la Caracterización

Publicado en CUSL3-coolImaging el Marzo 4, 2009 por luisette

Tras los exámenes y más tranquilos, estamos ahora más centrados en la caracterización.

Hicimos un primer diseño para la caracterización, que no fue tan bueno como pensabamos, y lo tuvimos que rehacer.
Ahora mismo nos encontramos implementando el nuevo diseño para poder almacenar los datos de caracterización de las imágenes. Aunque gracias al diseño inicial del menú que realizamos para las operaciones de tratamiento de imágenes, hemos podido reutilizar practicamente todo el código (haciendo algunos cambios) para la caracterización.
Hemos intentando que el modo de trabajar con las operaciones de caracterización sea el mismo que el que usamos para las operaciones de tratamiento de imágenes, así la homogeneidad de la aplicación es mayor haciendose más fácil de usar. Como resultado, tenemos el menú de operaciones creado y la carga de operaciones, aunque todavía no tenemos ninguna operación creada.

Además, hemos realizado una vista de thumbnails que aprovechará la caracterización cuando esté terminada. En un futuro, el usuario podrá seleccionar desde esta pantalla las imágenes sobre las que quiere realizar una batería de operaciones de caracterización.

Mostramos algunas capturas de pantalla de la aplicación (también mostramos la funcionalidad de los histogramas):

Pantalla de carga
Pantalla de Carga


Vista de Thumbnails

Vista de Thumbnails


Vista del uso de Histogramas

Vista de histogramas

Seguimos añadiendole Funcionalidad a la aplicación

Publicado en CUSL3-coolImaging el Febrero 3, 2009 por luisette

Aunque como ya dijimos en la entrada anterior (nos encontramos en una nueva fase del proyecto), no dejamos de lado el añadirle nueva funcionalidad a la aplicación para que la haga más completa y atractiva.

Algunas de las nuevas funcionalidades están relacionadas con la internacionalización, aunque no está terminada aún, o la insercción de nuevos menús.

Aquí dejamos unas capturas de pantalla de la aplicación, esperemos que os gusten.

Demostracion de la funcionalidad de la aplicación coolImaging


Demostracion de la funcionalidad de la aplicación coolImaging


Demostracion de la funcionalidad de la aplicación coolImaging

Comienza la siguiente fase

Publicado en CUSL3-coolImaging el Enero 26, 2009 por odracirnumira

Tras estos tres primeros meses dándonos tortas contra el Eclipse RCP, JAI y Java2D, hemos llegado a un primer modelo de nuestra aplicación, dando ya por finalizado, salvo detalles menores, la parte relativa al tratamiento digital de imágenes.

Actualmente, Cool Imaging es una aplicación que, dentro de un entorno bastante intuitivo, permite al usuario manipular imágenes mediante clásicos operadores de tratamiento de imágenes.

Además, actualmente, la aplicación está diseñada de tal modo que el añadir nuevas operaciones de tratamiento de imágenes puede hacerse sin excesiva dificultad, y, mejor aún, sin necesidad de modificar los archivos binarios (es decir, puede hacerse de forma “externa”). Basta que el usuario proporcione el archivo binario .class de la clase que implementa dicha operación, y ésta es automáticamente añadida a la aplicación.

El siguiente paso, que será el último y el más duro, es el relacionado con la caracterización de imágenes. Ahora toca diseñar todo aquello relativo a la caracterización de imágenes digitales. Ésta es, supuestamente, la parte más dura, pero partiendo de la base de que la arquitectura actualmente creada es bastante simple y flexible, no debería suponer un gran problema el llevarla a cabo.

En este enlace se encuentra disponible la última versión de la documentación.

Mostramos capturas de pantalla de la aplicación:


Captura 1


Captura 2


Captura 3

Problemas creando una imagen con una región de interés asociada

Publicado en CUSL3-coolImaging el Enero 19, 2009 por luisette

Tras ir creando la aplicación con bastante soltura a pesar de los problemas encontrados anteriormente, nos hemos topado con un problema que es crucial en el desarrollo de nuestra aplicación.

El problema se ha encontrado en la selección de una región de interés en una imagen. La solución que habíamos decidido adoptar era la de seleccionar la región de interés sobre una imagen y que a partir de ésta imagen se generara una nueva imagen donde solo se mostrara la región de interés, y el resto de la imagen en negro (por ejemplo).

Nos hemos encontrado que no éramos capaces de generar ésta nueva imagen, o al menos generarla para cualquier tipo de imagen, no importando, por ejemplo, el sistema de color utilizado o el número de bandas que contenga un pixel.

Viendo que los conocimientos sobre JAI y JAVA 2D no eran los adecuados, nos hemos dedicado a aprender como se almacena una imagen en JAI y como se utiliza ésta.

Al final, hemos conseguido llegar a una solución que parece factible y generalizado a cualquier imagen (falta probar esta parte de forma exhaustiva), aunque pensamos que no es lo más óptimo a lo que podemos llegar, puesto que en nuestra aplicación es bastante importante el tiempo de respuesta al usuario.

Ahora, estamos estudiando como mejorar esta parte e integrarla en el resto de la aplicación.

Os mantendremos informado con nuevas noticias.

Lector y estructura XML del menú en árbol terminado

Publicado en CUSL3-coolImaging el Enero 5, 2009 por luisette

Como hemos dicho en post anteriores queremos hacer una aplicación que sea facilmente ampliable, por lo que teníamos que definir un modelo simple. Hemos decidido generar una estructura XML y procesarla en la aplicación para generar el menú de la aplicación.

Tanto la estructura como el lector de la aplicación ya se ha realizado. Las siguientes tareas que queremos hacer son la selcción de regiones de una imagen y el poder hace zoom o moverte por la imagen.

Para echarle un ojo a la documentación, puedes hacerlo aquí

JAI-JDK integrado con Eclipse

Publicado en CUSL3-coolImaging el Diciembre 29, 2008 por luisette

Tal y como comentamos la solución de usar JAI como una biblioteca linkada no nos parecía una solución aceptable pudiendo hacer que esta forme parte de la máquina virtual. Por ello, decidimos emplear el tiempo necesario para solucionar este problema.
Al final y tras varios días de esfuerzo hemos conseguido utilizar JAI estando instalado en el JDK.

Resumen hasta el día de hoy

Publicado en CUSL3-coolImaging el Diciembre 28, 2008 por luisette

Puesto que hace algun tiempo que no actualizamos el blog, vamos a dar una visión general del estado del proyecto.

A día de hoy, tenemos parte de la aplicación funcionando, podemos decir, que practicamente el diseño principal está terminado. Ya tenemos que empezar a hacerla más robusta y a añadirle mayor funcionalidad a la aplicación.

Por otro lado, tal y como dijimos en post’s anteriores estamos usando la filosofía Scrum. Pero al ser un proyecto de dos personas, no podemos llevar Scrum al pie de la letra, aunque si estamos usando algunos de sus principios. Estamos usando un product Backlog que alberga la lista de tareas que tenemos hasta el momento. De esta lista, nos fijamos unas cuantas tareas a realizar en cada spring. Estos spring son de tiempo variable, al no estar dedicados al 100% al proyecto, y las reuniones las solemos hacer cada 2 o 3 días.
Para mantener el product Backlog estamos usando la tecnología de Google Bloc de Notas que cubre todas nuestras necesidades.

Finalmente, la documentación, la estamos intentando desarrollar conforme avanzamos con la aplicación.

Combinando JAI

Publicado en CUSL3-coolImaging el Diciembre 28, 2008 por luisette

Tal y como nos comentó un compañero del CUSL-3, Andreu Correa Casablanca, tenemos que rectificar la documentación debido a que JAI no está optimizada para todas las plataformas. En concreto no está optimizada para Mac, pero si para linux, windows y sun, incluso para unas plataformas presenta mejor optimización que para otras.

Pero al documentarnos nos dimos cuenta que nosotros no estabamos usando la versión de JAI apropiada, por lo que optamos por instalar la versión optimizada para Windows. La opción elegida ha sido la instalación de JAI con el CLASSPATH por no encontrar una solución aceptable con la instalación de JAI en el JRE o en el JDK.

Tanto al instalar JAI en el JRE como en el JDK, nos encontramos con el problema que al ejecutar la aplicación no encuentra las bibliotecas JAI, obteniendo un error del tipo “java.lang.NoClassDefFoundError” hemos intentando buscar información al respecto y probado diferentes soluciones, pero la información recopilada no ha sido suficiente para conseguir que funcionase la integración con Eclipse.
Según hemos encontrado y hemos entendido, esto se puede deber a que la máquina virtual no encuentra donde se encuentran las bibliotecas, por lo que hay que añadir en el PATH la localización de las bibliotecas, pero ni cambiando el PATH hemos conseguido que todo funcione.

Además de probar estas dos opciones, intentamos instalar JAI con el CLASSPATH, al principio conseguimos que funcionase al linkar las bibliotecas que forman parte de JAI (jai_core, jai_codec, mlibwrapper_jai) pero estas funcionaban dando un error donde no podía cargar la aceleración nativa (Error: Could not load mediaLib accelerator wrapper classes…). Al final esto se ha solucionado cambiando la variable PATH del sistema para que encuentre las bibliotecas .dll, las cuales están optimizadas para Windows (en este caso concreto).

Al final hemos conseguido que todo funcione correctamente, pero la solución tomada no ha sido la más óptima, pensamos que es mejor que nuestra aplicación funcione tomando directamente las bibliotecas desde el JRE porque esta solución es más elegante.