【问题标题】:Stereo Reconstruction Problems using BM and SGBM approaches使用 BM 和 SGBM 方法的立体重建问题
【发布时间】:2014-02-08 04:48:33
【问题描述】:

我已经使用 OpenCV 的棋盘校准例程校准了我的立体相机。我目前正在使用获得的内在和外在矩阵来纠正我的消息并使用块匹配方法(我使用过 BM 和 SGBM 并获得相同的结果)最终转到 3D 点云。

不幸的是,我在 3D 点云中发现了问题,并且由于某种原因,在深度值方面似乎存在错误的“步骤”。

我使用了一个简单的实验来成像一堆有很多纹理的污垢,我希望看到一致的重建,但我发现它的一部分处于正确的深度值,而它的其余部分似乎平放在地上。我已经尝试改变我的立体标记大小、最大/最小差异值等。但我仍然没有看到任何变化。我也尝试过水平和垂直成像,但问题仍然存在于两个视图中。

谁能建议我做错了什么?

目前,比较简单的BM参数如下:

int ndisparities = 16*15;//16*10;  
int SADWindowSize = 31; 
cv::StereoBM sbm( CV_STEREO_BM_BASIC, ndisparities, SADWindowSize );    
sbm( rectified_imgRight, rectified_imgLeft, imgDisparity16S, CV_16S );
imgDisparity16S.convertTo(imgDisparity8U, CV_8U, 255/(ndisparities*16.));
cv::imwrite("disparity.png", imgDisparity8U);

【问题讨论】:

    标签: opencv stereo-3d disparity-mapping


    【解决方案1】:

    我明白了,您的差异结果看起来很棒。那里没问题。

    你的相机设置是什么,一个普通的水平立体设置? (从图片中鞋子的外观来看,可能是这种情况)

    此外,3d 土丘似乎位于图片左侧:您是否检查过您是否使用正确的相机图像覆盖了您的 3d 数据?默认情况下,OpenCV 算法将给出左校正图像深度图,但在您的情况下,看起来对象图像已向右移动。根据我的经验,这是因为将深度图与正确的校正图像进行比较,这是错误的。

    您是否检查过您正在尝试将深度图与正确的图像(左摄像头校正图像)进行比较?还要检查图像的方向。

    我相信你很快就会得到正确的高度。

    【讨论】:

    • 请不要发布澄清问题作为答案。
    【解决方案2】:

    您的视差图在我看来不太合适。除了黑洞之外,视差图中的其他一切都具有相同的强度。这不可能。

    一般规则是:深度越低,视差越大。

    我建议你再次检查你的视差图。

    另外,一旦你获得了合适的视差图,你应该做一个空洞填充来处理所有的黑色区域。这肯定会影响你的重建。

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 2021-04-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多