曹昌盛 徐磊 賴(lài)林光
華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院, 北京 102206
目前,基于個(gè)人計(jì)算機(jī)監(jiān)控平臺(tái)的視頻分析研究與開(kāi)發(fā)已經(jīng)有許多成果,但實(shí)際應(yīng)用時(shí)往往由于采集的視頻數(shù)據(jù)信息量大、網(wǎng)絡(luò)狀況不佳等原因,造成視頻數(shù)據(jù)的傳輸延遲或丟失,從而影響到了視頻分析的準(zhǔn)確性和連續(xù)性,給實(shí)時(shí)視頻監(jiān)控系統(tǒng)帶來(lái)了很大的風(fēng)險(xiǎn)[1]。
為了應(yīng)對(duì)上述問(wèn)題,我們?cè)O(shè)計(jì)了基于ADSP-BF561處理器的視頻分析前端。ADI公司的ADSP-BF561擁有兩個(gè)獨(dú)立的、增強(qiáng)的處理器內(nèi)核,每個(gè)內(nèi)核包含兩個(gè)乘/累加器(MAC),具有正交的類(lèi)似RISC的微處理器指令集,每個(gè)內(nèi)核主頻高達(dá)600MHz,并有專(zhuān)門(mén)的視頻處理指令相對(duì)應(yīng),同時(shí)具備靈活的SDRAM和CACHE結(jié)構(gòu)以供開(kāi)發(fā)使用,是一款在多媒體處理方面極具特色的芯片。ADSPBF561集成了一套通用的數(shù)字圖像處理外圍設(shè)備,為數(shù)字圖像處理和多媒體應(yīng)用創(chuàng)建了一個(gè)完整的系統(tǒng)級(jí)片上解決方案[2]。基于ADSP-BF561處理器的視頻分析前端在攝像頭采集到監(jiān)控現(xiàn)場(chǎng)的彩色圖像后開(kāi)始工作,采用雙核工作模式完成視頻分析和H.264壓縮編碼的工作。通過(guò)對(duì)原始視頻數(shù)據(jù)的分析處理以實(shí)現(xiàn)智能視頻監(jiān)控的功能,并對(duì)視頻幀數(shù)據(jù)進(jìn)行H.264編碼壓縮從而使實(shí)時(shí)地將視頻數(shù)據(jù)通過(guò)網(wǎng)絡(luò)分發(fā)成為可能。
基于ADSP-BF561的視頻分析前端的設(shè)計(jì)采用實(shí)時(shí)處理模式,通過(guò)CCD攝像頭采集到標(biāo)準(zhǔn)的PAL制式圖像信號(hào),經(jīng)過(guò)視頻編碼器ADV7180轉(zhuǎn)換為YUV格式的數(shù)字視頻碼流。視頻數(shù)據(jù)首先進(jìn)入BF561處理器前端模塊,模塊采用雙核工作模式,利用基于描述符的DMA及MDMA進(jìn)行視頻幀數(shù)據(jù)在存儲(chǔ)器間的傳輸?shù)确椒?,解決了視頻分析和視頻編碼轉(zhuǎn)發(fā)并行工作的難題。視頻前端模塊還能夠與網(wǎng)絡(luò)視頻服務(wù)器進(jìn)行無(wú)縫連接,有效地提高了監(jiān)控效率。視頻分析前端主要的處理流程如下:
(1) 利用視頻輸入模塊通過(guò)攝像頭采集到一幀圖像數(shù)據(jù)并存儲(chǔ)在SDRAM中。
(2) 在ADSP-BF561 B核進(jìn)行視頻分析工作,在ADSP-BF561 A核上完成對(duì)視頻流的H.264編碼壓縮工作,處理器的兩個(gè)內(nèi)核處于并行工作狀態(tài)。
(3) 將視頻分析結(jié)果和H.264壓縮碼流傳輸?shù)骄W(wǎng)絡(luò)視頻服務(wù)器供其轉(zhuǎn)發(fā)到監(jiān)控客戶(hù)端進(jìn)行解碼顯示。
圖1 基于ADSP-BF561的視頻處理流程圖
基于ADSP-BF561的視頻處理前端是整個(gè)智能視頻監(jiān)控功能實(shí)現(xiàn)的核心,承擔(dān)視頻分析和壓縮編碼兩個(gè)關(guān)鍵任務(wù),由視頻輸入模塊、視頻分析模塊、H.264編碼模塊、BF561與網(wǎng)絡(luò)視頻服務(wù)器數(shù)據(jù)交互模塊和雙核通信模塊組成。視頻處理前端模塊框架如圖2。
圖2 智能視頻分析前端模塊結(jié)構(gòu)框架
視頻輸入模塊負(fù)責(zé)完成視頻數(shù)據(jù)的采集,然后將采集到的圖像數(shù)據(jù)轉(zhuǎn)換成為適合編碼器編碼的YUV(4:2:2)格式,并通過(guò)PPI利用DMA方式將其填充到指定的視頻幀緩沖區(qū)中。
視頻分析模塊的設(shè)計(jì)和實(shí)現(xiàn)主要采用ADI公司提供的視頻分析工具包(Video Analytics Toolbox,VAT)[3],而其又依賴(lài)于圖像處理工具包(Image Processing Toolbox)[4]。Blackfin圖像處理工具包是一組圖像處理基本元素,用來(lái)幫助在Blackfin上快速開(kāi)發(fā)復(fù)雜的圖像和視頻處理應(yīng)用。而分類(lèi)器則用于對(duì)檢測(cè)到的目標(biāo)細(xì)節(jié)進(jìn)行聚類(lèi),用來(lái)判斷前景目標(biāo)區(qū)域。
基于ADI視頻分析工具包所實(shí)現(xiàn)的視頻分析模塊的工作流程如圖3所示。
圖3 視頻分析模塊工作流程
對(duì)視頻進(jìn)行分析之前都需要進(jìn)行場(chǎng)景建模。這里主要是針對(duì)室內(nèi)靜止場(chǎng)景,因此背景建模過(guò)程中采用了平均背景差分法,此過(guò)程用于計(jì)算一定時(shí)間內(nèi)的每幀圖像之差。其基本思路是:計(jì)算每個(gè)像素的平均值和標(biāo)準(zhǔn)差作為背景模型,背景學(xué)習(xí)時(shí)間可根據(jù)具體情況進(jìn)行自行設(shè)置,系統(tǒng)針對(duì)靜態(tài)室內(nèi)場(chǎng)景設(shè)置背景學(xué)習(xí)時(shí)間為100幀。首先計(jì)算每幀圖像之間的絕對(duì)值圖像,并將絕對(duì)值圖像進(jìn)行累積,每次積累圖像后,增加圖像計(jì)數(shù)器的值,該計(jì)數(shù)器接下來(lái)用于計(jì)算圖像平均值。一旦積累了足夠的幀圖像以后,計(jì)算每一個(gè)像素的均值和方差,將其轉(zhuǎn)換為一個(gè)背景的統(tǒng)計(jì)模型。
入侵檢測(cè)能夠判斷監(jiān)控場(chǎng)景中的運(yùn)動(dòng)物體是否進(jìn)入標(biāo)定的ROI(感興趣區(qū)域)。此過(guò)程中利用背景差分法進(jìn)行處理。該方法通過(guò)將當(dāng)前幀與背景圖像相減來(lái)檢測(cè)出目標(biāo)。將當(dāng)前幀與背景圖像進(jìn)行差分操作后進(jìn)行二值化處理,得到二值化圖像后對(duì)其進(jìn)行連通性分析,如果某一連通區(qū)域的面積大于給定的閾值T,則認(rèn)為檢測(cè)到目標(biāo)的出現(xiàn),并認(rèn)為這個(gè)連通的區(qū)域就是檢測(cè)到的目標(biāo)圖像。目標(biāo)檢測(cè)原理如圖4。
圖4 目標(biāo)檢測(cè)原理圖
由于存在著噪聲的干擾,差分操作后得到的二值化圖像中往往會(huì)含有許多孤立的小區(qū)域及孔洞,這都給判斷背景是否存在著變化帶來(lái)了干擾,因此需要對(duì)二值化圖像進(jìn)行噪聲處理。
通常采用圖像形態(tài)學(xué)中的膨脹和腐蝕操作對(duì)二值圖像來(lái)完成形態(tài)濾波的工作。膨脹和腐蝕是采用簡(jiǎn)單對(duì)稱(chēng)的3*3方形結(jié)構(gòu)的核與需處理的圖像進(jìn)行卷積,核擁有一個(gè)單獨(dú)定義的參考點(diǎn)。核與圖像卷積,即計(jì)算核覆蓋的區(qū)域的像素點(diǎn)的最大值或最小值,并把這個(gè)最值賦給參考點(diǎn)指定的像素。對(duì)圖像進(jìn)行“開(kāi)”操作即先腐蝕再膨脹,“閉”操作則為先膨脹再腐蝕。
采用圖像形態(tài)學(xué)中的“開(kāi)”操作先將噪聲縮小至0,緊接著用“閉”操作重建由于“開(kāi)”操作丟失的邊緣部分。經(jīng)過(guò)此處理,能夠有效地將孤立的點(diǎn)、小區(qū)域去除,并將小間隙鏈接,同時(shí)將小孔洞進(jìn)行填充。
連通區(qū)域的檢測(cè)主要是對(duì)檢測(cè)到的目標(biāo)細(xì)節(jié)進(jìn)行聚類(lèi)。對(duì)于前景目標(biāo)檢測(cè),聚類(lèi)的基本準(zhǔn)則是基于位置,檢驗(yàn)兩個(gè)對(duì)象是否相交,其形心是否相近,距離是否接近等。通過(guò)此環(huán)節(jié)合理設(shè)定連通域的大小,在連通域分析處理后,能夠較好地對(duì)檢測(cè)到的對(duì)象細(xì)節(jié)進(jìn)行聚類(lèi),當(dāng)檢測(cè)到較大的前景目標(biāo)時(shí),標(biāo)記出滯留區(qū)域并進(jìn)行報(bào)警。同時(shí),通過(guò)設(shè)定連通域的大小來(lái)濾除較小物體干擾的影響,連通域的閥值應(yīng)該根據(jù)距離的大小進(jìn)行靈活調(diào)節(jié),保證將誤報(bào)警消除到最低。
H.264是第三代視頻編碼標(biāo)準(zhǔn),其相比于H.263等標(biāo)準(zhǔn),能提供更高的碼率和更好的網(wǎng)絡(luò)適應(yīng)性。H.264采用分層模式,定義了視頻編碼層(VCL)和網(wǎng)絡(luò)提取層(NAL) ,后者專(zhuān)為網(wǎng)絡(luò)傳輸設(shè)計(jì)。
H.264編碼模塊主要利用ADI公司提供的高效的系統(tǒng)級(jí)H.264基線(xiàn)編碼器庫(kù),能夠?qū)UV格式的視頻數(shù)據(jù)進(jìn)行壓縮編碼,得到H.264基線(xiàn)類(lèi)視頻碼流[5]。ADI提供的H.264編碼器的核心處理過(guò)程已經(jīng)進(jìn)行過(guò)了優(yōu)化,并且把關(guān)于編碼器配置參數(shù)的初始化、編碼器內(nèi)存空間的分配、H.264編碼算法都封裝在了編碼庫(kù)里,方便運(yùn)行時(shí)調(diào)用。因此能夠方便地將其集成到應(yīng)用程序中,達(dá)到了快速開(kāi)發(fā)的目的。
BF561支持兩種雙核應(yīng)用開(kāi)發(fā)模式:一種是雙核單獨(dú)應(yīng)用,需要分別編譯每個(gè)核上的項(xiàng)目;另一種是雙核單一應(yīng)用,可以讓兩個(gè)內(nèi)核有效地使用所有共享資源,避免代碼的重復(fù),實(shí)現(xiàn)雙核并行工作的目的。因此,在系統(tǒng)實(shí)現(xiàn)中,我們采用了雙核單一應(yīng)用的模式。
雙核模式下,Core A啟動(dòng)ADV7180,將輸入視頻幀數(shù)據(jù)通過(guò)DMA存放于片外SDRAM的視頻輸入數(shù)據(jù)內(nèi)存段,Core A和Core B共享輸入視頻數(shù)據(jù)緩沖區(qū)。壓縮編碼后的視頻數(shù)據(jù)流和報(bào)警信息發(fā)送給網(wǎng)絡(luò)視頻服務(wù)器。
Core A和Core B采用握手信號(hào)進(jìn)行通信。由于處理器的片上二級(jí)存儲(chǔ)器(L2)具有低延遲,高帶寬性能,因此將用于雙核并行工作的互斥信號(hào)量、雙核共享的視頻幀的地址指針變量、雙核數(shù)據(jù)交互所需的控制數(shù)據(jù)結(jié)構(gòu)等存儲(chǔ)在L2上。
為了進(jìn)一步提高系統(tǒng)的效率,采用了如下幾種優(yōu)化方法:
(1) 合理安排代碼和數(shù)據(jù)在內(nèi)存中的放置,將頻繁使用代碼和數(shù)據(jù)放于低延遲的處理器片上L1和L2存儲(chǔ)器上能有效提高效率。
(2) 合理劃分SDRAM子塊劃分,以確保訪問(wèn)多個(gè)幀緩沖區(qū)時(shí)內(nèi)核和DMA控制器不會(huì)同時(shí)訪問(wèn)同一個(gè)SDRAM子塊。將需要同時(shí)訪問(wèn)的緩沖區(qū)映射到不同的SDRAM子塊上,提高了內(nèi)存訪問(wèn)的吞吐量。
(3) 有效使用DMA通道。為能對(duì)視頻幀進(jìn)行連續(xù)采集,將PPI配置為描述模式,使內(nèi)核處理其中一個(gè)緩沖區(qū),只專(zhuān)注于數(shù)據(jù)的計(jì)算;而DMA同時(shí)填充另一個(gè)緩沖區(qū)。
(4) 采用多緩沖區(qū)環(huán)回鏈接技術(shù)。系統(tǒng)需要同時(shí)進(jìn)行視頻采集,視頻分析和視頻H.264編碼三部分工作。為使延遲最小,系統(tǒng)采用了多緩沖區(qū)結(jié)構(gòu),其中兩個(gè)緩沖區(qū)用于視頻數(shù)據(jù)接受存儲(chǔ),一個(gè)緩沖區(qū)用于視頻分析處理,一個(gè)緩沖區(qū)用于H.264壓縮編碼,并將最后一個(gè)緩沖區(qū)鏈接至第一個(gè)緩沖區(qū),當(dāng)處理完最后一個(gè)緩沖區(qū)數(shù)據(jù)后系統(tǒng)能繼續(xù)對(duì)第一個(gè)緩沖區(qū)進(jìn)行操作[6]。
上述方案在智能視頻監(jiān)控系統(tǒng)中進(jìn)行了測(cè)試,系統(tǒng)由視頻分析前端、網(wǎng)絡(luò)視頻服務(wù)器和視頻監(jiān)控客戶(hù)端組成。系統(tǒng)在前端實(shí)現(xiàn)了入侵物體檢測(cè)、丟失檢測(cè)和H.264編碼等功能。在監(jiān)控客戶(hù)端觀察到的運(yùn)行效果如圖5所示。
圖5 系統(tǒng)運(yùn)行效果
本文對(duì)智能視頻分析前端進(jìn)行了總體設(shè)計(jì),介紹了ADSP-BF561雙核單一應(yīng)用模式下視頻分析和視頻編碼等模塊的技術(shù)實(shí)現(xiàn),該設(shè)計(jì)方案結(jié)構(gòu)緊湊,測(cè)試表明,視頻分析前端在壓縮編碼和視頻分析并行處理時(shí),對(duì)CIF(352*288)格式的視頻序列能達(dá)到接近15幀/秒的分析處理和編碼速度,能有效實(shí)現(xiàn)預(yù)定的監(jiān)控報(bào)警功能。但對(duì)更高級(jí)別視頻圖像的實(shí)時(shí)處理方面還有進(jìn)一步的優(yōu)化空間,這將在后續(xù)工作中重點(diǎn)研究。
[1]李明. 基于無(wú)線(xiàn)通信鏈路的圖像壓縮傳輸系統(tǒng)的設(shè)計(jì)探索[J]. 實(shí)驗(yàn)室科學(xué),2010,13(2):50-52
[2]唐建. Blackfin雙核處理器與應(yīng)用開(kāi)發(fā)[M]. 北京:電子工業(yè)出版社,2010
[3]Analog Devices, Inc. Video Analytics Toolbox Reference Guide[Z]REV 0.3, 2009
[4]Analog Devices, Inc. Image Porcessing ToolBox Product Reference Guide[Z]0.17,312012
[5]Analog Devices, Inc. H.264 BP Encoder Developer’s Guide For Blackfin ADSP-BF5xx Processors[Z]. REV 2.2.0 ,2008
[6]Analog Devices, Inc. Video In/Out Drivers Users Guide[Z]REV 0.3,2009