阮國熙
摘要:本文首先介紹了攝像頭標(biāo)記的坐標(biāo)系,包括圖像法像素直角坐標(biāo)系、圖像物理坐標(biāo)系、物理坐標(biāo)系與像素坐標(biāo)系轉(zhuǎn)換、攝像機(jī)坐標(biāo)系與世界坐標(biāo)系等。然后介紹了幾種攝像機(jī)標(biāo)定技術(shù),例如攝像頭畸變、傳統(tǒng)攝像機(jī)標(biāo)定技術(shù)等。文章的最后著重討論了如何具體實(shí)現(xiàn)攝像頭簡易標(biāo)定設(shè)計(jì)的方法。本文的算法是在研究Tsai的算法基礎(chǔ)上改進(jìn)過來的在Tsai的方法,具體做法是:通過變換矩陣將投射的像素點(diǎn)非線性化,然后再通過數(shù)學(xué)模型計(jì)算出具體的解。具體來說主要包括以下方面的改進(jìn):成像模型的改進(jìn)、獲取點(diǎn)坐標(biāo)方法的改進(jìn)和計(jì)算點(diǎn)初始值方法的改進(jìn)。
關(guān)鍵詞:攝像頭 標(biāo)記 設(shè)計(jì)
中圖分類號(hào):TP391.41 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)09-0094-01
1 引言
攝像機(jī)標(biāo)定的主要目的,也是計(jì)算機(jī)視覺的最主要的研究方向.(Marr 1982),所謂三維重建就是指從圖像出發(fā)恢復(fù)出空間點(diǎn)三維坐標(biāo)的過程。
攝像頭標(biāo)定就是通過小孔成像與坐標(biāo)系把現(xiàn)實(shí)圖像之間的距離反應(yīng)到攝像頭里面。比如一個(gè)物體距離攝像頭30厘米,那么通過方法來把這個(gè)距離真實(shí)地反映到攝像頭里面,就是小孔成像。常見是坐標(biāo)系是X、Y、Z坐標(biāo)系,因?yàn)檫@個(gè)坐標(biāo)系我們接觸的比較多,理解起來也比較方便。本文的算法是在研究Tsai的算法基礎(chǔ)上改進(jìn)過來的在Tsai的方法,實(shí)際上進(jìn)行計(jì)算機(jī)幀存象素坐標(biāo)和圖像實(shí)際坐標(biāo)轉(zhuǎn)換使用的是dx和dy,問題就出在dx=dx*Ncx/Nfx;dy=dy(dx,dy分別為X,Y方向上的象素間距)。這里的Ncx為攝像機(jī)每行捕捉到的象素(由CCD攝像機(jī)參數(shù)決定),Nfx為計(jì)算機(jī)每行采集到的象素?cái)?shù)。Tsai算法的最大特點(diǎn)就是比較準(zhǔn)確,相對(duì)來說產(chǎn)生畸變的概率會(huì)比較小。
本文改進(jìn)的做法是:通過變換矩陣將投射的像素點(diǎn)非線性化,然后再通過數(shù)學(xué)模型計(jì)算出具體的解。具體來說主要包括以下方面的改進(jìn):成像模型的改進(jìn)、獲取點(diǎn)坐標(biāo)方法的改進(jìn)和計(jì)算點(diǎn)初始值方法的改進(jìn)。
2 攝像頭標(biāo)定的原理
2.1 基本呈像原理
攝像機(jī)標(biāo)定是通過建立攝像機(jī)成像的幾何模型,確定空間物體表面的三維幾何位置與其對(duì)應(yīng)的圖像中的點(diǎn)之間的關(guān)系,最終得到相機(jī)參數(shù)。 攝像機(jī)標(biāo)定方法分為傳統(tǒng)攝像機(jī)標(biāo)定、主動(dòng)視覺攝像機(jī)標(biāo)定和攝像機(jī)自標(biāo)定三種方法。結(jié)合實(shí)際應(yīng)用精度要求及操作復(fù)雜度等,目前最常用的畸變校正算法為模板法,其原理是:利用一個(gè)事先做好的模板(通常為黑白棋盤格),然后對(duì)模板進(jìn)行拍攝,通過對(duì)拍攝前后提取的對(duì)應(yīng)的特征點(diǎn),根據(jù)事先建立的成像模型,通過數(shù)學(xué)方法對(duì)參數(shù)進(jìn)行求解,再將求得的參數(shù)恢復(fù)沒有畸變的源圖像。沒有誤差的狀態(tài)下,現(xiàn)實(shí)中的圖像會(huì)通過一個(gè)小孔來投射到攝像頭中,所有投射過來的點(diǎn)圍繞中心點(diǎn)O均勻分布開來。這個(gè)和小孔成像的原理是一樣的。那么通過什么方法來描述世界坐標(biāo)系與現(xiàn)實(shí)坐標(biāo)系的關(guān)系?本文所采取的方法是針孔模型。具體來說就是把現(xiàn)實(shí)中的圖像通過該模型投影到攝像頭內(nèi)。假設(shè)該點(diǎn)為X點(diǎn),投影到攝像頭內(nèi)的是Y點(diǎn),X與Y的關(guān)系可以通過一個(gè)三階矩陣來實(shí)現(xiàn)。對(duì)應(yīng)于坐標(biāo)系有四個(gè)參數(shù),分別是x1,x2,x3,x4,在確認(rèn)現(xiàn)實(shí)中與攝像頭的參數(shù)后利用這個(gè)三階矩陣既投影矩陣把參數(shù)反應(yīng)到攝像頭內(nèi),這時(shí)攝像頭就可以計(jì)算出相應(yīng)的圖像坐標(biāo),然后把坐標(biāo)標(biāo)記出來。 簡單來講攝像頭標(biāo)定就是通過小孔成像與坐標(biāo)系把現(xiàn)實(shí)圖像之間的距離反應(yīng)到攝像頭里面。比如一個(gè)物體距離攝像頭30厘米,那么通過方法來把這個(gè)距離真實(shí)地反映到攝像頭里面,就是小孔成像。常見是坐標(biāo)系是X、Y、Z坐標(biāo)系,因?yàn)檫@個(gè)坐標(biāo)系我們接觸的比較多,理解起來也比較方便。
2.2 OPENCV圖像處理技術(shù)
Opencv技術(shù)是在世界范圍內(nèi)流行的免費(fèi)圖像處理技術(shù),這種技術(shù)是由C語言開發(fā)完成。它的原理是這樣的:先把把現(xiàn)實(shí)中的圖像采集到計(jì)算機(jī)中,然后通過具體的數(shù)學(xué)模型來對(duì)這些圖像進(jìn)行處理。包括現(xiàn)實(shí)坐標(biāo)系與計(jì)算機(jī)坐標(biāo)系的轉(zhuǎn)化以及距離的呈現(xiàn)等。
2.3 攝像機(jī)成像設(shè)定
首先,攝像機(jī)獲取到的現(xiàn)實(shí)中的圖像是固定不變的,但是如何把這個(gè)距離如實(shí)地在攝像頭中表現(xiàn)出來,這個(gè)是需要標(biāo)記的。對(duì)應(yīng)的算法就是成像算法,雖然有的算法用到的數(shù)學(xué)模型不一樣,但是其原理都是一樣的,都是實(shí)現(xiàn)對(duì)像素點(diǎn)的標(biāo)定。
3 本文所采用的簡易的標(biāo)定方法
3.1 攝像機(jī)線性模型
在理想狀態(tài)下,既光線充足,沒有誤差的狀態(tài)下,現(xiàn)實(shí)中的圖像會(huì)通過一個(gè)小孔來投射到攝像頭中,所有投射過來的點(diǎn)圍繞中心點(diǎn)O均勻分布開來。這個(gè)和小孔成像的原理是一樣的。那么通過什么方法來描述世界坐標(biāo)系與現(xiàn)實(shí)坐標(biāo)系的關(guān)系?本文所采取的方法是針孔模型。具體來說就是把現(xiàn)實(shí)中的圖像通過該模型投影到攝像頭內(nèi)。假設(shè)該點(diǎn)為X點(diǎn),投影到攝像頭內(nèi)的是Y點(diǎn),X與Y的關(guān)系可以通過一個(gè)三階矩陣來實(shí)現(xiàn)。對(duì)應(yīng)于坐標(biāo)系有四個(gè)參數(shù),分別是x1,x2,x3,x4,在確認(rèn)現(xiàn)實(shí)中與攝像頭的參數(shù)后利用這個(gè)三階矩陣既投影矩陣把參數(shù)反應(yīng)到攝像頭內(nèi),這時(shí)攝像頭就可以計(jì)算出相應(yīng)的圖像坐標(biāo),然后把坐標(biāo)標(biāo)記出來。
但是在現(xiàn)實(shí)狀態(tài)下,不可能滿足所有的條件,不可避免的會(huì)產(chǎn)生誤差。誤差的具體表現(xiàn)就是會(huì)使得圖像產(chǎn)生畸變,具體有以下幾種情況:徑向畸變,偏心畸變等。這其中畸變最嚴(yán)重的是偏心畸變。鏡頭畸變的產(chǎn)生是由于透鏡特性(凸透鏡匯聚光線、凹透鏡發(fā)散光線)在成像過程中對(duì)真實(shí)鏡像的一種透視失真,在鏡頭的制造過程中,如果想要消除鏡頭畸變,需要從鏡頭的光學(xué)設(shè)計(jì)入手,選取高質(zhì)量的光學(xué)玻璃來制造鏡片,然而,這些手段并不能完全消除畸變,攝像機(jī)標(biāo)定技術(shù)應(yīng)運(yùn)而生。因此,要把偏心畸變的情況考慮進(jìn)去。
3.2 改進(jìn)的Tsai算法
本文的算法是在研究Tsai的算法基礎(chǔ)上改進(jìn)過來的在Tsai的方法,實(shí)際上進(jìn)行計(jì)算機(jī)幀存象素坐標(biāo)和圖像實(shí)際坐標(biāo)轉(zhuǎn)換使用的是dx和dy,問題就出在dx=dx*Ncx/Nfx;dy=dy(dx,dy分別為X,Y方向上的象素間距)。這里的Ncx為攝像機(jī)每行捕捉到的象素(由CCD攝像機(jī)參數(shù)決定),Nfx為計(jì)算機(jī)每行采集到的象素?cái)?shù)。Tsai算法的最大特點(diǎn)就是比較準(zhǔn)確,相對(duì)來說產(chǎn)生畸變的概率會(huì)比較小。
本文改進(jìn)的做法是:通過變換矩陣將投射的像素點(diǎn)非線性化,然后再通過數(shù)學(xué)模型計(jì)算出具體的解。具體來說主要包括以下方面的改進(jìn):成像模型的改進(jìn)、獲取點(diǎn)坐標(biāo)方法的改進(jìn)和計(jì)算點(diǎn)初始值方法的改進(jìn)。
3.3 投影矩陣的恢復(fù)與分解
利用現(xiàn)實(shí)坐標(biāo)系與攝像頭坐標(biāo)系及其對(duì)應(yīng)的點(diǎn)的坐標(biāo),計(jì)算x1,x2,x2,x4,可以可以算出攝像頭內(nèi)對(duì)應(yīng)的點(diǎn)y1,y2,y3,y4。在以上步驟中,計(jì)算出攝像頭對(duì)應(yīng)的參數(shù)之后要考慮矩陣的分解。把矩陣分解成攝像頭能夠識(shí)別的狀態(tài)。
3.4 實(shí)驗(yàn)
本篇文章所采用的攝像頭是常用的DY-133攝像頭,具體參數(shù)為500萬像素,感光面積是4.86*3.42平方毫米。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),該攝像頭可以正確地標(biāo)記投影過來的圖像,其50個(gè)點(diǎn)的誤差只有0.334個(gè)像素。
參考文獻(xiàn)
[1]王亮,吳福朝.基于一維標(biāo)定物的多攝像機(jī)標(biāo)定[J].自動(dòng)化學(xué)報(bào),2007,33(3):225-231.
[2]熊平,圖像傳感器特點(diǎn)比較.半導(dǎo)體光電,2004.
[3]邱茂林,馬項(xiàng)德.計(jì)算機(jī)視覺中攝像機(jī)定標(biāo)綜述[J].自動(dòng)化學(xué)報(bào),2000.
[4]馬項(xiàng)德,張正友.計(jì)算機(jī)視覺計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.
[5]邱茂林,馬頌德,李毅.計(jì)算機(jī)視覺中攝像機(jī)定標(biāo)綜述.自動(dòng)化學(xué)報(bào),2008.
[6]馬頌德,張正友.計(jì)算機(jī)視覺—計(jì)算理論與算法基礎(chǔ).北京:科學(xué)出版社,1998.
[7]劉傳才.圖像理解與計(jì)算機(jī)視覺.廈門:廈門大學(xué)出版社,2002.
[8]洪治平.“車道保持”原理揭秘[J].antoknow,2011.
[9]劉瑞禎于仕琪Open Cv教程基礎(chǔ)篇[M]北京:北京航空航天大學(xué)出版社,2009.
[10]曾祥章,盧道華.一種基于OpenCV和Tsai的攝像機(jī)兩標(biāo)定新方法[J]機(jī)電.
數(shù)字技術(shù)與應(yīng)用2016年9期