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

Rastrear los límites de la región en la imagen binaria

Descripción

ejemplo

B = bwboundaries(BW) rastrea 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 externos (padres) y traza a sus hijos (objetos completamente cerrados por los padres).BWbwboundaries Devuelve , una matriz de celdas de ubicaciones de píxeles de límite.B

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

ejemplo

B = bwboundaries(BW,conn,options) Rastrea los límites exteriores de los objetos, donde se encuentra o , especificando si desea incluir los límites de los taladros dentro de otros objetos.options'holes''noholes'

ejemplo

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

ejemplo

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

Ejemplos

contraer todo

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

I = imread('rice.png');

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

BW = imbinarize(I);

Calcule los límites de las regiones de 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

Lea la imagen binaria en el espacio de trabajo.

BW = imread('blobs.png');

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

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

Muestre 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);

Lea la imagen binaria en el espacio de trabajo.

BW = imread('blobs.png');

Calcular límites.

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

Visualice los límites de los objetos en rojo y los límites 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

Lea la imagen en el espacio de trabajo.

BW = imread('blobs.png');

Mostrar los límites 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 2D. debe ser una imagen binaria donde los píxeles distintos de cero pertenecen a un objeto y los píxeles de valor cero constituyen 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

Conectividades bidimensionales

4 conectados

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

8 conectados

Los píxeles están conectados si sus bordes o esquinas se tocan. Dos píxeles adyacentes forman parte del mismo objeto si están encendidos y están conectados 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 límites de objetos y taladros. Este es el valor predeterminado.

'noholes'

Busque solo límites de objetos (primarios y secundarios). Esto puede proporcionar un mejor rendimiento.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Coordenadas de fila y columna de píxeles de contorno, devueltas como una matriz de celdas -by-1, donde está el número de objetos y agujeros.pp Cada celda de la matriz de celdas contiene una matriz -by-2.q Cada fila de la matriz contiene las coordenadas de fila y columna de un píxel de límite. es el número de píxeles de límite para la región correspondiente.q

Matriz de etiquetas de regiones contiguas, devuelta como una matriz 2D 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 componen el fondo.L

Tipos de datos: double

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

Tipos de datos: double

Dependencias padre-hijo entre límites y taladros, devueltas como una matriz lógica cuadrada, dispersa y de clase con el lado de la longitud.doublemax(L(:)) Las filas y columnas de 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 encierran o están encerrados por el límite -ésimo se pueden encontrar utilizando lo siguiente:nBA(i,j)=1ijkA

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

Algoritmos

La función implementa el algoritmo de seguimiento Moore-Neighbor 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 mediante 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