[論文閱讀]Camera Pose Voting for Large-Scale Image-Based Localization - ICCV2015

這是我在組會上講的文章,當時跟着論文的行文思路來講的,可惜沒能講得很清楚。現在打算用我自己的思路來介紹這篇文章,希望用儘可能易懂的方法來講解清楚。也希望通過博客總結,來進一步提升自己的理解。


——致我的第一次組會報告


Image-Based Localization

首先介紹一下什麼是Image-Based Localization。隨着計算機視覺的發展,現在人們可以利用 SfM(structure from motion) 技術利用場景的圖片集合來進行三維重建,得到場景的點雲模型。這類軟件有幾種開源實現,比如 BundlerVisualSfM。基於圖像的定位系統就是利用已知的場景三維模型,通常是點雲模型,來對新的圖像進行定位,得到拍攝這副圖像的相機在三維空間中的位置和朝向。

這裏寫圖片描述


圖1. Imaged-based Localization Standard Pipeline

如上圖所示,右邊是場景的點雲模型的一部分,左上角是查詢圖像,基於圖像的定位就是要求得對應的相機的位置和姿態(點雲中紅色錐形表示了相機的位置和朝向)。

通常這種定位系統需要離線建立好場景的點雲模型,定位的時候,對查詢對象首先提取局部特徵,通常是 SIFT, 然後需要建立圖像的2D特徵和點雲模型中3D點的對應關係,在得到足夠多的2D-3D Matches 之後,利用RANSAC和Pnp 算法,就可以求得相機六個自由度的位置和姿態。

這裏的關鍵是如何尋找到合適的2D-3D匹配關係,通常點雲模型中每一個3D還會包含有重建出這個3D點所對應的所有的2D圖像特徵,一般是通過3D點所包含的2D特徵和特性的2D特徵的匹配關係,來得到3D點和特性的2D特徵的匹配關係,但是在具體尋找匹配關係時,會有很多種思路和策略。


Voting-Based Camera Pose Estimation

介紹了什麼是image-based localization之後,下面就開始介紹這篇論文中提到的定位策略。

這裏寫圖片描述

圖2. Voting-based Localization System Overview

上圖是本文中提出的定位流程圖,對查詢圖像,首先得到每個特徵一對多的匹配關係,然後把所有這些匹配關係通過一系列的幾何濾波,濾除掉大部分錯誤的匹配關係,然後再構建文章中提出的 Voting Shape,如果有位置先驗信息(比如GPS位置),可以進一步約束 Voting Shape。這裏對每一個2D-3D匹配關係都可以構建出一個 Voting Shape,類似於Hough voting,對區域進行一個投票,最後票數最多的區域所表示的姿態就認爲是真實的相機姿態,然後得到內點,最後對這些內點通過RANSAC和PnP算法,求得最終的姿態。


Find Reliable 2D-to-single-3D Matches VS Find Extended 2D-to-many-3D Matches



傳統尋找2D-3D匹配的方法中,需要在數據庫2D描述子中尋找查詢圖像的2D描述子的最近鄰(Nearest Neighbor ),一般會找到最近鄰和次近鄰,然後通過 Iowe’s Ratio Test 來判斷這樣的匹配是否是一個正確的匹配。Ratio Test 在計算機視覺中特徵匹配時用得很多,也很有效。


我把這種策略稱爲 Find Reliable 2D-to-single-3D Matches ,也就是對於一個查詢2D特徵,來找到一個可靠的3D點來得到一個2D-3D匹配關係。這是因爲後面再計算姿態時是使用的RANSAC來隨機採樣,如果你的內點率不高的話,RANSAC採樣方法很難得到正確的結果。

但是這種 ratio test 有其內在的缺陷性,當場景變得越來越大時,那麼數據庫中就會有越來越多的三維點和描述子,也就是說描述子空間中的描述子的密度會越來越大。



圖3. Correct Match is Rejected when Descriptor Space is Dense

如上圖所示,假設對於查詢特徵(紅色五角星)在數據中真實匹配時紅色球,但是數據庫中還有很多特徵也和查詢特徵很相似,那麼這種情況下還使用 ratio test 的話,並不能得到一個理想的匹配結果(要麼得不到一個匹配,要麼得到錯誤的匹配關係)。
所以爲了解決隨着場景增大,使用 ratio test 得不到正確匹配的問題,論文提出要爲查詢圖像的每一個2D特徵來找 N 個匹配關係,也就是一對多的匹配關係,然後通過一些幾何約束關係來濾除掉明顯錯誤的匹配,通過投票的方式得到相機的位置和姿態。


Assumptions


首先,論文做出了一些必要的假設。

- Assumption 1: The 3D scene model is gravity aligned, and the ground plane is approximated.
- Assumption 2: Given the camera intrinsic calibration K and gravity direction.
- Assumption 3: The height of query camera is close to ground plane within certain interval.


假設2中要求知道相機的內參,同時能知道相機的重力方向,文章中重力方向的獲取是通過計算圖片的垂直消隱點來得到的。同樣假設2中,也要知道重力方向,這樣就可以把整個模型的座標系和重力方向對齊,地平面是通過數據庫中相機的位置插值得到的。


這篇論文中提出的這種模型之所以能夠work,很大程度上就是因爲對場景有很強的先驗,對查詢相機也有很強的約束在裏面。


Reformulate the Pose Estimation Problem

有了上面的假設了之後,就可以把相機姿態估計這個問題進行簡化了。

首先假設我們經過第一步已經得到了所有特徵一對多匹配的結果了(後面會再說如何得到一對多匹配關係的具體方法)。

現在就有很多個2D-3D匹配關係了,同時3D點在空間中的位置是已經知道的。先考慮最簡單的情況,假設已經相機的高度爲 h , 並且相機的 Z 軸是已經和重力方向對齊了的,那麼現在問題就簡化了成了要在空間中爲相機找到一個2D位置和一個繞重力方向的旋轉角度,來使得2D-3D匹配關係成立。對於一個特定的2D-3D匹配關係,是可以算出這個3D點在當前相機中的深度d 的,也就是3D點距離光心的距離。



圖4. Camera Sees the 3D Point X

如圖所示,假設2D特徵點的圖像像素座標爲xy ,根據攝像機的投影關係可以得到3D點的深度 d=f(XzHc)y

XzHcd=yf



圖5. The Possible Place of the Camera (height is known) When it Sees the 3D Point X

那麼如果這個2D-3D匹配關係是正確的話,相機觀察到這樣一個匹配關係,那麼相機可能的位置在xy 平面上就是一個圓,圓心就是3D點在xy 平面上的投影 X ,半徑就是深度d

那麼,對每一個這樣的2D-3D匹配,都可以在xy 平面找到這樣一個圓,表示相機在xy 平面可能出現的位置。



圖6. The Possible Place of the Camera (height is known) When it Sees the 3D Point X1, X2 , X3

如上圖所示,假如有三個正確的2D-3D對應關係,那麼可以得到三個圓,三個圓相交的位置就是相機的位置。
當然實際的匹配關係中會有很多錯誤的匹配,但是可以採用類似 Hough Tranform 中的方法,對區域進行劃分,然後投票,得到票數最多的區域,就是得到的相機位置。


Accounting for uncertainty

上一章節是假設了已知準確的相機高度,是理想情況,實際上並不知道相機的準確高度,假設2 中只是假設了相機的高度是在地平面附近的一個區間中。同時2D-3D對應關係中,3D點反投影到像平面上面也會有一定的誤差。所以需要把這些不確定性都考慮進來。



圖7. 2D-3D Match is Correct when Reprojection Error is within r.

首先,對於一個2D-3D匹配關係,光心、2D像點、3D點並不能同時準確地在一條直線上,考慮到一定的誤差,可以認爲把3D點反投影到像平面上,會和2D像點的誤差在 r 個像素內。反過來看,通過連接光心和像平面上以像點爲圓心、 r 爲半徑的圓上的點,可以得到一個圓錐,如圖中下部分所示,圓錐無限延伸下去,那麼在三維空間中對應的3D點就應該會落入到這個圓錐體中,把這個圓錐體稱爲 error cone。



圖8.Error Cone is Intersected at height Intervals [hmin  hmax]

注意這裏的高度是在全局座標系下描述的。如果相機的高度準確知道,那麼可以進一步,把error cone 和 相對光心的高度爲 XzHcXz3DZ,Hc 的水平面相交,會得到一個橢圓,3D點就會在這個橢圓平面上。因爲相機的高度不確定,有一個變化的區間 [hmin  hmax] ,那麼3D點相對於光心的高度變化範圍[hl  hu] 就是[Xzhmax  Xzhmin] ,這時3D點就會落在相對光心的高度爲[hl  hu] 的兩個平面截取error cone 所得到的立體中。如果把此時的立體和3D點都投影到水平面上,會得到上圖中藍色梯形所示區域,3D點也應該在藍色梯形中。把藍色區域表示的四邊形稱爲error shape。



圖9. Convert the Error Shape from Point Position to Camera Position

因爲在空間中,3D點的位置是已經確定了的,所以就把上面說的error shape轉換到相機的位置上,這樣的話相機可能的位置就不再是隻在一個圓的邊上了,而應該是在一個圓環內(Error Ring),如下圖10.中所示,藍色的圓環表示相機所有可能的位置,注意和圖5.相對比,圖5.中高度是固定的,而這裏高度是不確定的,只知道一個大致的區間。



圖10. Error Ring - The Possible Place of the Camera when Uncertainty Considered

同樣的,對於每一個2D-3D匹配對,都可以構建出這樣一個圓環區域表示相機可能的位置,自然地,和上圖6類似,如果把所有2D-3D匹配關係都考慮進來,就得到了如下圖11.所示的結果,相交最多的位置就是相機最有可能的位置了。



圖11. Voting Shapes are Intersecting in the Most Likely Camera Position

理解了幾何上的原理之後,後面的事情就是要計算每個圓環的位置,然後通過對平面進行劃分,對每一個小區域投票,得到投票計數最多的區域就是相機的位置了,最後可以通過此時的內點再進行一個RACSAC+PnP的操作,得到更精確的位置和姿態。


Efficient Voting Shape Computation

要計算上面說的圓環,需要分幾步來操作。首先要在相機座標系下得到圖8.中藍色區域表示的 Error Shape ,接着通過圖9.中所示把這個Error Shape轉換到相機的位置上,然後再轉換到全局座標系裏,最後再考慮旋轉角度的問題,得到圖10.所示的 Error Ring。


Local Error Shape Computation



圖12. Voting Shape Computation

首先來計算在相機座標系下Error Shape的表達式。這裏是用一個四邊形來擬合Error Shape,需要得到Error Shape距離光心(相機座標系原點)的最近距離 dn 和最遠距離df ,以及xy 平面上的最左和最後的射線rl,rr



圖13. The Four Extreme Ray

現在我們來看和一個圖像2D特徵點對應的3D點在像平面上的反投影的四個極致位置,即垂直和水平方向上的極值點。連接光心和這四個極值點將得到四條射線,紅藍黃綠分別對應圖12.中的 rnrfrlrr 。明顯這四個極值點距離特徵點的距離都是r ,相對於特徵點的座標分別是偏置是(0,r)(0,r)(r0),(r,0)

但是要考慮到相機座標的Z 軸不一定是和重力方向對齊的,就會有一個旋轉矩陣Rg 來把局部相機座標系旋轉到和重力方向對齊(Z 軸正方向豎直向上)。所以四個極值點座標就會相應變化了。下面介紹具體求解方法。

這裏我們引入前面說 error cone 的表達式:



令上式中v=1 ,就得到了圖13.中在像平面上的圓的軌跡,分別求座標yz 取得極值時的u ,得到四個極值點的偏置之後,就可以得到這四個極值點和光心的連線的射線表達式,即上面所說的四條射線rnrfrlrr 。求解時利用拉格朗日乘子法來求解。



對於射線rnrf ,讓其分別和z=Xzhmax,z=Xzhmin 的水平面相交,如圖12.(a)中所示,就可以求得 Error Shape 到相機光心的距離dn,df

對於射線rlrr ,讓其夾角爲angular resolution(2°)的一半。

另外,需要說明的是還需要考慮重力方向的不確定度,因爲重力方向是通過垂直消隱線計算出來的,會有一定的不確定性,論文中3.1節專門討論了這個問題。這裏就不再詳述了,感興趣的話參考原文把。


Convert Local Error Shape into Global Camera Error Shape

得到了相機座標系下的 Error Shape 表達式,還需要將其轉化的全局座標系裏面去。



圖14. 把不確定性轉化到相機的位置

考慮對於一個2D-3D匹配關係m=(x,X) ,令 M 表示其 Error Shape, M¯ 表示M 的中心。通過Minkowski difference 得到相機的位置的 Error Shape(Voting Shape)MC(m)=MC+tt=XM¯X 是點Xxy 平面的投影,t 是相機座標系到世界座標系的平移。因此世界座標中的Global Voting Shape 就是V(m)=MC+t

把旋轉角度考慮進去,得到V(mϕ)=RϕMC+tϕ=RϕMC+XRϕM¯={XRϕp|pM} 。也就是圖10.中表示的的藍色圓環。

同樣,對於多個匹配對,都這樣構建一個Voting Shape,所有的這些Voting Shape 重疊部分最多的就是相機最有可能的位置。由於對每個匹配對只需要操作一次,所以這個算法時線性時間複雜的的。

至此,應該說是把文中最重要的內容給介紹清楚了。


Filtering Based On Geometry Constraints

因爲是對所有的特徵進行一對多的匹配,那麼必然就會產生很多對匹配對,而且這裏面只有一小部分是內點。可以通過一些幾何上的約束來剔除一部分外點。論文中主要提出了三種幾何濾波器,下面一一介紹。


1. Relative feature orientation。提取局部特徵描述子的時候,會有一個方向信息,既然已經知道了重力方向,那麼就可以得到所有特徵的方向相對於重力方向的夾角。對於一個3D點包含的所有2D特徵,描述子相對於重力方向的夾角應該比較一致,可以利用此信息濾波一些明顯錯誤的匹配對。
2. 3D Point Visibility from SfM Model。同樣,對於一個3D點,數據庫中觀測到這個點的相機的位置是已知的,那麼查詢相機如果也能看到這個3D點,那麼視角應該也保持一定的一致性。這就是圖11.出現的invisible area的原因,因爲可以判斷這些視角是不可能觀測到該3D點的。
3. Feature Scale。論文中提出了scale of 3D point 這麼一個概念,其實就是用投影的三角形比例關係,由2D特徵的尺度,和焦距,深度來得到一個3D點的尺度,S3D=SId/f ,同一個3D點計算出來的S3D 的分佈也應該是保持一致性。
4. Positional Prior。另外,如果有GPS這種先驗位置的信息,可以直接限制投票區域。

論文中稱這些濾波器可以濾除掉85%的初始匹配對。可見效果還是挺好的。


Experiments and Results

前面說對特徵進行一對多的匹配,那麼該怎麼一對多匹配呢?
文章中提出了四種思路在近鄰搜索時來找到N個匹配。

1. Ratio test. For 1:N matches the ratio test is performed wrt. the N+1th neighbor.
2. Constant number of nearest neighbors.
3. Absolute thresholding.
4. A variable radius search.

另外每一策略都可以加上 back-matching來反向驗證,對此2D-3D匹配關係,驗證3D在查詢圖像的特徵空間中的最近鄰就是該2D特徵。




圖15.實驗數據

實驗採用的數據主要是紅色框中的兩個。SF-0是一個大場景的城市街景數據集。下面開始來說實驗結果吧。



圖16. 濾波操作和匹配策略的實驗

從上圖中可以看到,濾波操作效果明顯,在95%精度處,召回率從藍色的Baseline(不到50%) 可以提升到65%,甚至70%(with GPS)。不同的匹配策略效果也不同,可以看到策略4(variable radius search),N=3 效果最好。後面實驗都採用這個設置。



圖17. SF-0數據集實驗結果

紅色框中爲相機最後的6 DoF 姿態,相比較之前的方法,召回率大大提高了。並且可以看到,最後的P3P算法並沒有提高定位的性能,但是可以得到更精確的相機的姿態。



圖18.Dubrovnik數據集實驗結果

在較小的數據集Dubrovnik上也達到了state-of-the-art的性能。尤其是在進行了Bundle Adjustment之後,相機位置的誤差中值只有0.47m,這時迄今爲止所有方法中取得的最好的結果。


Reference

Zeisl, Bernhard, Torsten Sattler, and Marc Pollefeys. Camera Pose Voting for Large-Scale Image-Based Localization. Proceedings of the IEEE International Conference on Computer Vision. 2015.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章