计算机如何理解三维世界
使用手机进行人脸解锁,或是体验 VR 和 AR 技术所带来的虚拟世界,3D 视觉技术的应用无处不在,它已经在智能家居、智能安防、汽车电子、工业测量、新零售以及智能物流等多个领域产生了深远影响,成为推动产业创新的重要力量。那么,计算机究竟是如何“看”待这个三维世界的呢?
随着信息技术的迅速发展,计算机视觉中的 3D 技术已经被广泛应用于各个领域,并不断推动虚拟现实(VR)和增强现实(AR)技术的进步。3D 视觉问题的重要性日益凸显,因为它提供了比传统 2D 更为丰富的图像信息。
如今,我们可以在多个场景中看到 3D 视觉技术的便利,例如工业机器人、工件识别与定位、3D 成像技术、产品虚拟设计、智能制造、自动驾驶、SLAM、无人机、3D 重建和人脸识别等,均与 3D 视觉密切相关。

举例来说,3D 视觉技术的应用,图源:https://zhuanlan.zHihu.coM/p/52049458
综上所述,3D 视觉是计算机视觉与计算机图形学的一个重要交叉研究领域。随着三维传感技术的飞速发展和三维几何数据的激增,3D 视觉研究已经突破了传统二维图像的限制,实现了对三维空间的分析、理解和交互。
我们生活在三维空间中,智能感知和探索外部环境一直是一个热门课题。虽然 2D 视觉技术凭借强大的计算机视觉和深度学习算法达到了超越人类认知的成就,但由于算法建模和环境依赖等问题,3D 视觉仍处于研究的前沿。三维信息更能真实反映物体及环境的状态,接近人类的感知模式。
随着技术的不断进步,三维视觉领域也在快速发展。例如,3D+AI 识别功能可以通过扫描人脸的三维结构来实现手机解锁;自动驾驶技术则通过分析 3D 人脸信息来判断司机的情绪状态;SLAM 技术通过重建周围环境实现建图与感知;而在 AR 领域,三维重建技术则用于目标的重现。那么,这些实用技术究竟是如何实现的呢?
在深入了解之前,我们先来探讨一下 3D 视觉技术的一些基本概念。
3D 图像简介
在介绍 3D 图像之前,先简单回顾一下 2D 图像。我们日常生活中所见的图像称为物理图像,这种图像无法被计算机直接识别,需要转化为数字格式,即数字图像。数字图像是二维图像中有限数字像素的表示,通常通过数组或矩阵来表示,其光照位置和强度都是离散的。常见的存储格式包括 PNG、GIF、JPEG 和 BMP 等,存储方式有位图存储和矢量存储。

2D 图像可以分为二值图像和彩色图像等。在二值图像中,每个像素的亮度值可以在 0(黑)到 255(白)之间变化,表示不同的灰度级。而彩色图像则由三种不同颜色的灰度图像组合而成,分别为红色分量(R)、绿色分量(G)和蓝色分量(B)。

图像彩色显示法,RGB 图像三个分量,图源:https://blog.csdn.net/Hello_Chan/article/detAIls/89094790
与二维图像类似,三维图像在二维彩色图像的基础上增加了一个维度,即深度(Depth,D),可以用一个简单的公式表示为:三维图像 = 普通的 RGB 三通道彩色图像 + 深度图。
RGB-D
RGB-D 是一种广泛使用的 3D 图像格式,每个像素具有四个属性:红(R)、绿(G)、蓝(B)和深度(D)。
深度图是三维图像特有的,记录每个像素所用的位数,并用于衡量图像的色彩分辨率。它确定了彩色图像中每个像素可能的颜色数,以及灰度图像中每个像素可能的灰度级数。深度图的数值是规整的,适合直接用于现存的图像处理框架。
例如,一幅彩色图像中每个像素由 R、G、B 三个分量表示,若每个分量用 8 位,则一个像素共用 24 位表示,像素的深度为 24,这意味着每个像素可以表示 16777216(224)种颜色之一。因此,像素深度可以理解为深度图像的位数。位数越多,能够表达的颜色种类就越多,深度也就越深。

RGB-D 图像格式,图源:https://www.sohu.coM/a/249567571_114877
在基于像素的图像中,我们可以通过(x,y)坐标定位任何像素,并获得其三种颜色属性(R,G,B)。而在 RGB-D 图像中,每个(x,y)坐标对应于四个属性(深度 D,R,G,B)。
点云
在进行 3D 视觉时,主要处理的是点云,点云是由多个点组成的集合。相比于图像,点云具有不可替代的优势,即深度,它直接提供了三维空间的数据,而图像则需要通过透视几何推算三维数据。
点云是某个坐标系下的点的数据集,包含丰富的信息,如三维坐标 X、Y、Z、颜色、分类值、强度值和时间等。点云可以分为有序点云和无序点云两种类型。

点云示例,图源:https://www.jianshu.coM/p/FFedad5e8e30
点云的获取方式:点云通常不是通过普通相机拍摄得到的,而是通过三维成像传感器获得,例如双目相机、三维扫描仪和 RGB-D 相机。目前主流的 RGB-D 相机包括微软的 Kinect 系列、Intel 的 Realsense 系列和结合 iPad 使用的 Structure Sensor 等。点云可以通过扫描 RGB-D 图像和相机的内在参数生成,方法是通过相机校准来计算真实世界的点(x,y)。因此,RGB-D 图像是网格对齐的图像,而点云则是更稀疏的结构。此外,获取点云的另一种有效方法是激光探测与测量(LiDAR),可以通过星载、机载和地面等方式获取。
点云的内容包括三维坐标(XYZ)和激光反射强度(Intensity)。强度信息与目标的表面材质、粗糙度、入射角方向以及仪器的发射能量和激光波长相关。根据摄影测量原理得到的点云包括三维坐标(XYZ)和颜色信息(RGB),而结合激光测量和摄影测量原理得到的点云则包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。
点云的属性包括空间分辨率、点位精度和表面法向量等。
尽管 RGB-D 相机应用广泛,但仍受到许多硬件限制。目前深度相机输出的深度图存在很多问题,例如对光滑物体表面的反射、透明物体、半透明物体和深色物体等,都会导致深度图的缺失。此外,许多深度相机还存在大片深度值缺失的问题,后续需要进一步进行深度图补全。

图源:https://www.cnblogs.coM/CV-life/p/10105480.htMl
上图展示的是拍摄的室外街道的点云图,如果仔细观察,可以清楚看到建筑物和树木的轮廓。点云的优点主要体现在以下几点:首先,点云能够表达物体的空间轮廓和具体位置,使我们能够识别街道和房屋的形状,同时也能判断物体与摄像机的距离;其次,点云的视角无关,可以任意旋转,从不同的角度和方向观察一个点云,而不同的点云只要在同一坐标系下就可以直接融合。
接下来,我们放大点云,如下图所示,最后看到的就是一个个离散的点。这些点在空间中成千上万,组合成了我们所看到的街道、房屋等。

点云放大图,图源:https://www.cnblogs.coM/CV-life/p/10105480.htMl
从放大的点云图可以看出,点云也有其缺点,主要体现在以下几个方面:三维点云比图像多了一个维度,即深度;点云的分布不规则,相比于规整网格的图像更难处理;点云缺乏图像中的纹理信息,呈现为孤立的点,导致信息丢失。此外,点云是分布在空间中的非结构化数据(无网格),而图像中像素的数量是固定的,受限于相机。不过,点云的数量可能会有很大变化,取决于各种传感器;而点云的分辨率与距离相机的远近有关,近距离观察效果较差,通常需要在较远的视角下才能观察整体。
下面是原始 RGB-D 生成的点云结果:

图源:https://zhuanlan.zHihu.coM/p/42084058
以下动图展示了经过深度图补全后生成的点云结果: