homography, essential and fundamental matrix

本次打算梳理下最基本的幾個矩陣之間的關係以及計算,總結大體內容:

1.  單應性矩陣的基本概念

什麼是單應性矩陣?

單應性變換包含什麼樣的射影組合(projective transformation)?

單應性關係的前提條件?

單應性與極幾何的聯繫?


2. 單應性矩陣的計算

 本質矩陣和基礎矩陣的性質,上一篇博文有詳細介紹,所以此處只講計算方法了。


3. 基礎矩陣的計算及計算前提條件


4.本質矩陣的計算


本質矩陣E反映空間一點在不同視角攝像機下攝像機座標系中的表示之間的關係。
基礎矩陣F反映空間一點在不同視角攝像機下圖像座標系中的表示之間的關係。



兩攝像機光心分別是C和C',圖像平面是兩白色的平面,空間中某一個點X在兩張圖的投影點分別是x和x'。這樣的模型就是對極幾何,空間點和兩光心組成的平面叫做對極面。簡言之,不同視點拍攝的兩個場景滿足對極幾何關係。

再講下基本矩陣,存在這麼一個矩陣F,使得空間中不在兩圖像平面上的任意點X分別在兩圖像的投影座標x,x'滿足等式(x')T*F*x=0,即x'的轉置乘以F,再乘以x的結果爲0,那麼F就是左邊圖像到右邊圖像的基本矩陣,從公式上可以看出基本矩陣是有方向的,右圖到左圖的基本矩陣就是F的轉置。F矩陣有如下性質:
1、秩爲2;
2、F矩陣是一個7個自由度的3*3矩陣(3*3矩陣本身9個自由度,因爲相差一個常數因子和行列式值爲0兩個條件,減掉2個自由度),相差一個常數因此的意思是:kF(k!=0)也是基本矩陣,也就是說如果F是基本矩陣,那麼kF也是基本矩陣,所以基本矩陣不唯一,在相差一個倍數的前提下是唯一的,也就是我們可以固定矩陣中某一個非零元素的值,這樣自然少一個自由度。
這裏講下自己對基本矩陣的理解:很簡單,基本矩陣提供了三維點到二維的一個約束條件。舉個例子,現在假設我們不知道空間點X的位置,只知道X在左邊圖上的投影x的座標位置,也知道基本矩陣,首先我們知道的是X一定在射線Cx上,到底在哪一點是沒法知道的,也就是X可能是Cx上的任意一點(也就是軌跡的意思),那麼X在右圖上的投影肯定也是一條直線。也就是說,如果我們知道一幅圖像中的某一點和兩幅圖的基本矩陣,那麼就能知道其對應的右圖上的點一定是在一條直線上,這樣就約束了兩視角下的圖像中的空間位置一定是有約束的,不是任意的。基本矩陣是很有用的一個工具,在三維重建和特徵匹配上都可以用到。

最後帶下本質矩陣,本質矩陣就是在歸一化圖像座標下的基本矩陣。不僅具有基本矩陣的所有性質,而且還可以估計兩相機的相對位置關係,具體內容可參考《計算機視覺中的多視圖幾何》。

5.給定本質矩陣,如何提取相機朝向R和相對位移關係(基線方向T)



1.  單應性矩陣的基本概念

什麼是單應性矩陣?

  單應性是幾何中的一個概念。單應性是一個從實射影平面到射影平面的可逆變換,直線在該變換下仍映射爲直線。它是一對透視投影的組合射影變換羣。它描述了當觀察者視角改變時,被觀察物體的感知位置會發生何種變化。射影變換並不保持大小和角度,但會保持重合關係和交比。

  在計算機視覺領域中,空間中同一平面的任意兩幅圖像通過單應性關聯在一起(假定是針孔相機)。比如,一個物體可以通過旋轉相機鏡頭獲取兩張不同的照片(這兩張照片的內容不一定要完全對應,部分對應即可),我們可以把單應性設爲一個二維矩陣M,那麼照片1乘以M就是照片2. 這有着很多實際應用,比如圖像校正、圖像對齊或兩幅圖像之間的相機運動計算(旋轉和平移)等。一旦旋轉和平移從所估計的單應性矩陣中提取出來,那麼該信息將可被用來導航或是把3D物體模型插入到圖像或視頻中,使其可根據正確的透視來渲染,並且成爲原始場景的一部分。

  假設圖A中有一個點x的座標爲(u,v,1),圖B中對應匹配點x’座標爲(u’,v’,1),那麼單應性矩陣可以將兩個座標聯繫起來:



 注意,這種單應性聯繫不依賴於觀察場景結構,即無論相機拍攝什麼畫面,兩個畫面的單應性關係保持不變。

 

單應性變換包含什麼樣的射影組合(projective transformation)?

  首先看等距變換Isometries transformation,它相當於是平移變換和旋轉變換的複合。


上式也可以寫作:


   上式中ε等於正負1,當ε=1時,等距變換與原結構保持相同方向,即是歐氏變換,表達剛性物體運動;當ε=-1時,等距變換是逆向的。另外,R是正交矩陣。

  等距變換有三個自由度,一個旋轉,兩個平移。等距變換後目標結構的長度、角度、面積與原結構相同。


   再看相似變換(Similarity Transformation),它相當於是等距變換和均勻縮放的一個複合。


   相似變換可以從兩組匹配點計算出來,它有四個自由度,一個尺度,一個旋轉,一個平移。相似變換後目標結構內部的角度、長度比、面積比保持不變。R是正交矩陣

   

  再看仿射變換(Affine Transformation),它相當於一個平移變換和一個非均勻變換的複合。

 

  仿射矩陣A是2階非奇異矩陣,A通過奇異值分解爲旋轉rotation和非均勻縮放deformation:


  上式中U和V都是正交矩陣,對A簡單描述下:λ1和λ2代表旋轉後的目標在x和y方向的縮放比例,所以是非均勻的。Φ代表縮放的方向,θ代表旋轉的方向。

  仿射變換中A有六個自由度,2個尺度,2個旋轉,2個平移。經過仿射變換後,原來平行的線還是平行的,並且平行線段的長度之比保持不變,面積之比也是不變的。另外仿射變換是否保向,取決於A的行列式值的正負。


  

  最後看射影變換projectivetransformation,也就是單應性矩陣,他表達齊次座標的非奇異線性變換。


  v是射影變換後平行直線可能不再平行的原因。

  由於齊次座標對於尺度具有不變性,可以從H中提取該尺度(比如v),因此單應性矩陣有8個自由度。兩個平面之間的射影關係,可以通過4組匹配點計算得到(注意任意3點不可共線)。經過射影變換後,目標結構的交比cross ratio保持不變(兩個平面上分別有4個點,平面1上線段AB與線段CD之比,等於平面2上線段A’B’與線段C’D’之比)。另外變換前後共點,共線,相切,拐點,切線的不連續性和岐點保持不變。

  射影變換可以看作是一些列變換的組合:


上三角矩陣K的行列式值爲1,v不等於0,如果s的正負確定,則H是唯一的。

HP (2 dof) moves theline at infinity; HA (2 dof) affects the affine properties, but does not movethe line at infinity; and finally, HS is a general similarity transformation (4dof) which does not affect the affine or projective properties.

 

總結:

  • 射影變換後,面積的縮放與位置有關,直線變換方向也與面積有關。
  • 射影變換是不可逆的。
  • 仿射變換位於射影變換和相似變換之間,仿射變換推廣相似變換使得夾角不再保持不變,造成物體形狀在變換後產生歪斜,他在變換中,直線只與方向有關,與位置無關,不會像射影變換那樣,越遠越小

下圖中參數數量與上面不符,因爲他針對的是3D點,上面是2D點



單應性關係的前提條件?

如果兩幅圖像之間的相機運動只有旋轉而沒有平移,那麼這兩幅圖像通過單應性關聯在一起(假定是針孔相機)。也就是說(if and only if):

a.      Both images are viewing thesame plane from a different angle

b.      Both images are taken from thesame camera but from a different angle.( Camera is rotated about its center ofprojection without any translation)

也就是說:

a.當兩個相機所代表的視平面(image plane)相互平行,stereo normal case,單應性矩陣纔是有效的。(baseline不爲0,但是極點在無窮遠)

b.當且僅當相機是繞相機中心旋轉,沒有偏移,baseline什麼的都是零,單應性矩陣纔是有效的。(baseline爲0)



單應性與極幾何的聯繫?

  下圖爲極幾何的經典視圖,相機A的中心爲O1,相機B的中心爲O2,它們共同看到空間一點P。根據極幾何的性質,空間中所有落在直線O1P上的點,最終都會落在在Image Plane B的極線上。

  根據單應性的前提條件,單應性與極幾何的區別在於兩個相機主點之間的距離爲0時,




總結起來:

當相機之間存在偏移,那麼該用極幾何關係描述點的對應關係,此時兩個圖片之間點的匹配依賴於物點的深度,即物點到相機的距離。

It maps a point in one image to a line in the other image. Actualmatching point depends on the depth of that point,that is its distance from thecamera

  當相機之間不存在偏移時,極幾何關係不再適用,該用單應性描述點的對應關係,此時兩個圖片之間點的匹配不依賴於物點的深度。(此時三角方程不成立)

It maps a point in one image to a point in the other image. Themapping does not depend on the depth (distance) of point to the camera. Thismakes sense because baseline z zero means ordinary stereo triangulationequations fail.

從下圖看出相機拍攝時並未有偏移,故通過單應性做的圖像拼接。




2.      單應性矩陣的算法

從單應性矩陣的定義出發:






除此之外,我們可以通過歸一化座標,使得h的結果是numerical stable。但是即使這樣,這種做法對於噪聲非常敏感,有幾個outlier就完蛋了。

而第二種方法就很好,




爲了使上式爲0,咱只要對左側ATA進行奇異值分解,挑選奇異值前九個最小的v的列向量作爲h即可,SVD:


Let h be the column ofV (unit eigenvector) associated with the smallest eigenvalue in D.(if only 4points, that eigenvalue will be 0)

 

Matlab代碼:

[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. function H = find_H(P1, P2)  
  2. % H = find_H(P1, P2)  
  3. %   
  4. %    P1 are coordinates from source frame ([n*2], n>= 4)  
  5. %    P2 are coordinates from destination frame ([n*2], n>= 4)  
  6. %    H is the 3*3 homography matrix from P1 to P2  
  7. %      [P2; 1] ~ H [P1; 1]  
  8. %    
  9.   
  10. x = P1(:, 1);  
  11. y = P1(:, 2);  
  12. X = P2(:, 1);  
  13. Y = P2(:, 2);  
  14.   
  15. A = zeros(length(x(:))*2,9);  
  16.   
  17. for i = 1:length(x(:)),  
  18.   a = [x(i),y(i),1];  
  19.   b = [0 0 0];  
  20.   c = [X(i);Y(i)];  
  21.   d = -c*a;  
  22.   A((i-1)*2+1:(i-1)*2+2,1:9) = [[a b;b a] d]; %拼接矩陣A,自己對照截圖,一次兩行,總共2N行  
  23. end  
  24.   
  25. [U S V] = svd(A);  
  26. h = V(:,9);  
  27. H = reshape(h,3,3)';  



3.   基礎矩陣F的計算及前提條件


分別取[xn’,yn’,1],[xn’’,yn’’,1]與F的第一個元素,得到展開式


按照下圖定義an和f,得到線性方程


  我們同樣使用奇異值分解去求Af=0這個方程。由於基礎矩陣F是齊次的,矩陣A的秩不大於8,因此我們只要8對匹配點就可以解該方程。實際場景中有可能有不止8對匹配點,而且這些匹配點中存在噪聲,矩陣A可能是滿秩的(should not be)。此時,我們把A中最小的奇異值對應的奇異向量作爲基礎矩陣F的解。

  通過下圖可以清晰得看到SVD全貌,即V的最後一列(對應D的最小的九個奇異值)是F的解。但是這還不夠,現在並不能保證F的秩等於2(否則Af全爲0了,不符合噪聲實際情況)。


現在的目標是使r(F)=2,並且F應該與我們的估計F’無限接近。怎麼做?

我們對F本身進行第二次奇異值分解,從F’的奇異值中挑最小的,並將它設置爲0.也就是說,根據上一步得到的F’,我們強制修改F’的奇異值,而不改變U’,V’,使得rank(F’)=2。


Matlab代碼:

[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. function F = F_from_point_pairs(xs, xss)  
  2. %xs, xss: Nx3 homologous point coordinates, N>7  
  3. %F: 3x3 fundamental matrix  
  4.   
  5. %coefficient matrix  
  6. for n = 1 : size(xs, 1)  
  7.     A(n, :) = kron(xss(n, :), xs(n, :));  
  8. end  
  9.   
  10. %singular value decomposition  
  11. [U, D, V] = svd(A);  
  12.   
  13. %approximate F, possibly regular  
  14. Fa = reshape(V(:,9), 3, 3)';  
  15.   
  16. % svd decomposition of F  
  17. [Ua, Da, Va] = svd(Fa);  
  18.   
  19. %algebraically best F, singular  
  20. F = Ua * diag([Da(1,1), Da(2,2), 0]) * Va';  

注:

在求單應性矩陣時扯到過座標歸一化,防止numerically unstable,這裏詳細講下。

數值不穩定是指,比如對於一副3000*4000的圖片,由於其圖片像素座標過大,使得計算結果不穩定。我們按照下圖所示,將原點移動到圖像中心,將像素點座標約束到(-1,1)。


  座標歸一化,會改變真實F的值,那麼座標歸一化前後基礎矩陣的對應關係爲:

設存在變換T使得座標x歸一化



 哪些情況下,基礎矩陣的F會很不穩定?

a.如果所有匹配點對應的物點均在同一平面上,即rank(A)<8,此時Af=0無解。就好比很難對牆面上的畫做三維重建


b.如果兩個相機的光心重合,即相機沒有移動,純粹旋轉,則skew-symmetric矩陣全爲0,此時需要考慮使用單應性關係。




4. 本質矩陣E的計算


  我們可以模仿之前求基礎矩陣的方法求本質矩陣,不過此時E的約束關係除了秩必須爲2,還要求E的奇異值均爲1。


Matlab代碼:

[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. function E = E_from_point_pairs(xs, xss)  
  2. %xs, xss: Nx3 homologous point coordinates, N>7  
  3. %E: 3x3 fundamental matrix  
  4.   
  5. %coefficient matrix  
  6. for n = 1 : size(xs, 1)  
  7.     A(n, :) = kron(xss(n, :), xs(n, :));  
  8. end  
  9.   
  10. %singular value decomposition  
  11. [U, D, V] = svd(A);  
  12.   
  13. %approximate F, possibly regular  
  14. Ea = reshape(V(:,9), 3, 3)';  
  15.   
  16. % svd decomposition of E  
  17. [Ua, Da, Va] = svd(Ea);  
  18.   
  19. %algebraically best F, singular  
  20. E = Ua * diag([1, 1, 0]) * Va';  

注意:

上面代碼函數的輸入參數,不是圖像座標,而是乘以相機內參後的圖像座標,xs=K*xs

座標歸一化同樣使用此處


5. 給定本質矩陣E,如何計算相對位移關係及相機朝向

給定本質矩陣,我們可以提取R和基線b方向T,但是解並不唯一,實際上有四種!!

只有左上角這種情況是我們需要的(右上角是繞b旋轉了180度,不對的哈),衡量正確與否的標準是:根據R和T復原的點,必須同時位於兩個相機的前方。接下來具體展開如何求R和T。

根據E的奇異值分解:

  上述做法是從E的兩種定義上套用的,現在很輕鬆的寫出基線方向T和旋轉矩陣R的表達式。然後這還沒完,因爲Z和W有尼瑪4種組合:



  因此E有四種結果,而基線方向T和旋轉矩陣R分別有兩種情況:


  我們測試所有基線方向T和旋轉矩陣R組合,還原場景3D座標(並不是真實尺度),判斷所有點是否都位於兩個相機的前方,確定唯一的T和R


1. 叉乘



2. 雙目系統


3. 對極幾何 (Epipolar Geometry)



對極幾何定義:是兩個視圖間的內部射影幾何,它只與攝像機的內部參數和相對位姿有關,與場景結構無關。

基線(baseline):連接兩個攝像機光心的線。

兩個視圖的對極幾何的本質:描述圖像平面與一個平面(以基線爲旋轉軸的平面)的交叉幾何關係。

用途(對極約束:Epipolar Constraint):在雙目匹配中,給定左圖的一個點,不必在整個右圖中搜索對應的點。“對極約束”把搜索空間縮減到一條線。





極點(Epipole):基線與圖像平面的交叉點。即左圖的極點:是左攝像機看到右攝像機所在的位置;圖的極點:是右攝像機看到左攝像機所在的位置

對極平面(Epipolar Plane):包含基線的平面

對極線(Epipolar Line):對極平面與圖像平面的交叉線。所有的對極線相交於極點,且位於同一對極平面的對極線一一對應。



4. 本質矩陣 (Essential Matrix)-攝像機座標系

本質矩陣就是在歸一化圖像座標下的基本矩陣。不僅具有基本矩陣的所有性質,而且還可以估計兩相機的相對位置關係,具體內容可參考《計算機視覺中的多視圖幾何》。  

     本質矩陣和基本矩陣都是3x3矩陣,且編碼兩個視圖的對極幾何

     在時間上,本質矩陣比基本矩陣先引入。基本矩陣是本質矩陣的推廣,本質矩陣與基本矩陣相比有:

     1)更少的自由度

     2)更多的功能特性

4.1 本質矩陣的作用

    1) 給定一個圖像上的一個點,被本質矩陣或基本矩陣相乘,其結果爲此點在另一個圖像上的對極線,在匹配時,可以大大縮小搜索範圍。

    2)可用於求R 和 T


4.2 推導過程

      在對極約束條(Epipolar Constraint)件下進行推導。

 

       R: Rotation    T: Translation


4.3 本質矩陣特性

    1) rank (E) = 2  (本質矩陣的秩爲2,非常重要)

    2)  本質矩陣僅依賴外部參數(Extrinsic Parameters) (R & T)決定。

    3) 使用攝像機(Camera)座標系


4.4 Longuet-Higgins方程

    

    上圖中的pr、pl爲camera座標系

4.5 本質矩陣總結

    



     







5. 基本矩陣(Fundamental Matrix)- 像素座標系

    前提條件:左右圖像的光心位置不一樣

5.1 推導過程

      本質矩陣使用攝像機座標系,通過相機的R & T即可描述。      爲了使用圖像座標,必須考慮攝像機內部參數(Intrinsic parameters)

5.2 基本矩陣的特性

    1) rank (F) = 2  (基本矩陣的秩爲2,非常重要)

    2)  基本矩陣依賴內部和外部參數(Intrinsic and Extrinsic Parameters) (f, R & T)決定。

    3) 使用像素座標系

    4) F就是左邊圖像到右邊圖像的基本矩陣,從公式上可以看出基本矩陣是有方向的,右圖到左圖的基本矩陣就是F的轉置    5) F矩陣是一個7個自由度的3*3矩陣(3*3矩陣本身9個自由度,因爲相差一個常數因子和行列式值爲0兩個條件,減掉2個自由度),相差一個常數因子的意思是:kF(k!=0)也是基本矩陣,也就是說如果F是基本矩陣,那麼kF也是基本矩陣,所以基本矩陣不唯一,在相差一個倍數的前提下是唯一的,也就是我們可以固定矩陣中某一個非零元素的值,這樣自然少一個自由度。   6) 屬性表 

5.3 基本矩陣的作用

    1) 與本質矩陣類似,基本矩陣也告訴我們一個圖像中的像素如何與另一個圖像的極線相關聯。        (像素座標系:像素-->極線)    2) 三維重建和特徵匹配上    3) 基本矩陣獨立於場景結構    4) 它可由場景點在圖像中的對應關係進行計算,而不需要攝像機的內參和外參來進行計算。    5) 相反,可以先求出F,然後根據F求出攝像機的外參(R, T)

5.4 本質矩陣與基本矩陣的比較



5.5 其它(來自MVG)





5. 單應矩陣(Homography Matrix)

5.1 Projective transformations

      2D projective geometry is the study of properties of the projective plane IP2 that are invariant under a group of transformations known as  projectivities. 

    

      A projectivity is also called a collineation (a helpful name), a projective transformation or ahomography: the terms are synonymous.




     單應矩陣實際就是個透視變換矩陣,純2D變換,我知道的只是用在了BA裏做爲一種約束條件而已。

6. 仿射變換(Affine Transformations)




7. 相似變換Similarity Transformations



8. Camera Matrix





原文地址:http://blog.csdn.net/haoliliang88/article/details/60745637

http://blog.csdn.net/haoliliang88/article/details/72237009

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章