新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 一種帶有運動檢測功能的無線圖像監(jiān)控終端

一種帶有運動檢測功能的無線圖像監(jiān)控終端

作者: 時間:2010-01-13 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://butianyuan.cn/article/188393.htm

  系統(tǒng)硬件的微處理器采用三星公司的S3C2440A處理器,該處理器內(nèi)含一個ARM920T內(nèi)核,標(biāo)準(zhǔn)工作頻率為400 MHz,內(nèi)嵌豐富的外圍設(shè)備,片外擴展64 MB的Nandflash(型號:K9F1208D0A)和2片32 MB的SDRAM(型號為HY57V561620);攝像頭采用基于ZC301器件的奧尼S888,采用CMOS感光器件,48萬像素,最大分辨率為800×600,需要單獨安裝驅(qū)動程序。GPRS模塊采用華為公司的GTM900雙頻段GSM/GPRS無線模塊,它支持標(biāo)準(zhǔn)的AT命令及增強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ū)動程序、文件系統(tǒng)組成。在內(nèi)核配置中,需要添加對視頻設(shè)備編程接口的支持,配置菜單路徑選擇Device Drivers->Multimedia device->Video for linux。
  應(yīng)用軟件主要包括數(shù)據(jù)采集、運動檢測和圖像傳輸三部分。
2 應(yīng)用軟件設(shè)計
2.1 基本流程
  應(yīng)用軟件的核心模塊包括圖像采集模塊、運動檢測模塊和GPRS無線數(shù)據(jù)傳輸模塊。首先圖像采集模塊用USB攝像頭采集分辨率為320×240的圖像,然后運動檢測模塊采用改進的幀差法對采集到的圖像進行運動檢測。如果運動檢測模塊檢測出監(jiān)控區(qū)域內(nèi)有運動物體,則將有物體運動的圖像添加到圖像發(fā)送隊列,并喚醒GPRS數(shù)據(jù)傳輸線程,將隊列中的圖像發(fā)送至監(jiān)控中心。當(dāng)圖像發(fā)送隊列中的圖像全部被發(fā)送出去后,GPRS數(shù)據(jù)傳輸線程將置于休眠狀態(tài)。
2.2 Video4Linux的圖像采集
  Video4Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,它為針對視頻設(shè)備(常見的電視捕獲卡及USB口的攝像頭)的應(yīng)用程序編程提供一系列接口函數(shù),同時也提供無線電通信和文字電視廣播解碼和垂直消隱的數(shù)據(jù)接口[2]。本文主要針對USB攝像頭設(shè)備文件/dev/video0進行圖像采集方面的程序設(shè)計。下面介紹主要步驟及部分代碼:
  (1)打開視頻設(shè)備
  int fd;//為視頻設(shè)備的文件描述符
  fd=(open(“dev/video0”,O_RDWR));
  if(fd0){//打開失敗
  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中,主要包含圖像亮度、色彩、對比度、調(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);
  第一個ioctl()設(shè)置了采集的圖像大小為320×240,圖像格式為JPEG;第二個ioctl()設(shè)置為單幀采集,再用mmap()函數(shù)將圖像數(shù)據(jù)映射到pFramebuffer指針?biāo)傅膬?nèi)存中。
2.3 運動檢測
  采集到監(jiān)控圖像之后,就可進行運動檢測了。視頻圖像處理中,運動目標(biāo)檢測方法主要有背景差分法、幀差法和光流法。本系統(tǒng)采用幀差法。其原理是:當(dāng)監(jiān)控區(qū)域內(nèi)有物體運動時,在采集的圖像幀中,對應(yīng)區(qū)域的像素值會發(fā)生明顯變化,這時只需將兩幀差分,得到兩幀圖像亮度差的絕對值。如果絕對值比所設(shè)定的閾值大,則區(qū)域內(nèi)存在運動物體;反之,則不存在運動物體。用公式表達如下[3]:

 

linux相關(guān)文章:linux教程



上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉