【安防知識網】硬件設計
由于本系統(tǒng)使用Blackfin 561 DSP進行開發(fā),因而整個系統(tǒng)可采用一塊BF561 EZ-KIT Lite評估板、一臺CCD攝像機、一臺PC機和一個Blackfin USB-LAN EZ-Extender卡。
BF561 EZ-KIT Lite評估板主要用來實現(xiàn)智能處理算法以及對視頻流的壓縮編碼功能。因為在BF561 EZ-KIT Lite評估板上包括有:視頻處理芯片ADSP BF561;外部總線接口單元(EBIU)、SPORT接口、SPI接口、PPI接口、UART接口、JTAG仿真接口等。視頻A/D模塊采用ADV7183視頻解碼芯片。BF561 EZ-KIT Lite評估板結構如圖1所示。
圖1 BF561 EZ-KIT Lite評估板結構
Blackfin USB-LAN EZ-Extender卡
Blackfin USB-LAN EZ-Extender卡可連接USB設備,并通過網絡傳輸已壓縮的視頻數(shù)據到PC客戶端。因為在Blackfin USB-LAN EZ-Extender卡上包含有一個USB 2.0接口;一個10/100自適應網口等。
CCD攝像機
這一臺CCD攝像機,主要用來采集視頻。
PC客戶端
該PC客戶端主要用來接收壓縮視頻,配置和控制終端控制系統(tǒng)工作方式,并且能夠存儲系統(tǒng)的輸出。
軟件設計
基于Blackfin 561 DSP的智能視頻監(jiān)控系統(tǒng)軟件部分,由上層PC監(jiān)控服務軟件和底層DSP監(jiān)控功能軟件兩部分組成。上層PC部分主要進行監(jiān)控功能選擇和監(jiān)控結果的顯示,底層DSP部分主要進行智能監(jiān)控和壓縮編碼的算法實現(xiàn)。視頻監(jiān)控系統(tǒng)通過使用UART和USB接口作為聯(lián)系PC和DSP的通道,以實現(xiàn)數(shù)據的交換。其中,使用異步串口(UART)作為監(jiān)控系統(tǒng)與PC端監(jiān)控軟件的通信接口,完成底層監(jiān)控程序和PC端監(jiān)控服務軟件之間的通信;使用USB控制器作為壓縮碼流的數(shù)據傳輸接口,完成壓縮碼流向PC端的輸送任務。 [nextpage]
智能視頻監(jiān)控系統(tǒng)同時使用Blackfin 561 DSP的兩個核進行處理,通過PC服務軟件和DSP端監(jiān)控功能軟件協(xié)同工作,其主要工作流程如圖2所示。
圖2 智能視頻監(jiān)控系統(tǒng)的工作流程
DSP端接收到一幀圖像后,利用Blackfin 561 DSP的兩個核完成智能視頻監(jiān)控處理和視頻編碼壓縮處理。智能視頻監(jiān)控處理部分,利用Blackfin 561 DSP的核A進行,它首先通過UART通信模塊獲得PC端監(jiān)控功能選擇模塊的當前功能,以及這一功能的相應參數(shù),然后根據相應的功能調用監(jiān)控功能模塊中對應的監(jiān)控函數(shù)進行處理;最后再利用UART通信模塊將處理的結果傳送到PC端顯示。視頻編碼壓縮處理部分,使用Blackfin 561 DSP的核B進行,利用由ADI公司提供的H.264編碼函數(shù)和USB驅動函數(shù)實現(xiàn),這里就不贅述了。
PC端進行不同監(jiān)控功能的切換或調整功能參數(shù),在下一幀輸入圖像中將進行監(jiān)控功能的切換和參數(shù)的調整。
客戶端軟件
客戶端軟件是用戶實現(xiàn)DSP監(jiān)控操作的平臺,主要由監(jiān)控軟件界面、監(jiān)控功能選擇模塊、驅動函數(shù)模塊組成。
監(jiān)控軟件界面是監(jiān)控系統(tǒng)和用戶進行信息交互的平臺,它整合了各個監(jiān)控功能模塊,用戶通過它完成各個監(jiān)控功能模塊的調用、參數(shù)的選擇、結果的顯示等。
PC監(jiān)控功能選擇模塊完成對底層DSP監(jiān)控功能的調用,從而實現(xiàn)用戶需要的相應的監(jiān)控功能。
驅動函數(shù)模塊包括UART驅動和USB驅動。UART驅動的作用是實現(xiàn)上層PC的監(jiān)控服務軟件和底層DSP的監(jiān)控功能程序之間的UART接口通信;USB驅動的作用是通過USB接口接收底層DSP發(fā)送的壓縮碼流。
DSP端監(jiān)控功能軟件
DSP監(jiān)控功能軟件是整個監(jiān)控功能實現(xiàn)的核心,由監(jiān)控功能模塊、H.264視頻壓縮模塊和UART通信模塊組成。
DSP監(jiān)控功能模塊經PC端監(jiān)控功能選擇模塊進行調用,直接負責完成相應的監(jiān)控功能,并將結果傳輸?shù)絇C端。
H.264視頻壓縮模塊負責將輸入視頻圖像進行H.264壓縮,并使用USB接口將壓縮后的視頻圖像傳輸?shù)絇C端。
UART通信模塊負責利用協(xié)議實現(xiàn)和PC端的通信。 [nextpage]
1、DSP監(jiān)控功能模塊
本文所設計的智能視頻監(jiān)控系統(tǒng)需要實現(xiàn)8個不同的智能視頻監(jiān)控功能。根據監(jiān)控功能的不同性質和處理手段,主要分為:物體檢測與數(shù)量統(tǒng)計、自動跟蹤、入侵和遺留物體檢測、攝像機模糊、遮擋及非法移動等4類不同功能。本模塊通過從PC端功能選擇模塊獲取監(jiān)控信息,選擇單一視頻監(jiān)控功能進行處理。監(jiān)控功能模塊流程如圖3所示。
圖3 監(jiān)控功能模塊流程
監(jiān)控功能模塊中大部分功能首先都需要進行相同的前期處理過程-運動對象的提取。本系統(tǒng)運動對象的提取主要包括背景建模和連通域標記兩個部分,其主要流程如圖4所示。
圖4 運動對象提取
· 物體檢測:物體檢測需要根據運動檢測的結果判斷當前運動物體所屬的類別,如人體、四足動物、四輪機動車、非機動車等。其使用高斯背景模型進行運動檢測,提取目標的形狀特征,并對它們進行分類,最后輸出運動物體的位置、類別;
· 數(shù)量統(tǒng)計:數(shù)量統(tǒng)計需要在物體檢測的基礎上,統(tǒng)計各類物體或一類物體的數(shù)目,在統(tǒng)計過程中,還需要區(qū)分個體和群體。其在分類的基礎上,使用計數(shù)器統(tǒng)計當前幀中各種目標的數(shù)量。最后輸出各類物體數(shù)目,如個體數(shù)目、群體數(shù)目;
· 入侵檢測:入侵檢測需要判斷場景中運動物體是否進入某一固定區(qū)域。其在運動檢測的基礎上,判斷目標的位置與標定的”禁入”位置的相對關系,以實現(xiàn)入侵檢測,最后輸出入侵物體位置和類別;
· 遺留物體檢測:遺留物體檢測主要是檢測固定區(qū)域內箱包類物體的非法滯留問題。具體說,主要是檢測行人將箱包等遺留到場景中的情況(重點是為了排除爆炸物和危禁品)。當然,也包括將場景中原有物體拿走的情況。通過判斷物體在監(jiān)控場景中出現(xiàn)的時間的長短,來判斷是否為遺留物體,輸出遺留物體的位置及大小;
· 自動跟蹤:自動跟蹤實現(xiàn)對于運動對象的連續(xù)檢測,通過對運動物體的跟蹤,獲得其位置、速度、運動軌跡等運動信息。使用卡爾曼濾波的方法進行目標跟蹤,輸出運動物體的位置及中心坐標等;
· 攝像機模糊、遮擋及非法移動檢測:攝像機模糊、遮擋及非法移動檢測是需要發(fā)現(xiàn)影響監(jiān)控攝像機正常工作或者威脅監(jiān)控攝像機自身安全的活動。使用DCT變換,統(tǒng)計全局的圖像變化信息,判斷攝像機是否模糊;利用圖像灰度直方圖變化信息,判斷攝像機是否被遮擋;使用模板匹配的方法,判斷攝像機是否非法移動,輸出模糊、遮擋及非法移動情況信息和程度。 [nextpage]
系統(tǒng)優(yōu)化
1、三緩沖結構
設置三緩沖組成緩沖區(qū)隊列。在實際處理過程中,使用其中兩個緩沖區(qū)進行數(shù)據接收,另外一個緩沖區(qū)進行圖像處理等(具體的三緩沖區(qū)結構如圖5所示)。
圖5 三緩沖結構
利用回調函數(shù)對緩沖區(qū)進行管理,每接收完一整幅圖像后產生一次回調。使用三個變量維護當前緩沖區(qū)狀態(tài),F(xiàn)rame Buffer1和Frame Buffer2用于維護在循環(huán)中接收的兩個緩沖區(qū),F(xiàn)rame Counter為當前最新接收到的緩沖區(qū)。每次接收數(shù)據的存儲位置根據Frame Buffer1和Frame Buffer2的值決定。
在主循環(huán)過程中,使用一個變量Active Index維護當前處理中的緩沖區(qū)。每當開始處理新的一幀時,交換Frame Counter和Active Index的值,并同時更新Frame Buffer1和Frame Buffer2。實現(xiàn)將上一幀處理結束的緩沖區(qū)加到輸入緩沖中,而將最新一幀緩沖并進行處理的目的。
2、算法優(yōu)化
系統(tǒng)對大部分的功能實現(xiàn)算法進行了優(yōu)化。在物體檢測、數(shù)量統(tǒng)計、自動跟蹤、入侵檢測、遺留物體檢測等算法中都需要使用背景模型。因此,系統(tǒng)重點對背景建模算法進行了優(yōu)化。
背景建模主要包括兩個部分:一是用當前圖像和背景模型的均值和方差矩陣進行比較,得到前景圖像和更新后的背景模型;二是對前景圖像進行膨脹、腐蝕的形態(tài)學運算。
· 背景模型更新:模型更新過程涉及的數(shù)據有:當前圖像幀緩沖(8位)、當前前景幀圖像(8位)、背景均值模型(32位)、背景方差模型(32位)、前景駐留時間矩陣(16位)。為了提高運算速度,需要首先將內存搬運到L1中再進行處理。其步驟如下:
第一步:在L1內存中分配行緩存區(qū)用于計算,采用PINGPONG結構設計雙緩沖區(qū)。
第二步:使用兩個DMA通道用于輸入和輸出。首先使用異步DMA方式輸入一行輸入圖像、均值和方差矩陣及駐留時間矩陣,交替使用current和bck指針分別指向輸入和處理緩沖區(qū),并不斷更新實現(xiàn)雙緩沖結構。這里要求從第二行輸入起使用同步DMA方式進行傳輸,因此使用了回調函數(shù)Line In Caqll Back和input_index變量,實現(xiàn)依次輸入4個緩沖區(qū)。
由于這里要求將輸入并計算后的新均值、方差和駐留時間行矩陣傳回SDRAM中,因此輸出DMA采用異步方式,等待完成后才會開始下一次的DMA輸入。這樣,在一定程度上,可避免同時向一個SDRAM區(qū)讀/寫內存。
· 膨脹、腐蝕算法:這里同樣也使用行處理方式進行膨脹、腐蝕兩步運算。根據膨脹、腐蝕算法的特點,需要輸入3行緩沖,然后進行一行的處理。因此,需設計使用6行輸入的前景緩沖和兩行膨脹、腐蝕處理結果作為3行輸入和1行輸出雙緩沖。由于輸入和輸出的緩沖區(qū)沒有沖突問題,因而輸入和輸出均采用同步模式,并注意輸入緩沖增量設為一行。