【问题标题】:Bad Results with Basic Stereo Block Matching (without OpenCV)基本立体块匹配的不良结果(没有 OpenCV)
【发布时间】:2013-11-28 18:06:14
【问题描述】:

我正在尝试在不使用 OpenCV 或其他图像处理库的情况下实现立体块匹配。 所有的教程、书籍、讲座幻灯片等都只教授了比较图像中块的非常基本的方法,但结果非常糟糕。 我读了一些论文,比如来自 K.Konolige 的论文,它是 OpenCV 算法的基础,但我似乎仍然错过了一些重要的东西。

我现在在做什么:

  1. 将 Sobel 应用于左右图像。
  2. 进行块匹配
    • 在左侧图像中的像素周围选择一个 (9x9) 块,并与右侧图像同一行中的块进行比较(原始块右侧最多 80 个像素)
    • 找到最匹配的那个(使用 SAD 绝对差之和)

由此产生的差异是我必须走多少步才能找到最佳匹配。

阅读 Konolige 论文后,我实现了 Left-Right-Check,在您找到最佳匹配后,您会在左侧图像中搜索右侧图像的最佳匹配,并且仅当它是您的匹配时才接受它最初搜索或在它旁边。

还添加了一个检查,以便一个像素只能匹配一次,如果使用位域的像素之前已与一个像素匹配,则在搜索中将跳过它们。

结果看起来不是很错误但很稀疏。

我没有添加什么?每个人似乎都知道但没有详细说明的东西。 我需要添加某种插值吗?

感谢任何帮助!

我的输入是筑波立体声对。

在网上找到的结果(第二个是 OpenCV BM,第三个显然是博客作者的 SAD BM)

http://cseautonomouscar2012.files.wordpress.com/2012/11/111412_2001_comparisono1.png

【问题讨论】:

    标签: opencv image-processing computer-vision


    【解决方案1】:

    你的结果稀疏是正常的,因为你的算法是稀疏的!

    让我们把故事倒转一下:

    • 在第一步中,您应用了 Sobel 边缘检测器。您在这里所做的是提取一组作为图像边缘的稀疏特征;
    • 然后您对结果应用块匹配:您实际所做的是匹配边缘,从而匹配稀疏特征。

    经典的 BM 实现适用于图像强度补丁(这就是亮度均衡很重要的原因),即采用 SSD/SAD/像素强度的相关性。

    此外,BM 也可以,但在处理困难图像时效果不佳。通常需要稳健的成本函数(例如归一化相关)而不是 SAD。 将结果与 OpenCV 进行比较时要小心:OpenCV 提出了另一种 BM 实现,称为 SGBM(用于半全局 BM)。在这种情况下,附加项强制相邻像素的视差也接近。这称为规律性约束,有两种帮助:

    1. 它限制了输出结果中的噪声(如果像素的差异是异常值,则将其移除并替换为从其邻居推断的值);
    2. 它允许将好的结果传播到算法无法推断出好的结果的区域。这通常是边缘匹配的情况:您可以在边缘集上获得良好的视差估计,然后让正则化项将这种良好的估计传播到平坦(无纹理和无边缘)区域。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2013-10-12
      • 2017-10-18
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多