點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)

先通過圖像匹配進(jìn)行目標(biāo)識別(各種車型、行人、物體等),再通過目標(biāo)在圖像中的大小去估算目標(biāo)距離。這就要求在估算距離之前首先對目標(biāo)進(jìn)行準(zhǔn)確識別,是汽車還是行人,是貨車、SUV還是小轎車。準(zhǔn)確識別是準(zhǔn)確估算距離的第一步。要做到這一點,就需要建立并不斷維護(hù)一個龐大的樣本特征數(shù)據(jù)庫,保證這個數(shù)據(jù)庫包含待識別目標(biāo)的全部特征數(shù)據(jù)。比如在一些特殊地區(qū),為了專門檢測大型動物,必須先行建立大型動物的數(shù)據(jù)庫;而對于另外某些區(qū)域存在一些非常規(guī)車型,也要先將這些車型的特征數(shù)據(jù)加入到數(shù)據(jù)庫中。如果缺乏待識別目標(biāo)的特征數(shù)據(jù),就會導(dǎo)致系統(tǒng)無法對這些車型、物體、障礙物進(jìn)行識別,從而也就無法準(zhǔn)確估算這些目標(biāo)的距離。從上面的介紹,單目系統(tǒng)的優(yōu)勢在于成本較低,對計算資源的要求不高,系統(tǒng)結(jié)構(gòu)相對簡單;缺點是:(1)需要不斷更新和維護(hù)一個龐大的樣本數(shù)據(jù)庫,才能保證系統(tǒng)達(dá)到較高的識別率;(2)無法對非標(biāo)準(zhǔn)障礙物進(jìn)行判斷;(3)距離并非真正意義上的測量,準(zhǔn)確度較低。通過對兩幅圖像視差的計算,直接對前方景物(圖像所拍攝到的范圍)進(jìn)行距離測量,而無需判斷前方出現(xiàn)的是什么類型的障礙物。所以對于任何類型的障礙物,都能根據(jù)距離信息的變化,進(jìn)行必要的預(yù)警或制動。雙目攝像頭的原理與人眼相似。人眼能夠感知物體的遠(yuǎn)近,是由于兩只眼睛對同一個物體呈現(xiàn)的圖像存在差異,也稱“視差”。物體距離越遠(yuǎn),視差越??;反之,視差越大。視差的大小對應(yīng)著物體與眼睛之間距離的遠(yuǎn)近,這也是3D電影能夠使人有立體層次感知的原因。上圖中的人和椰子樹,人在前,椰子樹在后,最下方是雙目相機中的成像。其中,右側(cè)相機成像中人在樹的左側(cè),左側(cè)相機成像中人在樹的右側(cè),這是因為雙目的角度不一樣。再通過對比兩幅圖像就可以知道人眼觀察樹的時候視差小,而觀察人時視差大。因為樹的距離遠(yuǎn),人的距離近。這就是雙目三角測距的原理。雙目系統(tǒng)對目標(biāo)物體距離感知是一種絕對的測量,而非估算。根據(jù)上述推導(dǎo),要求得空間點P離相機的距離(深度)z,必須知道:1、相機焦距f,左右相機基線b(可以通過先驗信息或者相機標(biāo)定得到)。2、視差 :
,即左相機像素點(xl, yl)和右相機中對應(yīng)點(xr, yr)的關(guān)系,這是雙目視覺的核心問題。重點來看一下視差(disparity),視差是同一個空間點在兩個相機成像中對應(yīng)的x坐標(biāo)的差值,它可以通過編碼成灰度圖來反映出距離的遠(yuǎn)近,離鏡頭越近的灰度越亮;對于左圖中的一個像素點,如何確定該點在右圖中的位置?需要在整個圖像中地毯式搜索嗎?當(dāng)然不用,此時需要用到極線約束。如上圖所示。O1,O2是兩個相機,P是空間中的一個點,P和兩個相機中心點O1、O2形成了三維空間中的一個平面PO1O2,稱為極平面(Epipolar plane)。極平面和兩幅圖像相交于兩條直線,這兩條直線稱為極線(Epipolar line)。P在相機O1中的成像點是P1,在相機O2中的成像點是P2,但是P的位置是未知的。我們的目標(biāo)是:對于左圖的P1點,尋找它在右圖中的對應(yīng)點P2,這樣就能確定P點的空間位置。極線約束(Epipolar Constraint)是指當(dāng)空間點在兩幅圖像上分別成像時,已知左圖投影點p1,那么對應(yīng)右圖投影點p2一定在相對于p1的極線上,這樣可以極大的縮小匹配范圍。即P2一定在對應(yīng)極線上,所以只需要沿著極線搜索便可以找到P1的對應(yīng)點P2。上面是兩相機共面且光軸平行,參數(shù)相同的理想情況,當(dāng)相機O1,O2不是在同一直線上怎么辦呢?事實上,這種情況非常常見,因為有些場景下兩個相機需要獨立固定,很難保證光心完全水平,即使固定在同一個基板上也會由于裝配的原因?qū)е鹿庑牟煌耆?,如下圖所示:兩個相機的極線不平行,并且不共面。這種情況下拍攝的兩張左右圖片,如下圖所示。左圖中三個十字標(biāo)志的點,右圖中對應(yīng)的極線是右圖中的三條白色直線,也就是對應(yīng)的搜索區(qū)域。我們看到這三條直線并不是水平的,如果進(jìn)行逐點搜索效率非常低。圖像矯正是通過分別對兩張圖片用單應(yīng)性矩陣(homography matrix)變換得到,目的是把兩個不同方向的圖像平面(下圖中灰色平面)重新投影到同一個平面且光軸互相平行(下圖中黃色平面),這樣轉(zhuǎn)化為理想情況的模型。經(jīng)過圖像矯正后,左圖中的像素點只需要沿著水平的極線方向搜索對應(yīng)點就可以了。從下圖中我們可以看到三個點對應(yīng)的視差(紅色雙箭頭線段)是不同的,越遠(yuǎn)的物體視差越小,越近的物體視差越大。圖像校正后的結(jié)果。紅色雙箭頭線段是對應(yīng)點的視差上面的主要工作是在極線上尋找匹配點,但是由于要保證兩個相機參數(shù)完全一致是不現(xiàn)實的,并且外界光照變化和視角不同的影響,使得單個像素點魯棒性很差。所以匹配工作是一項很重要的事情,這也關(guān)系著雙目視覺測距的準(zhǔn)確性。相機鏡頭畸變校正原理及方法,之前介紹過,這個基本是通用的,可以用張正友校準(zhǔn)法。從上面的介紹看出,雙目系統(tǒng)優(yōu)勢:(1)成本比單目系統(tǒng)要高,但尚處于可接受范圍內(nèi),并且與激光雷達(dá)等方案相比成本較低;(2)沒有識別率的限制,因為從原理上無需先進(jìn)行識別再進(jìn)行測算,而是對所有障礙物直接進(jìn)行測量;(4)無需維護(hù)樣本數(shù)據(jù)庫,因為對于雙目沒有樣本的概念。(1)計算量非常大,對計算單元的性能要求非常高,這使得雙目系統(tǒng)的產(chǎn)品化、小型化的難度較大。所以在芯片或FPGA上解決雙目的計算問題難度比較大。國際上使用雙目的研究機構(gòu)或廠商,絕大多數(shù)是使用服務(wù)器進(jìn)行圖像處理與計算,也有部分將算法進(jìn)行簡化后,使用FPGA進(jìn)行處理。(2)雙目的配準(zhǔn)效果,直接影響到測距的準(zhǔn)確性。a. 對環(huán)境光照非常敏感。雙目立體視覺法依賴環(huán)境中的自然光線采集圖像,而由于光照角度變化、光照強度變化等環(huán)境因素的影響,拍攝的兩張圖片亮度差別會比較大,這會對匹配算法提出很大的挑戰(zhàn)。b. 不適用于單調(diào)缺乏紋理的場景。由于雙目立體視覺法根據(jù)視覺特征進(jìn)行圖像匹配,所以對于缺乏視覺特征的場景(如天空、白墻、沙漠等)會出現(xiàn)匹配困難,導(dǎo)致匹配誤差較大甚至匹配失敗。c. 計算復(fù)雜度高。該方法需要逐像素匹配;又因為上述多種因素的影響,為保證匹配結(jié)果的魯棒性,需要在算法中增加大量的錯誤剔除策略,因此對算法要求較高,想要實現(xiàn)可靠商用難度大,計算量較大。d. 相機基線限制了測量范圍。測量范圍和基線(兩個攝像頭間距)關(guān)系很大:基線越大,測量范圍越遠(yuǎn);基線越小,測量范圍越近。所以基線在一定程度上限制了該深度相機的測量范圍。下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。下載2:Python視覺實戰(zhàn)項目52講在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~