多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程
多視圖幾何總結(jié)——基礎(chǔ)矩陣、本質(zhì)矩陣和單應(yīng)矩陣的求解過程
- 多視圖幾何總結(jié)——基礎(chǔ)矩陣、本質(zhì)矩陣和單應(yīng)矩陣的求解過程
- 1. 說明——其實(shí)求解過程大同小異
- 2. 單應(yīng)矩陣求解過程
- 2.1 基于代數(shù)誤差的線性估計(jì)
- 2.1.1 解法一:最小二乘法 / 高斯消去法(最小配置解情況)
- 2.1.2 解法二:DLT算法
- 2.2 基于幾何誤差的非線性估計(jì)
- 3. 基礎(chǔ)矩陣求解過程
- 3.1 基于代數(shù)誤差的線性估計(jì)
- 3.1.1 七個點(diǎn)——最小配置解情形
- 3.1.2 八個點(diǎn)——線性解法
- 3.1.3 n個點(diǎn)——八點(diǎn)法
- 2.2 基于幾何誤差的非線性估計(jì)
- 4. 本質(zhì)矩陣求解過程
- 4.1 基于代數(shù)誤差的線性估計(jì)
- 4.1.1 八點(diǎn)法
- 4.1.2 五點(diǎn)法
多視圖幾何總結(jié)——基礎(chǔ)矩陣、本質(zhì)矩陣和單應(yīng)矩陣的求解過程
在《視覺SLAM十四講》中,僅僅給出了基礎(chǔ)矩陣、本質(zhì)矩陣和單應(yīng)矩陣的推導(dǎo)過程,并沒有詳細(xì)給出其求解過程,再看過《計(jì)算機(jī)視覺中的多視圖幾何》之后才發(fā)現(xiàn)這里面原來有這么多巧妙的地方,因此在這篇文章中予以總結(jié)。
1. 說明——其實(shí)求解過程大同小異
為什么說求解過程大同小異呢,不管是那種矩陣,在求解方法的分類上大致是都可以分為基于代數(shù)誤差的線性估計(jì)和基于幾何誤差的非線性估計(jì),在基于代數(shù)誤差的線性估計(jì)中,不管是那種矩陣最后的形式一般都是Ax=bAx=bAx=b其中AAA是由匹配的點(diǎn)構(gòu)成的矩陣,而xxx是由待解的基礎(chǔ)矩陣或者單應(yīng)矩陣的元素構(gòu)成的向量,bbb是根據(jù)解法的不同而不同,在基于幾何誤差的非線性估計(jì)中,又幾乎都有黃金標(biāo)準(zhǔn)方法(重投影誤差)和一階幾何誤差(Sampson距離)等方法,因此我個人覺得是比較相似的,因此,我下文主要是單應(yīng)矩陣的求解過程詳解,其他矩陣主要說明不同。
2. 單應(yīng)矩陣求解過程
2.1 基于代數(shù)誤差的線性估計(jì)
首先我們知道,單應(yīng)矩陣的對應(yīng)點(diǎn)的方程為:Hxi=xi′Hx_i=x'_iHxi?=xi′?其中有
通過令xi′=(xi′,yi′,wi′)x'_i=(x'_i,y'_i,w'_i)xi′?=(xi′?,yi′?,wi′?),求解xi′×Hxi=0x'_i×Hx_i=0xi′?×Hxi?=0有
整理得
容易觀察到左邊的矩陣僅有兩個是線性獨(dú)立的,因此可以方程組變?yōu)?br />
注意上面都是針對一個點(diǎn)變換的,因此知道,一對匹配點(diǎn)可以構(gòu)造出兩個方程,而我們的單應(yīng)矩陣自由度是8,因此我們最少需要四對點(diǎn)進(jìn)行求解。
2.1.1 解法一:最小二乘法 / 高斯消去法(最小配置解情況)
上面方程的右側(cè)是一個9維的向量,其實(shí)就是H矩陣九個未知量,根據(jù)尺度不變性的理解,這里第一種方法是將尺度不變性理解為九個元素中間的某一個為1,這樣就消除了尺度不變性,假定選擇最后一個元素為1的話,方程就可以轉(zhuǎn)換為《視覺SLAM十四講》里面的方程
這是一個線性方程組,如果匹配點(diǎn)的數(shù)量多于4對點(diǎn)的話,就是超定方程,采用最小二乘法,如果是4對點(diǎn)的話,就是普通的非齊次線性方程組,采用高斯消去法就可以。
這種方法的確定是,如果所選為1的元素接近0,結(jié)果將導(dǎo)致不穩(wěn)定解,因此更推薦解法二。
2.1.2 解法二:DLT算法
上述方程形式為Ah=xAh=xAh=x,其中矩陣AAA為的秩為8,未知向量hhh的維數(shù)為9,如果四對點(diǎn)都是準(zhǔn)確點(diǎn)的話,上述方程存在一維的零空間,即存在一個線性解,但是如果匹配點(diǎn)都存在誤差的話,通常的做法是在約束∣∣h∣∣=1||h||=1∣∣h∣∣=1的最小化范數(shù)∣∣Ah∣∣||Ah||∣∣Ah∣∣,即求∣∣Ah∣∣/∣∣h∣∣||Ah||/||h||∣∣Ah∣∣/∣∣h∣∣的最小值問題,該問題解為ATAA^TAATA的最小特征值的特征矢量,也就是AAA的最小奇異值的奇異矢量,總之其基本DLT算法步驟如下:
在多視圖幾何中證明了,DLT算法的結(jié)果與點(diǎn)的坐標(biāo)系有關(guān),為了相處坐標(biāo)系的影響同時使DLT算法關(guān)于相似變換不變,提出了歸一化的問題,包括圖像坐標(biāo)的平移和尺度縮放,而歸一化是再DLT之前必須實(shí)施的。其步驟如下:
(1)對點(diǎn)進(jìn)行平移使其形心位于原點(diǎn)
(2)對點(diǎn)進(jìn)行縮放使他們到原點(diǎn)的平均距離等于2\sqrt{2}2?
(3)對兩幅圖獨(dú)立進(jìn)行上述變換
因此歸一化的DLT算法如下:
2.2 基于幾何誤差的非線性估計(jì)
幾何誤差分好幾種情況,包括單圖像誤差、對稱轉(zhuǎn)移誤差和重投影誤差,如下圖
上圖的上半圖就是對稱轉(zhuǎn)移誤差,表示為
上圖的下半圖就是重投影誤差,表示為
可以通過DLT獲得其初始值,然后通過牛頓法或者列溫伯格法進(jìn)行迭代下降求得最后的值。
基于代數(shù)誤差的方法會更快,而基于幾何誤差的方法會根據(jù)魯棒性
3. 基礎(chǔ)矩陣求解過程
3.1 基于代數(shù)誤差的線性估計(jì)
基礎(chǔ)矩陣的求解方法和單應(yīng)矩陣就比較相似啦,不過還是有區(qū)別的,首先基本矩陣的方程如下:xiFxi′=0x_iFx_i'=0xi?Fxi′?=0與單應(yīng)矩陣不同的是,對于基本矩陣一對點(diǎn)只能確定一個約束方程,給定n對匹配點(diǎn)就得到如下方程組
下面我換個思路按照點(diǎn)的數(shù)量多少對求解方法進(jìn)行分類:
3.1.1 七個點(diǎn)——最小配置解情形
當(dāng)矩陣A的秩為7時,其解空間維數(shù)為2,因此會有F1F_1F1?和F2F_2F2?兩個解,同時FFF又要滿足det(F)det(F)det(F)的要求,因此添加一個強(qiáng)迫約束det(αF1+(1?α)F2)=0det(\alpha F_1+(1-\alpha)F_2)=0det(αF1?+(1?α)F2?)=0,此種情況下矩陣可能有一種或者三種解。
3.1.2 八個點(diǎn)——線性解法
這就是解解空間為1維的線性方程組
3.1.3 n個點(diǎn)——八點(diǎn)法
多視圖幾何中將n個點(diǎn)的解法成為八點(diǎn)法(明明不是八個點(diǎn)…)
其實(shí)就對應(yīng)著前面的求解單應(yīng)矩陣的DLT算法,歸一化的8點(diǎn)法就是歸一化 DLT算法,在此不贅述,需要注意的一點(diǎn)是,單應(yīng)矩陣不是奇異矩陣,而基礎(chǔ)矩陣是奇異矩陣(為什么是奇異矩陣參見MVG總結(jié)——基礎(chǔ)矩陣、本質(zhì)矩陣和單應(yīng)矩陣的自由度分析),因此需要添加一個強(qiáng)迫約束, 即求解在Frobenius范數(shù)下最接近FFF的奇異矩陣F′F'F′代替FFF,采用SVD分解,具體解法如下:
2.2 基于幾何誤差的非線性估計(jì)
多視圖幾何中介紹的除了重投影誤差,還介紹了一種對稱對極點(diǎn)距離的幾何誤差,如下:
這里順便插一句,目前state of art的一種過濾動態(tài)物體的算法就是基于這種思想完成的DS SLAM
4. 本質(zhì)矩陣求解過程
4.1 基于代數(shù)誤差的線性估計(jì)
4.1.1 八點(diǎn)法
本質(zhì)矩陣的八點(diǎn)法求解與基礎(chǔ)矩陣是一致的,不同的一點(diǎn)是其強(qiáng)迫約束不同,因?yàn)楸举|(zhì)矩陣的性質(zhì)中有一條是其奇異值分解的兩個非零奇異值相等,因此再SVD的處理中按照如下方式處理;
4.1.2 五點(diǎn)法
5點(diǎn)算法的大概思路就是把本征方程展開,再加上本質(zhì)矩陣的充要條件。化簡后得到一個高次多項(xiàng)式方程,該多項(xiàng)式實(shí)數(shù)解中的一個確定出的本質(zhì)矩陣是系統(tǒng)的真實(shí)本質(zhì)矩陣,對偽解進(jìn)行剔除。該方法的具體原理可見論文An efficient solution to the five-point relative pose problem
總結(jié)大致如此, 有什么問題歡迎交流~
此外,對SLAM算法感興趣的同學(xué)可以看考我的博客SLAM算法總結(jié)——經(jīng)典SLAM算法框架總結(jié)
總結(jié)
以上是生活随笔為你收集整理的多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多视图几何总结——基础矩阵、本质矩阵和单
- 下一篇: ros2_object_analytic