从左侧切割OpenCV视差图

时间:2016-10-14 10:23:00

标签: c++ opencv disparity-mapping

我尝试使用OpenCV 3.1在C ++中计算视差图。我使用StereoSGBM算法,我需要能够识别远和非常近的对象。因此,我将MinDisparity设置为-16和MaxDisparity 160。

现在可以正确校准相机,但会从左侧剪切生成的视差图。剪切量取决于MaxDisparity设置。

我理解为什么关闭对象会发生这种情况。仅仅因为第二张图像上的一个图像上的像素不可用。但是对于更远的物体,这不会发生。在这种情况下,对象在两个相机图像中都是完全可见的,但在结果视差图中不可见。

看看这张照片。为什么我的手在结果上看不到? enter image description here

这个问题有解决办法吗?在高MaxDisparity设置的情况下计算所有可见区域的视差图?

1 个答案:

答案 0 :(得分:1)

您遇到的问题是结果图片中的差异数量。 SGBM搜索整个视差空间并尝试在另一张图片中找到最佳匹配。

拍摄右图像的像素,并将其与来自左图像的视差范围内的每个像素进行比较。如果左图像太小,则视差无效。因此,左图像中最左边的176个像素被丢弃。

尝试减少最大差异和/或增加最小差异!