随着信息技术的快速发展,计算机视觉 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 等。
整体一个全局头部 (GlobalHeader),然后分成若干个包(Packet),每个包又包含头部(Header)和数据(Data)部分。 相应基础算法库对不同格式的支持 点云的数据量庞大,需要专门的数据存储库进行显示和保存。例如,一张 640 x 480 尺寸的深度图就可以转换为大约三十万个空间点的点云,大的点云可达百万甚至千万以上,这时专门用来进行点云的读写、处理等各种操作数据存储库就显得非常重要。 PCL(Point Cloud Library)库支持跨平台存储,可以在 Windows、Linux、macOS、iOS、Android 上部署。可应用于计算资源有限或者内存有限的应用场景,是一个大型跨平台开源 C++ 编程库,它实现了大量点云相关的通用算法和高效数据结构,其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等操作,非常方便移动端开发。
此处的 common 指的是点云数据的类型,包括 XYZ、XYZC、XYZN、XYZG 等很多类型点云。可以看出,低层次的点云处理主要包括滤波(filters)、关键点(keypoints)、边缘检测。点云的中层次处理则是特征描述(feature)、分割(segmention)与分类。高层次处理包括配准(registration)、识别(recognition)。 除了 PCL 库以外,VCG 库(Visulization and Computer Graphics Libary)是专门为处理三角网格而设计的,该库很大,且提供了许多先进的处理网格的功能,以及比较少的点云处理功能。 CGAL(Computational Geometry Algorithms Library)计算几何算法库,设计目标是以 C++ 库的形式,提供方便、高效、可靠的几何算法,其实现了很多处理点云以及处理网格的算法。 Open3D 是一个可以支持 3D 数据处理软件快速开发的开源库。支持快速开发处理 3D 数据的软件。Open3D 前端在 C++ 和 Python 中公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D 是从一开始就开发出来的,带有很少的、经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进行最小的编译。代码干净,样式一致,并通过清晰的代码审查机制进行维护。在点云、网格、rgbd 数据上都有支持。 本文是针对 3D 视觉的总结性文章,介绍了几个比较重要的知识点,希望可以在一定程度上帮助大家更深刻地理解 3D 视觉。在接下来的文章中,我们将继续介绍 3D 视觉领域算法的实现。 参考链接:https://zhuanlan.zhihu.com/p/42772630https://www.cnblogs.com/ostin/p/9237544.htmlhttps://www.cnblogs.com/CV-life/p/10105480.htmlhttps://www.cnblogs.com/chenbokai/p/6010143.htmlhttps://blog.csdn.net/xinguihu/article/details/78922005https://cloud.tencent.com/developer/article/1475778https://www.jianshu.com/p/ffedad5e8e30https://zhuanlan.zhihu.com/p/42084058