Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

bwskel

Reducir todos los objetos a líneas en una imagen 2D binaria o un volumen 3D binario

Descripción

ejemplo

B = bwskel(A) reduce todos los objetos en la imagen 2D binaria A a líneas curvas de 1 píxel de ancho sin cambiar la estructura esencial de la imagen. Este proceso, conocido como esqueletización, extrae la línea central a la vez que mantiene la topología y el número de Euler (también conocido como la característica de Euler) de los objetos.

ejemplo

B = bwskel(V) devuelve el esqueleto de un volumen 3D binario.

B = bwskel(___,'MinBranchLength',N) especifica la longitud mínima de ramificación N del esqueleto. bwskel quita (elimina) todas las ramificaciones más cortas que la longitud especificada. bwskel calcula la longitud como el número de píxeles en una ramificación que use una conectividad 8 para 2D y una conectividad 26 para 3D.

Ejemplos

contraer todo

Lea una imagen 2D en escala de grises en el espacio de trabajo. Muestre la imagen. Los objetos de interés son hilos oscuros sobre un fondo claro.

I = imread('threads.png');
imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

La esqueletización requiere una imagen binaria en la que los píxeles en primer plano son 1 (blancos) y el fondo es 0 (negro). Para hacer que la imagen original sea adecuada para esqueletizarla, tome el complemento de la imagen de modo que los objetos sean claros y el fondo oscuro. Después, binarice el resultado.

Icomplement = imcomplement(I);
BW = imbinarize(Icomplement);
imshow(BW)

Figure contains an axes object. The axes object contains an object of type image.

Realice la esqueletización de la imagen binaria mediante bwskel.

out = bwskel(BW);

Muestre el esqueleto sobre la imagen original utilizando la función labeloverlay. El esqueleto aparece como una línea azul de 1 píxel de ancho por encima de los hilos negros.

imshow(labeloverlay(I,out,'Transparency',0))

Figure contains an axes object. The axes object contains an object of type image.

Elimine los pequeños píxeles auxiliares que aparecen en el esqueleto y visualice el resultado. Se elimina una ramificación corta de un hilo cerca del centro de la imagen.

out2 = bwskel(BW,'MinBranchLength',15);
imshow(labeloverlay(I,out2,'Transparency',0))

Figure contains an axes object. The axes object contains an object of type image.

Lea una imagen binaria en el espacio de trabajo.

BW1 = imread('circbw.tif');

Esqueletice los objetos en la imagen utilizando la función bwskel.

BW2 = bwskel(BW1);

Visualice la imagen original y la imagen esqueletizada, una al lado de la otra.

montage({BW1,BW2},'BackgroundColor','blue','BorderSize',5)

Figure contains an axes object. The axes object contains an object of type image.

Cargue un conjunto de datos de volumétricos en el espacio de trabajo. El nombre del conjunto de datos es spiralVol. Muestre el volumen utilizando volshow.

load spiralVol.mat
volshow(spiralVol);

Convierta el conjunto de datos spiralVol en un formato binario, que es el que requiere la función bwskel.

spiralVolLogical = imbinarize(spiralVol);

Esqueletice la forma de espiral en el conjunto de datos. Muestre el volumen esqueletizado con volshow.

spiralVolSkel = bwskel(spiralVolLogical);
volshow(spiralVolSkel);

.

Argumentos de entrada

contraer todo

Imagen binaria, especificada como matriz lógica 2D.

Tipos de datos: logical

Volumen 3D binario, especificado como arreglo lógico 3D.

Tipos de datos: logical

Longitud mínima de la ramificación, especificada como entero no negativo. bwskel elimina ramificaciones más cortas que N. De forma predeterminada, bwskel no elimina ramificaciones.

Argumentos de salida

contraer todo

Volumen o imagen esqueletizada, devueltos como matriz lógica 2D o arreglo lógico 3D del mismo tamaño que la imagen o el volumen de entrada.

Sugerencias

  • Aunque tanto bwskel como bwmorph pueden esqueletizar imágenes 2D, puede obtener resultados diferentes cuando usa bwmorph que cuando utiliza bwskel. Debido a que usan algoritmos diferentes, la función bwskel usa una conectividad de tipo 4 con imágenes 2D y bwmorph usa conectividad tipo 8.

  • bwskel asume que los objetos en primer plano en la imagen binaria son blancos (true lógica). Si su imagen tiene un fondo blanco y objetos negros, use el complemento de su imagen como la entrada de bwskel. Se puede calcular el complemento mediante imcomplement.

Algoritmos

  • La función bwskel utiliza la transformada de eje medio.

Referencias

[1] Ta-Chih Lee, Rangasami L. Kashyap and Chong-Nam Chu. Building skeleton models via 3-D medial surface/axis thinning algorithms. Computer Vision, Graphics, and Image Processing, 56(6):462-478, 1994.

[2] Kerschnitzki, M, Kollmannsberger, P, Burghammer, M. et al. Architecture of the osteocyte network correlates with bone material quality. Journal of Bone and Mineral Research, 28(8):1837-1845, 2013.

Capacidades ampliadas

Historial de versiones

Introducido en R2018a

expandir todo