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.

bwboundaries

Trace límites de región en la imagen binaria

Descripción

ejemplo

B = bwboundaries(BW) traza los límites exteriores de los objetos, así como los límites de los agujeros dentro de estos objetos, en la imagen binaria. también desciende a los objetos más exteriores (padres) y traza a sus hijos (objetos completamente encerrados por los padres).BWbwboundaries Devuelve, una matriz de celdas de ubicaciones de píxeles de contorno.B

B = bwboundaries(BW,conn) traza los límites exteriores de los objetos, donde especifica la conectividad que se utilizará al trazar los límites primarios y secundarios.conn

ejemplo

B = bwboundaries(BW,conn,options) traza los contornos exteriores de los objetos, donde está o bien, especificando si desea incluir los contornos de los taladros dentro de otros objetos.options'holes''noholes'

ejemplo

[B,L]= bwboundaries(___) Devuelve una matriz de etiquetas donde se etiquetan los objetos y los taladros.L

ejemplo

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

Ejemplos

contraer todo

Leer la imagen en escala de grises en el espacio de trabajo.

I = imread('rice.png');

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

BW = imbinarize(I);

Calcule los límites de las regiones en la imagen y superponga los límites de 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

Leer la 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);

Visualice la imagen con los límites superpuestos. Agregue el número de región junto a cada límite (basado en la matriz de etiquetas). Utilice la herramienta de zoom para leer etiquetas individuales.

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

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

figure spy(A);

Leer la imagen binaria en el espacio de trabajo.

BW = imread('blobs.png');

Calcule los límites.

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

Visualice los contornos de los objetos en los contornos rojo y de taladro 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

Leer la imagen en el espacio de trabajo.

BW = imread('blobs.png');

Visualice los contornos primarios en rojo y sus agujeros 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

Argumentos de entrada

contraer todo

Imagen de entrada binaria, especificada como una matriz lógica o numérica 2-D. debe ser una imagen binaria en la que los píxeles distintos de cero pertenezcan a un objeto y los píxeles de valor cero constituyan el fondo.BW La figura siguiente 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 valores de esta tabla.

Valor

Significado

Two-Dimensional Connectivities

4-connected

Los píxeles se conectan si los bordes se tocan. Dos píxeles adyacentes forman parte del mismo objeto si están conectados y se conectan a lo largo de la dirección horizontal o vertical.

8-connected

Los píxeles se conectan si los bordes o las esquinas se tocan. Dos píxeles adyacentes forman parte del mismo objeto si están conectados y se conectan a lo largo de la dirección horizontal, vertical o diagonal.

Tipos de datos: double

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

Opción

Significado

'holes'

Busque los contornos de objeto y de taladro. Este es el valor predeterminado.

'noholes'

Buscar sólo para los límites de objeto (padre e hijo). Esto puede proporcionar un mejor rendimiento.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Las coordenadas de fila y columna de los píxeles de contorno, devueltas como una matriz de celdas-por-1, donde es el número de objetos y taladros.pp Cada celda de la matriz de celdas contiene una matriz de-por-2.q Cada fila de la matriz contiene las coordenadas de fila y columna de un píxel de contorno. es el número de píxeles de contorno de la región correspondiente.q

Matriz de etiquetas de regiones contiguas, devuelta como una matriz 2-D de enteros no negativos. La región TH incluye todos los elementos que tienen valor.kLk El número de objetos y taladros representados por es igual a.Lmax(L(:)) Los elementos de valor cero de conforman el fondo.L

Tipos de datos: double

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

Tipos de datos: double

Dependencias de elementos primarios y secundarios entre los límites y los taladros, devueltos como una matriz cuadrada, dispersa y lógica de clase con el lado de la longitud.doublemax(L(:)) Las filas y columnas corresponden a las posiciones de los límites almacenados en.AB Las primeras celdas en son límites de objeto. significa que el objeto es un elemento secundario del objeto. . Los límites que se adjuntan o están encerrados por el límite-ésimo se pueden encontrar utilizando como sigue:nBA(i,j)=1ijkA

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

Algoritmos

La función implementa el algoritmo de rastreo de vecino Moore modificado por los criterios de detención de Jacob.bwboundaries Esta función se basa en la función presentada en la primera edición de, por González, r. c., r. e. Woods, y s. l. Eddins, Nueva Jersey, Pearson Prentice Hall, 2004.boundariesProcesamiento de imágenes digitales con MATLAB

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

Consulte también

| | |

Introducido antes de R2006a