Opencv 半全局块匹配

Opencv 半全局块匹配,opencv,matching,stereo-3d,Opencv,Matching,Stereo 3d,我正在研究opencv的半全局块匹配。事实上,我不明白为什么我们需要全方位浏览来计算成本汇总?是否有人试图限制此路径(扫描线)的长度?成本汇总涉及多个方向的搜索,以对解决方案实施全局平滑度约束。在没有这些约束的情况下,计算每个像素的视差时不考虑其相邻像素的估计视差,结果通常包含大量“噪声”,因为匹配过程将返回许多误报 通过假设观察到的曲面非常平滑,如果像素与其相邻像素不一致,则可以通过设置为像素指定深度的额外成本来惩罚视差偏移。不严格地说,这意味着当您尝试估计深度并有几个可能的匹配时,您可能会选

我正在研究opencv的半全局块匹配。事实上,我不明白为什么我们需要全方位浏览来计算成本汇总?是否有人试图限制此路径(扫描线)的长度?

成本汇总涉及多个方向的搜索,以对解决方案实施全局平滑度约束。在没有这些约束的情况下,计算每个像素的视差时不考虑其相邻像素的估计视差,结果通常包含大量“噪声”,因为匹配过程将返回许多误报

通过假设观察到的曲面非常平滑,如果像素与其相邻像素不一致,则可以通过设置为像素指定深度的额外成本来惩罚视差偏移。不严格地说,这意味着当您尝试估计深度并有几个可能的匹配时,您可能会选择与相邻像素的深度估计非常一致的匹配。在多个方向搜索会增加你在成本计算中考虑的邻居数量,并且通常会增加


OpenCV不提供减少此搜索路径长度的方法,但如果希望算法运行更快,可以禁用某些方向,只搜索5条路径而不是8条路径(通过将参数fullDP设置为false来执行)或者通过缩小视差搜索范围。

@shumi我不知道这个功能从何而来。它是否由块匹配例程在内部调用?你对C++语法感到困惑吗?如果是,那么答案很简单:
int diff_scale=c(成本类型)标准::abs(u-v)>>差异量表正在使用。在计算机视觉中,创建图像金字塔或缩放因子是很常见的,这就是我想象中正在发生的事情。当然,我知道这是什么;)但我认为在代码的这一部分中有一些东西并不能解决问题,因为我看不到累积成本和比特转移之间的关系。