鱼眼相机成像技术
魚眼相機成像技術
一.特征點選取方法
1.角點選取
以待檢測像素為圓心,3為半徑,做一個圓,與圓相交的共有16個像素,檢測這16個像素中與中心點的像素差大于某個閾值T時n +1,,若這16個點檢測完成時n>N(N一般取11或者9)則認為該待檢測像素為角點,然后循環(huán)這個過程檢測沒一個像素。
2.特征點選取
KNN 算法會為每個特征點計算出對應的最近距離匹配點,但是由于兩個圖像并不一定重合,因此部分特征點可能找不到對應的匹配點,需要對計算出的匹配結果進行篩選以刪除不可靠的匹配點對。
其中一種篩選方法如下:
設置 KNN 算法中 K 值為2,計算出當前特征點的最近鄰以及次近鄰;
計算特征點與兩個鄰點的距離之比是否小于閾值,即;
選擇小于閾值的特征點與最近鄰作為匹配點對,篩除不匹配的點對。
二.理想相機模型的映射函數(shù)
對于單目相機而言,空間的3D點的成像過程可以表達為空間點P(物點)與光心O的連線在成像面上的投影p(像點),機器視覺中的所有問題都是關于P,O,p三點的共線問題:已知p和O求P可以看成是重建;已知P和p求O可以看成是標定。如果成像面是平面,就是常規(guī)的小孔成像模型的線性相機。成像面也可以是球面,一個成像點p可以對應一條空間射線,只有兩個自由度,可以用地球上的經度和維度表達,地球的中心在坐標(0,0,0),半徑為rad。這樣每個3D點都可以用球面二維角度坐標來表達。成像過程可以看成是一個降維過程。
如果相機透鏡光心在(0,0,0)位置,則只能是線性投影,即空間直線投影成平面直線。對于相機成像模型(包括線性投影模型和廣角/魚眼相機模型),可以理解成空間3D點在球面上投影以后再次投影到真正的投影面上,從而使原來只能在球面上成像的點投影到一個平面上,這個平面可以是地球表面在北極點的切平面,而投影中心(光心)位置可在南北極的軸線上移動,如下圖所示:
另一種理解方式是假設有一個理想的小孔成像的相機,光軸方向從南極指向北極,光心(相機的透鏡中心)位置可以在北極(0,0,rad)到南極(0,0,-rad)之間的軸線上移動。
不論假設成像平面在哪里,相機光心在不同的位置可以對應不同的映射函數(shù):
- 透射映射(Perspective):當相機的光心處在地心(0,0,0)位置,對應理想的小孔成像相機的模型。又稱rectilinear,即空間中直線的成像也是直線。此時光心到成像面(相機的CCD)的距離為焦距f,空間點與光軸的夾角為θ,那么成像點在圖像上對應的半徑為R = f*tan(θ)。當f固定,θ增大到接近90度時,此時成像的入射光線與CCD平行,R為無窮大。就是說,常規(guī)的小孔成像模型的缺點: 1)處在赤道上的點無法在小孔相機的CCD上成像。2)理想小孔相機的FOV無法達到180度。3)越靠近赤道的物體以(tan(θ)-tan(θ+dθ))/dθ的比例迅速增大,導致變形嚴重。
- 等距映射(Equidistant): R= fθ,成像點的位置R與入射角成正比,比例系數(shù)為f。與透射映射相比,解決了tan(90)為無窮大的問題。2D圖像上θ對應的等高線為半徑等比例變化的同心圓,最大的FOV可以達到360度,這是最簡單的一種魚眼模型。
- 等立體角投影(Equisolid angle): R= 2fsin(θ/2)。這個是比較常用的模型。
- 正交投影(Orthographic): R= fsin(θ), 與透射映射不同,不會產生近大遠小的透視效果。2D圖像上θ對應的等高線從0到90度越來越密。最大的FOV是180度。
- 球極投影(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度。
廣角和魚眼圖像校準: 實際相機鏡頭的加工無法嚴格按照上面介紹的映射模型精確實現(xiàn),所有一般用θ的多項式來近似R函數(shù)。如文獻[4]中的形式: R = fθ(1 + k1θ + k2θ2+ k3θ3 + k4*θ4)。
所以對于魚眼相機,需要標定的內參為焦距f,圖像中光心位置Co和多項式映射函數(shù)的系數(shù)ki(OpenCV以及一般的文檔中稱為徑向畸變參數(shù)),有的還會加上切向畸變參數(shù)pi等。引入過多的參數(shù)可能會導致優(yōu)化求解過程陷入局部最小值,所以OpenCV文檔中默認畸變參數(shù)(distortion coefficients) 為k1,k2,k3,k4。
魚眼圖像拼接時的外部參數(shù)校準:
多個魚眼相機組成的全景視頻采集設備,需要校準外參,即每個相機相對于第一個相機的空間關系(通常只有旋轉矩陣R)。所有相機的內參和外參以及3D特征點要放在一起做平差(Bundle Adjustment),能量函數(shù)定義為空間點(如上面所述表達為360度VR球面上二維點)在各個相機圖像上的2D投影誤差。下圖是6個GoPro廣角相機拼接全景視頻的示意。
總結
- 上一篇: YOLO3升级优化版!Poly-YOLO
- 下一篇: 各种经典透镜投影模型