周 勇, 楊學志, 臧宗迪, 王金誠, 吳克偉
(1.合肥工業大學 計算機與信息學院,安徽 合肥 230601; 2.工業安全與應急技術安徽省重點實驗室,安徽 合肥 230601; 3.合肥工業大學 軟件學院,安徽 合肥 230601)
物體的振動特征能夠反映該物體的某些本質屬性。比如,橋梁等大型建筑的振動特征反映其結構健康狀況[1-2],螺栓等連接件的振動參數反映出工廠設備的運行狀態[3],人體呼吸的振動特征反映了人類的情緒和健康狀況[4]。基于視覺的振動檢測方法具有便捷與低成本的優勢,且能夠避免接觸式傳感器對目標振動產生的干擾,受到國內外學者的廣泛關注[5]。
視覺振動檢測系統利用相機捕捉目標振動視頻,將三維圖像信號轉換為振動信號,進而獲取振動頻率等參數。固定相機能夠完成小范圍、地面位置的目標振動測量,然而對于橋梁等大型基礎設施的振動檢測,固定位置的視覺測量系統則難以實現。這種情況下,通常需要使用多個相機布置測點,相機的部署位置、測量視角等都需要精確計算;此外,實際環境中某些位置并不適合架設相機。
無人機技術的發展為這一問題提供了可能的解決方案,通過無人機搭載相機進行拍攝,能夠克服相機部署位置的局限性。然而,無人機在飛行過程中受到氣流的影響會產生隨機晃動,造成所拍畫面不穩定,無人機平臺的視覺振動檢測系統需要克服這一問題。
對于結構的振動變化,近年來有研究將歐拉視角下的相位分析法應用于振動檢測。文獻[6-7]將基于相位的運動分析法與歐拉視角相結合,實現了全場運動估計。圖像的相位信息相對于亮度信息,對環境光照變化和圖像噪聲表現出更高的魯棒性。文獻[8-9]使用基于相位的振動提取方法,通過高速攝像機測量懸臂梁、金屬桿以及民用基礎設施的微小振動,并開展大量的實驗驗證了該方法的可行性;文獻[10]采用基于相位的振動信號提取算法測量了金屬桿等材料的模態頻率;文獻[11]使用基于相位的運動估計和放大方法測量了風力機葉片的諧振頻率;文獻[12]在基于相位的運動處理框架上實現目標的振動模態分解,并在實驗室搭建的小型建筑結構上進行了驗證;文獻[13]對原有的相位振動檢測方法進行了改進,簡化了振動波形的提取過程。然而,上述研究所提出的算法只適用于穩定的相機,當應用于無人機平臺時,會因氣流所引發的相機晃動而失效。
對于無人機平臺的振動檢測,有學者使用特征點追蹤的方式實現。文獻[14-15]利用無人機搭載相機拍攝實驗室橋梁模型,檢測圖像特征點并求解運動矩陣,進而測量目標的振動時程、頻率等參數。這兩項研究均假設圖像背景區域的運動信號反映無人機晃動,并通過手動選取背景特征點提取干擾信號,完成運動校正,從而準確測量目標振動。
但是,特征點追蹤的運動分析方法本質上基于亮度信號,對光照變化和圖像噪聲較為敏感;并且這兩項研究中,背景特征點依賴于手工選取,引入了很大的工作量。文獻[16]使用無人機捕捉地面人體的呼吸振動信號,首先對無人機所拍攝的視頻進行穩像處理后,然后通過基于相位的運動信號提取方式完成呼吸振動檢測。然而,穩像算法可能會抑制目標振動信號本身,從而影響檢測結果的準確性。
本文提出一種抗無人機晃動的視覺振動檢測算法。該算法基于局部相位的信號提取方式,利用晃動信號的全局性和目標振動信號的局部性對信號進行分離。首先根據像素點亮度變化劇烈程度實現目標振動區域與背景區域的分離;其次對圖像的背景區域進行特征點提取,并求解背景區域的運動矩陣;然后對目標區域進行運動矯正,去除其包含的背景信號分量,即晃動信號分量;然后提取目標振動區域的局部相位序列,構建振動信號,并檢測其振動頻率。實驗結果表明,該算法能夠有效去除無人機晃動干擾,實現無人機在晃動情況下的振動檢測。
本文提出的無人機晃動下的視覺振動檢測算法以局部相位提取振動信號為基礎,以相位的運動信號提取方式處理振動信號,根據振動區域亮度變化更為劇烈這一特征,定位出振動區域;然后對圖像背景區域進行特征點提取,得出背景點的運動矩陣,即無人機在氣流等影響下產生的晃動信號的運動矩陣,通過這個運動矩陣對目標區域進行矯正,消除無人機晃動的影響;最后提取目標區域的局部相位序列,構建振動信號并檢測目標區域的振動頻率。
本文所提算法的流程框圖如圖1所示,包括3個主要步驟:

圖1 本文算法流程
(1)振動目標定位與分離;
(2)無人機晃動信號矯正;
(3)基于相位的振動信號提取。
分離目標區域與背景區域,一方面是為了增強所提取振動信號的純凈度,另一方面是為了利用背景特征點對無人機晃動信號建模。像素點的位置變化可以與其亮度變化相對應,即圖像的運動信息可以由其亮度信息來表示,因此本文根據像素點亮度變化特征識別目標點與背景點。目標像素點的運動由目標自身振動引起,而背景像素點的運動則對應無人機的晃動。本文做以下2個假設:① 無人機自身的晃動信號,相比較于振動信號,在時間域上是線性的;② 振動信號包含高階運動分量,不具備線性變化特征。
1.1.1 二階差分濾波
使用二階差分濾波的方式可實現振動點與背景點的分離。I表示視頻的第1幀圖像;(x,y)為圖像任意一點坐標;i(x,y,k)為視頻第k幀圖像(x,y)點所對應的亮度信號,1≤k≤N,N為視頻總幀數,則濾波后信號if(x,y,k)可表示為:
if(x,y,k)=i(x,y,k+2)-
2i(x,y,k+1)+i(x,y,k)
(1)
目標點的亮度-時間序列通過該濾波器后,仍有較大的能量剩余;背景點的亮度-時間序列經過二階差分濾波后則大幅衰減。
實驗時選取的不同位置如圖2所示,圖2中:A點代表振動區域的點;B、C點代表非振動區域的點。A、B、C3點的亮度序列(intensity sequence,IS)及其濾波后信號的亮度序列(IS-Filtered)如圖3所示。由圖3a、圖3b可知,A點在濾波前由振動信號與無人機晃動信號的疊加,在亮度上變化比較明顯,亮度-時間序列變化比較劇烈,在經過二階差分濾波后還存在大量的能量殘余。由圖3c、圖3d可知,B點只有無人機晃動信號,因此B點屬于平坦區域,B點的亮度-時間序列趨于一個常量,并且變化并不明顯,經過二階差分濾波之后可以看出幾乎沒有能量殘余。由圖3e、圖3f可知,C點處于導線邊緣,在只有無人機晃動的信號下才會有亮度變化的較大波動。

圖2 振動區域與非振動區域

圖3 3點濾波前后亮度序列
從圖3e、圖3f還可以看出,通過二階差分濾波器的亮度-序列趨于0,由此可知,二階差分濾波對于濾除線性運動,找尋有振動的區域是有效的。
1.1.2 基于能量的目標分離
在對圖像進行二階差分濾波后,用ef(x,y)表示某一位置(x,y)處濾波后亮度信號的能量大小,則有:
(2)
根據整幅圖像濾波之后的能量大小,構造振動能量矩陣E:
(3)
矩陣E表示圖像中每個位置所含振動信號的強弱,然后以σ為閾值實現ef(x,y)的二值化:
EBW(x,y)=f(ef(x,y))=
(4)
通過(4)式實現矩陣E的二值化EBW=f(E)。σ的選取依賴于經驗,一般取σ=0.2 max(ef(x,y)。
完成以上操作后,二值圖像中可能包含振動信號的點會被置1,背景點則會被置0。采用圖像形態學操作,去除EBW中面積過小的連通區域,得到修飾后的振動能量矩陣EBW′。一方面由于在視頻畫面存在晃動時,振動目標通常會掃過一塊較大的面積,另一方面為了便于后續處理,將EBW′的非零區域擴展為小矩形塊,從而得到表征振動目標的模板矩陣M。將模板矩陣M與視頻的每幀圖像I相乘即可分離出目標振動區域與背景區域。具體如圖4所示。

圖4 振動目標定位
無人機晃動引發圖像背景產生整體運動。對圖像背景區域進行運動特征的分析則能夠實現對無人機晃動信號的估計,處理過程使用角點檢測算法(features from accelerated segment test,FAST)[17]與特征點提取算法(fast retina keypoint,FREAK)[18]算法實現背景區域特征點的檢測和匹配,通過采樣一致估計(m-estimate sample consensus,MSAC)[19]剔除誤匹配點。完成全局運動模型的建立并構建得到仿射變換矩陣,然后對目標區域進行矯正。具體實現方法如下。
1.2.1 特征點提取
根據目標點與周圍點的灰度差來確定特征點,FAST算法步驟如下:① 從圖片中選取一個目標像素點p,設其像素值為Ip;② 設定一個合適的閾值t;③ 選取16個以目標像素點p為中心,半徑為3的像素點,像素值分別記為Ij,j=1,2,…,16;④ 滿足判決函數有連續的9個像素點的那個像素點即為角點。判決函數為:
S=|I-Ij|>t
(5)
1.2.2 特征描述與匹配

(6)
(7)
在特征描述中,得到了512 bit的二進制描述符,該描述符的列是方差由高到低的排列,高方差表征模糊信息,低方差表征細節信息。因此,選取前128 bit(即16字節)進行匹配,若2個待匹配的特征點前16字節距離小于設定的閾值,則再用剩余的比特位進行匹配。最終得到視頻任意兩幀圖像之間的匹配點集。
1.2.3 矯正目標區域
完成背景區域的特征點檢測和匹配后,使用MSAC算法[19]完成全局運動模型的建立。MSAC可以自動判斷出正確的匹配點對(內點),剔除誤匹配(外點),并且計算出第1幅圖像的所有特征點映射到第2幅圖像的運動模型。該模型由如下一個3×3的矩陣描述,即
(8)
其中:(tx,ty)為平移量;am(m=1,2,3,4)為控制圖像的旋轉和縮放。為了簡化計算,使用以下只有1個參數的變換矩陣來代替仿射變換矩陣:
(9)
對Hi求逆,可以消除兩幀圖像之間背景區域的整體運動。用Gk表示第1幀圖像背景區域和第k幀圖像背景區域之間的映射關系,則Gk可以由上述幀與幀之間的變換矩陣Hi累積表示如下:
(10)
所求Gk描述了背景區域的運動,即實現了無人機晃動信號的估計。Gk可用來對目標振動區域進行校正,去除其包含的無人機晃動分量,保留振動分量。設Ok表示第k幀目標振動區域,(xk,yk)為其任意一點,(xk,yk)∈Ok,T表示校正變換,則有:
(11)
其中,(xk′,yk′)為校正后的點坐標。將目標區域的所有點完成校正,得到Ok′=T(Ok)。
完成對目標區域晃動信號矯正后,需要提取振動信號,提取流程如圖1所示。首先在空間上,使用復數可控濾波器組對視頻的每一幀進行不同尺度、不同方向的子帶分解,獲取到相位變化序列;然后在時域上濾除相位序列的直流分量,濾波后的相位序列即為目標振動信號;對振動信號進行傅里葉變換,檢測其幅頻響應函數峰值,即可得到振動頻率,算法原理如下。
傅里葉變換獲取到的空間全局相位與圖像的整體運動相關,與之類似,空間局部相位可以用來計算局部運動。復可控金字塔(complex steerable pyramid,CSP)可以實現空間局部相位的提取。本文以一維全局傅里葉基為例說明振動與相位之間的關系,用f(x)表示位置x處的圖像亮度,進行傅里葉級數展開,ω表示每個子帶的空間頻率,則有:
(12)
用v(t)表示振動引發的位置變化,則有:
(13)
其中每個子帶可以表示為:
Sω(x,t)=Aωeiω(x+v(t))
(14)
由于每個子帶都是復指數函數,相位ω(x+v(t))含有運動信息。濾除其直流分量,得到相位變化信號Vω(x,t)=ωv(t),Vω(x,t)為位置x處的振動信號。
復可控金字塔可以將視頻的每一幀亮度信號分解為不同尺度、不同方向的局部相位,這些處理后的局部相位信號可提取出視頻中的目標振動。用Cλ,θ表示某一空間尺度λ、某一方向θ的復可控濾波器,則有:
A(x,y,k)eiφ(x,y,k)=Cλ,θ(x,y)?T(Ok(x,y))
(15)
其中:A(x,y,k)為復可控濾波得到的局部幅值;φ(x,y,k)為復可控濾波得到的局部相位。濾除φ(x,y,k)的直流分量,即可得到振動信號V(x,y,k)。經傅里葉處理后,可得峰值振動頻率f為:
f=maxA(f)FFTk(V(x,y,k))
(16)
其中:A(f)為變換后得到的幅度求最大值;FFTk表示對變量k(即時間)做傅里葉變換。
實驗系統由1臺DJI Mavic Air 2無人機、1臺SA-SG030掃頻信號發生器和1臺SA-JZ002模態激振器組成。使用信號發生器模擬真實場景中電機等設備的不同振動頻率,使用無人機在不同晃動幅度下拍攝激振器視頻,測量激振器頂端桿的振動頻率。無人機所拍視頻的分辨率為1 080 像素×1 920 像素,幀率為60 幀/s。通過手動操縱遙控桿可使無人機產生3種不同幅度(小幅、中幅、大幅)的晃動,其中小幅晃動由無人機靜止拍攝產生。
使用無人機拍攝激振器振動視頻,拍攝時長為10 s。計算多個特征點在不同幀的坐標間的歐式距離,選擇最大距離作為無人機晃動幅度的估計。按照無人機晃動程度的不同將實驗視頻分為3組:組別1(晃動幅度0~30 像素)、組別2(晃動幅度30~60 像素)、組別3(晃動幅度60~90 像素)。激振器的振動頻率可通過信號發生器調節,將激振器頻率分別設置為5.2、10.2、15.2 Hz,每個頻率點拍攝10段視頻,一共采90段視頻作為實驗數據集。實驗場景如圖5所示。

圖5 實驗場景
(1)平均絕對誤差Me,用來反映所測頻率與真實頻率的絕對誤差平均值,計算公式為:
(17)

(2)均方誤差RMSE,用來反映在多次測量結果中,檢測頻率偏離真實頻率的程度,計算公式為:
(18)
2.3.1 驗證實驗
本文使用對真實頻率為10.2 Hz的激振器進行頻率檢測,從不同晃動幅度的3組視頻中各選取1段視頻進行處理,生成的頻譜圖如圖6所示。

圖6 不同晃動幅度檢測頻譜對比
從圖6可以看出,組別1測得的峰值頻率為10.2 Hz,組別2為10.3 Hz,組別3為9.9 Hz。結果表明,本文算法在不同晃動幅度下均能準確測得振動信號,當晃動幅度增大時,誤差相應增大。為了進一步驗證本文算法的檢測效果,計算3種晃動幅度、3種振動頻率下的平均絕對誤差和均方誤差,對采集的全部90段視頻進行頻率檢測,結果見表1所列。

表1 本文算法檢測結果
由表1可知本文算法的平均絕對誤差控制在0.2 Hz以內,均方誤差不超過0.22 Hz。
2.3.2 對比實驗
將本文算法與文獻[13]使用的相位檢測算法、文獻[15]使用的特征點追蹤算法、文獻[16]使用的穩像后相位提取算法進行頻率檢測對比。組別1中振動頻率為10.2 Hz的視頻在各方法下的頻率檢測結果如圖7所示。從圖7可以看出,文獻[13]、文獻[15]、文獻[16]算法的峰值頻率分別對應0.3、10.6、8.9 Hz,而本文算法檢測結果為10.2 Hz。相比于本文算法,其他3種算法都存在較大誤差。由該組實驗可以看出,本文算法能夠有效去除無人機晃動干擾,準確提取出視頻中的振動信號,相比于其他算法的檢測結果,本文算法的誤差更小。為了進一步對比上述算法的檢測效果,對采集的全部90段視頻進行頻率檢測,檢測結果見表2~表4所列。

圖7 10.2 Hz下不同算法頻率檢測對比

表2 0~30像素晃動下檢測結果

表3 30~60 像素晃動下檢測結果

表4 60~90像素晃動下檢測結果
從表2~表4可以看出,對比文獻[13]、文獻[15]、文獻[16]算法,分別在5.2、10.2、15.2 Hz下對應3個不同幅度無人機晃動的檢測結果,發現本文算法均優于另外3種算法。
2.3.3 實驗分析
本實驗對本文算法與文獻[13]、文獻[15]、文獻[16]3種算法進行準確性分析,結果見表5所列。

表5 準確性分析
從表5可以看出,本文算法取得了最佳的檢測效果,分組平均絕對誤差和均方誤差均保持在0.2 Hz的范圍內,總體平均絕對誤差為0.132;文獻[15]算法檢測性能次之,總體平均絕對誤差0.343;文獻[16]算法整體檢測性能欠佳,總體平均絕對誤差超過了1;而文獻[13]算法整體誤差過大,超過了可接受的范圍,因此可判定該算法對于無人機晃動下的振動檢測失效。
原因在于:文獻[13]不加區分地將全場運動信號轉化為相位信息,未處理相機晃動,引入了大量低頻干擾,導致目標振動信號被湮沒;文獻[15]算法通過手動選定背景特征點實現運動矯正,保留了振動信號,但由于其采用基于亮度特征的振動提取方式,因而其振動檢測準確性上低于本文的相位檢測法;文獻[16]算法雖然針對無人機引發的相機晃動進行了穩像處理,但是由于其未區分目標振動信號和晃動信號,從而導致振動信號產生了畸變。
本文算法實現了振動和背景區域的分離,以背景區域的特征點完成對無人機運動矩陣的求解,從而去除振動區域的晃動干擾,準確提取出了目標振動視頻中的待測振動信號。
在不同晃動幅度下將本文算法與其他3種算法的平均絕對誤差進行對比,見表6所列。從表6可以看出:對于文獻[15]、文獻[16]以及本文算法,隨著無人機晃動幅度的增大,3種算法的頻率檢測誤差均明顯增大;文獻[15]采用特征點追蹤框架,當晃動增大時,其特征點匹配錯誤的可能性增加,造成性能下降;文獻[16]使用穩像算法對視頻進行處理后,再進行基于相位的振動檢測,由于視頻穩像依賴特征點匹配,因而晃動幅度增加會影響其穩像預處理的性能,進而降低頻率檢測準確率。

表6 3種晃動幅度下平均絕對誤差分析 單位:Hz
對于本文算法,由于無人機運動矩陣的求解同樣依賴特征點匹配,檢測準確率必然隨著晃動幅度的增大而降低。
在不同頻率下將本文算法與其他3種算法的平均絕對誤差進行對比,結果見表7所列。

表7 不同振動頻率下平均絕對誤差分析 單位:Hz
由表7可知,由于文獻[13]算法在實驗場景下已基本失效,因此不做進一步分析;文獻[15]算法和本文算法在不同振動頻率下的檢測性能無明顯差別;而文獻[16]算法則在測量高頻信號時,準確率明顯降低。原因在于:文獻[16]算法基于視頻的全局穩像,穩像過程會去除劇烈變化信號,保留圖像序列的平滑運動,如果目標的振動頻率較高,那么算法可能會對目標本身的振動產生抑制效果,進而影響頻率檢測的準確性;文獻[15]算法通過人工選擇背景特征點實現晃動信號的估計;本文算法則在自動分離背景區域和振動區域的基礎上,使用背景區域的特征點求解無人機運動矩陣。因此這2種算法均不會對目標本身的振動產生影響。
2.3.4 算法時間復雜度分析
將本文算法時間復雜度與文獻[13]、文獻[15]、文獻[16]算法時間復雜度進行對比分析,結果見表8所列,視頻每幀分辨率為1 080像素×1 920 像素,每個視頻總共為600幀,使用5個不同的視頻進行實驗。
從表8可以看出,本文算法的時間復雜度優于文獻[13]、文獻[16],但比文獻[15]更耗時。這是由于文獻[13]使用的是全局相位檢測算法,由于對視頻每幀整體進行計算,本文算法在矯正分離后只對振動區域進行相位檢測算法,只計算每一幀部分位置,因而本文算法耗時更少。

表8 不同算法時間性能分析 單位:s
對比文獻[15]采用特征點追蹤算法,在算法的時間復雜度上比本文算法更優。文獻[16]采用全局穩像再使用相位檢測算法,首先穩像是針對全局進行,而本文算法的矯正只針對目標區域,在這一階段本文的算法就會耗時更少。而且文獻[16]在使用穩像算法之后再進行全局的相位檢測算法,整體來看,本文算法的時間復雜度明顯優于文獻[16]。
本文提出了一種抗無人機晃動的視覺振動檢測算法,該算法利用目標物體的振動特征,從視頻中分離出振動目標和背景區域,利用背景區域計算出無人機在氣流擾動下晃動的運動矩陣,利用得到的運動矩陣實現對目標區域里疊加的無人機晃動信號進行矯正,得到較為純凈的振動信號,然后通過復可控濾波器提取振動信號的相位序列,檢測其振動頻率。
在真實使用場景中,振動目標不一定總能夠保持在拍攝畫面內,當無人機晃動幅度過大時,目標可能會短暫的丟失在視頻幀中,這會影響到本文算法的準確性。
在未來的工作中,將針對更大幅度的無人機晃動以及更為復雜的無人機測量場景開展研究,以拓寬本文算法的應用范圍。