《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種帶有運(yùn)動(dòng)檢測(cè)功能的無線圖像監(jiān)控終端
一種帶有運(yùn)動(dòng)檢測(cè)功能的無線圖像監(jiān)控終端
余展然,彭楚武,,黎福海,,王 鑫
湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙410082
摘要: 介紹了監(jiān)控終端系統(tǒng)的構(gòu)成,,重點(diǎn)闡述圖像采集,、運(yùn)動(dòng)檢測(cè)和GPRS無線數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法,將感興趣的監(jiān)控圖像傳輸至監(jiān)控中心,,從而大大減少GPRS傳輸?shù)臄?shù)據(jù)流量,,降低了成本,減輕了監(jiān)控人員的工作強(qiáng)度,。
Abstract:
Key words :

摘  要: 介紹了監(jiān)控終端系統(tǒng)的構(gòu)成,,重點(diǎn)闡述圖像采集,、運(yùn)動(dòng)檢測(cè)GPRS無線數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法,將感興趣的監(jiān)控圖像傳輸至監(jiān)控中心,從而大大減少GPRS傳輸?shù)臄?shù)據(jù)流量,,降低了成本,,減輕了監(jiān)控人員的工作強(qiáng)度,。
關(guān)鍵詞: ARM-Linux,;GPRS;遠(yuǎn)程監(jiān)控,;Video4Linux,;運(yùn)動(dòng)檢測(cè) 

  在需要數(shù)據(jù)傳輸?shù)那度胧较到y(tǒng)上,無線傳輸方式已成為應(yīng)用趨勢(shì),,而GPRS(General Packet Radio Service)具有永遠(yuǎn)在線,、快速登錄、高速傳輸?shù)葍?yōu)點(diǎn)[1],,被廣泛應(yīng)用于通信系統(tǒng),、無線抄表、無線監(jiān)控設(shè)備中,。
  傳統(tǒng)的無線圖像監(jiān)控系統(tǒng),,需要不間斷地把監(jiān)控圖像傳送至監(jiān)控中心,而這些監(jiān)控圖像中的有用圖像卻只占少數(shù),,這就浪費(fèi)了大量的數(shù)據(jù)流量,,也增加了成本。同時(shí),,監(jiān)控人員必須時(shí)刻注意監(jiān)控畫面,,這不僅枯燥乏味,而且很容易忽略掉重要的監(jiān)控畫面。因此,,開發(fā)一種能自動(dòng)篩選出用戶感興趣的圖像并發(fā)送至監(jiān)控中心的監(jiān)控終端具有重要意義,。
  本無線監(jiān)控終端以三星公司的S3C2440A為主控芯片,移植了Linux操作系統(tǒng),。系統(tǒng)對(duì)USB攝像頭采集到的圖像進(jìn)行運(yùn)動(dòng)檢測(cè),如果有物體在監(jiān)控區(qū)域內(nèi)運(yùn)動(dòng),,則將監(jiān)控圖像通過GPRS傳送至監(jiān)控中心,。由于只發(fā)送用戶感興趣的監(jiān)控圖像,從而大大降低了無線數(shù)據(jù)傳輸中的數(shù)據(jù)流量,,避免了傳統(tǒng)無線監(jiān)控系統(tǒng)中因傳輸大量無用的監(jiān)控圖像而造成的數(shù)據(jù)流量浪費(fèi),,同時(shí)也減輕了監(jiān)控人員因長(zhǎng)時(shí)間監(jiān)視監(jiān)控圖像帶來的工作強(qiáng)度。
1 系統(tǒng)構(gòu)成
  本系統(tǒng)由硬件,、底層軟件和應(yīng)用軟件三部分組成,,系統(tǒng)結(jié)構(gòu)如圖1所示。

  系統(tǒng)硬件的微處理器采用三星公司的S3C2440A處理器,,該處理器內(nèi)含一個(gè)ARM920T內(nèi)核,,標(biāo)準(zhǔn)工作頻率為400 MHz,內(nèi)嵌豐富的外圍設(shè)備,,片外擴(kuò)展64 MB的Nandflash(型號(hào):K9F1208D0A)和2片32 MB的SDRAM(型號(hào)為HY57V561620),;攝像頭采用基于ZC301器件的奧尼S888,采用CMOS感光器件,,48萬像素,,最大分辨率為800×600,需要單獨(dú)安裝驅(qū)動(dòng)程序,。GPRS模塊采用華為公司的GTM900雙頻段GSM/GPRS無線模塊,,它支持標(biāo)準(zhǔn)的AT命令及增強(qiáng)AT命令,內(nèi)嵌TCP/IP協(xié)議,,工作頻段為800 MHz/900 MHz/1 800 MHz/850 MHz/1 900 MHz,。本系統(tǒng)采用RS232串口與S3C2440相連,SIM卡電壓為3 V,。
 底層軟件由BootLoader(vivi),、嵌入式Linux內(nèi)核(版本為2.6.17)、設(shè)備驅(qū)動(dòng)程序,、文件系統(tǒng)組成,。在內(nèi)核配置中,需要添加對(duì)視頻設(shè)備編程接口的支持,,配置菜單路徑選擇Device Drivers->Multimedia device->Video for linux,。
  應(yīng)用軟件主要包括數(shù)據(jù)采集、運(yùn)動(dòng)檢測(cè)和圖像傳輸三部分,。
2 應(yīng)用軟件設(shè)計(jì)
2.1 基本流程
  應(yīng)用軟件的核心模塊包括圖像采集模塊,、運(yùn)動(dòng)檢測(cè)模塊和GPRS無線數(shù)據(jù)傳輸模塊,。首先圖像采集模塊用USB攝像頭采集分辨率為320×240的圖像,然后運(yùn)動(dòng)檢測(cè)模塊采用改進(jìn)的幀差法對(duì)采集到的圖像進(jìn)行運(yùn)動(dòng)檢測(cè)。如果運(yùn)動(dòng)檢測(cè)模塊檢測(cè)出監(jiān)控區(qū)域內(nèi)有運(yùn)動(dòng)物體,,則將有物體運(yùn)動(dòng)的圖像添加到圖像發(fā)送隊(duì)列,,并喚醒GPRS數(shù)據(jù)傳輸線程,將隊(duì)列中的圖像發(fā)送至監(jiān)控中心,。當(dāng)圖像發(fā)送隊(duì)列中的圖像全部被發(fā)送出去后,,GPRS數(shù)據(jù)傳輸線程將置于休眠狀態(tài)。
2.2 Video4Linux的圖像采集
  Video4Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),,它為針對(duì)視頻設(shè)備(常見的電視捕獲卡及USB口的攝像頭)的應(yīng)用程序編程提供一系列接口函數(shù),,同時(shí)也提供無線電通信和文字電視廣播解碼和垂直消隱的數(shù)據(jù)接口[2]。本文主要針對(duì)USB攝像頭設(shè)備文件/dev/video0進(jìn)行圖像采集方面的程序設(shè)計(jì),。下面介紹主要步驟及部分代碼:
  (1)打開視頻設(shè)備
  int fd,;  //為視頻設(shè)備的文件描述符
  fd=(open(“dev/video0”,O_RDWR)),;
  if(fd<0){  //打開失敗
  printf(“No Camera found!\n”),;
  exit(-1);
  }
  (2)讀取設(shè)備信息
  ioctl函數(shù)將攝像頭的信息存放到結(jié)構(gòu)videocap中,,攝像頭信息主要包含名稱,、類型、通道數(shù),、圖像寬度,、圖像高度等。
  struct video_capability videocap,;
  if(ioctl (fd,,VIDIOCGCAP,&videocap) == -1){
  printf(″Couldn′t get videodevice capability″),;
  exit(-1),;
  }
  (3)更改設(shè)備當(dāng)前設(shè)置
  設(shè)置圖像幀的屬性,將需要設(shè)置的屬性保存在結(jié)構(gòu)體videopict中,,主要包含圖像亮度,、色彩、對(duì)比度,、調(diào)色板參數(shù)等,。
  if (ioctl (fd,VIDIOCSPICT,,&videopict) < 0){
      printf(″Couldnt set videopict params with VIDIOCSPICT″),;
          exit(-1);
  }
  (4)圖像采集
  圖像采集主要有2種方式:read()直接讀取和mmap()內(nèi)存映射。本系統(tǒng)采用mmap()內(nèi)存映射方式,。
  vmmap.height=240,;
  vmmap.width=320;
  vmmap.format=vd-> VIDEO_PALETTE_JPEG,;
  ioctl (vd->fd,,VIDIOCMCAPTURE,&(vd->vmmap),;
  ioctl (vd->fd,,VIDIOCSYNC,0),;
  pFramebuffer=(unsigned char*) mmap(0,,vd->videombuf.size,,
  PROT_READ | PROT_WRITE,,MAP_SHARED,vd->fd,,0),;
  第一個(gè)ioctl()設(shè)置了采集的圖像大小為320×240,圖像格式為JPEG,;第二個(gè)ioctl()設(shè)置為單幀采集,,再用mmap()函數(shù)將圖像數(shù)據(jù)映射到pFramebuffer指針?biāo)傅膬?nèi)存中。
2.3 運(yùn)動(dòng)檢測(cè)
  采集到監(jiān)控圖像之后,,就可進(jìn)行運(yùn)動(dòng)檢測(cè)了,。視頻圖像處理中,運(yùn)動(dòng)目標(biāo)檢測(cè)方法主要有背景差分法,、幀差法和光流法,。本系統(tǒng)采用幀差法。其原理是:當(dāng)監(jiān)控區(qū)域內(nèi)有物體運(yùn)動(dòng)時(shí),,在采集的圖像幀中,,對(duì)應(yīng)區(qū)域的像素值會(huì)發(fā)生明顯變化,這時(shí)只需將兩幀差分,,得到兩幀圖像亮度差的絕對(duì)值,。如果絕對(duì)值比所設(shè)定的閾值大,則區(qū)域內(nèi)存在運(yùn)動(dòng)物體,;反之,,則不存在運(yùn)動(dòng)物體。用公式表達(dá)如下[3]:
 

  實(shí)際應(yīng)用中,,閾值T的選擇相當(dāng)關(guān)鍵,。如果閾值過低,則不能有效地抑制圖像中的噪聲;反之將抑制圖像中有用的變化信息,。通常閾值的選擇與監(jiān)控場(chǎng)景的光照和攝像頭位置等外界具體環(huán)境條件有關(guān),,不可能對(duì)不同監(jiān)控環(huán)境設(shè)置相同的閾值。本文采用對(duì)不同的監(jiān)控環(huán)境自動(dòng)計(jì)算閾值,,方法是在開始采集圖像前,,先采集N幅背景圖像,將這些圖像亮度分量的平均值作為該監(jiān)控環(huán)境的閾值,。公式如下:
  

   本系統(tǒng)只需檢測(cè)出監(jiān)控區(qū)域內(nèi)有無物體運(yùn)動(dòng),,無需提取出對(duì)象的完整區(qū)域,因此只需在圖像差分時(shí),,統(tǒng)計(jì)大于閾值T的像素點(diǎn)數(shù),。如果像素點(diǎn)數(shù)超過報(bào)警閾值,表明有物體運(yùn)動(dòng),;反之則可能是光線變化或噪聲干擾,。這樣不僅避免幀差法無法精確計(jì)算運(yùn)動(dòng)區(qū)域的缺點(diǎn),同時(shí)也減輕了處理器的運(yùn)算壓力,。程序流程如圖2所示,。

2.4 GPRS無線數(shù)據(jù)傳輸
   本系統(tǒng)的GPRS模塊主要用于將送入圖像發(fā)送隊(duì)列中的有運(yùn)動(dòng)物體的監(jiān)控圖像傳輸至監(jiān)控中心。數(shù)據(jù)的發(fā)送流程圖如圖3所示,。

  GPRS模塊GTM900B的主要初始化流程為:配置APN->進(jìn)入TCPIP功能->打開一條TCP鏈接,,由于該模塊內(nèi)嵌TCP/IP協(xié)議,直接操作AT指令就可實(shí)現(xiàn)數(shù)據(jù)傳輸,,主要初始化部分代碼如下:
  SendData(″AT+CGDCONT=1,,\″IP\″,\″CMNET\″″,,13),;
  … //檢查是否配置成功
  SendData(″AT%ETCPIP″,13),;
  … //檢查是否進(jìn)入tcpip
  SendData(″AT%IPOPEN=\″TCP\″,,\″202.206.1.26\″,23″,,13),;
  …
  函數(shù)SendData()的功能是向串口設(shè)備發(fā)送數(shù)據(jù)。
  初始化時(shí)需注意兩點(diǎn):
  (1)模塊上電20 s~30 s后再進(jìn)行TCPIP相關(guān)命令的使用,,因?yàn)槟K需要時(shí)間搜索網(wǎng)絡(luò),,以及相關(guān)信息初始化等。
  (2)使用AT%ETCPIP命令,,當(dāng)命令還沒有返回時(shí),,串口有任何輸入都會(huì)導(dǎo)致該命令強(qiáng)制結(jié)束,,有%IPCLOSE:5的返回,表明模塊退出TCPIP功能,,這時(shí)必須重新使用AT%ETCPIP進(jìn)行TCPIP功能的打開操作,。
  當(dāng)GPRS模塊初始化成功后,模塊就已經(jīng)接入Internet,,此時(shí)就可進(jìn)行無線數(shù)據(jù)傳輸了,,主要操作AT指令:AT%IPSEND。需要注意的是,,在設(shè)置AT%IOMODE=1的數(shù)據(jù)傳輸模式下,,數(shù)據(jù)包大小不能超過1 024 K,因此一幅圖像須分割成多個(gè)數(shù)據(jù)包進(jìn)行傳送,,而且數(shù)據(jù)收發(fā)時(shí)需要進(jìn)行ASCII和HEX的格式轉(zhuǎn)換,。
3 測(cè)試結(jié)果
  實(shí)際測(cè)試時(shí),監(jiān)控環(huán)境的閾值計(jì)算值為11,,報(bào)警閾值取1 000,,灰度值轉(zhuǎn)換公式為gray=r×0.3+g×0.6+b×0.1,計(jì)算出的大于閾值的像素點(diǎn)有13 562個(gè),,大于報(bào)警閾值,,GPRS模塊開始傳送圖像,。試驗(yàn)圖像如圖4所示,。

  S3C2440A的核心工作頻率為406.425 MHz,當(dāng)GPRS模塊空閑時(shí),,從采集兩幅320×240分辨率的圖像開始到運(yùn)動(dòng)檢測(cè)結(jié)束,,時(shí)間約為55 ms,當(dāng)GPRS忙時(shí),,時(shí)間約為115 ms,,基本可以實(shí)現(xiàn)對(duì)有運(yùn)動(dòng)物體的監(jiān)控圖像的捕捉。GPRS模塊發(fā)送一幅采集的JPEG圖像,,在網(wǎng)絡(luò)正常情況下,,系統(tǒng)延時(shí)通常不超過5 s。
  本文簡(jiǎn)要介紹了無線監(jiān)控終端的系統(tǒng)構(gòu)成,,詳細(xì)闡述了應(yīng)用軟件的3個(gè)核心模塊的實(shí)現(xiàn)方法,。試驗(yàn)運(yùn)行結(jié)果表明,本系統(tǒng)實(shí)現(xiàn)了將有運(yùn)動(dòng)物體的監(jiān)控畫面?zhèn)鬏斨帘O(jiān)控中心的要求,,具有成本低,、結(jié)構(gòu)簡(jiǎn)單等特點(diǎn)。與傳統(tǒng)的無線監(jiān)控系統(tǒng)相比,,本系統(tǒng)可大大降低無線數(shù)據(jù)傳輸中的數(shù)據(jù)流量,,同時(shí)也省去了監(jiān)控人員長(zhǎng)時(shí)間監(jiān)視監(jiān)控圖像的工作,。此外,本系統(tǒng)在軟硬件設(shè)計(jì)時(shí)充分考慮了不同用戶的需求,,只需對(duì)軟硬件稍加擴(kuò)展,,就可實(shí)現(xiàn)將監(jiān)控畫面或報(bào)警短信傳送至用戶的彩信手機(jī),具有很好的使用和推廣價(jià)值,。
參考文獻(xiàn)
[1] 里吉斯.通用分組無線業(yè)務(wù)(GPRS)技術(shù)與應(yīng)用[M].北京:人民郵電出版社,,2004.
[2] Alan Cox.Video4Linux Programming.2000.
[3] 李剛,邱尚斌.基于不背景差法和幀間差法的運(yùn)動(dòng)目標(biāo)檢測(cè)方法[J].儀器儀表學(xué)報(bào),,2006(8):961-964.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。