【问题标题】:Filter Noise in MatLab在 MatLab 中过滤噪声
【发布时间】:2012-09-18 17:11:41
【问题描述】:

您好,我正在尝试使用 MatLab 过滤包含 4 个对象的图像。我的第一张图像有一个黑色背景和白色物体,所以我很清楚通过使用 BW 标签找到这些大的白色部分并将它们与图像分离来过滤掉每个图像。

不过,下一张图片中有噪点。现在我有一张白线穿过我的对象的图像,它们现在实际上是相互连接的。如何在 MatLab 中过滤掉这些行?椒盐噪声怎么样?是否有 MatLab 函数可以做到这一点?

【问题讨论】:

  • 你能发布一个链接到你的输入图像吗?我想看看噪音是什么样子的。

标签: matlab filter noise-reduction


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您可以忍受稍微扭曲对象,您可以使用带有一点对比度拉伸的closing (morphological) filter。您将需要图像处理工具箱,但这是大体思路。

    • 模糊以消除线条,否则关闭过滤器将删除您的对象。您可以使用 fspecial 创建高斯过滤器并使用 imfilter 应用它
    • 使用 imclose 对图像应用关闭滤镜,遮罩比您的噪点大,但比对象块小(我在示例中使用了 3x3 菱形)。
    • 使用 im2bw 对图像设置阈值,以便每个像素都变成纯黑色或纯白色

    我附上了一个我必须为学校项目做的例子。在我的例子中,背景是白色的,物体是黑色的,我在腐蚀和膨胀之间伸展。侵蚀后你看不到灰色,但它就在那里(因此有必要进行阈值处理)。

    您当然可以直接进行关闭(腐蚀后膨胀)然后阈值。请注意此过滤如何扭曲对象。

    仅供参考,通常使用移动平均滤波器清除椒盐噪声,但这会留下图像灰度。对于我的项目,我需要一个纯黑白(用于 BW 标签),并且形态过滤器可以很好地完全消除噪音。

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2016-08-17
      相关资源
      最近更新 更多