我已经使用OpenCV的棋盘校准例程校准了我的立体相机。我目前使用获得的内在和外在矩阵来纠正我的信息,并使用块匹配方法(我已经使用BM和SGBM并获得相同的结果)最终转到3D点云。使用BM和SGBM方法的立体重建问题
不幸的是,我发现问题在我的三维点云和出于某种原因,似乎是在深度值方面具有errorenous“台阶”。
我用一个简单的实验来对一堆有很多纹理的污垢进行成像,我期望看到一致的重建,但我发现它的一部分处于正确的深度值,而其余的似乎是平坦的。我试过改变我的立体声标记大小,最大/最小差异值等,但仍然没有看到任何改变。我也尝试了水平和垂直成像,但问题仍然存在于两个视图中。
任何人都可以请建议我可能做错了吗?
就目前而言,简单的BM参数如下所述:
int ndisparities = 16*15;//16*10;
int SADWindowSize = 31;
cv::StereoBM sbm(CV_STEREO_BM_BASIC, ndisparities, SADWindowSize);
sbm(rectified_imgRight, rectified_imgLeft, imgDisparity16S, CV_16S);
imgDisparity16S.convertTo(imgDisparity8U, CV_8U, 255/(ndisparities*16.));
cv::imwrite("disparity.png", imgDisparity8U);
请不要发布澄清问题作为答案。 –