褚世沖,徐耀良,孫振宇,楊 寧
(1.上海電力學(xué)院 自動化工程學(xué)院,上海 200082;2.國家電網(wǎng)上海松江供電公司,上海 201600)
?
基于iOS設(shè)備的自主航拍巡檢控制終端的設(shè)計(jì)
褚世沖1,徐耀良1,孫振宇2,楊寧1
(1.上海電力學(xué)院 自動化工程學(xué)院,上海 200082;2.國家電網(wǎng)上海松江供電公司,上海 201600)
針對無人機(jī)航拍巡檢操作繁瑣、效率低下等問題,提出了一種基于iOS設(shè)備和圖像跟蹤算法的無人機(jī)自主航拍巡檢控制終端。使用無人機(jī)控制軟件開發(fā)包搭建了終端與無人機(jī)、航拍云臺、無線圖像傳輸設(shè)備、無人機(jī)控制器之間的通信鏈路。基于FFmpeg實(shí)現(xiàn)視頻解碼,提出了基于自適應(yīng)尺度的時(shí)空上下文跟蹤算法,引入尺度參數(shù)變化率以在線糾正更新尺度參數(shù)的過激變化,大幅增強(qiáng)了航拍云臺在復(fù)雜背景下的跟蹤穩(wěn)定性,實(shí)現(xiàn)了無人機(jī)航拍系統(tǒng)對不同尺度目標(biāo)的自主、穩(wěn)定跟蹤,提高了航拍巡檢效率。
無人機(jī)巡檢;時(shí)空上下文;iOS;軟件開發(fā)包;自適應(yīng)尺度
隨著多旋翼無人機(jī)相關(guān)技術(shù)的成熟和功能擴(kuò)展,無人機(jī)已不是封閉、單一的飛行工具,而是集成了飛行控制、云臺控制、航拍攝像、無線圖像傳輸、無線控制、在線路徑規(guī)劃等功能于一身,成為了飛行航拍平臺。使用航拍無人機(jī)用于電力行業(yè)設(shè)備巡檢是解決傳統(tǒng)巡檢任務(wù)效率低下、周期長、安全性差等問題的有效嘗試。但是由于目前多旋翼無人機(jī)系統(tǒng)不是針對巡檢場景設(shè)計(jì)的,使用無人機(jī)進(jìn)行設(shè)備巡檢往往操作繁瑣、效率低下,無法取得預(yù)期巡檢效果,阻礙了無人機(jī)在這些領(lǐng)域的應(yīng)用發(fā)展。基于無人機(jī)控制軟件開發(fā)工具包(Software Development Kit,SDK)構(gòu)建適應(yīng)航拍巡檢任務(wù)要求的控制終端可以擴(kuò)展無人機(jī)的控制方式,提高無人機(jī)自動化程度,使無人機(jī)成為航拍巡檢系統(tǒng)。
本文在iOS設(shè)備及其開發(fā)環(huán)境下,提出了基于圖像跟蹤算法的無人機(jī)自主航拍巡檢系統(tǒng)。在iOS的MVC(Model View Controller)開發(fā)模式下,使用DJI Mobile SDK提供的控制軟件接口,構(gòu)建iOS控制終端與無人機(jī)之間的通信鏈路,在Xcode開發(fā)環(huán)境下調(diào)用FFmpeg庫并基于H.264標(biāo)準(zhǔn)對實(shí)時(shí)獲取的無人機(jī)航拍視頻解碼,基于OpenGL ES For iOS圖像庫進(jìn)行視頻顯示,重點(diǎn)提出高效的改進(jìn)STC跟蹤算法實(shí)現(xiàn)對巡檢目標(biāo)的實(shí)時(shí)跟蹤以獲得目標(biāo)在像平面的位置。根據(jù)目標(biāo)成像位置與像平面中心的偏差,自動調(diào)整航拍云臺方位偏航角和俯仰角,使目標(biāo)時(shí)刻處于像平面中心[1],實(shí)現(xiàn)對巡檢目標(biāo)的自主航拍跟蹤。
文中使用的自主航拍系統(tǒng)客戶端基于DJI于2015年5月推出的Mobile SDK APIs,該系列SDK開放了相機(jī)、云臺、飛行姿態(tài)、地面站控制、電池、信號、航點(diǎn)信息等接口,因此本系統(tǒng)具備了改變無人機(jī)相機(jī)航拍參數(shù)、操控云臺、獲取飛行器飛行姿態(tài)以及航拍目標(biāo)視頻等功能。系統(tǒng)核心為兩大模塊,分別為飛行器云臺控制模塊和基于自適應(yīng)尺度的STC目標(biāo)跟蹤算法[2-3]??傮w功能框架如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
基本流程為:首先iOS設(shè)備通過USB通信接口與無人機(jī)控制器連接,機(jī)載無線圖像傳輸系統(tǒng)將航拍相機(jī)原始YUV格式視頻圖像基于FFmpeg庫實(shí)現(xiàn)H.264標(biāo)準(zhǔn)的壓縮和傳輸[4],iOS設(shè)備由無人機(jī)控制器獲取接收視頻原始幀,并進(jìn)行標(biāo)準(zhǔn)解碼、顯示、格式轉(zhuǎn)換。在UIImageview對象下[5],調(diào)用了自適應(yīng)尺度的STC跟蹤器對Mat格式視頻圖像信息進(jìn)行目標(biāo)跟蹤,獲得跟蹤目標(biāo)的中心位置,根據(jù)該位置坐標(biāo)和像平面中心的誤差,云臺動作控制模塊生成云臺角度調(diào)整參數(shù)并對云臺進(jìn)行角度調(diào)整,完成一幀的視頻處理過程。
1.1圖像傳輸與顯示模塊
DJI Phantom3飛行器的航拍設(shè)備拍攝的視頻分辨率為3 840×2 160,采用H.264標(biāo)準(zhǔn)進(jìn)行視頻編碼,并通過無線圖像傳輸系統(tǒng)進(jìn)行無線傳輸。為完成對該編碼視頻的解碼、顯示、處理,在Xcode開發(fā)環(huán)境下,在鏈接庫中添加FFmpeg的頭文件和.a格式靜態(tài)庫文件[6],在Frameworks下,添加DJI Mobile SDK相關(guān)庫,包括DJISDK.framework和libz.dylib。在視頻解析、顯示函數(shù)中定義基于H.264標(biāo)準(zhǔn)的視頻接收、解碼部分代碼位于SDK中VideoFrameExtractor.m和ViewPreviewer.mm,視頻的顯示函數(shù)位于MovieGLView.m內(nèi)。
通過調(diào)用OpenGL庫中GLView控件實(shí)現(xiàn)圖像的渲染,使用接口函數(shù)_glView render:_renderYUVFrame[]完成對YUV格式視頻幀的渲染。在實(shí)際渲染中由于iOS不支持直接渲染YUV顏色制式圖像,視頻解碼后首先進(jìn)行了由YUV到RGB顏色制式的轉(zhuǎn)換。轉(zhuǎn)換涉及公式如下
(1)
為實(shí)現(xiàn)圖像處理算法對圖像的調(diào)用,在ViewPreviewer.mm增加了基于UIImageView控件,以上圖像格式轉(zhuǎn)換流程如圖2所示。
圖2 格式轉(zhuǎn)換流程圖
1.2圖像處理算法
圖像處理算法模塊是實(shí)現(xiàn)自主航拍跟蹤的核心,為了提高算法實(shí)時(shí)性和穩(wěn)定性,系統(tǒng)基于Opencv For iOS實(shí)現(xiàn)STC跟蹤算法,Opencv是一種包含了常見圖像幾何變換、濾波、分割、特征提取等操作的開源方案,具有較好的跨平臺運(yùn)行性能和優(yōu)異的執(zhí)行效率,在Xcode平臺下進(jìn)行C++ /Object-C混合編程。
在Xcode的Building Phase Framework下添加Opencv2.framework,在ViewPreviewer.mm頭文件中添加Opencv相關(guān)頭文件,創(chuàng)建基于UIImageview控件的跟蹤視頻顯示,實(shí)現(xiàn)方法為創(chuàng)建UIImageview對象UIImage *image,并通過調(diào)用CGRecmake()對image. frame 屬性進(jìn)行設(shè)置。完成UIImageview的創(chuàng)立后,使用delegate方式實(shí)現(xiàn)對圖像處理算法的調(diào)用,使用GCD(Grand Center Dispatch)dispatch_async方式完成對主線程的分配,方式如下:
dispatch_async(dispatch_get_main_queue(), ^{
};
對H.264標(biāo)準(zhǔn)視頻解碼、顯示、處理需要進(jìn)行高復(fù)雜度、多線程運(yùn)算,對iOS應(yīng)用程序、CPU負(fù)擔(dān)極大,其中一個(gè)堵塞會引起視頻卡頓甚至程序崩潰,這對iOS應(yīng)用程序的多線程設(shè)計(jì)提出了較高要求。本系統(tǒng)使用iOS多核多線程特有的GCD任務(wù)并行執(zhí)行線程池解決方案,該技術(shù)能夠根據(jù)系統(tǒng)負(fù)載自動增減線程數(shù)量,并且實(shí)現(xiàn)方式簡單,占用資源極少,有效避免了視頻卡頓和線程擁堵。
Delegate切合iOS的MVC、單線繼承編程思想,可以使主線程中對象更加規(guī)范化同時(shí)滿足對多重場景的及時(shí)響應(yīng)。在主線程中調(diào)用圖像處理算法前,將UIImage格式圖片轉(zhuǎn)換為Mat格式以適應(yīng)Opencv中特殊制式的圖像處理操作,調(diào)用方式為:
UIImageToMat(image,matImage);
轉(zhuǎn)換完成后,調(diào)用processImage:matImage完成圖像跟蹤算法,當(dāng)外部再次觸發(fā)設(shè)置的delegate則結(jié)束圖像處理,將圖像轉(zhuǎn)換為UIImage進(jìn)行顯示,完成主線程任務(wù)。
1.3云臺控制接口
在Gimbal.m文件中定義了云臺方位偏航角和俯仰角控制函數(shù)接口,其實(shí)現(xiàn)函數(shù)分別為:
-(void) onGimbalAttitudeYawRotationForward;
-(void) onGimbalAttitudeYawRotationBackward;
-(void) onGimbalAttitudeScrollUp;
-(void) onGimbalAttitudeScrollDown;
分別用于設(shè)置方位偏航角度向前、向后,俯仰角度向上、向下。以俯仰角度向上調(diào)整為例,其具體實(shí)現(xiàn)方式如下:
首先在以上函數(shù)內(nèi)進(jìn)行云臺角度調(diào)整結(jié)構(gòu)體參數(shù)設(shè)置DJIGimbalRotation pitch = {YES, 15, RelativeAngle, RotationForward};
調(diào)用setGimbalPitch完成角度設(shè)定命令的發(fā)送setGimbalPitch:pitch Roll:roll Yaw:yaw withResult:nil。
圖像跟蹤算法是自主航拍系統(tǒng)實(shí)現(xiàn)的核心任務(wù),要求算法具備良好的實(shí)時(shí)性、穩(wěn)定性,同時(shí)能以較高成功率完成對目標(biāo)的跟蹤。STC跟蹤器是由Zhang等于2014年提出的基于貝葉斯框架下的高效目標(biāo)跟蹤算法,與目前常用的Meanshift、尺度不變特征等跟蹤算法相比,在執(zhí)行效率、抗遮擋能力、對目標(biāo)尺度變化的適應(yīng)性等方面均有顯著優(yōu)勢[7]。
2.1STC算法原理
在STC算法執(zhí)行中,當(dāng)前幀目標(biāo)中心位置設(shè)為x*,上下文特征定義為集合Xc
Xc={c(z)=(I(z),z)|z∈Ωc(x*)}
(2)
其中:I(z)定義了該點(diǎn)的圖像灰度;Ωc(x*)是以x*為中心的局部鄰域。當(dāng)前幀跟蹤位置x相對于跟蹤目標(biāo)存在的概率可表示為c(x)=P(x|o),o為跟蹤目標(biāo)。根據(jù)概率公式有
c(x)=∑c(z)∈XcP(x|c(z),o)P(c(z)|o)
(3)
顯然對于當(dāng)前幀上下文區(qū)域內(nèi)任意位置x其置信圖由兩部分組成,P(x|c(z),o)為跟蹤區(qū)域內(nèi)具備上下文特征的各點(diǎn)相對跟蹤目標(biāo)的存在概率,P(c(z)|o)為上下文先驗(yàn)概率,即跟蹤目標(biāo)出現(xiàn)在上下文局部區(qū)域的先驗(yàn)概率。
根據(jù)當(dāng)前幀與前一幀相關(guān)性可知,距前一幀中目標(biāo)所在位置較近的點(diǎn)在當(dāng)前幀中屬于目標(biāo)區(qū)域的可能性越大,并且其可能在一定范圍內(nèi),滿足距離目標(biāo)中心位置越近其存在可能性越大,一般認(rèn)為該分布滿足高斯分布,在STC跟蹤器中,使用了簡化的高斯分布,并將置信圖函數(shù)表示為
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跟蹤器將圖像跟蹤問題轉(zhuǎn)化為非參數(shù)估計(jì)問題,并通過FFT求解置信圖極值獲取新一幀圖像跟蹤目標(biāo)位置。
2.2自適應(yīng)尺度STC算法設(shè)計(jì)
根據(jù)式(5)可知置信度與某像素點(diǎn)的二維卷積有關(guān),對式(4)做適當(dāng)改動。設(shè)上下文區(qū)域集合Xc={c(z)=(I(z),z)|z∈Ωc(x*)}中某像素點(diǎn)為z(x,y),記
(6)
(7)
為文獻(xiàn)[8]提出Harris角點(diǎn)協(xié)方差矩陣。
根據(jù)式(7)中Harris角點(diǎn)和STC跟蹤器在目標(biāo)判別方法上的相似性,本文提出使用Harris角點(diǎn)表征STC算法中的特征分布情況,并根據(jù)包含跟蹤目標(biāo)特征角點(diǎn)最多的凸包確定初始化目標(biāo)的尺度,通過角點(diǎn)分布確定跟蹤中心點(diǎn)位置。在圖形學(xué)中,常用凸包表示可以將所有具備特征的點(diǎn)集包圍的凸多邊形。采用Graham掃描法獲取包圍風(fēng)機(jī)角點(diǎn)的凸包。
在實(shí)時(shí)巡檢視頻中為實(shí)現(xiàn)在線逐幀更新STC尺度,將尺度算法更新如下
1)跟蹤窗尺寸、尺度參數(shù)初始化
(8)
其中:S(Ω(h(xi)))為獲得的目標(biāo)特征聚類角點(diǎn)多邊形的面積;S0為初始化跟蹤區(qū)域面積;η取1.5~2.5之間較為合適;k文中設(shè)定為1/S(Ω(h(xi)))。
2)在線更新尺度參數(shù)。其中引入尺度參數(shù)變化率vσ用于表征尺度變化速度,如尺度變化超過閾值,則此時(shí)跟蹤器跟蹤效果較差,需重新執(zhí)行步驟1),設(shè)置跟蹤窗面積和尺度參數(shù),未超過閾值情況下尺度參數(shù)在線更新方法如下
(9)
設(shè)當(dāng)前幀像平面內(nèi)目標(biāo)中心坐標(biāo)為(ucurrent,vcurrent),像平面中心坐標(biāo)為(ucenter,vcenter),則像平面內(nèi)水平和豎直方向目標(biāo)需要移動的像素分別為
(Δu,Δv)=(ucurrent-ucenter,vcurrent-vcenter)
(10)
需要將像平面的移動距離轉(zhuǎn)化為云臺在方位偏航角和俯仰角的轉(zhuǎn)動角度,建立基于小孔成像模型的相機(jī)成像數(shù)學(xué)模型,如圖3所示。
圖3 相機(jī)成像原理圖
根據(jù)相機(jī)的視場計(jì)算公式
FOV=2arctan(D/2f)(D=W,H)
(11)
其中:W和H分別是拍攝設(shè)備像平面圖像水平和豎直方向的像素值大小, f為拍攝設(shè)備鏡頭焦距。根據(jù)式(11)得到目標(biāo)偏移成像公式
(12)
其中:α和β分別為拍攝設(shè)備在水平和豎直方向上拍攝視角,根據(jù)式(12)有
(13)
式(13)說明了云臺在俯仰和方位偏航方向上角度的調(diào)整值與當(dāng)前幀目標(biāo)中心位置與像平面中心位置的像素差之間的轉(zhuǎn)換關(guān)系。目前航拍設(shè)備采用的拍攝設(shè)備拍攝視角94°,已達(dá)到廣角鏡頭的標(biāo)準(zhǔn)??梢钥闯鲈婆_的轉(zhuǎn)動對目標(biāo)在像平面成像位置影響較大,因此實(shí)現(xiàn)對目標(biāo)成像位置的實(shí)時(shí)調(diào)整非常重要。
圖4展示了自主航拍系統(tǒng)客戶端界面,界面中“Captrue”按鈕用于啟動對航拍視頻的顯示跟蹤,“Record”則將實(shí)時(shí)保存接收、緩沖到的視頻數(shù)據(jù),“ImagePro”用于觸發(fā)圖像處理算法,滑動條用于手動控制云臺俯仰角度上下調(diào)整。為了說明STC跟蹤算法實(shí)際效果,圖5為Meanshift、原始STC、改進(jìn)STC跟蹤算法在實(shí)際航拍目標(biāo)跟蹤過程中跟蹤效果測試和對比。圖中虛線跟蹤窗為Meanshift算法,深色實(shí)線跟蹤窗為原始STC算法,淺色實(shí)線跟蹤窗為改進(jìn)STC算法。航拍場景為無人機(jī)進(jìn)行旋轉(zhuǎn)以改變飛行方向,同時(shí)需要航拍系統(tǒng)繼續(xù)跟蹤目標(biāo),此時(shí)無人機(jī)旋轉(zhuǎn)速度可達(dá)1.5 πrad/s,對跟蹤算法執(zhí)行效率和穩(wěn)定性要求極高。由于初始幀可以正面拍攝到風(fēng)機(jī),因此分機(jī)形狀較為分散,改進(jìn)STC跟蹤器的初始化跟蹤窗口面積比原始算法要大,與原始STC跟蹤器在旋轉(zhuǎn)中后期丟失目標(biāo)相比,改進(jìn)的STC算法可以實(shí)現(xiàn)目標(biāo)完整的跟蹤,且跟蹤誤差趨于平穩(wěn)。Meanshift算法誤差開始較小,但隨著拍攝角度和距離發(fā)生變化,造成目標(biāo)顏色特征變化,Meanshift算法跟蹤誤差無法趨于穩(wěn)定,而STC跟蹤器和改進(jìn)STC跟蹤器對于目標(biāo)的形變和形態(tài)變化不敏感,可以穩(wěn)健跟蹤。
圖4 控制終端界面(截圖)
圖5 飛行器旋轉(zhuǎn)下跟蹤算法效果
定義跟蹤誤差計(jì)算方式為
(14)
本文搭建了基于DJI Mobile SDK的無人機(jī)自主跟蹤航拍云臺控制終端,研究了基于STC框架的適應(yīng)實(shí)際電力行業(yè)航拍巡檢的目標(biāo)跟蹤算法。在iOS開發(fā)環(huán)境下采用OpenGL ES對視頻進(jìn)行渲染、顯示,采用GCD方式避免了視頻播放、圖像處理、云臺控制等線程擁堵,在Opencv for iOS基礎(chǔ)上,實(shí)現(xiàn)了自適應(yīng)尺度的STC跟蹤算法,有效解決了航拍目標(biāo)在遮擋、尺度變化、航拍無人機(jī)旋轉(zhuǎn)、目標(biāo)重疊等情況下跟蹤效果下降的問題,實(shí)現(xiàn)了航拍巡檢系統(tǒng)在不同場景下對目標(biāo)的跟蹤。
[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平臺的實(shí)時(shí)監(jiān)控系統(tǒng)客戶端設(shè)計(jì)[J].電視技術(shù),2015,39(20):111-115.
[5]楊揚(yáng).iOS系統(tǒng)上基于P2P的視頻直播功能的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2014.
[6]楊正洪,蘇偉基.iPhone應(yīng)用程序設(shè)計(jì)開發(fā)[M].北京:清華大學(xué)出版社,2007.
[7]徐建強(qiáng),陸耀.一種基于加權(quán)時(shí)空上下文的魯棒視覺跟蹤算法[J].自動化學(xué)報(bào),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— ),碩士生,主研嵌入式系統(tǒng)設(shè)計(jì)與圖像處理;
徐耀良(1953— ),碩士生導(dǎo)師,教授級高級工程師,主要研究方向?yàn)檫^程檢測與儀表;
孫振宇(1986— ),國家電網(wǎng)上海松江電力公司,本科,高級工,主研電力巡檢、調(diào)度自動化;
楊寧(1976— ),博士,教授,碩士生導(dǎo)師,主要研究方向?yàn)殡娋W(wǎng)運(yùn)行中設(shè)備測量與控制、車輛導(dǎo)航與調(diào)度及智能算法。
責(zé)任編輯:閆雯雯
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
文獻(xiàn)引用格式:褚世沖,徐耀良,孫振宇,等. 基于iOS設(shè)備的自主航拍巡檢控制終端的設(shè)計(jì)[J].電視技術(shù),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.