Segmentación (procesamiento de imágenes)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La segmentación en el campo de la visión artificial es el proceso de dividir una imagen digital en varias partes (grupos de píxeles) u objetos. El objetivo de la segmentación es simplificar y/o cambiar la representación de una imagen en otra más significativa y más fácil de analizar. La segmentación se usa tanto para localizar objetos como para encontrar los límites de estos dentro de una imagen. Más precisamente, la segmentación de la imagen es el proceso de asignación de una etiqueta a cada píxel de la imagen de forma que los píxeles que compartan la misma etiqueta también tendrán ciertas características visuales similares.

El resultado de la segmentación de una imagen es un conjunto de segmentos que cubren en conjunto a toda la imagen, o un conjunto de las curvas de nivel extraídas de la imagen (véase la detección de bordes). Cada uno de los píxeles de una región son similares en alguna característica, como el color, la intensidad o la textura. Regiones adyacentes son significativamente diferentes con respecto a la(s) misma(s) característica(s).

Bases de los algoritmos de segmentación[editar]

Los algoritmos de segmentación se basan en los siguientes principios: 1. Discontinuidades del nivel de gris. Consisten en segmentar la imagen a partir de los cambios grandes en los niveles de gris entre los píxeles. Las técnicas que utilizan las discontinuidades como base son la detección de líneas, de bordes, de puntos aislados,… 2. Similitud de niveles de gris. Es lo contrario al método anterior, las divisiones de la imagen se hacen agrupando los píxeles que tienen unas características similares. Algunas técnicas que usan esto son la umbralización, el crecimiento de regiones, etc.

Aplicaciones[editar]

Algunas de las aplicaciones prácticas de la segmentación de imágenes son las siguientes:

Se han desarrollado varios algoritmos y técnicas de propósito general para la segmentación de imágenes y dado que no existe una solución general para el problema de la segmentación, a menudo se tienen que combinar varias técnicas para resolverlo eficazmente.

Métodos de agrupamiento (Clustering)[editar]

El Algoritmo de las K-medias es una técnica iterativa que se utiliza para dividir una imagen en K clusters. El algoritmo básico es:

  1. Escoger K centros de clusters, ya sea de forma aleatoria o basándose en algún método heurístico.
  2. Asignar a cada píxel de la imagen el clúster que minimiza la varianza entre el pixel y el centro del cluster.
  3. Recalcular los centros de los clusters haciendo la media de todos los pixeles del cluster.
  4. Repetir los pasos 2 y 3 hasta que se consigue la convergencia (por ejemplo, los pixeles no cambian de clusters).

En este caso, la varianza es la diferencia absoluta entre un píxel y el centro del cluster. La diferencia se basa típicamente en color, la intensidad, la textura, y la localización del pixel, o una combinación ponderada de estos factores. El número K se puede seleccionar manualmente, aleatoriamente, o por una heurística. Este algoritmo garantiza la convergencia, pero puede devolver una solución que no sea óptima. La calidad de la solución depende de la serie inicial de clusters y del valor de K. En estadística y aprendizaje automático, el algoritmo de las k-medias es un algoritmo de agrupamiento para dividir objetos en k grupos, donde k <n. Es similar al algoritmo de maximización de expectativas para las mezclas de gaussianas ya que ambos pretenden encontrar los centros de agrupaciones naturales de los datos. El modelo requiere que los atributos del objeto correspondan a los elementos de un espacio vectorial. El objetivo es intentar alcanzar al mínima varianza total entre clusters, o, la función de error al cuadrado. El algoritmo de las k-medias fue inventado en 1956. La forma más común del algoritmo usa una heurística de refinamiento conocido como el algoritmo de Lloyd. El algoritmo de Lloyd comienza dividiendo los puntos de entrada en k conjuntos iníciales, ya sea al azar o usando algunos datos heurísticos y a continuación, calcula el punto medio o centro de gravedad de cada conjunto. Se construye una nueva partición, asociando cada punto con el centro de gravedad más cercano. Luego se recalculan los baricentros es para los nuevos clusters, y el algoritmo se repite alternando la aplicación de estos dos pasos hasta que la converja, que se obtiene cuando los puntos ya no cambiar de cluster (o los centros de gravedad ya no se modifican). Los algoritmos de Lloyd y de las K-medias a menudo se utilizan como sinónimos, pero en realidad el algoritmo de Lloyd es una heurística para resolver el problema de las K-medias, como ocurre con ciertas combinaciones de puntos de partida y baricentros, el algoritmo de Lloyd puede converger a una solución incorrecta. Existen otras variantes, pero el algoritmo de Lloyd es el más popular, porque converge muy rápidamente. En cuanto al rendimiento, el algoritmo no garantiza que se devuelva un óptimo global. La calidad de la solución final depende en gran medida del conjunto inicial de clusters, y puede, en la práctica, ser mucho más pobre que el óptimo global. Dado que el algoritmo es extremadamente rápido, es un método común ejecutar el algoritmo varias veces y devolver las mejores agrupaciones obtenidas. Un inconveniente del algoritmo de las k-medias es que el número de clusters k es un parámetro de entrada. Una elección inadecuada de k puede dar malos resultados. El algoritmo también asume que la varianza es una medida adecuada de la dispersión del cluster.

Métodos basados en el histograma[editar]

Los métodos basados en el histograma son muy eficientes en comparación con otros métodos de segmentación de la imagen, ya que normalmente requieren sólo una pasada por los pixeles. En esta técnica, un histograma se calcula a partir de todos los píxeles de la imagen, y los picos y valles en el histograma se utilizan para localizar los grupos en la imagen (el color o la intensidad pueden ser usados como medida). Un refinamiento de esta técnica consiste en aplicar de forma recursiva el método de búsqueda de histograma a los clusters de la imagen con el fin de dividirlos en grupos más pequeños. Esto se repite con las agrupaciones, cada vez más pequeños hasta que no se puedan formar más agrupaciones. Una desventaja del método de búsqueda de histograma es que puede ser difícil de identificar los picos y valles importantes en la imagen.

Detección de bordes[editar]

La detección de bordes es un campo bien desarrollado por sí mismo en el procesamiento de imágenes. Los límites de regiones y los bordes están estrechamente relacionados, ya que a menudo hay un fuerte ajuste en la intensidad en los límites de las regiones. Las técnicas de detección de bordes pueden ser usadas como otra técnica de segmentación más. Los bordes identificados por la detección de bordes en ocasiones están desconectados. Para segmentar un objeto a partir de una imagen sin embargo, es necesario que los bordes formen figuras cerradas.

Métodos de crecimiento de regiones[editar]

El primer método de crecimiento de regiones fue el método de crecimiento de regiones a partir de semillas. Este método toma un conjunto de semillas como entrada junto con la imagen. Las semillas marcan cada uno de los objetos que tienen que ser segmentados. Las regiones crecen iterativamente mediante la comparación de todos los píxeles vecinos no asignados a ninguna región. La diferencia entre el valor de la intensidad de un pixel y el de la media de la región, δ, se utiliza como una medida de similitud. Cada pixel se asigna a la región con la que su diferencia con la media es menor, de esta forma todos los pixeles se asignan a sus respectivas regiones. Este proceso continúa hasta que todos los pixeles tienen asignada una región. El método de crecimiento de regiones por semillas requiere semillas como entrada adicional. Los resultados de la segmentación dependen de la elección de las semillas. El ruido en la imagen puede hacer que las semillas queden mal colocadas. El método de crecimiento de regiones sin semillas es un algoritmo modificado que no requiere semillas explícitas. Comienza con una única región A1 - el píxel elegido aquí no influyen significativamente en la segmentación final. En cada iteración se considera los píxeles vecinos de la misma manera que con el algoritmo anterior. Se diferencia del algoritmo el método de crecimiento de regiones a partir de semillas en que si el mínimo δ es menor que un umbral predefinido T entonces se agrega a la región respectiva Aj. Si no, entonces el píxel se considera significativamente diferente de todas las actuales regiones Ai y se crea una nueva región An + 1 con ese píxel. Una variante de esta técnica, propuesta por Haralick y Shapiro (1985), se basa en la intensidad de píxel. La media y la dispersión de una región y la intensidad del píxel candidato se utiliza para calcular un test estadístico. Si la prueba estadística es suficientemente pequeña, el píxel se añade a la región, y la media de la región y de dispersión se vuelven a calcular. De lo contrario, el píxel es rechazado, y se utiliza para formar una nueva región.

Método del conjunto de nivel[editar]

La propagación de curvas es una técnica popular en el análisis de imágenes para la extracción de objetos, seguimiento de objetos, la reconstrucción en 3D, etc. La idea central de este enfoque consiste en desarrollar una curva hacia el menor potencial de una función de coste que en su definición refleja la tarea a la que está dirigida e impone ciertas limitaciones de suavidad. Las técnicas de Lagrange se basan en la parametrización del contorno de acuerdo con alguna estrategia de muestreo y luego desarrollar cada elemento de acuerdo a la imagen y sus condiciones internas. Si bien esta técnica puede ser muy eficiente, también sufre varias limitaciones, como decidir sobre la estrategia de muestreo, la estimación de las propiedades geométricas internas de la curva, el cambio de su topología, abordar los problemas de dimensiones superiores, etc. En cada caso, una ecuación en derivadas parciales llamada la ecuación del conjunto de nivel es resuelto por diferencia finita. El método del conjunto de nivel fue propuesto inicialmente para realizar un seguimiento de interfaces móviles por Osher y Sethian en 1988 y se ha diseminado a través de varios dominios de imágenes a finales de los noventa. Se puede utilizar para hacer frente de manera eficiente al problema de la propagación de la curva/superficie/etc. de una manera implícita. La idea central consiste en representar la evolución del contorno usando una función con signo, donde su nivel cero corresponde al contorno actual. Entonces, de acuerdo a la ecuación de movimiento de las curvas de nivel, se puede obtener fácilmente un flujo similar de la superficie implícita que cuando se aplica al nivel de cero reflejará la propagación del contorno. El método del conjunto de nivel tiene numerosas ventajas: es implícito, no tiene parámetros, ofrece una manera directa para estimar las propiedades geométricas de la estructura que evoluciona, puede cambiar la topología y es intrínseco. Además, pueden utilizarse para definir un marco de optimización como el propuesto por Zhao, Merriman y Osher en 1996. Por lo tanto, se puede concluir que es un marco muy conveniente para hacer frente a numerosas aplicaciones de visión artificial y análisis de imágenes médicas. Además, la investigación en varias estructuras de datos para representar los conjuntos de nivel ha dado lugar a implementaciones muy eficientes de este método.

Métodos de particionamiento gráfico[editar]

Los métodos de particionamiento gráfico se pueden usar con eficacia en la segmentación de imágenes. En estos métodos, la imagen se modela como un grafo ponderado no dirigido. Por lo general, un pixel o un grupo de pixeles se asocian con los nodos y los pesos de las aristas definen la similitud entre los píxeles vecinos. El gráfico (imagen) se divide de acuerdo a un criterio de diseño para modelar "bien" los clusters. Cada una de las particiones de nodos (pixeles) da como salida de estos algoritmos los objetos segmentados que hubiese en la imagen. Algunos algoritmos populares de esta categoría son cortes normalizados, camino aleatorio, el mínimo corte, particionamiento isoperimétrico y árboles de expansión mínima.

Transformación divisoria (watershed)[editar]

La transformación divisoria (watershed) calcula las líneas divisorias (de aguas).

Una imagen en escala de grises puede ser vista como un relieve topográfico, donde se interpreta el nivel de gris de un píxel como su altura en el relieve.

También, se puede considerar la magnitud del gradiente de una imagen como una superficie topográfica. Los píxeles que tienen las más altas intensidades de gradiente corresponden a las líneas divisorias, que representan los límites de las regiones.

El agua puesta sobre cualquier píxel encerrado por una línea divisoria común fluye colina abajo a un mínimo de intensidad local común. Los píxeles que drenan a un mínimo común forman una cuenca, que representa un segmento de la imagen (un objeto).

Método del valor umbral (umbralización)[editar]

El método del valor umbral (umbralización) consiste en fijar unos umbrales (límites) de forma que los píxeles que se encuentre entre cada par de límites formarán un objeto al realizar la segmentación. En el método del valor umbral hay dos posibles situaciones:

  1. Umbral único. Se da cuando solamente hay dos agrupaciones de píxeles semejantes en una imagen (un objeto y el fondo), para separarlos se establece un umbral T. Los puntos mayores al umbral T serán puntos del objeto, y los menores a dicho umbral formarán una parte del fondo.
  2. Umbral multinivel. Dada una imagen con x clase de objetos, para separarlos todos hacen falta x-1 umbrales de forma que los píxeles que se encuentran entre cada par de umbrales Ti y Tj representarán a una clase de objeto.

Los umbrales elegidos pueden ser de varios tipos dependiendo de las características tenidas en cuenta para su elección.

Segmentación basada en modelos[editar]

La hipótesis central de este enfoque es que las estructuras de interés tienen una forma geometría repetitiva. Por lo tanto, se puede buscar un modelo probabilístico para explicar la variación de la forma de la estructura y luego cuando se segmenta una imagen se imponen limitaciones para tomar la imagen como el modelo elegido a priori. Esta tarea implica:

  1. La selección de los ejemplos de entrenamiento (ejemplos que se usan para probar los modelos).
  2. La representación probabilística de la variación de los ejemplos seleccionados.
  3. La inferencia estadística entre el modelo y la imagen.

El estado del arte para la segmentación basada e en el conocimiento implica la forma activa y los modelos de apariencia, contornos activos y una plantilla deformable y métodos basados en niveles.

Segmentación multi-escala[editar]

Las segmentaciones de la imagen se calculan en múltiples escalas y a veces se propaga de gran escala a pequeña escala. Los criterios de segmentación pueden ser arbitrariamente complejos y se pueden tener en cuenta tanto criterios globales como locales. Un requisito común es que cada región debe estar conectada en algún sentido.

Segmentación jerárquica de señales unidimensionales[editar]

El trabajo de Witkin en el espacio escalar incluye la noción de que una señal unidimensional podría ser inequívocamente segmentado en regiones, con un parámetro de control de la escala de segmentación. Una observación clave es que los pases por cero de las derivadas segundas (mínimos y máximos de la primera derivada o pendiente) de las versiones multi-escala-alisadas de una señal forman un nido de árbol, que define las relaciones jerárquicas entre los segmentos a diferentes escalas. En concreto, la pendiente en los extremos a gran escala se refiere a las correspondientes características a pequeña escala. Cuando una pendiente máxima y otra mínima se cruzan entre sí en una escala mayor, los tres segmentos que se separaron se funden en un segmento, así se define la jerarquía de los segmentos.

Segmentación de imágenes y el boceto original[editar]

Ha habido numerosos trabajos de investigación en esta área, de los cuales unos pocos han llegado a un estado en el que puede ser aplicado con la intervención manual interactivo (por lo general en aplicación de imágenes médicas) o totalmente automática. La siguiente es una breve reseña de algunas de las ideas principales ideas en las que se basan las investigaciones actuales. La estructura de anidación que Witkin describe es, sin embargo, específica para las señales de una sola dimensión y no es trivial la aplicación a las imágenes de dimensiones superiores. Sin embargo, esta idea general ha inspirado a algunos otros autores a investigar el paso de esquemas de grande escala a pequeña escala para la segmentación de imágenes. Koenderink propone el estudio de cómo la intensidad de iso-contornos evolucionan en escalas y este enfoque se investigó en mayor detalle por Lifshitz y Pizer. Lamentablemente, sin embargo, la intensidad de las características de la imagen cambia con las escalas, lo que implica que es difícil de rastrear las características de la imagen a gran escala a pequeña escalas utilizando la información de iso-intensidad. Lindeberg estudio el problema de vincular los extremos locales y los puntos de silla con las escalas, y propuso una representación de la imagen primitiva llamada el boceto a escala original que hace explícitas las relaciones entre las estructuras a escalas diferentes, y también que las características que la imagen son estables en grandes rangos de escala incluyendo las escalas apropiadas para ellas. Bergholm propuso para la detección de bordes a gran escala en escalas de espacio y después llevarlo a pequeña escala con la opción manual tanto de la detección a gran escala como a pequeña escala. Gauch y Pizer estudiaron el problema complementario de las crestas y los valles en múltiples escalas y desarrollarón una herramienta para la segmentación interactiva de imágenes basadas en escalas múltiples watershed. El uso de multi-escala watershed con aplicación al mapa de gradiente también ha sido investigado por Olsen y Nielsen y ha sido portada para el uso clínico por Dam Vincken et al. que propuso un hyperstack para definir las relaciones probabilísticas entre las estructuras de la imagen a diferentes escalas. El uso de estructuras estables de imagen sobre las escalas ha sido promovido por Ahuja y sus colaboradores en un sistema totalmente automatizado. Más recientemente, estas ideas para la segmentación de imágenes en múltiples escalas mediante la vinculación de las estructuras de la imagen con las escalas han sido recogidos por Florack y Kuijper. Bijaoui y Rue asociaron las estructuras detectadas en la escala espacial por encima de un umbral mínimo en un árbol de objetos que abarca múltiples escalas y se corresponde con un tipo de función en la señal original. Las características extraídas son exactamente reconstruida usando un método iterativo conjugado con de la matriz de gradiente.

Segmentación Semi-automática[editar]

En este tipo de segmentación, el usuario define las regiones de interés con clics del ratón y los algoritmos se aplicarán de forma que se elige el camino que mejor se ajusta al borde de la imagen. Técnicas como la SIOX, Livewire, o tijeras inteligentes se utilizan en este tipo de segmentación.

Redes neuronales de segmentación[editar]

Las redes neuronales de segmentación se basan en el procesamiento de pequeñas áreas de una imagen utilizando una red neuronal artificial o un conjunto de redes neuronales. Después de este proceso de decisión se construye un mecanismo que marca las áreas de una imagen de acuerdo a la categoría reconocida por la red neuronal. Un tipo de red diseñada especialmente para esto es el mapa de Kohonen. Las redes neuronales de parejas de pulsos (PCNNs) son modelos neuronales propuesto por modelos corteza visual de un gato y desarrollado para un alto rendimiento de procesamiento de imágenes biomiméticas. En 1989, Eckhorn presentó un modelo neuronal para emular el mecanismo de la corteza visual del gato. El modelo de Eckhorn proporciona una herramienta sencilla y eficaz para estudiar la corteza visual de mamíferos pequeños, y pronto fue reconocido por ser una aplicación con un gran potencial en el procesamiento de imágenes. En 1994, el modelo de Eckhorn fue adaptado para ser un algoritmo de procesamiento de imágenes por Johnson, quien calificó este algoritmo como Pulse-Coupled Neural Network. Aproximadamente desde el año 2000, PCNNs (por sus siglas en íngles) han sido utilizados para una variedad de aplicaciones de procesamiento de imagen, incluyendo: segmentación de imágenes, generación de características, generación de funciones, la extracción de rostros, detección de movimiento, detección de regiones en crecimiento, reducción de ruido, etc. Un PCNN es una red neuronal de dos dimensiones. Cada neurona en la red corresponde a un píxel en una imagen de entrada, recibiendo la información del color de su correspondiente pixel como un estímulo externo. Cada neurona se conecta con sus neuronas vecinas, recibiendo estímulos locales de ellas. Los estímulos externos y locales se combinan en un sistema de activación interna, que acumula los estímulos hasta que se excede un umbral dinámico, dando como resultado una salida de pulsos. A través de cálculos iterativos, las neuronas PCNN producen series temporales de impulsos de salidas. La serie temporal de impulsos de salidas contiene información de la imagen de entrada y puede ser utilizado para varias aplicaciones de procesamiento de imágenes, tales como la segmentación de la imagen y la generación de características. Comparado con los medios convencionales de procesamiento de imágenes, PCNNs tienen varias ventajas importantes, incluida la robustez frente al ruido, la independencia de las variaciones en los patrones geométricos de entrada, capacidad para pasar por pequeñas variaciones en los patrones de intensidad de entrada, etc.

Software de código abierto[editar]

Existen varios paquetes de software de código abierto para realizar la segmentación de imágenes.

  • ITK - Kit de herramientas de segmentación.
  • ITK-SNAP - es una interfaz gráfica que combina segmentación manual y semiautomática, con conjuntos de nivel.
  • GIMP que incluye entre otras herramientas SIOX.
  • VXL.
  • ImageMagick.
  • MITK - tiene un módulo para la segmentación manual.
  • OpenCV - es una librería de visión artificial originalmente desarrollada por Intel.
  • GRASS GIS tiene el módulo i.smap para la segmentación de imágenes.
  • Fiji – es un paquete de procesamiento de imágenes que incluye varios plug-ins de segmentación.
  • Segmentación basada en Javascript - es una implementación de Javascript de la técnica de clustering.

También hay paquetes de software disponible de forma gratuita para fines académicos: