新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 一種帶有運動檢測功能的無線圖像監控終端

        一種帶有運動檢測功能的無線圖像監控終端

        作者: 時間:2010-01-13 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/188393.htm

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

         

        linux相關文章:linux教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 托里县| 江口县| 阿拉尔市| 栖霞市| 南靖县| 榆社县| 青海省| 滁州市| 准格尔旗| 东莞市| 秦安县| 西乌珠穆沁旗| 海丰县| 石家庄市| 齐齐哈尔市| 西乡县| 米脂县| 凌云县| 淅川县| 惠州市| 舟山市| 新晃| 海原县| 宁陕县| 新宁县| 泗洪县| 阜康市| 怀化市| 肥东县| 广汉市| 获嘉县| 阿勒泰市| 东兰县| 汾西县| 万宁市| 托里县| 漾濞| 建湖县| 柘荣县| 宣城市| 腾冲县|