0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度剖析三维数据基础

3D视觉工坊 来源:3DCV 2023-07-06 10:22 次阅读

1 三维数据的采集方式

1.1 激光扫描仪

激光扫描仪(Lidar)是一种常用于采集三维数据的仪器,它使用激光光束进行测量和感知,通过发射激光束并测量其返回时间和强度来获取目标物体的距离和形状信息,并计算出每个扫描点的准确坐标。这些点的集合形成了三维点云数据。激光扫描仪可大面积、高分辨率、快速地获取物体表面各个点的(x,y,z)坐标、反射率、(R.G.B)颜色等数据信息,可以快速复建出1:1彩色三维点云模型,用于后续的三维重建、建模和测量分析等应用。

1.2 深度相机

传统的RGB彩色普通相机称为2D相机,只能拍摄相机视角内的物体,没有物体到相机的距离信息,只能凭感觉感知物体的远近,没有明确的数据。而RGB-D深度相机(又称3D相机,其中D代表Depth为深度信息)可获取物体到相机的距离信息,加之2D平面的X,Y坐标,可计算出每个点的三维坐标,进行三维重建、目标定位、识别等应用。

1.3 双目相机

双目相机,也称为立体视觉相机或双目立体视觉系统,是一种通过两个摄像头同时拍摄来模拟人类双眼视觉的相机系统。每个摄像头都可以独立地捕捉场景的图像,然后通过计算机算法将这些图像进行立体视觉匹配,从而得到场景深度信息。通过测量摄像头对应像素上图像的位移,结合摄像头之间的已知基线长度,可以使用三角测量原理计算出场景中点的三维位置。这使得双目相机在许多应用领域中非常有用,例如三维重建、立体视觉测距、物体识别和跟踪等。

1.4 光学相机多视角重建

使用相机拍摄物体的多张照片,再通过相关三维重建软件将照片配准定位,进行特征提取与匹配,随后生成稀疏点云并进行稠密重建操作。SFM是指通过分析多个二维图像之间的共同点和摄像机运动信息,推导出场景的三维结构。基本的假设是,同一场景的不同图像是通过摄像机在空间中移动而产生的。SFM利用这些视角和对应点之间的几何关系,通过三角定位、尺度恢复、摄像机运动估计等算法,将这些视角投射到一个共同的三维坐标系中。多视角重建这类软件有Agisoft Photoscan、VisualSFM等。

7d888cbc-1b91-11ee-962d-dac502259ad0.png

**

2 三维数据的采集原理

2.1 三角测距

三角测距是一种常用的测量方法,基于三角形的相似性原理进行测量。其原理可以简化为以下几个步骤:

  1. 建立一个已知长度的基准线段:在测量前,建立一个已知长度的基准线段。
  2. 观测目标物体和基准线段之间的角度:使用测量仪器,测量目标物体和基准线段之间的两个角度。这可以通过对目标物体和基准线段分别放置测量仪器来实现。
  3. 计算距离:利用三角形的相似性原理,通过已知角度和基准线段长度,根据三角函数的关系,可以推导出目标物体到观测点的距离。

7ded66e6-1b91-11ee-962d-dac502259ad0.png

image.png

2.2 TOF

TOF(Time of Flight)是一种基于光的测距技术,通过测量光信号从发射到接收所需的时间来确定物体到传感器之间的距离。以下是TOF的工作步骤:

  1. 发射光脉冲:传感器发射一个光脉冲,这个光脉冲会被物体反射或散射。
  2. 接收光信号:传感器接收并记录反射或散射的光信号。这个信号在光脉冲返回传感器之后,经过一段时间才能被接收到。
  3. 测量时间差:通过测量光脉冲发射和接收之间的时间差,即发射光脉冲和接收到反射或散射光信号之间的时间间隔,确定物体到传感器之间的距离。
  4. 计算距离:根据光在真空中的传播速度(一般取光速),将测量得到的时间差转换为距离。

TOF的优点是测量精度高、测量范围广,可以应用于不同的环境和物体表面。它在工业机器人自动驾驶等领域被广泛应用。

7e060778-1b91-11ee-962d-dac502259ad0.png

2.3 双目视觉

双目视觉是一种基于人类双眼感知深度的视觉技术。它模拟了人类的双眼视觉系统,通过两个相距一定距离的摄像头来获取两个不同角度的图像,并通过计算两个图像之间的视差(disparity)来推断物体的距离和深度信息。以下是双目视觉的工作步骤:

  1. 摄像头安装:两个摄像头以一定距离安装在同一平面上,使得视野有一定的重叠区域。
  2. 图像获取:通过两个摄像头分别获取两个不同角度的图像,类似于人的双眼。
  3. 图像校正:根据摄像头的内外参数,对两个图像进行校正,以消除图像畸变和对齐两个摄像头的视图。
  4. 匹配特征点:在两个校正后的图像中,通过特征点提取算法(如SIFT、SURF等)找到两个图像中具有相似特征的点。
  5. 计算视差:对于找到的匹配特征点,计算它们在两幅图像中的水平位置差异,这个差异称为视差。视差值越大,表示物体距离摄像头越近;视差值越小,表示物体距离摄像头越远。
  6. 距离计算:通过已知的摄像头参数、基线距离和三角测量原理,将视差转换为物体的距离值。距离值随着视差的增大而减小,反映物体与摄像头的距离远近。

双目视觉在机器人导航、三维重建、物体识别和跟踪等领域得到广泛应用,能够提供精确的深度信息,以增强对环境的感知能力。

7e2d4cd4-1b91-11ee-962d-dac502259ad0.png

2.4 结构光

结构光是一种常见的三维感知技术,其原理基于对物体表面投射结构光,并通过相机来捕捉和分析光的形状和变化。以下是结构光测量的原理步骤:

  1. 投射结构光:在测量区域的一侧,使用光源(通常是激光器或投影仪)发射结构化的光,例如光栅纹理、条纹或编码图案。
  2. 光的投射和形变:结构光经过测量区域后,会与物体表面的形状和纹理相互作用。光在物体表面上会发生投影、反射和散射等变化。物体表面的形状和纹理会导致结构光的形变。
  3. 形变捕捉:在测量区域的另一侧,放置相机或传感器来捕捉反射、散射或投影的结构光。相机记录下物体表面的结构光形变和模式。
  4. 形变分析:通过分析相机捕捉到的结构光图像,可以反推出物体表面的形状和尺寸。这可以通过计算结构光的位移、形变或纹理变化进行实现。
  5. 三维重建:通过相机捕捉到的结构光图像,以及对光源和相机之间的几何关系,进行三维重建,将物体表面的形状和纹理转化为一个三维模型或点云数据。

7e4df29a-1b91-11ee-962d-dac502259ad0.png

image.png

3 点云基础

3.1 点云概念

点云(Point Cloud)是三维空间中,表达目标空间分布和目标表面特性的点的集合,点云通常可以从深度相机中直接获取,也可以从CAD等软件中生成。点云是用于表示多维点集合的数据结构,通常用于表示三维数据。在3D点云中,这些点通常代表采样表面的X,Y和Z几何坐标。当存在颜色信息时,点云变为4D。

7e88749c-1b91-11ee-962d-dac502259ad0.png

根据激光测量原理得到的点云,包含三维坐标信息(xyz)和激光反射强度信息(intensity)(激光反射强度与仪器的激光发射能量、波长,目标的表面材质、粗糙程度、入射角相关)。根据摄影测量原理得到的点云,包括三维坐标(xyz)和颜色信息(rgb)。结合两个原理的多传感器融合技术(多见于手持式三维扫描仪),能够同时得到这三种信息。三维点云是真实物体表面的离散采样,点云处理就是从点云中提取到我们需要的信息。

3.2 点云类型

为了涵盖能想到的所有可能的情况,PCL中定义了大量的point类型,在point_types.hpp中有完整目录。

  1. PointXYZ - Members: float x, y, z

最常用的数据类型之一,只表示3D xyz信息。用户可以访问点[i].data[0]或点[i].x

union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
  1. PointXYZI - Members: float x, y, z, intensityXYZ+强度类型。由于大多数点操作会将data[4]数组的第四部分设置为0或1(用于转换),因此不能将intensity设置为同一结构的成员,因为它的内容将被覆盖。
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
union
{
struct
{
floatintensity;
};
floatdata_c[4];
};
  1. PointXYZRGBA - Members: float x, y, z; std::uint32_t rgba与PointXYZI类似,除了rgba包含打包成无符号32位整数的rgba信息外。由于联合声明,还可以按名称单独访问颜色通道。
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
union
{
union
{
struct
{
std::uint8_tb;
std::uint8_tg;
std::uint8_tr;
std::uint8_ta;
};
floatrgb;
};
std::uint32_trgba;
};
  1. 其他类型| 点云类型 | 描述 || --- | --- || PointXYZRGB | float x, y, z; std::uint32_t rgba;与PointXYZRGBA相同 || PointXY | float x, y; 简单的二维x-y点结构 || InterestPoint | float x, y, z, strength;与PointXYZI类似,除了强度包含关键点强度的度量 || Normal | float normal[3], curvature;最常用之一,表示给定点处的曲面法向,以及曲率的度量 || PointNormal | float x, y, z; float normal[3], curvature;保存XYZ数据、曲面法线和曲率的点结构 || PointXYZRGBNormal | float x, y, z, normal[3], curvature; std::uint32_t rgba;保存XYZ数据、RGBA颜色以及曲面法线和曲率的点结构 || PointXYZINormal | float x, y, z, intensity, normal[3], curvature;保存XYZ数据和强度值以及曲面法线和曲率的点结构 || PFHSignature125 | float pfh[125];包含给定点的PFH(点特征直方图)的简单点类型 || FPFHSignature33 | float fpfh[33];包含给定点的FPFH(快速点特征直方图)的简单点类型 || PointSurfel | float x, y, z, normal[3], rgba, radius, confidence, curvature;包含XYZ数据、曲面法线、RGB信息、比例、置信度和曲面曲率的复杂点类型 |

更多点云类型参见:点云类型(https://blog.csdn.net/tobebest_lah/article/details/106241406)

3.3 点云储存格式

点云目前的主要存储格式包括:PCD、pts、LAS等。其中PCD 存储格式是 PCL 库官方指定格式,PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符。

7eaef536-1b91-11ee-962d-dac502259ad0.png

其中WIDTH用点的数量表示点云数据集的宽度。根据是有序点云还是无序点云,WIDTH有两层解释:

  1. 它能确定无序数据集的点云中点的个数(和下面的POINTS一样);
  2. 它能确定有序点云数据集的宽度(一行中点的数目)。

HEIGHT用点的数目表示点云数据集的高度。类似于WIDTH,HEIGHT也有两层解释:

  1. 它表示有序点云数据集的高度(行的总数);
  2. 对于无序数据集它被设置成1(被用来检查一个数据集是有序还是无序)。

无序点云是指通过3D扫描或其他方式获取的点云数据,其中点的顺序没有特定的结构或排列规则。每个点具有特定的位置信息,但不一定按照任何特定的顺序排列。无序点云的点之间没有明确的连接关系,可以看作是随机散布在空间中的点。有序点云是指点云数据按照特定的结构或排列规则进行有序排列的数据。例如,有序点云可以是通过三维传感器按照网格或栅格的方式获取的数据,其拓扑结构比较明确。有序点云的点之间具有一定的连接关系,常用于表示网格模型或体素数据。PCD 不是第一个支持3D点云数据的文件类型,尤其是计算机图形学和计算几何学领域,已经创建了很多格式来描述任意多边形和激光扫描仪获取的点云。常见的有下面几种格式:

  1. PLY 是一种多边形文件格式 , 由Stanford大学的Turk等人设计开发;
  2. STL 是3D Systems公司创建的模型文件格式,主要应用于CAD、CAM领域;
  3. OBJ 是从几何学上定义的文件格式,首先由Wavefront Technologies开发;
  4. X3D 是符合ISO标准的基于XML的文件格式,表示3D计算机图形数据;
  5. 其他。

以上所有格式都有其优缺点,因为他们是在不同时期为了满足不同的需求所创建的,那时很多当今流行的传感器和算法都还没有发明。其中一部分点云储存的格式可以在PCL中进行输入输出的转换。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 光学
    +关注

    关注

    3

    文章

    702

    浏览量

    35690
  • 测量仪器
    +关注

    关注

    3

    文章

    640

    浏览量

    41652
  • 激光光束
    +关注

    关注

    0

    文章

    15

    浏览量

    6890

原文标题:深度剖析三维数据基础

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    三维曲线加速度

    想搞一个三维曲线图,显示加速度。将加速度传感器的数据通过单片机串口发给计算机,再用labview将数据显示在三维曲线图上。哪位有好的建议,就发一下啊。有过相同经验的更好,可以提供一些程
    发表于 10-23 17:12

    三维波形数据如何导入excel

    三维波形数据如何导入excel
    发表于 08-07 15:47

    ZLDS200 2D传感器扫描得到的测量数据,可以做出三维轮廓坐标图及三维轮廓模拟图吗?

    ZLDS200 2D传感器扫描得到的测量数据,可以做出三维轮廓坐标图及三维轮廓模拟图吗?
    发表于 12-23 07:57

    三维逆向工程的成果及应用案例

    `三维逆向工程的成果及应用案例何为逆向工程?为适应现代先进制造技术的发展,需将实物样件或手工模型转化为Sence数据,以便利用快速成形系统、计算机辅助系统等对其进行处理,并进行修改和优化。逆向工程
    发表于 03-02 15:12

    什么让三维扫描数据栩栩如生

    `什么让三维扫描数据栩栩如生1.应用需求描述利用三维扫描仪扫描三维数据,并贴上色彩,可以用将产品三维
    发表于 08-02 10:18

    三维快速建模技术与三维扫描建模的应用

    `三维快速建模技术与三维扫描建模的应用随着数字化测量的发展,三维激光扫描仪能够快速地以多角度、高效、高精度方式获取物体的表面三维数据,可以用
    发表于 08-07 11:14

    整车三维扫描及其零部件三维扫描解决方案

    报告,客户对这个很感兴趣。汽车整车扫描得到的数据,我们可以用来干什么呢?首先,我们扫描得出的数据,可以进行数据存档,便于后面需要获取这款车的三维尺寸
    发表于 08-21 10:17

    广西扫描服务三维检测三维扫描仪

    、医疗、教育等行业都在广泛使用三维扫描技术。中科院广州电子的Creaform便携式激光三维扫描仪扫描工件的三维数据,通过实物与理论二
    发表于 08-29 14:42

    三维设计应用案例

    CAD是目前工业制造产品设计的重要软件之一,广泛应用于机械、建筑等领域。而常用的CAD软件,也就是所谓的三维制图软件,较二的图纸和二的绘图软件,三维CAD软件能够更加直观、准确地反
    发表于 07-03 07:06

    Handyscan三维扫描仪对户外大型灯箱三维扫描解决方案

    `近期我们接到一个与广告行业相关的客户,他们是一家专业设计、改装户外广告灯箱的公司,目前是有一个大型户外广告灯箱,想要通过三维扫描,获取其精准的三维数据,并据此逆向建模设计,最终得出满足自己需求
    发表于 07-15 10:52

    Handyscan三维扫描仪机械零部件三维扫描抄数服务

    准确率就会打折。二是一些特殊的孔位和弧度单用卡尺无法测出,数据不够全面,就可能会影响对产品合格情况产生误判。所以怎么才能快速进行三维检测,并且数据全面、可靠性高呢?客户联系到我司后,工程师对其平时检测
    发表于 07-21 16:52

    三维立体数字沙盘是是什么?

    `  那什么是三维立体数字沙盘呢?三维立体数字沙盘又叫三维数字沙盘、立体数字沙盘,是利用三维技术、地理遥控技术、虚拟现实技术、触控技术等实现的。在计算机中建立一个虚拟环境,把需要展现的
    发表于 08-28 14:40

    SMARTSCAN三维扫描仪电子产品配件三维扫描服务

    设计,于是客户找到我们,希望借助三维扫描技术去进行快速的逆向工程设计。如图所示,该串行数据传输模块:尺寸偏小,且缝隙较多,本身扫描难度就比较高。而客户希望扫描时不要喷粉,尽量保留表面细节精度。在完整逆向
    发表于 09-17 16:16

    三维可视化的应用和优势

    的整体态势。  比如设备在偏僻区域(海下、深山、沙漠、分布全国各地等),可以实现无人检测,无需消耗人力物力进行检测,通过三维数据的分析可以直观的探测出设备状态和产能。  设备运行可视化:根据图像
    发表于 12-02 11:52

    如何实现三维数据的采集?

    本文主要从触摸屏工作原理、ADS7846的工作方式以及单片机89S51对ADS7846的控制等方面来分析如何实现三维数据的采集。
    发表于 04-07 06:11