雙目立體視覺是計算機(jī)視覺中的一個重要領(lǐng)域,它利用兩個相機(jī)拍攝同一場景的不同視角的圖像,通過計算圖像之間的對應(yīng)關(guān)系,恢復(fù)出場景的三維結(jié)構(gòu)信息。雙目立體視覺的基本步驟包括雙目標(biāo)定、立體校正、立體匹配和三維重建。本文將介紹這些步驟,幫助你學(xué)會從雙目標(biāo)定到立體匹配的基本流程。
雙目相機(jī)標(biāo)定
雙目標(biāo)定是指確定兩個相機(jī)之間的幾何關(guān)系,包括內(nèi)參矩陣、外參矩陣和基礎(chǔ)矩陣。內(nèi)參矩陣描述了相機(jī)的內(nèi)部參數(shù),如焦距、主點坐標(biāo)和畸變系數(shù)。外參矩陣描述了相機(jī)的外部參數(shù),如旋轉(zhuǎn)矩陣和平移向量。基礎(chǔ)矩陣描述了兩個圖像平面之間的對極幾何關(guān)系,即任意一點在一個圖像平面上的投影與另一個圖像平面上的對應(yīng)點所在的直線滿足一個線性方程。
雙目標(biāo)定的方法有很多,常用的是基于棋盤格圖案的張氏標(biāo)定法,它利用多幅不同角度拍攝的棋盤格圖像,通過提取角點坐標(biāo)和求解最小二乘問題,得到兩個相機(jī)的內(nèi)參矩陣和外參矩陣,進(jìn)而計算出基礎(chǔ)矩陣。
tip:除了傳統(tǒng)的標(biāo)定方法的張正友標(biāo)定法,還有什么標(biāo)定方法?
傳統(tǒng)的標(biāo)定方法:除了張正友標(biāo)定法還包括椎體標(biāo)定法、光柵板標(biāo)定法、點追蹤標(biāo)定法等,這些方法通常需要事先準(zhǔn)備一些特定的標(biāo)定物體和設(shè)備,采集一定數(shù)量的標(biāo)定圖像或者對標(biāo)定物體進(jìn)行特殊處理,然后通過求解投影矩陣和外參矩陣等參數(shù),計算出相機(jī)的內(nèi)部參數(shù)和外部參數(shù)。
自標(biāo)定方法:也稱為自標(biāo)定技術(shù)或自動標(biāo)定技術(shù),它是一種無需特定標(biāo)定物體和設(shè)備,通過對場景中的特征點或輪廓線進(jìn)行跟蹤、匹配和分析,利用統(tǒng)計學(xué)或優(yōu)化算法實現(xiàn)相機(jī)標(biāo)定的方法。這種方法與傳統(tǒng)標(biāo)定方法相比,具有更高的自動化程度和更廣泛的適應(yīng)性,但在精度和穩(wěn)定性上稍有不足。
基于主動視覺的標(biāo)定方法:主要包括基于結(jié)構(gòu)光的方法和基于視覺后處理的方法。前者是通過光源和被測物體之間的互動關(guān)系,實現(xiàn)對相機(jī)內(nèi)部參數(shù)和外部參數(shù)的標(biāo)定;后者則是利用數(shù)字圖像處理技術(shù)進(jìn)行后處理,從而提高標(biāo)定結(jié)果的精度和可靠性。這些方法因其高精度、高速度、無需接觸、非侵入性等優(yōu)點,在各種工業(yè)自動化、機(jī)器人視覺等領(lǐng)域都有廣泛應(yīng)用。但是標(biāo)定過程復(fù)雜,設(shè)備成本高昂。
去畸變
標(biāo)定板法是最常用的一種方法,它可以根據(jù)標(biāo)定板上的特征點計算出相機(jī)的畸變參數(shù),然后通過畸變參數(shù)對圖像進(jìn)行畸變校正。自適應(yīng)分類法是一種基于圖像邊緣的方法,它可以通過檢測圖像邊緣來估計畸變參數(shù),然后對圖像進(jìn)行畸變校正。以圖像邊緣為基礎(chǔ)的方法是一種基于圖像邊緣的方法,它可以通過檢測圖像邊緣來估計畸變參數(shù),然后對圖像進(jìn)行畸變校正。以特征點為基礎(chǔ)的方法是一種基于特征點匹配的方法,它可以通過匹配特征點來估計畸變參數(shù),然后對圖像進(jìn)行畸變校正。以直線為基礎(chǔ)的方法是一種基于直線匹配的方法,它可以通過匹配直線來估計畸變參數(shù),然后對圖像進(jìn)行畸變校正。
tip:假如已經(jīng)通過張正友標(biāo)定獲取了相機(jī)的內(nèi)外參數(shù),接下來去畸變都可以使用什么算法?
如果已經(jīng)獲取了相機(jī)的內(nèi)部參數(shù)和外部參數(shù),可以使用 OpenCV 庫中提供的 undistort() 函數(shù)對圖像進(jìn)行去畸變處理。在這種情況下,對于常見的徑向畸變,undistort() 函數(shù)在默認(rèn)情況下使用張正友畸變模型進(jìn)行去畸變處理。具體實現(xiàn)過程如下:
根據(jù)所給的相機(jī)內(nèi)部參數(shù)和外部參數(shù),計算出投影矩陣 Q,即將相機(jī)坐標(biāo)系下的三維點轉(zhuǎn)換到像素坐標(biāo)系下的映射矩陣。
根據(jù) Q 矩陣和畸變系數(shù),計算出相機(jī)坐標(biāo)系下的徑向畸變和切向畸變的校正系數(shù)。
通過校正系數(shù)對輸入的圖像進(jìn)行去畸變處理。
極線校正(立體校正)
在雙目視覺中,極線校正是一項關(guān)鍵的預(yù)處理步驟,極線校正的主要目標(biāo)是將左右圖像的極線對齊,并且使對應(yīng)的像素在同一行上。這樣,當(dāng)進(jìn)行立體匹配時,我們只需要在一條極線上搜索對應(yīng)像素,而無需在整個圖像上進(jìn)行搜索。這極大地降低了計算復(fù)雜度,并提高了匹配的效率。
tip:有沒有不需要極線校正的立體匹配算法?極線校正是立體匹配必須要提前進(jìn)行的步驟嗎?
事實上,并不一定需要進(jìn)行極線校正才能進(jìn)行立體匹配。以下幾種算法可以在無需進(jìn)行極線校正的情況下進(jìn)行立體匹配:
基于特征的匹配算法:這類算法利用圖像中的特征點(如SIFT,SURF等)進(jìn)行匹配,在匹配過程中可以抵消一定角度的視角變化,無需極線校正。代表算法有SIFT立體匹配、SURF立體匹配等。
基于區(qū)塊的匹配算法:這類算法將圖像分割成多個區(qū)塊,然后在兩個圖像中的對應(yīng)區(qū)塊中尋找最相似的區(qū)塊進(jìn)行匹配。匹配過程中也可以抵消一定的視角變化,無需極線校正。代表算法有區(qū)塊匹配算法等。
基于光流的匹配算法:這類算法通過計算兩個圖像之間的光流場來尋找匹配,光流計算過程可以抵消一定視角變化,所以也無需進(jìn)行極線校正。代表算法有Lucas-Kanade光流算法等。
基于深度學(xué)習(xí)的匹配算法:這類算法利用深度學(xué)習(xí)網(wǎng)絡(luò)對立體圖像對進(jìn)行端到端的學(xué)習(xí)和匹配,網(wǎng)絡(luò)在訓(xùn)練過程中可以學(xué)習(xí)視角變化,所以也無需進(jìn)行極線校正。代表算法有PBC-Net等。
所以,總的來說,盡管極線校正可以簡化立體匹配的難度,但并不是立體匹配一定要提前進(jìn)行的步驟。使用上述幾種算法都可以在無需進(jìn)行極線校正的情況下實現(xiàn)立體匹配。
立體匹配
立體匹配是指尋找兩個圖像中相同物體或場景的對應(yīng)點,從而計算出它們之間的視差。視差是指同一物體在兩個圖像中投影點之間的水平距離,它與物體到相機(jī)的距離成反比,因此可以用來估計物體的深度。
立體匹配的方法有很多,以下是一些常見的立體匹配算法:
基于塊匹配的算法:這是一種經(jīng)典的立體匹配算法,它將圖像分成小的塊,然后在兩個攝像機(jī)圖像中搜索具有最小差異的塊對應(yīng)區(qū)域。常見的塊匹配算法包括貪婪匹配算法(例如最小絕對差異、最小均方差)和自適應(yīng)窗口匹配算法(例如自適應(yīng)支持窗口)。
基于特征匹配的算法:這些算法使用圖像中的特征點或特征描述符來進(jìn)行匹配。特征點可以是角點、邊緣點或其他具有顯著性的圖像點。常見的特征匹配算法包括尺度不變特征變換(SIFT)、加速穩(wěn)健特征(SURF)和特征點匹配算法(例如RANSAC)。
基于能量優(yōu)化的算法:這些算法將立體匹配問題建模為能量最小化問題。通過定義能量函數(shù)和約束條件,可以使用動態(tài)規(guī)劃、圖割(graph cut)或消息傳遞等方法來求解最優(yōu)匹配。常見的能量優(yōu)化算法包括圖割算法、Belief Propagation算法和Semi-Global Matching(SGM)算法。
深度圖生成
視差圖是由兩個不同位置的相機(jī)所拍攝到的兩張圖像組成的。深度圖則是通過視差圖來計算出物體所處的深度。以下是幾種生成深度圖的算法:
基線三角化:通過已知的相機(jī)位置和視差圖的像素坐標(biāo)之間的關(guān)系,使用三角化方法計算出物體深度。
統(tǒng)計學(xué)方法:通過對大量的視差數(shù)據(jù)進(jìn)行簡單統(tǒng)計,去除誤差和離群點得到物體深度。
基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法:使用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,對輸入的視差圖進(jìn)行處理,得到物體的深度圖。
基于深度學(xué)習(xí)和立體視覺的融合方法:將深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)和立體視覺算法結(jié)合起來進(jìn)行深度圖生成,提高深度圖的精度和魯棒性。
tip:深度圖和視差圖有什么區(qū)別?
視差圖指存儲立體校正后單視圖所有像素視差值的二維圖像,是左圖和右圖對應(yīng)點的x差值,單位一般是像素單位。深度圖是在視差圖基礎(chǔ)上生成的圖像,它的像素值表示場景中各點到相機(jī)的距離。深度圖是一種單通道灰度圖像,其中像素值越小表示物體距離相機(jī)越近,像素值越大表示物體距離相機(jī)越遠(yuǎn)。深度圖可以用于計算物體的三維坐標(biāo),也可用于機(jī)器視覺和計算機(jī)圖形學(xué)中的三維重建、虛擬現(xiàn)實等領(lǐng)域。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4762瀏覽量
100541 -
矩陣
+關(guān)注
關(guān)注
0文章
422瀏覽量
34502 -
視覺
+關(guān)注
關(guān)注
1文章
146瀏覽量
23893
原文標(biāo)題:從零開始:入門雙目視覺你需要了解的知識
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論