榮俊勇,王中華
(南昌航空大學(xué) 信息工程學(xué)院,南昌330063)
嵌入式視頻監(jiān)控系統(tǒng)的軟件設(shè)計(jì)包括嵌入式Linux 平臺(tái)底層軟件、視頻監(jiān)控系統(tǒng)的視頻處理算法和人機(jī)交互軟件的設(shè)計(jì),以下對(duì)嵌入式視頻監(jiān)控系統(tǒng)軟件進(jìn)行介紹。
本文使用的開(kāi)發(fā)工具有Linux 虛擬機(jī)運(yùn)行軟件VMware Workstations10、虛擬機(jī)Ubuntu16.04 LTS、交叉編譯器armlinux-gcc4.4.3。構(gòu)建嵌入式Linux 平臺(tái),首先要在虛擬機(jī)上使用交叉編譯器對(duì)Boot Loader、Linux 內(nèi)核、yaffs2 文件系統(tǒng)以及使用到的軟件(Qt creater 5.6、OpenCV 3.0)進(jìn)行交叉編譯,再將交叉編譯后的文件移植到嵌入式硬件平臺(tái)上。
程序開(kāi)始執(zhí)行后,首先使用V4L2 對(duì)攝像頭進(jìn)行一系列初始化,接著用捕獲的視頻對(duì)PBAS 算法的背景模型進(jìn)行初始化,完成初始化后再對(duì)捕獲的視頻的每一幀進(jìn)行移動(dòng)目標(biāo)的檢測(cè),如果有移動(dòng)目標(biāo)出現(xiàn),則用矩形標(biāo)記出移動(dòng)目標(biāo)以及在圖像上標(biāo)記出移動(dòng)目標(biāo)出現(xiàn)的時(shí)間,再將該幀圖像保存到視頻文件中;如果沒(méi)有出現(xiàn)移動(dòng)目標(biāo)則進(jìn)行下一幀的檢測(cè)。視頻監(jiān)控界面設(shè)計(jì)如圖1所示。
主界面包含三個(gè)按鈕:實(shí)時(shí)監(jiān)控按鈕、歷史視頻按鈕、退出按鈕。點(diǎn)擊實(shí)時(shí)監(jiān)控按鈕進(jìn)入實(shí)時(shí)監(jiān)控操作界面,實(shí)時(shí)監(jiān)控界面有開(kāi)始/暫停按鈕、返回按鈕,開(kāi)始/暫停按鈕控制實(shí)時(shí)視頻監(jiān)控的進(jìn)行;點(diǎn)擊返回按鈕則回到主界面,但只要沒(méi)有暫停實(shí)時(shí)視頻監(jiān)控就會(huì)在后臺(tái)持續(xù)監(jiān)控。點(diǎn)擊歷史視頻按鈕則會(huì)進(jìn)入歷史視頻操控界面,歷史視頻控制界面有播放/暫停按鈕和退出按鈕,播放/暫停用于查看視頻監(jiān)控保存下來(lái)的含有移動(dòng)目標(biāo)的歷史視頻;點(diǎn)擊返回按鈕則停止播放歷史視頻,返回到視頻監(jiān)控主界面。
在PBAS 中,和SACON 算法相似,背景模型是由視頻序列中的N 個(gè)歷史樣本組成的[1]。而前景檢測(cè)和背景模型更新與VIBE 算法類(lèi)似,但背景模型更新是動(dòng)態(tài)的。任何一個(gè)像素xi都有一個(gè)決策閥值R(xi),通過(guò)背景模型B(xi)和當(dāng)前幀I(xi)比較把當(dāng)前幀的像素分為背景和前景。背景模型的隨機(jī)更新取決于學(xué)習(xí)速率T(xi)。
在PBAS 中,類(lèi)似于其他前景分割算法,前景和背景分類(lèi)是基于背景模型與當(dāng)前像素進(jìn)行比較的。PBAS 的背景模型是由鄰近當(dāng)前視頻幀觀(guān)察到的N 個(gè)歷史像素值組成的:
如果在背景模型B(xi)的N 個(gè)值中有至少#min 個(gè)與像素點(diǎn)xi的像素值I(xi)距離小于R(xi),則該像素點(diǎn)為背景點(diǎn),否則為前景點(diǎn)。因此前景分割掩模計(jì)算式為:
表達(dá)式(2)中,F(xiàn)=1 表示前景,F(xiàn)=0 表示背景,dist 為距離計(jì)算:
決策所涉及的兩個(gè)參數(shù):①每個(gè)像素單獨(dú)定義且可動(dòng)態(tài)改變的距離閾值R(xi);②固定的全局參數(shù),最小數(shù)目#min。
為了適應(yīng)背景的變化,需要對(duì)背景模型B(xi)進(jìn)行更新。由于前景區(qū)域不能用于更新背景模型,背景模型只對(duì)當(dāng)前的背景像素進(jìn)行更新。PBAS 算法的更新策略為:等概率選擇k∈1…N,用當(dāng)前像素值I(xi)取代相應(yīng)背景模型值Bk(xi),但更新概率為p=1/T(xi)。因此,學(xué)習(xí)速率T(xi)決定更新速率。T(xi)越大,像素被更新的概率越小。
PBAS 算法也以概率p=1/T(xi)隨機(jī)選擇更新一個(gè)相鄰像素yi∈N(xi)。因此,在這個(gè)相鄰像素的背景模型中Bk(yi)被其當(dāng)前像素值V(yi)所取代。該屬性的優(yōu)點(diǎn)是判斷錯(cuò)誤的前景對(duì)象會(huì)很快消失。
在PBAS 算法中決策閾值R(xi)的更新機(jī)制如下:首先,在構(gòu)建背景模型B(xi)的同時(shí)也創(chuàng)建一個(gè)決定最小距離的數(shù)組:
不管背景模型B(xi)是否進(jìn)行了更新,當(dāng)前的最小距離都將被保存到Dk(xi)中,當(dāng)前的最小距離為:
D(x)i的平均值(x)i可以用來(lái)橫量當(dāng)前背景的復(fù)雜度。決策閾值R(x)i的更新模型如下:
其中,Rinc/dec為更新率,Rscale為比例因子,兩者均為固定參數(shù)。
原始PBAS 算法經(jīng)測(cè)試得出的最佳參數(shù)值如下:背景模型歷史像素值數(shù)N=35,最小數(shù)目:#min=2,更新率:Rinc/dec=0.05,比例因子:Rscale=5,決策閥值R(xi)下限:Rlower=18,T(xi)下降速率:Tdec=0.05,T(xi)上升速率Tinc=0.05,T(xi)下限:Tlower=2,T(xi)上限:Tupper=200。
每個(gè)像素背景模型中的歷史像素?cái)?shù)N 為35 時(shí)性能達(dá)到最佳,但對(duì)于一些簡(jiǎn)單的場(chǎng)景只需要取10 既能達(dá)到檢測(cè)要求。由于本系統(tǒng)使用的處理芯片為S3C2440,其計(jì)算速度相對(duì)較慢,為了減小計(jì)算復(fù)雜度,提高視頻監(jiān)控系統(tǒng)的實(shí)時(shí)性,在本系統(tǒng)中將N 設(shè)置為20。其他參數(shù)則保持不變。
本文針對(duì)傳統(tǒng)視頻監(jiān)控系統(tǒng)的不足,設(shè)計(jì)了一種基于PBAS 算法的嵌入式視頻監(jiān)控系統(tǒng)。該視頻監(jiān)控系統(tǒng)以嵌入式Linux 為硬件平臺(tái),大大節(jié)省了視頻監(jiān)控的投入;以Qt 5.6 和OpenCV 3.0 為軟件編程工具,實(shí)現(xiàn)了良好的人機(jī)交互界面,并使用PBAS 算法對(duì)移動(dòng)目標(biāo)進(jìn)行檢測(cè),較好地實(shí)現(xiàn)了對(duì)視頻監(jiān)控中移動(dòng)目標(biāo)的檢測(cè)以及對(duì)含有移動(dòng)目標(biāo)的視頻序列的存儲(chǔ)[2]。與傳統(tǒng)視頻監(jiān)控相比,使用戶(hù)盡量減少在視頻監(jiān)控上所花費(fèi)的人力和物力。