过滤MatLab中的噪音

时间:2012-09-27 00:49:47

标签: matlab filter noise-reduction

您好我正在尝试使用MatLab过滤内部有4个对象的图像。我的第一张图片有一个带有白色物体的黑色背景,因此我很清楚通过使用BW Label找到这些大的白色部分并将它们与图像分离来过滤每个图像。

下一张图片中有噪音。现在我有一个白色线条贯穿我的物体的图像,它们现在实际上是相互连接的。我怎样才能在MatLab中过滤掉这些行?盐和胡椒噪音怎么样?是否有MatLab功能可以做到这一点?

2 个答案:

答案 0 :(得分:3)

过滤噪音可以通过多种方式完成。典型的噪声滤波过程将类似于阈值>中值滤波>模糊>阈值。但是,有关噪声类型的信息对于适当的噪声过滤非常重要。例如,由于您的图片中有线条,因此您可以尝试使用Hough transform来检测它们并将它们从游戏中取出(或houghlines)。另一种方法可以是实现RANSAC。对于盐和&辣椒类型的噪声,应该使用medfilt2具有捕获噪声特性的适当窗口大小(例如3x3窗口将很好地处理1像素大的噪声波动......)。

答案 1 :(得分:1)

如果您可以稍微扭曲对象,可以使用closing (morphological) filter进行一些对比度拉伸。你需要图像处理工具箱,但这是一般的想法。

  • 模糊以杀死线条,否则关闭过滤器将擦除您的对象。您可以使用 fspecial 创建高斯过滤器,使用 imfilter 来应用
  • 使用 imclose 将关闭滤镜应用于图像,其掩码大于噪点,但小于对象块(我在示例中使用了3x3钻石)。
  • 使用 im2bw 对图像进行阈值处理,以便每个像素都变为纯黑色或纯白色

我附上了一个我必须为学校项目做的例子。在我的情况下,背景是白色和物体黑色,我在侵蚀和膨胀之间伸展。在腐蚀之后你无法真正看到灰色,但它存在(因此需要进行阈值处理)。

您当然可以直接进行关闭(侵蚀,然后是扩张),然后是阈值。注意这个过滤如何扭曲对象。

通常情况下,使用移动平均滤镜清理盐和胡椒噪音,但这会使图像灰度化。对于我的项目,我需要一个纯黑色和白色(用于BW标签),形态滤镜很好地完全消除了噪音。

Morphological Filtering Example