用Opencv StereoCalib校准了2台相同的相机。我有 0.32109 RMS 错误和 0.386568 平均重复误差校准结果
我认为这不是很大的校准误差。但是我用带有黑色左边框的opencv SGBM算法得到这个深度图
int sgbmWinSize = 9;
int cn = img1.channels();
sgbm->setPreFilterCap(63);
sgbm->setBlockSize(sgbmWinSize);
sgbm->setP1(8 * cn*sgbmWinSize*sgbmWinSize);
sgbm->setP2(32 * cn*sgbmWinSize*sgbmWinSize);
sgbm->setMinDisparity(0);
sgbm->setNumDisparities(numberOfDisparities);
sgbm->setUniquenessRatio(10);
sgbm->setSpeckleWindowSize(100);
sgbm->setSpeckleRange(32);
sgbm->setDisp12MaxDiff(1);
sgbm->setMode(alg > 1 ? StereoSGBM::MODE_HH : StereoSGBM::MODE_SGBM);
怎么了?
非遮挡区域遮罩 除了视差图,对于立体匹配- 方法评估 有一个非 遮挡区域遮罩。 此面具以白色表示 为场景中从两者可见的像素着色 相机和黑色可见的像素 仅从一台摄像机
问题"解决"了
for(int y=0;y<height;y++){
for(int x=0;x<width;x++){
if(imageData[y*width+x]==0){
imageData[y*width+x]=x>width/2?imageData[y*width+x+1]:imageData[y*width+x-1];}}}