La segmentación es uno de los problemas generales del campo de la visión artificial y consiste en dividir una imagen digital en varias regiones (grupos de píxeles) denominadas segmentos. Más concretamente, la segmentación es un proceso de clasificación por píxel que asigna una categoría a cada píxel de la imagen analizada. Este problema general se divide en problemas especializados, dando lugar por ejemplo a:

segmentación por color segmentación por texturas superpíxel segmentación semántica

Cada problema especializado le otorga un significado propio a las categorías que se usan en la clasificación de los píxeles. Uno de los casos más elementales de segmentación es la umbralización, un tipo particular de segmentación por color con solo dos categorías: claro y oscuro. Cada píxel se clasifica como claro u oscuro comparando su intensidad con una intensidad de referencia dada denominada umbral. Por otro lado, uno de los casos más sofisticados es la segmentación semántica que clasifica objetos diversos. Mask R-CNN es un segmentador semántico que clasifica 90 categorías del dataset COCO, reconociendo personas, vehículos, vegetación, calle, vereda, edificios, y demás elementos típicos en escenas urbanas.

El objetivo de la segmentación es localizar regiones con significado. La segmentación se usa tanto para localizar objetos como para encontrar sus bordes dentro de una imagen. El resultado de la segmentación de una imagen es un conjunto de segmentos que cubren toda la imagen sin superponerse. Se puede representar como una imagen de etiquetas (una etiqueta para cada píxel) o como un conjunto de contornos.

Elementos y proceso de segmentación Cada algoritmo de segmentación discrimina una determinada cantidad de clases o categorías, y a cada categoría le asigna una etiqueta o identificador, un valor entero que el algoritmo usa para expresar esa categoría. La mínima clasificación posible es la que discrimina dos categorías; es un caso frecuente y se la denomina segmentación binaria.

Todos los algoritmos de segmentación operan sobre una imagen, típicamente a color o en blanco y negro, y generan otra imagen, artificial, del mismo tamaño que la analizada, en la que cada píxel expresa una etiqueta. Las regiones formadas por píxeles vecinos con la misma etiqueta se denomina segmento. Los segmentos se pueden interpretar como piezas de un rompecabezas: no se superponen y entre todos cubren la imagen completa.

La imagen resultante de una segmentación está preparada para ser consumida computacionalmente, pero no para ser visualizada. Para presentar a un usuario el resultado de una segmentación es necesaria una etapa de visualización que asigna colores fácilmente discernibles a cada etiqueta.

Alternativamente, en lugar de usar una imagen de etiquetas, el resultado de una segmentación se pueden representar mediante contornos, líneas cerradas de formas arbitrarias que señalan los bordes de los segmentos.

Glosario La segmentación de imágenes utiliza jerga de visión artificial y de aprendizaje automático, que se resume a continuación:

etiqueta: número entero que identifica una categoría segmento: grupo de píxeles conectados (vecinos) con una misma categoría segmentación: proceso que produce una imagen de etiquetas, asignando una etiqueta para cada píxel de la imagen original

Taxonomía Los diversos métodos de segmentación se clasifican de varias maneras.

Segmentación binaria la que distingue solo dos categorías las que no son binarias se denominan segmentación múltiple Segmentación asistida o semiautomática algoritmos que requieren anotaciones previas, señalando regiones a analizar o a distinguir una persona suele hacer anotaciones marcando zonas sobre la imagen en algunos casos es posible automatizar estas anotaciones haciendo uso de otros algoritmos de visión artificial Segmentación semántica distingue categorías de alto nivel significante, usualmente objetos Segmentación instanciada distingue individuos de la misma categoría Segmentación panóptica combinación de la segmentación semántica e instanciada, reconociendo individuos de varias categorías Segmentación basada en modelos de aprendizaje profundo (deep learning) miniaturadeimagen|Segmentación binaria por umbralización, con umbral automático

Segmentación binaria Los segmentadores binarios son los que tienen solo dos categorías, usualmente denominadas frente y fondo. Su uso principal es el de extraer un segmento con el objeto buscado.

La umbralización es la segmentación más básica y simple, es un ejemplo de segmentación binaria. Opera sobre cada píxel de manera independiente clasificándolos por su intensidad comparada con un umbral dado: si es más claro corresponde al frente, si no, al fondo. miniaturadeimagen|440x440px|3 métodos de segmentación asistida. Los métodos de izquierda y derecha requieren que el usuario indique con verde algunos de los píxeles incluidos en el objeto a segmentar, y con azul algunos de los píxeles que no se deben incluir. El método del medio requiere indicar con un recuadro rojo el objeto a segmentar.

Segmentación asistida o semiautomática Estos métodos requieren que el usuario aporte indicaciones sobre la región de la imagen a segmentar. Los mayores exponentes de este tipo de segmentación son el algoritmo Watershed, cuyo concepto se remonta a 1979, y GrabCut, de 2004.

Watershed Requiere que se le asignen etiquetas a algunos píxeles, a los que se denominan semillas; el algoritmo amplía paulatinamente la región a partir de ellas buscando los bordes entre segmentos. Si el resultado no es el esperado, el usuario debe aumentar la cantidad de marcas especialmente en la zona que se debe cambiar.

GrabCut Es un algoritmo más moderno pero anterior a las redes convolucionales. Es un segmentador binario que intenta capturar el objeto dominante en la imagen. Requiere que el usuario recuadre el objeto: la zona fuera del recuadro se toma como semilla del segmento de fondo.

Métodos interactivos Livewire es una técnica interactiva que traza el borde del segmento a partir de puntos indicados por el usuario.

SImple iterative object extraction es una técnica ampliamente adoptada y más avanzada que la anterior, de 2006 y de código abierto.

Segmentación basada en aprendizaje profundo La introducción de las redes convolucionales (CNN, convolutional neural networks) en la visión artificial fue un gran hito en 2012, que abrió un campo de investigación intensiva con resultados sorprendentes. La rápida evolución de las CNN llegó al campo de la segmentación dando un salto cualitativo en 2015 de la mano de FCN, SegNet y ResNet, marcando un antes y un después: prácticamente todos los algoritmos de segmentación posteriores a 2015 están basados en CNN y resuelven problemas complejos y de alto nivel como la segmentación semántica, instanciada y panóptica dejando obsoletos a sus predecesores. Por este motivo los anteriores a 2015 son calificados como "clásicos", y solo sobrevivieron a la obsolescencia los dedicados a segmentaciones de bajo nivel, como la umbralización o la segmentación por color y algunas notables excepciones como GrabCut y Watershed.El estado del arte en 2018 estuvo dado por el modelo Mask R-CNN, segmentador semántico e instanciado entrenado sobre el dataset COCO, que distingue 90 categorías de objetos comunes.

Métodos Existen innumerables algoritmos de segmentación, y se crean nuevos cada día, muchos de ellos altamente especializados. A continuación se indican algunos algoritmos famosos, y luego se describen diversas técnicas de segmentación.

Umbralización (thresholding) Watershed GrabCut Livewire SImple iterative object extraction

Mask R-CNN Segmentación del color Consiste en clasificar píxeles exclusivamente por su color. La umbralización pertenece a esta categoría, y salvo esta excepción la segmentación por color no tiene particular relevancia en problemas de visión artificial, pero sí lo tiene en procesamiento de imágenes, por los efectos visuales que logra.

Hay tres métodos principales de segmentación por color:

Umbralización, segmentación binaria por intensidad del píxel basado en histograma, de cuyo análisis se identifican modas que se adoptan como color base para una categoría de agrupamiento, que es un caso particular de segmentación basado en histograma, donde los rangos de color de cada categoría se determinan con un algoritmo de clustering, típicamente K-means.

Basados en histograma 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 solo 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. miniaturadeimagen|Imagen a segmentar De agrupamiento (Clustering) miniaturadeimagen|Segmentación en 16 grupos (clusters) de color, logrando un efecto de posterizado El algoritmo de K-means es una técnica iterativa que se utiliza para dividir una imagen en K clusters. El algoritmo básico es: Escoger K centros de clusters, ya sea de forma aleatoria o basándose en algún método heurístico . Asignar a cada píxel de la imagen el clúster que minimiza la varianza entre el pixel y el centro del clúster. Recalcular los centros de los clusters haciendo la media de todos los pixeles del clúster. Repetir los pasos 2 y 3 hasta que se consigue la convergencia (por ejemplo, los pixeles no cambian de clusters).

miniaturadeimagen|Segmentación en dos grupos de color En este caso, la varianza es la diferencia absoluta entre un píxel y el centro del clúster. 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 la 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.