Trazado de contorno en imágenes
Trazar contornos de objetos en imágenes
En este ejemplo se muestra cómo trazar el contorno de un solo objeto y de todos los objetos de una imagen binaria.
Lea y muestre una imagen.
I = imread("coins.png");
imshow(I)
Convierta la imagen a una imagen binaria. Las funciones bwtraceboundary y bwboundaries solo funcionan con imágenes binarias.
BW = imbinarize(I); imshow(BW)

Contorno de un solo objeto
Para trazar el contorno de un solo objeto en la imagen binaria, primero determine las coordenadas de fila y columna de un píxel del borde del objeto. Para este ejemplo, seleccione una coordenada de columna. A continuación, el ejemplo calcula la coordenada de fila del objeto que está más arriba en esa columna.
numCols = size(BW,2);
col =
60;
row = find(BW(:,col),1)row = 27
Para trazar el contorno desde el punto especificado, utilice la función bwtraceboundary. Como argumentos requeridos, debe especificar una imagen binaria, las coordenadas de fila y columna del punto de inicio y la dirección del primer paso. En el ejemplo se especifica norte ("N").
boundary = bwtraceboundary(BW,[row, col],"N");Represente el borde sobre la imagen en escala de grises original.
imshow(I) hold on plot(boundary(:,2),boundary(:,1),"g",LineWidth=3);

Contorno de todos los objetos
En la imagen binaria usada en este ejemplo, algunas de las monedas contienen zonas negras que la función bwboundaries interpreta como objetos independientes. Para garantizar que bwboundaries trace solo el exterior de las monedas, rellene el área interior de cada moneda con la función imfill.
BW_filled = imfill(BW,"holes");Trace los contornos de todas las monedas de la imagen usando la función bwboundaries. bwboundaries devuelve un arreglo de celdas donde cada celda contiene las coordenadas de fila y columna para un objeto de la imagen.
boundaries = bwboundaries(BW_filled);
Represente los bordes de todas las monedas sobre la imagen en escala de grises original.
for k=1:10 b = boundaries{k}; plot(b(:,2),b(:,1),"g",LineWidth=3); end

Seleccionar la dirección del primer paso para el trazado
Para determinados objetos, debe tener cuidado al seleccionar el píxel del borde que elige como punto inicial y la dirección escogida para el primer paso (como norte o sur).
Por ejemplo, si un objeto contiene un hueco y selecciona un píxel de una parte fina del objeto como píxel inicial, puede trazar el borde exterior del objeto o el borde interior del hueco, dependiendo de la dirección que elija para el primer paso. Para objetos rellenos, la dirección que elija para el parámetro de primer paso no es tan importante.
Para ilustrarlo, esta figura muestra cómo la dirección del primer paso afecta al límite trazado cuando el píxel inicial está en un límite que tiene un píxel de ancho. La conectividad es el valor predeterminado de 8. Un primer paso en dirección norte hace que el límite se trace en el sentido de las agujas del reloj a lo largo del borde externo del objeto, mientras que un primer paso en dirección sur hace que el límite se trace en sentido contrario a las agujas del reloj a lo largo del borde interno del objeto.
Impacto de la dirección del primer paso en el trazado de contornos
Consulte también
bwboundaries | bwtraceboundary | visboundaries | edge