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