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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

什么是单应矩阵和本质矩阵

發布時間:2024/7/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是单应矩阵和本质矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知乎上面的大牛還是很多,直接搜Homography或者單應矩陣就能得到很多大神的回答,可能回答中的一句話或者一個鏈接就夠自己學習很久。

其實在之前研究雙目視覺的時候就接觸了對極幾何,通過視覺就可以得到物體的遠近信息,這也是特斯拉等自動駕駛甚至可以完全使用攝像頭而不使用雷達的原因。

通過下面這幅圖說明一下匹配點必須在極線上。在單鏡頭下,同一個徑向的物體P、Q的成像是重合的,所以我們無法判斷物體的前后遠近關系,在雙目視覺中,利用兩個鏡頭對同一場景進行捕捉,相當于換了一個視角觀察,或者說引入了鏡頭相對位置這個先驗信息,從而可以利用兩個鏡頭分別捕捉的圖像進行信息融合。這時問題的關鍵就是在兩幅圖像之間找到對應點。我們當然可以使用SIFT等特征點描述子進行匹配,但是,對極幾何利用極平面的特殊性質將對應點約束在另外一幅圖像的極線上,將搜索范圍從2D減少到1D。

本質矩陣

剛才提到我們引入了鏡頭相對位置的先驗信息,兩個鏡頭對于彼此的位置是已知的(通過極點),那么這種相對位置在數學上是怎么表示的呢?其實這就是基礎矩陣。最基本的空間變換是平移和旋轉,本質矩陣Essential Matrix就包含了旋轉R和平移T,因為只是鏡頭相對位置,所以不包含相機焦距等內參。本質矩陣的推導主要利用的是三個紅色的向量在極平面內共面,即三個向量混合積(點乘和叉乘)為0,使用的坐標系是相機坐標系。

叉乘(向量的外積),結果還是一個向量,新的向量c垂直于向量a和b,按照右手螺旋法則,長度是a和b張開的平行四邊形的面積。相機坐標系是以相機的鏡頭(光心)為原點,z軸為鏡頭的徑向,和成像平面垂直。

將圓括號中的叉乘改寫成矩陣形式,最后可以得到

本質矩陣的求解和其中旋轉和平移矩陣的求解。矩陣是3x3大小的,需要8個點來求解。

基礎矩陣

剛才的本質矩陣是在對應點在相機坐標系下的對應關系,而我們更關心的是成像,即對應點在圖像物理坐標系(也叫平面坐標系)下的對應關系。圖像物理坐標系大致和相機坐標系一樣,但是原點移到了成像面上,為光軸與成像平面的交點。

相機坐標系到圖像物理坐標系之間的轉換:

圖像物理坐標系和我們日常在計算機進行數字圖像處理所使用的坐標系依然不一樣,前者是以m為單位的,表示的是成像時距離原點的絕對長度,而我們通常使用的是像素坐標系。像素坐標系以像素為單位,如圖像大小為255x255,表示這個圖像長寬都是255個像素。像素坐標系的原點選在圖像左上角,x軸為水平向右。OpenCV、OpenGL等庫的坐標系即和圖像坐標系一致。當然明顯看出CCD傳感器以mm單位到像素中間有轉換的。舉個例子,CCD傳感上上面的8mm x 6mm,轉換到像素大小是640x480. 假如dx表示像素坐標系中每個像素的物理大小就是1/80. 也就是說毫米與像素點的之間關系是piexl/mm.

OpenCV中函數findFundamentalMat可以找到基礎矩陣Fundamental matrix。

單應性矩陣Homography matrix

之前的對極幾何中兩個視圖中點的對應關系是點對應直線(極線),而單應矩陣是點對應另外一幅視圖中的點,約束力更強。

H矩陣的推導,來自相機在不同位姿拍攝同一個三維平面。之所以H矩陣約束力更強,是它不僅僅引入了兩個鏡頭之間的旋轉和平移變換,還包含了景深信息d。

通過相機位置坐標在法向量方向的投影(乘轉置)表示景深距離d。

兩個相機之間的位置包含了平移和旋轉,他們之間的關系可以用等式來表示:

如果研究的對象是相機像素坐標,應該有內參矩陣K的參與,對應的單應矩陣為:

注意這里的單應矩陣中包含了三大信息,旋轉矩陣R,平移矩陣T,景深信息d。R和T描述兩個相機之間的關系,所以是唯一確定的,而d是兩個相機所捕獲的平面上點到其中一個相機的距離,為了用單應矩陣描述兩幅視圖中像素點的對應關系,這個d應該保持一致,即相機所捕獲的場景應該是平面,且是垂直于相機1法向量的平面。

特別的,在純旋轉情況下,兩個相機之間沒有平移關系T,即

這樣單應矩陣H就退化為H=R,H中不再包含d,所以就可以擺脫拍攝景物必須在同一平面的限制。而我們通常無法獲得景深信息d,所以這也讓我們不必再求解d。換一種思路,即便相機之間存在平移,但是當景物在無窮遠處時,d可以認為無窮大,也可以將H中的第二項舍去,此時的H叫做Infinite Homography。這給我們的啟發或者說解釋就是,在使用相機拍攝全景圖時,最好保證相機只在原地旋轉,沒有平移運動,或者拍攝的景物是遠景,可以看作d是無窮大。

那么,當實在無法滿足上述條件,即有平移,且無法保證共面,這種情況下不同的點的參數d不一樣,但是單應矩陣只能選擇一個d,肯定會出現誤差。當相機的平移向量相對于場景深度而言足夠小時,可以使用RANSAC找到一個滿足大部分點的矩陣,誤差是可以接受的,這應該就是orbslam中提到的低視差情形。

單應矩陣的本質

單應矩陣的本質是利用了平面信息(平面法向量n和相機到平面的距離d),建立起像素坐標到相機系坐標的關系。推導過程如下:

像素系齊次坐標

原理上可由齊次坐標得到相機坐標系下的坐標:,K是相機內參,K一般是已知的,現在問題是深度z未知。而如果我們除了知道p的點坐標,還知道它所在平面的信息,就可以求出z。

p所在平面的法向量是n,p所在平面到相機的距離d,那么,將代入,得到

最后,參考鏈接還總結了單應矩陣和對極幾何的關系。所謂的“六點法”,四個共面點確定H,兩個非共面點確定極點。極點確定了,H也知道,那么其他任意點的極線就能畫出來了,不用本征矩陣我們也可以構造極線幾何。

而在計算本質矩陣中,又必須滿足8點不能共面。這是因為共面的話求解E會有無窮多個解滿足方程,所以8點法求解不能適用于共面的情況。

這篇博客連同上一篇研究了圖像變換和單應矩陣、本質矩陣。其實在學習線性代數和矩陣論時就應該認識到,矩陣不僅能表示狀態,還可以表示運動。真實世界中的物體在不同的成像條件下(特指相機的位置不同,兩個相機之間存在旋轉和平移),會得到不同的圖像,這些圖像之間可以認為存在仿射變換或者透視變換,如果用矩陣來描述就可以使用單應矩陣或者本質矩陣。其實單應矩陣適用于相機發生了旋轉的平面場景(或者近似平面場景),應用的限制性和對點的限制性(點到點)都更強;本質矩陣和基礎矩陣適用范圍更廣,它們都包含了相機之間的旋轉和平移信息,其中基礎矩陣更常用,因為它具體描述的是兩個相機得到的圖像的像素級之間的關系,而本質矩陣只描述了兩個相機之間的關系,換一句話說,基礎矩陣相比于本質矩陣,不僅包含兩個相機之間的旋轉平移信息,還包含了相機內參。相機內參就包括了鏡頭焦距、像素大小等信息,這就涉及到相機標定,可以通過一個仿射矩陣表示。不過在理論上通過四對匹配點對就可以計算得到,而OpenCV的一個函數就可以實現。

Reference:

1.知多少https://blog.csdn.net/heyijia0327/article/details/53782094

2.坐標系https://blog.csdn.net/lyl771857509/article/details/79633412

3.庖丁解牛侯凱https://www.cnblogs.com/houkai/p/6661607.html

4.葵花寶典https://link.zhihu.com/?target=http%3A//www.robots.ox.ac.uk/%7Evgg/hzbook/

5.一分鐘:https://blog.csdn.net/Yong_Qi2015/article/details/82858582

總結

以上是生活随笔為你收集整理的什么是单应矩阵和本质矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

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