从深度图到点云的构建方式

重磅干货,第一时间送达

本期我们将一起讨论如何将RGBD图像转换为3D空间中的点

我们将介绍什么是相机的内参矩阵,以及如何使用它将RGBD(红色、蓝色、绿色、深度)图像转换为3D空间。获取RGBD图像的方式有很多种,例如Kinect相机之类的系统,这些系统通过测量红外光的飞行时间来计算深度信息。但也有传闻称iPhone 12将LiDAR集成到其相机系统中。对于无人驾驶汽车而言,最重要的数据来源与汽车上的LiDAR以及标准RGB摄像头。在本文中,我们不会详细介绍如何获取数据。

图1 :(左)以u,v坐标表示的图像平面。每个像素都有指定的颜色和深度。(右)笛卡尔坐标x,y,z中的3D视图。

如果要了解3D环境中每个像素对应的内容,那么了解相机的属性就非常重要。相机的关键参数之一是焦距,它帮助我们将像素坐标转换为实际长度。大家可能看到过像“ 28 mm”这样的焦距,这其实是镜头与胶片/传感器之间的实际距离。

通过简单的几何关系(“相似的三角形”),我们可以轻松地从每个像素的u和d得出位置x。下图仅显示了x和u,但对y和v可以完全相同。对于针孔相机模型,x和y方向的焦距相同。对于带镜头的相机这个结论可能就不一定成立了,我们将在以后的文章中对此进行讨论。

图2:显示xz平面的投影(顶视图)。左侧是针孔照相机,镜头前有一个物体(从上方是相同的蓝色球),并在屏幕上显示。世界坐标系与照相机对齐,因此z轴延伸到照相机所看的方向。在右侧,从左侧开始的两个部分重叠的三角形分开以更加清楚。

从类似的三角方法中,我们立即获得:

通常fₓ和fᵧ是相同的。但是对于例如图像传感器的非矩形像素,镜头变形或图像的后处理,它们可能会有所不同。

综上所述,我们可以仅使用几何参数编写一段很短的Python代码,以将屏幕的坐标系转换为笛卡尔坐标系。

def convert_from_uvd(self, u, v, d): d *= self.pxToMetre x_over_z = (self.cx - u) / self.focalx y_over_z = (self.cy - v) / self.focaly z = d / np.sqrt(1. + x_over_z**2 + y_over_z**2) x = x_over_z * z y = y_over_z * z return x, y, z

在代码中(cₓ,cᵧ)是摄像机传感器的中心。请注意相机属性pxToMetre常数,利用这些参数可以在一定比例尺下以3D形式精确地显示图片。

当然,有一种更通用的方法可以完成所有这些操作。输入内参矩阵!这是一个包含先前讨论的相机属性(相机传感器的焦距和中心以及偏斜)的单个矩阵。在这里,我们要讨论如何使用它为我们完成上述转换。在下文中,我们将大写粗体字用于矩阵,将小写粗体字用于矢量,将普通脚本用于标量。

接下来,我们介绍齐次坐标。齐次坐标有助于我们将各种不同变换(平移,旋转和倾斜)编写为具有相同维数的矩阵。

以这种方式考虑它。在图2中,我们可以将图像平面移动到任何其他距离,例如从fₓ→2fₓ,并注意我们将其平移的因子h = 2。移位引入了简单的缩放比例,我们总是可以通过将u和v除以h作为返回值。

现在我们可以在齐次坐标上定义各种不同的操作,但是这些操作都保持最后一个维度值不变。

旋转矩阵R,平移矢量t和本征矩阵K组成了相机投影矩阵。它定义为从世界坐标转换为屏幕坐标:

注意[ R | t ]表示块符号,表示我们将R和列向量t = transpose {t₀,t₁,t 2}连接起来,或者换句话说,将其添加到R的右侧。如果我们想以另一种方式进行转换,则会遇到问题。我们对3x4矩阵求逆。但是大家会发现该矩阵的方阵扩展是可以求逆的。为此,我们必须在左侧增加1 / z(视差)才能满足方程式。4x4矩阵称为满秩本征/非本征矩阵。

让我们用最简单的情况验证上面所说的:相机原点和世界原点对齐,即Rt可以忽略,偏斜S为0,图像传感器居中。现在,相机矩阵的逆就是:

只看第一行就可以得出与开始时(方程1)完全相同的结论。使用等式的第二行和第三行对y和z同样适用。对于更复杂的内在矩阵,大家需要在进行此转换之前计算逆。由于它是一个上三角矩阵,因此有很多简单的办法可以处理这个问题:

现在,我们拥有了将深度图或RGBD图像转换为3D场景的所有工具,每个像素代表一个点(图3)。我们在此过程中有一些假设。其中之一是简化的相机模型:针孔相机。但是在现实世界中使用的相机会使用镜头,并且通常只能通过针孔模型进行估算。

图3:根据深度图(灰度)计算出的点云(绿色)

交流群

(0)

相关推荐

  • 简要概述三维重建3Dreconstruction技术

    三维重建的英文术语名称是3D Reconstruction. 三维重建是指对三维物体建立适合计算机表示和处理的数学模型,是在计算机环境下对其进行处理.操作和分析其性质的基础,也是在计算机中建立表达客观 ...

  • 自动化设计基础讲解-机械手,相机(CCD)9点标定

    在机器视觉应用中,相机标定技术需要准确的相机内参数和外参数作为重构算法的输入和先决条件,通过标定算法,可以计算相机的投影矩阵.本文讲解机械手-相机9点标定原理 1.目的 建立相机坐标系与机械手坐标系的 ...

  • 三位重建技术综述

    来源 https://blog.csdn.net/qq_30815237/article/details/91897736 前言 三维重建技术通过深度数据获取.预处理.点云配准与融合.生成表面等过程, ...

  • 原创 | 《相机标定》深入理解原理与实战(一)

    第 一 章 引言 1.1 为什么要相机标定 首先来看相机标定的意义,我们都知道,我们拍摄的图片是二维的,但是真实世界是三维的.一个场景是如何从三维变成二维的呢?相机起到的就是这个作用.我们可以把相机看 ...

  • 栅格化[栅格化]

    最基础的栅格化算法将多边形表示的三维场景渲染到二维表面.多边形由三角形的集合表示,三角形由三维空间中的三个顶点表示.在最简单的实现形式中,栅格化工具将顶点数据映射到观察者显示器上对应的二维坐标点,然后 ...

  • 中国电力科学研究院刘纯:新能源云助力构建新能源为主体的新型电力系统

    随着"碳达峰"和"碳中和"目标的提出,我国将构建以新能源为主体的新型电力系统,新能源将成为电力供应的主体.构建新型电力系统,需要统筹发展与安全,保障电力持续可靠 ...

  • 管家婆云ERP菜鸟云打印设置方式

    淘宝平台要求淘宝订单在3月31号后只能使用菜鸟云打印模板打印,您们系统有提示让我们在31号前做好切换,我们需要怎么切换呢? 解决方式: 第一步:在"基础资料"下面点击"物 ...

  • 阿里云 DCDN计费方式

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/DCDN计费方式 作者:融水公子 rsgz 搜索引擎教程 搜索引擎教程 http://www.rsgz.top/post/391.html 怎么说 ...

  • 「半城云」构建私域流量经营体系,教你怎么玩转顾客资产

    2019年底企业微信开始与微信打通,打破了企业微信仅是一个企业OA工具的现状,为所有企业提供了一个触达微信流量的窗口.这同时也催生了一批新公司的诞生,SCRM是最早进入行业的一批,其中既有服务全行业的 ...

  • WeWork携手京东&甄云科技 构建更智慧的数字化采购平台

    近期,全球领先的办公空间服务平台WeWork签约京东&甄云科技,三方在WeWork内部采购商城项目实施方案上达成共识,为WeWork企业采购数字化转型升级重磅加码. WeWork是全球领先的办 ...

  • 朱士中:依托云服务构建校园管理新生态

    当前校园管理信息化面临着诸多痛点与难点,新时代如何充分发挥信息化的技术优势?如何实现信息化应用与系统的整合?如何优化混合云生态下的校园管理?如何建立符合本校特色的教育管理体系? 常熟理工学院党委书记朱 ...

  • colab中解绑谷歌云盘(代码方式)

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/colab中解绑谷歌云盘(代码方式) 作者:融水公子 rsgz Colab教程 Colab教程 http://www.rsgz.top/post/ ...

  • 入华三年 微软智能云服务构建本土竞争优势

    在云服务市场,微软呈现出加速追赶亚马逊的迹象. 亚马逊4月28日凌晨披露的2017财年第一财季财报显示,该公司该财季营收为357.14亿美元.同比增长23%,其中AWS云服务营收36.61亿美元.同比 ...

  • MGX数字平台百融云创构建数字化营销与风控体系

    在金融监管进入常态化的后监管时代,风控是关系金融从业机构生死存亡的大事,风控能力逐渐成为其核心竞争力的体现,且风控将呈现"全方位.立体化.多层次"的识别和防控,除了大数据.云计算. ...