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 cuencahidro

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 claros representan elevaciones altas 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

Cree una imagen binaria que contenga dos objetos circulares superpuestos. Muestre la imagen.

center1 = -40; 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; imshow(bw) title('Binary Image with Overlapping Objects')

Calcular la transformación de distancia del complemento de la imagen binaria. El valor de cada píxel de la imagen de salida es la distancia entre ese píxel y el píxel distinto de cero más cercano de .bw

D = bwdist(~bw); imshow(D,[]) title('Distance Transform of Binary Image')

Tome el complemento de la imagen transformada a distancia para que los píxeles claros representen elevaciones altas y los píxeles oscuros representen elevaciones bajas para la transformación de cuenca hidrográfica.

D = -D; imshow(D,[]) title('Complement of Distance Transform')

Calcule la transformación de cuenca hidrográfica. Establezca los píxeles que están fuera del ROI en .0

L = watershed(D); L(~bw) = 0;

Muestre la matriz de etiquetas resultante como una imagen RGB.

rgb = label2rgb(L,'jet',[.5 .5 .5]); imshow(rgb) title('Watershed Transform')

Haga una imagen binaria 3D 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

Calcular 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 no objetos para que sean y, a continuación, calcule la transformación de cuenca hidrográfica.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 2D y para imágenes 3D.826

Valor

Significado

Conectividades bidimensionales

4 conectados

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

8 conectados

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

Conectividades tridimensionales

6 conectados

Los píxeles están conectados si sus caras se tocan. La vecindad de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: entrada, salida, izquierda, derecha, arriba y abajo

18 conectados

Los píxeles están conectados si sus caras o aristas se tocan. La vecindad de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: entrada, salida, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como el derecho hacia abajo o hacia arriba

26 conectados

Los píxeles están conectados si sus caras, aristas o esquinas se tocan. La vecindad de un píxel son los píxeles adyacentes en:

  • Una de estas direcciones: entrada, salida, izquierda, derecha, arriba y abajo

  • Una combinación de dos direcciones, como el derecho hacia abajo o hacia arriba

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

Para dimensiones más altas, 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 -valued definen ubicaciones de vecindad relativas al elemento central de .1conn Tenga en cuenta que debe ser simétrico sobre su elemento central.conn Consulte para obtener más información.Especificación de conectividades 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, etc.1

Sugerencias

  • El algoritmo de transformación de cuenca utilizada por esta función cambió en la versión 5.4 (R2007a) del software.Image Processing Toolbox™ El algoritmo anterior ocasionalmente producía 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, elimine 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