watershed

Преобразование Водораздела

Описание

Водораздел преобразовывает, находит "области с дренажем" или "линии гребня водораздела" в изображении путем обработки его как поверхности, где светлые пиксели представляют высокие вертикальные изменения, и темные пиксели представляют низкие вертикальные изменения. Водораздел преобразовывает, может использоваться, чтобы сегментировать непрерывные необходимые области на отдельные объекты.

пример

L = watershed(A) возвращает матрицу метки L это идентифицирует области водораздела входной матрицы A.

L = watershed(A,conn) задает возможность соединения, которая будет использоваться в расчете водораздела.

Примеры

свернуть все

Создайте бинарное изображение, содержащее два перекрывающихся круговых объекта. Отобразите изображение.

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')

Figure contains an axes object. The axes object with title Binary Image with Overlapping Objects contains an object of type image.

Вычислите преобразование расстояния дополнения бинарного изображения. Значение каждого пикселя в выходном изображении является расстоянием между тем пикселем и самым близким ненулевым пикселем bw.

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

Figure contains an axes object. The axes object with title Distance Transform of Binary Image contains an object of type image.

Возьмите дополнение преобразованного изображения расстояния так, чтобы светлые пиксели представляли высокие вертикальные изменения, и темные пиксели представляют низкие вертикальные изменения для водораздела, преобразовывают.

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

Figure contains an axes object. The axes object with title Complement of Distance Transform contains an object of type image.

Вычислите водораздел преобразовывают. Установите пиксели, которые находятся вне ROI к 0.

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

Отобразите получившуюся матрицу метки как изображение RGB.

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

Figure contains an axes object. The axes object with title Watershed Transform contains an object of type image.

Сделайте 3-D бинарное изображение, содержащее две перекрывающихся сферы.

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

Figure contains an axes object. The axes object with title BW contains an object of type patch.

Вычислите преобразование расстояния.

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

Figure contains an axes object. The axes object with title Isosurface of distance transform contains an object of type patch.

Дополните преобразование расстояния, обеспечьте необъектные пиксели, чтобы быть 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

Figure contains an axes object. The axes object with title Segmented objects contains 2 objects of type patch.

Входные параметры

свернуть все

Введите изображение в виде числового или логического массива любой размерности.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Пиксельная возможность соединения в виде одного из значений в этой таблице. Возможностью соединения по умолчанию является 8 для 2D изображений и 26 для 3-D изображений.

Значение

Значение

Двумерные возможности соединения

4

Пиксели соединяются, если их ребра затрагивают. Окружение пикселя является смежными пикселями в горизонтальном или вертикальном направлении.

8

Пиксели соединяются, если их ребра или углы затрагивают. Окружение пикселя является смежными пикселями в горизонтали, вертикальным, или диагональным направлением.

3D возможности соединения

6

Пиксели соединяются, если их поверхности затрагивают. Окружение пикселя является смежными пикселями в:

  • Одно из этих направлений: в, левый, правильный, и вниз

18

Пиксели соединяются, если их поверхности или ребра затрагивают. Окружение пикселя является смежными пикселями в:

  • Одно из этих направлений: в, левый, правильный, и вниз

  • Комбинация двух направлений, таких как право вниз или в -

26

Пиксели соединяются, если их поверхности, ребра или углы затрагивают. Окружение пикселя является смежными пикселями в:

  • Одно из этих направлений: в, левый, правильный, и вниз

  • Комбинация двух направлений, таких как право вниз или в -

  • Комбинация трех направлений, такой как "в праве" или "в сниженном"

Для более высоких размерностей, watershed использует значение по умолчанию conndef(ndims (A), 'максимальный').

Возможность соединения может также быть задана более общим способом к любой размерности путем определения 3-by-3-by-... Матрица-by-3 0s и 1s. 1- ценные элементы задают местоположения окружения относительно центрального элемента conn. Обратите внимание на то, что conn должно быть симметричным о его центральном элементе. Смотрите Задающие Пользовательские Возможности соединения для получения дополнительной информации.

Примечание

Если вы задаете возможность соединения не по умолчанию, пиксели на ребре изображения не могут считаться краевыми элементами изображения. Например, если conn = [0 0 0; 1 1 1; 0 0 0], элементы на первой и последней строке не считаются краевыми элементами изображения, потому что, согласно тому определению возможности соединения, они не соединяются с областью вне изображения.

Типы данных: double | logical

Выходные аргументы

свернуть все

Матрица метки в виде числового массива неотрицательных целых чисел. Элементы пометили 0 не принадлежите уникальной области водораздела. Элементы пометили 1 принадлежите первой области водораздела, элементы пометили 2, принадлежат второй области водораздела, и так далее.

Советы

  • Водораздел преобразовывает алгоритм, используемый этой функцией, измененной в версии 5.4 (R2007a) программного обеспечения Image Processing Toolbox™. Предыдущий алгоритм иногда производил помеченные области с водоразделом, которые не были непрерывны. Если необходимо получить те же результаты как предыдущий алгоритм, используйте функциональный watershed_old.

  • Чтобы предотвратить сверхсегментацию, удалите неглубокие минимумы из изображения при помощи imhmin функция, прежде чем вы будете использовать watershed функция.

Алгоритмы

watershed использует алгоритм Фернана Мейера [1].

Ссылки

[1] Мейер, Фернан, "Топографическое расстояние и линии водораздела”, Обработка сигналов, Издание 38, июль 1994, стр 113-125.

Расширенные возможности

Смотрите также

| | | |

Представлено до R2006a