如果图像中的目标物体是连在一起的,则分割起来会更困难,分水岭算法经常用于处理这类问题,通常会取得比较好的效果。分水岭分割算法把图像看成一副“地形图”,其中亮度比较强的地区像素值较大,而比较暗的地区像素比较小,通过寻找“汇水盆地”和“分水岭界限”,对图像进行分割。
步骤:
1.读取图像
2.求取图像的边界,在此基础上可直接应用分水岭分割算法,但效果不佳;
3.对图像的前景和背景进行标记,其中每个对象内部的前景像素都是相连的,背景里面的每个像素值都不属于任何目标物体;
4.计算分割函数,应用分水岭分割算法的实现
注:直接用分水岭分割算法效果并不好,如果在图像中对前景和背景进行标注区别,再应用分水岭算法会取得较好的分割效果。
例 步骤:
1.读取图像并求取图像的边界。
rgb = imread('pears.png');%读取原图像
I = rgb2gray(rgb);%转化为灰度图像
figure; subplot(121)%显示灰度图像
imshow(I)
text(732,501,'Image courtesy of Corel',...
'FontSize',7,'HorizontalAlignment','right')
hy = fspecial('sobel');%sobel算子
hx = hy';
Iy = imfilter(double(I), hy, 'replicate