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