OpenCV C ++ stereoBM视差图的距离受到限制

时间:2018-11-21 11:44:45

标签: c++ opencv stereo-3d

我在标题中写道,stereoBM产生的视差问题。

问题是我只能在一定距离范围内看到视差,即我能看到我是否站在1米到2米之间,然后才看到黑色(使用OpenCV字典在洞中)。

我需要创建一个距离图大于2米的深度图,并且我不知道为什么会有这个限制。

是否存在与校准或校正过程有关的问题?

希望你能帮助我。

编辑:

https://mega.nz/#!c5BnlCxT!U0EVi2cizy3fJbyfUF7m3haBibhz-SJpecdw0hYjFv8

https://mega.nz/#!RgBnhY4Z!v2CJKVRAPGK0cco1C02AFc8HeUgTCfhrTtWZs4aREqQ

https://mega.nz/#!IpJnRQSb!YVfd094W2KfRr6gdyiduiwJtkr2n13TVaGf1THvTM3A

下面是原始图像(未扭曲),校正过程后的dmap以及用于测试校准的源代码。

    bm->setPreFilterType(StereoBM::PREFILTER_XSOBEL);
    bm->setPreFilterSize(preFilterSize);                                        //31
    bm->setPreFilterCap(preFilterCap);                                      //31
    bm->setBlockSize(blockSize);                                            //31
    bm->setMinDisparity(minDisp);                                           //-5
    bm->setNumDisparities(numDisp);                                         //16
    bm->setTextureThreshold(textThres);                                 //10
    bm->setUniquenessRatio(uniqueRatio);                                        //15
    bm->setSpeckleWindowSize(speckleSize);                                  //101
    bm->setSpeckleRange(speckleRange);                                      //32
    bm->setDisp12MaxDiff(dispDiff);                                 //1
    cvtColor(img1,img1gray,CV_BGR2GRAY);
    cvtColor(img2,img2gray,CV_BGR2GRAY); 
    bm->compute(img1gray, img2gray, disp);
    disp.convertTo(disp8, CV_8UC1, 255/(numDisp*16.));
    displayImages();

所有参数均可通过滑块实时调整,每行后的注释值为默认值或初始值。

感谢您的耐心等候。

0 个答案:

没有答案