Memoria: Contenido

Anuncio
Memoria:
Contenido
Introducción ........................................................................................................................................ 2
ImageJ ............................................................................................................................................. 3
Anexo I. Uso de ImageJ ....................................................................................................................... 7
Conceptos básicos ........................................................................................................................... 7
Ventana ....................................................................................................................................... 7
Barra de herramientas ................................................................................................................ 7
Barra de estado ........................................................................................................................... 7
Barra de progreso........................................................................................................................ 7
Imágenes ..................................................................................................................................... 7
Stacks (pila) ................................................................................................................................. 8
Bibliografía ........................................................................................................................................ 10
Introducción
El presente proyecto de fin de carrera se ha desarrollado para la segmentación de regiones de
imágenes de ámbito general, aunque su aplicación esencial es la de segmentación de imágenes
desde satélite, permitiendo la detección de nubes.
// “Explicar que es segmentación de imágenes”
La segmentación de imágenes es un paso esencial en el análisis de imágenes de alto nivel. Permite
la cuantificación y visualización de los objetos de interés, y su calidad, depende de la metodología
de extracción de la información para la mejor comprensión de los fenómenos en estudio y la
posterior interpretación de la escena observada. Nuestra finalidad, la detección de nubes a partir
de las imágenes proporcionadas.
La segmentación de imágenes consiste en obtener un conjunto de regiones las cuales no se
solapan y están bien diferenciadas entre sí, dónde sus fronteras están bien delimitadas. Dónde
dichas regiones abarcan todo el espacio de la imagen. Una vez realizada la segmentación pueden
observarse cambios relevantes, los cuales si son buenos proporcionarán una buena clasificación de
los objetos que comprenden la imagen y por tanto, unos resultados bastante fiables
No existe un único método de segmentación de imágenes, por lo que uno de los objetivos es
desarrollar diferentes algoritmos de segmentación, utilizando para ello filtros “stack”, los cuales
poseen un buen rendimiento para imágenes con ruido, preservando los bordes y detalles. Y
terminan cuando satisface la tarea del observador.
// “Explicar de dónde sacamos las imágenes y cómo son”
// “Explicar de posibilidades de uso de los resultados”
Los resultados obtenidos en este proyecto pueden ser aplicados a diferentes ámbitos entre ellos
….
El objetivo principal de este proyecto no consistió únicamente en la segmentación de las imágenes
sino en la utilización de imágenes con formato propio de la universidad y el uso para ello de la
herramienta ImageJ.
ImageJ
ImageJ es un programa de procesamiento de imágenes de Java el cuál es de dominio público
(software libre). Permite la visualización, edición, análisis, procesamiento, archivar e imprimir
imágenes de 8, 16 y 32 bits. Así mismo, permite la lectura de diferentes formatos, incluyendo
entre ellos TIFF, GIF, JPEG, BMP, DICOM, FITS y RAW.
Para ello el ImageJ se apoya en el uso de "stacks", es decir, una serie de imágenes que comparten
una única ventana. Cabe destacar el hecho de que es multithreaded, de modo que permite que se
puedan realizar operaciones de lectura de archivos de imagen en paralelo con otras operaciones.
Permite el cálculo del valor de un píxel determinado y el de estadísticas definidas por el usuario,
así mismo, puede medir distancias y ángulos, crear histogramas de densidad. También se apoya en
estándar de funciones de procesamiento de imagen, tales como la manipulación del contraste,
nitidez, suavizado, borde de detección y filtrado de mediana.
Es interesante mencionar que el programa soporta cualquier número de ventanas (imágenes) de
manera simultánea, limitado solamente por la memoria disponible. Dispone de calibración de la
densidad o escala de grises.
1º Adaptación del formato de las Imágenes al ImageJ
Esta primera parte, fue sin duda una de las más relevantes a la hora de realizar el proyecto, ya que
hasta el momento, no se disponía de ningún programa, aplicación ó herramienta que permitiese la
apertura y guardado de imágenes con formato LCT.
Dado que ImageJ fue diseñado con una arquitectura abierta, se pudo realizar la conversión de las
imágenes que tenían formato propio. Para ello, hubo que modificar el código fuente de distintos
archivos para que detectasen este nuevo formato LCT.
Por lo que es un factor a destacar y relevante que la partir de ahora pueda permitirse trabajar,
analizar y usarse este formato. Así, cómo volver a almacenar dicha información.
Explicar cómo es el formato LCT (Lo de los canales y todo eso como eran.. dios dónde tendremos el
papelito de los COJONES que estaba apuntado xD)
La peculiaridad que se incluye en este formato que anteriormente no incluía el ImageJ es la
apertura de imágenes comprimidas. Así mismo, no sólo se modificó el hecho de que abriese este
nuevo formato, si no que se abriese ya en el número de bits indicado (8,16 ó 32).
2º Implementación de Algoritmos
Cómo ImageJ proporciona extensibilidad a través de plugins de Java. Se pudo realizar la
implementación de los diferentes plugins personalizando la adquisición obtenida. La creación de
dichos plugins permitió añadir al ImageJ nuevas funcionalidades necesarias para llevar a cabo el
tratamiento de imágenes. Concretamente, se desarrollaron diferentes técnicas para la
segmentación de imángenes de satélites de manera que permitirán lograr este cometido.
Un espacio de características es un mapeo de la entrada obtenida a través del procesamiento de
los datos en pequeños subconjuntos cada vez (en el caso del espacio de color estos subconjuntos
pueden ser píxeles individuales). Para cada subconjunto (pixel) una representación paramétrica de
la característica es obtenida y mapeada como un punto en el espacio multidimensional del
parámetro. En este espacio multidimensional se pueden localizar las características más
significativas o importantes como clusters y la meta de este análisis es poder delinear o separar
estos clusters.

MeanShift Filter
Mean-Shift es una técnica usada para el análisis de un espacio de características con
densidades complejas multimodales. La utilización de esta técnica se basa en la aplicación
recursiva del método para encontrar el punto estacionario más cercano de la función de
densidad, ayudando así a encontrar las modas de la misma. Es decir, se repite
recursivamente hasta cubrir un número determinado de de iteraciones o cuando no exista
más posibles movimientos.
Para el uso en los diversos cálculos del algoritmo se han de usar tienen en cuenta dos
parámetros, ambos proporcionados por el usuario.
o
o
Radio espacial: Representa el tamaño del Radio que se abarcará para cada pixel en
cada una de las iteraciones.
Distancia del color: Este concepto está relacionado con las distancia entre los
colores dentro del Círculo Estándar de Color. Así, cuanta mayor es la distancia
entre los colores dentro del círculo, mayor es el contraste entre ambos.
Los casos de aplicación de esta técnica son el filtrado de imágenes preservando bordes y la
segmentación. En ambos casos ciertos parámetros han de ser proporcionado por el
usuario y puede trabajarse con imágenes tanto en color como en escala de grises
(convirtiéndolas a RGB mediante el uso de stacks).



Adaptativo
Adaptativo que se mueve por valores ya existentes
Adaptativo Normalizado
//todo esto es una idea, para no olvidarme… pero hay que arreglarlo
Adaptativos.
Para su implementación hemos hecho uso de la estructura KDTree. Ésta es una estructura de
datos particionado del espacio, que organiza los puntos en un Espacio euclídeo de k dimensiones.
Lo usamos para hacer una eficiente búsqueda de los n vecinos más cercanos.
Hemos usado el paquete KDTree implementado en Java para que busque los n vecinos más
cercanos (en valores), por las distintas dimensiones.
1. Adaptativo
Primero, inicializamos el kdtree con los valores de la imagen, por cada capa. Una vez inicializado,
procedemos a evaluar el primer pixel, buscando los n vecinos más cercanos a él (en valor), y
calculamos la media. Volvemos a buscar los n vecinos más cercanos al valor de la media, y así
sucesivamente hasta que apenas haya diferencia, o que sobrepase las 100 iteraciones. En ese
caso, le asignamos al pixel ese último valor.
2. Adaptativo (valores existentes).
3. Adaptativo Normalizado.
Anexo I. Uso de ImageJ
Conceptos básicos
Ventana
La ventana de ImageJ contiene una barra de menú, de herramientas, una barra de estado y otra de
progreso.
Las imágenes pueden ser copiadas en el cortapapeles, editadas, impresas y guardadas.
Barra de herramientas
La barra de herramientas cotniene herramientas para hacer selecciones, zoom y desplazamiento
de imágenes, y para cambiar el color del dibujo. Al pasar el ratón sobre cada herramienta,
aparecerá una breve descripción en la barra de estado.
Las herramientas y menús de la parte derecha son creados usando las macros definidas en el
fichero ImageJ/macros/StartupMacros.txt.
Barra de estado
La barra de estado, cuando el cursor está sobre una imagen, muestra las coordenadas del pixel y
su valor. Después de ejecutar un filtro, se muestra el tiempo transcurrido y la tasa de
procesamiento de píxeles por segundo.
Barra de progreso
La barra de progreso, localizada a la derecha de la barra de estado, muestra el progreso del tiempo
consumido en las operaciones. En caso de que la operación requiera menos de un Segundo, esta
barra no será mostrada.
Imágenes
ImageJ soporta 8 bits, 16-bit y 32-bit (real) y las imágenes en escala de grises de 8 bits y 32 bits de
imágenes de color. Imágenes de 8 bits se representan mediante enteros sin firmar en el rango de 0
a 255. Imágenes de 16 bits usa unsigned enteros (0 a 65.535) y de 32 bits en escala de grises las
imágenes utilización números de punto flotante.
16-bit y 32-bits en escala de grises las imágenes no son directamente mostrar en los monitores de
ordenador, que normalmente sólo puede mostrar 256 tonos de gris. Por lo tanto, los datos se
asignan a 8-bits por ventanas. La ventana se define la gama de grises que se muestran los valores:
valores por debajo de la ventana son negro, mientras que valores por encima de la ventana son de
color blanco. La ventana se define por valores mínimos y máximos que se pueden modificar
utilizando Imagen> Ajustar> Brillo / Contraste.
ImageJ permite que múltiples imágenes sean mostradas en la pantalla al mismo tiempo. La
ventana activa tiene su barra de título resaltada. Todas las operaciones serán realizadas sobre la
imagen activa.
ImageJ soporta imágenes en escala de grises de 8-bit, 16-bit y 32-bit (real) e imágenes en color de
8-bit y 32-bit. Las imágenes de 8-bit son representadas usando enteros sin signo en el rango
0..255. Las imágenes de 16-bit usa enteros sin signo en el rago 0..65535, y las imágenes en escala
de grises de 32-bit usa números en punto flotante.
Las imágenes de 16-bit y 32-bit en escala de grises no son mostradas directamente en el monitor
de ordenador, que normalmente solo puede mostrar 256 tonos de grises. Por lo tanto, los datos
son mapeados a 8-bit por ventana.
La ventana define la gama de grises que serán mostrados: valores por debajo de la ventana son
negros, mientras que valores por encima de la ventana son de color blanco. La ventana es definida
por un valor mínimo y máximo, que puede ser modificado en Image>Adjust> Brightness/Contrast.
Stacks (pila)
ImageJ abre múltiples archivos de imagen TIFF como una pila, y la guarda como pilas TIFFs multiimagen. Archivo> Importar> Crudo abre otras varias imágenes, los archivos sin comprimir.
Archivo> Importar> la secuencia de la imagen se abre una carpeta de imágenes como una
chimenea. Para crear una nueva pila, simplemente seleccione Archivo> Nueva> Imagen y defina el
"Rodajas" campo a un valor superior a uno. La imagen> submenú Pila contiene los comandos para
operaciones de pila común.
ImageJ puede mostrar múltiples imágenes en una simple ventana. Estas series de imágenes son
denominadas pilas(stacks).
Las imágenes que componen una pila (stacks), son denominados “capas” (slices). Todas las capas
de la pila deben tener el mismo tamaño y número de bits.
Una barra de desplazamiento nos permite movernos por las distintas capas.
Si realizamos un filtro, este filtro será aplicado en todas las capas de la pila.
ImageJ abre múltiples imágenes TIFF como una pila, y salva pilas como mútiples imágenes TIFFs. El
comando File>Import>Image Sequence abre una carpeta de imágenes como una pila. Para crear
una nueva pila, simplemente elegimos File>New>Image y en el campo “Slices” introducimos un
valor mayor a uno. El submenú Image>Stacks contiene comandos para las operaciones comunes
de una pila.
Bibliografía
[1] Comaniciu, Dorin; Meer, Peter. Mean Shift: A Robust Approach Toward Feature Space Analysis.
KDTree  http://www.cs.wlu.edu/~levy/software/kd/
ImageJ  http://rsbweb.nih.gov/ij/docs/concepts.html
Descargar