魚眼相機成像技術


魚眼相機成像技術

一.特征點選取方法

1.角點選取

以待檢測像素為圓心,3為半徑,做一個圓,與圓相交的共有16個像素,檢測這16個像素中與中心點的像素差大於某個閾值T時n +1,,若這16個點檢測完成時n>N(N一般取11或者9)則認為該待檢測像素為角點,然后循環這個過程檢測沒一個像素。

2.特征點選取

KNN 算法會為每個特征點計算出對應的最近距離匹配點,但是由於兩個圖像並不一定重合,因此部分特征點可能找不到對應的匹配點,需要對計算出的匹配結果進行篩選以刪除不可靠的匹配點對。

其中一種篩選方法如下:

 

設置 KNN 算法中 K 值為2,計算出當前特征點的最近鄰以及次近鄰;

計算特征點與兩個鄰點的距離之比是否小於閾值,即;

選擇小於閾值的特征點與最近鄰作為匹配點對,篩除不匹配的點對。

二.理想相機模型的映射函數

對於單目相機而言,空間的3D點的成像過程可以表達為空間點P(物點)光心O的連線在成像面上的投影p(像點),機器視覺中的所有問題都是關於P,O,p三點的共線問題:已知p和O求P可以看成是重建;已知P和p求O可以看成是標定。如果成像面是平面,就是常規的小孔成像模型的線性相機。成像面也可以是球面,一個成像點p可以對應一條空間射線,只有兩個自由度,可以用地球上的經度和維度表達,地球的中心在坐標(0,0,0),半徑為rad。這樣每個3D點都可以用球面二維角度坐標來表達。成像過程可以看成是一個降維過程。

 

 如果相機透鏡光心在(0,0,0)位置,則只能是線性投影,即空間直線投影成平面直線。對於相機成像模型(包括線性投影模型和廣角/魚眼相機模型),可以理解成空間3D點在球面上投影以后再次投影到真正的投影面上,從而使原來只能在球面上成像的點投影到一個平面上,這個平面可以是地球表面在北極點的切平面,而投影中心(光心)位置可在南北極的軸線上移動,如下圖所示:

 

 另一種理解方式是假設有一個理想的小孔成像的相機,光軸方向從南極指向北極,光心(相機的透鏡中心)位置可以在北極(0,0,rad)到南極(0,0,-rad)之間的軸線上移動。

 不論假設成像平面在哪里,相機光心在不同的位置可以對應不同的映射函數:

1.  透射映射(Perspective):當相機的光心處在地心(0,0,0)位置,對應理想的小孔成像相機的模型。又稱rectilinear,即空間中直線的成像也是直線。此時光心到成像面(相機的CCD)的距離為焦距f,空間點與光軸的夾角為θ,那么成像點在圖像上對應的半徑為R = f*tan(θ)。當f固定,θ增大到接近90度時,此時成像的入射光線與CCD平行,R為無窮大。就是說,常規的小孔成像模型的缺點: 1.處在赤道上的點無法在小孔相機的CCD上成像,2.理想小孔相機的FOV無法達到180度,3.越靠近赤道的物體以(tan(θ)-tan(θ+dθ))/dθ的比例迅速增大,導致變形嚴重。

2.  等距映射(Equidistant): R = fθ,成像點的位置R與入射角成正比,比例系數為f。與透射映射相比,解決了tan(90)為無窮大的問題。2D圖像上θ對應的等高線為半徑等比例變化的同心圓,最大的FOV可以達到360度,這是最簡單的一種魚眼模型。

3.  等立體角投影(Equisolid angle): R = 2fsin(θ/2)。這個是比較常用的模型。

4.  正交投影(Orthographic): R = fsin(θ), 與透射映射不同,不會產生近大遠小的透視效果。2D圖像上θ對應的等高線從0到90度越來越密。最大的FOV是180度。

5.  球極投影(Stereographic): 是一種將圓球面投影至平面的映射,在幾何學里也稱共型映射conformal mapping,是一種保角映射。此時相機的光心移到南極的位置,光軸朝向北極,所以有R = 2ftan(θ/2)。最大的FOV可以接近360度。

 

 

 

 另外,360度VR應用使用的等距圓柱投影(equirectangular),是在垂直方向上采用等距投影,水平方向采用圓柱投影。用一個圓柱形的圓筒把像球面給包了起來。地球儀到世界地圖的映射就是典型的等距圓柱投影。

三.魚眼圖像的畫幅

1.Circular (hemispherical) fisheye images:整個半球投影到圓內。水平垂直視角皆為180度。畫幅為圓的外接正方形。

2.Full-frame fisheye images:畫幅為圓的內接矩形,對角線FOV為180度。水平垂直視角則小於180度。

廣角和魚眼圖像校准: 實際相機鏡頭的加工無法嚴格按照上面介紹的映射模型精確實現,所有一般用θ的多項式來近似R函數。如文獻[4]中的形式: R = fθ(1 + k1θ + k2θ2 + k3θ3 + k44)。

所以對於魚眼相機,需要標定的內參為焦距f,圖像中光心位置Co和多項式映射函數的系數ki(OpenCV以及一般的文檔中稱為徑向畸變參數),有的還會加上切向畸變參數pi等。引入過多的參數可能會導致優化求解過程陷入局部最小值,所以OpenCV文檔中默認畸變參數(distortion coefficients) 為k1,k2,k3,k4

魚眼圖像拼接時的外部參數校准
多個魚眼相機組成的全景視頻采集設備,需要校准外參,即每個相機相對於第一個相機的空間關系(通常只有旋轉矩陣R)。所有相機的內參和外參以及3D特征點要放在一起做平差(Bundle Adjustment),能量函數定義為空間點(如上面所述表達為360度VR球面上二維點)在各個相機圖像上的2D投影誤差。下圖是6個GoPro廣角相機拼接全景視頻的示意。

 

 


免責聲明!

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



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