活动轮廓初始化

时间:2015-02-11 13:04:50

标签: image matlab image-processing

我正在尝试细分图片

http://i58.tinypic.com/wu33pl.jpg

我想用蓝色

取两个轮廓

Wanted contours image

任何人都知道我可以使用哪种技术进行此类细分?

问题是我想使用活动轮廓进行分割,我希望在这种图像中自动初始化活动轮廓。为此我必须找到一种方法来放入轮廓内部我绘制一个初始轮廓。任何关于如何制作这个,你可以看到的任何特征,我可以采取(纹理等)的想法? 谢谢

2 个答案:

答案 0 :(得分:1)

一种简单的方法是对图像进行阈值处理,使用regionprops定位对象,仅保留感兴趣的对象(此处为区域标准)并使用bwboundaries找到轮廓。

在实践中,这给出了:

% Define threshold
th_BW = 100;

% Read image
img = imread('myimage.jpg');

% Get objects and filter them
R = regionprops(img>th_BW, 'Area', 'PixelIdxList');
I = find([R.Area]>1000 & [R.Area]<10000);

% Get contours
C = cell(numel(I),1);
for i = 1:numel(I)   
    BW = img*0;
    BW(R(I(i)).PixelIdxList) = 1;
    tmp = bwboundaries(BW);
    C{i} = tmp{1};
end

% Display
imshow(img)
hold on
plot(C{1}(:,2), C{1}(:,1), 'Linewidth', 2);
plot(C{2}(:,2), C{2}(:,1), 'Linewidth', 2);

结果如下:

Result image

答案 1 :(得分:0)

如果你有最新版本的MATLAB,请试试Image Segmenter app。