計算機視覺 單應性 Homography

2021-08-28 23:32:14 字數 2759 閱讀 6028

在orb-slam初始化的時候,作者提到,如果場景是平面,或者近似平面,或者低視差時,我們能應用單應性矩陣(homography),這三種情形在我應用svo的過程中頗有同感,打破了我對矩陣的固有映像,即只能用於平面或近似平面。但是我不知道如何去具體分析這裡面的誤差,比如不共面的情況時,應用矩陣將乙個影象座標從影象1投影到影象2時,它會落在影象哪個位置?和實際位置的誤差該怎麼計算?誤差會有多大?和哪些因素有關?另外,為何相機只做純旋轉運動時,不管平面還是非平面,矩陣都能應用?等等,一些列問題,讓我感覺對homography了解很粗淺。

先簡單回顧我腦海裡的矩陣,讓大家有點代入感,原諒我的囉嗦,進入正文以後就會盡量言簡意賅。在沒做視覺slam以前,通過opencv大概知道:利用兩個影象中至少四個特徵點能夠求解乙個單應性矩陣(homography matrix),然後用這個單應性矩陣能夠將影象1中的某個座標變換到影象2中對應的位置。然而,那時忽略了兩個影象能夠計算的前提條件。在學slam過程中,知道矩陣的推導是來自於相機在不同位姿拍攝同乙個三維平面,所以使用opencv計算單應性矩陣的時候前提是兩個影象對應區域必須是同一平面。

最近,劉浩敏師兄的rkslam裡面用了多矩陣來提高魯棒性,以及加上開頭的那些疑問讓我有迫切進一步學習矩陣的想法。本文將包括三部分:的由來,矩陣的擴充套件:相機的純旋轉和非共面情形,由矩陣到6點法估計本徵矩陣。

假設相機在兩個不同位姿處拍攝乙個平面,該平面在frame 1中的法向量為,到frame 1原點距離為,具體如下圖所示 

於是,座標系1中的點可以用下式轉換到座標系2中:

注意,大寫粗體表示的是三維空間點。同時,由於三維點所在平面上,由簡單的直角三角形,可知該點沿著法線方向的投影距離應等於:或者結合起來我們能夠得到:所以我們就得到了平面單應性矩陣回憶之前提到過本徵矩陣,它只是把點對應到一條極線,而單應性矩陣約束更強,是點到點的一一對應

注意,本徵矩陣約束公式是對於歸一化影象平面座標而言的,而上述推導的是對三維空間點的。從3d到2d, 只需要將3d點向歸一化影象平面上投影。三維空間點到歸一化影象平面只是對座標縮放了,有:

從這裡我們可以發現,從歸一化影象平面座標到之間還存在乙個尺度因子,因此我們利用兩個影象對應的座標對能恢復,但從該中無法將平移和分離出來,就導致了尺度的不確定性。而利用,我們能得到,注意雖然這裡是用的相似符號,但是我們還是能得到影象座標的一一對應,計算出以後,將的座標都除以進行座標歸一化,就能得到。

先看純旋轉情形,三維座標關係如下:

對應的有我們可以發現公式h和深度d沒有關係了,無論三維點是否在乙個平面上,矩陣都能完美的符合他們之前的轉換關係。同時,平移向量為0,可以等價於所有點位於無窮遠平面上,即。從另乙個角度來看,如果位移為0,也無法計算d,d為任意值都能滿足上面點的轉換關係。所以,大家在做全景拼接的時候,要盡量只用純旋轉哦!當然,如果相機全景拼接演算法好,就當我沒說。 

好了,讓我們回到另乙個問題,即非共面情形,又不是純旋轉,那我們使用乙個矩陣來進行座標點的轉換誤差會咋樣?

假設我們有一些非共麵點,通過ransac演算法估計了乙個滿足大多數點對應關係的矩陣,那麼對於不在三維平面上的用矩陣轉換以後,會強迫它落到三維平面上,然後投影到另乙個影象歸一化平面,示意圖如下: 

也就是說實際應該對應,由於使用了錯誤的模型,它會落到。的橫縱座標通過h矩陣能夠算出,座標通過將進行旋轉矩陣和平移,再投影以後也能算出。因此兩個座標相減就能得到誤差模型。不需要精確的數學計算,單單從上面的圖,我們就能直觀的感受到當相機的平移向量相對於場景深度而言足夠小時,和之間的誤差是可被接受的,即這種情況下依然可以使用h矩陣來算座標的一一對應,這應該就是orbslam中提到的低視差情形。

乙個重要的啟示是:矩陣的這種直接計算影象座標一一對應關係的性質給解決slam中畫素點的匹配又提供了一條思路,如果乙個矩陣不行,那一幅就用多個矩陣,這正是浩敏師兄那篇ismar 2016**的重要框架基礎。而通過本徵矩陣只能計算極線,還需要沿著極線匹配。

既然說到了極線,順著上面的思路,乾脆探一探本徵矩陣。其實,上面圖中,大傢伙都看到和是位於極線上的,他們座標都知道,就能得到極線方程,如果還有另外乙個點再確定一條極線,如下圖所示 

那麼外極點就能確定,極點確定了,h也知道,那麼其他任意點的極線就能畫出來了,不用本徵矩陣我們也可以構造極線幾何。這就是所謂的「六點法」,四個共麵點確定h,兩個非共麵點確定極點。

另外,還可以解釋為什麼8點法計算求解本徵矩陣不能應用於共面的情形。我們知道乙個向量和自己叉乘結果等於0,所以有

另外,任意三維向量和的叉乘肯定垂直於向量,所以有:所以我們能得到,這說明在這種情況下有無窮多解都能滿足,這個時候還用8點法,肯定是不行了。

總算寫完了,推薦大家去讀yi ma的書《an invitation to 3d vision》上面幾乎都來自於這本書,同時之前也提到過tum的prof.cremers上課就是用的這本書。除此之外,再推薦個基於該書的課程。視覺幾何真心水深,沒有理論積累,沒有前人指點,坑是填不完的,祝好(對大家,也是對自己)。 

ref:已在總結中指出,不再列舉。

(計算機視覺)計算機視覺基礎

opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...

計算機視覺

主講老師 曹洋 課程 視覺 基礎 底 層處理 影象處理 特徵提 取 中 層處理 影象分割 相機標 定 深度 估計 運 動估計 高層處 理 3d 重建 目 標識別 視 覺基 礎 底層 處理 圖 像處理 特徵提取 中層 處理 圖 像分割 相機標定 深度估 計 運動 估計 高層處理 3d重 建 目標 識別...

計算機視覺

眾所周知,計算機不認識影象,只認識數字。為了使計算機能夠 理解 影象,從而具有真正意義上的 視覺 本章我們將研究如何從影象中提取有用的資料或資訊,得到影象的 非影象 的表示或描述,如數值 向量和符號等。這一過程就是特徵提取,而提取出來的這些 非影象 的表示或描述就是特徵。有了這些數值或向量形式的特徵...