日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最详细的双目摄像头测距离(深度)的原理

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最详细的双目摄像头测距离(深度)的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于雙目攝像頭測距原理,最近在看關于雙目攝像機成像的項目,找關于雙目攝像頭標定的c++代碼,但是發現自己對雙目攝像機的成像原理不清楚,所以看代碼和看天書一樣。這篇就寫給零基礎接觸雙目攝像機成像原理的小伙伴,等看完這篇之后再去找類似的c++、python標定代碼,就簡單很多。
當然,之后也會介紹,關于幾個坐標系(世界坐標系、像素坐標系、圖片坐標系)的轉化。

**視差的概念:**是指從兩個不同位置觀察同一個物體時,此物體在視野中的位置變化與差異。從兩個觀察點看目標,兩條視線之間的夾角叫做這兩個點的視差角,兩點之間的距離稱作視差基線。

為什么單目攝像機不能測深度?
下圖從物理原理上展示了為什么單目相機不能測量深度值而雙目可以。我們看到紅色線條上三個不同遠近的黑色的點在下方相機上投影在同一個位置,因此單目相機無法分辨成的像到底是遠的那個還是近的那個。

雙目立體視覺深度相機測距流程:
(1)需要對雙目相機進行標定,得到兩個相機的內外參數、單應矩陣。
(2) 根據標定結果對原始圖像進行校正,校正后的兩張圖像位于同一平面且互相平行。
(3)對校正后的兩張圖像進行像素點匹配。
(4)根據匹配結果計算每個像素的深度,從而獲得深度圖

理想雙目相機成像模型:
首先我們從理想的情況開始分析:假設左右兩個相機位于同一平面(光軸平行),且相機參數(焦距f)一致。那么深度值的推到原理和公式如下:

根據上述推導,空間點p離相機的距離(深度)z=f*b/d,可以發現如果要計算深度z,必須要知道:
(1)相機焦距f,左右相機基線b。這些參數可以通過先驗信息或者相機標定得到。
(2)視差b。需要知道左相機的每個像素點(Xl, Yl)和右相機中對應點(Xr,Yr)的對應關系。這是雙目視覺的核心問題。
極限約束
那么問題來了,對于左圖中的一個像素點,如何確定該點在右圖中的位置,可以通過極限約束。
什么是極線呢?如下圖所示,C1,C2是兩個相機,p是空間中一點,P和兩個相機中心點C1、C2形成了三維空間中的一個平面PC1C2,稱為極平面。極平面和兩幅圖像相交于兩條直線,這兩條直線為極線。p在相機C1中的成像點是P1,在相機C2中的成像點是P2,但p的位置事先是未知的。
我們的目標是:對于左圖中的P1點,尋找它在右圖中的對應點P2,這樣就能確定P點的空間位置,也就是我們想要的空間物體和相機的距離。

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


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

非理想雙目相機成像模型
事實上,這種情況非常常見,因為有些場景下兩個相機需要獨立固定,很難保證光心C1、C2完全水平,即使是固定在同一基板上也會因為裝配的原因導致光心不水平。

有辦法喲!

我們先來看看這種情況下拍攝的兩張左右圖片,左圖中三個十字標志的點,在右圖中對應的極線是右圖中的三條白線,也就是對應的搜索區域。我們看到這三條線并不是水平的,如果進行逐點搜索效率非常低。
怎么辦呢?
把不理想的轉化為理想情況就好了。這就是圖像矯正技術。
圖像校正技術是通過分別對兩張圖片用單應矩陣變換得到的,目的就是把兩個不同方向的圖下個平面重新投影到同一平面且光周相互平行,下圖中的黃色平面,這樣就可以用前面理想情況下的模型了,兩個相機的極線也變成水平的了。


經過校正后,從上圖中我們可以看到越近的物體視差越小,越近的物體視差越大,和我們的常識一致。
上面講到的對于左圖的一個點,沿著它在右圖水平極線方向尋找和它最匹配的像素點,說起來簡單,但實際操作起來并不容易。
(1)實際上要保證兩個相機完全共面且參數一致是非常困難的,而且在計算中會產生誤差積累,因此對于左圖中的一個點,其右圖的對應點不一定恰好在極線上。應該是在極線附近,所以搜索范圍需要適當放寬。
(2)單個像素點進行比較魯棒性很差,很容易受到光照變化和視角不同的影響。
(3)基于滑動窗口的圖像匹配
上述問題的解決辦法是:使用滑動窗口。對于左圖中一個像素點(左圖中的紅色方框中心),在右圖中從左到右用一個尺寸滑動窗口內的像素和它計算相似程度,相似度的度量有很多方法,比如誤差平方法,ssd。ssd越小的位置對應的像素點就是最佳匹配結果。

具體操作中還有很多實際問題,比如滑動窗口的尺寸。
基于能量優化的圖像匹配
目前比較主流的方法都是基于能量優化的方法來實現匹配。能量優化通常會定義一個能量函數。比如對于兩張圖中像素點的匹配問題來說,我們定義的能量函數如下圖公式1.
(1)在左圖中所有的像素點和右圖中對應的像素點越近似越好,反映在圖像里就是灰度值越接近越好,也就是下圖公式2的描述。
(2)在 同一張圖片里,兩個相鄰的像素點視差(深度值)也應該相近。也就是下圖公式3的描述。

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

原文轉自:https://zhuanlan.zhihu.com/p/32199990

總結

以上是生活随笔為你收集整理的最详细的双目摄像头测距离(深度)的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。