【问题标题】:Ideas to process challenging image处理具有挑战性的图像的想法
【发布时间】:2014-07-08 20:48:00
【问题描述】:

我正在处理作为 3D 传感器输出的红外线图像。该传感器投射红外图案以绘制深度图,因此,红外图像有很多白点,会降低其质量。所以,我想对这张图片进行处理,使其更平滑,以便能够检测到位于表面的物体。

原始图像如下所示:

我的目标是拥有这样的东西(我通过用手挡住红外投影仪获得):

“开放”形态学操作确实会去除一些噪音,但我认为首先应该有一些噪音去除操作来处理白点。

有什么想法吗?

我应该提一下,降低噪音的算法必须实时运行。

【问题讨论】:

  • 不能以编程方式打开/关闭 IR 图案投影(而不是用手挡住它)吗?如果可能的话,如何使用 2 个带和不带 IR 模式的快照?

标签: opencv image-processing noise


【解决方案1】:

中值滤波器将是我的第一次尝试....之后可能是高斯模糊。这真的取决于你以后想用它做什么。

例如,这是经过 5x5 中值滤波和 5x5 高斯模糊后的原始图像:

【讨论】:

    【解决方案2】:

    图像中的主要困难是白点的大半径。 中值和形态过滤器在这里应该没什么帮助。

    通常我不是这些算法的忠实拥护者,但您似乎有一个完美的用例,可以在 功能空间 上使用草图和振荡组件分解图像。 基本上,这些算法旨在解决接近观察图像的卡通图像 X,它与 Y 的不同之处仅在于去除了一些振荡纹理。 可以找到相关论文和算法列表here

    (免责声明:我不是 Jérôme Gilles,但我认识他,而且我知道 他的大部分算法都是用纯 C 实现的,所以我认为大部分 它们可以用 OpenCV 来实现。)

    如果您想先尝试更简单的实现,您可以尝试其他方法:

    • 比较输入图像和模糊版本之间的差异,看看它是否强调了点,在这种情况下,您可以轻松找到并标记它们。这部分的输出可能就够了,但你可能还想用inpainting来填充点的前面位置,
    • 或应用各向异性扩散(如 Rudin-Osher-Fatemi 方程)来查看点是否消失。尽管看起来很复杂,但这种扩散可以通过应用this paper 中的算法在 OpenCV 中轻松有效地实现。 TV 扩散也可用于上一项的修复步骤。

    【讨论】:

    • 我应该提一下,降低噪音的算法必须实时运行。我尝试了 inpaint 方法,它确实工作得很好,但它并不意味着即时运行。其他算法也这么重吗?
    • TV 算法(尤其是如果您选择一个原始对偶求解器)是高度并行的,可以在 GPU 上实现以获得实时性能。对于中值过滤,我在 cvpapers 上找到了一篇关于非常快速加权中值的最近(2014 年)论文。
    【解决方案3】:

    IR 投影模式是固定的还是随时间变化的? 在第二种情况下,您可以尝试利用点的移动。

    例如,您可以获取一系列图像并将结果图像的每个像素分配给该序列的最小(或非常低的百分位数)值。

    编辑:here is a Python script 你可能想试试

    【讨论】:

      【解决方案4】:

      我关于去噪的主要观点是获得更清晰的图像,以便更容易检测到物体。然而,当我试图找到问题的解决方案时,我意识到使用动态噪声去除算法从图像中去除所有噪声是不现实的,因为大部分图像实际上都是噪声。所以我不得不尽管有这些条件,但仍能找到对象。这是我的方法

      1 - 初始图片

      2 - 背景减法,然后进行开运算以平滑噪声

      3 - 二进制阈值

      4 - 形态学操作关闭以确保物体没有边缘不连续性(薄物体所必需的)

      5 - 填充孔+打开形态学操作以去除小噪声斑点

      6 - 检测

      【讨论】:

        猜你喜欢
        • 2013-08-03
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        • 2011-06-19
        • 2021-07-17
        • 2016-02-06
        • 2020-06-05
        • 1970-01-01
        相关资源
        最近更新 更多