張志杰 楊碩
摘 要:視頻監(jiān)控系統(tǒng)是計(jì)算機(jī)應(yīng)用中的重要領(lǐng)域之一。數(shù)字化攝像頭網(wǎng)絡(luò)化之后,監(jiān)控系統(tǒng)正在不斷引入新的功能,為使現(xiàn)有監(jiān)控系統(tǒng)能更好地應(yīng)對(duì)復(fù)雜環(huán)境,滿足不同監(jiān)控要求,就需要追加新功能,在系統(tǒng)架構(gòu)與設(shè)計(jì)上進(jìn)行調(diào)整。因此,如何將多個(gè)第三方軟件與現(xiàn)有監(jiān)控系統(tǒng)進(jìn)行銜接就成為需要解決的重要問題。論文以多個(gè)第三方算法庫整合為案例,分析、改進(jìn)并拓展其思路,提出一種通用的第三方軟件與現(xiàn)有監(jiān)控系統(tǒng)進(jìn)行銜接的接口設(shè)計(jì)方案。該方案中,多個(gè)第三方軟件按照系統(tǒng)功能,采用分層、分模塊的方式整合入系統(tǒng),接口按照數(shù)據(jù)類型的不同分類,功能相對(duì)獨(dú)立、標(biāo)準(zhǔn)統(tǒng)一。該方案經(jīng)實(shí)踐檢測,具有簡單、快速、高效、易于二次開發(fā)等優(yōu)點(diǎn)。
關(guān)鍵詞:智能監(jiān)控;系統(tǒng)架構(gòu);模塊化設(shè)計(jì);接口設(shè)計(jì);數(shù)據(jù)傳輸;深度相機(jī)
中圖分類號(hào):TP31文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2019)09-00-03
0 引 言
現(xiàn)有物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的功能正在日益多元化。例如后臺(tái)服務(wù)器算法與深度學(xué)習(xí)相結(jié)合,使得監(jiān)控的智能水平取得了長足進(jìn)步[1];主從-PTZ攝像頭的引入形成了多個(gè)攝像頭組,能夠完成之前單個(gè)攝像頭無法完成的工作[2];具有深度信息的攝像頭能夠從三維立體的角度重新進(jìn)行監(jiān)控[3]。同時(shí),與視頻監(jiān)控系統(tǒng)有關(guān)的其他技術(shù)也在迅猛的發(fā)展之中,例如基于FPGA,DSP芯片,每個(gè)攝像頭能夠完成若干前端處理,從而降低對(duì)通信帶寬的要求[4];基于USB 2.0數(shù)據(jù)傳輸技術(shù),可使視頻數(shù)據(jù)傳輸?shù)乃俣瘸杀短岣?基于云存儲(chǔ)技術(shù)使得視頻數(shù)據(jù)的存儲(chǔ)、訪問與相關(guān)運(yùn)算能夠并行、遠(yuǎn)程處理,同時(shí)實(shí)現(xiàn)了海量視頻數(shù)據(jù)以及相關(guān)若干技術(shù);基于GPU芯片性能的提升,視頻、圖像的處理速度較之前有了很大提高[5-6]。
對(duì)現(xiàn)有監(jiān)控系統(tǒng)而言,新的功能、應(yīng)用領(lǐng)域正在形成,而這些新應(yīng)用解決方案的實(shí)現(xiàn)既需要新的硬件,又需要新的軟件;既可以選擇自行開發(fā),也可以直接集成第三方軟硬件包。自行開發(fā)與集成第三方軟件包相比,各有優(yōu)劣。
以計(jì)算機(jī)視覺應(yīng)用中的第三方軟件包為例,現(xiàn)有第三方算法庫較多,能夠支持的應(yīng)用也較多,如目標(biāo)識(shí)別、行為檢測、深度學(xué)習(xí)、深度信息等。如果均采用自行研發(fā)的方式進(jìn)行實(shí)現(xiàn),應(yīng)用程序的穩(wěn)定性與處理速度將完全取決于開發(fā)者自身的能力與水平;如果開發(fā)者水平高,不僅能夠在功能的選擇上擁有絕對(duì)的自主權(quán),還可以通過優(yōu)化與功能裁剪實(shí)現(xiàn)更高的系統(tǒng)穩(wěn)定性與運(yùn)行速度;但如果研發(fā)者水平受限,則程序的表現(xiàn)將無法預(yù)測。
系統(tǒng)集成直接使用第三方軟件包,其程序代碼的編寫水平完全取決于第三方軟件包,在搭設(shè)系統(tǒng)的同時(shí),其應(yīng)用服務(wù)的質(zhì)量是同質(zhì)化的,難分伯仲;對(duì)用戶的服務(wù)支持則完全取決于第三方軟件包,無過多自主權(quán)。
至于涉及的第三方硬件的軟件開發(fā)包無需多言,絕大多數(shù)研發(fā)者都無力進(jìn)行新硬件的設(shè)計(jì)、制造與相應(yīng)軟件開發(fā),均以使用第三方硬件為主。
1 深度相機(jī)
以深度算法的應(yīng)用作為案例進(jìn)行現(xiàn)有視頻系統(tǒng)接口的案例解析。
在原有視頻監(jiān)控系統(tǒng)中添加深度信息,需要進(jìn)行相關(guān)功能的研發(fā),首先需要硬件的支持,而新的硬件往往自帶第三方開發(fā)包,可供開發(fā)者二次開發(fā)。
深度相機(jī)(又名3D相機(jī))是指可通過距離信息獲取物體之間的位置關(guān)系,能夠區(qū)分前景與后景;使用相機(jī)獲取的深度信息對(duì)目標(biāo)圖像的分割、標(biāo)記、識(shí)別、跟蹤等傳統(tǒng)應(yīng)用仍然有效,而且可以根據(jù)深度信息進(jìn)行改進(jìn)與提高;借助深度信息與2D相機(jī)無法獲取數(shù)據(jù)與信息,但進(jìn)行算法的設(shè)計(jì)與改進(jìn)后便能夠快速完成對(duì)目標(biāo)的識(shí)別與追蹤,進(jìn)行復(fù)雜目標(biāo)的狀態(tài)行為判讀[7-8]。
目前深度相機(jī)包括TOF(Time of Fligh,TOF)、結(jié)構(gòu)光、激光掃描等,主要用于機(jī)器人、互動(dòng)游戲等。其中較多指TOF相機(jī)[9-10],微軟第二代Kinect v2采用的就是TOF技術(shù),在30 fps條件下能夠?qū)崿F(xiàn)1 920×1 080的顏色分辨率、512×424的深度分辨率,最多支持6人的姿態(tài)識(shí)別,每人25個(gè)關(guān)節(jié)點(diǎn),檢測范圍最遠(yuǎn)可達(dá)4 m,水平有效角度最大為70°,垂直有效角度最大為60°。
以激光散斑圖像深度信息獲取方法為例,深度相機(jī)實(shí)現(xiàn)這些功能的工作原理:經(jīng)過圖像預(yù)處理后的輸入散斑圖和參考散斑圖寫入多條行形成輸入散斑窗、參考散斑窗,在輸入散斑窗中提取中心相同、窗口大小不同的圖像塊,對(duì)應(yīng)參考散斑窗的匹配散斑窗,以搜索策略并且求最小SAD方法,搜索最佳匹配塊,得到最佳偏移量,再通過參考閾值進(jìn)行篩選,自適應(yīng)選擇某一圖像塊對(duì)應(yīng)的最佳偏移量作為當(dāng)前圖像塊中心點(diǎn)的最佳偏移量,然后通過深度計(jì)算公式得到其深度信息[11-12]。
由上可見,該方法涉及的數(shù)學(xué)公式較多,運(yùn)算量較大,同時(shí),類似30 fps條件的視頻參數(shù)對(duì)相關(guān)計(jì)算的實(shí)時(shí)性提出了較高要求?,F(xiàn)在一般的解決方案為依靠FPGA,DSP進(jìn)行相關(guān)運(yùn)算,這就涉及到了與硬件相關(guān)的第三方開發(fā)包。
以第三方OpenCV軟件包與硬件相關(guān)的HLS算法庫進(jìn)行接口設(shè)計(jì)層次化、模塊化說明。
2 接口的層次化、模塊化設(shè)計(jì)
現(xiàn)有視頻監(jiān)控系統(tǒng)在進(jìn)行接口層次化、模塊化設(shè)計(jì)時(shí)可以參考HLS算法庫與OpenCV軟件包進(jìn)行集成的案例。在該案例應(yīng)用中,支持深度相機(jī)的系統(tǒng)被設(shè)計(jì)用來實(shí)現(xiàn)深度相關(guān)算法。
Vivado高層次綜合(Vivado High-Level Synthesis,HLS)在所有HLx版本中可直接使用C,C++以及System C語言規(guī)范對(duì)Xilinx可編程器件進(jìn)行編程,HLS使系統(tǒng)和設(shè)計(jì)架構(gòu)師支持ISE?和Vivado設(shè)計(jì)環(huán)境,無需手動(dòng)創(chuàng)建RTL便能夠快速創(chuàng)建IP,包含HLS流庫,HLS Math,HLS視頻,HLS IP,HLS線性代數(shù),HLS DSP庫等內(nèi)容。HLS在該案例中的主要功能是利用硬件加速相應(yīng)的OpenCV應(yīng)用。
OpenCV(Open Source Computer Vision Library,OpenCV)是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫,可運(yùn)行在Linux,Windows,Android和Mac OS操作系統(tǒng)上。OpenCV輕量級(jí)且高效—由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供Python,Ruby,Matlab等語言接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的諸多通用算法。OpenCV在該案例中的主要功能是進(jìn)行深度信息相關(guān)算法設(shè)計(jì)與應(yīng)用。系統(tǒng)層結(jié)構(gòu)與模塊接口示意如圖1所示。
由圖1可知,不同第三方庫進(jìn)行集成時(shí),彼此之間的業(yè)務(wù)流按照數(shù)據(jù)類型的不同需要選擇不同的接口—在OpenCV與HLS之間進(jìn)行圖像處理時(shí)需要Axivideo2Mat與Mat2Axivideo接口。而在OpenCV與HLS之間進(jìn)行視頻處理時(shí),僅需Mat2Axivideo接口。其接口類型根據(jù)數(shù)據(jù)類型的不同而變化。OpenCV與HLS部分接口函數(shù)示意如圖2所示。
從圖2中可以看出,在視頻與圖像分析的應(yīng)用中,為能夠充分利用深度相機(jī)的深度信息,需要OpenCV與HLS各自按照數(shù)據(jù)類型的不同采用不同的接口函數(shù)進(jìn)行處理,并根據(jù)需要進(jìn)行不同數(shù)據(jù)類型之間的轉(zhuǎn)換,例如從Mat到video,從Mat到hlsMat,或者從video到Mat,從hlsMat到Mat。
由此可見,接口就是進(jìn)行的一系列數(shù)據(jù)類型轉(zhuǎn)換,轉(zhuǎn)換的最終目的是為不同算法提供符合其輸入要求的數(shù)據(jù)。
3 數(shù)據(jù)接口的標(biāo)準(zhǔn)化
接口(Interface)是一系列操作的集合,在軟件架構(gòu)中,強(qiáng)調(diào)模塊之間的數(shù)據(jù)交換操作。為拓展模塊應(yīng)用范圍、進(jìn)行二次開發(fā)、與其他系統(tǒng)集成,尤其要適應(yīng)未來的技術(shù)趨勢,就需要進(jìn)行數(shù)據(jù)接口的標(biāo)準(zhǔn)化[8]。
數(shù)據(jù)接口的標(biāo)準(zhǔn)化首先需要明確數(shù)據(jù)的類型。在視頻監(jiān)控系統(tǒng)中,有效數(shù)據(jù)類型主要包括圖像、視頻以及其他數(shù)據(jù)、狀態(tài)數(shù)據(jù)四大類。作為數(shù)據(jù)接口的標(biāo)準(zhǔn)化內(nèi)容之一,首先需要統(tǒng)一的內(nèi)容較多,如圖像大小、圖像類型、視頻幀數(shù)、色彩模型、數(shù)據(jù)格式、數(shù)據(jù)長度、數(shù)據(jù)實(shí)時(shí)性等,數(shù)據(jù)類型與業(yè)務(wù)流程相同,是進(jìn)行劃分的兩大要素。
對(duì)不同型號(hào)、不同設(shè)備、不同參數(shù)的視頻,需根據(jù)效果以及實(shí)驗(yàn)進(jìn)行對(duì)比,降高升低。高參數(shù)設(shè)備采集的視頻信息需進(jìn)行預(yù)處理,以達(dá)到同一標(biāo)準(zhǔn);同樣,對(duì)達(dá)不到參數(shù)要求的設(shè)備,可結(jié)合金字塔法等進(jìn)行預(yù)處理,使之達(dá)到同一標(biāo)準(zhǔn)。標(biāo)準(zhǔn)統(tǒng)一后,對(duì)數(shù)據(jù)的通信速度、數(shù)據(jù)的后期處理速度、處理精確度、存儲(chǔ)速度、讀取速度等多項(xiàng)指標(biāo)都有明顯改進(jìn)。
統(tǒng)一視頻處理輸出后的數(shù)據(jù)格式是標(biāo)準(zhǔn)化的重點(diǎn)。視頻監(jiān)控系統(tǒng)采集視頻信息,然后交由后臺(tái)服務(wù)器進(jìn)行視頻信息的處理,其處理結(jié)果(系統(tǒng)輸出)是應(yīng)用層其他系統(tǒng)需要的輸入,因此需進(jìn)一步規(guī)范視頻監(jiān)控系統(tǒng)處理后的數(shù)據(jù)格式。
對(duì)視頻監(jiān)控系統(tǒng)處理后的數(shù)據(jù),可采用視頻、圖像、與文本/XML等結(jié)合的方式。其中,對(duì)視頻而言,需要規(guī)范每秒多少幀、每一幀的寬高、色彩模型、ROI位置及長寬等;對(duì)圖像而言,需要規(guī)范寬高、色彩模型、ROI位置及長寬等,這里的參數(shù)應(yīng)該與視頻參數(shù)完全吻合,只是視頻的參數(shù)多于圖像參數(shù)而已;對(duì)于文本/XML而言,需要對(duì)視頻、圖像進(jìn)行編號(hào),對(duì)應(yīng)編號(hào)保留所有視頻、圖像處理后的相關(guān)信息。
為最大限度保持算法設(shè)計(jì)上的靈活性,可對(duì)同一視頻/圖像利用算法庫進(jìn)行多種不同數(shù)據(jù)格式的轉(zhuǎn)換,通過不同的算法得到不同的輸出;與不同參數(shù)需求的新設(shè)備進(jìn)行數(shù)據(jù)通信;集成不同的第三方庫,從而較好地解決系統(tǒng)的二次開發(fā)問題。
圖3所示為一種混合第三方庫支持的車牌定位算法及其得到的車牌定位效果。對(duì)于成功定位的車牌,使用了文獻(xiàn)[13]中提到的車牌字符分割算法并將字符以二值化方式顯示。
第三方視頻處理庫為OpenCV2.4.9,在Windows 7操作系統(tǒng)上借助Qt5.0實(shí)現(xiàn),其中部分功能函數(shù)使用了GPU加速實(shí)現(xiàn)。主要硬件環(huán)境為ThinkPad x230筆記本電腦,Core i3(2.4 GHz)四核CPU,8G內(nèi)存。實(shí)驗(yàn)數(shù)據(jù)集包含800幅含車牌的圖像以及400幅不含車牌的圖像。
實(shí)驗(yàn)測試對(duì)象中包含了大部分復(fù)雜環(huán)境,如顏色干擾(“湘BY2054”和“粵JPG999”的車身均為藍(lán)色),傾斜的車牌(“粵CFL980”“遼ANB082”“粵B0PA09”),復(fù)雜的背景和光照條件(“遼M66B66”和“浙BY1V13”)等。從結(jié)果可以看出:混合第三方庫支持的車牌定位算法在復(fù)雜條件下均能夠準(zhǔn)確定位車牌,并能夠從車牌上準(zhǔn)確讀取車牌字符[13]。
4 結(jié) 語
不同第三方庫進(jìn)行集成時(shí),彼此之間的業(yè)務(wù)流需按照數(shù)據(jù)類型的不同來選擇接口。在軟件架構(gòu)中,強(qiáng)調(diào)模塊之間的數(shù)據(jù)交換操作。為拓展模塊應(yīng)用范圍、進(jìn)行二次開發(fā)、與其他系統(tǒng)集成,就需要進(jìn)行數(shù)據(jù)接口的標(biāo)準(zhǔn)化。數(shù)據(jù)接口的標(biāo)準(zhǔn)化首先需要明確數(shù)據(jù)類型,然后盡量統(tǒng)一模塊之間處理輸出的數(shù)據(jù)格式。
在系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)中采用論文中提到的解決方案,在一定程度上解決了原有系統(tǒng)架構(gòu)適應(yīng)性差、調(diào)整困難的缺陷,能夠借助分層次與模塊化手段來提高系統(tǒng)穩(wěn)定性,并借助第三方庫提高系統(tǒng)核心運(yùn)算的速度,易于二次開發(fā)。在工程應(yīng)用中,該方法可作為一種快速軟件原型開發(fā)的輔助手段,具有較為廣泛的應(yīng)用場景。
參 考 文 獻(xiàn)
[1]管皓,薛向陽,安志勇.深度學(xué)習(xí)在視頻目標(biāo)跟蹤中的應(yīng)用進(jìn)展與展望[J].自動(dòng)化學(xué)報(bào),2016,42(6):834-847.
[2] WAN D,ZHOU J,ZHANG D. A Spherical Rectification for Dual-PTZ-Camera System[C]// IEEE International Conference on Acoustics,Speech and Signal Processing. IEEE Xplore,2007:I-777-I-780.
[3]向?qū)W勤,潘志庚,童晶.深度相機(jī)在計(jì)算機(jī)視覺與圖形學(xué)上的應(yīng)用研究[J].計(jì)算機(jī)科學(xué)與探索,2011,5(6):481-492.
[4]董青,朱洪翔,祁曉鵬.基于FPGA視頻合成系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2016,24(4):247-249.
[5] MITTAL S,VETTER J S. A survey of CPU-GPU heterogeneous computing techniques [J]. Acm computing surveys,2015,47(4):69.
[6]張錦濤,趙驚濤,王真理.FPGA與GPU并行計(jì)算分析—以Kirchhoff疊前時(shí)間偏移為例[J].地球物理學(xué)進(jìn)展,2013,28(3):1464-1471.
[7]向?qū)W勤,潘志庚,童晶.深度相機(jī)在計(jì)算機(jī)視覺與圖形學(xué)上的應(yīng)用研究[J].計(jì)算機(jī)科學(xué)與探索,2011,5(6):481-492.
[8] XIANG X,PAN Z.Depth camera in computer vision and computer graphics: an overview [J]. Journal of frontiers of computer science & technology,2011,5(6):481-492.
[9]胡淼.基于TOF相機(jī)的三維點(diǎn)云地圖創(chuàng)建和可視化研究[D].長沙:湖南大學(xué),2012.
[10]張旭東,吳國松,胡良梅,等.基于TOF三維相機(jī)相鄰散亂點(diǎn)云配準(zhǔn)技術(shù)研究[J].機(jī)械工程學(xué)報(bào),2013,49(12):8-16.
[11]葛晨陽,鄭南寧,趙季中,等.一種激光散斑圖像深度感知方法及裝置,CN103810708A [P]. 2014:1-6.
[12]關(guān)柏青.基于主動(dòng)序列模糊圖像的運(yùn)動(dòng)估計(jì)和振動(dòng)測量[D].上海:上海交通大學(xué),2007.
[13]楊碩,張波,張志杰.多特征融合的車牌定位算法[J].計(jì)算機(jī)應(yīng)用,2016,36(6):1730-1734.