-
Trabajando en la Caracterización
Publicado el 4 04Europe/Berlin Marzo 04Europe/Berlin 2009 Sin comentarios aún ...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):
-
Seguimos añadiendole Funcionalidad a la aplicación
Publicado el 3 03Europe/Berlin Febrero 03Europe/Berlin 2009 1 comentarioAunque 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.
-
Comienza la siguiente fase
Publicado el 26 26Europe/Berlin Enero 26Europe/Berlin 2009 Sin comentarios aún ...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:
-
Problemas creando una imagen con una región de interés asociada
Publicado el 19 19Europe/Berlin Enero 19Europe/Berlin 2009 2 comentariosTras 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 esta 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 el 5 05Europe/Berlin Enero 05Europe/Berlin 2009 Sin comentarios aún ...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 el 29 29Europe/Berlin Diciembre 29Europe/Berlin 2008 Sin comentarios aún ...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.También funciona teniendo JAI instalado en el JRE, pero debido a que estamos desarrollando la aplicación, nosotros lo hemos instalado en el JDK.
-
Resumen hasta el día de hoy
Publicado el 28 28Europe/Berlin Diciembre 28Europe/Berlin 2008 Sin comentarios aún ...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 el 28 28Europe/Berlin Diciembre 28Europe/Berlin 2008 Sin comentarios aún ...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.
CUSL3-coolimaging, Desarrollo jai, jdk, jre, linux, Mac, windows -
Filosofía Scrum
Publicado el 16 16Europe/Berlin Diciembre 16Europe/Berlin 2008 Sin comentarios aún ...Esta entrada debía haber sido publicada hace ya una semana y media, pero bueno, más vale tarde que nunca.
Cuando propusimos el uso de la filosofía scrum, no estábamos realmente familiarizados con ella. Por suerte para nosotros, pudimos contactar con un experto en ingeniería del software, el cual nos precisó que la filosofía scrum sólo tiene sentido cuando se aplica a grupos de personas moderadamente grandes. Cuando se trabaja con grupos pequeños de desarrollo, lo que prima es la simple y llana comunicación intensiva. Si bien puede optarse por emplear algunas de las pautas de la filosofía scrum (como el product backlog), aplicarla a rajatabla no tiene demasiado sentido. Así pues, hemos optado por reducir el proceso a la mera comunicación entre los dos miembros del proyecto.
-
Primer esbozo
Publicado el 16 16Europe/Berlin Diciembre 16Europe/Berlin 2008 Sin comentarios aún ...Tras dos semanas moderadamente intensas de trabajo, tenemos un primer esbozo de la aplicación. Si bien quedan bastantes detalles que depurar, los requerimientos funcionales especificados en la primera documentación de la aplicación están básicamente satisfechos. La documentación, a su vez, ha sido completada con parte del diseño asociado a lo que actualmente hay implementado. Si bien queda por detallar bastantes aspectos, que intentaremos tener recogidos cuanto antes, se muestra una visión bastante detallada del diseño interno del sistema. La nueva versión de la documentación se encuentra disponible aquí.






Comentarios recientes