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