Main Content

bwboundaries

Trazar los límites de las regiones de una imagen binaria

Descripción

ejemplo

B = bwboundaries(BW) traza los límites exteriores de los objetos, así como los límites de los huecos que hay dentro de estos objetos, de la imagen binaria BW. Además, bwboundaries desciende hasta los objetos más alejados (principales) y traza sus secundarios (objetos completamente rodeados por los principales). Devuelve B, un arreglo de celdas de las ubicaciones de píxeles de límites.

B = bwboundaries(BW,conn) traza los límites exteriores de los objetos, donde conn especifica la conectividad de uso cuando se trazan límites principales y secundarios.

ejemplo

B = bwboundaries(BW,conn,options) traza los límites exteriores de los objetos, donde options es 'holes' o 'noholes', especificando si desea incluir los límites de los huecos que hay dentro de otros objetos.

ejemplo

[B,L]= bwboundaries(___) devuelve una matriz de etiquetas L, en la que se etiquetan objetos y huecos.

ejemplo

[B,L,n,A] = bwboundaries(___) devuelve n, el número de objetos encontrados, y A, una matriz de adyacencia.

Ejemplos

contraer todo

Lea una imagen en escala de grises en el espacio de trabajo.

I = imread('rice.png');

Convierta la imagen en escala de grises en una imagen binaria utilizando el umbral local adaptativo.

BW = imbinarize(I);

Calcule los límites de las regiones de la imagen y superponga los límites en la imagen.

[B,L] = bwboundaries(BW,'noholes');
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
   boundary = B{k};
   plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end

Figure contains an axes object. The axes object contains 152 objects of type image, line.

Lea una imagen binaria en el espacio de trabajo.

BW = imread('blobs.png');

Calcule los límites de las regiones de la imagen.

[B,L,N,A] = bwboundaries(BW);

Muestre la imagen con los límites superpuestos. Añada el número de la región al lado de cada límite (según la matriz de etiquetas). Utilice la herramienta zoom para leer cada etiqueta.

imshow(BW); hold on;
colors=['b' 'g' 'r' 'c' 'm' 'y'];
for k=1:length(B),
  boundary = B{k};
  cidx = mod(k,length(colors))+1;
  plot(boundary(:,2), boundary(:,1),...
       colors(cidx),'LineWidth',2);

  %randomize text position for better visibility
  rndRow = ceil(length(boundary)/(mod(rand*k,7)+1));
  col = boundary(rndRow,2); row = boundary(rndRow,1);
  h = text(col+1, row-1, num2str(L(row,col)));
  set(h,'Color',colors(cidx),'FontSize',14,'FontWeight','bold');
end

Figure contains an axes object. The axes object contains 79 objects of type image, line, text.

Muestre la matriz de adyacencia utilizando la función spy.

figure
spy(A);

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

Lea una imagen binaria en el espacio de trabajo.

BW = imread('blobs.png');

Calcule los límites.

[B,L,N] = bwboundaries(BW);

Muestre los límites de objetos en rojo y los límites de huecos en verde.

imshow(BW); hold on;
for k=1:length(B),
   boundary = B{k};
   if(k > N)
     plot(boundary(:,2), boundary(:,1), 'g','LineWidth',2);
   else
     plot(boundary(:,2), boundary(:,1), 'r','LineWidth',2);
   end
end

Figure contains an axes object. The axes object contains 40 objects of type image, line.

Lea una imagen en el espacio de trabajo.

BW = imread('blobs.png');

Muestre los límites principales en rojo y sus huecos en verde.

[B,L,N,A] = bwboundaries(BW); 
figure; imshow(BW); hold on; 
% Loop through object boundaries  
for k = 1:N 
    % Boundary k is the parent of a hole if the k-th column 
    % of the adjacency matrix A contains a non-zero element 
    if (nnz(A(:,k)) > 0) 
        boundary = B{k}; 
        plot(boundary(:,2),... 
            boundary(:,1),'r','LineWidth',2); 
        % Loop through the children of boundary k 
        for l = find(A(:,k))' 
            boundary = B{l}; 
            plot(boundary(:,2),... 
                boundary(:,1),'g','LineWidth',2); 
        end 
    end 
end

Figure contains an axes object. The axes object contains 23 objects of type image, line.

Argumentos de entrada

contraer todo

Imagen de entrada binaria, especificada como matriz numérica o lógica 2D. BW debe ser una imagen binaria donde los píxeles distintos de cero pertenecen a un objeto y los píxeles cuyo valor sea cero constituyen el fondo. La siguiente figura ilustra estos componentes.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Conectividad de píxeles, especificada como uno de los siguientes valores de la tabla.

Valor

Significado

Conectividades bidimensionales

4

Los píxeles se consideran conectados si comparten bordes. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de la dirección horizontal o vertical.

Center pixel connected to four pixels

El píxel actual se muestra en gris.

8

Los píxeles se consideran conectados si comparten bordes o vértices. Dos píxeles contiguos forman parte del mismo objeto si ambos se encuentran y están conectados a lo largo de la dirección horizontal, vertical o diagonal.

Center pixel connected to eight pixels

El píxel actual se muestra en gris.

Tipos de datos: double

Determine si desea buscar los límites principales y secundarios, especificados como alguno de los siguientes:

Opción

Significado

'holes'

Búsqueda de límites de objeto y hueco. Esta es la opción por defecto.

'noholes'

Búsqueda solo de límites de objeto (principal y secundario). Esta opción puede ofrecer un mejor rendimiento.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Coordenadas de fila y columna de los píxeles de límites, devueltas como arreglo de celdas de 1 por p, donde p es el número de objetos y huecos. Cada una de las celdas del arreglo de celdas contiene una matriz de 2 por q. Cada fila de la matriz contiene las coordenadas de fila y columna de un píxel de límites. q es el número de los píxeles de límites para la región correspondiente.

Matriz de etiquetas de regiones contiguas, devuelta como matriz 2D de enteros no negativos. La k-ésima región incluye todos los elementos de L que tienen el valor k. El número de objetos y huecos representados por L es igual a max(L(:)). Los elementos de L cuyo valor sea cero constituyen el fondo.

Tipos de datos: double

Número de objetos encontrados, devuelto como entero no negativo.

Tipos de datos: double

Dependencias principales/secundarias entre límites y huecos, devueltas como matriz cuadrada, dispersa, lógica de clase double con longitud de lado max(L(:)). Las filas y columnas de A corresponden a las posiciones de los límites almacenados en B. Las primeras n celdas de B son los límites de los objetos. A(i,j)=1 significa que el objeto i es un secundario del objeto j. Los límites que delimitan o que son delimitados por el k-ésimo límite se pueden encontrar utilizando A como sigue:

enclosing_boundary  = find(A(m,:));
enclosed_boundaries = find(A(:,m));

Algoritmos

La función bwboundaries implementa el algoritmo de trazado de Moore-Neighbor, modificado por los criterios de detención de Jacob. Esta función se basa en la función boundaries presentada en la primera edición de Digital Image Processing Using MATLAB, de González, R. C., R. E. Woods, y S. L. Eddins, Nueva Jersey, Pearson Prentice Hall, 2004.

Referencias

[1] Gonzalez, R. C., R. E. Woods, and S. L. Eddins, Digital Image Processing Using MATLAB, New Jersey, Pearson Prentice Hall, 2004.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

| | |