首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ / OpenCV -深度地图问题:点云中的项目有一些扭曲

C++ / OpenCV -深度地图问题:点云中的项目有一些扭曲
EN

Stack Overflow用户
提问于 2015-07-09 05:11:18
回答 1查看 2.4K关注 0票数 2

我想要创建一个深度地图,以获得每个像素的三维位置,以便我可以有一些选定项目的三维位置在我的图片。为了查看我的深度数据是否正确,我用MeshLab可视化了它。

我使用基蒂数据集的立体数据,因此图像是校正的校准为每一个相机提供

这一进程如下:

图像左+图像右->利用立体半全局匹配(SGBM)计算视差->使用cv::reprojectImageTo3D()计算深度图,根据校准参数和此函数计算Q初始化:

代码语言:javascript
复制
 cv::stereoRectify(cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, imgSize, R, T, R1, R2, P1, P2, Q);

我的问题是:

道路是可以的,但标志板有一些失真。我不明白,我试图改变参数,但没有成功。我总是有这种扭曲。这是烦人的,因为我不能计算一个良好的三维位置的标志板。我也尝试了经典的块匹配,但是它是一样的,结果与半全局匹配的结果不太好。

然而,我的差距看起来是这样的(对我来说这似乎很好):

视差计算的参数如下:

代码语言:javascript
复制
    StereoSGBM sgbm;
    sgbm.SADWindowSize = 3;
    sgbm.numberOfDisparities = 128;
    sgbm.preFilterCap = 10;
    sgbm.minDisparity = 0;
    sgbm.uniquenessRatio = 10.0;
    sgbm.speckleWindowSize = 100;
    sgbm.speckleRange = 32;
    sgbm.disp12MaxDiff = 1;
    sgbm.fullDP = 1;
    sgbm.P1 = sgbm.SADWindowSize*sgbm.SADWindowSize*4;
    sgbm.P2 = sgbm.SADWindowSize*sgbm.SADWindowSize*32;

    sgbm(gray1, gray2, disp);

你知道为什么会这样吗?我怎么能解决这个问题?我想要一个平面很好的标牌。

EN

回答 1

Stack Overflow用户

发布于 2015-07-09 22:40:20

通过使用SGBM参数,您可能可以稍微改进一些东西,但是现实情况是,立体声数据是嘈杂的,您不应该期望在点云中得到一个完美的平面标志。

如果您有兴趣找到标志的三维位置,将标志从RGB图像中分割出来,并将点云中的对应点平均在一起,应该会产生合理的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31308641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档