imsegfmm

Бинарное изображение с использованием метода быстрого марша

Описание

пример

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

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

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

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

Примеры

свернуть все

В этом примере показано, как сегментировать объект в изображении с помощью Fast Marching Method на основе различий в интенсивности полутонового цвета по сравнению с местоположениями seed.

Чтение изображения.

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

Figure contains an axes. The axes with title Original Image contains an object of type 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')

Figure contains an axes. The axes with title Segmented Image contains an object of type image.

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

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

Figure contains an axes. The axes with title Geodesic Distances contains an object of type image.

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

Загрузите данные МРТ.

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

Figure contains an axes. The axes with title Original contains 3 objects of type surface.

Установите местоположения 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);

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

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

Figure contains an axes. The axes contains an object of type patch.

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

свернуть все

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

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

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

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

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

Пример: 0.5

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Совет

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

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

Ссылки

[1] Sethian, J. A. Level Set Methods and Fast Marching Methods: Эволюция интерфейсов в вычислительной геометрии, механике жидкости, компьютерном зрении и материаловедении, Cambridge University Press, 2nd Edition, 1999.

Введенный в R2014b