器之心原創
作者:陳萍
打開手機進行人臉解鎖;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小時內與您取得聯系。