智慧交通day03-车道线检测实现02-1:相机校正
1. 相機標(biāo)定的意義
我們所處的世界是三維的,而照片是二維的,我們可以把相機認(rèn)為是一個函數(shù),輸入量是一個場景,輸出量是一幅灰度圖。這個從三維到二維的過程的函數(shù)是不可逆的。
相機標(biāo)定的一個目的是要找一個合適的數(shù)學(xué)模型,求出這個模型的參數(shù),能夠近似從三維到二維的過程,使這個三維到二維的過程的函數(shù)找到反函數(shù)。
這個逼近的過程就是相機標(biāo)定,我們用簡單的數(shù)學(xué)模型來表達(dá)復(fù)雜的成像過程。
由此可知,相機標(biāo)定的一個目的就是建立像素坐標(biāo)系和世界坐標(biāo)系之間的關(guān)系。原理是根據(jù)攝像機的模型,由已知特征點的圖像坐標(biāo)求解攝像機的模型參數(shù),并求出成像的反過程,從而從圖像中恢復(fù)出空間點的三維坐標(biāo),達(dá)到三維重建的目的。
另外相機標(biāo)定還可以進(jìn)行圖像校正,由于透鏡的制造精度以及組裝工藝的偏差會引入畸變,導(dǎo)致圖形失真,所以我們可以求解畸變參數(shù),對圖像進(jìn)行去畸變。
2. 成像原理
在介紹相機標(biāo)定之前,我們首先來看下相機的成像模型。也就是,現(xiàn)實物體上的一個點在相機采集到的圖像中所在的位置是怎么確定的。我們采用的模型是針孔模型,也就是小孔成像。
小孔成像是利用了光線直線傳播的原理。比如說,遠(yuǎn)處有一棵大樹,而我們有個盒子,在這個盒子的對著大樹的那一面上用針尖戳一個小孔。我們?nèi)芜x這棵大樹上的任何的一個點,它都會向四周去反射無數(shù)條光線。但是因為光線是直線傳播的,所以這些光線要么沒有一條能進(jìn)入盒子中,要么就只有一條光線是進(jìn)入到這個盒子里面的。進(jìn)入到盒子中的光線會在盒子里的一面上形成一個光點。這個光點跟大樹上的某個點是對應(yīng)的,顏色也是一致的,這就建立了一對一的關(guān)系。如果我們把感光膠片或者感光的傳感器放在盒子里,就可以做成一個針孔相機來得到大樹的彩色圖像了。如下圖所示:
由于大樹上每個點反射的無數(shù)條光線只有一條進(jìn)入到盒子中,所以圖像是很暗的。而加大孔徑,雖然可以提高圖像的亮度,卻會使物體上的某一個點會反射一小束光進(jìn)入到相機里。這一小束光會在感光傳感器上形成一個光斑,而不是一個點;從而相機失去了物體與圖像上的點的一一對應(yīng)關(guān)系,進(jìn)而導(dǎo)致圖像模糊甚至無法成像。當(dāng)然實際的針孔相機不可能是讓每個點只有一條光線進(jìn)入相機。因為光具有波粒二象性,是可以衍射的,所以很小的針孔,也會導(dǎo)致圖像模糊。根據(jù)可見光的波長,理論計算的小孔最佳直徑是 0.25mm 左右,相應(yīng)的光圈值大概是 f/200。
所以用一個直徑比針孔直徑大許多的凸透鏡來替代針孔。凸透鏡可以把物體上的一個點所反射的那一小束通過透鏡的光重新匯聚成一個點,這樣,不但圖像亮度增大了,而且物體和圖像上點的又可以一一對應(yīng)起來了。這就是我們現(xiàn)在常用的相機的基本工作原理。
3. 相機成像模型
現(xiàn)在我們看下相機的成像模型,我們從下圖中直觀感受下:
下面我們介紹下成像過程中的四大坐標(biāo)系:
下面我們進(jìn)行一系列的變換,引入多個參數(shù)矩陣,實現(xiàn)從世界坐標(biāo)系到像素坐標(biāo)的轉(zhuǎn)換。已知一個現(xiàn)實世界中的物體點的在世界坐標(biāo)系中的坐標(biāo)為(Xw, Yw, Zw),經(jīng)過相機拍攝得到圖片,在圖片上的像素坐標(biāo)為(u , v )。假設(shè)在圖像坐標(biāo)系中的坐標(biāo)為( x , y ),在相機坐標(biāo)系中的坐標(biāo)為(Xc, Yc, Zc)。各個坐標(biāo)之間的轉(zhuǎn)化流程如下圖所示:
3.1. 世界坐標(biāo)系與相機坐標(biāo)系之間的轉(zhuǎn)換
世界坐標(biāo)系轉(zhuǎn)換到相機坐標(biāo)系時不會產(chǎn)生形變,所以將世界坐標(biāo)系進(jìn)行剛體變換就可轉(zhuǎn)換為相機坐標(biāo)系。三維空間中,當(dāng)物體不發(fā)生形變時,而只進(jìn)行旋轉(zhuǎn)平移的運動,就是剛體變換。空間中的一個坐標(biāo)系總可以通過剛體變換,即平移和旋轉(zhuǎn),就可以轉(zhuǎn)換為另一個坐標(biāo)系,如下圖所示:
下面我們看下旋轉(zhuǎn)矩陣的計算,現(xiàn)在假設(shè)坐標(biāo)系沿著z軸旋轉(zhuǎn),如下圖所示:
則有:(假設(shè)其中x’,y’表示世界坐標(biāo)系,x,y是相機坐標(biāo)系)
3.2. 相機坐標(biāo)系到圖像坐標(biāo)系的轉(zhuǎn)換
從相機坐標(biāo)系到圖像坐標(biāo)系,是從3d到2d的過程,屬于透射投影關(guān)系:
3.3. 圖像坐標(biāo)系到像素坐標(biāo)系
像素坐標(biāo)系和圖像坐標(biāo)系都在成像平面上,只是各自的原點和度量單位不一樣。圖像坐標(biāo)系的原點為相機光軸與成像平面的交點,通常情況下是成像平面的中點。圖像坐標(biāo)系的單位是mm,屬于物理單位,而像素坐標(biāo)系的原點在圖像的左上角,單位是pixel,也就是我們說的幾行幾列。如下圖所示:
所以這二者之間的轉(zhuǎn)換如下:
3.4. 總結(jié)
我們已經(jīng)介紹了各個坐標(biāo)系之間的轉(zhuǎn)換過程,但是我們想知道的是如何從世界坐標(biāo)系轉(zhuǎn)換到像素坐標(biāo)系,因此我們需要把上面介紹到的聯(lián)系起來,將三者相乘,可以把這三個過程和在一起,寫成一個矩陣:
4. 圖像畸變
我們在相機坐標(biāo)系到圖像坐標(biāo)系變換時談到透視投影。相機拍照時通過透鏡把實物投影到像平面上,但是透鏡由于制造精度以及組裝工藝的偏差會引入畸變,導(dǎo)致原始圖像的失真。因此我們需要考慮成像畸變的問題。透鏡的畸變主要分為徑向畸變和切向畸變兩類。
4.1. 徑向畸變
顧名思義,徑向畸變就是沿著透鏡半徑方向分布的畸變,產(chǎn)生原因是光線在原理透鏡中心的地方比靠近中心的地方更加彎曲,這種畸變在普通的鏡頭中表現(xiàn)更加明顯,徑向畸變主要包括桶形畸變和枕形畸變兩種。以下分別是枕形和桶形畸變示意圖:(從左到右依次是:正常無畸變,桶形畸變和枕形畸變)
4.2. 切向畸變
切向畸變是由于透鏡本身與相機傳感器平面(像平面)或圖像平面不平行而產(chǎn)生的,這種情況多是由于透鏡被粘貼到鏡頭模組上的安裝偏差導(dǎo)致。在相機傳感器和鏡頭不平行的情況下,因為存在夾角,所以光透過鏡頭傳到圖像傳感器上時,成像位置發(fā)生了變化,如下圖所示:
下圖顯示某個透鏡的切向畸變示意圖,大體上畸變位移相對于左下—右上角的連線是對稱的,這跟凸透鏡與傳感器之間的夾角有關(guān):
徑向畸變和切向畸變模型中一共有5個畸變參數(shù):k1、k2、p1、p2、k3,得到這五個參數(shù),就可以進(jìn)行圖像的去畸變。這些都屬于相機的內(nèi)參。
5.相機標(biāo)定的分類
相機標(biāo)定方法一般分為三類,分為傳統(tǒng)的標(biāo)定算法,自標(biāo)定法和基于主動視覺的標(biāo)定法。分別介紹如下:
-
傳統(tǒng)的標(biāo)定算法:傳統(tǒng)的相機標(biāo)定算法就是基于標(biāo)定物的相機標(biāo)定算法,在進(jìn)行相機標(biāo)定時,要通過專門指定的標(biāo)定物來完成,此類方法是利用標(biāo)定物上構(gòu)建的已確定的物點坐標(biāo)和與之對應(yīng)的圖像點之間的聯(lián)系,借助一些數(shù)學(xué)方法,得到相機的內(nèi)部和外部參數(shù)。它對標(biāo)定物的要求有:標(biāo)定物的特征部分與周圍環(huán)境存在較大的差別,特征容易分辨且提取方便,標(biāo)定物具有較高的穩(wěn)定性,也就是說它的特征不隨著相機位置的變換產(chǎn)生畸變。常見模板有棋盤格,圓形,三角形等。
-
?代表算法有Tsai標(biāo)定法和直接線性變換法(DLT)等。
-
自標(biāo)定法:該算法不使用標(biāo)定物,而是依靠圖像點之間存在的關(guān)系,直接計算相機的參數(shù)。該算法只計算相機的內(nèi)部參數(shù)的約束,不考慮相機系統(tǒng)的外部場景,所以方法靈活,應(yīng)用范圍較廣,但是算法魯棒性較差,只適合精度要求較低的場合。
-
基于主動視覺的標(biāo)定法:該算法是控制相機做一些特定的動作,比如說平移,旋轉(zhuǎn),得到多張圖片,以此計算相機參數(shù)。使用比較廣泛的有兩類:一類是在三維空間中,讓相機作兩組純平移運動,進(jìn)而求解相機的參數(shù),第二類是控制相機繞光心軸旋轉(zhuǎn),獲得相機的參數(shù)。此類方法優(yōu)點是算法簡單,往往能夠獲得線性解,故魯棒性較高,缺點是系統(tǒng)的成本高、實驗設(shè)備昂貴、實驗條件要求高,而且不適合于運動參數(shù)未知或無法控制的場合。
總結(jié)
以上是生活随笔為你收集整理的智慧交通day03-车道线检测实现02-1:相机校正的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下载Pytorch的自带数据集时报错=u
- 下一篇: 【Pytorch神经网络基础理论篇】 0