消除图像中的噪点

时间:2013-08-07 02:44:14

标签: matlab image-processing pattern-matching computer-vision pattern-recognition

我有一张图片(左图),但边缘有一些折扣和噪音。我想使用一种可以给我正确图像的方法(过滤,图像修复等)。有没有什么方法可以在Matlab中为我做这个?

1 个答案:

答案 0 :(得分:3)

根据您的需要,一系列扩张和侵蚀操作(称为“关闭”)可能就足够了。您可以合并imdilateimerode操作,按顺序执行imclose或“手动”,如下例所示:

se=strel('ball',4,4); 
im_er = imdilate(im,se);
im_er = imerode(im_er,se);

imdilate操作会增加高值像素的区域,第二个会缩小它们。有各种形状的物体用于执行侵蚀/扩张,您可能需要试验或阅读哪种对您的场景最有用。

在您的特定情况下,看起来RGB色彩空间可以执行形态学操作。在使用上述操作(两次扩张和一次侵蚀)渲染红色圆圈蓝色(中间框架)后,我得到了你的图像(右边框)的结果(右边框):

enter image description here

显然,这并没有删除一些不需要的功能,但它似乎解决了大部分功能。在图像扩张的某些部分中存在残留的白色像素,仅使用其中一个通道或在不同的颜色空间(例如HSV)中使用可能是一种解决方法。

最后,您还希望将操作限制为红色圆圈所包含的“感兴趣区域”(ROI),因为您应该检查SO上的其他Q& A帖子,例如{{3 }或here(搜索“matlab roi”)。

修改

对于应用以下变形的OPs新图像:

se=strel('ball',4,4); 
im_er = imdilate(im,se);
im_er = imdilate(im_er,se);
im_er = imerode(im_er,se);
se=strel('ball',3,3);
im_er = imerode(im_er,se);

生成此图片:

enter image description here

注意:要获得更好的结果,请使用roi函数!