繁体   English   中英

基本立体声块匹配的错误结果(没有OpenCV)

[英]Bad Results with Basic Stereo Block Matching (without OpenCV)

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

我现在在做什么:

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

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

在阅读Konolige论文后,我实施了左右检查,在找到最佳匹配后,您在左图中搜索到最佳匹配,并且只有在您最初搜索到的图像时才接受它。或者就在旁边。

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

结果看起来不是很错,但非常稀疏。

我没有添加什么? 每个人似乎都知道的东西,但没有拼写出来。 我需要添加某种插值吗?

任何帮助表示赞赏!

我的输入是Tsukuba立体声对。

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

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

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

让我们回顾一下这个故事:

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

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

此外,BM工作,但对于困难的图像不太好。 通常需要稳健的成本函数(例如归一化相关)而不是SAD。 将结果与OpenCV进行比较时要小心:OpenCV提出了另一种名为SGBM的BM实现(针对半全球BM)。 在这种情况下,附加术语强制相邻像素的视差也接近。 这称为规则约束,有两种方式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM