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.

watershed

Transformación de cuencas

Descripción

La transformación de cuenca hidrográfica encuentra "cuencas de captación" o "líneas de cresta de Cuenca" en una imagen tratándola como una superficie donde los píxeles de luz representan elevaciones elevadas y los píxeles oscuros representan elevaciones bajas. La transformación de cuenca hidrográfica se puede utilizar para segmentar regiones contiguas de interés en objetos distintos.

ejemplo

L = watershed(A) Devuelve una matriz de etiquetas que identifica las regiones de cuenca hidrográfica de la matriz de entrada.LUn

L = watershed(A,conn) Especifica la conectividad que se utilizará en el cálculo de la cuenca hidrográfica.

Ejemplos

contraer todo

Calcule la transformación de cuenca hidrográfica y visualice la matriz de etiquetas resultante como una imagen RGB. Este ejemplo funciona con imágenes en 2-D.

Cree una imagen binaria que contenga dos objetos circulares superpuestos y mostrarlo.

center1 = -10; center2 = -center1; dist = sqrt(2*(2*center1)^2); radius = dist/2 * 1.4; lims = [floor(center1-1.2*radius) ceil(center2+1.2*radius)]; [x,y] = meshgrid(lims(1):lims(2)); bw1 = sqrt((x-center1).^2 + (y-center1).^2) <= radius; bw2 = sqrt((x-center2).^2 + (y-center2).^2) <= radius; bw = bw1 | bw2; figure imshow(bw,'InitialMagnification','fit'), title('bw')

Calcule la transformación de distancia del complemento de la imagen binaria.

D = bwdist(~bw); figure imshow(D,[],'InitialMagnification','fit') title('Distance transform of ~bw')

Complemente la transformación de distancia y fuerce los píxeles que no pertenezcan a los objetos a los que debe estar.Inf

D = -D; D(~bw) = Inf;

Calcule la transformación de cuenca hidrográfica y visualice la matriz de etiquetas resultante como una imagen RGB.

L = watershed(D); L(~bw) = 0; rgb = label2rgb(L,'jet',[.5 .5 .5]); figure imshow(rgb,'InitialMagnification','fit') title('Watershed transform of D')

Haga una imagen binaria 3-D que contenga dos esferas superpuestas.

center1 = -10; center2 = -center1; dist = sqrt(3*(2*center1)^2); radius = dist/2 * 1.4; lims = [floor(center1-1.2*radius) ceil(center2+1.2*radius)]; [x,y,z] = meshgrid(lims(1):lims(2)); bw1 = sqrt((x-center1).^2 + (y-center1).^2 + ...            (z-center1).^2) <= radius; bw2 = sqrt((x-center2).^2 + (y-center2).^2 + ...            (z-center2).^2) <= radius; bw = bw1 | bw2; figure, isosurface(x,y,z,bw,0.5), axis equal, title('BW') xlabel x, ylabel y, zlabel z xlim(lims), ylim(lims), zlim(lims) view(3), camlight, lighting gouraud

Calcule la transformación de distancia.

D = bwdist(~bw); figure, isosurface(x,y,z,D,radius/2), axis equal title('Isosurface of distance transform') xlabel x, ylabel y, zlabel z xlim(lims), ylim(lims), zlim(lims) view(3), camlight, lighting gouraud

Complemente la transformación de distancia, fuerce los píxeles que no sean objetos y, a continuación, calcule la transformación de cuenca.Inf

D = -D; D(~bw) = Inf; L = watershed(D); L(~bw) = 0; figure isosurface(x,y,z,L==1,0.5) isosurface(x,y,z,L==2,0.5) axis equal title('Segmented objects') xlabel x, ylabel y, zlabel z xlim(lims), ylim(lims), zlim(lims) view(3), camlight, lighting gouraud

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz numérica o lógica de cualquier dimensión.

Ejemplo: RGB = imread('pears.png'); I = rgb2gray(RGB);

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. La conectividad predeterminada es para imágenes en 2-D y para imágenes 3D.826

Valor

Significado

Two-Dimensional Connectivities

4-connected

Los píxeles se conectan si los bordes se tocan. La vecindad de un píxel son los píxeles adyacentes en la dirección horizontal o vertical.

8-connected

Los píxeles se conectan si los bordes o las esquinas se tocan. La vecindad de un píxel son los píxeles adyacentes en la dirección horizontal, vertical o diagonal.

Three-Dimensional Connectivities

6-conectado

Los píxeles se conectan si se tocan las caras. El vecindario de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: en, fuera, izquierda, derecha, arriba y abajo

18-conectado

Los píxeles se conectan si sus caras o aristas se tocan. El vecindario de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: en, fuera, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como la derecha-abajo o en

26-conectado

Los píxeles se conectan si sus caras, aristas o esquinas se tocan. El vecindario de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: en, fuera, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como la derecha-abajo o en

  • Una combinación de tres direcciones, como en-derecha-arriba o en-izquierda-abajo

Para cotas superiores, utiliza el valor predeterminadowatershed conndef(ndims(A),'maximal').

La conectividad también se puede definir de una manera más general para cualquier dimensión especificando una matriz de 3 por 3 por...-por-3 de s y s.01 Los elementos con valor definen las ubicaciones de vecindad con respecto al elemento central de.1conn Tenga en cuenta que debe ser simétrica sobre su elemento central.conn Consulte para obtener más información.Especificación de Connectivities personalizadas

Nota

Si especifica una conectividad no predeterminada, es posible que los píxeles del borde de la imagen no se consideren píxeles de borde. Por ejemplo, si los elementos de la primera y la última fila no se consideran píxeles de borde porque, según esa definición de conectividad, no están conectados a la región fuera de la imagen.conn = [0 0 0; 1 1 1; 0 0 0]

Tipos de datos: double | logical

Argumentos de salida

contraer todo

Matriz de etiquetas, especificada como una matriz numérica de enteros no negativos. Los elementos etiquetados no pertenecen a una región de cuenca hidrográfica única.0 Los elementos etiquetados pertenecen a la primera región de cuenca hidrográfica, los elementos etiquetados 2 pertenecen a la segunda región de cuenca hidrográfica, y así sucesivamente.1

Sugerencias

  • El algoritmo de transformación de cuenca hidrográfica utilizado por esta función cambió en la versión 5,4 (R2007a) del software.Image Processing Toolbox™ El algoritmo anterior producía ocasionalmente cuencas hidrográficas etiquetadas que no eran contiguas. Si necesita obtener los mismos resultados que el algoritmo anterior, utilice la función.watershed_old

  • Para evitar la sobresegmentación, quite los mínimos superficiales de la imagen utilizando la función antes de utilizar la función.imhminwatershed

Algoritmos

utiliza el algoritmo Fernand Meyer.watershed[1]

Referencias

[1] Meyer, Fernand, "Topographic distance and watershed lines,” Signal Processing , Vol. 38, July 1994, pp. 113-125.

Capacidades ampliadas

Consulte también

| | | |

Introducido antes de R2006a