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