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.
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.
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.bwtraceboundary
bwboundaries
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.bwboundaries
imfill
bwboundaries
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
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