您好, 我有一个分段图像,如图所示。有没有办法使线条平滑,使它看起来不那么波浪状?感谢。
答案 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);
结果如下:
可选步骤:通过细化后处理:
bw4 = bwmorph(bw3,'thin',inf);
答案 1 :(得分:0)
我认为你应该问问自己为什么它必须更顺畅。如果你已经分割了一个图像并得到了这个结果,你确定平滑会给你一个正确的结果吗? 如果确实如此,那么Steve Eddins的回答似乎就是这样做的。
另一方面,如果您尝试分割的对象比结果更平滑,我建议采用两种方法之一。
如果目标对象是十字(两行),我可能会计算线条并将表示更改为两个线段。然后可以以任何精度和平滑度渲染这些。要做到这一点,您可以使用某种特征检测算法找到中心和旋转,或者您可以使用霍夫变换来查找线条。后者可能更简单。
如果目标可以有任何形式,那么我会研究一种更好的分割算法。存在不基于硬阈值的分段算法。我已经使用了图分区算法,虽然很慢,但它们运行良好。