2017-10-05 70 views
0

我想从立体图像得到视差地图。当我尝试stereo_match.cpp下面的图像时,结果图像从原始图像变小,图像左侧丢失。OpenCV 3.3 reating视差地图返回较小尺寸的结果

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

如何通过更改参数或其他内容来改善结果?

下面是参数:

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); 

enter image description hereenter image description hereenter image description here

回答

1

这里是差距mapcreation的理论解释:

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

为了创建差异或深度图,应该有成为两台相机上可见的物体。在你的例子中,视差图显示了摄像机的常见视野。

如果您想突出显示此视野,您可以将摄像头彼此靠近,但它有成本。 z尺寸精度更低,噪音更大。