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.

Seguimiento de límites 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 en el 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 de 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.

Trazar límites de objetos en imágenes

En este ejemplo se muestra cómo rastrear el borde de un objeto en una imagen binaria mediante .bwtraceboundary A continuación, utilizando , el ejemplo rastrea los bordes de todos los objetos de la imagen.bwboundaries

Lea la imagen y muésela.

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

Convierta la imagen en una imagen binaria. y sólo trabajar 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 rastrear. utiliza este punto como ubicación inicial para el seguimiento de límites.bwboundary

dim = size(BW)
dim = 1×2

   246   300

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

Llamada para rastrear el límite desde el punto especificado.bwtraceboundary Como argumentos necesarios, 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');

Muestre 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 interpretan como objetos separados.bwboundaries Para asegurarse de que sólo rastrea las monedas, utilice 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);

Trazar los bordes de todas las monedas en la imagen en escala de grises original utilizando las coordenadas devueltas por .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 de borde que elija como punto de partida y la dirección que elija para el parámetro de primer 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, dependiendo de la dirección que elija para el primer paso. Para los objetos rellenos, la dirección que seleccione para el parámetro de primer paso no es tan importante.

Para ilustrar, esta figura muestra los píxeles que se trazan 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 establece en 8 (valor predeterminado).

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