<label id="okjd7"></label>
    1. <u id="okjd7"><wbr id="okjd7"></wbr></u>
    2. <u id="okjd7"><wbr id="okjd7"></wbr></u>
    3. <label id="okjd7"><rp id="okjd7"></rp></label>
      <menu id="okjd7"><i id="okjd7"></i></menu>

      1. 服務熱線

        13335127755

        需求提交
        新聞
        你的位置:首頁 > 新聞 > 知識分享

        深度相機原理揭秘--雙目立體視覺

        2018-04-04來源:編輯:admin

        原標題:深度相機原理揭秘--雙目立體視覺

        導讀

        為什么非得用雙目相機才能得到深度?

        雙目立體視覺深度相機的工作流程

        雙目立體視覺深度相機詳細工作原理

        理想雙目相機成像模型

        極線約束

        圖像矯正技術

        基于滑動窗口的圖像匹配

        基于能量優化的圖像匹配

        雙目立體視覺深度相機的優缺點

        ---------------------------------------------------

        基于雙目立體視覺的深度相機類似人類的雙眼,和基于TOF、結構光原理的深度相機不同,它不對外主動投射光源,完全依靠拍攝的兩張圖片(彩色RGB或者灰度圖)來計算深度,因此有時候也被稱為被動雙目深度相機。比較知名的產品有STEROLABS 推出的 ZED 2K Stereo Camera和Point Grey 公司推出的 BumbleBee。

        ZED 2K Stereo Camera

        為什么非得用雙目相機才能得到深度?

        說到這里,有些讀者會問啦:為什么非得用雙目相機才能得到深度?我閉上一只眼只用一只眼來觀察,也能知道哪個物體離我近哪個離我遠??!是不是說明單目相機也可以獲得深度?

        在此解答一下:首先,確實人通過一只眼也可以獲得一定的深度信息,不過這背后其實有一些容易忽略的因素在起作用:一是因為人本身對所處的世界是非常了解的(先驗知識),因而對日常物品的大小是有一個基本預判的(從小到大多年的視覺訓練),根據近大遠小的常識確實可以推斷出圖像中什么離我們遠什么離我們近;二是人在單眼觀察物體的時候其實人眼是晃動的,相當于一個移動的單目相機,這類似于運動恢復結構(Structure from Motion, SfM)的原理,移動的單目相機通過比較多幀差異確實可以得到深度信息。

        但是實際上,相機畢竟不是人眼,它只會傻傻的按照人的操作拍照,不會學習和思考。下圖從物理原理上展示了為什么單目相機不能測量深度值而雙目可以的原因。我們看到紅色線條上三個不同遠近的黑色的點在下方相機上投影在同一個位置,因此單目相機無法分辨成的像到底是遠的那個點還是近的那個點,但是它們在上方相機的投影卻位于三個不同位置,因此通過兩個相機的觀察可以確定到底是哪一個點。

        雙目相機確定深度示意圖

        雙目立體視覺深度相機簡化流程

        下面簡單的總結一下雙目立體視覺深度相機的深度測量過程,如下:

        1、首先需要對雙目相機進行標定,得到兩個相機的內外參數、單應矩陣。

        2、根據標定結果對原始圖像校正,校正后的兩張圖像位于同一平面且互相平行。

        3、對校正后的兩張圖像進行像素點匹配。

        4、根據匹配結果計算每個像素的深度,從而獲得深度圖。

        欲知詳情,且看下面詳細介紹。

        雙目立體視覺深度相機詳細原理

        1

        理想雙目相機成像模型

        首先我們從理想的情況開始分析:假設左右兩個相機位于同一平面(光軸平行),且相機參數(如焦距f)一致。那么深度值的推導原理和公式如下。公式只涉及到初中學的三角形相似知識,不難看懂。

        理想情況下雙目立體視覺相機深度值計算原理

        根據上述推導,空間點P離相機的距離(深度)z=f*b/d,可以發現如果要計算深度z,必須要知道:

        1、相機焦距f,左右相機基線b。這些參數可以通過先驗信息或者相機標定得到。

        2、視差d。需要知道左相機的每個像素點(xl, yl)和右相機中對應點(xr, yr)的對應關系。這是雙目視覺的核心問題。

        2

        極線約束

        那么問題來了,對于左圖中的一個像素點,如何確定該點在右圖中的位置?是不是需要我們在整個圖像中地毯式搜索一個個匹配?

        答案是:不需要。因為有極線約束(名字聽著很嚇人)。極線約束對于求解圖像對中像素點的對應關系非常重要。

        那什么是極線呢?如下圖所示。C1,C2是兩個相機,P是空間中的一個點,P和兩個相機中心點C1、C2形成了三維空間中的一個平面PC1C2,稱為極平面(Epipolar plane)。極平面和兩幅圖像相交于兩條直線,這兩條直線稱為極線(Epipolar line)。P在相機C1中的成像點是P1,在相機C2中的成像點是P2,但是P的位置事先是未知的。

        我們的目標是:對于左圖的P1點,尋找它在右圖中的對應點P2,這樣就能確定P點的空間位置,也就是我們想要的空間物體和相機的距離(深度)。

        所謂極線約束(Epipolar Constraint)就是指當同一個空間點在兩幅圖像上分別成像時,已知左圖投影點p1,那么對應右圖投影點p2一定在相對于p1的極線上,這樣可以極大的縮小匹配范圍。

        根據極線約束的定義,我們可以在下圖中直觀的看到P2一定在對極線上,所以我們只需要沿著極線搜索一定可以找到和P1的對應點P2。

        極線約束示意圖

        細心的朋友會發現上述過程考慮的情況(兩相機共面且光軸平行,參數相同)非常理想,相機C1,C2如果不是在同一直線上怎么辦?

        事實上,這種情況非常常見,因為有些場景下兩個相機需要獨立固定,很難保證光心C1,C2完全水平,即使是固定在同一個基板上也會因為裝配的原因導致光心不完全水平。如下圖所示。我們看到兩個相機的極線不僅不平行,還不共面,之前的理想模型那一套推導結果用不了了,這可咋辦呢?

        非理想情況下的極線

        不急,有辦法。我們先來看看這種情況下拍攝的兩張左右圖片吧,如下所示。左圖中三個十字標志的點,在右圖中對應的極線是右圖中的三條白色直線,也就是對應的搜索區域。我們看到這三條直線并不是水平的,如果進行逐點搜索效率非常低。

        左圖中三個點(十字標志)在右圖中對應的極線是右圖中的三條白色直線

        3

        圖像矯正技術

        怎么辦呢?把不理想情況轉化為理想情況不就OK了!這就是圖像矯正(Image Rectification)技術。

        圖像矯正是通過分別對兩張圖片用單應(homography)矩陣變換(可以通過標定獲得)得到的,的目的就是把兩個不同方向的圖像平面(下圖中灰色平面)重新投影到同一個平面且光軸互相平行(下圖中黃色平面),這樣就可以用前面理想情況下的模型了,兩個相機的極線也變成水平的了。

        圖像校正示意圖

        經過圖像矯正后,左圖中的像素點只需要沿著水平的極線方向搜索對應點就可以了(開心)。從下圖中我們可以看到三個點對應的視差(紅色雙箭頭線段)是不同的,越遠的物體視差越小,越近的物體視差越大,這和我們的常識是一致的。

        圖像校正后的結果。紅色雙箭頭線段是對應點的視差

        上面講到的對于左圖的一個點,沿著它在右圖中水平極線方向尋找和它最匹配的像素點,說起來簡單,實際操作起來卻不容易。這是因為上述都是理想情況下的假設。實際進行像素點匹配的時候會發現幾個問題:

        1、實際上要保證兩個相機完全共面且參數一致是非常困難的,而且計算過程中也會產生誤差累積,因此對于左圖的一個點,其在右圖的對應點不一定恰好在極線上。但是應該是在極線附近,所以搜索范圍需要適當放寬。

        2、單個像素點進行比較魯棒性很差,很容易受到光照變化和視角不同的影響。

        4

        基于滑動窗口的圖像匹配

        上述問題的解決方法:使用滑動窗口來進行匹配。如下圖所示。對于左圖中的一個像素點(左圖中紅色方框中心),在右圖中從左到右用一個同尺寸滑動窗口內的像素和它計算相似程度,相似度的度量有很多種方法,比如 誤差平方和法(Sum of Squared Differences,簡稱SSD),左右圖中兩個窗口越相似,SSD越小。下圖中下方的SSD曲線顯示了計算結果,SSD值最小的位置對應的像素點就是最佳的匹配結果。

        滑動窗口匹配原理示意圖

        具體操作中還有很多實際問題,比如滑動窗口尺寸?;瑒哟翱诘拇笮∵x取還是很有講究的。下圖顯示了不同尺寸的滑動窗口對深度圖計算結果的影響。從圖中我們也不難發現:

        小尺寸的窗口:精度更高、細節更豐富;但是對噪聲特別敏感

        大尺寸的窗口:精度不高、細節不夠;但是對噪聲比較魯棒

        不同尺寸的滑動窗口對深度圖計算結果的影響

        雖然基于滑動窗口的匹配方法可以計算得到深度圖,但是這種方法匹配效果并不好,而且由于要逐點進行滑動窗口匹配,計算效率也很低。

        5

        基于能量優化的圖像匹配

        目前比較主流的方法都是基于能量優化的方法來實現匹配的。能量優化通常會先定義一個能量函數。比如對于兩張圖中像素點的匹配問題來說,我們定義的能量函數如下圖公式1。我們的目的是:

        1、在左圖中所有的像素點和右圖中對應的像素點越近似越好,反映在圖像里就是灰度值越接近越好,也就是下圖公式2的描述。

        2、在 同一張圖片里,兩個相鄰的像素點視差(深度值)也應該相近。也就是下圖公式3的描述。

        能量函數

        上述公式1代表的能量函數就是著名的馬爾科夫隨機場(Markov Random Field)模型。通過對能量函數最小化,我們最后得到了一個最佳的匹配結果。有了左右圖的每個像素的匹配結果,根據前面的深度計算公式就可以得到每個像素點的深度值,最終得到一幅深度圖。

        雙目立體視覺法優缺點

        根據前面的原理介紹,我們總結一下基于雙目立體視覺法深度相機的優缺點。

        1

        優點

        1、對相機硬件要求低,成本也低。因為不需要像TOF和結構光那樣使用特殊的發射器和接收器,使用普通的消費級RGB相機即可。

        2、室內外都適用。由于直接根據環境光采集圖像,所以在室內、室外都能使用。相比之下,TOF和結構光基本只能在室內使用。

        2

        缺點

        1、對環境光照非常敏感。雙目立體視覺法依賴環境中的自然光線采集圖像,而由于光照角度變化、光照強度變化等環境因素的影響,拍攝的兩張圖片亮度差別會比較大,這會對匹配算法提出很大的挑戰。如下圖是在不同光照條件下拍攝的圖片:

        不同光照下的圖像對比

        另外,在光照較強(會出現過度曝光)和較暗的情況下也會導致算法效果急劇下降。

        2、不適用于單調缺乏紋理的場景。由于雙目立體視覺法根據視覺特征進行圖像匹配,所以對于缺乏視覺特征的場景(如天空、白墻、沙漠等)會出現匹配困難,導致匹配誤差較大甚至匹配失敗。

        紋理豐富(左)和紋理缺乏場景(右)

        3、計算復雜度高。該方法是純視覺的方法,需要逐像素計算匹配;又因為上述多種因素的影響,需要保證匹配結果比較魯棒,所以算法中會增加大量的錯誤剔除策略,因此對算法要求較高,想要實現可靠商用難度大,計算量較大。

        4、相機基線限制了測量范圍。測量范圍和基線(兩個攝像頭間距)關系很大:基線越大,測量范圍越遠;基線越小,測量范圍越近。所以基線在一定程度上限制了該深度相機的測量范圍。

        本公眾號后續繼續推出一系列關于深度相機原理和技術應用文章,敬請關注。

        注:轉載請注明來源,違者必究。

        友情鏈接:激光3D輪廓傳感器|激光焊縫跟蹤傳感器|山東發電機租賃|濟南資質代辦|
        <label id="okjd7"></label>
        1. <u id="okjd7"><wbr id="okjd7"></wbr></u>
        2. <u id="okjd7"><wbr id="okjd7"></wbr></u>
        3. <label id="okjd7"><rp id="okjd7"></rp></label>
          <menu id="okjd7"><i id="okjd7"></i></menu>

          1. chinese富婆voyeur_老熟妇hdxxx_中文字幕av无码一区电影dvd_男人j桶进女人p无遮挡