平滑分割图像的线条

时间:2009-12-18 16:47:14

标签: image matlab lines smooth image-segmentation

alt text

您好, 我有一个分段图像,如图所示。有没有办法使线条平滑,使它看起来不那么波浪状?感谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我认为你应该问问自己为什么它必须更顺畅。如果你已经分割了一个图像并得到了这个结果,你确定平滑会给你一个正确的结果吗? 如果确实如此,那么Steve Eddins的回答似乎就是这样做的。

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

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

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