深度濾波器(2)——三角化深度值的偏差分析

上一篇文章中,咱們介紹了單目SLAM中的三角化恢復三維點深度的原理,本篇文章咱們來聊一聊三角化深度值的偏差分析。算法

目錄:優化

(1)三角化所帶來的偏差的提出spa

(2)三角化中偏差的來源分析3d

(3)如何減少三角化所帶來的偏差code

(4)三角化所遇到的奇異狀況blog


 

(1)三角化所帶來的偏差的提出get

上一篇文章中,咱們提到了兩幀圖像中的特徵點座標三角化獲得空間點的三維信息。圖像處理

今天,咱們來分析一下三角化獲得的三維信息中深度的偏差。class

 

如上圖所示:基礎

P爲空間中的一個三維點,p1和p2分別爲在兩個位置處,攝像機觀察到的投影的二維點座標。

l2爲p1在第二幅圖中所對應的極線(極線的概念請參考立體視覺中的對極幾何,這裏再也不贅述)。

 

如今,咱們要探討的是:

若是咱們在l2進行極線搜索時,所找到的p2'點與真實的p2點有一個像素的偏差,那麼會給三角化後的三維點P的深度z帶來多大的偏差。

 

首先,根據上圖,咱們能夠獲得向量之間的關係,以及三角化中的兩個夾角的定義:

a = p - t                公式(1)

α = arccos<p, t>    公式(2)

β = arccos<a, -t>   公式(3)

其中,a, p, t均爲向量,α和β爲圖中所示的兩個夾角。

若是此時,咱們求取的p2'點與p2點有一個像素的誤差,同時,這一個像素的誤差又會給β帶來δβ的角度變化,咱們利用β'來表示對β進行δβ擾動後的新的角度。

設相機的焦距爲f,則:

公式(4):

公式(5):

公式(6):

至此,加入擾動後的全部新的角度咱們都求出來了。

由正弦定理,咱們能夠獲得:

公式(7):

則由第二個位置上的二維點的一個像素的偏差,可能致使的三角化後深度的偏差爲:

 δp = ||p|| - ||p'||

 這裏的δp其實也正是深度的一個均方差(不肯定度σobs),這個不肯定度是咱們後面要介紹的深度濾波器的一個很重要的概念,深度濾波器的目的也正是要不斷減少這個不肯定度,使得深度的不肯定度最後可以收斂到一個可以接受的值。

 

 

(2)三角化中偏差的來源分析

上面分析了第二幅圖中的特徵點p2的偏差是如何影響三角化後的深度值的。 

下面,咱們來指出三角化的偏差來源有哪幾方面:

a.圖像的分辨率:圖像的分辨率越高,一個像素所帶來的δβ就越小。

b.特徵點求取時的精度:是否作到亞像素,在亞像素的基礎上,偏差有多大?

c.p1點的偏差:會引發極線l2的偏差,從而間接地影響p2點的精度。

d.相機兩次位置的平移向量t的大小:t的模的大小也表明了對極幾何中的基線長度,由公式(7)能夠看出基線長度越大,三角化的偏差越小。

 

 

(3)如何減少三角化所帶來的偏差

根據【(2)三角化中偏差的來源分析】中所分析的一些因素可知,要想減少三角化過程當中引入的偏差,能夠有以下幾個方法:

a.選取儘量高分辨率的相機。

b.進行亞像素的優化(好比在極線搜索時對像素點座標進行雙線性插值)

// 雙線性灰度插值 
inline double getBilinearInterpolatedValue( const Mat& img, const Vector2d& pt ) 
{
    uchar* d = & img.data[ int(pt(1,0))*img.step+int(pt(0,0)) ];
    double xx = pt(0,0) - floor(pt(0,0)); 
    double yy = pt(1,0) - floor(pt(1,0));
    return  (( 1-xx ) * ( 1-yy ) * double(d[0]) +
            xx* ( 1-yy ) * double(d[1]) +
            ( 1-xx ) *yy* double(d[img.step]) +
            xx*yy*double(d[img.step+1]))/255.0;
}

(關於雙線性插值,這篇文章作了比較清晰的講解:http://blog.163.com/guohuanhuan_cool@126/blog/static/167614238201161525538402/)

c.一樣使用亞像素級的圖像處理算法來處理p1點。

d.在不丟失特徵點的狀況下,讓平移量t儘可能大。

 

 

(4)三角化所遇到的奇異狀況

由上面的公式推導咱們能夠看出,三角化中,必需要有平移量t,不然沒法構成三角形,進行三角化。

因此在有些單目的SLAM,AR/VR的場景中,有經驗的人都會有意識地將設備或者相機進行必定量的平移,而不會在原地進行純旋轉。

 

總結一下,咱們今天分析了三角化過程當中的偏差有哪些,並從理論上對偏差進行了量化的推導。同時,咱們還分析了若是減少三角化過程當中的偏差。

下一篇文章,咱們將會帶着你們一塊兒分析深度濾波器的原理。敬請期待!

相關文章
相關標籤/搜索