Investigación Básica

procesamiento de imágenes: segmentación

El concepto de segmentación dado anteriormente es un concepto generalizado. En general, la imagen para el observador se presenta a menudo en forma de áreas homogéneas que se diferencian entre sí por diversas características. El número de estos tipos (o clases) suele ser pequeño. La imagen completa se puede dividir en varias áreas que no se superponen, cada una de las cuales es una imagen de uno de los tipos (clases). Al analizar este tipo de imágenes, el objetivo de cualquier sistema es identificar estas áreas e indicar su número de tipo. El procesamiento de imágenes que le permite obtener dicho conjunto de información sobre ella se llama segmentación. En otras palabras, se parte del supuesto de que las áreas de la imagen corresponden a objetos reales o a sus partes.

Sin embargo, hay imágenes en las que toda la imagen está dividida en áreas que no se diferencian entre sí en ninguna característica. Entonces toda la información representa en este caso el conjunto de límites entre estas áreas. Un ejemplo sencillo: mampostería de ladrillo o teja.

Los métodos de segmentación de imágenes se dividen en dos clases:

Automáticos, es decir, métodos que no requieren interacción del usuario;

Métodos interactivos o manuales que utilizan la entrada del usuario durante la operación.

La tarea de segmentación de imágenes generalmente se aplica en alguna etapa del procesamiento de imágenes para obtener representaciones más precisas y convenientes de esta imagen para seguir trabajando con ella.

Existe una gran variedad de métodos de segmentación y diferentes métodos se centran en diferentes propiedades de partición de imágenes. Por lo tanto, al elegir un método de segmentación para una tarea particular, uno debe guiarse por qué propiedades de partición son realmente importantes y qué propiedades tiene la imagen original. También es necesario decidir con qué nivel de detalle es aceptable la división en clases. Todo depende de cada problema específico que se resuelva. Por ejemplo, al analizar microcircuitos, la tarea de identificar objetos puede ser aislar bloques de microcircuitos y componentes de radio, o puede ser detectar grietas en estos componentes de radio. Entonces es lógico que en el primer caso sea necesario limitarnos a detalles más amplios.

Los algoritmos de segmentación también se dividen generalmente en dos clases:

1) basado en la propiedad básica del brillo: discontinuidad;

2) basado en la propiedad básica del brillo: uniformidad.

En el primer caso, la imagen se divide en regiones según algún cambio en el brillo, como diferencias de brillo en toda la imagen. En el segundo caso, la imagen se divide según el criterio de homogeneidad de áreas. Un ejemplo de la primera categoría es el procesamiento de umbrales o la clasificación de umbrales, y la segunda es el crecimiento de regiones, la fusión y división de regiones. Se analizará más adelante la segmentación del primer tipo, es decir, el procesamiento de umbrales.

Segmentación en el espacio de color RGB

Normalmente, la segmentación de imágenes de umbral se reduce a la tarea de segmentar imágenes en escala de grises. De hecho, la elección de un umbral, generalmente único, y la segmentación basada en él realizan la transición de una imagen en el espacio de color RGB a uno de semitonos, a pesar de que no existe un preprocesamiento directo para convertir una imagen en color a uno de semitonos. Sin embargo, a veces todavía se utiliza la “segmentación por color”.

Supongamos que en una imagen RGB es necesario seleccionar objetos cuyo color se encuentre en un rango determinado. La tarea de la segmentación en este caso es clasificar cada píxel de la imagen según si su color se encuentra dentro de un rango determinado o no. Para ello, se introduce una medida de similitud en el espacio de color, normalmente la distancia euclidiana. La distancia euclidiana entre puntos y está determinada por la expresión

donde, son los componentes RGB del vector y, son el vector.

La idea de utilizar dicho procesamiento se puede ver en términos generales en el apartado 2.6 de la nota explicativa.

En este trabajo, las imágenes fueron consideradas y segmentadas principalmente en base a un único umbral, es decir, se realizó una transición a imágenes de medios tonos. La razón de esto es que las tareas de segmentación en el espacio de color RGB tienen un enfoque limitado y, en este caso, para cada imagen es necesario conocer la norma de distancia para cada componente R, G y B, que sólo puede determinarse mediante largos experimentos sobre una tarea temática específica.

Este verano tuve la suerte de conseguir unas prácticas de verano en la empresa. itseez . Me pidieron que investigara métodos modernos que nos permitieran resaltar la ubicación de los objetos en una imagen. Básicamente, estos métodos se basan en la segmentación, por lo que comencé mi trabajo familiarizándome con esta área de la visión por computadora.
Segmentación de imágenes - Es la división de una imagen en muchas áreas que la cubren. La segmentación se utiliza en muchas áreas, por ejemplo, en la industria manufacturera para indicar defectos durante el ensamblaje de piezas, en medicina para el procesamiento primario de imágenes y también para compilar mapas del terreno a partir de imágenes de satélite. Para aquellos que estén interesados ​​en comprender cómo funcionan dichos algoritmos, bienvenidos al cat. Veremos varios métodos de la biblioteca de visión por computadora. OpenCV .

Algoritmo de segmentación por cuenca (WaterShed)


El algoritmo trabaja con la imagen en función de dos variables. f=yo(x,y) , Dónde x, y – coordenadas de píxeles:


El valor de la función puede ser la intensidad o la magnitud del gradiente. Para obtener el mayor contraste, puede tomar un degradado de la imagen. Si a lo largo del eje ONZ Al trazar el valor absoluto del gradiente, se forman crestas en lugares donde hay una diferencia de intensidad y llanuras en regiones homogéneas. Después de encontrar los mínimos de la función. F , está en marcha el proceso de llenado de “agua”, que parte del mínimo global. Tan pronto como el nivel del agua alcanza el siguiente mínimo local, comienza a llenarse de agua. Cuando dos regiones comienzan a fusionarse, se crea una partición para evitar que las regiones se fusionen. El agua seguirá subiendo hasta que las regiones queden separadas únicamente por tabiques construidos artificialmente (Fig. 1).




Fig.1. Ilustración del proceso de llenado de agua.

Un algoritmo de este tipo puede resultar útil si la imagen tiene una pequeña cantidad de mínimos locales, pero si hay una gran cantidad de ellos, se produce una partición redundante en segmentos. Por ejemplo, si aplicamos directamente el algoritmo a la Fig. 2, obtenemos muchos pequeños detalles en la Fig. 3.


Arroz. 2. Imagen original


Arroz. 3. Imagen después de la segmentación por algoritmo. Cuenca

¿Cómo afrontar los pequeños detalles?

Para deshacerse del exceso de pequeños detalles, puede definir áreas que se vincularán a los mínimos más cercanos. La partición se creará solo si se fusionan dos regiones con marcadores; de lo contrario, estos segmentos se fusionarán. Este enfoque elimina el efecto de la segmentación redundante, pero requiere un procesamiento previo de la imagen para seleccionar marcadores que puedan designarse interactivamente en la imagen de la Fig. 4, 5.


Arroz. 4. Imagen con marcadores


Arroz. 5. Imagen después de la segmentación por algoritmo. Cuenca usando marcadores

Si desea actuar automáticamente sin intervención del usuario, puede utilizar, por ejemplo, la función buscarContornos() para resaltar marcas, pero también aquí, para una mejor segmentación, se deben excluir los contornos pequeños Fig. 6., por ejemplo, eliminándolos a lo largo del umbral a lo largo del contorno. O utilice la erosión con dilatación para eliminar pequeños detalles antes de resaltar los contornos.


Arroz. 6. Se utilizaron como marcadores contornos con una longitud superior a un cierto umbral.


Como resultado del algoritmo, obtenemos una máscara con una imagen segmentada, donde los píxeles de un segmento están etiquetados con la misma etiqueta y forman un área conectada. La principal desventaja de este algoritmo es el uso de un procedimiento de preprocesamiento para imágenes con una gran cantidad de mínimos locales (imágenes con una textura compleja y con abundancia de colores diferentes).

Imagen de tapete = imread("monedas.jpg", CV_LOAD_IMAGE_COLOR); // selecciona los contornos Mat imageGray, imageBin; cvtColor(imagen, imagenGray, CV_BGR2GRAY); umbral(imageGray, imageBin, 100, 255, THRESH_BINARY); estándar::vector >contornos; estándar::vector jerarquía findContours(imageBin, contornos, jerarquía, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); Marcadores de tapete (image.size(), CV_32SC1); marcadores = Escalar::todos(0); int compCount = 0; for(int idx = 0; idx >= 0; idx = jerarquía, compCount++) ( drawContours(marcadores, contornos, idx, Scalar::all(compCount+1), -1, 8, jerarquía, INT_MAX); ) std: :vector colorTab(compCount); para(int i = 0; i< compCount; i++) { colorTab[i] = Vec3b(rand()&255, rand()&255, rand()&255); } watershed(image, markers); Mat wshed(markers.size(), CV_8UC3); for(int i = 0; i < markers.rows; i++) { for(int j = 0; j < markers.cols; j++) { int index = markers.at(yo, j); si (índice == -1) lavado.en (yo, j) = Vec3b(0, 0, 0); de lo contrario si (índice == 0) lavado.en

Algoritmo de segmentación (yo, j) = Vec3b(255, 255, 255);

más lavado.en


(i, j) = colorTab; ) ) imshow("transformación de cuenca", wshed); esperaClave(0); cambio medio MeanShift agrupa objetos con características similares. Los píxeles con características similares se combinan en un segmento y el resultado es una imagen con áreas homogéneas. Por ejemplo, como coordenadas en el espacio de características puedes seleccionar coordenadas de píxeles

(x,y)

y componentes RGB :
píxel. Al trazar píxeles en el espacio de características, puede ver grupos en ciertos lugares. Arroz. 7. (a) Píxeles en el espacio característico 2D. (b) Los píxeles que llegan al mismo máximo local se colorean del mismo color. (c) - función de densidad, los máximos corresponden a los lugares de mayor concentración de píxeles. La imagen está tomada del artículo. Para facilitar la descripción de condensaciones de puntos, presentamos función de densidad – vector de características i -ésimo píxel, d - el parámetro responsable de la suavidad es el kernel. Los máximos de la función se encuentran en los puntos de condensación de los píxeles de la imagen en el espacio de características. Los píxeles que pertenecen al mismo máximo local se combinan en un segmento. Resulta que para encontrar a cuál de los centros de concentración pertenece un píxel, es necesario avanzar a lo largo del gradiente para encontrar el máximo local más cercano.

Estimación de gradiente a partir de la función de densidad

El vector de desplazamiento medio se puede utilizar para estimar el gradiente de la función de densidad.
El kernel de Epanechnikov se utiliza como kernel en OpenCV:


- este es el volumen d -Esfera dimensional con radio unitario.


significa que la suma no abarca todos los píxeles, sino solo aquellos que caen dentro de una esfera con un radio h centrado en el punto donde apunta el vector en el espacio de características. Esto se introduce específicamente para reducir la cantidad de cálculos. - volumen d -Esfera dimensional con radio h. Puede establecer por separado el radio para las coordenadas espaciales y el radio por separado en el espacio de color. - el número de píxeles que caen dentro de la esfera. Tamaño Puede considerarse como una estimación del valor en la región.


Por tanto, para caminar a lo largo de la pendiente, basta con calcular el valor - vector de desplazamiento medio. Debe recordarse que si selecciona un kernel diferente, el vector de desplazamiento medio se verá diferente.


Al elegir las coordenadas de los píxeles y las intensidades de color como características, los píxeles con colores similares y ubicados cerca unos de otros se combinarán en un segmento. En consecuencia, si elige un vector de características diferente, los píxeles se combinarán en segmentos usándolo. Por ejemplo, si eliminamos las coordenadas de las características, entonces el cielo y el lago se considerarán un segmento, ya que los píxeles de estos objetos en el espacio de características caerían en un máximo local.

Si el objeto que queremos seleccionar consta de áreas que difieren mucho en color, entonces (yo, j) = Vec3b(255, 255, 255); no podremos combinar estas regiones en una, y nuestro objeto constará de varios segmentos. Pero es bueno lidiar con un objeto de color uniforme sobre un fondo variado. Más (yo, j) = Vec3b(255, 255, 255); Se utiliza al implementar un algoritmo para rastrear objetos en movimiento.

Código de muestra para ejecutar el algoritmo:

Imagen de tapete = imread("fresa.jpg", CV_LOAD_IMAGE_COLOR); Segmento de imagen de tapete; int radio espacial = 35; int colorRadio = 60; int pirámideNiveles = 3; pyrMeanShiftFiltering (imagen, segmento de imagen, radio espacial, radio de color, niveles de pirámide); imshow("MeanShift", segmento de imagen); esperaClave(0);
Resultado:


Arroz. 8. Imagen original


Arroz. 9. Después de la segmentación por el algoritmo. (yo, j) = Vec3b(255, 255, 255);

Algoritmo de segmentación Relleno de inundación

Al usar Relleno de inundación(método de llenado o “inundación”) puede seleccionar regiones de color uniforme. Para hacer esto, debe seleccionar el píxel inicial y establecer el intervalo para cambiar el color de los píxeles vecinos en relación con el original. El intervalo también puede ser asimétrico. El algoritmo combinará píxeles en un segmento (rellenándolos con el mismo color) si se encuentran dentro del rango especificado. El resultado será un segmento relleno con un color determinado y su área en píxeles.

Este algoritmo puede resultar útil para rellenar un área con ligeras diferencias de color con un fondo uniforme. Un caso de uso Relleno de inundación Es posible que se puedan identificar los bordes dañados de un objeto. Por ejemplo, si al rellenar áreas homogéneas con un determinado color, el algoritmo también rellena regiones vecinas, entonces se ha violado la integridad del límite entre estas áreas. En la imagen a continuación puede ver que se conserva la integridad de los límites de las áreas rellenas:

Arroz. 10, 11. La imagen original y el resultado después de rellenar varias áreas.

Y las siguientes imágenes muestran la opción de trabajo. Relleno de inundación si uno de los límites de la imagen anterior está dañado.


Arroz. 12, 13. Ilustración de la obra. Relleno de inundación cuando se viola la integridad del límite entre las áreas rellenas

Código de muestra para ejecutar el algoritmo:

Imagen de tapete = imread("cherry.jpg", CV_LOAD_IMAGE_COLOR); Punto de inicioPunto; startPoint.x = imagen.cols/2; startPoint.y = imagen.filas/2; Escalar loDiff(20, 20, 255); Escalar upDiff(5, 5, 255); Color de relleno escalar (0, 0, 255); int vecinos = 8; Dominio recto; int área = FloodFill(imagen, startPoint, fillColor, &domain, loDiff, upDiff, vecinos); rectángulo(imagen, dominio, Escalar(255, 0, 0)); imshow("segmentación de relleno de inundación", imagen); esperaClave(0);
a una variable área Se registrará el número de píxeles "rellenos".
Resultado:


Algoritmo de segmentación GrabCut

Se trata de un algoritmo interactivo de selección de objetos, desarrollado como una alternativa más cómoda al lazo magnético (para seleccionar un objeto, el usuario debía trazar su contorno con el ratón). Para que el algoritmo funcione, basta con encerrar el objeto junto con parte del fondo en un rectángulo (agarrar). El objeto será segmentado automáticamente (cortado).


Pueden surgir dificultades durante la segmentación si hay colores dentro del cuadro delimitador que aparecen en grandes cantidades no sólo en el objeto, sino también en el fondo. En este caso, puede agregar marcas adicionales de objeto (línea roja) y de fondo (línea azul).


Consideremos la idea del algoritmo. La base es el algoritmo de segmentación interactiva GraphCut, donde el usuario debe colocar marcadores en el fondo y en el objeto. La imagen se trata como una matriz. .z - valores de intensidad de píxeles, i -número total de píxeles. Para separar un objeto del fondo, el algoritmo determina los valores de los elementos de la matriz de transparencia y puede tomar dos valores si = 0 , entonces el píxel pertenece al fondo si = 1 , luego el objeto. El parámetro interno contiene un histograma de la distribución de intensidad de primer plano y un histograma de fondo:
.
La tarea de la segmentación es encontrar incógnitas. La función de energía se considera:

Además, la energía mínima corresponde a la mejor segmentación.


V(a,z) - el término es responsable de la conexión entre píxeles. La suma abarca todos los pares de píxeles que son vecinos, dis(m,n) - Distancia euclidiana. es responsable de la participación de pares de píxeles en el total si un norte = un metro , entonces este par no se tendrá en cuenta.
- es responsable de la calidad de la segmentación, es decir separación del objeto del fondo.

Habiendo encontrado el mínimo global de la función de energía. mi , obtenemos una matriz de transparencia. Para minimizar la función de energía, la imagen se describe como una gráfica y se busca el corte mínimo de la gráfica. A diferencia de GraphCut en el algoritmo GrabCut Los píxeles se consideran en el espacio RGB, por lo que se utiliza un modelo de mezcla gaussiana (GMM) para describir las estadísticas de color. Operación de algoritmo GrabCut Puedes verlo ejecutando el ejemplo de OpenCV.

Una de las principales tareas del procesamiento y análisis de imágenes es la segmentación, es decir. dividir una imagen en áreas para las cuales se cumple un cierto criterio de homogeneidad, por ejemplo, resaltar áreas de aproximadamente el mismo brillo en la imagen. El concepto de área de imagen se utiliza para definir un grupo coherente de elementos de imagen que tienen un determinado atributo (propiedad) común.
Una de las formas principales y más sencillas es crear una segmentación utilizando un umbral. Un umbral es un signo (propiedad) que ayuda a dividir la señal deseada en clases. La operación de división de umbral es comparar el valor de brillo de cada píxel de la imagen con un valor de umbral específico.
Binarización

La operación de umbralización que da como resultado una imagen binaria se llama binarización. El objetivo de la operación de binarización es reducir radicalmente la cantidad de información contenida en la imagen. En el proceso de binarización, la imagen de semitonos original, que tiene un cierto número de niveles de brillo, se convierte en una imagen en blanco y negro, cuyos píxeles tienen solo dos valores: 0 y 1.

El umbral de una imagen se puede realizar de diferentes maneras.

Binarización con umbral más bajo
Binarización con umbral más bajo
La binarización con un umbral más bajo es la operación más simple, que utiliza solo un valor de umbral:

Todos los valores en lugar del criterio pasan a ser 1, en este caso 255 (blanco) y todos los valores (amplitudes) de píxeles que son mayores que el umbral t - 0 (negro).

Binarización con umbral superior
En ocasiones se puede utilizar una variante del primer método, que produce un negativo de la imagen obtenida mediante el proceso de binarización. Operación de binarización con umbral superior:

Binarización con doble restricción.
Para resaltar áreas en las que los valores de brillo de los píxeles pueden variar dentro de un rango conocido, se introduce la binarización con doble limitación (t 1
También son posibles otras variaciones con umbrales, en las que sólo se pasa una parte de los datos (filtro de banda media).

Umbral incompleto
Esta transformación produce una imagen que puede ser más fácil de analizar en mayor profundidad porque pierde el fondo con todos los detalles presentes en la imagen original.

Transformación de umbral multinivel
Esta operación forma una imagen que no es binaria, sino que consta de segmentos con diferentes brillos.

En cuanto a la binarización, eso es esencialmente todo. Aunque podemos agregar que hay uno global, que se usa para toda la imagen, y también hay uno local, que captura parte de la imagen (imagen).

Umbral local
método otsa
El método utiliza un histograma de la distribución de los valores de brillo de los píxeles de una imagen rasterizada. Un histograma se construye usando los valores p i =n i /N, donde N es el número total de píxeles de la imagen, n i es el número de píxeles con el nivel de brillo i. El rango de brillo se divide en dos clases utilizando el umbral del nivel de brillo k,k, un valor entero de 0 a L. Cada clase corresponde a frecuencias relativas ω 0 ω 1:

Niveles promedio para cada una de las dos clases de imágenes:
A continuación, se calcula el valor máximo para evaluar la calidad de dividir la imagen en dos partes:
donde (σ cl)2=ω 0 ω 1 (μ 1 -μ 0) 2 es la varianza entre clases y (σ total) 2 es la varianza total de toda la imagen.

Umbral basado en el gradiente de brillo de la imagen
Supongamos que la imagen analizada se puede dividir en dos clases: objetos y fondo. El algoritmo para calcular el valor umbral consta de los 2 pasos siguientes:
1. El módulo del gradiente de brillo se determina para cada píxel.
imágenes

2. Cálculo del umbral:
Total
Con mucho gusto compartí con ustedes lo que encontré; en el futuro, si tengo éxito y tengo tiempo, intentaré implementar algunos de los algoritmos. Esto es sólo una pequeña parte de todo lo que existe hoy en día, pero estoy feliz de poder compartirlo también.
Gracias por su atención.

Segmentación de cuencas impulsada

Muy a menudo, al analizar imágenes, surge la tarea de dividir los píxeles de la imagen en grupos según determinadas características. Este proceso de división en grupos se llama segmentación. Los más conocidos son dos tipos de segmentación: la segmentación por brillo para imágenes binarias y la segmentación por coordenadas de color para imágenes en color. Los métodos de segmentación pueden considerarse como una formalización del concepto de distinguir un objeto del fondo o conceptos asociados con un gradiente de brillo. Los algoritmos de segmentación se caracterizan por ciertos parámetros de confiabilidad y precisión de procesamiento. Dependen de hasta qué punto se tienen en cuenta las características adicionales de la distribución de la luminosidad en áreas de los objetos o el fondo, el número de cambios de luminosidad, la forma de los objetos, etc.

Hay muchas imágenes que contienen el objeto de interés con un brillo bastante uniforme sobre un fondo de diferente brillo. Los ejemplos incluyen texto escrito a mano, una serie de imágenes médicas, etc. Si el brillo de los puntos del objeto difiere mucho del brillo de los puntos del fondo, entonces resolver el problema de establecer un umbral es una tarea sencilla. En la práctica esto no es tan sencillo, ya que la imagen en estudio está sujeta a ruido y se permite cierta variación en los valores de brillo. Existen varios enfoques analíticos para el límite del umbral de brillo. Un método consiste en establecer el umbral en un nivel tal que la suma total de elementos con luminancias por debajo del umbral sea coherente con las probabilidades anteriores de esos valores de luminancia.

Se pueden aplicar enfoques similares al procesamiento de imágenes en color y espectrozonales. También existe un tipo de segmentación llamada segmentación de contorno. Muy a menudo, el análisis de imágenes incluye operaciones como obtener el contorno externo de imágenes de objetos y registrar las coordenadas de puntos en este contorno. Hay tres enfoques principales para representar los límites de un objeto: aproximación de curvas, trazado de contornos y vinculación de puntos de caída. Para completar el análisis, cabe señalar que también existe segmentación de textura y segmentación de forma.

El tipo de segmentación más simple es la segmentación por umbral. Ha encontrado una aplicación muy amplia en robótica. Esto se explica por el hecho de que en esta zona las imágenes de los objetos estudiados, en su mayor parte, tienen una estructura bastante uniforme y su fondo se destaca claramente. Pero además de esto, para un procesamiento confiable es necesario saber que la imagen consta de un objeto y un fondo, cuyo brillo está en rangos estrictamente conocidos y no se cruzan entre sí.

El desarrollo de tecnologías de procesamiento de imágenes ha llevado a la aparición de nuevos enfoques para resolver problemas de segmentación de imágenes y su aplicación para resolver muchos problemas prácticos.

En este artículo, consideraremos un enfoque relativamente nuevo para resolver el problema de la segmentación de imágenes: el método de la cuenca. Expliquemos brevemente el nombre de este método y cuál es su esencia.

Se propone considerar la imagen como un mapa del área, donde los valores de brillo representan valores de altura con respecto a un determinado nivel. Si esta zona se llena de agua, se forman charcos. Cuando se llenan más de agua, estas piscinas se combinan. Los lugares donde se unen estas cuencas están marcados como líneas divisorias de aguas.

La separación de objetos en contacto en una imagen es uno de los problemas importantes del procesamiento de imágenes. A menudo se utiliza el llamado método de marcador de cuencas hidrográficas para resolver este problema. Las transformaciones que utilizan este método necesitan identificar "cuencas" y "líneas divisorias" en una imagen procesando áreas locales en función de sus características de brillo.

El método de la cuenca del marcador es uno de los métodos de segmentación de imágenes más eficaces. Al implementar este método, se realizan los siguientes procedimientos básicos:

    Se calcula la función de segmentación. Se trata de imágenes en las que los objetos se encuentran en zonas oscuras y son difíciles de ver.

    Computación de marcadores de primer plano de imágenes. Se calculan en base a un análisis de la conectividad de píxeles de cada objeto.

    Marcadores de fondo informáticos. Representan píxeles que no son parte de objetos.

    Modificación de la función de segmentación en función de los valores de ubicación de los marcadores de fondo y marcadores de primer plano.

    Cálculos basados ​​en una función de segmentación modificada.

En este ejemplo, las funciones de Image Processing Toolbox más utilizadas son fspecial, imfilter, watershed, label2rgb, imopen, imclose, imreconstruct, imcomplement, imregionalmax, bwareaopen, graythresh e imimposemin.

  • Paso 1: lea una imagen en color y conviértala a escala de grises.
  • Paso 2: usar el valor del gradiente como función de segmentación.
  • Paso 3: etiquetar objetos en primer plano.
  • Paso 4: Calcular los marcadores de fondo.
  • Paso 6: Visualización del resultado del procesamiento.

Paso 1: lea la imagen en color y conviértala a escala de grises.

Leemos los datos del archivo pears.png rgb=imread("pears.png"); y presentarlos como una imagen de medios tonos.

I=rgb2gray(rgb);

imshow(I) text(732,501,"…",... "FontSize",7,"HorizontalAlignment","right")

Paso 2: usar el valor del gradiente como función de segmentación.

El operador Sobel, la función imfilter y otros cálculos se utilizan para calcular el valor del gradiente. El gradiente tiene valores grandes en los límites de los objetos y valores pequeños (en la mayoría de los casos) fuera de los límites de los objetos.

Hy=fspecial("sobel"); hx=hy"; Iy=imfilter(doble(I), hy, "replicar"); Ix=imfilter(doble(I), hx, "replicar"); gradmag=sqrt(Ix.^2+Iy.^2 ); figura, imshow(gradmag,), título("valor de gradiente")

Por lo tanto, una vez calculados los valores del gradiente, puede comenzar a segmentar imágenes utilizando el método del marcador de cuenca considerado.

L=cuenca(gradmag); Lrgb=etiqueta2rgb(L); figura, imshow(Lrgb), título("Lrgb")

Sin embargo, sin más cálculos adicionales, dicha segmentación será superficial.

Paso 3: etiquetar objetos en primer plano.

Se pueden utilizar varios procedimientos para etiquetar objetos en primer plano. Este ejemplo utilizará tecnologías morfológicas llamadas "apertura mediante restauración" y "cierre mediante restauración". Estas operaciones le permiten analizar la región interna de los objetos de la imagen utilizando la función imregionalmax.

Como se mencionó anteriormente, al marcar objetos en primer plano, también se utilizan operaciones morfológicas. Veamos algunos de ellos y comparemos. Primero, implementamos la operación de expansión usando la función imopen.

Se=strel("disco", 20); Io=imopen(I, se); figura, imshow(Io), título("Io")

Es decir=imerode(I, se); Iobr=imreconstruct(Es decir, I); figura, imshow(Iobr), título("Iobr")

Iobrd=imdilate(Iobr, se); Iobrcbr=imreconstruct(imcomplement(Iobrd), imcomplement(Iobr)); Iobrcbr=imcomplement(Iobrcbr); figura, imshow(Iobrcbr), título("Iobrcbr")

Un análisis visual comparativo de Iobrcbr e Ioc muestra que la reconstrucción presentada basada en operaciones morfológicas de apertura y cierre es más efectiva en comparación con las operaciones estándar de apertura y cierre. Calculemos los máximos locales de Iobrcbr y obtengamos los marcadores de primer plano.

Fgm=imregionalmax(Iobrcbr);

figura, imshow(fgm), título("fgm")

Apliquemos marcadores de primer plano a la imagen original.

I2=Yo;

I2(fgm)=255;

figura, imshow(I2), título("fgm superpuesto a la imagen original")

Tenga en cuenta que algunos objetos ocultos o cerrados en la imagen no están marcados. Esta propiedad afecta la formación del resultado y muchos de estos objetos de imagen no se procesarán desde el punto de vista de la segmentación. Por tanto, los marcadores de primer plano sólo muestran los límites de la mayoría de los objetos. Los límites así representados están sujetos a un procesamiento posterior. En particular, pueden tratarse de operaciones morfológicas.

Se2=strel(unos(5, 5));

fgm2=imclose(fgm, se2);

fgm3=imerode(fgm2, se2);

Como resultado de esta operación, los píxeles individuales aislados de la imagen desaparecen. También puede utilizar la función bwareaopen, que le permite eliminar una cantidad específica de píxeles.

Fgm4=bwareaopen(fgm3, 20);

I3=Yo;

La función imimposemin se puede utilizar para determinar con precisión los mínimos locales en una imagen. En base a esto, la función imimposemin también puede ajustar los valores de los gradientes en la imagen y así refinar la ubicación de los marcadores de primer plano y fondo.

Gradmag2=imimposemin(gradmag, bgm | fgm4);

Finalmente, se realiza una operación de segmentación basada en cuencas.

L=cuenca(gradmag2);

Paso 6: Visualización del resultado del procesamiento.

Mostremos marcadores de primer plano superpuestos, marcadores de fondo y límites de objetos segmentados en la imagen original.

I4=Yo;

I4(imdilate(L==0, unos(3, 3))|bgm|fgm4)=255;

figure, imshow(I4) title("Marcadores y límites de objetos superpuestos a la imagen original")

Como resultado de esta visualización, puede analizar visualmente la ubicación de los marcadores de primer plano y de fondo.

También es interesante mostrar los resultados del procesamiento utilizando una imagen en color. La matriz generada por las funciones watershed y bwlabel se puede convertir en una imagen de color verdadero utilizando la función label2rgb.

Lrgb=label2rgb(L, "jet", "w", "shuffle");

1

Se consideran métodos matemáticos para segmentar imágenes del estándar Dicom. Se están desarrollando métodos matemáticos para la segmentación de imágenes del estándar Dicom para problemas de reconocimiento de imágenes médicas. El diagnóstico de enfermedades depende de las calificaciones del investigador y requiere que realice una segmentación visual, y los métodos matemáticos para procesar imágenes rasterizadas son una herramienta para este diagnóstico. El procesamiento de imágenes médicas obtenidas mediante hardware sin preprocesar los datos gráficos en la mayoría de los casos produce resultados incorrectos. Se realizaron procedimientos para extraer contornos de objetos utilizando el método Canny y algoritmos adicionales de procesamiento de imágenes rasterizadas. Los resultados de la investigación permiten calcular las propiedades morfométricas, geométricas y de histograma de las formaciones del cuerpo humano necesarias para el tratamiento posterior del paciente y para proporcionar un tratamiento médico eficaz. Los principios desarrollados del análisis automatizado por computadora de imágenes médicas se utilizan eficazmente para tareas operativas de diagnóstico médico en una institución oncológica especializada y con fines educativos.

reconocimiento de patrones

segmentación de objetos de interés

Imágenes medicas

1. Vlasov A.V., Tsapko I.V. Modificación del algoritmo Canny aplicado al procesamiento de imágenes radiográficas // Boletín de Ciencias de Siberia. – 2013. – N° 4(10). – págs. 120–127.

2. Gonzales R., Woods R. Procesamiento de imágenes digitales. – M.: Tekhnosfera, 2006. – P. 1072.

3. Kulyabichev Yu.P., Pivtoratskaya S.V. Enfoque estructural para la selección de características en sistemas de reconocimiento de patrones // Ciencias naturales y técnicas. – 2011. – Núm. 4. – P. 420–423.

4. Nikitin O.R., Pasechnik A.S. Contorneado y segmentación en tareas de diagnóstico automatizado de patologías // Métodos y dispositivos de transmisión y procesamiento de información. – 2009. – Núm. 11. – P. 300–309.

5. Canny J. Un enfoque computacional para la detección de bordes // Transacciones IEEE sobre análisis de patrones e inteligencia artificial. – 1986. – Núm. 6. – P.679–698.

6. DICOM – Modo de acceso: http://iachel.ru/ zob23tai-staihroe/ DICOM

7. Doronicheva A.V., Sokolov A.A., Savin S.Z. Uso del operador Sobel para la detección automática de bordes en imágenes médicas // Journal of Mathematics and System Science. – 2014. – Vol. 4, núm. 4 – págs. 257–260.

8. Jähne B., Scharr H., Körkel S. Principios de diseño de filtros // Manual de aplicaciones y visión por computadora. Prensa académica. – 1999. – 584 p.

Una de las áreas prioritarias para el desarrollo de la medicina en Rusia es la transición a tecnologías propias e innovadoras para el registro, almacenamiento, procesamiento y análisis electrónico de imágenes médicas de órganos y tejidos de pacientes. Esto se debe a un aumento en la cantidad de información presentada en forma de imágenes en el diagnóstico de enfermedades socialmente significativas, principalmente enfermedades oncológicas, cuyo tratamiento en la mayoría de los casos da resultados solo en las primeras etapas.

Al realizar el diagnóstico por imagen del estándar DICOM se determina un área patológica, y cuando se confirma su naturaleza patológica se resuelve el problema de clasificación: asignación a una de las especies conocidas o identificación de una nueva clase. Una dificultad obvia son los defectos en la imagen resultante, que son causados ​​​​tanto por las limitaciones físicas del equipo como por los límites permitidos de carga en el cuerpo humano. Como resultado, son las herramientas de software las que se encargan del procesamiento adicional de imágenes para aumentar su valor diagnóstico para el médico, presentarlas de una forma más conveniente y resaltar lo principal entre los grandes volúmenes de datos recibidos.

Propósito del estudio. Se están desarrollando métodos matemáticos para la segmentación de imágenes del estándar Dicom para problemas de reconocimiento de imágenes médicas. El diagnóstico de enfermedades depende de las calificaciones del investigador y requiere que realice una segmentación visual, y los métodos matemáticos para procesar imágenes rasterizadas son una herramienta para este diagnóstico. El procesamiento de imágenes médicas obtenidas mediante hardware sin preprocesar los datos gráficos en la mayoría de los casos produce resultados incorrectos. Esto se debe al hecho de que las imágenes iniciales eran de calidad insatisfactoria.

Material y métodos de investigación.

Como material de investigación se utilizan tomografías computarizadas de pacientes en una institución clínica especializada. Antes de analizar datos gráficos reales, es necesario preparar o preprocesar la imagen. Esta etapa resuelve el problema de mejorar la calidad visual de las imágenes médicas. Es útil dividir todo el proceso de procesamiento de imágenes en dos categorías amplias: métodos en los que tanto la entrada como la salida son imágenes; métodos donde los datos de entrada son imágenes y, como resultado del trabajo, los datos de salida son signos y atributos identificados en base a los datos de entrada. Este algoritmo no supone que cada uno de los procesos anteriores se aplique a la imagen. El registro de datos es el primero de los procesos, como se muestra en la Fig. 1.

Arroz. 1. Principales etapas del procesamiento digital de datos gráficos.

El registro puede ser bastante sencillo, como en el ejemplo donde la imagen original es digital. Normalmente, la etapa de registro de imágenes implica el preprocesamiento de los datos, por ejemplo, el aumento de escala de la imagen. La mejora de imágenes es una de las áreas del preprocesamiento más simples e impresionantes. Como regla general, los métodos para mejorar el contenido de información de las imágenes están determinados por la tarea de encontrar píxeles poco distinguibles o aumentar el contraste en la imagen original. Uno de los métodos comúnmente utilizados para mejorar el contenido de información de las imágenes es mejorar el contraste de la imagen, a medida que se realzan los límites del objeto de interés. Hay que tener en cuenta que mejorar la calidad de la imagen es, en cierta medida, una tarea subjetiva en el procesamiento de imágenes. La restauración de imágenes es una tarea también relacionada con la mejora de la calidad visual de los datos. Los métodos de restauración de imágenes se basan en modelos matemáticos y probabilísticos de deformación de datos gráficos. El procesamiento de imágenes como etapa debe separarse del concepto de procesamiento de imágenes como el proceso completo de cambiar la imagen y obtener algunos datos. La segmentación, o el proceso de extraer objetos de interés, divide una imagen en objetos o partes componentes. La extracción automatizada de objetos de interés es una tarea algo desafiante en el procesamiento de imágenes digitales. Una segmentación demasiado detallada dificulta el procesamiento de imágenes cuando se trata de resaltar objetos de interés. Pero una segmentación incorrecta o insuficientemente detallada en la mayoría de las tareas provoca errores en la etapa final del procesamiento de imágenes. La presentación y descripción de datos gráficos generalmente sigue a la etapa de resaltar objetos de interés en la imagen, cuya salida en la mayoría de los casos contiene píxeles sin procesar que forman los límites de la región o forman todos los píxeles de las regiones. Con tales opciones, es necesario convertir los datos a un formato accesible para el análisis por computadora. El reconocimiento de patrones es un proceso que asigna un identificador a un objeto (como "radio") en función de sus descripciones. Determinemos la relación entre la base de conocimientos y los módulos de procesamiento de imágenes. La base de conocimientos (es decir, la información sobre el área del problema) está de alguna manera cifrada dentro del propio sistema de procesamiento de imágenes. Este conocimiento puede ser bastante sencillo, como por ejemplo una indicación detallada de los objetos de la imagen donde debería estar el área de interés. Este conocimiento permite limitar el área de búsqueda. La base de conocimiento controla el funcionamiento de cada módulo de procesamiento y su interacción, como se muestra en la Fig. 1 con flechas dirigidas en dos direcciones entre los módulos y la base de conocimientos. Guardar e imprimir resultados a menudo también requiere el uso de técnicas especiales de procesamiento de imágenes. La desventaja de estos pasos de procesamiento de imágenes en un sistema de procesamiento de imágenes médicas es que los errores creados en las primeras etapas del procesamiento, por ejemplo al ingresar o resaltar objetos de interés en la imagen, pueden conducir al fracaso de una clasificación correcta. El procesamiento de datos se realiza de manera estrictamente secuencial y, en la mayoría de los casos, no existe la posibilidad de volver a etapas anteriores del procesamiento, incluso si previamente se obtuvieron resultados incorrectos. Los métodos en la etapa de preprocesamiento son bastante variados: identificar objetos de interés, escalarlos, corregir el color, ajustar la resolución espacial, cambiar el contraste, etc. Una de las acciones prioritarias en la etapa de preprocesamiento de la imagen es ajustar el contraste y el brillo. Utilizando máscaras adecuadas, es posible combinar dos etapas (filtrado y preprocesamiento) para aumentar la velocidad del análisis de datos. El resultado final del análisis de imágenes en la mayoría de los casos está determinado por el nivel de calidad de la segmentación, y el grado de detalle de los objetos de interés depende de la tarea específica en cuestión. Por este motivo, no se ha desarrollado un método o algoritmo independiente que sea adecuado para resolver todos los problemas de identificación de objetos de interés. Delinear áreas tiene como objetivo resaltar objetos con propiedades específicas en las imágenes. Estos objetos, por regla general, corresponden a objetos o sus partes que los diagnosticadores etiquetan. El resultado del contorno es una imagen binaria o jerárquica (multifase), donde cada nivel de la imagen corresponde a una clase específica de objetos seleccionados. La segmentación es un paso complejo en el procesamiento y análisis de datos médicos de tejidos biológicos, ya que es necesario delimitar áreas que corresponden a diferentes objetos o estructuras a niveles histológicos: células, orgánulos, artefactos, etc. Esto se explica por la alta variabilidad de sus parámetros, el bajo nivel de contraste de las imágenes analizadas y la compleja relación geométrica de los objetos. En la mayoría de los casos, para obtener el resultado más eficaz, es necesario utilizar constantemente diferentes métodos para segmentar los objetos de interés en la imagen. Por ejemplo, para determinar los límites de un objeto de interés, se utiliza el método del gradiente morfológico, después del cual se lleva a cabo la segmentación del umbral en áreas que son adecuadas para diferencias menores en las características de brillo. Para procesar imágenes en las que áreas homogéneas no relacionadas difieren en brillo promedio, se eligió el método de segmentación Canny; se llevó a cabo una investigación sobre un ejemplo clínico. Al reconocer imágenes clínicas reales, el modelado es poco aplicable. La experiencia práctica y las opiniones de expertos sobre los resultados del análisis de imágenes son de gran importancia. Para la imagen de prueba se seleccionó una imagen de tomografía computarizada, donde el objeto de interés mostrado en la Fig. 1 está claramente presente. 2.

Arroz. 2. Imagen de tomografía computarizada con el objeto de interés.

Para implementar la segmentación, utilizamos el método Canny. Este enfoque es resistente al ruido y en la mayoría de los casos muestra mejores resultados en comparación con otros métodos. El Método Canny consta de cuatro pasos:

1) preprocesamiento: difuminar la imagen (reducimos la dispersión del ruido aditivo);

2) diferenciación de la imagen borrosa y posterior cálculo de los valores de gradiente en las direcciones xey;

3) implementación de supresión no máxima en la imagen;

4) procesamiento de imágenes de umbral.

En la primera etapa del algoritmo Canny, la imagen se suaviza utilizando una máscara con un filtro gaussiano. La ecuación de distribución gaussiana en N dimensiones tiene la forma

o en el caso especial de dos dimensiones

(2)

donde r es el radio de desenfoque, r 2 = u 2 + v 2 ; σ es la desviación estándar de la distribución gaussiana.

Si utilizamos 2 dimensiones, entonces esta fórmula especifica la superficie de círculos concéntricos que tienen una distribución gaussiana desde el punto central. Los píxeles con una distribución distinta de cero se utilizan para especificar la matriz de convolución que se aplicará a la imagen original. El valor de cada píxel se convierte en un promedio ponderado de la vecindad. El valor del píxel inicial toma el peso máximo (tiene el valor gaussiano máximo) y los píxeles vecinos toman el peso mínimo, dependiendo de su distancia. En teoría, la distribución en cada punto de la imagen debe ser distinta de cero, lo que sigue el cálculo de los pesos de cada píxel de la imagen. Pero en la práctica, al calcular una aproximación discreta de la función gaussiana, los píxeles a una distancia > 3σ no se tienen en cuenta, ya que es bastante pequeña. Por tanto, el programa de procesamiento de imágenes necesita calcular la matriz × para garantizar que la aproximación de la distribución gaussiana sea suficientemente precisa.

Resultados de la investigación y discusión.

El resultado del filtro gaussiano con datos iguales a 5 para el tamaño de la máscara gaussiana y 1,9 para el valor del parámetro σ, la desviación estándar de la distribución gaussiana, se presenta en la Fig. 3. El siguiente paso es buscar el gradiente de la región de interés convolucionando la imagen suavizada con la derivada de la función gaussiana en las direcciones vertical y horizontal del vector.

Usemos el operador de Sobel para resolver este problema. El proceso se basa en simplemente mover la máscara del filtro de un píxel a otro de la imagen. En cada píxel (x, y), la respuesta del filtro se calcula a partir de conexiones predefinidas. Esto da como resultado la selección inicial de bordes. El siguiente paso es comparar cada píxel con sus vecinos a lo largo de la dirección del gradiente y calcular el máximo local. La información sobre la dirección del gradiente es necesaria para eliminar píxeles cerca del límite sin romper el límite cerca de los máximos locales del gradiente, lo que significa que los píxeles del límite determinan los puntos en los que se alcanza el máximo local del gradiente en la dirección del vector gradiente. Este enfoque puede reducir significativamente la detección de bordes falsos y proporciona un grosor de un píxel del borde del objeto, lo que se confirma empíricamente mediante la implementación de software del algoritmo para segmentar un corte de la cavidad abdominal en una imagen de tomografía computarizada, que se presenta a continuación en Higo. 4.

El siguiente paso es utilizar un umbral para determinar dónde está el límite en cada píxel determinado de la imagen. Cuanto más bajo sea el umbral, más bordes habrá en el objeto de interés, pero más susceptible será el resultado al ruido y a delinear datos de imagen extraños. Un umbral alto puede ignorar los bordes débiles de un área o quedar bordeado por varias áreas. El contorno de límites aplica dos umbrales de filtrado: si el valor del píxel está por encima del límite superior, toma el valor máximo (el límite se considera confiable), si está por debajo de él, el píxel se suprime, los puntos con un valor que se encuentran dentro del rango entre los umbrales tomar un valor promedio fijo. Un píxel se une a un grupo si lo toca en una de ocho direcciones. Entre las ventajas del método Canny está que durante el procesamiento de imágenes se adapta a las características de la segmentación. Esto se logra introduciendo un umbral de dos niveles para eliminar datos redundantes. Se definen dos niveles de umbral, el superior - p alto y el inferior - p bajo, donde p alto > p bajo. Los valores de píxeles por encima del valor alto de p se designan como correspondientes al límite (Fig. 5).

Arroz. 3. Aplicar un filtro gaussiano en una tomografía computarizada con un objeto de interés

Arroz. 4. Supresión de no máximos en la imagen segmentada.

Arroz. 5. Aplicación del algoritmo de segmentación Canny con diferentes niveles de umbral

La práctica muestra que hay un cierto intervalo en la escala de niveles de umbral de sensibilidad, en el cual el valor del área del objeto de interés prácticamente no cambia, pero al mismo tiempo hay un cierto nivel de umbral, después del cual " Se nota el fracaso” del método de delineación y el resultado de la identificación de áreas de interés se vuelve incierto. Esta es una deficiencia del algoritmo que puede compensarse combinando el algoritmo Canny con la transformada de Hough para encontrar círculos. La combinación de algoritmos le permite identificar claramente los objetos de estudio, así como eliminar espacios en los contornos.

Conclusiones

De esta forma se resuelve el problema de formular características típicas de objetos patológicos en imágenes médicas, lo que permitirá en el futuro realizar análisis operativos de datos sobre patologías específicas. Los parámetros importantes para determinar la evaluación de la calidad de la segmentación son las probabilidades de falsas alarmas y fallos. Estos parámetros determinan la aplicación de la automatización del método de análisis. La segmentación es una de las más importantes a la hora de resolver el problema de clasificación y reconocimiento de objetos en imágenes. Los métodos de contorneado basados ​​​​en la segmentación de los límites de áreas (Sobel, Canny, Prewit, Laplassiano) han sido bastante bien investigados y aplicados. Este enfoque está determinado por el hecho de que la concentración de la atención de una persona al analizar imágenes a menudo se centra en los límites entre zonas que tienen un brillo más o menos uniforme. En base a esto, los contornos a menudo sirven como base para definir diversas características para interpretar imágenes y objetos en ellos. La tarea principal de los algoritmos para segmentar áreas de interés es la construcción de una imagen binaria que contenga áreas estructurales cerradas de datos en la imagen. En cuanto a las imágenes médicas, estas áreas son los límites de órganos, venas, MCC y tumores. Los principios desarrollados del análisis automatizado por computadora de imágenes médicas se utilizan eficazmente tanto para tareas operativas de diagnóstico médico de una institución oncológica especializada como para fines educativos.

Investigado con el apoyo del programa Lejano Oriente, subvención No. 15-I-4-014o.

Revisores:

Kosykh N.E., Doctor en Ciencias Médicas, Profesor, Investigador Jefe, Centro de Computación, Rama del Lejano Oriente de la Academia de Ciencias de Rusia, Khabarovsk;

Levkova E.A., Doctora en Ciencias Médicas, Profesora, Universidad Estatal de Transporte del Lejano Oriente, Khabarovsk.

Enlace bibliográfico

Doronicheva A.V., Savin S.Z. MÉTODO DE SEGMENTACIÓN DE IMÁGENES MÉDICAS // Investigación Fundamental. – 2015. – N° 5-2. – págs. 294-298;
URL: http://fundamental-research.ru/ru/article/view?id=38210 (fecha de acceso: 06/04/2019). Llamamos su atención sobre las revistas publicadas por la editorial "Academia de Ciencias Naturales".


Arriba