OpenCV 3.3 处理视差图返回较小的结果

OpenCV 3.3 reating disparity maps returned smaller sized result

我正在尝试从立体图像中获取视差图。当我尝试使用下面的图像 stereo_match.cpp 时,结果图像比原始图像小并且图像的左侧缺失。

是关于参数的吗?是什么原因以及如何解决?

如何通过更改参数或其他方式改进结果?

参数如下:

Ptr<StereoSGBM> sbm = StereoSGBM::create(16, 64, 3, 48, 192, 0, 0,10,200,100);
CV_WRAP static Ptr<StereoSGBM> create(int minDisparity = 0, int numDisparities = 16, int blockSize = 3,
                                          int P1 = 0, int P2 = 0, int disp12MaxDiff = 0,
                                          int preFilterCap = 0, int uniquenessRatio = 0,
                                          int speckleWindowSize = 0, int speckleRange = 0,
                                          int mode = StereoSGBM::MODE_SGBM);

这里是视差图创建的理论解释:

https://www.eecis.udel.edu/~grauerg/globalStereoPresCompVisionClass.pdf

为了创建视差图或深度图,两个摄像头都应该有一个可见的对象。在您的示例中,视差图显示相机的共同视野。

如果你想增加这个视野,你可以将相机彼此靠近,但这是有代价的。您在 z 维度上的准确性会降低,噪声会增加。