胡山山陳熙源盧飛平
(1.東南大學儀器科學與工程學院,江蘇 南京210096;2.微慣性儀表與先進導航技術教育部重點實驗室,江蘇 南京210096;3.上海電控研究所,上海200092)
光流表示的是三維空間運動物體在其對應的成像平面上的瞬時速度,是一種瞬時速度映射關系。而光流法正是利用光流的這一特性,通過圖像序列相鄰幀中同一像素在時間域上的位置變化,從而計算圖像序列中包含的空間信息和運動信息[1]。 它被廣泛用于目標跟蹤、視覺導航和圖像分割等領域。目前常用的光流算法如Horn-Schunk 算法,加入全局平滑假設,估計全局光流,需要計算圖像中每一個像素點的光流,實時性較差。 基于神經網絡智能算法的光流法,則需要大量的訓練樣本,在某些環境下無法滿足需求。 基于特征點的Lucas-Kanade 算法,對特征點要求高,需要特征點具有較好的跟蹤性,否則后續可能會出現跟蹤失敗的問題[2-4]。
南京理工大學李成美等人提出將Shi-Tomasi 角點檢測和金字塔LK 光流結合,只計算強角點處的光流場,有效的檢測出目標,在運動背景下對目標能夠穩定跟蹤[5]。 華東師范大學的Bai Jing 和上海交通大學的Huang Lili 為解決視覺跟蹤中丟失跟蹤目標和跟隨錯誤目標問題,提出了一種改進的高斯LK光流算法,提高了跟蹤精度和算法魯棒性,但是在較暗場景下表示不佳[6]。 江蘇科技大學的張忠義在LK 光流算法中引入壓縮感知理論,有效地提高了LK 光流算法對環境的魯棒性,但是當圖像序列中物體存在尺度變化時效果較差[7]。 上海海事大學的陳偉杰等將SURF 特征匹配算法與LK 光流算法相結合,相較于傳統特征匹配算法有效地提升了運算效率[8]。 綜合以上可知,特征點跟蹤性能如何將直接影響光流法的跟蹤成功率,因此如何選取適當的特征點進行跟蹤是光流法中難題之一。
針對以上問題,本文提出一種基于改進ORB 特征點的LK 光流算法,結合SURF 算法在特征提取步驟中構建的Hessian 矩陣對傳統的ORB 特征點進行再提取。 若某個ORB 特征點的Hessian 矩陣判別式的值大于領域內其他像素點的對應的值,即取得領域內的局部最大值,領域取以該特征點為中心的3×3 像素領域,則再將領域內對應的差值進行累加,與預先設定的閾值進行比較,若大于閾值則保留,反之舍棄。 通過這樣再提取的ORB 特征點,不僅有效提升了特征點匹配效果,同時也具有更好的跟蹤特性,使得LK 光流法的跟蹤成功率得到有效提升。
ORB 特征點由Ethan RubLee 等人于2011 年提出,ORB 是一種快速特征點提取和描述算法,算法主體由特征點提取和特征點描述兩個部分組成[9]。
ORB 算法建立在FAST 算法的基礎之上,FAST算法的做法是,取一個像素點P,考慮該像素點周圍的16 個像素,計算該像素點與周圍16 個像素點的灰度值差值,并取絕對值,與閾值進行比較,若大于該閾值,則認為這兩個像素點不同,若該像素點周圍的存在連續N個像素點都滿足該條件,就定義其為FAST 特征點,N一般取12[10]。

式中:GP表示P點的灰度值,Gi表示P周圍第i處像素點的灰度值,Gth表示閾值。
同時FAST 算法還提供了優化方案,根據判斷條件,率先測試P周圍第1、5、9、13 處像素點的灰度值是否滿足條件,若4 處位置有3 處滿足條件,則進行后續判斷,反之舍棄。
ORB 特征點則是在FAST 基礎上引入特征方向的概念,以此來實現特征點的旋轉不變性。 確定特征方向的主要流程如下:以特征點P為圓心,r為半徑確定一個圓;通過矩來計算圓的質心;定義特征方向為特征點P到以P為圓的質心的連線方向[11-13]。其中矩的定義如下:

式中:p、q表示階數,mpq表示圖像關于點(x,y)的p+q階矩,f(x,y)表示圖像關于點(x,y)的灰度值。
由式(2)進一步可推得質心表達式為:

若特征點P剛好位于坐標原點,則其對應的特征方向θP可表示為:

特征點描述主要是通過特征描述符實現的。ORB 特征點的特征描述符計算步驟如下:首先在特征點P的S×S的區域內,選取N對像素點pi、qi(i=1,2,…,N);然后對這N對像素點對進行旋轉操作,旋轉角度大小對應特征方向θP,同時定義新的點對為p′i、q′i(i=1,2,…,N);再按新點對的灰度值比較的結果進行區分,若滿足I(p′i)≤I(q′i),則表示為數字0,反之表示為1;最后得到一串長度為N的字符串,這就是ORB 特征點的特征描述符[14]。
Hessian 矩陣廣泛應用于提取圖像特征、邊緣檢測和求取函數極值等領域。 SURF 算法相比于SIFT算法擁有更高效的特征提取和特征描述方法,而SURF 算法就是借助構建Hessian 矩陣來實現特征點提取的[15-17]。
Hessian 矩陣最初由德國科學家Ludwin Otto Hessian 于19 世紀提出,是一個自變量為向量的實值函數的二階偏導數組成的矩陣,主要用于描述函數的局部曲率[18]。
其中二維圖像f(x,y)的Hessian 矩陣表達式如式(5)所示:

式中:x,y分別表示橫縱坐標,f(x,y)表示圖像關于點(x,y)的灰度值。
再將式(5)進行高斯濾波,可推導出式(6):

進一步的,可以通過式(6)求得對應的Hessian矩陣判別式det(H),如式(7)所示:

在確定FAST 特征點之后,通過構建Hessian 矩陣進行再提取,以此來選取跟蹤性更好的特征點,具體流程如下:
對于特征點P,構建其對應的det(HP),若特征點P的det(HP)在以其為中心的3×3 的像素領域內取得局部最大值,則保留,反之舍棄,具體的表達式如式(8)所示:

式中:det(HP)和det(Hi)都表示Hessian 矩陣判別式。
若特征點P滿足式(8),則進行下一步判斷,將特征點P的det(HP)分別與det(Hi)做差,然后累加求和,若最終結果大于設定的閾值,則保留,反之舍棄。 具體的表達式如式(9)所示:

式中:detth表示設定的閾值。
若滿足上述所有條件,那么就再提取該特征點,后續的步驟則與傳統ORB 特征點相同。 算法流程圖如圖1 所示。

圖1 算法流程圖
光流表示的是三維空間運動物體在其對應的成像平面上的瞬時速度,是一種瞬時速度映射關系。而光流法則通過分析時域中不同圖像中同一像素點的位置變化,從而獲得物體的空間信息和運動信息。傳統光流法基于兩個基本假設條件。 ①亮度恒定不變:即同一像素點在不同幀圖像上亮度不變;②運動是“小運動”:時間變化不會引起目標位置的劇烈運動。 在上述假設的基礎之上,可進一步構建出光流的約束方程,即:

式中:Ix,Iy,It均可直接從圖像中計算獲得,u和v即為對應像素點的光流。
LK 光流法在此基礎上提出第三個假設:假設像素點的領域內的光流是一個常數。 然后就可以根據最小二乘法對領域內的光流求解。 根據上述假設可知,某一圖片上特征點P所在領域內的像素點光流相同,不妨假設有k個像素點,k個像素點對應k個基本約束方程,聯立這k個方程,可得:

由方程求解出的唯一解即對應該領域內像素點的光流。 以上就是LK 光流法的核心思想。
傳統的基于特征點的LK 光流法選擇特征點的有Shi-Tomasi 特征點,ORB 特征點等。 本文采用上文所提出的改進ORB 特征點,并在此基礎之上,引入LK 光流法,實現對特征點的跟蹤。
本實驗使用電腦處理器為Intel(R)Core(TM)i5-8300H,主頻2.30 GHz,內存16 GB,64 位Windows 10 操作系統,實驗平臺為MATLAB 2019a 和Visual Studio 2017,所采用的數據集為標準計算機視覺數據集,以及實采數據集。
采用ETH Zurich(蘇黎世聯邦理工學院)行人數據樣本數據集和實采數據集分別測試傳統的ORB 特征匹配算法和本文提出的算法,測試結果如圖2 和圖3 所示。 其中圖2(a)和圖3(a)顯示傳統ORB 特征匹配的結果,圖2(b)和圖3(b)顯示本文提出的算法的特征匹配結果。 可以看出,傳統的ORB 特征匹配方法選取的特征點數量特別多,同時還存在誤匹配的情況,而本文提出的算法選取的特征點則相對少很多,而且幾乎沒有誤匹配的情況。

圖2 ETH 行人數據樣本ORB 特征匹配結果

圖3 實采數據集ORB 特征匹配結果
為了更直觀的體現改進ORB 特征點的優勢,選取8 組數據,并對其進行匹配準確率測試。 匹配準確率,即特征點匹配的準確率,數值等于匹配成功的特征點數與總特征點數的比值。 本文按照上述方法分別對數據集中的8 組數據進行測試,分別計算傳統ORB 特征點和改進ORB 特征點的匹配準確率,結果如表1 所示。
由表1 可知,改進ORB 特征點相比于傳統ORB特征點在進行特征匹配時匹配準確率有明顯的提高,平均提升效果為20.96%。 由此可知,改進ORB特征點有更好的匹配特性。

表1 ORB 特征匹配準確率對比表

圖4 ETH 數據集基于傳統ORB 特征點的LK 光流跟蹤結果
本文采用ETH Zurich(蘇黎世聯邦理工學院)行人數據樣本數據集和KITTI 計算機視覺數據集(由德國卡爾斯魯厄理工學院和豐田美國技術研究院聯合創辦)進行測試。 跟蹤的結果如圖4 和圖5所示。 其中圖4 顯示ETH 數據集中基于傳統ORB特征點的LK 光流跟蹤結果,圖5 顯示ETH 數據集中基于改進ORB 特征點的LK 光流跟蹤結果。 傳統ORB 特征點顯示比較集中,而且在后續LK 光流跟蹤過程中出現了不少誤跟蹤的情況。 相比之下,改進ORB 特征點顯示的則比較分散,且在后續LK光流跟蹤過程中,幾乎沒有出現誤跟蹤的情況。 因此,改進ORB 特征點具有更好的跟蹤特性。

圖5 ETH 數據集基于改進ORB 特征點的LK 光流跟蹤結果
為了進一步直觀的展示本文算法的效果,引入跟蹤成功率參數。 對于每一個特征點,設置一個閾值,若前一幀位置與當前幀位置距離大于閾值,則認為跟蹤失敗,反之則認為跟蹤成功,跟蹤成功率是跟蹤成功特征點數與總特征點數的比值。 本文設置閾值為20 像素。 對于ETH 數據集和KITTI 數據集中的樣本,統計基于傳統ORB 特征點的LK 光流法和基于改進ORB 特征點的LK 光流法的前10 幀跟蹤成功的特征點數和總特征點數,并計算跟蹤成功率,結果如表2 所示。

表2 基于ORB 特征點的LK 光流跟蹤結果對比表
由表2 可知,在同樣使用LK 光流法的情況下,基于改進ORB 特征點的LK 光流法比基于傳統ORB 特征點的LK 光流法跟蹤成功率有顯著提升,平均提升了19.73%,說明了改進ORB 特征點相比于傳統的ORB 特征點具有更好的跟蹤特性,在進行光流跟蹤的時候不容易出現誤匹配的情況。
本文提出了一種基于改進ORB 特征點的LK光流算法,結合SURF 算法在特征提取步驟中構建的Hessian 矩陣對傳統的ORB 特征點進行再提取。采用傳統ORB 特征點和改進ORB 特征點進行特征匹配實驗和LK 光流跟蹤實驗,實驗結果表明,相較于傳統ORB 特征點,改進ORB 特征點在特征點匹配和LK 光流跟蹤方面都有顯著提升,其中特征匹配準確率平均提升20.96%,而LK 光流跟蹤成功率平均提升19.73%。 因此,本文提出的改進ORB 特征點不僅擁有更好的特征匹配效果,同時具有更好的跟蹤特性,具有更好的實用價值。