俞 楊,陳 帥
(1.安徽大學(xué) 電子與信息工程學(xué)院,合肥230039;2.淮南師范學(xué)院電氣信息工程學(xué)院,安徽淮南232038)
近年來(lái),伴隨著社會(huì)與經(jīng)濟(jì)的進(jìn)步,我國(guó)的安防產(chǎn)業(yè)發(fā)展迅速,前景良好。與國(guó)外安防監(jiān)測(cè)相比,仍存在核心技術(shù)缺乏,市場(chǎng)競(jìng)爭(zhēng)混亂等問(wèn)題。自1998年新加坡國(guó)際展覽會(huì)之后,國(guó)外的安防產(chǎn)業(yè)迅速發(fā)展。面對(duì)恐怖活動(dòng)、電腦黑客,安防監(jiān)測(cè)成了不可缺少的一部分??傮w來(lái)說(shuō),國(guó)外的安防產(chǎn)業(yè)起步更早,技術(shù)更好,應(yīng)用更廣[1]?,F(xiàn)在主流的目標(biāo)運(yùn)動(dòng)檢測(cè)方法有光流法、背景差分法、幀間差分法。光流法:實(shí)際上就是時(shí)間序列上的幀與幀圖像的像素級(jí)運(yùn)動(dòng)。若沒(méi)有目標(biāo)物體運(yùn)動(dòng),那么整個(gè)區(qū)域的光流矢量變化是連續(xù)的,否則不連續(xù),就可以判定是存在目標(biāo)物體運(yùn)動(dòng)。缺點(diǎn):計(jì)算復(fù)雜,時(shí)間開(kāi)銷大,不適合進(jìn)行實(shí)時(shí)處理。背景差分法:將當(dāng)前的幀圖像同已知背景進(jìn)行比較從而檢測(cè)運(yùn)動(dòng)物體的方法。缺點(diǎn):與背景圖像的相關(guān)性較大,故對(duì)光照與外部條件的變化非常敏感。幀間差分法:一種通過(guò)對(duì)序列中相鄰兩幀或多幀圖像作差分運(yùn)算來(lái)識(shí)別是否有運(yùn)動(dòng)目標(biāo)的方法。優(yōu)點(diǎn):易于實(shí)現(xiàn),程序復(fù)雜度低,適應(yīng)性良好,穩(wěn)定性好[2]。
本文就是基于ARM圖像處理實(shí)現(xiàn)一種安防監(jiān)控,在嵌入式Linux系統(tǒng)平臺(tái)上,利用CMOS攝像頭采集圖像,利用V4l2[3]的API接口函數(shù),采集實(shí)時(shí)圖像,再利用幀間差分法這一目標(biāo)運(yùn)動(dòng)檢測(cè)方法進(jìn)行監(jiān)控,檢測(cè)是否安全。當(dāng)監(jiān)控到異樣時(shí),利用GSM模塊把信息傳送出去。
所設(shè)計(jì)的系統(tǒng)主要由S3C410處理器、CMOS攝像頭、GSM模塊TC35I、OK6410開(kāi)發(fā)板和LCD顯示屏構(gòu)成。系統(tǒng)硬件組成如圖1所示。系統(tǒng)功能示意圖如圖2所示。本設(shè)計(jì)采用了Sumsung公司的S3C6410處理器,另外配置了2 G的NAND Flash存儲(chǔ)器和256 MB的內(nèi)存。S3C6410是一個(gè)基于ARM11的16/32位的RISC微處理器,采用64/32位內(nèi)部總線框架,擁有ARM1176JZF-S的核。內(nèi)置強(qiáng)大的硬件加速器,集成了一個(gè)MFC支持MPEG4/H.263/H.264編解碼和VCI的解碼。
圖1 系統(tǒng)硬件組成圖
圖2 系統(tǒng)功能示意圖
CMOS攝像頭采用的是130萬(wàn)像素的CMOS攝像頭OV9650,20引腳封裝。GSM模塊使用的是德國(guó)西門(mén)子工業(yè)GSM模塊TC35I。該模塊支持語(yǔ)音和數(shù)據(jù)信號(hào)傳輸,利用AT指令可雙向傳輸指令和數(shù)據(jù),接口方式支持串口、USB,工作在EGSM900和GSM1800雙頻段。TC35I支持GSM 07.05所定義的AT指令集的指令,數(shù)據(jù)接口通過(guò)AT命令實(shí)現(xiàn)傳輸指令和數(shù)據(jù),可以傳輸Text和PDU兩種格式的短信。Text格式下只能發(fā)送ASCII碼表中的前128個(gè)字符(也就是英文字母,英文標(biāo)點(diǎn)符號(hào),阿拉伯?dāng)?shù)字),此次設(shè)計(jì)要發(fā)送中文字符,故選擇PDU格式。
該系統(tǒng)通過(guò)CMOS攝像頭監(jiān)控目標(biāo),采集圖像,將圖像數(shù)據(jù)送到緩沖區(qū),對(duì)數(shù)據(jù)進(jìn)行處理,將其轉(zhuǎn)化為L(zhǎng)CD可顯示的格式。調(diào)用mmap()函數(shù)將數(shù)據(jù)映射到內(nèi)存,經(jīng)過(guò)幀間差分進(jìn)行安全監(jiān)控。檢測(cè)到異樣后,利用GSM模塊把信息傳送出去。
軟件流程圖如下,如圖3所示。首先啟動(dòng)該系統(tǒng)。打開(kāi)視頻設(shè)備,進(jìn)行初始化設(shè)置,包括攝像頭的基本信息,所采集圖像的各種屬性,進(jìn)行映射的幀信息等。然后開(kāi)始采集實(shí)時(shí)圖像,獲取幀數(shù)據(jù)。對(duì)相鄰的兩幀圖像進(jìn)行逐點(diǎn)相減,判斷是否異常。若異常,則通過(guò)GSM模塊把信息傳送出去;反之,則繼續(xù)采集圖像。最后監(jiān)控結(jié)束時(shí),關(guān)閉視頻設(shè)備,關(guān)閉系統(tǒng)。
本次設(shè)計(jì)主要利用V4l2的API接口函數(shù),采集實(shí)時(shí)圖像。V4l2是linux下用于獲取視頻和音頻數(shù)據(jù)的API接口,配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動(dòng)程序,可以實(shí)現(xiàn)圖像采集、廣播等功能。Linux下,所有外設(shè)都被看成是一種特殊文件,即“設(shè)備文件”??梢韵裨L問(wèn)普通文件一樣對(duì)其進(jìn)行讀寫(xiě)[3]。
首先利用open()函數(shù)打開(kāi)視頻設(shè)備。接著利用ioctl相關(guān)函數(shù)獲取攝像頭信息,包含攝像頭名稱,攝像頭所支持的最大、最小分辨率等。該函數(shù)成功返回后,信息便從內(nèi)核空間拷貝到用戶空間。再讀取攝像頭緩沖中video_picture信息,包含攝像頭采集圖像的各種屬性,如亮度、色調(diào)等。完成以上工作就可以對(duì)圖像進(jìn)行采集了。利用Video4 Linux2的API接口函數(shù)采集圖像有兩種典型方法。一種是read()直接讀取,另一種是mmap()內(nèi)存映射法。本次設(shè)計(jì)采用的是后者。函數(shù)原型是void mmap(void addr,size_t len,int prot,int flags,int fd,off_t offset)。mmap()內(nèi)存映射法使得幾個(gè)進(jìn)程之間通過(guò)映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪問(wèn)普通內(nèi)存一樣對(duì)文件進(jìn)行訪問(wèn)[4]。該方法首先獲取攝像頭存儲(chǔ)緩沖區(qū)的幀信息,之后利用mmap()函數(shù)將攝像頭對(duì)應(yīng)的設(shè)備文件映射到內(nèi)存區(qū)。接著調(diào)用ioctl()相關(guān)函數(shù)進(jìn)行采集截取。若成功,則開(kāi)始一幀圖像非阻塞的采集截取。接著再調(diào)用ioctl()相關(guān)函數(shù)判斷該幀圖像是否截取完畢,成功返回就表示截取完畢,再轉(zhuǎn)換格式,轉(zhuǎn)換成RGB格式,在LCD上顯示。
圖3 軟件流程圖
本次設(shè)計(jì)采用的是幀間差分法。當(dāng)攝像頭所監(jiān)控的場(chǎng)景中出現(xiàn)異常物體運(yùn)動(dòng)時(shí),相鄰兩幀或多幀圖像的灰度值會(huì)出現(xiàn)較為明顯的變化。兩幀相減,得到兩幀圖像灰度值的的差值,再通過(guò)與閾值的比較來(lái)分析圖像中是否有異常物體運(yùn)動(dòng)。
幀間差分的數(shù)學(xué)表達(dá)式如下,其中fk(x,y)與fk-1(x,y)為連續(xù)的兩幀圖像,Dk(x,y)為它們的差值:
由式(2)得出的R(x,y)實(shí)際上是由0或1組成的矩陣。當(dāng)矩陣中元素1的個(gè)數(shù)超過(guò)截取的幀圖像像素點(diǎn)個(gè)數(shù)的一半時(shí),處理器就判定發(fā)生了異常情況。本系統(tǒng)所截取的幀圖像大小為320×240。故當(dāng)矩陣R(x,y)中元素1的個(gè)數(shù)超過(guò)3 940時(shí),處理器便判定監(jiān)控發(fā)生了異常,本次設(shè)計(jì)中閾值T的選取為10。
使用GSM模塊,首先在TC35I背面的SIM卡槽中插入SIM卡,上電復(fù)位后,對(duì)TC35I進(jìn)行參數(shù)設(shè)置,包括波特率,校驗(yàn)位,停止位,短信發(fā)送格式,短消息中心號(hào)碼等。本次設(shè)計(jì)選擇PDU格式。當(dāng)處理器S3C6410檢測(cè)到異常情況時(shí),將指令通過(guò)串口發(fā)送給TC35I,TC35I再發(fā)送信息出去。此次設(shè)計(jì)選擇發(fā)送的中文代碼是“有異樣”。通過(guò)Unicode碼轉(zhuǎn)換軟件得到其Unicode代碼。為“67095F026837”。下面為GSM模塊主要程序段。
void GSM_Sent_PDU_Message3(void)
{
unsigned char j;
char code str1[]="0891683108501505F011000D9168";∥str1為手機(jī)卡所在地短信中心號(hào)碼變換后的號(hào)碼
char code str11[]="000800"; ∥固定要加的部分
char code str21[]="67095F026837"; ∥“有異樣”的Unicode代碼
char code Phone_num[]="5158452580F5"; ∥為要接受信息的號(hào)碼
Delay_ms(Delay_Time); ∥延時(shí)
Send_ASCII("AT+CMGS=19"); ∥AT指令,設(shè)定為PDU模式
Send_Hex(0x0d); ∥發(fā)送回車(chē)符
Send_Hex(0x0a); ∥發(fā)送換行符
Delay_ms(1000); ∥延時(shí)
CLR_Buf1(); ∥清除緩存函數(shù)
Send_ASCII(str1);
for(j=0;j<12;j++)
Send_Hex(Phone_num[j]);
Send_ASCII(str11); ∥str11為“00800”,
固定要加的部分Send_ASCII(str21);”
Send_Hex(0x1A);
Send_Hex(0x0d); ∥發(fā)送回車(chē)符
Send_Hex(0x0a); ∥發(fā)送換行符
Delay_ms(1000); ∥延時(shí)
while(!Hand("OK"));
CLR_Buf1(); ∥清除緩存函數(shù)
}
該系統(tǒng)設(shè)計(jì)在家居環(huán)境中進(jìn)行了模擬測(cè)試。啟動(dòng)該系統(tǒng),待系統(tǒng)穩(wěn)定后,便開(kāi)始監(jiān)控。當(dāng)有陌生人接近大門(mén),也就是監(jiān)控環(huán)境發(fā)生變化時(shí),系統(tǒng)會(huì)捕捉到這一信息,會(huì)發(fā)短消息給預(yù)先設(shè)定好的號(hào)碼。實(shí)驗(yàn)結(jié)果如下圖。圖4為監(jiān)測(cè)結(jié)果,圖5為手機(jī)接收到的有異常的消息。本設(shè)計(jì)利用R(x,y)矩陣很好的避開(kāi)了由于光線變化,小鳥(niǎo)干擾等造成的誤判問(wèn)題。但該算法仍存在缺點(diǎn),不能提取監(jiān)控環(huán)境中新增加對(duì)象的完整區(qū)域,只能提取出該對(duì)象邊界。檢測(cè)出的目標(biāo)輪廓可能存在空洞現(xiàn)象[2]。
本文主要設(shè)計(jì)了一種基于S3C6410處理器,以嵌入式linux為軟件平臺(tái),利用幀間差分算法,結(jié)合GSM模塊,實(shí)現(xiàn)對(duì)安防環(huán)境的監(jiān)控。該設(shè)計(jì)硬件簡(jiǎn)單,體積小,效率高,可擴(kuò)展性強(qiáng),可靠性良好,算法易于實(shí)現(xiàn)。不僅適用于家居環(huán)境,也可在私人辦公室等需要監(jiān)控的地方靈活運(yùn)用,市場(chǎng)前景良好。
圖4 模擬實(shí)驗(yàn)結(jié)果圖
圖5 手機(jī)接收到的消息
[1]楊國(guó)斌.基于嵌入式的智能安防系統(tǒng)的設(shè)計(jì)與研究[D].長(zhǎng)沙:湖南大學(xué),2012
[2]張劍林,王青獅,賈昊君.基于幀間差分的運(yùn)動(dòng)目標(biāo)檢測(cè)[J].中國(guó)科技博覽,2012(6):46-46
[3]唐人財(cái),劉連浩.基于嵌入式linux遠(yuǎn)程圖像監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2010(11):31-34
[4]李鋒,楊延強(qiáng).基于嵌入式Linux的運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)[J].現(xiàn)代電子技術(shù),2013,36(2):62-64
[5]韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2007
[6]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003
[7]韓斌杰.GSM原理及其網(wǎng)絡(luò)優(yōu)化[M].北京:機(jī)械工業(yè)出版社,2001
[8]吳玉田,王瑞光,鄭喜鳳,等.GSM 模塊TC35及其應(yīng)用[J].計(jì)算機(jī)測(cè)量與控制,2012,10(8):557-560