對極約束、本質矩陣(E)、基礎矩陣(F)


尊重別人的勞動成果就是對自己的尊重——聲明至上:轉載來源:https://www.cnblogs.com/CV-life/p/10053486.html

從零開始一起學習SLAM | 不推公式,如何真正理解對極約束?

自從小白向師兄學習了李群李代數和相機成像模型的基本原理后,感覺書上的內容沒那么難了,公式推導也能推得動了,感覺進步神速,不過最近小白在學習對極幾何,貌似又遇到了麻煩。。。

小白:師兄,對極幾何這塊你覺得重要嗎?
師兄:當然重要啦,這個是多視角立體視覺的核心啊

小白:那師兄一定得幫幫我講清楚啊,最近在看書上這部分內容,感覺很難理解呢!
師兄:哪里不理解?書上公式推導的挺詳細了都

小白:這么說吧,公式推導我也能大概看懂,但總覺得不知道為啥這么推導,這樣推導的物理意義是什么?
師兄:哦哦,明白啦,就是不能轉化為直觀的理解方式吧

小白:是的,只能被動接受推導結果,但不能理解背后的原理,這種感覺好差。。
師兄:嗯,那我想想,怎么給你講。。。說實話,你這個問題挺有意義的

小白:太好啦!開講吧師兄,小板凳我都搬好啦,瓜子花生都准備好啦

對極幾何基本概念
師兄:好。那我就從幾何意義的角度來推導一下對極幾何中的對極約束吧。先看下面這個圖,很熟悉吧,對極約束中很常見的圖。它表示的是一個運動的相機在兩個不同位置的成像,其中:

左右兩個平行四邊形分別是相機在不同位置的成像平面
C0, C1分別是兩個位置中相機的光心,也就是針孔相機模型中的針孔
P是空間中的一個三維點,p0, p1分別是P點在不同成像平面上對應的像素點

 


小白:嗯,這個圖見到很多次了,不過一直理解的不透徹
師兄:你看上面左側的圖,如果將點P沿着C0-p0所在的直線移動,你會發現P在左邊相機的成像一直不變,都是p0,這時候P在右邊相機的成像點p1是一直在變化的

小白:對,好像是沿着右邊那條紅色的線滑動
師兄:嗯,你看C0-C1-P-p0-p1他們都是在同一個平面上的,你可以想象C0-C1-P組成的平面是一個三角尺,它所在的平面稱之為極平面(epipolar plane),它像一把鋒利的刀,切割了左右兩個成像平面

小白:哇塞,這樣感覺直觀多了
師兄:嗯,其中和成像平面相交的直線稱之為極線(epipolar line),兩個光心C0, C1和成像平面的交點叫做極點(epipole)。

小白:師兄,好多新的術語啊,都要記嗎?
師兄:不用死記,知道是哪個就行了。我們重點來說說極平面,你看下面這個圖,C0-C1-P-p0-p1他們是不是都是在極平面上?

 

小白:嗯,是的,它們都是共面的。

不推公式,如何理解對極約束?
師兄:還記得我們在《從零開始一起學習SLAM | 為什么要用齊次坐標?》里講的叉乘的定義嗎?兩個向量的叉乘結果是一個同時垂直於這兩個向量的向量。
小白:記得呢,叉乘只在三維空間中有定義,比如兩個向量 a和b 的叉乘寫作 a x b,它是與向量 a, b都垂直的向量,其方向通過右手定則決定。

師兄:對,除了叉乘,還有點乘,a點乘b的定義是
a * b = ||a||* ||b|| *cos(θ)
因此如果兩個互相垂直的向量點乘,cos(θ) = 0,點乘結果也為0。
小白:師兄,這些我都記得呢!可是怎么突然說這個呢,和對極幾何有什么關系嗎?

師兄:當然有關系!剛剛你說了點乘和叉乘的特點,現在我們把極平面中C0-C1-p0-p1單拎出來,看下面的圖

我們能夠得到下面的 結論1:

 

你自己說說為什么這個等式成立?
小白:我看看哈,額,根據叉乘的定義

 

的結果是一個同時垂直於它們的向量,也就是說垂直於C0-C1-p0-p1組成的極平面,因此這個叉乘的結果再點乘

 

結果就是0了。是吧,師兄?
師兄:完全正確,用到的都是我們前面剛剛講過的基礎知識~
小白:可是,師兄,叉乘不是僅在三維空間中有定義嗎?我們這里的p0, p1都是圖像上的二維點啊

師兄:這個問題問的好!確實如你所說,p0, p1都是圖像上的二維點,不過,這里我們會把它變成三維的方向向量來考慮
小白:啥是方向向量啊?

師兄:就是我們只考慮它的方向,而不考慮它的起點或終點的向量。我們假設一個歸一化的圖像平面,該平面上焦距f =1 ,因此我們可以定義在以C0為原點的坐標系下

 

而在以C1為原點的坐標系下

 

小白:這樣定義可以嗎?
師兄:可以的,事實上,你在C0-C1-p0-p1組成的極平面上,保證

 

的方向不變,在極平面上隨便移動,結論1中等式都成立。同樣的道理,在極平面上,保證

 

方向不變,在極平面上隨便移動,結論1中等式仍然都成立。
小白:確實是這樣,師兄,下一步怎么辦?好像p0, p1不在同一個參考坐標系里?

師兄:是的,前面說過,p0在以C0為原點的參考坐標系,p1在以C1為原點的參考坐標系,所以我們還是需要轉換坐標系。這里我們把所有點的坐標都轉換到以C0為原點的坐標系。前面說過這些向量都是方向向量和向量起始位置無關,所以這里坐標系變換只考慮旋轉就可以。我們記 R 為從C1坐標系到C0坐標系的旋轉矩陣
小白:那么 Rp1 就是p1 在以C0為原點的C0坐標系了
師兄:對的~現在再看看結論1

 


最左邊向量C0-p0就可以用p0表示,向量C0-C1就是光心C1相對於C0的平移,我們記為t, 向量C1-p1根據前面的討論,可以用 Rp1 來表示,那么結論1可以表示為以下的結論2:

 

這個式子是根據對極幾何得到的,我們稱之為對極約束。
小白:哇塞,師兄,原來對極約束也可以這樣得到啊!我現在能完全理解啦!

如何得到極線方程?
師兄:對,這就是對極約束最直觀的解釋,一般把中間的部分拿出來,像下面這樣,記為本質矩陣或本征矩陣(Essential Matrix)。

 

然后我們就得到了如下的結論3:

 

小白:厲害了師兄,這下徹底明白啦,不過之前提到的極線什么的好像也沒說怎么求啊?
師兄:其實根據上面結論3就可以求出極線方程啦!

小白:啊,怎么求極線方程?
師兄:還記得我們在《從零開始一起學習SLAM | 為什么要用齊次坐標?》里講過的點p在直線l上的充分必要條件就是 直線l 的系數與p的齊次坐標p’的內積為0

 

小白:記得呢!那節課的習題我都認真做了,所以印象深刻!
師兄:不錯!那結論3我們就可以把Ep1看做是直線的方程,p0看做是直線上的點,也就是說Ep1就是以C0為原點坐標系中的極線了。如下圖中紅色線條所示,就是極線啦,它的方程是E*p1。再延伸一下吧,P0 P1 為相機坐標系下的關系,如果將相機坐標系下的關系轉化到像素坐標系,這時候將這里的外參矩陣

\[K = \left[ {\begin{array}{*{20}{c}}
{{f_x}}&0&{{c_x}}\\
0&{{f_y}}&{{c_y}}\\
0&0&1
\end{array}} \right]\]

考慮進去,假設P0 P1 對應的像素坐標為

那么

 

 P1 同理,這樣就有結論4:

 

 這就是帶內參的對極約束形式。其中

 

 稱為基礎矩陣。進一步化簡為:

 

 對極約束最終的目的是根據像素匹配點求出E或F然后求出R和t,確定相機位姿。

小白:原來如此,看來以前的基礎很重要啊!哪里都能用上。謝謝師兄,今天沒有推導公式,我竟然能夠得到極線約束的式子,太神奇了,而且印象很深刻!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM