Алгоритм случайного блуждания для сегментации изображения
Кто-нибудь может предложить код Matlab для реализации алгоритма случайного блуждания, для сегментации изображения, в частности, изображения CT.
1 ответ
Я предлагаю взглянуть на панель инструментов анализа графиков Лео Грэди, а также соответствующее дополнение для сегментации изображений с использованием Random Walks, см. Здесь. Загрузите набор инструментов анализа графиков и код Random Walker и сохраните файлы следующим образом:
praphAnalysisToolbox/
README.txt
random_walker_example.m
random_walker.bmp
axial_CT_slice.bmp
Включают graphAnalysisToolbox
на вашем пути, чтобы иметь возможность вызвать демо, т.е. ranomd_walker_example.m
, Демо должно сегментировать предоставленное изображение. В вашем случае вам может потребоваться установить семена по-разному в зависимости от приложения и ваших изображений.
Например, семена могут быть размещены в виде суперпикселя:
% Read image into the variable image ...
img = im2double(image);
[height, width, channels] = size(img);
seeds = [];
seed_labels = [];
label = 1;
i = floor(region_height/2);
while i < height
j = floor(region_width/2);
while j < width
seeds = [seeds, sub2ind([height, width], i, j)];
seed_labels = [seed_labels, label];
label = label + 1;
j = j + region_width;
end;
i = i + region_height;
end;
%Apply the random walker algorithms
[labels, ~] = random_walker(img, seeds, seed_labels, beta);
Смотрите комментарии в random_walker.m
Больше подробностей.