褚世沖,徐耀良,孫振宇,楊 寧
(1.上海電力學院 自動化工程學院,上海 200082;2.國家電網上海松江供電公司,上海 201600)
?
基于iOS設備的自主航拍巡檢控制終端的設計
褚世沖1,徐耀良1,孫振宇2,楊寧1
(1.上海電力學院 自動化工程學院,上海 200082;2.國家電網上海松江供電公司,上海 201600)
針對無人機航拍巡檢操作繁瑣、效率低下等問題,提出了一種基于iOS設備和圖像跟蹤算法的無人機自主航拍巡檢控制終端。使用無人機控制軟件開發包搭建了終端與無人機、航拍云臺、無線圖像傳輸設備、無人機控制器之間的通信鏈路?;贔Fmpeg實現視頻解碼,提出了基于自適應尺度的時空上下文跟蹤算法,引入尺度參數變化率以在線糾正更新尺度參數的過激變化,大幅增強了航拍云臺在復雜背景下的跟蹤穩定性,實現了無人機航拍系統對不同尺度目標的自主、穩定跟蹤,提高了航拍巡檢效率。
無人機巡檢;時空上下文;iOS;軟件開發包;自適應尺度
隨著多旋翼無人機相關技術的成熟和功能擴展,無人機已不是封閉、單一的飛行工具,而是集成了飛行控制、云臺控制、航拍攝像、無線圖像傳輸、無線控制、在線路徑規劃等功能于一身,成為了飛行航拍平臺。使用航拍無人機用于電力行業設備巡檢是解決傳統巡檢任務效率低下、周期長、安全性差等問題的有效嘗試。但是由于目前多旋翼無人機系統不是針對巡檢場景設計的,使用無人機進行設備巡檢往往操作繁瑣、效率低下,無法取得預期巡檢效果,阻礙了無人機在這些領域的應用發展?;跓o人機控制軟件開發工具包(Software Development Kit,SDK)構建適應航拍巡檢任務要求的控制終端可以擴展無人機的控制方式,提高無人機自動化程度,使無人機成為航拍巡檢系統。
本文在iOS設備及其開發環境下,提出了基于圖像跟蹤算法的無人機自主航拍巡檢系統。在iOS的MVC(Model View Controller)開發模式下,使用DJI Mobile SDK提供的控制軟件接口,構建iOS控制終端與無人機之間的通信鏈路,在Xcode開發環境下調用FFmpeg庫并基于H.264標準對實時獲取的無人機航拍視頻解碼,基于OpenGL ES For iOS圖像庫進行視頻顯示,重點提出高效的改進STC跟蹤算法實現對巡檢目標的實時跟蹤以獲得目標在像平面的位置。根據目標成像位置與像平面中心的偏差,自動調整航拍云臺方位偏航角和俯仰角,使目標時刻處于像平面中心[1],實現對巡檢目標的自主航拍跟蹤。
文中使用的自主航拍系統客戶端基于DJI于2015年5月推出的Mobile SDK APIs,該系列SDK開放了相機、云臺、飛行姿態、地面站控制、電池、信號、航點信息等接口,因此本系統具備了改變無人機相機航拍參數、操控云臺、獲取飛行器飛行姿態以及航拍目標視頻等功能。系統核心為兩大模塊,分別為飛行器云臺控制模塊和基于自適應尺度的STC目標跟蹤算法[2-3]。總體功能框架如圖1所示。

圖1 系統架構圖
基本流程為:首先iOS設備通過USB通信接口與無人機控制器連接,機載無線圖像傳輸系統將航拍相機原始YUV格式視頻圖像基于FFmpeg庫實現H.264標準的壓縮和傳輸[4],iOS設備由無人機控制器獲取接收視頻原始幀,并進行標準解碼、顯示、格式轉換。在UIImageview對象下[5],調用了自適應尺度的STC跟蹤器對Mat格式視頻圖像信息進行目標跟蹤,獲得跟蹤目標的中心位置,根據該位置坐標和像平面中心的誤差,云臺動作控制模塊生成云臺角度調整參數并對云臺進行角度調整,完成一幀的視頻處理過程。
1.1圖像傳輸與顯示模塊
DJI Phantom3飛行器的航拍設備拍攝的視頻分辨率為3 840×2 160,采用H.264標準進行視頻編碼,并通過無線圖像傳輸系統進行無線傳輸。為完成對該編碼視頻的解碼、顯示、處理,在Xcode開發環境下,在鏈接庫中添加FFmpeg的頭文件和.a格式靜態庫文件[6],在Frameworks下,添加DJI Mobile SDK相關庫,包括DJISDK.framework和libz.dylib。在視頻解析、顯示函數中定義基于H.264標準的視頻接收、解碼部分代碼位于SDK中VideoFrameExtractor.m和ViewPreviewer.mm,視頻的顯示函數位于MovieGLView.m內。
通過調用OpenGL庫中GLView控件實現圖像的渲染,使用接口函數_glView render:_renderYUVFrame[]完成對YUV格式視頻幀的渲染。在實際渲染中由于iOS不支持直接渲染YUV顏色制式圖像,視頻解碼后首先進行了由YUV到RGB顏色制式的轉換。轉換涉及公式如下

(1)
為實現圖像處理算法對圖像的調用,在ViewPreviewer.mm增加了基于UIImageView控件,以上圖像格式轉換流程如圖2所示。

圖2 格式轉換流程圖
1.2圖像處理算法
圖像處理算法模塊是實現自主航拍跟蹤的核心,為了提高算法實時性和穩定性,系統基于Opencv For iOS實現STC跟蹤算法,Opencv是一種包含了常見圖像幾何變換、濾波、分割、特征提取等操作的開源方案,具有較好的跨平臺運行性能和優異的執行效率,在Xcode平臺下進行C++ /Object-C混合編程。
在Xcode的Building Phase Framework下添加Opencv2.framework,在ViewPreviewer.mm頭文件中添加Opencv相關頭文件,創建基于UIImageview控件的跟蹤視頻顯示,實現方法為創建UIImageview對象UIImage *image,并通過調用CGRecmake()對image. frame 屬性進行設置。完成UIImageview的創立后,使用delegate方式實現對圖像處理算法的調用,使用GCD(Grand Center Dispatch)dispatch_async方式完成對主線程的分配,方式如下:
dispatch_async(dispatch_get_main_queue(), ^{
};
對H.264標準視頻解碼、顯示、處理需要進行高復雜度、多線程運算,對iOS應用程序、CPU負擔極大,其中一個堵塞會引起視頻卡頓甚至程序崩潰,這對iOS應用程序的多線程設計提出了較高要求。本系統使用iOS多核多線程特有的GCD任務并行執行線程池解決方案,該技術能夠根據系統負載自動增減線程數量,并且實現方式簡單,占用資源極少,有效避免了視頻卡頓和線程擁堵。
Delegate切合iOS的MVC、單線繼承編程思想,可以使主線程中對象更加規范化同時滿足對多重場景的及時響應。在主線程中調用圖像處理算法前,將UIImage格式圖片轉換為Mat格式以適應Opencv中特殊制式的圖像處理操作,調用方式為:
UIImageToMat(image,matImage);
轉換完成后,調用processImage:matImage完成圖像跟蹤算法,當外部再次觸發設置的delegate則結束圖像處理,將圖像轉換為UIImage進行顯示,完成主線程任務。
1.3云臺控制接口
在Gimbal.m文件中定義了云臺方位偏航角和俯仰角控制函數接口,其實現函數分別為:
-(void) onGimbalAttitudeYawRotationForward;
-(void) onGimbalAttitudeYawRotationBackward;
-(void) onGimbalAttitudeScrollUp;
-(void) onGimbalAttitudeScrollDown;
分別用于設置方位偏航角度向前、向后,俯仰角度向上、向下。以俯仰角度向上調整為例,其具體實現方式如下:
首先在以上函數內進行云臺角度調整結構體參數設置DJIGimbalRotation pitch = {YES, 15, RelativeAngle, RotationForward};
調用setGimbalPitch完成角度設定命令的發送setGimbalPitch:pitch Roll:roll Yaw:yaw withResult:nil。
圖像跟蹤算法是自主航拍系統實現的核心任務,要求算法具備良好的實時性、穩定性,同時能以較高成功率完成對目標的跟蹤。STC跟蹤器是由Zhang等于2014年提出的基于貝葉斯框架下的高效目標跟蹤算法,與目前常用的Meanshift、尺度不變特征等跟蹤算法相比,在執行效率、抗遮擋能力、對目標尺度變化的適應性等方面均有顯著優勢[7]。
2.1STC算法原理
在STC算法執行中,當前幀目標中心位置設為x*,上下文特征定義為集合Xc
Xc={c(z)=(I(z),z)|z∈Ωc(x*)}
(2)
其中:I(z)定義了該點的圖像灰度;Ωc(x*)是以x*為中心的局部鄰域。當前幀跟蹤位置x相對于跟蹤目標存在的概率可表示為c(x)=P(x|o),o為跟蹤目標。根據概率公式有
c(x)=∑c(z)∈XcP(x|c(z),o)P(c(z)|o)
(3)
顯然對于當前幀上下文區域內任意位置x其置信圖由兩部分組成,P(x|c(z),o)為跟蹤區域內具備上下文特征的各點相對跟蹤目標的存在概率,P(c(z)|o)為上下文先驗概率,即跟蹤目標出現在上下文局部區域的先驗概率。
根據當前幀與前一幀相關性可知,距前一幀中目標所在位置較近的點在當前幀中屬于目標區域的可能性越大,并且其可能在一定范圍內,滿足距離目標中心位置越近其存在可能性越大,一般認為該分布滿足高斯分布,在STC跟蹤器中,使用了簡化的高斯分布,并將置信圖函數表示為
c(x)=∑c(z)∈XcP(x|c(z),o)P(c(z)|o)=
∑c(z)∈Xchsc(x-z)I(z)wσ(z-x*)=
hsc(x)?(I(x)wσ(x-x*))
(4)
F(c(x))=F(hsc(x))⊙F(I(z)wσ(z-x*))
(5)
其中:F代表快速傅里葉變換;⊙表示像素乘積。
STC跟蹤器將圖像跟蹤問題轉化為非參數估計問題,并通過FFT求解置信圖極值獲取新一幀圖像跟蹤目標位置。
2.2自適應尺度STC算法設計
根據式(5)可知置信度與某像素點的二維卷積有關,對式(4)做適當改動。設上下文區域集合Xc={c(z)=(I(z),z)|z∈Ωc(x*)}中某像素點為z(x,y),記
(6)


(7)
為文獻[8]提出Harris角點協方差矩陣。
根據式(7)中Harris角點和STC跟蹤器在目標判別方法上的相似性,本文提出使用Harris角點表征STC算法中的特征分布情況,并根據包含跟蹤目標特征角點最多的凸包確定初始化目標的尺度,通過角點分布確定跟蹤中心點位置。在圖形學中,常用凸包表示可以將所有具備特征的點集包圍的凸多邊形。采用Graham掃描法獲取包圍風機角點的凸包。
在實時巡檢視頻中為實現在線逐幀更新STC尺度,將尺度算法更新如下
1)跟蹤窗尺寸、尺度參數初始化
(8)
其中:S(Ω(h(xi)))為獲得的目標特征聚類角點多邊形的面積;S0為初始化跟蹤區域面積;η取1.5~2.5之間較為合適;k文中設定為1/S(Ω(h(xi)))。
2)在線更新尺度參數。其中引入尺度參數變化率vσ用于表征尺度變化速度,如尺度變化超過閾值,則此時跟蹤器跟蹤效果較差,需重新執行步驟1),設置跟蹤窗面積和尺度參數,未超過閾值情況下尺度參數在線更新方法如下
(9)

設當前幀像平面內目標中心坐標為(ucurrent,vcurrent),像平面中心坐標為(ucenter,vcenter),則像平面內水平和豎直方向目標需要移動的像素分別為
(Δu,Δv)=(ucurrent-ucenter,vcurrent-vcenter)
(10)
需要將像平面的移動距離轉化為云臺在方位偏航角和俯仰角的轉動角度,建立基于小孔成像模型的相機成像數學模型,如圖3所示。

圖3 相機成像原理圖
根據相機的視場計算公式
FOV=2arctan(D/2f)(D=W,H)
(11)
其中:W和H分別是拍攝設備像平面圖像水平和豎直方向的像素值大小, f為拍攝設備鏡頭焦距。根據式(11)得到目標偏移成像公式

(12)
其中:α和β分別為拍攝設備在水平和豎直方向上拍攝視角,根據式(12)有

(13)
式(13)說明了云臺在俯仰和方位偏航方向上角度的調整值與當前幀目標中心位置與像平面中心位置的像素差之間的轉換關系。目前航拍設備采用的拍攝設備拍攝視角94°,已達到廣角鏡頭的標準??梢钥闯鲈婆_的轉動對目標在像平面成像位置影響較大,因此實現對目標成像位置的實時調整非常重要。
圖4展示了自主航拍系統客戶端界面,界面中“Captrue”按鈕用于啟動對航拍視頻的顯示跟蹤,“Record”則將實時保存接收、緩沖到的視頻數據,“ImagePro”用于觸發圖像處理算法,滑動條用于手動控制云臺俯仰角度上下調整。為了說明STC跟蹤算法實際效果,圖5為Meanshift、原始STC、改進STC跟蹤算法在實際航拍目標跟蹤過程中跟蹤效果測試和對比。圖中虛線跟蹤窗為Meanshift算法,深色實線跟蹤窗為原始STC算法,淺色實線跟蹤窗為改進STC算法。航拍場景為無人機進行旋轉以改變飛行方向,同時需要航拍系統繼續跟蹤目標,此時無人機旋轉速度可達1.5 πrad/s,對跟蹤算法執行效率和穩定性要求極高。由于初始幀可以正面拍攝到風機,因此分機形狀較為分散,改進STC跟蹤器的初始化跟蹤窗口面積比原始算法要大,與原始STC跟蹤器在旋轉中后期丟失目標相比,改進的STC算法可以實現目標完整的跟蹤,且跟蹤誤差趨于平穩。Meanshift算法誤差開始較小,但隨著拍攝角度和距離發生變化,造成目標顏色特征變化,Meanshift算法跟蹤誤差無法趨于穩定,而STC跟蹤器和改進STC跟蹤器對于目標的形變和形態變化不敏感,可以穩健跟蹤。

圖4 控制終端界面(截圖)

圖5 飛行器旋轉下跟蹤算法效果
定義跟蹤誤差計算方式為
(14)

本文搭建了基于DJI Mobile SDK的無人機自主跟蹤航拍云臺控制終端,研究了基于STC框架的適應實際電力行業航拍巡檢的目標跟蹤算法。在iOS開發環境下采用OpenGL ES對視頻進行渲染、顯示,采用GCD方式避免了視頻播放、圖像處理、云臺控制等線程擁堵,在Opencv for iOS基礎上,實現了自適應尺度的STC跟蹤算法,有效解決了航拍目標在遮擋、尺度變化、航拍無人機旋轉、目標重疊等情況下跟蹤效果下降的問題,實現了航拍巡檢系統在不同場景下對目標的跟蹤。
[1]MIGUEL A, PASCUAL C, CAROL M, et al. A pan-tilt camera fuzzy vision controller on an unmanned aerial vehicle [C]// Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems.[S.l.]:IEEE, 2009:2879-2884.
[2]ZHANG K H, ZHANG L, YANG M H. A Fast compressive tracking [J].IEEE transactions on pattern analysis and machine intelligence, 2014, 36(10): 2002-2015.
[3]ZHANG K H, ZHANG L, LIU Q S, et al. Fast visual tracking via dense spatio-temporal context learning [C]//Proc.ECCV 2014. Czech Republic: Springer, 2014:127-141.
[4]趙紅超,李琦,韓瑾,等.基于Andriod平臺的實時監控系統客戶端設計[J].電視技術,2015,39(20):111-115.
[5]楊揚.iOS系統上基于P2P的視頻直播功能的設計與實現[D]. 北京:北京郵電大學,2014.
[6]楊正洪,蘇偉基.iPhone應用程序設計開發[M].北京:清華大學出版社,2007.
[7]徐建強,陸耀.一種基于加權時空上下文的魯棒視覺跟蹤算法[J].自動化學報,2015,41(9):1901-1911.
[8]HARRIS C, STEPHENS M. A combined corner and edge detector [C]// Proc. the 4th Alvey Vision Conference. [S.l.]:IEEE,1988:52-59.
褚世沖(1990— ),碩士生,主研嵌入式系統設計與圖像處理;
徐耀良(1953— ),碩士生導師,教授級高級工程師,主要研究方向為過程檢測與儀表;
孫振宇(1986— ),國家電網上海松江電力公司,本科,高級工,主研電力巡檢、調度自動化;
楊寧(1976— ),博士,教授,碩士生導師,主要研究方向為電網運行中設備測量與控制、車輛導航與調度及智能算法。
責任編輯:閆雯雯
Design of autonomous aerial inspection client based on iOS devices
CHU Shichong1, XU Yaoliang1,SUN Zhenyu2,YANG Ning1
(1.CollegeofAutomationEngineering,ShanghaiUniversityofElectricPower,Shanghai200082,China;2.ShanghaiSongjiangElectricPowerSupplyCompany,StateGridCorporationofChina,Shanghai201600,China)
A new design scheme of autonomous aerial inspection client based on iOS devices and object tracking algorithm for the complex and inefficient operation of traditional inspection system is presented. The communication link between the UAV, gimbal, wireless transmission system and the UAV controller is completed by Mobile SDK. Use FFmpeg lib in the decoding process. The adaptive scale STC (spatio-temporal context) algorithm which can update scale parameters according to the tracking windows dimension changing for object tracking is proposed. The experimental results show that the new client enhances the tracking stability comparing with the original inspection system in complex background situation, improves the efficiency of UVA inspection system.
unmanned aerial vehicle inspection; spatio-temporal context; iOS; mobile SDK; adaptive scale
TN919.8
ADOI: 10.16280/j.videoe.2016.10.012
2016-01-22
文獻引用格式:褚世沖,徐耀良,孫振宇,等. 基于iOS設備的自主航拍巡檢控制終端的設計[J].電視技術,2016,40(10):55-59.
CHU S C, XU Y L, SUN Z Y, et al. Design of autonomous aerial inspection client based on iOS devices [J]. Video engineering,2016,40(10)55-59.