【问题标题】:Disparity Map using sgbm使用 sgbm 的视差图
【发布时间】:2016-11-24 19:37:49
【问题描述】:

我使用立体相机拍摄了 2 张包含 2 扇门(1 扇打开,1 扇关闭)的图像。 2 幅图像已经过校正且未失真。我尝试使用 sgbm 方法生成视差图。以下是我用于 sgbm 的参数。

numberOfDisparities = 48;
SAD windowsize = 9;

sgbm->setPreFilterCap(63);
sgbm->setBlockSize(9);
sgbm->setP1(8*cn*sgbmWinSize*sgbmWinSize);  //cn=3,sgbmWinSize=9    
sgbm->setP2(32*cn*sgbmWinSize*sgbmWinSize); 
sgbm->setMinDisparity(0);
sgbm->setNumDisparities(48); 
sgbm->setUniquenessRatio(1);
sgbm->setSpeckleWindowSize(100);
sgbm->setSpeckleRange(20);
sgbm->setDisp12MaxDiff(1);
sgbm->compute(img1, img2, disp);

disp.convertTo(disp8, CV_8UC1, 255/(numberOfDisparities*16.));
imshow("disparity8", disp8);

这两张图片和视差图可以在下面的这个链接中找到。 !(http://i.stack.imgur.com/Qbhh6.png)

我需要调整哪些参数才能进一步改进视差图?

此外,我想使用视差图生成深度图,但不知道如何去做。 最后,我想通过使用深度图来检测打开的门。有人对此有任何建议或方法吗?

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:
    • 您可以调整块大小(仅奇数)、numdisparity (%16 = 0)、唯一性比率高达 100。
    • 您也可以使用其他配置。
    • 此外,您可以使用 opencv-contrib 中的 xfilter 来改进 sgbm 中的视差图。它的作用是将阈值应用于视差图,使用该阈值作为输入掩码来平滑视差图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-24
      • 2019-08-23
      • 2016-06-24
      • 2018-10-02
      • 2020-01-11
      • 1970-01-01
      • 2013-12-19
      • 2020-01-26
      相关资源
      最近更新 更多