我工作在黑色&白色图像就像链接中的第一个: http://imageshack.us/g/33/firstwm.png/ 它有很多“噪音”,所以我在它上面应用了一个中值滤镜来平滑它,从而得到第二张图片。我如何平滑OpenCV中的曲线(轮廓)?
cvSmooth(TempImage, TempImage, CV_MEDIAN, 5, 0);
在此之后我得到的轮廓,并吸引他们像是从连接第3图像对其它图像。 我的问题是轮廓仍然有点像素(前卫)。有没有办法让B图像变得更光滑以获得更好的轮廓?或者也许用轮廓做点什么。 我也尝试过使用不同内核的Dilate和Erode,但问题依然存在。 谢谢你的帮助。
编辑: 也试过:
cvSmooth(TempImage, TempImage, CV_GAUSSIAN, 9, 9, 3);
cvThreshold(TempImage, TempImage, 127, 255, CV_THRESH_BINARY);
的结果相同中值滤波,好的,但仍有一些像素化轮廓。
将其通过高斯核,然后进行阈值应理顺出了边线。也许这是你想要的结果? – swalog
我假设你所说的“噪音”是你在第二个例子中似乎已经删除的高频成分。 [this](http://i.imgur.com/33GIT.png)是否需要输出?如果只需要二进制输出,[硬阈值](http://i.imgur.com/VelRg.png)将是最接近的事情。 – swalog
是的,所需的输出是消除噪音,以尽可能平滑的轮廓,我已经尝试了高斯+阈值也在你的建议,但得到与中值滤波相同的结果。 – Adrian