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