2009-12-18 154 views
2

alt text平滑分割图像

您好, 的线I有一个分割的图像,如图所示。有没有办法平滑线条,使其看起来不那么波浪?谢谢。

回答

4

下面的代码需要图像处理工具箱:

url = 'http://i182.photobucket.com/albums/x11/veronicafmy/FYP/picture5segmentedimage.jpg'; 
rgb = imread(url); 
bw = im2bw(rgb2gray(rgb), 0.5); 
se = strel('line',50,74); % 74 degrees determined by inspection 
bw2 = imclose(bw,se); 
se2 = strel('line',50,74+90); 
bw3 = imclose(bw2,se2); 

这里的结果:

smoothed result

可选步骤:后期处理的细化:

bw4 = bwmorph(bw3,'thin',inf); 
+0

...稀释膨胀和腐蚀的现有技术) – Amro 2009-12-18 19:29:15

+0

您也可以通过施加梯度(索贝尔,...)到每个像素找到的角度,然后再应用打开morfological操作(腐蚀,膨胀)。你也可以看到:http://www.mathworks.es/products/image/examples.html?file=/products/demos/shipping/images/ipexcell.html – 2012-11-11 00:46:51

0

我想你应该问问自己为什么要平滑。如果你已经分割了一张图片并得到了这个结果,你确定平滑会给你一个正确的结果吗? 如果是这样,那么史蒂夫艾丁斯的答案似乎是伎俩。

另一方面,如果您尝试分割的对象比结果平滑得多,我建议采用两种方法之一。

  1. 如果目标对象是交叉(两行),我可能会计算行并将表示更改为两个线段。这些可以以任何精度和平滑度呈现。要做到这一点,您可以使用某种特征检测算法找到中心和旋转角度,也可以使用霍夫变换来查找线条。后者可能要简单得多。

  2. 如果目标可以有任何形式,那么我会研究一个更好的分割算法。有分割算法不基于硬阈值。我为此使用了图分区算法,虽然速度很慢,但它们运行良好。