2

替代文字

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

4

2 回答 2

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);
于 2009-12-18T19:04:03.650 回答
0

我认为你应该问自己为什么它必须更平滑。如果您对图像进行了分割并获得了该结果,您确定平滑会为您提供正确的结果吗?如果确实如此,那么史蒂夫·埃丁斯的回答似乎就可以解决问题。

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

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

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

于 2009-12-18T19:18:44.913 回答