1 引言
近年來,隨著計算機技術(shù)、光電技術(shù)、數(shù)字圖像處理技術(shù)、嵌入式技術(shù)和網(wǎng)絡(luò)通信技術(shù)的不斷發(fā)展,高度集成的數(shù)字化、網(wǎng)絡(luò)化、智能化的數(shù)字視頻技術(shù)已經(jīng)了取代傳統(tǒng)的模擬視頻監(jiān)控技術(shù)。目前,世界各國對視頻監(jiān)控的需求與應(yīng)用不斷擴大,推動著全球視頻監(jiān)控市場迅速的發(fā)展。根據(jù)市場調(diào)查公司IMSResearch的預(yù)測,全球視頻監(jiān)控市場將從2008年的115億美元增加至2015年的377億美元,年復(fù)合增長率達(dá)到20.4%.在這一市場中,監(jiān)控攝像頭、服務(wù)器、編碼器以及軟件是視頻監(jiān)控系統(tǒng)的主角。
本文提出一種基于ARM+Linux嵌入式平臺的的智能視頻監(jiān)控系統(tǒng),充分利用開源操作系統(tǒng)和開源免費軟件MJPG_Streamer的特點,實現(xiàn)了在線實時監(jiān)控。同時提出了一種目標(biāo)檢測算法,該算法在后臺運行,實現(xiàn)了智能控制,能夠?qū)θ肭帜繕?biāo)進(jìn)行語音報警。該監(jiān)控適合針對一些特定場合的監(jiān)控。
2 系統(tǒng)硬件平臺
視頻監(jiān)控系統(tǒng)以S3C2440處理器為核心,外圍器件有Flash、SDRAM、以太網(wǎng)卡DM9000、聲卡UDA1341以及CMOS接口攝像頭OV9650,在Linux環(huán)境下對攝像頭采集到的原始圖像幀進(jìn)行處理以及壓縮,通過網(wǎng)絡(luò)協(xié)議傳輸?shù)絇C上位機進(jìn)行顯示。系統(tǒng)硬件平臺結(jié)構(gòu)如圖1所示。
3 構(gòu)建ARM+Liunx嵌入式平臺
在系統(tǒng)硬件平臺上構(gòu)建嵌入式Liunx系統(tǒng),需要引導(dǎo)程序BootLoader和Linux源碼,本系統(tǒng)需要移植bootloader源碼,然后用Jtag接口將其燒寫到Flash中,從Flash中啟動,引導(dǎo)在PC機上交叉編譯后的Linux鏡像及根文件系統(tǒng),之后啟動Linux系統(tǒng)。
3.1 網(wǎng)卡和聲卡驅(qū)動移植
由于在Linux內(nèi)核中提供了以太網(wǎng)卡DM9000設(shè)備驅(qū)動功能層主要的數(shù)據(jù)結(jié)構(gòu)和函數(shù),所以在實際移植網(wǎng)絡(luò)設(shè)備驅(qū)動程序時,要完成的工作就是根據(jù)實際以太網(wǎng)卡DM9000參數(shù)修改相應(yīng)的內(nèi)核代碼。同樣,在Linux內(nèi)核源碼中的標(biāo)準(zhǔn)音頻編程模型已經(jīng)包含一套完整的內(nèi)核驅(qū)動程序模塊,為各種各樣的聲卡提供了統(tǒng)一并且簡單易用的編程接口,如open()、read()、ioctl(()等函數(shù),所以在聲卡UDA1341移植過程中對內(nèi)核源碼做簡單修改即可。
3.2 語音播放功能的實現(xiàn)
完成了聲卡驅(qū)動移植后,為了方便對音頻文件的播放,停止等操作進(jìn)行控制,還需要移植專業(yè)的高精度解碼器Madplay.Madplay是一個根據(jù)MAD算法寫的MP3播放器,解碼效果相當(dāng)出色,而且支持命令行,特別適合于在嵌入式系統(tǒng)使用。移植過程中分別編譯zlib庫、libid3tag庫和libmad庫,最后編譯madplay源碼并且把編譯出來的madplay下載到系統(tǒng)中即可,之后就可以對錄制好的音頻文件進(jìn)行播放。
嵌入式平臺構(gòu)建完成后,先后用命令ifcongfig和madplay進(jìn)行網(wǎng)卡和語音模塊測試,從圖2可以看出Linux系統(tǒng)啟動成功,網(wǎng)卡和聲卡驅(qū)動配置成功了,并且可以使用Madplay播放器播放錄制的音頻文件。
4 MJPG_Streamer功能的實現(xiàn)
MJPG_Streamer是一款免費的視頻流服務(wù)器軟件,采用的是V4L2視頻設(shè)備開發(fā)框架,它能夠?qū)臄z像頭采集到的圖像以JPEG格式通過TCP/IP網(wǎng)絡(luò)協(xié)議傳輸?shù)缴衔粰C進(jìn)行顯示。
4.1 MJPG_Streamer移植
在MJPG_Streamer源碼目錄中,把所有Makefile文件的CC=gcc改為CC=arm-linux-gcc,然后進(jìn)行編譯,生成的主要組件及功能如下:
input_uvc.so組件:主要完成了攝像頭圖像的抓取,同時將原始YUV 格式圖像轉(zhuǎn)換和壓縮為JPEG格式圖像。
input_control.so組件:主要完成對支持調(diào)整方向攝像頭的轉(zhuǎn)動方向的控制。例如云臺控制器,云臺控制是為了實現(xiàn)多角度監(jiān)控的功能。
output_http.so組件:這是一個功能完整的WEB服務(wù)器,它將壓縮后的JPEG 圖像以HTTP視頻數(shù)據(jù)服務(wù)流形式輸出。
output_file.so組件:這個組件的功能是將壓縮后的JPEG圖像存儲到特定的文件夾下,用來抓拍和存儲網(wǎng)絡(luò)攝像機監(jiān)控中的靜態(tài)圖像。
4.2 目標(biāo)檢測算法的研究
基于幀間差分法對光照變化干擾不敏感,提取前景目標(biāo)容易產(chǎn)生“空洞”的現(xiàn)象,而背景減法對光照變化較敏感的現(xiàn)象,本文提出了一種結(jié)合三幀差分算法和背景減法的目標(biāo)檢測算法。經(jīng)過與目前常用的算法相比,例如混合高斯模型和改進(jìn)的混合高斯模型,本文的算法不僅降低了運算的復(fù)雜度,適合在ARM 平臺運行,同時又可以達(dá)到準(zhǔn)確檢測的效果。算法實現(xiàn)流程如下:
(1)建立背景模型,提取前景目標(biāo)先把采集到的彩色圖像利用式(1)轉(zhuǎn)為灰度圖,取前n幀圖像,對每個位置像素的像素值求均值作為背景像素,表示為式(2)。利用當(dāng)前幀減去背景幀得到包含前景的圖像,根據(jù)閾值Th對圖像進(jìn)行二值化處理得到T(x,y),如式(3)、(4)所示。
式中,Th代表閾值,T(x,y)代表二值化后圖像。
考慮到攝像頭固定,背景像素灰度值變化比較緩慢,而前景目標(biāo)像素灰度值變化相對較快。為了讓背景模型適應(yīng)光照緩慢的變化,需要對背景模型進(jìn)行實時更新。其中a為背景更新率,取值范圍是(0,1)。
Bn+1(x,y)=(1-a)Bn(x,y)+apn(x,y) (5)在差分圖像S(x,y)中大量存在的是具有較高灰度值的前景像素和具有較低灰度值的背景像素。
所以,提出一種閾值根據(jù)當(dāng)前差分幀S(x,y)自動更新的方法。
求出當(dāng)前差分幀S(x,y)圖像灰度的最大值和最小值,求得二者均值T.利用均值將圖像分為目標(biāo)和背景兩部分,利用式(6)求出兩部分均值k1和k2,最后由式(7)得到閾值Th.
(2)利用三幀差分算法提取目標(biāo)選取連續(xù)三幀圖像Dk-1(x,y),Dk(x,y)和Dk+1(x,y),進(jìn)行兩兩差分得到D1(x,y)和D2(x,y),二值化處理后,二者進(jìn)行與運算,提取前景目標(biāo)。
(3)前景目標(biāo)融合將背景減法的前景圖像T(x,y)和三幀差分算法得到圖像D(x,y)進(jìn)行或運算,該運算利用了背景減法的優(yōu)點,避免了單獨利用三幀差法帶來的空洞現(xiàn)象。同時發(fā)揮三幀差法對動態(tài)背景變化適應(yīng)性強的特點。
(4)前景目標(biāo)形態(tài)學(xué)處理由于融合后的圖像Q(x,y)中存在著噪聲點和一些空洞,有必要對圖像進(jìn)行中值濾波,然后交替的應(yīng)用開運算和閉運算,起到既去毛刺又填充的雙濾波目的。
根據(jù)本文的算法,采用靜止的攝像頭采集視頻序列。圖3所示為在Visual C++2005平臺上的仿真結(jié)果。根據(jù)結(jié)果可得,本文算法能完整的提取運動目標(biāo),有效的消除空洞,檢測結(jié)果準(zhǔn)確。
(4)前景目標(biāo)形態(tài)學(xué)處理由于融合后的圖像Q(x,y)中存在著噪聲點和一些空洞,有必要對圖像進(jìn)行中值濾波,然后交替的應(yīng)用開運算和閉運算,起到既去毛刺又填充的雙濾波目的。
根據(jù)本文的算法,采用靜止的攝像頭采集視頻序列。圖3所示為在Visual C++2005平臺上的仿真結(jié)果。根據(jù)結(jié)果可得,本文算法能完整的提取運動目標(biāo),有效的消除空洞,檢測結(jié)果準(zhǔn)確。此時系統(tǒng)可以快速的檢測到入侵物體,同時用Madplay播放錄制好的音頻文件進(jìn)行語音報警。智能監(jiān)控實現(xiàn)流程如圖4所示。
4.4 監(jiān)控平臺測試
在Linux平臺輸入以下命令,啟動監(jiān)控系統(tǒng)。在PC上位可以通過MJPG_Streamer軟件自帶的圖形界面進(jìn)行顯示,也可以通過網(wǎng)頁瀏覽器進(jìn)行頁面顯示。經(jīng)試驗,當(dāng)有物體進(jìn)入場景時,能夠快速的進(jìn)行語音報警。當(dāng)平臺測試完畢后,把MJPG_Streamer設(shè)置為在Linux啟動后自動運行。見圖5.
5 結(jié)束語
本文設(shè)計的基于軟件MJPG_Streamer視頻監(jiān)控系統(tǒng),具有實時性好,遠(yuǎn)程監(jiān)控,上位機簡易,開發(fā)周期短,易于實現(xiàn)的特點。系統(tǒng)實現(xiàn)了語音報警的功能,充分利用了ARM 平臺的特性,不需要設(shè)計額外的語音模塊電路。系統(tǒng)的目標(biāo)檢測功能已完成,下一個研究方向是利用軟件MJPG_Streamer對云臺控制的支持,實現(xiàn)模式識別和跟蹤算法,使系統(tǒng)的功能更強大,應(yīng)用范圍更廣。
-
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5628瀏覽量
175680 -
視頻監(jiān)控
+關(guān)注
關(guān)注
17文章
1723瀏覽量
66085 -
計算機
+關(guān)注
關(guān)注
19文章
7654瀏覽量
90649
發(fā)布評論請先 登錄
【OK210試用體驗】進(jìn)階篇(1)視頻圖像采集之MJPG-streamer編譯(Ubuntu系統(tǒng)下)
【OK210試用體驗】進(jìn)階篇(2)視頻圖像采集之MJPG-streamer編譯(arm移植)
怎樣在樹莓派上安裝使用mjpg-streamer
韋東山第三期視頻監(jiān)控mjpg_streamer實驗的注意事項--最終能看到結(jié)果
【EVB-T335開發(fā)板試用體驗】【結(jié)項帖】移植mjpg-streamer實現(xiàn)監(jiān)控(上)
【BPI-M64試用體驗】MJPG-streamer移植實現(xiàn)簡單監(jiān)控
Dragonboard410c Android USB Camera使用:mjpg-streamer 在ubuntu16.04安裝與使用(二)
迅為-iMX6ULL開發(fā)板-移植mjpg-streamer實現(xiàn)遠(yuǎn)程監(jiān)控
數(shù)字化監(jiān)控系統(tǒng)的特點及功能
【米爾MYS-8MMX開發(fā)板免費試用】+ 使用mjpg-streamer和UVC攝像頭搭建網(wǎng)絡(luò)攝像頭
mjpg-streamer網(wǎng)絡(luò)監(jiān)控軟件簡析
rk3288視頻服務(wù)器MJPG_Streamer移植簡析
【米爾-STM32MP135開發(fā)板-入門級MPU試用】基于mjpg\\-streamer實時監(jiān)控
開源視頻服務(wù)器軟件MJPG-streamer研究

詳解視頻服務(wù)器軟件MJPG-streamer

評論