big*_*cle 5 c++ opencv disparity-mapping
我正在尝试使用 OpenCV 3.1 在 C++ 中计算视差图。我使用 StereoSGBM 算法,我需要能够识别远处和非常近的物体。因此,我将 MinDisparity 设置为 -16,将 MaxDisparity 设置为 160。
相机现已正确校准,但生成的视差图是从左侧剪切的。剪切量取决于 MaxDisparity 设置。
我会理解为什么近距离物体会发生这种情况。原因很简单,因为一张图像上的像素在第二张图像上不可用。但对于更远的物体则不会发生这种情况。在这种情况下,该对象在两个相机图像中完全可见,但在生成的视差图中不可见。
这个问题有什么解决办法吗?在高 MaxDisparity 设置的情况下计算所有可见区域的视差图?
您面临的问题是结果图片中的差异数量。SGBM 搜索整个视差空间并尝试在另一张图片中找到最佳匹配。
获取右图像的一个像素,并将其与左图像视差范围内的每个像素进行比较。如果左图像太小,则视差无效。因此,左图像中最左边的 176 个像素被丢弃。
尝试减少最大差异和/或增加最小差异!