搜尋意圖: 如果你在找「三維視覺 是什麼」或「三維視覺 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 利用多個視角或深度信息重構和理解三維場景的技術,包括物體形狀、位置和空間關係。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
利用多個視角或深度信息重構和理解三維場景的技術,包括物體形狀、位置和空間關係。
核心概念
三維視覺的核心問題是:給定一個或多個二維圖像,如何恢復三維信息?人類視覺系統利用雙眼視差(立體視覺)、運動視差、紋理透視等多種線索進行三維感知。計算機三維視覺系統也利用類似的線索。
三維視覺的主要信息源包括:
- 立體視覺:使用兩個視角的圖像計算視差,進而得到深度。就像雙眼視覺一樣。
- 運動視覺:利用相機運動或物體運動產生的幀間變化推導三維結構。
- 單眼線索:利用光照、紋理、邊界等二維特性推斷三維。
- 深度傳感器:直接測量像素深度(如 RGB-D 相機)。
運作原理
立體視覺與視差
立體視覺原理簡單:如果兩個相機從不同視角同時拍攝同一物體,物體在左右圖像中的位置不同。這個位置差(視差)與物體距離成反比。較近的物體視差大,較遠的物體視差小。
系統首先識別左右圖像中的匹配點(同一物體在兩幅圖中的像素),計算它們的視差,再根據相機參數(焦距、基線距)計算深度。
結構從運動(SfM)
當只有單個移動相機的多幀視頻時,系統可以同時估計相機運動軌跡和場景三維結構。原理是:相同物體在不同幀中的像素位置隨相機移動而變化;通過跟蹤這些點的運動,系統可以反推相機運動和三維點的位置。
深度估計
深度估計是指從單幅或多幅圖像預測每個像素的深度值。深度估計網絡(如深度 CNN)學習圖像中的視覺特徵與深度的關係。例如,紋理漸變和物體大小變化都是深度的線索。系統通過大規模監督學習(在配有深度地真值的數據上訓練)學會這些關係。
三維物體檢測
在三維空間中定位物體,輸出物體的邊界框(三維坐標 + 尺寸 + 方向)。方法包括利用多視圖信息、RGB-D 圖像或直接從單幅圖像的深度估計和二維檢測結果推導。
實際應用
自動駕駛
自動駕駛汽車需要準確理解周圍三維環境:前方車輛的距離和速度、行人的位置、道路邊界等。採用多相機、激光雷達和毫米波雷達的三維視覺系統提供實時環境感知。三維物體檢測和深度估計是核心模塊。
機器人操作
機器人手臂進行抓取操作時,需要知道物體的精確三維位置、形狀和方向。使用 RGB-D 相機,機器人可以掃描場景生成點雲,進行物體分割和姿態估計,指導夾爪實現精確抓取。
虛擬現實與增強現實
AR 應用需要在真實視頻上疊加虛擬物體。系統必須估計相機位置和方向(「我的手機現在看著哪個方向」),這樣虛擬物體才能正確定位在現實空間中。三維場景重構和相機定位是核心技術。
醫療影像
CT 和 MRI 掃描生成三維醫學影像。三維視覺技術用於重構器官三維模型,幫助醫生進行手術規劃。例如,從二維 CT 切片重構肝臟三維模型,醫生可以從各個角度觀察,更精確地規劃切除區域。
文物數字化與製造
考古或製造領域需要對物體進行三維掃描和數字化。使用結構光、立體視覺或激光掃描,可以生成高精度的三維模型,用於存檔、複製或虛擬展示。
無人機測量
無人機搭載相機飛行,拍攝地面的多張照像。使用結構從運動技術,可以重構整個測量區域的三維地形模型,用於土木工程、農業監測或地形製圖。
常見誤區
誤區 1:認為立體視覺總是比單眼深度估計準
立體視覺原理簡單、物理直接,但實踐中需要解決點匹配問題,這在紋理缺乏的區域(如白牆)非常困難。而深度估計網絡可以利用語義信息(「白牆通常較遠」)補償紋理缺乏。在某些情況下,特別是對於紋理差的場景,深度估計網絡可能比立體視覺更魯棒。
誤區 2:更多相機視角總是更好
增加相機數量確實增加信息,但同時增加計算複雜度、同步難度和成本。實踐中需要在精度和效率間取捨。許多系統(如自動駕駛)精心選擇少數關鍵視角的組合,而不是盲目增加。
誤區 3:三維視覺只用於靜態場景
很多人認為三維視覺只能重構不動的場景。實際上,許多方法可以處理動態場景:通過分離背景和運動物體、追蹤運動物體、或使用時間一致性約束。自動駕駛中的動態物體檢測就是動態三維視覺的典型應用。
誤區 4:深度值可以直接用像素值表示
初級做法可能將深度值簡單地編碼為像素亮度。這樣的編碼範圍有限,無法表現大尺度環境的深度變化(近距 1 厘米到遠距 100 米)。需要使用對數尺度、分層表示或其他編碼方式。
與相關技術的比較
與「深度估計」的區別:深度估計是三維視覺的一個子任務,專注於預測深度圖。三維視覺更廣,還包括相機定位、物體檢測、場景重構等多個任務。
與「點雲處理」的區別:點雲是三維視覺的一個數據表示(三維點集合)。點雲處理是在點雲上進行操作(分類、分割、補全)。三維視覺還包括如何從圖像生成點雲。
與「光流估計」的區別:光流估計是二維像素運動的估計,通常不涉及三維深度。三維視覺利用光流作為中間信息推導三維。
與「神經隱函數表示」的區別:神經隱函數(NeRF)是近年來的三維表示新方法,可以從圖像直接訓練神經網絡隱式表示三維場景。傳統三維視覺通常使用顯式表示(點雲、網格)。
常見問題
為什麼說立體視覺在紋理缺乏區域容易失效?
立體視覺的核心是在兩幅圖像中找到匹配的點對。匹配依賴於圖像特徵的唯一性:如果一個區域紋理豐富,很容易找到它在另一幅圖中的對應位置;如果區域空白(如白牆或天空),所有相似的白色區塊看起來幾乎相同,算法無法確定正確的匹配。這導致深度預測錯誤或缺失。深度估計網絡可以通過學習語義信息(「這是白牆,通常較遠」)來補償這個弱點。
結構從運動(SfM)和同時定位與地圖構建(SLAM)有什麼區別?
兩者都從視頻重構三維結構和估計相機軌跡,但應用場景和約束不同。SfM 通常用於事後處理:收集全部視頻後離線計算。SLAM 用於實時應用(如機器人、AR),邊探索邊構建,需要即時處理。SLAM 通常增加運動模型和概率推理(如卡爾曼濾波)確保穩定性。另一個區別是,SfM 通常假設場景靜態,SLAM 可以處理動態障礙物。
如何訓練深度估計網絡?需要什麼樣的數據?
深度估計通常採用監督學習,需要 RGB 圖像和對應的深度地真值。數據來源包括:(1)RGB-D 相機(如 Kinect)捕捉的真實數據;(2)合成數據集(如虛擬場景生成的無限逼真圖像和深度)。大規模公開數據集包括 NYU Depth、KITTI、Cityscapes 等。損失函數通常使用逐像素的 L1 或 L2 誤差。近年來,也有無監督和自監督方法利用視頻的多幀一致性進行訓練,無需地真值深度。