2

我尝试使用 OpenCV 生成立体图像的视差并使用 GPU 优化性能,但它们的结果不同。

StereoSGBM 初始化

StereoSGBM sbm;
sbm.SADWindowSize = 3;
sbm.numberOfDisparities = 144;
sbm.preFilterCap = 63;
sbm.minDisparity = -39;
sbm.uniquenessRatio = 10;
sbm.speckleWindowSize = 100;
sbm.speckleRange = 32;
sbm.disp12MaxDiff = 1;
sbm.fullDP = false;
sbm.P1 = 216;
sbm.P2 = 864;
sbm(grayLeftCurrentFrameCPU, grayRightCurrentFrameCPU, resultCurrentFrameCPU);
normalize(resultCurrentFrameCPU, resultNorCurrentFrameCPU, 0, 255, CV_MINMAX, CV_8U);

结果:http: //i.stack.imgur.com/eov4N.jpg

gpu::StereoBM_GPU 初始化

gpu::StereoBM_GPU *bm = new gpu::StereoBM_GPU();
bm->preset = gpu::StereoBM_GPU::BASIC_PRESET;
bm->ndisp = 48;
bm->winSize = 5;
bm->operator()(grayLeftCurrentFrameGPU, grayRightCurrentFrameGPU,       resultCurrentFrameGPU);
gpu::normalize(resultCurrentFrameGPU, resultNorCurrentFrameGPU, 0, 255, CV_MINMAX, CV_8U);

结果:http: //i.stack.imgur.com/WVzrK.jpg

有谁知道为什么?

4

1 回答 1

2

gpu::StereoBM_GPUcv::StereoBM文档链接)的 GPU 版本。

cv::StereoSGBM使用另一种算法(文档链接),因此结果不同。

为了确定结果gpu::StereoBM_GPU错误的原因,了解您如何纠正这对图像会很有用。

于 2014-03-03T12:11:01.783 回答