【问题标题】:How to eliminate the noise after sobel filtering?sobel滤波后如何消除噪声?
【发布时间】:2014-02-25 18:28:38
【问题描述】:

我的问题很简单。我对中值滤波的灰度图像进行了 Sobel 滤波。索贝尔滤波后的图像是

矩形对象是我感兴趣的。我正在尝试从图像中提取它。

如您所见,除了物体之外,由于地板的纹理,还有更多的噪音。因此,边缘图像如下(带有更多错误边缘)

sobel滤波后如何消除噪声?或者我该如何克服这个障碍?

您的建议或指导将帮助我深入了解图像处理及其挑战。

谢谢

【问题讨论】:

  • 你从什么开始(应用sobel之前的初始图像)?
  • @Ron:这张图片是一个躺在地板上的长方体物体的 ROI。

标签: opencv edge-detection image-segmentation


【解决方案1】:

消除噪音很重要。主要答案是:这取决于你必须做什么。

首先,您必须为过滤器提供可能的最佳图像,因此请尝试一些预处理,例如模糊、阈值或histogram equalisation

然后,形态算子通常是一种常见的处理方式。您可以找到一些关于这些运算符herehere 的文档。

然后,您可以根据您对这张图片的处理方式继续前进。例如,如果您的目标是检测 blob,您可以过滤 blob,消除通过 image moments 计算其面积的最小 blob。

或者,如果您需要检测线条,请尝试查看Hough transform

编辑:Blob 和 opencv

你可以在网上找到很多关于斑点检测的教程。如果你不知道它是什么,最好google一下,它是计算机视觉的基础部分。以下是一些链接:hereherehereherehere。此外,opencv 版本 2.4.8 有一个用于 blob 提取的内置类:hereThis 是一个简单的教程,解释了 cv::findContours 的主要功能。

简而言之,斑点检测是一个获取二值图像(黑白,CV_8U 类型)并返回一组轮廓的过程,这些轮廓界定了一些connected-component 区域。轮廓(或 blob)实际上是一些 2d 点的向​​量,用于界定一个形状。您可以找到一些属性,例如面积、质心等。

最好学习一点图像处理和计算机视觉基础知识,我可以建议你这个著名的book数字图像处理,Rafael C. Gonzalez,Richard Eugene Woods。您可以在 Google 图书或网络上的其他地方找到它。

看看那些introduction tutorials

【讨论】:

  • 对不起,我在做 sobel 过滤之前做了中值模糊(已编辑)。我知道良好的图像预处理是要走的路。我将通过链接。 Blob 对我来说是一个相对较新的术语。你能解释一下吗?我希望您的回答能引导我走上正确的道路。
  • 预处理是重要的一步,但也是唯一需要关注的一步。查看修改。
  • 我在 Sobel 过滤器后尝试了morphologyEx(打开)图像,它可以消除噪音
【解决方案2】:

在@nkint 的建议下,我解决了这个问题。现在,我能够摆脱 Canny 边缘检测的噪音。主要贡献来自Bilateral filter,也来自sharpening 过滤器。

我的新canny边缘检测图像如下

双边滤波器被称为边缘保持滤波器。对于具有相似值的表面,它的工作原理类似于高斯滤波器。同时,它忽略了不太相似的像素,从而保留了边缘。

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2017-06-20
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多