閆寶龍,趙東花,劉曉杰,吳新冬,閆德利,王晨光,申 沖
(1. 中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051;2. 中北大學(xué)儀器與電子學(xué)院,太原 030051;3.中北大學(xué)信息與通信工程學(xué)院,太原 030051)
全球定位系統(tǒng)(Global Positioning System,GPS)易受信號(hào)干擾[1],慣性導(dǎo)航系統(tǒng)(Inertial Navigation System,INS)不僅成本高,而且單獨(dú)工作時(shí)誤差易隨時(shí)間積累。近年來,隨著成本低、自主性強(qiáng)的視覺導(dǎo)航技術(shù)發(fā)展[2-3],光流法可被用于進(jìn)行物體運(yùn)動(dòng)估計(jì)與目標(biāo)跟蹤,是視覺導(dǎo)航的一個(gè)重要研究方向。
自B.Horn等[4]在1981年提出光流算法基本原理后,引起國內(nèi)外學(xué)者的廣泛關(guān)注。光流即昆蟲在飛行時(shí)觀察物體,物體在其視網(wǎng)膜上形成一系列變化的圖像信息,這些連續(xù)變化的圖像信息不斷“流過”視網(wǎng)膜(即圖像平面)就形成了光流[5]。光流可以看作是觀察3D運(yùn)動(dòng)的2D投影[6-10]。研究人員受此啟發(fā),將光流引入到無人機(jī)導(dǎo)航中[11],由于無人機(jī)飛行時(shí)圖像背景會(huì)發(fā)生變化,因此可利用所攜帶相機(jī)計(jì)算出在圖像坐標(biāo)系下的運(yùn)動(dòng)速度,然后通過圖像中像素點(diǎn)與物體的投影關(guān)系,最終解算出無人機(jī)在地理坐標(biāo)系下的速度信息。Amizai等[12]提出了一種金字塔分層光流算法,該方法能夠在大位移形變時(shí)抑制光流估計(jì)誤差,并相應(yīng)研發(fā)了具有體積小、功耗低、成本低等優(yōu)點(diǎn)的可應(yīng)用于無人機(jī)的仿生光流導(dǎo)航系統(tǒng)。由于無人機(jī)的運(yùn)動(dòng)估計(jì)是由背景變化引起全局運(yùn)動(dòng)與場(chǎng)景中前景變化引起局部運(yùn)動(dòng)的組合,若采用光流法進(jìn)行運(yùn)動(dòng)估計(jì)時(shí)不剔除由前景運(yùn)動(dòng)物體帶來的局部運(yùn)動(dòng)中的光流干擾值和野值,將會(huì)導(dǎo)致光流測(cè)速精度降低。文獻(xiàn)[13]為了提高光流測(cè)速精度,提出了一種梯度閾值法對(duì)噪聲點(diǎn)進(jìn)行處理,但是閾值大小無法確定,并且需根據(jù)無人機(jī)飛行場(chǎng)景變化實(shí)時(shí)調(diào)整閾值大小,這在實(shí)際導(dǎo)航中會(huì)帶來不便。文獻(xiàn)[14]針對(duì)前景與背景進(jìn)行分割以消除前景影響,提出了一種模糊分類方法,但該方法對(duì)每張圖像進(jìn)行分割,計(jì)算量較大。
本文為了進(jìn)一步提高載體運(yùn)動(dòng)速度的解算精度,提出了一種基于模糊核均值聚類算法優(yōu)化的金字塔Lucas-Kanade光流測(cè)速方法(FKCM-金字塔LK)。該方法不僅收斂速度快,而且能處理大數(shù)據(jù)集,因此能夠在大范圍內(nèi)減小由于圖片信息丟失造成的計(jì)算不準(zhǔn)確,同時(shí)還能將光流干擾值以及光流野值剔除,最終提高光流測(cè)速精度。
光流法是利用三維空間運(yùn)動(dòng)物體的圖像序列中像素在時(shí)間域上的變化以及相鄰幀之間的相關(guān)性,找到上一幀與當(dāng)前幀之間存在的對(duì)應(yīng)關(guān)系,得到其在二維平面上的運(yùn)動(dòng)。如圖1所示,圖像中的每一個(gè)點(diǎn)都對(duì)應(yīng)一個(gè)空間點(diǎn),每一個(gè)空間點(diǎn)相對(duì)于攝像機(jī)的速度向量都可以投影為像平面上一個(gè)點(diǎn)上的二維速度向量,而每個(gè)像素的二維速度向量就構(gòu)成了運(yùn)動(dòng)場(chǎng)。該方法需要3個(gè)前提條件:
1)相鄰圖像間時(shí)間連續(xù),且物體做微小運(yùn)動(dòng);
2)保持空間一致性;
3)相鄰圖像之間的亮度保持不變。
圖1 運(yùn)動(dòng)場(chǎng)與光流場(chǎng)對(duì)應(yīng)關(guān)系圖Fig.1 Corresponding diagram of motion field and optical flow field
假設(shè)圖像中一點(diǎn)(x,y)在t時(shí)刻的亮度為I(x,y),同時(shí),假設(shè)該點(diǎn)在垂直方向上的分量表示為μ(x,y),在水平方向上的分量表示為v(x,y),則可以得到
(1)
在經(jīng)過一段時(shí)間間隔Δt后,該光流點(diǎn)的亮度為I(x+Δt,y+Δt,t+Δt),當(dāng)Δt趨近于0時(shí),可以假設(shè)該點(diǎn)亮度不變,得到
I(x,y,t)=I(x+Δt,y+Δt,t+Δt)
(2)
當(dāng)該點(diǎn)亮度發(fā)生變化時(shí),則移動(dòng)后該點(diǎn)亮度可以用Taylor公式進(jìn)行展開計(jì)算,得到
(3)
當(dāng)式(3)中的二階無窮小接近于0,且Δt趨近于0時(shí),則有
(4)
式中,ω=(μ,v),令
(5)
Ixμ+Iyv+Izt=0
(6)
由上述計(jì)算可知,傳統(tǒng)LK算法需要滿足3個(gè)約束條件,而無人機(jī)導(dǎo)航過程大幅運(yùn)動(dòng)時(shí)很難保持所需的3個(gè)約束條件,因此易出現(xiàn)計(jì)算的特征點(diǎn)誤差大的問題。金字塔LK算法可在此基礎(chǔ)上將圖像分層計(jì)算并縮小圖像尺寸,使用小尺寸上的像素點(diǎn)代表更大尺寸圖像上的多個(gè)像素點(diǎn)[15]。
金字塔LK算法首先利用低通濾波平滑曲線對(duì)圖像進(jìn)行采樣,生成金字塔圖像,每一層圖像的高度與寬度是下一層的一半;然后從最頂層計(jì)算圖像的光流,利用最頂層光流的計(jì)算結(jié)果估計(jì)下一層光流的初始值進(jìn)行金字塔跟蹤;最后將上層圖像得到的光流矢量疊加作為下一層的初始值進(jìn)行迭代,最終計(jì)算得到的光流值就是所有層光流矢量的疊加(見圖2)。這樣就可以利用相對(duì)較小的領(lǐng)域窗口處理更大尺寸圖像上的像素移動(dòng)[16]。其具體實(shí)現(xiàn)過程如下:
圖2 圖像金字塔Fig.2 The image pyramid
設(shè)相鄰的兩幀圖像分別為M1和M2,在一個(gè)大小為o的窗口鄰域中,假設(shè)ε是前后兩幀圖像的光流殘差,則
(7)
光流計(jì)算方向與圖像分解方向相反,首先在第n層進(jìn)行光流估計(jì),計(jì)算的結(jié)果反饋到n-1層,并作為n-1層的初始值,這樣逐層傳遞,直到第0層為止。則式(7)變成
ε=εn(dμ,dv)
(8)
其中,每層光流估計(jì)值通過式(9)傳遞給下一層,并作為下一層的初始值
gn-1=2(gn+dn)
(9)
通常,最頂層的初始值為0,即gn=(0,0)。因此,金字塔LK算法通過對(duì)圖像尺寸的縮小,使得小像素點(diǎn)可以涵蓋更多像素點(diǎn)信息,從而更容易實(shí)現(xiàn)傳統(tǒng)LK算法的約束條件,最終降低所計(jì)算特征點(diǎn)的誤差。
由于前景運(yùn)動(dòng)物體所形成的光流值的大小通常與背景光流相異,從數(shù)據(jù)處理角度應(yīng)將干擾項(xiàng)剔除。但由于缺少干擾項(xiàng)的速度先驗(yàn)信息,光流測(cè)速中常用于改善精度的隨機(jī)抽樣一致(Random Sample Consensus,RANSAC)算法[16]與基于前后向誤差的歸一化互相關(guān)匹配值(Normalization Cross Correlation,NCC)算法[17]在有效排除干擾項(xiàng)的能力上還有待提升。利用聚類算法將光流值按照光流數(shù)據(jù)分布的概率峰值進(jìn)行聚類,可以將背景光流與干擾項(xiàng)進(jìn)行區(qū)分,從而將干擾項(xiàng)剔除[18]。其中,Mean-Shift聚類算法需要選定聚類初始值,K-means聚類算法需要對(duì)初始聚類中心進(jìn)行選擇。而模糊核均值聚類只需要確定聚類數(shù)以及終止誤差即可進(jìn)行求解,具有較快的解算速度,因此在本文中將模糊核均值聚類算法與金字塔LK算法相結(jié)合。其中,模糊核均值聚類算法是將隸屬度的概念引入到聚類算法中,首先通過優(yōu)化目標(biāo)函數(shù),以獲得每個(gè)樣本中的數(shù)據(jù)對(duì)于所有聚類中心的隸屬度,判斷樣本數(shù)據(jù)的歸屬以便對(duì)數(shù)據(jù)進(jìn)行自動(dòng)分類[19]。然后,計(jì)算出光流值以及載體在相機(jī)坐標(biāo)系下的速度,最后經(jīng)過坐標(biāo)系轉(zhuǎn)換,就可以得到地理坐標(biāo)系下的速度。
本文提出的基于模糊核均值聚類金字塔LK光流算法的具體過程如下:
1)通過模糊核均值聚類算法將樣本數(shù)據(jù)非線性映射Φ映射到高維特征空間[20],在高維特征空間中得到映射集為Φ(xk)(k=1,2,…,N),由米氏(Mercer)定理可知,輸入空間中樣本空間的內(nèi)積在隱射空間通過K(xi,xj)=[Φ(xi),Φ(xj)]求得。如果樣本的聚類數(shù)為C,第i類的聚類中心為pi,在此i類中第k個(gè)樣本的隸屬度為uik∈[0,1],則模糊核聚類算法的目標(biāo)函數(shù)為
(10)
(11)
d2(xk,pi)=K(xk,xk)-2K(xk,pi)+
K(pi,pi)
(12)
在模糊聚類中引入核函數(shù),是因?yàn)橥ㄟ^核運(yùn)算可以得到新的距離度量,從而產(chǎn)生了同一空間不同距離的聚類[21]。
2)將金字塔LK光流算法利用模糊核均值聚類算法進(jìn)行分組,選取包含像素速度最多的一組,取其平均值作為最終的光流值。假設(shè)像素相鄰區(qū)域空間運(yùn)動(dòng)的矢量一致,計(jì)算相鄰圖像中對(duì)應(yīng)像素點(diǎn)流向信息,獲取特征點(diǎn)附近小窗口局部信息以及匹配光流矢量。使用超定方程組對(duì)式(6)進(jìn)行求解,得到中心點(diǎn)的運(yùn)動(dòng)參數(shù)[22],其方程可表示為
(13)
使用最小二乘法可以求出μ、v兩向量的大小
(14)
(15)
利用μ、v矢量大小即可求得實(shí)際運(yùn)動(dòng)速度。
本次仿真實(shí)驗(yàn)首先在Google Earth上采集圖像,再使用Matlab中imcrop函數(shù)固定裁剪框的大小,得到兩個(gè)大小相同的圖片,在使用該函數(shù)過程中,設(shè)置移動(dòng)的像素值作為基準(zhǔn)值,移動(dòng)距離通過Google Earth的“標(biāo)尺”功能在圖片上標(biāo)明。一組仿真實(shí)驗(yàn)為無人機(jī)速度為12m/s,在對(duì)地高度120m的位置進(jìn)行拍攝,光流圖像矢量圖如圖3所示。在Matlab中設(shè)置橫向位移像素值為15像素,使用金字塔LK算法的求解結(jié)果為移動(dòng)13.9548像素,誤差為6.96%。通過FKCM-金字塔LK算法的求解結(jié)果為移動(dòng)14.6310像素,誤差為2.46%。
(a) 金字塔LK解算運(yùn)動(dòng)方向
由仿真實(shí)驗(yàn)可以看出(見圖4),通過基于模糊核均值聚類算法優(yōu)化的金字塔LK算法與傳統(tǒng)金字塔LK算法相比,無論在高地環(huán)境還是城市環(huán)境中,金字塔LK解算運(yùn)動(dòng)矢量的方向與真實(shí)方向大致一致,但是存在干擾項(xiàng),經(jīng)過聚類算法優(yōu)化后,可將干擾項(xiàng)剔除。同時(shí),經(jīng)過優(yōu)化后的金字塔LK算法解算移動(dòng)的像素值更加靠近真實(shí)值,并且有效減小了干擾項(xiàng)與光流信息丟失導(dǎo)致的光流值誤差,使得載體速度解算精度更高。
(a) 金字塔LK解算運(yùn)動(dòng)方向
利用無人機(jī)進(jìn)行室外實(shí)驗(yàn),實(shí)驗(yàn)設(shè)備如圖5所示,實(shí)驗(yàn)設(shè)備參數(shù)如表1所示。實(shí)驗(yàn)過程中,無人機(jī)在對(duì)地30m高度飛行,同時(shí)控制無人機(jī)飛行速度為2.3m/s,無人機(jī)沿正東方向飛行,X方向前進(jìn)約50m,Y方向基本保持恒定。采集并截取無人機(jī)運(yùn)動(dòng)過程中的視頻圖像,使用金字塔LK算法、Horn-Schunck算法、本文提出的FKCM-金字塔LK算法分別進(jìn)行對(duì)比處理,實(shí)驗(yàn)結(jié)果如圖6及表2所示。
圖5 室外實(shí)驗(yàn)圖Fig.5 Outdoor experiment
表1 攝像頭參數(shù)表
圖6 光流算法速度對(duì)比曲線Fig.6 Comparison curve of optical flow velocity by different algorithms
表2 HS算法、金字塔LK算法與FKCM-金字塔LK算法對(duì)比
由上述分析可知,HS算法對(duì)實(shí)際運(yùn)動(dòng)過程中解算的速度后半?yún)^(qū)域出現(xiàn)解算錯(cuò)誤,金字塔LK算法對(duì)實(shí)際運(yùn)動(dòng)過程中的測(cè)速結(jié)果波動(dòng)性較大,而使用本文提出的FKCM-金字塔LK算法解算速度值更加平滑和穩(wěn)定,最終更加靠近真實(shí)值。利用該方法解算的速度標(biāo)準(zhǔn)差由0.8205m/s降低到0.1782m/s,精度提升79.28%;與此同時(shí),使用該方法解算的RMSE由0.8163m/s降低到0.1773m/s,精度提升78.28%。光流測(cè)速的精度得到了有效提高。
本文針對(duì)視覺導(dǎo)航中光流信息容易受到物體相對(duì)運(yùn)動(dòng)影響的問題,提出了一種基于模糊核均值聚類算法優(yōu)化的金字塔LK光流測(cè)速方法。該方法不僅可以有效地減少物體相對(duì)移動(dòng)對(duì)光流測(cè)速的影響,而且可以使得光流測(cè)速精度大幅提高。本文結(jié)合目前現(xiàn)有的研究成果,對(duì)未來優(yōu)化光流算法技術(shù)面臨的挑戰(zhàn)進(jìn)行展望。
1)實(shí)驗(yàn)過程中,無人機(jī)由于受到氣流的影響,飛行時(shí)會(huì)產(chǎn)生抖動(dòng),導(dǎo)致光流解算的速度偏離基準(zhǔn)值,可以使用增穩(wěn)系統(tǒng)或者去抖動(dòng)算法進(jìn)行改進(jìn),使得計(jì)算出來的速度更接近準(zhǔn)確值。
2)雖然光流算法在速度測(cè)量精度方面得到了一定提升,但其應(yīng)用依然受光流法假設(shè)的影響,因此可以對(duì)光流算法做進(jìn)一步改進(jìn),如采用強(qiáng)魯棒圖像特征點(diǎn)提取方法等。