小编fnh*_*hdx的帖子

使用opencv StereoBM的不良视差图

我正在尝试使用StereoBM来获取两个图像的视差图.我尝试了一些示例代码和图像.他们工作正常.然而,当我尝试自己的图像时,我的地图非常糟糕,非常嘈杂.

在此输入图像描述

在此输入图像描述

在此输入图像描述

我的StereoBM参数

sbm.state->SADWindowSize = 25;
sbm.state->numberOfDisparities = 128;
sbm.state->preFilterSize = 5;
sbm.state->preFilterCap = 61;
sbm.state->minDisparity = -39;
sbm.state->textureThreshold = 507;
sbm.state->uniquenessRatio = 0;
sbm.state->speckleWindowSize = 0;
sbm.state->speckleRange = 8;
sbm.state->disp12MaxDiff = 1;
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 关于我的图片的任何问题?
  2. 没有校准相机可以获得良好的视差图吗?我是否需要在StereoBM之前纠正图像

谢谢.

这是我纠正图像的代码

Mat img_1 = imread( "image1.jpg", CV_LOAD_IMAGE_GRAYSCALE );
Mat img_2 = imread( "image2.jpg", CV_LOAD_IMAGE_GRAYSCALE );

int minHessian = 430;
SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> keypoints_1, keypoints_2;
detector.detect( img_1, keypoints_1 );
detector.detect( img_2, keypoints_2 );

//-- Step 2: Calculate descriptors (feature vectors)
SurfDescriptorExtractor extractor;
Mat …
Run Code Online (Sandbox Code Playgroud)

opencv disparity-mapping camera-calibration

6
推荐指数
1
解决办法
5047
查看次数