系列篇|三维重建之纯格雷码三维重建

本文探讨了使用纯格雷码进行三维重建时遇到的精度问题,尤其是在点云重建中可能出现的断层现象。由于格雷码的离散性质,其精度受到限制。为提高精度,文章提出了一种新的方法,通过寻找两条空间直线最近的两个点的中点来估计实际的三维位置,从而解决因解码离散性导致的误差。虽然这种方法仍不如相移法精确,但作为新手入门或对精度要求不高的场景,是一种有效的解决方案。
摘要由CSDN通过智能技术生成

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

对于新手来说,使用格雷码做单目结构光三维重建是一个入门级的训练。但是在复现时往往会遇到一个问题,明明解码都很不错了,重建后的点云精度却很低,甚至重建出来的平面点云出现断层现象。这是由于格雷码是一种离散型编码,编码精度是整数级的像素,这种编码设计注定了它的精度不会太高。所以在实际应用中,格雷码通常是配合着其他编码方式一起使用:比如使用格雷码来标示相移的周期数。

尽管如此,由于格雷码本身的特性,稳定性高,抗反光效果比较好,在精度需求不是特别高的情况下,还是有适用场景的。尤其是景深范围大的时候,相位很容易出现模糊,可是对于黑白条纹的格雷码适应的景深就能够大一些。本文就简单介绍下如何使用纯格雷码进行三维重建,并得到一个精度尚可的点云(至少不出现重建平面时明显断层/分层现象)。

从解决问题的本身出发,想要得到一个精度比较不错的点云,最直观的思路是解码时得到一个准确的亚像素级精度,比如像相移那样,但是对于格雷码而言,很难去给出一个很好的插值函数去获得一个亚像素级的匹配,实际上,如果以图片某一行为例,你得到的解码结果可能是 16,16,17,17,18,18,18,NaN,NaN,21… 对于这样排列的解码结果,想要用一个函数去定义亚像素的插值函数是一件很困难的事情,笔者暂时没有看到哪篇文章提供了好的思路。(如果有读者知道,欢迎和笔者沟通)。

在无法获得准确的亚像素级的解码精度后,我们可以从三维重建方式本身去考虑,如上图所示。图中是一幅经典的双目重建模型,在之前的系列篇中我们介绍了单目结构光重建可以使用双目模型,只需要把投影仪看成一个逆相机就可以。图中红线即极线,也就是说,理论上相机成像点PL(图中left camera) 对应的可能的投影仪(图中Right Camra)中的位置是图中红线,如果知道对应的是图中红线哪一点,就可以解得准确的三维位置。

实际上,由于我们能够解得的编码只能是整数级的,导致我们的解码结果会像如下图所示的函数图一样,橙色的线是理论的极线,但是由于解码的离散性,我们得到的解码坐标是个整数级的数,如图中的阶跃函数,于是误差就这么产生了。

我们解得的点,通常会对应极线的或上方一点或下方一点,导致该点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值