范山城 倪受東 張宏峰
(南京工業(yè)大學機械與動力工程學院 江蘇 南京 210000)
在機器視覺工業(yè)檢測、自動導航、三維重建等領域中,所有工作的基礎是攝像機標定 。攝像機標定[1]就是通過實驗和計算確定相機關于世界坐標系的內(nèi)在參數(shù)和外在參數(shù)的一個過程。為此,國內(nèi)外研究者們提出了諸多攝像機標定方法, 應用較為廣泛的有Tsai[2]提出的Tsai兩步法、Faugeras等[3]和Maybank等[4]提出自標定方法[3-4]、Zhang[5]提出的基于二維平面靶標的攝像機標定方法。其中張正友標定法因標定過程簡單、易實施、成本低且標定精度較高而得到廣泛應用。然而,張正友標定法在進行非線性求精時,易因初始值選取不當,導致優(yōu)化過程收斂緩慢或陷入局部最小值,并且其全局搜索能力會隨著標定參數(shù)增多而下降。因此 ,國內(nèi)外相關研究者們將智能優(yōu)化算法引入攝像機標定中,既擺脫初始值影響,又增強全局搜索能力。Xing等[6]采用遺傳算法標定攝像機參數(shù),在收斂性、精度和魯棒性方面取得很好的效果。針對因標定圖像數(shù)量少而導致攝像機標定精度不高的問題,郭彤穎等[7]提出了一種基于粒子群算法的攝像機內(nèi)參數(shù)優(yōu)化方法 ,該方法可以較大地提高攝像機的標定精度。為了實現(xiàn)攝像機的準確標定,雷陽等[8]將模擬退火算法和粒子群算法混合引入攝像機標定,起到了良好的效果。為了實現(xiàn)快速、準確地進行雙目攝像機標定,廉小磊等[9]將粒子群算法引入進來,提高了標定精度,減少了離線標定中許多不必要的標定工作。為了解決張正友方法存在的不足,王琳霞等[10]提出了一種基于混沌粒子群(CHPSO)的雙目攝像機標定方法,該方法可以獲得較為精確的雙目攝像機標定參數(shù)。然而這些基于智能優(yōu)化算法的攝像機標定方法大都存在原理復雜、計算量大、效率低、對初始值比較敏感、魯棒性差的問題。為了解決上述問題,提高攝像機標定的精度和效率,本文提出一種基于混沌天牛須搜索算法的攝像機標定方法。
在經(jīng)典物理體系中攝像機的成像通常被當作小孔成像來研究,如圖1所示,其中光心OC可以被當作是小孔,真實世界中物體上某一點P經(jīng)過光心OC在像平面上投影成倒像點P′的過程可以分解為世界坐標系OW-XWYWZW、攝像機坐標系OC-XCYCZC、圖像像素坐標系O1-uv、圖像物理坐標系O1-xy之間三個簡單的變換。變換過程如下,設點p在上述四個坐標系中的坐標分別為: (XW,YW,ZW)、(XC,YC,ZC)、(x,y)、(u′,v′)。
圖1 攝像機成像模型
第一個變換是將世界坐標系下點(XW,YW,ZW)轉(zhuǎn)換成攝像機坐標系下點(XC,YC,ZC)的剛體變換,如式(1)所示。
(1)
式中:R是3×3的正交旋轉(zhuǎn)變換矩陣,表達了坐標軸的三種基本旋轉(zhuǎn)—沿X、Y和Z軸的旋轉(zhuǎn),其矩陣元素可以用三個歐拉角α、β、θ來表示;T是三維平移向量,其向量元素可以用tx、ty、tz表示。參數(shù)R和T構成了攝像機標定外參數(shù)。
第二個變換是將攝像機坐標系下點(XC,YC,ZC) 轉(zhuǎn)換成圖像物理坐標系下點(x,y)的透視變換,如式(2)所示。
(2)
式中:f是攝像機焦距。
第三個變換是將圖像物理坐標系下點(x,y)轉(zhuǎn)換成圖像像素坐標系下點(u′,v′)的仿射變換,如式(3)所示。
(3)
綜合式(1)-式(3),可以得到圖像像素坐標系下點P′與世界坐標系下點P之間的轉(zhuǎn)換關系為:
(4)
從世界坐標系中一點P到點P對應的像素點P′(u′,v′)的轉(zhuǎn)換采用的是攝像機線性成像模型(理想的小孔成像模型),但是由于攝像機本身的設計和制造誤差、安裝誤差等,會造成攝像機存在多種非線性畸變,使得上述攝像機成像過程并不能準確地描述最終的成像關系。如圖1所示,在考慮多種非線性畸變的情況下,點P對應的像平面上的點實際上是點P(u,v)。本文將主要考慮非線性畸變中的二階徑向畸變和切向畸變,如式(5)所示。
(5)
式中:(x′,y′)是引入畸變后的實際圖像坐標;r2=x2+y2;k1、k2是徑向畸變系數(shù);p1、p2是切向畸變系數(shù)。結合式(1)-式(3)、式(5),可以得到點P經(jīng)攝像機非線性成像模型得到的實際圖像像素坐標P(u,v)。
通過分析上述攝像機非線性成像過程,可以確定攝像機待標定參數(shù)包括攝像機內(nèi)參、外參、畸變系數(shù)。
天牛須搜索算法是(Beetle Antennae Search,BAS)是由Jiang等[11-12]提出的一種高效的生物啟發(fā)式算法,其源于對天牛覓食行為和尋找配偶行為的研究。天牛擁有一對由多種類型嗅覺細胞組成的巨大觸角,當天牛覓食或?qū)ふ遗渑紩r,它會抖動身體一側的觸角來接收氣味。如果左邊觸角探測到的氣味濃度高于右邊觸角,天牛就會飛向左邊,反之則飛向右邊。依據(jù)這一原理,天牛可以完成覓食和尋找配偶?,F(xiàn)實中天牛的運動空間是三維的,而天牛須搜索算法需要滿足任意的維度空間,因而在對天牛須搜索算法進行建模之前,必須先對天牛進行以下假設:(1) 天牛左右兩須位置分布于質(zhì)心兩側;(2) 天牛步長與兩須之間的距離的比是個固定的常數(shù);(3) 天牛飛到下一步后,頭的朝向是隨機的。
BAS建模過程如下:
(1) 在維度空間中,構造天牛須朝向隨機方向向量并進行歸一化處理:
(6)
式中:rand()是隨機函數(shù)。
(2) 創(chuàng)建天牛左右兩須的搜索行為,模擬天牛須的活動:
(7)
(3) 天牛須判斷氣味的強度進行下一步位置的更新:
(8)
式中:δt表示當?shù)螖?shù)為t時天牛運動的步長;eta是(0,1]之間的常數(shù);f()是適應度函數(shù);xLt表示當?shù)螖?shù)為t時天牛左須的位置;xRt表示當?shù)螖?shù)為t時天牛右須的位置。
混沌是一種在自然界普遍存在的非線性現(xiàn)象,擁有遍歷性、規(guī)律性、隨機性、敏感性等獨特性質(zhì)。其中,混沌的遍歷性性質(zhì)是混沌優(yōu)化算法的理論基礎,其基本思想是通過將優(yōu)化變量線性映射到混沌空間產(chǎn)生混沌序列進行遍歷搜索,然后逆映射回優(yōu)化變量的取值空間,使算法免于陷入局部最小值[13]。目前,用于產(chǎn)生混沌序列的混沌映射方程主要有Logistic映射和Tent映射,其中Tent映射產(chǎn)生的混沌序列易于實現(xiàn)、全局遍歷均勻性強、對初始值不敏感且尋優(yōu)效率更高[14]。因此本文選用產(chǎn)生混沌序列的是Tent映射。Tent映射在數(shù)學中是指一種分段的線性映射,因其函數(shù)圖像類似帳篷而得名。其數(shù)學表達式如式(9)所示。
(9)
式中:Xk表示第k維度X的混沌序列;通常取b=0.5。
式(9)經(jīng)貝努利移位變換后可以表示成如式(10)所示的形式。
xk+1=(2xk)mod1
(10)
Tent映射在可行解域產(chǎn)生混沌序列的步驟如下:
(1) 在區(qū)間(0,1)任取一個初值X0(避免X0在小周期內(nèi)(0.2,0.4,0.6,0.8)),z(1)=X0,i=j=1。
(2) 利用式(10)進行迭代,生成X(i+1),i=i+1。
(3) 如果X(i)={0,0.25,0.5,0.75},或X(i)=X(i-k),k={0,1,2,3,4},則按X(i)=z(j+1)=z(j)+ε改變迭代初值,其中:ε為隨機數(shù);j=j+1。否則返回步驟2。
(4) 如果滿足終止條件,則運行停止,保留x序列,否則返回步驟2。
天牛須搜索算法僅僅依靠天牛單個個體就可以實現(xiàn)對低維度函數(shù)的高速度、高質(zhì)量尋優(yōu),然而對于攝像機標定這樣涉及到4維度甚至28維度的搜索任務來說,其搜索效率和全局搜索能力就會下降,導致標定精度不高,而混沌優(yōu)化算法具有對初始值不敏感、搜索速度快、計算精度高、全局搜索能力強的特點[15]。所以,本文將混沌搜索算法與天牛須搜索算法結合起來,用于實現(xiàn)高效率、高精度的攝像機標定。
圖2 混沌天牛須搜索算法流程
結合攝像機非線性成像模型與混沌天牛須搜索算法,求解攝像機參數(shù)的具體步驟如下:
(1) 根據(jù)攝像機非線性成像模型確定攝像機的待標定參數(shù):攝像機內(nèi)參、畸變系數(shù)、攝像機外參。
(2) 基于張正友標定方法,使用MATLAB標定工具箱對待標定攝像機進行預標定,得出攝像機的內(nèi)部參數(shù)(fx,fy,u0,v0)、畸變參數(shù)(k1,k2,p1,p2)、外部參數(shù)(R,T)。 預標定結果作為混沌天牛須算法的初始值。
(3) 初始化算法參數(shù)。設定天牛運動初始步長δ,天牛步長與天牛兩須之間距離的比值常數(shù)c,最大迭代次數(shù)Tmax,混沌映射的迭代次數(shù)Tch,步長迭代因子eta。
(4) 構造平均重投影誤差適應度函數(shù)f(x):
(11)
式中:N是棋盤格角點的數(shù)量;(U,V)是使用Harris亞像素角點提取方法得到的棋盤格角點實際像素坐標;(U′,V′)是使用混沌天牛須搜索算法的攝像機標定方法后得到的棋盤格角點像素坐標。
(5) 使用混沌天牛須搜索算法對標定參數(shù)進行優(yōu)化求解,算法運行結束時xbest所對應的結果就是要求的攝像機標定參數(shù)。
為了驗證本文方法的可行性和有效性,搭建了一個簡便的攝像機標定實驗平臺進行實驗驗證,如圖3所示。該實驗平臺包括一臺CGU2-500C CMOS高清工業(yè)相機、焦距為6~12 mm的高清工業(yè)鏡頭、背光板光源、19×19光學玻璃材質(zhì)的棋盤格標定板(棋盤方格尺寸為4 mm×4 mm)。分別從不同角度拍攝20幅棋盤格標定板圖像,利用MATLAB標定工具箱進行預標定,預標定結果如表1所示,其中α、β、θ、tx、ty、tz是第一幅標定圖像對應的攝像機外參。將此結果作為混沌天牛須搜索算法的初始值。
圖3 攝像機標定實驗平臺
采用本文攝像機標定方法,使用MATLAB進行編程。通過多次實驗發(fā)現(xiàn),當算法初值參數(shù)值分別被設置為k=14,δ=0.008,eta=0.95,c=0.4,Tmax=300,Tch=14時,得到最小的平均重投影誤差值。最終的標定結果表2所示。
表2 基于混沌天牛須搜索算法得到的攝像機標定參數(shù)
圖4 平均重投影誤差曲線
表3 三種攝像機標定方法性能對比
圖5 反投影誤差對比
為了驗證本文算法的魯棒性,在拍攝的20幅棋盤格標定板圖像上分別加入均值為0,方差分別為0.1、0.2、0.3、0.4、0.5的高斯噪聲,分別使用本文方法、張正友方法、基于BAS方法、基于文獻[10]方法依次進行攝像機標定實驗,對于每一個規(guī)定的方差值,標定結果均為50次獨立實驗的平均結果。以不同值的高斯噪聲為x軸、相對重投影誤差絕對變化率為y軸建立如圖6所示的坐標系??梢暂^直觀地發(fā)現(xiàn),隨著噪聲的增加,四種方法的標定精度都有所下降,但本文方法的下降程度小于另外兩者,即在一定的噪聲變化范圍內(nèi),基于混沌天牛須搜索算法的攝像機標定方法具有較好的魯棒性。
圖6 不同強度噪聲下標定結果的平均值
(a) 攝像機內(nèi)參數(shù)、畸變參數(shù)的標準差
(b) 攝像機外參數(shù)的標準差圖7 同一噪聲強度下攝像機標定參數(shù)的穩(wěn)定性
可以看出,隨著噪聲強度的增加,攝像機各參數(shù)的標準差雖有所增加但都小于0.12,即標定結果數(shù)值的離散程度不大,故本文算法具有較好的穩(wěn)定性。
針對傳統(tǒng)智能標定方法在進行攝像機標定時存在的對初始值敏感、精度不高、收斂速度慢且易陷入局部最優(yōu)值等問題,本文提出一種基于混沌天牛須搜索算法的攝像機標定方法,其特點是在不改變天牛須搜索算法的基礎上,通過增加一個基于Tent映射的混沌優(yōu)化算法,使得該算法既擁有天牛須搜索算法原理簡單、搜索速度快的優(yōu)點,又具有混沌優(yōu)化算法的全局搜索能力強、不容易陷入局部最優(yōu)值的優(yōu)點。最終的攝像機標定實驗表明,基于混沌天牛須搜索算法可以較大地提高攝像機標定的精度和效率,具有更好的魯棒性。下一步工作將使用本文方法進行雙目立體攝像機的標定,為后續(xù)的工件三維測量奠定良好基礎。