八點法故名思義,就是利用兩張圖的 8 個匹配點來計算 Essential Matrix。
基本的步驟如下:
將八個配對點轉換成以下矩陣形式解出 E
如何算呢?要解 可以使用 SVD 分解得到 (線性代數),這裡忽略詳細計算。
由於這裡得到的 E 不一定遵守原本的物理定義()與性質,因此我們需要透過一些方法轉換成符合 Essential Matrix 特性的矩陣。
Essential Matrix 的數學特性是,有兩個相同的特徵值,而第三個特徵值為 0(有興趣的讀者可以看後續的討論),因此我們需要迫使上一步計算出來 E 符合這個特性。
將得到的 E 做 SVD 分解,得到 ,其中 是特徵值矩陣,這裡假設特徵值經過大小排序,即 ,其中 。
設定新的特徵值為 ,並將 設為 ,再重新組合成 ,這個 E 就符合 Essential Matrix 的數學特性。
將 轉換成 和 ,有四種可能的解:
其中 是繞 z 軸旋轉 的旋轉矩陣。這四種解相乘都會得到相同的結果,不過只有一種解是正確的,他們代表的意義如下圖(來自於 《Multiple View Geometry in Computer Vision 》一書):
不過只有 (a) 才是對的:兩個匹配點對應的 3D 點應在兩個相機的前方。也就是說,我們可以透過帶入一個已知的 3D 點,來判斷哪一個解是正確的。