图像处理中消除相机透镜畸变和视角变换
from:圖像處理中消除相機(jī)透鏡畸變和視角變換
一般的針孔相機(jī)模型如下:
三維坐標(biāo)點(diǎn)經(jīng)過(guò)透視投影變換,轉(zhuǎn)換到一個(gè)圖像平面坐標(biāo)點(diǎn)。
而相機(jī)透鏡還存在一定的畸變,包括橫向畸變和切向畸變。
?
因此,針孔相機(jī)模型又被擴(kuò)展為以下模型:
首先,世界坐標(biāo)被轉(zhuǎn)換為相機(jī)坐標(biāo),由X,Y,Z到x,y,z;
然后,歸一化,z=1處,x,y的投影坐標(biāo)x`,y`;
接下來(lái),對(duì)投影坐標(biāo),進(jìn)行畸變處理;
最后,由相機(jī)坐標(biāo)轉(zhuǎn)換到圖像坐標(biāo)。
?
在使用廣角鏡頭或魚眼相機(jī)時(shí),原始圖像存在畸變比較嚴(yán)重。
在圖像識(shí)別的很多應(yīng)用場(chǎng)景中,消除圖像的畸變是圖像預(yù)處理的首要問題。
通過(guò)相機(jī)標(biāo)定,很容易拿到相機(jī)的內(nèi)部參數(shù),包括焦距、光心和畸變系數(shù)。
以上過(guò)程,就是透鏡畸變前后圖像坐標(biāo)變換的公式。具體步驟如下:
1. 由圖像坐標(biāo)系反變換到相機(jī)坐標(biāo)系中
2. ?然后,校正反變換R-1,一般無(wú)校正變換的相機(jī),默認(rèn)為單位矩陣
3. 歸一化,并進(jìn)行相機(jī)透鏡畸變處理
4. 由相機(jī)坐標(biāo)轉(zhuǎn)換到圖像坐標(biāo)。
由此,得到由針孔模型到透鏡畸變畸變模型相互變換的對(duì)應(yīng)關(guān)系u <--> mapx, v <--> mapy
initUndistortRectifyMap函數(shù)就是完成了以上工作。
?OpenCV中,remap與undistortion都是消除畸變的函數(shù),undistortion在設(shè)置了一些參數(shù)后調(diào)用了remap函數(shù),二者的算法實(shí)質(zhì)是一樣的。由目標(biāo)圖像的坐標(biāo),找到對(duì)應(yīng)的原始圖像坐標(biāo),然后將其值復(fù)制到目標(biāo)圖像。大致思路是如此,由于圖像大小和變換,需要插值或近似的方法,如最鄰近法、線性插值等
?
圖像視角變換
如圖像由前向視角frontview轉(zhuǎn)換為俯視角birdview。
一般來(lái)講,相機(jī)向下傾斜時(shí),相機(jī)前向視角frontview的視角范圍比較大,而俯視birdview需要的視角比較小(涉及地面的視角部分)。
?
針孔模型下,在前向視角圖像中,截取涉及地面的部分,并通過(guò)透視變換,轉(zhuǎn)換為俯視視角。地面的一個(gè)矩形區(qū)域,在前向視圖中會(huì)大致是一個(gè)三角形或梯形的形狀,而在俯視圖中,仍是一個(gè)矩形圖像,且能保留線性、平行性特征。
?
如下,一個(gè)前向廣角視圖,轉(zhuǎn)換為俯視圖。
前向視圖:
俯視圖:
?
轉(zhuǎn)換方法:
首先,通過(guò)標(biāo)定獲取相機(jī)的外部參數(shù),世界坐標(biāo)系中相機(jī)的位置Position和傾角(相對(duì)于x,y,z坐標(biāo)軸的角度),即M=R|t。并假定地面的z坐標(biāo)為z=0.
然后,獲取俯視圖內(nèi)的三維地面坐標(biāo)。z=0,地面區(qū)域的實(shí)際大小與俯視圖的大小成一定比例,即俯視圖中一個(gè)像素的位置(u`,v`),在地面坐標(biāo)上,也有對(duì)應(yīng)的位置(x`, y`, 0) = (u`*spaceSolution, v`*spaceSolution, 0).spaceSolution是空間像素的大小,如一個(gè)像素的高和寬是0.05米。。
然后,由上面第二塊公式,通過(guò)位置變換,畸變計(jì)算,和相機(jī)參數(shù)變換,三個(gè)步驟,將每個(gè)地面位置坐標(biāo)(x`,y`, 0)轉(zhuǎn)換為前向視圖中的坐標(biāo)(u, v)。
此時(shí),前向畸變視圖像與俯視圖像有一個(gè)對(duì)應(yīng)關(guān)系(u,v) <--> (u`,v`)。
?
通過(guò)對(duì)應(yīng)關(guān)系,每個(gè)俯視圖的像素都在前向畸變視圖像中有對(duì)應(yīng)的位置,兩者的像素值相等(使用最鄰近法或線性插值等)。俯視圖前方的部分邊緣模糊比較嚴(yán)重,這是在原圖中采樣范圍小的原因。
總結(jié)
以上是生活随笔為你收集整理的图像处理中消除相机透镜畸变和视角变换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。