泡泡图灵智库,带你精读机器人顶级会议文章

标题:Camera Calibration for Underwater 3D Reconstruction Based on Ray Tracing using Snell’s Law

作者: Malte Pedersen, Stefan Hein Bengtson, Rikke Gade, Niels Madsen and Thomas B. Moeslund

来源:CVPRW.2018

编译:肖乃贵

审核:万应才

这是泡泡图灵智库推送的第 463 篇文章,欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权

大家好! 今天推送的是发表在18年CVPR上的一篇的关于水下标定的论文.

在进行海洋动物研究时,准确估计水下物体的空间位置非常重要。折射的存在是水下三维重建的固有问题,这会使单个视点的假设无效。在本文中,作者比较了三种在水下物体上执行三维重建的方法:第一种是完全依靠空气中的相机标定的方法,第二种在水下进行相机标定的方法以及一种基于斯涅尔定律的光线追踪方法。不出所料,由于未考虑折射,因此直接在空气中对相机进行标定的方法最为不准确。另一方面,在水下相机标定和基于光线跟踪的方法估算的三维位置的精度几乎相同。然而,基于光线追踪的方法更有优势,由于对相机内参外参的解耦,它在标定过程方面更加灵活。

  • 比较了基于SVP相机模型的水下标定方法与基于光线追踪结合斯涅尔定律的方法。此外,通过将两种方法与在空气中进行的标定结果进行比较,以测试折射对标定的影响。
  • 结合斯涅尔定律(Snell's law)来描述进行光线跟踪所需的各个步骤,以减少折射的影响。
  • 基于光线跟踪方法的开源Python实现。
  • 本文的其余部分首先对基于光线跟踪的方法进行了解释,然后描述了评估过程,最后对上述三种方法进行了比较。
  • 收集3D信息时处理折射的不同方式通常可分为两类:通过依赖相机模型吸收误差来间接解决折射的方法和直接通过物理模型尝试解决的方法。

    一些方法仅依赖于SVP(单视点)相机模型,它的优势是易于使用,因此它已得到广泛的应用。该方法的主要问题是,折射违反了具有单一视点的基本假设,但是,折射引起的误差可以在一定程度上被抵消,如SVP模型中常使用焦距调整和径向失真校正进行优化。第二类方法是通过对基础物理建模来积极寻求抵消折射误差。

    还有其他一些方法放弃了SVP相机模型,而使用轴向相机模型,因为该模型仅假设光线将沿一条公共线相交,而不是在一条公共焦点处相交。然而,轴向相机模型在海洋研究中的使用却很少,因为认为它们是不切实际的。

    然而,这两种方法都缺乏足够的证据来说明为什么使用这种方法而非另一种方法。SVP相机模型由于其简单性和精度而被广泛应用了很多年。基于光线追踪的方法不是这种情况,它没有引起足够的重视。可能是由于对光线穿过不同介质的情况,对对象进行精确位置估计的需求并不高。

    基于光线跟踪的方法可以精确估计放置在透明水箱中的水下物体的3D位置。如图所示,其中每个数字都对应描述相应步骤的数字。

    1.相机标定

    相机标定是3D重建的重要部分,因为它将3D世界坐标与2D图像坐标相关联。这种3D与2D关系可以通过外参和内参来描述,如图所示。

    外参描述了从世界坐标到相机坐标的转换,而内参描述了相机坐标与图像中2D像素坐标之间的关系。

    使用每个相机的四个3D-2D点对应关系找到外部参数。通过使用基于Levenberg-Marquardt最优化迭代方法,通过最小化各个相机中四个点的重投影误差来找到参数。这种方法依赖于内参矩阵,因为需要其计算重投影误差,即相机坐标和图像坐标之间的3D到2D转换。通过手动标注水面和水箱角落之间的交点,可以找到所需的点对应关系。

    2. 将2D点投影到光线中

    第二步是将2D图像坐标投影到世界坐标系中的光线中。对每个相机重复此步骤,每条光线可描述为:

    其中r是光线的方向,沿光线的点r0设置为相机中心,因为背投影光线必须通过此位置,可以通过以下方法找到r0:

    解决折射问题,必须找到光线与介质界面平面之间的交点,如分隔空气和水的平面。确定该点本质上是找到λ0,以使r(λ0)= p,其中p是平面上的一个点。p必须满足平面方程:

    其中是平面法线,p0是平面上的已知点。然后可以通过将λ0插入上述等式来找到平面与光线I的交点:

    上述计算需要已知平面法线n,可知n=v1*v2。向量v1和v2是平面上的两个向量,可以从平面上的三个非共线点中找到。这三个点是从在相机标定期间手动注释的点集中提取的。也可以从这些手动注释的点中选择平面上所需的已知点p0。

    4.计算折射光线

    光线在介质之间的交点处的折射r(λ)是根据斯涅尔定律计算的。计算入射光线向量r的折射光线向量r′的步骤如下:

    1).计算θ1的余弦:

    其中θ1是r与介质之间界面的法线n之间的夹角。

    2).计算θ2的余弦:

    其中θ2是r′和n之间的夹角。

    3.折射矢量r′可以描述为:

    其中,n1是跟踪光线从空气到水的折射率,n2是光线从水到空气的折射率。

    对于放在水箱前面的相机,空气和水分别使n1 = 1.0和n2 = 1.33。其中没有考虑到由水箱的塑料或玻璃侧面引起的折射,因其厚度较小,故影响很小。

    5.使用光线进行三角定位

    最后一步是使用来自各个相机的折射光线r1(λ)'和r2(λ)'对2D图像坐标的3D位置进行三角测量。折射光线仍然遵守方程式(2),并使用来自方程式(10)的折射方向矢量和来自方程式(7)的平面光线相交I的位置形成。

    所采用的三角剖分方法通常称为中点算法。思路是找到两条光线r1(λ)'和r2(λ)'之间的向量,以使长度最小。找到最终的3D位置作为向量的中点

    中点算法是基于以下事实:当与两条光线垂直时,的长度必须最小。因此,主要思想是确定向量,使得:

    其中r1和r2是两条折射光线的方向向量,向量m可以通过计算沿折射光线的向量的起始位置M1和结束位置M2来找到。三角剖分过程的最终3D位置P计算为:

    实验结果与评估

    将所描述的光线追踪方法与其他两种方法进行了比较:使用放置在空气中的棋盘进行标定以及使用放置在水箱水下的棋盘进行标定。

    通过在装有水的水箱中移动带有两个鲜艳球的标定棒来进行测试。杆在球的位置附近弯曲,以使其更容易在周围移动而不干扰相机。相机的位置如图所示。

    水箱的长度为40厘米,宽度和高度分别为20厘米和25厘米。总共使用了15.6升水,相当于19.5厘米的深度。彩色的球用作标记。

    在整个测试中,实际的三角测量步骤保持不变。因此,测试方法之间的主要区别在于如何执行相机标定以及如何找到三角测量过程中的光线。

    三种方法的距离误差的直方图如下图所示。对于这三种方法,误差似乎呈正态分布,其中基于光线跟踪的方法表现最好。结果收集在表1中。

    表1:3维重建测试结果。

    距离误差相对于标记位置的分布如下图所示。2739个点中的每一个代表水箱中两个标记的重构位置之间的中心点,颜色表示误差的大小,即绝对距离误差。

    在空气中标定的相机在3D重建测试中表现不佳,这并不奇怪,因为它无法解决折射问题。如图所示,由于距离误差基于标记相对于相机的位置而在很大程度上变化,这在结果中显而易见。

    水下相机标定方法也是如此,但范围更小。这种方法的偏差程度取决于标定框架(在这种情况下为棋盘格)覆盖容器空间的程度。为了覆盖整个容器,棋盘格必须在水箱内移动,这可能会引起水面干扰,进而导致精度进一步降低,并因此容易出错。

    真正将两种方法区分开的是灵活性程度,其中光线跟踪方法优于水下标定方法,主要由于外部参数和内部参数的去耦,因为它仅允许对内参进行一次标定。换句话说,如果移动相机或将水箱替换为其他水箱,则仅需要估计外部参数,这可以通过手动标记四个水箱角来轻松实现。

    另一方面,如果在设置中更改了单个功能,则水下标定方法需要使用棋盘格标定法整个重新标定,相当耗时,且可能产生具有可重复性的问题。通过用带有标记的3D框架替换棋盘格,可以在某种程度上避免这种情况。但是,这样的框架将必须被制造到特定的储罐,从而使得装置甚至更不灵活并且对于较大的装置是不切实际的。

    总结这些发现,表2列出了经过测试的方法的优缺点。精度描述了各自的方法是否能够很好地重构3D位置,而与它们在水箱中的位置无关。灵活性体现了其适应设置变化的能力,例如水位,相机位置或水箱尺寸的变化。最后,易用性表明能否轻松完成相机的标定。

    表2:三种方法比较

    如果你对本文感兴趣,想要下载完整文章进行阅读,可以关注 【泡泡机器人SLAM】公众号

    泡泡机器人SLAM的原创内容均由泡泡机器人的成员花费大量心血制作而成,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!

    商业合作及转载请联系liufuqiang_robot@hotmail.com 返回搜狐,查看更多

    责任编辑:

    声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。