3D視覺CV界的終極體現形式,計算機如何「看」這個三維世界

2020-11-28 TechWeb

打開手機進行人臉解鎖;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 視覺領域算法的實現。

 

相關焦點

  • 3D視覺CV界的終極體現形式,計算機如何「看」這個三維世界
    這些技術的背後涉及了 3D 視覺相關內容,那麼計算機是如何「看」這個三維世界的?隨著信息技術的快速發展,計算機視覺 3D 技術已經應用到了諸多領域,推動了虛擬實境(VR)、增強現實(AR)等技術的不斷進步。3D 視覺問題變得越來越重要,它提供了比 2D 更加豐富的圖像信息。
  • 「python opencv計算機視覺零基礎到實戰」九模糊
    一、學習目標了解什麼是卷積了解模糊的使用方法與應用目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰」 第四節色彩空間
  • 五年後的計算機視覺會是什麼樣?和CV先驅們一同暢想(上) | CVPR 2019
    這幾年來,計算機視覺領域的已有問題在研究者們的努力下普遍得到了越來越好的解決,映入大家視野的新問題也越來越多。不過到了 CVPR 這個供全球計算機視覺研究者齊聚討論的盛會上,一個可能不那麼直接指導短期研究、不那麼容易形成共識問題也就自然地湧上了大家的心頭:在五到十年後的未來,計算機視覺的研究會是什麼樣子,是深度學習幾乎完全替代了目前還在使用的其他一些方法,還是我們應該期待新的革命?
  • 微軟亞洲研究院常務副院長郭百寧:計算機視覺的黃金時代到了
    計算機視覺的黃金時代「計算機視覺是通過採集、處理、分析和理解真實世界中的圖像去得到數字或符號信息的一個領域。」打開維基百科,輸入「計算機視覺」,按下回車鍵,你將看到以上的一段文字。是的,雖然對於我們大部分普通人來說,計算機視覺還是一個略顯遙遠的詞彙,但事實上,它在今天的這個時代已經成為了遍布我們生活的一項科學技術。
  • 李飛飛:在物體識別之後,計算機視覺還要多久才能理解這個世界
    上午,著名華人計算機視覺專家、斯坦福副教授李飛飛,在溫哥華會議中心面向全體與會專家學者作了長達一小時的專題報告。在昨天發布的雷鋒網文章 上篇:「李飛飛:為什麼計算機視覺對機器人如此重要? | IROS 2017」中,李飛飛介紹了視覺對生物的重要性,以及計算機視覺在物體識別任務中的飛速發展。
  • 讓機器理解三維世界,「商湯科技」暢想人工智慧3D視覺技術的未來
    賦予機器感知三維世界的「眼睛」人類擁有與生俱來的3D環境感知和理解能力,這是因為我們用兩隻眼睛來捕捉圖像,通過大腦處理形成立體視覺,從而辨認物體的形狀方位、他人的動作,輕鬆自然地跟這個三維世界交互。能否讓機器也能感知三維世界呢?或許很多人會想到給機器添加一顆攝像頭。
  • 港科大教授權龍:計算機視覺下一步將走向三維重建 | CCF-GAIR 2018
    我們有幸將於2022年在紐奧良組織這個會議。相信到時候將有上萬人參加,我們需要擔憂的是哪裡能找到可容納這麼多人的場地。什麼是計算機視覺?計算機視覺的本質是對圖像進行理解。「理解」這個詞沒有準確的定義,事實上計算機無法做到「理解」,只能做到認知。計算機視覺的終極目的就是達到認知。我們研究計算機視覺的目的是得到視覺特徵,有了視覺特徵才能開展一系列的工作。
  • 港科大教授權龍:三維視覺重新定義人工智慧安防
    近日,由雷鋒網 & AI掘金志主辦的「第二屆中國人工智慧安防峰會」在杭州召開。峰會現場,香港科技大學教授,CVPR 2022、ICCV 2011大會主席,Altizure創始人權龍教授發表了題為《三維視覺重新定義人工智慧安防》的演講。
  • 那些影響「安防新十年」的世界級科學家們
    項目工程為導向的技術部署模式,也使得基礎研究對這個行業的改變乏善可陳。而在自主創新與新基建的時代浪潮推動下,前沿技術將進一步走到臺前。那麼下一個十年安防技術的趨勢是什麼?「中國人工智慧安防峰會 」給出的答案是:城市大腦數字視網膜化、機器視覺三維化、數據建模聯邦學習化。
  • PyTorch實現,GitHub4000星:微軟開源的CV庫
    在各種計算機視覺模型和應用層出不窮的當下,如何把握髮展脈絡,跟進領域前沿發展呢?微軟創建了一個庫,提供構建計算機視覺系統的大量示例和最佳實踐指導原則。此外,微軟團隊表示,希望通過該項目回答計算機視覺領域的常見問題、指出頻繁出現的缺陷問題,並展示如何利用雲進行模型訓練和部署。該庫中所有示例以 Jupyter notebooks 和常見工具函數的形式呈現。所有示例均使用 PyTorch 作為底層深度學習庫。
  • 「CV系列」 人眼的解析度
    「CV」系列視頻來了!CV是Computer Vision的縮寫,中文多翻譯為計算機視覺。計算機視覺是一個非常宏大的話題,這個系列的定位並非要實現全面無遺漏的介紹,而是希望從簡單的概念著手,儘量避免使用生澀的專業詞彙,力求讓不具備專業背景知識的人也能夠在看完視頻後發出「哦,原來是這樣!」的感嘆。
  • 「python opencv視覺零基礎」十四、直方圖反向投影
    前文提醒:博主正在參加博客之星評比,成功入選Top200,現在暫居第九歡迎各位點擊了解更多幫我投票,非常感謝~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 三維感知與三維數據分析最新進展 - 3D傳感&人工智慧前沿科技論壇
    在這裡盧策吾展示了一個視頻,一個機械臂可以在與三維物體的互動(嘗試抓取)中學習先驗。對三維世界的理解可以輔助機器人工作,機器人與世界的交互也可以增進視覺理解。章國鋒 - 「視覺 SLAM 技術及應用」浙江大學 CAD&CG 國家重點實驗室教授、博導章國鋒的報告主題是
  • 「2018 第六屆全國計算機學科博士後論壇」今天召開,鵬城實驗室...
    「2018 第六屆全國計算機學科博士後論壇」於 12 月 16 日在鵬城實驗室召開,是進一步做好該項工作,擴大博士後與社會各界的交流機會,促進計算機學科博士後準確把握國際視野和國家需求。三位教授的研究領域均為計算機視覺。這個環節的主持人是鵬城實驗室副主任陳長汶。鵬城實驗室副主任陳長汶首位講者是美國華盛頓大學黃正能教授,他的報告主題是「從視覺大數據對三維實體世界的協同探索」。
  • 變態「三角戀」?世界知識、大腦和計算是AGI的新「三駕馬車」
    【新智元導讀】「冰鎮椅子」和「彩虹蕉」見過沒?反正神經網絡要淚奔了。近年來,吃數據的人工智慧狹隘性日益凸顯,而來自舊金山的科學家們,認為智能來源於歸納偏差,他們試圖通過已知的世界屬性、大腦的物理結構和算法來構建一種新的世界模型。看到下面這個場景,你會想到啥?
  • 3D視覺:一張圖像如何看出3D效果?
    原創 Synced 機器之心機器之心原創作者:陳萍不同於人類,計算機「看待」世界有自己的方式。為了達到類似人類的視覺水平,各種算法層出不窮,本篇就來窺探其冰山一角。
  • 人工智慧與計算機視覺
    今年我們看到vivo在產品上不少創新,比如AI拍照、商用屏下指紋技術等等,這些都是基於生物特徵(biometrics)的鑑別技術,除此之外還有對人臉、虹膜、指紋、聲音等特徵上的識別,這些大多涉及到視覺信息,正是體現了計算機視覺的應用性,那什麼是計算機視覺呢?
  • 人腦與卷積神經網絡的詭異對應,識別三維圖形反應模式非常相似
    近日,有研究團隊發現了詭異的現象:在識別三維圖形方面,大腦和AI竟存在驚人的相似!在人腦中,視覺信息穿過多個皮質,每個皮質都解釋圖像的不同方面,最終將我們對周圍世界的感知拼湊在一起。區域的神經元如何呈現二維形狀」,《當代生物學》上的新論文詳細描述了該區域是如何呈現三維形狀碎片的。
  • 人腦與卷積神經網絡的詭異對應,識別三維圖形反應模式非常相似
    近日,有研究團隊發現了詭異的現象:在識別三維圖形方面,大腦和AI竟存在驚人的相似! 在人腦中,視覺信息穿過多個皮質,每個皮質都解釋圖像的不同方面,最終將我們對周圍世界的感知拼湊在一起。
  • 一個超乾貨的3D視覺學習社區
    視覺從入門到精通」知識星球超全的資料和答案獲取,請移步到「3D視覺從入門到精通」知識星球:一個超乾貨的3D視覺社區,目前已有近2000+的小夥伴加入學習,每天都有新知識分享。星球的主要嘉賓「3D視覺從入門到精通」知識星球是一個技術社區,在這裡你可以討論任何3D視覺相關的難題、前沿技術。星球邀請了國內外高校博士(北航、慕尼黑工業大學等)、CV獨角獸公司CTO/CEO、以及各大廠的算法工程師解惑。在這裡,你可以一對一和大佬交流,提出自己在工作學習上的疑問。