胡山山陳熙源盧飛平
(1.東南大學(xué)儀器科學(xué)與工程學(xué)院,江蘇 南京210096;2.微慣性儀表與先進(jìn)導(dǎo)航技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 南京210096;3.上海電控研究所,上海200092)
光流表示的是三維空間運(yùn)動(dòng)物體在其對(duì)應(yīng)的成像平面上的瞬時(shí)速度,是一種瞬時(shí)速度映射關(guān)系。而光流法正是利用光流的這一特性,通過圖像序列相鄰幀中同一像素在時(shí)間域上的位置變化,從而計(jì)算圖像序列中包含的空間信息和運(yùn)動(dòng)信息[1]。 它被廣泛用于目標(biāo)跟蹤、視覺導(dǎo)航和圖像分割等領(lǐng)域。目前常用的光流算法如Horn-Schunk 算法,加入全局平滑假設(shè),估計(jì)全局光流,需要計(jì)算圖像中每一個(gè)像素點(diǎn)的光流,實(shí)時(shí)性較差。 基于神經(jīng)網(wǎng)絡(luò)智能算法的光流法,則需要大量的訓(xùn)練樣本,在某些環(huán)境下無法滿足需求。 基于特征點(diǎn)的Lucas-Kanade 算法,對(duì)特征點(diǎn)要求高,需要特征點(diǎn)具有較好的跟蹤性,否則后續(xù)可能會(huì)出現(xiàn)跟蹤失敗的問題[2-4]。
南京理工大學(xué)李成美等人提出將Shi-Tomasi 角點(diǎn)檢測(cè)和金字塔LK 光流結(jié)合,只計(jì)算強(qiáng)角點(diǎn)處的光流場(chǎng),有效的檢測(cè)出目標(biāo),在運(yùn)動(dòng)背景下對(duì)目標(biāo)能夠穩(wěn)定跟蹤[5]。 華東師范大學(xué)的Bai Jing 和上海交通大學(xué)的Huang Lili 為解決視覺跟蹤中丟失跟蹤目標(biāo)和跟隨錯(cuò)誤目標(biāo)問題,提出了一種改進(jìn)的高斯LK光流算法,提高了跟蹤精度和算法魯棒性,但是在較暗場(chǎng)景下表示不佳[6]。 江蘇科技大學(xué)的張忠義在LK 光流算法中引入壓縮感知理論,有效地提高了LK 光流算法對(duì)環(huán)境的魯棒性,但是當(dāng)圖像序列中物體存在尺度變化時(shí)效果較差[7]。 上海海事大學(xué)的陳偉杰等將SURF 特征匹配算法與LK 光流算法相結(jié)合,相較于傳統(tǒng)特征匹配算法有效地提升了運(yùn)算效率[8]。 綜合以上可知,特征點(diǎn)跟蹤性能如何將直接影響光流法的跟蹤成功率,因此如何選取適當(dāng)?shù)奶卣鼽c(diǎn)進(jìn)行跟蹤是光流法中難題之一。
針對(duì)以上問題,本文提出一種基于改進(jìn)ORB 特征點(diǎn)的LK 光流算法,結(jié)合SURF 算法在特征提取步驟中構(gòu)建的Hessian 矩陣對(duì)傳統(tǒng)的ORB 特征點(diǎn)進(jìn)行再提取。 若某個(gè)ORB 特征點(diǎn)的Hessian 矩陣判別式的值大于領(lǐng)域內(nèi)其他像素點(diǎn)的對(duì)應(yīng)的值,即取得領(lǐng)域內(nèi)的局部最大值,領(lǐng)域取以該特征點(diǎn)為中心的3×3 像素領(lǐng)域,則再將領(lǐng)域內(nèi)對(duì)應(yīng)的差值進(jìn)行累加,與預(yù)先設(shè)定的閾值進(jìn)行比較,若大于閾值則保留,反之舍棄。 通過這樣再提取的ORB 特征點(diǎn),不僅有效提升了特征點(diǎn)匹配效果,同時(shí)也具有更好的跟蹤特性,使得LK 光流法的跟蹤成功率得到有效提升。
ORB 特征點(diǎn)由Ethan RubLee 等人于2011 年提出,ORB 是一種快速特征點(diǎn)提取和描述算法,算法主體由特征點(diǎn)提取和特征點(diǎn)描述兩個(gè)部分組成[9]。
ORB 算法建立在FAST 算法的基礎(chǔ)之上,F(xiàn)AST算法的做法是,取一個(gè)像素點(diǎn)P,考慮該像素點(diǎn)周圍的16 個(gè)像素,計(jì)算該像素點(diǎn)與周圍16 個(gè)像素點(diǎn)的灰度值差值,并取絕對(duì)值,與閾值進(jìn)行比較,若大于該閾值,則認(rèn)為這兩個(gè)像素點(diǎn)不同,若該像素點(diǎn)周圍的存在連續(xù)N個(gè)像素點(diǎn)都滿足該條件,就定義其為FAST 特征點(diǎn),N一般取12[10]。
式中:GP表示P點(diǎn)的灰度值,Gi表示P周圍第i處像素點(diǎn)的灰度值,Gth表示閾值。
同時(shí)FAST 算法還提供了優(yōu)化方案,根據(jù)判斷條件,率先測(cè)試P周圍第1、5、9、13 處像素點(diǎn)的灰度值是否滿足條件,若4 處位置有3 處滿足條件,則進(jìn)行后續(xù)判斷,反之舍棄。
ORB 特征點(diǎn)則是在FAST 基礎(chǔ)上引入特征方向的概念,以此來實(shí)現(xiàn)特征點(diǎn)的旋轉(zhuǎn)不變性。 確定特征方向的主要流程如下:以特征點(diǎn)P為圓心,r為半徑確定一個(gè)圓;通過矩來計(jì)算圓的質(zhì)心;定義特征方向?yàn)樘卣鼽c(diǎn)P到以P為圓的質(zhì)心的連線方向[11-13]。其中矩的定義如下:
式中:p、q表示階數(shù),mpq表示圖像關(guān)于點(diǎn)(x,y)的p+q階矩,f(x,y)表示圖像關(guān)于點(diǎn)(x,y)的灰度值。
由式(2)進(jìn)一步可推得質(zhì)心表達(dá)式為:
若特征點(diǎn)P剛好位于坐標(biāo)原點(diǎn),則其對(duì)應(yīng)的特征方向θP可表示為:
特征點(diǎn)描述主要是通過特征描述符實(shí)現(xiàn)的。ORB 特征點(diǎn)的特征描述符計(jì)算步驟如下:首先在特征點(diǎn)P的S×S的區(qū)域內(nèi),選取N對(duì)像素點(diǎn)pi、qi(i=1,2,…,N);然后對(duì)這N對(duì)像素點(diǎn)對(duì)進(jìn)行旋轉(zhuǎn)操作,旋轉(zhuǎn)角度大小對(duì)應(yīng)特征方向θP,同時(shí)定義新的點(diǎn)對(duì)為p′i、q′i(i=1,2,…,N);再按新點(diǎn)對(duì)的灰度值比較的結(jié)果進(jìn)行區(qū)分,若滿足I(p′i)≤I(q′i),則表示為數(shù)字0,反之表示為1;最后得到一串長(zhǎng)度為N的字符串,這就是ORB 特征點(diǎn)的特征描述符[14]。
Hessian 矩陣廣泛應(yīng)用于提取圖像特征、邊緣檢測(cè)和求取函數(shù)極值等領(lǐng)域。 SURF 算法相比于SIFT算法擁有更高效的特征提取和特征描述方法,而SURF 算法就是借助構(gòu)建Hessian 矩陣來實(shí)現(xiàn)特征點(diǎn)提取的[15-17]。
Hessian 矩陣最初由德國(guó)科學(xué)家Ludwin Otto Hessian 于19 世紀(jì)提出,是一個(gè)自變量為向量的實(shí)值函數(shù)的二階偏導(dǎo)數(shù)組成的矩陣,主要用于描述函數(shù)的局部曲率[18]。
其中二維圖像f(x,y)的Hessian 矩陣表達(dá)式如式(5)所示:
式中:x,y分別表示橫縱坐標(biāo),f(x,y)表示圖像關(guān)于點(diǎn)(x,y)的灰度值。
再將式(5)進(jìn)行高斯濾波,可推導(dǎo)出式(6):
進(jìn)一步的,可以通過式(6)求得對(duì)應(yīng)的Hessian矩陣判別式det(H),如式(7)所示:
在確定FAST 特征點(diǎn)之后,通過構(gòu)建Hessian 矩陣進(jìn)行再提取,以此來選取跟蹤性更好的特征點(diǎn),具體流程如下:
對(duì)于特征點(diǎn)P,構(gòu)建其對(duì)應(yīng)的det(HP),若特征點(diǎn)P的det(HP)在以其為中心的3×3 的像素領(lǐng)域內(nèi)取得局部最大值,則保留,反之舍棄,具體的表達(dá)式如式(8)所示:
式中:det(HP)和det(Hi)都表示Hessian 矩陣判別式。
若特征點(diǎn)P滿足式(8),則進(jìn)行下一步判斷,將特征點(diǎn)P的det(HP)分別與det(Hi)做差,然后累加求和,若最終結(jié)果大于設(shè)定的閾值,則保留,反之舍棄。 具體的表達(dá)式如式(9)所示:
式中:detth表示設(shè)定的閾值。
若滿足上述所有條件,那么就再提取該特征點(diǎn),后續(xù)的步驟則與傳統(tǒng)ORB 特征點(diǎn)相同。 算法流程圖如圖1 所示。
圖1 算法流程圖
光流表示的是三維空間運(yùn)動(dòng)物體在其對(duì)應(yīng)的成像平面上的瞬時(shí)速度,是一種瞬時(shí)速度映射關(guān)系。而光流法則通過分析時(shí)域中不同圖像中同一像素點(diǎn)的位置變化,從而獲得物體的空間信息和運(yùn)動(dòng)信息。傳統(tǒng)光流法基于兩個(gè)基本假設(shè)條件。 ①亮度恒定不變:即同一像素點(diǎn)在不同幀圖像上亮度不變;②運(yùn)動(dòng)是“小運(yùn)動(dòng)”:時(shí)間變化不會(huì)引起目標(biāo)位置的劇烈運(yùn)動(dòng)。 在上述假設(shè)的基礎(chǔ)之上,可進(jìn)一步構(gòu)建出光流的約束方程,即:
式中:Ix,Iy,It均可直接從圖像中計(jì)算獲得,u和v即為對(duì)應(yīng)像素點(diǎn)的光流。
LK 光流法在此基礎(chǔ)上提出第三個(gè)假設(shè):假設(shè)像素點(diǎn)的領(lǐng)域內(nèi)的光流是一個(gè)常數(shù)。 然后就可以根據(jù)最小二乘法對(duì)領(lǐng)域內(nèi)的光流求解。 根據(jù)上述假設(shè)可知,某一圖片上特征點(diǎn)P所在領(lǐng)域內(nèi)的像素點(diǎn)光流相同,不妨假設(shè)有k個(gè)像素點(diǎn),k個(gè)像素點(diǎn)對(duì)應(yīng)k個(gè)基本約束方程,聯(lián)立這k個(gè)方程,可得:
由方程求解出的唯一解即對(duì)應(yīng)該領(lǐng)域內(nèi)像素點(diǎn)的光流。 以上就是LK 光流法的核心思想。
傳統(tǒng)的基于特征點(diǎn)的LK 光流法選擇特征點(diǎn)的有Shi-Tomasi 特征點(diǎn),ORB 特征點(diǎn)等。 本文采用上文所提出的改進(jìn)ORB 特征點(diǎn),并在此基礎(chǔ)之上,引入LK 光流法,實(shí)現(xiàn)對(duì)特征點(diǎn)的跟蹤。
本實(shí)驗(yàn)使用電腦處理器為Intel(R)Core(TM)i5-8300H,主頻2.30 GHz,內(nèi)存16 GB,64 位Windows 10 操作系統(tǒng),實(shí)驗(yàn)平臺(tái)為MATLAB 2019a 和Visual Studio 2017,所采用的數(shù)據(jù)集為標(biāo)準(zhǔn)計(jì)算機(jī)視覺數(shù)據(jù)集,以及實(shí)采數(shù)據(jù)集。
采用ETH Zurich(蘇黎世聯(lián)邦理工學(xué)院)行人數(shù)據(jù)樣本數(shù)據(jù)集和實(shí)采數(shù)據(jù)集分別測(cè)試傳統(tǒng)的ORB 特征匹配算法和本文提出的算法,測(cè)試結(jié)果如圖2 和圖3 所示。 其中圖2(a)和圖3(a)顯示傳統(tǒng)ORB 特征匹配的結(jié)果,圖2(b)和圖3(b)顯示本文提出的算法的特征匹配結(jié)果。 可以看出,傳統(tǒng)的ORB 特征匹配方法選取的特征點(diǎn)數(shù)量特別多,同時(shí)還存在誤匹配的情況,而本文提出的算法選取的特征點(diǎn)則相對(duì)少很多,而且?guī)缀鯖]有誤匹配的情況。
圖2 ETH 行人數(shù)據(jù)樣本ORB 特征匹配結(jié)果
圖3 實(shí)采數(shù)據(jù)集ORB 特征匹配結(jié)果
為了更直觀的體現(xiàn)改進(jìn)ORB 特征點(diǎn)的優(yōu)勢(shì),選取8 組數(shù)據(jù),并對(duì)其進(jìn)行匹配準(zhǔn)確率測(cè)試。 匹配準(zhǔn)確率,即特征點(diǎn)匹配的準(zhǔn)確率,數(shù)值等于匹配成功的特征點(diǎn)數(shù)與總特征點(diǎn)數(shù)的比值。 本文按照上述方法分別對(duì)數(shù)據(jù)集中的8 組數(shù)據(jù)進(jìn)行測(cè)試,分別計(jì)算傳統(tǒng)ORB 特征點(diǎn)和改進(jìn)ORB 特征點(diǎn)的匹配準(zhǔn)確率,結(jié)果如表1 所示。
由表1 可知,改進(jìn)ORB 特征點(diǎn)相比于傳統(tǒng)ORB特征點(diǎn)在進(jìn)行特征匹配時(shí)匹配準(zhǔn)確率有明顯的提高,平均提升效果為20.96%。 由此可知,改進(jìn)ORB特征點(diǎn)有更好的匹配特性。
表1 ORB 特征匹配準(zhǔn)確率對(duì)比表
圖4 ETH 數(shù)據(jù)集基于傳統(tǒng)ORB 特征點(diǎn)的LK 光流跟蹤結(jié)果
本文采用ETH Zurich(蘇黎世聯(lián)邦理工學(xué)院)行人數(shù)據(jù)樣本數(shù)據(jù)集和KITTI 計(jì)算機(jī)視覺數(shù)據(jù)集(由德國(guó)卡爾斯魯厄理工學(xué)院和豐田美國(guó)技術(shù)研究院聯(lián)合創(chuàng)辦)進(jìn)行測(cè)試。 跟蹤的結(jié)果如圖4 和圖5所示。 其中圖4 顯示ETH 數(shù)據(jù)集中基于傳統(tǒng)ORB特征點(diǎn)的LK 光流跟蹤結(jié)果,圖5 顯示ETH 數(shù)據(jù)集中基于改進(jìn)ORB 特征點(diǎn)的LK 光流跟蹤結(jié)果。 傳統(tǒng)ORB 特征點(diǎn)顯示比較集中,而且在后續(xù)LK 光流跟蹤過程中出現(xiàn)了不少誤跟蹤的情況。 相比之下,改進(jìn)ORB 特征點(diǎn)顯示的則比較分散,且在后續(xù)LK光流跟蹤過程中,幾乎沒有出現(xiàn)誤跟蹤的情況。 因此,改進(jìn)ORB 特征點(diǎn)具有更好的跟蹤特性。
圖5 ETH 數(shù)據(jù)集基于改進(jìn)ORB 特征點(diǎn)的LK 光流跟蹤結(jié)果
為了進(jìn)一步直觀的展示本文算法的效果,引入跟蹤成功率參數(shù)。 對(duì)于每一個(gè)特征點(diǎn),設(shè)置一個(gè)閾值,若前一幀位置與當(dāng)前幀位置距離大于閾值,則認(rèn)為跟蹤失敗,反之則認(rèn)為跟蹤成功,跟蹤成功率是跟蹤成功特征點(diǎn)數(shù)與總特征點(diǎn)數(shù)的比值。 本文設(shè)置閾值為20 像素。 對(duì)于ETH 數(shù)據(jù)集和KITTI 數(shù)據(jù)集中的樣本,統(tǒng)計(jì)基于傳統(tǒng)ORB 特征點(diǎn)的LK 光流法和基于改進(jìn)ORB 特征點(diǎn)的LK 光流法的前10 幀跟蹤成功的特征點(diǎn)數(shù)和總特征點(diǎn)數(shù),并計(jì)算跟蹤成功率,結(jié)果如表2 所示。
表2 基于ORB 特征點(diǎn)的LK 光流跟蹤結(jié)果對(duì)比表
由表2 可知,在同樣使用LK 光流法的情況下,基于改進(jìn)ORB 特征點(diǎn)的LK 光流法比基于傳統(tǒng)ORB 特征點(diǎn)的LK 光流法跟蹤成功率有顯著提升,平均提升了19.73%,說明了改進(jìn)ORB 特征點(diǎn)相比于傳統(tǒng)的ORB 特征點(diǎn)具有更好的跟蹤特性,在進(jìn)行光流跟蹤的時(shí)候不容易出現(xiàn)誤匹配的情況。
本文提出了一種基于改進(jìn)ORB 特征點(diǎn)的LK光流算法,結(jié)合SURF 算法在特征提取步驟中構(gòu)建的Hessian 矩陣對(duì)傳統(tǒng)的ORB 特征點(diǎn)進(jìn)行再提取。采用傳統(tǒng)ORB 特征點(diǎn)和改進(jìn)ORB 特征點(diǎn)進(jìn)行特征匹配實(shí)驗(yàn)和LK 光流跟蹤實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,相較于傳統(tǒng)ORB 特征點(diǎn),改進(jìn)ORB 特征點(diǎn)在特征點(diǎn)匹配和LK 光流跟蹤方面都有顯著提升,其中特征匹配準(zhǔn)確率平均提升20.96%,而LK 光流跟蹤成功率平均提升19.73%。 因此,本文提出的改進(jìn)ORB 特征點(diǎn)不僅擁有更好的特征匹配效果,同時(shí)具有更好的跟蹤特性,具有更好的實(shí)用價(jià)值。