器之心原创
作者:陈萍
打开手机进行人脸解锁;VR、AR 技术带来如此虚拟却真实的场景……3D 视觉几乎无所不能,在智能家居、智能安防、汽车电子、工业测量、新零售、智能物流等领域发挥重要作用,堪称赋能产业创新的最大推力。这些技术的背后涉及了 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(白) 的亮度值表示。0-255 之间表示不同的灰度级。而彩色图像是由三种不同颜色的灰度图像组合而成,一个为红色分量(R),一个为绿色分量(G),一个为蓝色分量(B)。
图像彩色显示法,RGB 图像三个分量,图源:https://blog.csdn.net/Hello_Chan/article/details/89094790
与二维图像类似,三维图像是在二维彩色图像的基础上又多了一个维度,即深度(Depth,D),可用一个很直观的公式表示为:三维图像 = 普通的 RGB 三通道彩色图像 + Depth Map。
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 系列、structure sensor(需结合 iPad 使用)等。点云可通过扫描的 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
从放大的点云图侧面反映了点云的缺点,可归结为以下几点:三维点云比图像多了一个维度,即深度;点云是不规则分布的,相比于图像式的规整网格更难处理;点云缺少了图像中的纹理,而是一个个孤立的点,会丢失很多信息。除此以外,点云是分布在空间中(XYZ 点)非结构化数据(无网格);在图像中,像素的数量是一个给定的常数,取决于相机。然而,点云的数量可能会有很大的变化,取决于各种传感器;点云的分辨率和离相机的距离有关。不能近距离的观察,只能在一个很远的视角才能观察整体。
下面来看一下点云结果对比,原始的 RGB-D 生成的点云结果如下:
图源:https://zhuanlan.zhihu.com/p/42084058
下面动图显示了经过深度图补全后生成的点云结果如下:
图源:https://zhuanlan.zhihu.com/p/42084058
点云的数据存储格式
点云存储文件格式有很多。一些文件格式致力于标准化与通用性,而今被多个相关软件或软件库所支持,也被大多数业内人士所认同和使用。点云目前的主要存储格式包括:pts、LAS、PCD、.xyz 和. pcap 等。选择合适的通用格式可以更好地与其它工具乃至其它组织对接,进而提高工作效率。下面简单列举一下点云的数据存储格式。
pts 点云文件格式是最简便的点云格式,直接按 XYZ 顺序存储点云数据, 可以是整型或者浮点型。如下图是截取的塑像点云的一部分。示例如下:
LAS 是激光雷达数据(LiDAR),存储格式比 pts 复杂,旨在提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。现在 LAS 格式文件已成为 LiDAR 数据的工业标准格式。示例如下:
LAS 格式点云截图,其中 C:class(所属类),F:flight(航线号),T:time(GPS 时间),I:intensity(回波强度),R:return(第几次回波),N:number of return(回波次数),A:scan angle(扫描角),RGB:red green blue(RGB 颜色值)。图源:https://www.cnblogs.com/chenbokai/p/6010143.html
PCD 存储格式,现有的文件结构因本身组成的原因不支持由 PCL 库(后文会进行介绍)引进 n 维点类型机制处理过程中的某些扩展,而 PCD 文件格式能够很好地补足这一点。PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符。
PCD 存储格式是 PCL 库官方指定格式,典型的为点云量身定制的格式。优点是支持 n 维点类型扩展机制,能够更好地发挥 PCL 库的点云处理性能。文件格式有文本和二进制两种格式。示例如下:
图源:https://cloud.tencent.com/developer/article/1475778
.xyz 一种文本格式,前面 3 个数字表示点坐标,后面 3 个数字是点的法向量,数字间以空格分隔。示例如下:
.pcap 是一种通用的数据流格式,现在流行的 Velodyne 公司出品的激光雷达默认采集数据文件格式。它是一种二进制文件。
数据构成结构如下:
整体一个全局头部 (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/42772630
https://www.cnblogs.com/ostin/p/9237544.html
https://www.cnblogs.com/CV-life/p/10105480.html
https://www.cnblogs.com/chenbokai/p/6010143.html
https://cloud.tencent.com/developer/article/1475778
https://www.jianshu.com/p/ffedad5e8e30
https://zhuanlan.zhihu.com/p/42084058
数据采集系统是大数据生态系统中的重要组成部分,它负责从各种数据源收集、整合和存储数据。根据不同的数据源、采集方法和应用场景,大数据采集系统可以分为多种类型。本文将详细介绍大数据采集系统的分类、特点和应用场景.
1. 概述
大数据采集系统是实现数据收集、处理和存储的关键环节。随着大数据技术的快速发展,大数据采集系统也在不断演进和创新。本文将从以下几个方面对大数据采集系统进行详细介绍:
大数据采集系统的分类
各类大数据采集系统的特点
大数据采集系统的应用场景
大数据采集系统的发展趋势
2. 大数据采集系统的分类
根据数据源、采集方法和应用场景的不同,大数据采集系统可以分为以下几类:
2.1 结构化数据采集系统
结构化数据采集系统主要针对关系型数据库、XML、JSON等结构化数据源进行数据采集。这类系统的特点是数据格式统一、易于处理和分析。
2.2 非结构化数据采集系统
非结构化数据采集系统主要针对文本、图片、视频、音频等非结构化数据源进行数据采集。这类系统的特点是数据格式多样、处理难度较大。
2.3 半结构化数据采集系统
半结构化数据采集系统主要针对HTML、CSV等半结构化数据源进行数据采集。这类系统的特点是数据格式介于结构化和非结构化之间,具有一定的规律性。
2.4 实时数据采集系统
实时数据采集系统主要针对实时产生的数据进行采集,如传感器数据、日志数据等。这类系统的特点是数据采集速度快、实时性强。
2.5 批量数据采集系统
批量数据采集系统主要针对定期产生的数据进行采集,如数据库备份、文件传输等。这类系统的特点是数据采集周期性强、数据量大。
2.6 网络数据采集系统
网络数据采集系统主要针对互联网上的数据进行采集,如网页数据、社交媒体数据等。这类系统的特点是数据来源广泛、采集难度较大。
2.7 移动数据采集系统
移动数据采集系统主要针对移动设备上的数据进行采集,如手机应用数据、传感器数据等。这类系统的特点是数据来源多样、用户行为特征明显。
3. 各类大数据采集系统的特点
3.1 结构化数据采集系统
数据格式统一,易于处理和分析
支持SQL查询语言,便于数据检索
可与关系型数据库无缝对接
数据质量较高,易于保证数据一致性
3.2 非结构化数据采集系统
数据格式多样,处理难度较大
需要进行文本分析、图像识别等预处理操作
可应用于自然语言处理、计算机视觉等领域
数据价值密度较低,需要大量数据进行分析
3.3 半结构化数据采集系统
数据格式介于结构化和非结构化之间
支持XPath、XQuery等查询语言
可应用于Web数据挖掘、日志分析等领域
数据质量受数据源影响较大
3.4 实时数据采集系统
数据采集速度快,实时性强
可应用于实时监控、预警系统等领域
需要高效的数据传输和处理机制
数据时效性高,但可能存在数据丢失风险
3.5 批量数据采集系统
数据采集周期性强,数据量大
可应用于数据仓库、数据备份等领域
需要高效的数据存储和管理机制
数据质量较高,但时效性较差
3.6 网络数据采集系统
数据来源广泛,采集难度较大
需要应对反爬虫技术、数据加密等挑战
可应用于舆情分析、市场调研等领域
数据质量受数据源影响较大,需要进行数据清洗
3.7 移动数据采集系统
数据来源多样,用户行为特征明显
需要考虑用户隐私和数据安全问题
可应用于用户行为分析、推荐系统等领域
数据质量受用户行为和设备性能影响
4. 大数据采集系统的应用场景
大数据采集系统在各个领域都有广泛的应用,以下是一些典型的应用场景:
4.1 金融行业
交易数据采集与分析
风险控制与预警
客户行为分析与精准营销
4.2 医疗行业
电子病历数据采集与整合
疾病预测与诊断
医疗资源优化配置
4.3 电商行业
用户行为数据采集与分析
商品推荐与个性化营销
供应链优化与库存管理
更多资讯,点击资讯活动 - 航天云网,国家工业互联网平台
HTML是用来开发网页的,它是开发网页的语言
全称HyperText Mark-up Language,超文本标记语言
标记就是标签
<标签名称></标签名称> 比如 <html></html> <h1></h1>等,标签大多数都是成对出现的。
超文本 两层含义:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页标题</title>
</head>
<body>
网页显示内容
</body>
</html>
第一行<!DOCTYPE html>是文档声明
用来指定页面所使用的html的版本, 这里声明的是一个html5的文档
<html>...</html>标签是开发人员在告诉浏览器
整个网页是从<html>这里开始的,到</html>结束
也就是html文档的开始和结束标签
<head>...</head>标签用于定义文档的头部
是负责对网页进行设置标题、编码格式以及引入css和js文件的
<body>...</body>标签是编写网页上显示的内容
网页文件的后缀是.html, 一个html文件就是一个网页,html文件用编辑器打开显示的是文本,可以用文本的方式编辑它,如果用浏览器打开,浏览器会按照标签描述内容将文件渲染成网页
VS Code全拼是 Visual Studio Code 是由微软研发的一款免费、开源的跨平台代码编辑器
目前是前端(网页)开发使用最多的一款软件开发工具
下载网址: https://code.visualstudio.com/Download
选择对应的安装包进行下载:
安装一切默认
1 标签不区分大小写,但是推荐使用小写
2 根据标签的书写形式,标签分为双标签(闭合标签)和单标签(空标签) 2.1 双标签是指由开始标签和结束标签组成的一对标签,这种标签允许嵌套和承载内容,比如: div标签 2.2 单标签是一个标签组成,没有标签内容, 比如: img标签
标签的使用形式
列表标签
网页效果
表格标签
<table>标签:表示一个表格
<tr>标签:表示表格中的一行
<td>标签:表示表格中的列
<th>标签:表示表格中的表头
属性设置
border: 1px solid black:设置边框和颜色
border-collapse: collapse:设置边框合并
网页效果
表单标签
表单用于搜集不同类型的用户输入的数据,然后可以把用户数据提交到web服务器
<form>标签 表示表单标签,定义整体的表单区域
一个表单中有很多信息组成,比如 姓名,爱好,地址等,这些内容有很多其他标签来承载
这些标签称为表单元素标签
网页效果
表单用于搜集不同类型的用户输入的数据,然后可以把用户数据提交到web服务器
两种方式的区别:
表单元素属性设置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!--
姓名 type="text" 定义单行文本输入框
密码 type="password" 定义密码输入框
性别 type="radio" 定义单选框
爱好 type="checkbox" 定义复选框
照片 type="file" 定义上传文件
个人描述 <textarea></textarea> 定义多行文本输入框
地址 <select></select> 定义下拉列表
提交 type="submit" 定义提交按钮
重置 type="reset" 定义重置按钮
按钮 type="button" 定义一个普通按钮
-->
<form action="http://192.168.1.106:8080" method="POST">
<label>姓名:</label>
<input type="text" name="username" >
<br>
<label>密码:</label>
<input type="password" name="password">
<br>
<label>性别:</label>
<input type="radio" name="sex" value="1">男
<input type="radio" name="sex" value="0">女
<br>
<label>爱好:</label>
<input type="checkbox" name="like" value="睡觉">睡觉
<input type="checkbox" name="like" value="吃饭">吃饭
<input type="checkbox" name="like" value="打豆豆">打豆豆
<br>
<label>照片:</label>
<input type="file" name="pic">
<br>
<label>个人描述:</label>
<textarea name="desc"></textarea>
<br>
<label>地址:</label>
<select name="addr">
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">广州</option>
<option value="4">深圳</option>
</select>
<br>
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="按钮">
</form>
</body>
</html>
点击提交:
可以看到服务器收到了请求报文。
*请认真填写需求信息,我们会在24小时内与您取得联系。