【发布时间】:2014-02-08 04:48:33
【问题描述】:
我已经使用 OpenCV 的棋盘校准例程校准了我的立体相机。我目前正在使用获得的内在和外在矩阵来纠正我的消息并使用块匹配方法(我使用过 BM 和 SGBM 并获得相同的结果)最终转到 3D 点云。
不幸的是,我在 3D 点云中发现了问题,并且由于某种原因,在深度值方面似乎存在错误的“步骤”。
我使用了一个简单的实验来成像一堆有很多纹理的污垢,我希望看到一致的重建,但我发现它的一部分处于正确的深度值,而它的其余部分似乎平放在地上。我已经尝试改变我的立体标记大小、最大/最小差异值等。但我仍然没有看到任何变化。我也尝试过水平和垂直成像,但问题仍然存在于两个视图中。
谁能建议我做错了什么?
目前,比较简单的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);
【问题讨论】:
标签: opencv stereo-3d disparity-mapping