Main Content

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élulas mediante detección y morfología de bordes

En este ejemplo se 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 del fondo.

Paso 1: Leer imagen

Lea en la imagen, que es una imagen de una célula de cáncer de próstata.cell.tif Dos celdas están 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 toda la célula

El objeto que se va a segmentar difiere mucho en contraste de la imagen de fondo. Los cambios de contraste pueden ser detectados por operadores que calculan el degradado de una imagen. 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 utilícelo de nuevo 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);

Mostrar la máscara de degradado binario resultante.

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

Paso 3: Dilatar la imagen

La máscara de degradado binario muestra líneas de alto contraste en la imagen. Estas líneas no delinean del todo 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 dilata mediante elementos de estructuración lineal. 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 binario utilizando el elemento de estructuración vertical seguido por el elemento de estructuración horizontal. La función dilata la imagen.imdilate

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

Paso 4: Llenar brechas interiores

La máscara de degradado dilatada muestra el contorno de la celda muy 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: Retire los objetos conectados en el borde

La celda de interés se ha segmentado correctamente, pero no es el único objeto que se ha encontrado. Los objetos que están conectados al borde de la imagen se pueden quitar mediante la función.imclearborder Para eliminar conexiones diagonales, establezca la conectividad de la función en .imclearborder4

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

Paso 6: Suavizar el objeto

Por último, para que el objeto segmentado se vea natural, suaviza el objeto erosionando la imagen dos veces con un elemento estructurante de diamante. 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: Visualizar 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