Алгоритм случайного блуждания для сегментации изображения

Кто-нибудь может предложить код 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 Больше подробностей.

Другие вопросы по тегам