Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Detectar célula mediante detección de bordes y morfología

Este ejemplo muestra cómo detectar una celda mediante la detección de bordes y la morfología básica. Un objeto se puede detectar fácilmente en una imagen si el objeto tiene suficiente contraste con el fondo.

Paso 1: leer imagen

Leer en la imagen, que es una imagen de una célula de cáncer de próstata.cell.tif Hay dos celdas presentes en esta imagen, pero solo se puede ver una celda en su totalidad. El objetivo es detectar, o segmentar, la celda que es completamente visible.

I = imread('cell.tif'); imshow(I) title('Original Image'); text(size(I,2),size(I,1)+15, ...     'Image courtesy of Alan Partin', ...     'FontSize',7,'HorizontalAlignment','right'); text(size(I,2),size(I,1)+25, ....     'Johns Hopkins University', ...     'FontSize',7,'HorizontalAlignment','right');

Paso 2: detectar celdas enteras

El objeto que se segmentó difiere enormemente en contraste con la imagen de fondo. Los operadores que calculan el degradado de una imagen pueden detectar cambios en el contraste. Para crear una máscara binaria que contenga la celda segmentada, calcule la imagen de degradado y aplique un umbral.

Utilice y el operador Sobel para calcular el valor de umbral.edge Ajuste el valor de umbral y vuelva a utilizarlo para obtener una máscara binaria que contenga la celda segmentada.edge

[~,threshold] = edge(I,'sobel'); fudgeFactor = 0.5; BWs = edge(I,'sobel',threshold * fudgeFactor);

Muestra la máscara de degradado binaria resultante.

imshow(BWs) title('Binary Gradient Mask')

Paso 3: dilatar la imagen

La máscara de degradado binaria muestra líneas de alto contraste en la imagen. Estas líneas no delinean muy bien el contorno del objeto de interés. En comparación con la imagen original, hay huecos en las líneas que rodean el objeto en la máscara de degradado. Estos huecos lineales desaparecerán si la imagen de Sobel se dilató utilizando elementos de estructuración lineales. Cree dos elementos de estructuración lineal perpindicular mediante la función.strel

se90 = strel('line',3,90); se0 = strel('line',3,0);

Dilatar la máscara de degradado binaria utilizando el elemento de estructuración vertical seguido del elemento de estructuración horizontal. La función Diena la imagen.imdilate

BWsdil = imdilate(BWs,[se90 se0]); imshow(BWsdil) title('Dilated Gradient Mask')

Paso 4: llene las brechas interiores

La máscara de degradado dilatado muestra el contorno de la celda bastante bien, pero todavía hay agujeros en el interior de la celda. Para rellenar estos agujeros, utilice la función.imfill

BWdfill = imfill(BWsdil,'holes'); imshow(BWdfill) title('Binary Image with Filled Holes')

Paso 5: eliminar objetos conectados en el borde

La celda de interés se ha segmentado con éxito, pero no es el único objeto que se ha encontrado. Cualquier objeto que esté conectado al borde de la imagen se puede eliminar utilizando la función.imclearborder Para eliminar conexiones diagonales, establezca la conectividad en la función.imclearborder4

BWnobord = imclearborder(BWdfill,4); imshow(BWnobord) title('Cleared Border Image')

Paso 6: suavizar el objeto

Finalmente, para hacer que el objeto segmentado parezca natural, suavizar el objeto erosionando la imagen dos veces con un elemento de estructuración de diamantes. Cree el elemento de estructuración de diamantes utilizando la función.strel

seD = strel('diamond',1); BWfinal = imerode(BWnobord,seD); BWfinal = imerode(BWfinal,seD); imshow(BWfinal) title('Segmented Image');

Paso 7: visualice la segmentación

Puede utilizar la función para mostrar la máscara sobre la imagen original.labeloverlay

imshow(labeloverlay(I,BWfinal)) title('Mask Over Original Image')

Un método alternativo para mostrar el objeto segmentado es dibujar un contorno alrededor de la celda segmentada. Dibuje un contorno utilizando la función.bwperim

BWoutline = bwperim(BWfinal); Segout = I;  Segout(BWoutline) = 255;  imshow(Segout) title('Outlined Original Image')

Consulte también

| | | | | |

Temas relacionados