鱼眼相机模型和标定
Hello,歡迎來到我的博客~
今天的內(nèi)容是魚眼相機(jī)的建模方法和標(biāo)定工具的使用
主要會(huì)介紹魚眼相機(jī)和普通透視相機(jī)的聯(lián)系,以及一種簡(jiǎn)單的魚眼相機(jī)模型,和標(biāo)定方法
1 魚眼相機(jī)與普通透視相機(jī)的關(guān)系
普通透視相機(jī)是我們?cè)谌粘I钭畛S玫南鄼C(jī),它的成像模型想必大家都很了解。而魚眼相機(jī)拍攝的圖像和普通相機(jī)拍攝的有著天壤之別,所以我們直觀上很難想象它是如何成像的。但是這里有一種很簡(jiǎn)單的方法,就可以將一個(gè)普通相機(jī)改造成魚眼相機(jī):
沒錯(cuò),在普通相機(jī)前面加一個(gè)反射鏡就可以等效成一個(gè)魚眼相機(jī)了。
大家注意了,這也是給魚眼相機(jī)建模的一個(gè)基本思想,就是把魚眼相機(jī)等效為一面鏡子和普通相機(jī)的組合!
另外,還需要注意的是,這里我們只是說明魚眼相機(jī)是如何等效為普通相機(jī)的。一般的魚眼相機(jī)的實(shí)際原理并不是這樣的,而是通過一系列透鏡來改變光路,實(shí)現(xiàn)了魚眼的效果。
普通相機(jī)+鏡子構(gòu)成魚眼相機(jī)的這種系統(tǒng)稱為:catadioptric omnidirectional cameras
通過透鏡構(gòu)成魚眼相機(jī)的系統(tǒng)稱為:dioptric omnidirectional cameras
2 魚眼相機(jī)的類型
上面說到可以把一面鏡子和一個(gè)普通相機(jī)組合,形成一個(gè)魚眼相機(jī)。根據(jù)這面鏡子的不同,可以把魚眼相機(jī)分為:中心式(central camera)和非中心式(non central camera)兩類。
2.1 非中心式(Non central camera)
非中心式相機(jī),也可以叫做non-single effective viewpoint camera,如下圖所示:
上圖中,黑色粗直線代表成像平面,黑色粗曲線代表反射鏡。從圖中可以看出來,這實(shí)際上就是從外部射向鏡子的光線都不相交于同一點(diǎn)。
2.2 中心式(Non central camera)
中心式相機(jī),也可以叫做single effective viewpoint camera,如下圖所示:
從圖中可以看出來,這種相機(jī)實(shí)際上就是從外部射向鏡子的光線都相交于同一點(diǎn)。
對(duì)于這種相機(jī)來說,這個(gè)鏡子可能的形狀有,雙曲面(hyperbolic), 拋物面(parabolic),橢圓面(elliptical)。
3 魚眼相機(jī)模型
魚眼相機(jī)模型的作用是建立二維圖像坐標(biāo)到三維矢量間的關(guān)系。 此外,這一節(jié)介紹的相機(jī)模型是針對(duì)于中心式魚眼相機(jī)系統(tǒng)的,但對(duì)于透鏡構(gòu)成的魚眼還是反射鏡構(gòu)成的魚眼是沒有區(qū)分的。下面是一個(gè)相機(jī)模型的圖示:
注意:
3.1 模型假設(shè)
實(shí)際系統(tǒng)存在很多誤差,為了模型的實(shí)用性,因此做了如下假設(shè),選擇性的忽略了一部分誤差:
- 假設(shè)鏡面沿著鏡面軸是完美對(duì)稱的,無論旋轉(zhuǎn)多少度,都不會(huì)對(duì)光路產(chǎn)生變化
- 假設(shè)不考慮相機(jī)的透鏡畸變,因?yàn)檫@部分畸變實(shí)際上可以考慮到反射鏡對(duì)應(yīng)的投影函數(shù)里
3.2 相機(jī)模型-1
在這個(gè)相機(jī)模型中,我們?cè)谏线叺幕A(chǔ)上,額外加入一條假設(shè),即:
- 假設(shè)相機(jī)軸和反射鏡的中軸完全完全對(duì)齊
于是,假設(shè)p=(u,v)p=(u,v)p=(u,v)代表了特征點(diǎn)對(duì)應(yīng)的圖像坐標(biāo),P=(x,y,z)P=(x,y,z)P=(x,y,z)代表了從相機(jī)坐標(biāo)系原點(diǎn)出發(fā),指向特征點(diǎn)的三維矢量。
由于,相機(jī)軸和鏡面軸完美對(duì)齊,所以:
[xy]=α[uv],α>0\left[\begin{matrix}x\\y\end{matrix}\right]= \alpha\left[\begin{matrix}u\\v\end{matrix}\right],\alpha>0 [xy?]=α[uv?],α>0
其中,α\alphaα相當(dāng)于一個(gè)縮放因子,它并不影響矢量的方向。
然后,根據(jù)xxx和yyy,還有曲面的形狀,可以計(jì)算z=h(x,y)=h(αu,αv)=αf(u,v)z=h(x,y)=h(\alpha u,\alpha v)=\alpha f(u,v)z=h(x,y)=h(αu,αv)=αf(u,v)。注意,這里fff和hhh都代表的是曲面的形狀函數(shù),它的形式是自己定義,我們可以隨意的把α\alphaα提出來。
所以,最后的PPP矢量可以等效為:
P=[xyz]=α[uvf(u,v)]P=\left[\begin{matrix}x\\y\\z\end{matrix}\right]= \alpha\left[\begin{matrix}u\\v\\f(u,v)\end{matrix}\right] P=???xyz????=α???uvf(u,v)????
由于PPP是一個(gè)方向矢量,所以,α\alphaα沒有任何影響,所以:
P=[xyz]=[uvf(u,v)]P=\left[\begin{matrix}x\\y\\z\end{matrix}\right]=\left[\begin{matrix}u\\v\\f(u,v)\end{matrix}\right] P=???xyz????=???uvf(u,v)????
這里,我們給出fff的形式:
f(ρ)=a0+a1ρ+a2ρ2+a3ρ3+a4ρ4+...f(\rho)=a_0+a_1\rho+a_2\rho^2+a_3\rho^3+a_4\rho^4+... f(ρ)=a0?+a1?ρ+a2?ρ2+a3?ρ3+a4?ρ4+...
其中,ρ=u2+v2\rho=\sqrt{u^2+v^2}ρ=u2+v2?。
這里a1~ana_1\sim a_na1?~an?就是魚眼鏡頭的參數(shù),也是要標(biāo)定的系數(shù)。
一般來說,這個(gè)多項(xiàng)式的階數(shù)是4階時(shí),效果是最優(yōu)的。
3.3 相機(jī)模型-2
在這個(gè)模型中,我們不再假設(shè)相機(jī)軸和反射鏡的中軸完全完全對(duì)齊。此外,我們還考慮了像素點(diǎn)發(fā)生線性變形(仿射變換)帶來的誤差。因此,我們將原始的像素坐標(biāo)投影到一個(gè)新的平面:
[u′v′]=[cde1][uv]+[ucvc]\left[\begin{matrix}u'\\v'\end{matrix}\right]=\left[\begin{matrix}c & d\\e & 1\end{matrix}\right]\left[\begin{matrix}u\\v\end{matrix}\right]+\left[\begin{matrix}u_c\\v_c\end{matrix}\right] [u′v′?]=[ce?d1?][uv?]+[uc?vc??]
其中,ucu_cuc?和vcv_cvc?是反射鏡軸和相機(jī)軸的偏移,c,d,ec,d,ec,d,e參數(shù)代表了像素線性形變。u′u'u′和v′v'v′就是修正過后的像素坐標(biāo)。
之后,再根據(jù)修正后的像素坐標(biāo)和相機(jī)模型-1,仍然可以恢復(fù)特征點(diǎn)的三維矢量。
4 魚眼相機(jī)標(biāo)定
本文所提魚眼相機(jī)模型有對(duì)應(yīng)的開源工具:OCamCalib
它有一個(gè)Matlab的工具箱,大家下載解壓以后,進(jìn)入該文件夾,用Matlab運(yùn)行ocam_calib就可以打開該工具了,它的界面是這樣的:
具體的標(biāo)定步驟:
參數(shù)說明
ocam_model:儲(chǔ)存相機(jī)參數(shù)的結(jié)構(gòu)體
ocam_model.ss:f(ρ)f(\rho)f(ρ)的系數(shù)
ocam_model.xc,ocam_model.yc:圖像中心
ocam_model.c,ocam_model.d,ocam_model.e:仿射變換參數(shù)
ocam_model.width,ocam_model.height:圖像尺寸
5 參考文獻(xiàn)
[1] OCamCalib
[2] Scaramuzza, D., Martinelli, A. and Siegwart, R., (2006). “A Flexible Technique for Accurate Omnidirectional Camera Calibration and Structure from Motion”, Proceedings of IEEE International Conference of Vision Systems (ICVS’06), New York, January 5-7, 2006.
[3] Scaramuzza, D., Martinelli, A. and Siegwart, R., (2006). “A Toolbox for Easy Calibrating Omnidirectional Cameras”, Proceedings to IEEE International Conference on Intelligent Robots and Systems (IROS 2006), Beijing China, October 7-15, 2006.
[4] Scaramuzza, D. (2008). Omnidirectional Vision: from Calibration to Robot Motion Estimation, ETH Zurich, PhD Thesis no. 17635. PhD Thesis advisor: Prof. Roland Siegwart. Committee members: Prof. Patrick Rives (INRIA Sophia Antipolis), Prof. Luc Van Gool (ETH Zurich). Chair: Prof. Lino Guzzella (ETH Zurich), Zurich, February 22, 2008.
總結(jié)
- 上一篇: 福彩3D Matlab统计分析,基于AN
- 下一篇: 双栈共享空间