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.

Rastreo de contorno en imágenes

La caja de herramientas incluye dos funciones que puede utilizar para encontrar los límites de los objetos en una imagen binaria:

La función devuelve las coordenadas de fila y columna de todos los píxeles del borde de un objeto de una imagen.bwtraceboundary Debe especificar la ubicación de un píxel de borde en el objeto como punto de partida para el seguimiento.

La función devuelve las coordenadas de fila y columna de los píxeles del borde de todos los objetos de una imagen.bwboundaries

Para ambas funciones, los píxeles distintos de cero de la imagen binaria pertenecen a un objeto y los píxeles con el valor 0 (cero) constituyen el fondo.

Rastrear límites de objetos en imágenes

Este ejemplo muestra cómo rastrear el borde de un objeto en una imagen binaria usando.bwtraceboundary A continuación, utilizando, el ejemplo traza los bordes de todos los objetos de la imagen.bwboundaries

Leer la imagen y mostrarla.

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

Convierta la imagen a una imagen binaria. y solo funcionan con imágenes binarias.bwtraceboundarybwboundaries

BW = im2bw(I); imshow(BW)

Determine las coordenadas de fila y columna de un píxel en el borde del objeto que desea trazar. utiliza este punto como la ubicación inicial para el rastreo de contorno.bwboundary

dim = size(BW)
dim = 1×2

   246   300

col = round(dim(2)/2)-90; row = min(find(BW(:,col)))
row = 27 

Llamada para trazar el contorno desde el punto especificado.bwtraceboundary Como argumentos requeridos, debe especificar una imagen binaria, las coordenadas de fila y columna del punto inicial y la dirección del primer paso. El ejemplo especifica North ().'N'

boundary = bwtraceboundary(BW,[row, col],'N');

Visualice la imagen en escala de grises original y utilice las coordenadas devueltas para trazar el borde de la imagen.bwtraceboundary

imshow(I) hold on; plot(boundary(:,2),boundary(:,1),'g','LineWidth',3);

Para trazar los límites de todas las monedas de la imagen, utilice la función.bwboundaries De forma predeterminada, busca los límites de todos los objetos de una imagen, incluidos los objetos dentro de otros objetos.bwboundaries En la imagen binaria utilizada en este ejemplo, algunas de las monedas contienen áreas negras que se interpretan como objetos separados.bwboundaries Para asegurarse de que sólo rastrea las monedas, utilizar para llenar el área dentro de cada moneda. Devuelve una matriz de celdas, donde cada celda contiene las coordenadas de fila/columna para un objeto de la imagen.bwboundariesimfillbwboundaries

BW_filled = imfill(BW,'holes'); boundaries = bwboundaries(BW_filled);

Trace los bordes de todas las monedas en la imagen de escala de grises original utilizando las coordenadas devueltas.bwboundaries

for k=1:10    b = boundaries{k};    plot(b(:,2),b(:,1),'g','LineWidth',3); end

Seleccione primer paso y dirección para el seguimiento

Para ciertos objetos, debe tener cuidado al seleccionar el píxel del borde que elija como punto de partida y la dirección que elija para el primer parámetro de paso (norte, sur, etc.).

Por ejemplo, si un objeto contiene un taladro y selecciona un píxel en una parte delgada del objeto como píxel inicial, puede trazar el borde exterior del objeto o el borde interior del taladro, en función de la dirección que elija para el primer paso. Para los objetos rellenos, la dirección que seleccione para el primer parámetro de paso no es tan importante.

Para ilustrar, esta figura muestra los píxeles rastreados cuando el píxel inicial está en una parte delgada del objeto y el primer paso se establece en Norte y sur. La conectividad se fija a 8 (el valor por defecto).

Impacto de los parámetros de primer paso y dirección en el seguimiento de límites