立体匹配视差图生成的PCL点云分层、放射状等杂乱效果的解决方法

背景

    博主最近在学习三维重建中的立体匹配,在OpenCV中使用sgbm和bm算法时,碰到了一个棘手的问题,PCL点云出现分层的效果,让我百思不得其解,csdn翻了好多页,也没比较明确的解答(可能我的问题比较笨吧…)。在我翻了不少博客、代码例程和向前辈请教之后,最后修改了一些细节,算是能显示出点云图。
在这里插入图片描述

    在搜索解决方法时,发现还有挺多人碰到过类似的问题,这种感受很难受,就像你检查了很多遍,感觉没什么问题 代码就该这样写,但效果就是出不来,搁置不前,原地打转。所以我觉得,我还是记录下解决这个问题的过程,给以后掉进坑里的老铁们有一个参考的方向(本菜鸡真的在这个问题上耽误了好多时间),不说废话了,进入正题——


问题1:点云分层、断层

在这里插入图片描述

    如果出现以上类似效果,PCL点云像是很多2d平面图像层叠出来的问题,首先给出结论:转换点云时使用的视差图格式不对
    以OpenCV-sgbm为例,先调sgbm中的参数、至视差图既平滑又少空洞。
    在阅读网上许多代码后发现,用于计算距离的视差图(CV_32F)和用于肉眼看的视差图(CV_8U)使用的格式不同,并且用于计算的视差图无需进行裁剪和归一化,这些只是为了显示的可读性和美观。所以,在对sgbm进行compute之后得到视差图disparity_sgbm,除以16得到用于计算的视差图disparity(除以16是因为每个像素值由一个16bit表示,其中低位的4位存储的是视差值得小数部分,所以真实视差值应该是该值除以16)。

	cv::Mat disparity_sgbm, disparity, disparityCV_8U;
	sgbm->compute(rectifyImageL, rectifyImageR
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值