imsegfmm

Сегментация двухуровневого изображения с помощью быстро идущий метод

Описание

пример

BW = imsegfmm(W,mask,thresh) возвращает сегментированное изображение BW, который вычисляется с помощью быстрого метода похода. Массив W задает веса для каждого пикселя. mask логический массив, который задает местоположения seed. thresh задает пороговый уровень.

BW = imsegfmm(W,C,R,thresh) возвращает сегментированное изображение, с местоположениями seed, заданными векторами C и R, которые содержат индексы строки и столбец. C и R должен содержать значения, которые являются допустимыми пиксельными индексами в W.

BW = imsegfmm(W,C,R,P,thresh) возвращает сегментированное изображение, с местоположениями seed, заданными векторами CR, и P, которые содержат столбец, строку и плоские индексы. CR, и P должен содержать значения, которые являются допустимыми пиксельными индексами в W.

[BW,D] = imsegfmm(___) возвращается нормированное геодезическое расстояние сопоставляют D вычисленное использование быстрого метода похода. BW пороговая версия D, где все пиксели, которые нормировали геодезические значения расстояния меньше, чем thresh рассматриваются приоритетными пикселями и устанавливаются в trueD может быть порог на разных уровнях, чтобы получить различные результаты сегментации.

Примеры

свернуть все

В этом примере показано, как сегментировать объект в изображении, использующем Быстро идущий Метод на основе различий в полутоновой интенсивности по сравнению с местоположениями seed.

Readimage.

I = imread('cameraman.tif');
imshow(I)
title('Original Image')

Создайте маску и задайте местоположение seed. Можно также использовать roipoly создать маску в интерактивном режиме.

mask = false(size(I)); 
mask(170,70) = true;

Вычислите массив весов на основе полутоновых различий в интенсивности.

W = graydiffweight(I, mask, 'GrayDifferenceCutoff', 25);

Сегментируйте изображение с помощью весов.

thresh = 0.01;
[BW, D] = imsegfmm(W, mask, thresh);
figure
imshow(BW)
title('Segmented Image')

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

figure
imshow(D)
title('Geodesic Distances')

Этот пример сегментирует мозг из данных MRI человеческой головы.

Загрузите данные MRI.

load mri
V = squeeze(D);

Визуализируйте данные.

sizeO = size(V);
figure;
slice(double(V),sizeO(2)/2,sizeO(1)/2,sizeO(3)/2);
shading interp, colormap gray;
title('Original');

Установите местоположения seed.

seedR = 75; 
seedC = 60; 
seedP = 10;

Вычислите веса на основе полутоновых различий в интенсивности.

W = graydiffweight(V, seedC, seedR, seedP , 'GrayDifferenceCutoff', 25);

Сегментируйте изображение с помощью весов.

thresh = 0.002;
BW = imsegfmm(W, seedC, seedR, seedP, thresh);

Визуализируйте сегментированное изображение с помощью поверхности ISO.

figure;
p = patch(isosurface(double(BW)));
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1 1 27/64]);
camlight; 
lighting phong;

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

свернуть все

Массив весов в виде неотрицательного числового массива. Можно вычислить массив весов при помощи graydiffweight или gradientweight функции. Большие значения в W идентифицируйте, что приоритетные (объектные) и маленькие значения идентифицируют фон.

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

Отберите маску местоположений в виде логического массива одного размера с W. Местоположения, где mask true местоположения seed. Если вы используете graydiffweight создать матрицу веса W, рекомендуется, чтобы вы использовали то же значение mask с imsegfmm то, что вы использовали с graydiffweight.

Типы данных: логический

Пороговый уровень раньше получал двухуровневое изображение в виде номера в области значений [0, 1]. Низкие значения обычно приводят к большим областям переднего плана (логическая истина) в BW, и высокие значения производят маленькие области переднего плана.

Пример: 0.5

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

Индекс столбца ссылочных пикселей в виде числового вектора.

Пример: [50 75 93]

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

Индекс строки ссылочных пикселей в виде числового вектора.

Пример: [48 71 89]

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

Плоский индекс ссылочных пикселей в виде числового вектора.

Пример: [2 4 7]

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

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

свернуть все

Сегментированное изображение, возвращенное как логический массив одного размера с W.

Типы данных: логический

Нормированная геодезическая карта расстояния, возвращенная как числовой массив одного размера с W. Если W имеет класс single, затем D имеет класс single. В противном случае, D имеет класс double.

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

Советы

  • imsegfmm операции плавающей точки двойной точности использования для внутренних расчетов для всех классов кроме класса single. Если W имеет класс single, imsegfmm использует операции с плавающей точкой с одинарной точностью внутренне.

  • imsegfmm пиксели наборов с 0 или NaN значения веса к Inf в геодезическом расстоянии отображают D. Эти пиксели являются частью фона (логическая ложь) в сегментированном изображении BW.

Ссылки

[1] Сифианин, Дж. А. Методы установки уровня и быстро идущие методы: развивая интерфейсы в вычислительной геометрии, гидроаэромеханике, компьютерном зрении, и материаловедении, издательстве Кембриджского университета, 2-м выпуске, 1999.

Введенный в R2014b