基于Windows CE的智能家居安防系統(tǒng)_第1頁
基于Windows CE的智能家居安防系統(tǒng)_第2頁
基于Windows CE的智能家居安防系統(tǒng)_第3頁
基于Windows CE的智能家居安防系統(tǒng)_第4頁
基于Windows CE的智能家居安防系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于Windows CE的智能家居安防系統(tǒng)的研究-Intelligent Security System for House摘要 eDog系統(tǒng)是一個面向家庭用戶的基于eBoxII在Microsoft Windows CE 5.0平臺下開發(fā)的智能家居安防保全系統(tǒng)。eDog可以通過攝像頭將采集到的實時視頻圖像進行運動檢測,當發(fā)現(xiàn)有運動產(chǎn)生時,通過撥打電話等多種方式自動向用戶發(fā)出警報,同時將實時捕獲的圖像上傳到ftp服務(wù)器。eDog系統(tǒng)支持標準Web瀏覽和Web遠程控制,并可隨時檢索、回放歷史視頻記錄。用戶可以由接受到的電話做出不同的反應(yīng),控制系統(tǒng)發(fā)出警報。系統(tǒng)提供了良好的用戶界面,穩(wěn)定的運行環(huán)境,

2、便捷的遠程操作,強大的擴展功能,有較高的實際應(yīng)用價值。關(guān)鍵詞 嵌入式 圖像采集 運動檢測 串口通信 Abstract: The intelligent security system for house is designed for the family user. The eDog system is based on the eBoxII platform and developed in Microsoft Windows CE 5.0 environment. It uses a web camera to capture video picture, then does motio

3、n detection. If there is some motion the system can alarm automatically through many ways such as give someone a ring or and submit the motorial video pictures to the appointed server to backup. Furthermore the system supports standard Web, WAP browser so user can access the system remotely to contr

4、ol, search or review the history video record. The system has offered a nicer interface, steady running environment, convenient long-range operation, strong expanded function, so it has a well using value.Keyword: embedded system、Video collection、Motion estimation、serial communication目錄摘要1關(guān)鍵詞1Abstra

5、ct:2Keyword:2引言:5第一章相關(guān)介紹51.1 背景知識51.1.1 嵌入式系統(tǒng)的介紹51.1.2 Windows CE的介紹51.1.3 Windows CE的設(shè)計目標61.1.4 eBoxII介紹61.1.5 EVC概述71.1.6 Platform Builder71.2 Windows CE程序開發(fā)81.2.1 事件驅(qū)動和消息響應(yīng)機制81.2.2 Windows CE程序和Windows程序的不同點81.3 eDog系統(tǒng)主要功能91.3 系統(tǒng)特色9第二章程序的模塊設(shè)計92.1 eDog的頂層數(shù)據(jù)流圖:92.2 eDog的層次方框圖:102.3主程序流程圖10第三章在 Plat

6、form Builder定制Windows CE113.1 PB簡介113.2 BSP簡介123.3 定制Windows CE.123.4 Windows CE 注冊表簡介123.5 注冊表編輯器13第四章圖像模塊144.1 視頻采集144.1.1 BMP文件格式144.1.2 視頻采集相關(guān)說明144.1.3 CE的流接口驅(qū)動程序154.1.4 即時圖像捕捉164.2 運動檢測19計算幀差絕對值194.2.2 eDog中運動檢測模塊的具體實現(xiàn)方法204.3 圖像壓縮23第五章?lián)艽螂娫捘K255.1 串口通信255.2 RS-232串行接口標準255.3Modem 撥打電話模塊26結(jié)論:29致謝

7、語:30參考文獻:30引言:隨著計算機通信技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,無線網(wǎng)絡(luò)技術(shù)已成為計算機網(wǎng)絡(luò)中一個至關(guān)重要的組成部分,它的應(yīng)用領(lǐng)域也在飛速的擴大。因此我們設(shè)計了智能家居安防保全系統(tǒng)(eDog),以增強家居安全防范的能力。eDog應(yīng)用現(xiàn)已普及的有線網(wǎng)絡(luò),固定電話網(wǎng)絡(luò),無線電話通信系統(tǒng),PC攝像頭等硬件條件,充分發(fā)揮eBoxII強大的功能;我們開發(fā)圖像捕捉程序,自主開發(fā)了運動圖像檢測算法,報警程序;創(chuàng)建本地Web服務(wù)器系統(tǒng),以及遠程通信系統(tǒng);通過友好的人機交互界面,用戶可在本地終端或遠程登陸web服務(wù)器對系統(tǒng)操作,并能穩(wěn)定工作。本文首先介紹了嵌入式系統(tǒng)的相關(guān)知識、Windows CE和在Win

8、dows CE平臺程序開發(fā)所必須做的準備。另外本文主要介紹了eDog開發(fā)的整個流程,著重介紹了圖像模塊和Modem報警模塊,其余模塊由小組其他成員完成。系統(tǒng)采用Embedded Visual C+(簡稱EVC)嵌入式編程語言在Microsoft Windows CE 5.0環(huán)境下編寫。主要介紹了開發(fā)過程中用到的算法和相關(guān)的類,并做了詳細介紹。第一章 相關(guān)介紹 1.1 背景知識1.1.1 嵌入式系統(tǒng)的介紹嵌入式系統(tǒng)是以應(yīng)用為中心,以半導體技術(shù)、控制技術(shù)、計算機技術(shù)和通訊技術(shù)為基礎(chǔ),強調(diào)硬件軟件的協(xié)同性與整合性,并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機

9、系統(tǒng)。嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序等四個部分組成,用于實現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。相關(guān)支撐硬件主要包括顯示設(shè)備、存儲設(shè)備和各種接口等,隨著功能的增強以及復雜性的不斷增加,操作系統(tǒng)成為了嵌入式系統(tǒng)不可缺少的一個基本部件。應(yīng)用程序嵌入式操作系統(tǒng)以嵌入式微處理器為核心的硬件平臺圖1.1 嵌入式系統(tǒng)的結(jié)構(gòu)圖1.1.2 Windows CE的介紹Windows CE作為windows家族的最新最小的操作系統(tǒng),是一個搶先式多任務(wù)并具有強大通信能力的Windows 32嵌入式操作系統(tǒng),是微軟專門為信息設(shè)備、移動應(yīng)用、消費類電子產(chǎn)品、嵌入式應(yīng)用等非

10、PC領(lǐng)域而設(shè)計的戰(zhàn)略性操作系統(tǒng)產(chǎn)品。它是多線程、完整優(yōu)先權(quán)和多任務(wù)的操作系統(tǒng),其基本內(nèi)核需要至少200K的ROM。它的模塊化設(shè)計允許它對于從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進行定制。工業(yè)控制是嵌入式操作系統(tǒng)的傳統(tǒng)應(yīng)用領(lǐng)域,但近年來隨著家電信息化成為愈來愈明顯的趨勢對嵌入式操作系統(tǒng)提出了許多新的要求,例如熟悉和友好的用戶界面,統(tǒng)一的編程界面,強大的通信功能等,而恰好是Windows CE的優(yōu)勢。1.1.3 Windows CE的設(shè)計目標Windows CE的設(shè)計目標是模塊化及可伸縮性,實時性能好,通信能力強大,支持多種CPU。從操作系統(tǒng)內(nèi)核的角度看,Window CE具有靈活的電源。管理

11、功能,包括睡眠/喚醒模式,在Windows CE中還使用了對象存儲(Object Store)技術(shù)包括文件系統(tǒng)注冊表及數(shù)據(jù)庫。它還具有很多高性能高效率的操作系統(tǒng)特性,包括按需換頁,共享存儲,交叉處理,同步支持大容量堆(Heap)等。Windows CE擁有良好的通信能力。它廣泛支持各種通信硬件,亦支持直接的局域網(wǎng)連接以及撥號連接,并提供與PC內(nèi)部網(wǎng)以及Internet的連接,包括用于應(yīng)用級數(shù)據(jù)傳輸?shù)脑O(shè)備至設(shè)備間的連接,在提供各種基本的通信基礎(chǔ)結(jié)構(gòu)的同時,Windows CE還提供與Windows 9x/NT的最佳集成和通信。Windows CE的圖形用戶界面相當出色,它擁有基于Microsof

12、t Internet Explorer的Internet瀏覽器,此外還支持TrueType字體。開發(fā)人員可以利用豐富靈活的控件庫在Windows CE環(huán)境下為嵌入式應(yīng)用建立各種專門的圖形用戶界面,Windows CE甚至還能支持諸如手寫體和聲音識別、動態(tài)影像、3D圖形等特殊應(yīng)用。1.1.4 eBoxII介紹eBoxII是微軟專門為Windows CE.NET平臺下程序開發(fā)定制的硬件平臺。其中微軟已經(jīng)預裝了新發(fā)布的Windows CE 5.0的鏡像,并對其進行了內(nèi)核定制。eDog的開發(fā)前必須重新定制CE內(nèi)核。下面介紹一下其硬件組成。CPUVortex86-200 Mhz (SoC: System

13、-on-Chip)RAM128MBBIOS AMI BIOSFlash MemoryExternal 64MB Bootable USB Flash Disk64MB Disk On Module (IDE Device)AudioAC97 CODEC, full compliant with AC97 V2.1MIC-in, Line-in and Line-out interface readyWatch Dog TimerSoftware Watchdog TimerThree 8254 Compatible Programmable 16-bit CountersLANRealtek

14、8100B Single chip x 2 Full-duplex transfer mode, doubles effective bandwidthThroughput: 10/100 Mbps DisplayAGP Rev 2.0 Compliant, shared system memory area up to 128MBCRT/LCD displayResolution up to 1920 x1440 true colorsKVM Switch2 ports KVM Switch with two sets of monitor, PS/2 keyboard and mouse

15、cablesPower Adapter18 Watt Power adapter for any +110V power input 圖1.2 eBoxII示意圖 EVC概述Embedded Visual C+(EVC)4.0是Microsoft公司推出的Windows CE程序的可視化開發(fā)工具,是Embedded Visual Tools的重要組成部分。利用EVC 4.0用戶可以開發(fā)出規(guī)模較大,功能較復雜的Windows CE應(yīng)用程序和流式驅(qū)動程序。Windows CE下的EVC編程都是對特定目標硬件的編程,允許CE的機器通常比PC的資源貧乏得多,所以編程時首先要明確目標硬件的特點和要求。1

16、.1.6 Platform Builder大部分嵌入式系統(tǒng)是可移植、可裁減、可定制的。且大多數(shù)嵌入式產(chǎn)品都是針對特殊的目標板進行的開發(fā)。它們大多數(shù)都需要完成特定的功能,這就說明了嵌入式操作系統(tǒng)是與應(yīng)用環(huán)境密切相關(guān)的。Platform Builder是微軟提供給Windows CE開發(fā)人員進行基于Windows CE.net平臺下嵌入式操作系統(tǒng)內(nèi)核定制的集成開發(fā)環(huán)境。它提供了所有進行設(shè)計,創(chuàng)建,編譯,測試和調(diào)試Windows CE.net操作系統(tǒng)平臺的工具。運行在桌面Windows下,開發(fā)人員可以通過交互式的環(huán)境來設(shè)計和定制內(nèi)核,選擇系統(tǒng)特性,然后進行編譯和調(diào)試。同時,開發(fā)人員還可以利用PB進行

17、驅(qū)動程序開發(fā)和應(yīng)用程序項目的開發(fā)等。1.2 Windows CE程序開發(fā)1.2.1 事件驅(qū)動和消息響應(yīng)機制Windows程序設(shè)計是一種事件驅(qū)動的程序設(shè)計模式。在程序提供給用戶的界面中有許多可操作的可視對象。用戶從所有可能的操作中任意選擇,被選擇的操作會產(chǎn)生某種特點的事件,這些事件發(fā)生后的結(jié)構(gòu)是向程序中的某些對象發(fā)出消息,然后這些對象調(diào)用相應(yīng)的消息處理函數(shù)來完成特定的操作。Windows的應(yīng)用程序最大的特點就是程序沒有固定的流程,而只是對某些處理有特定的子流程,Windows應(yīng)用程序可以說是由許多這樣的子流程構(gòu)成的。另外,Windows程序本質(zhì)上是面向?qū)ο蟮?。Windows的這種事件驅(qū)動模型的實

18、質(zhì)源于Windows的消息響應(yīng)機制。所謂的事件響應(yīng),就是對各種消息的響應(yīng)。圖1.3 Windows程序工作原理 Windows CE程序和Windows程序的不同點n Microsoft Win32 API和Windows CE API之間的不同。n Microsoft MFC標準和 MFC for Windows CE標準不同n 存儲器的限制和存儲器溢出的恢復n 電源管理的不同處理方式n 存在大量不同硬件特性和限制n 測試和調(diào)試的過程不同n Windows CE使用Unicode1.3 eDog系統(tǒng)主要功能n GUI顯示:可以在eBoxII上瀏覽實時視頻。n 本地設(shè)置運行參數(shù):可以設(shè)置系統(tǒng)各

19、運行參數(shù)。包括系統(tǒng)的啟動和結(jié)束;抓圖的圖片壓縮比、色度、亮度、對比度、灰度等參數(shù);動態(tài)檢測的靈敏度參數(shù);撥號的電話號碼;E-mail的服務(wù)器地址、收件人地址、主題等參數(shù);Ftp的地址、端口、用戶名及密碼等參數(shù); Web服務(wù)器的用戶名和密碼參數(shù)。n 報警功能:當檢測范圍內(nèi)有異常時,啟動報警功能。包括:撥打固定電話或移動電話通知用戶,發(fā)送帶附件的E-mail通知用戶等。n 數(shù)據(jù)備份:當檢測到異常時,系統(tǒng)將運動的圖片上傳到Ftp服務(wù)器備份。n 遠程Web控制:通過登陸Web服務(wù)器,同本地設(shè)置一樣可以設(shè)置系統(tǒng)的各運行參數(shù),實現(xiàn)了遠程控制功能。n 遠程實時視頻瀏覽:登陸Web服務(wù)器后,可通過視頻窗口瀏覽

20、實時視頻。n 歷史記錄查詢:登陸Web服務(wù)器后,通過讀取保存在Ftp服務(wù)器上運動圖片,在Web界面的視頻窗口顯示,實現(xiàn)歷史記錄的查詢。1.3 系統(tǒng)特色n 本系統(tǒng)可不斷地檢測周圍環(huán)境有無運動發(fā)生n 嵌入式Web服務(wù)器n 遠程控制功能n 圖形化的界面,友好的人機交互n 強大的擴展性能第二章 程序的模塊設(shè)計l 程序設(shè)計流程:模塊設(shè)計,流程圖,GUI界面,圖像采集,運動檢測,圖像壓縮,進程線程間通信,Web Service, Ftp,E-mail,撥打電話.l 本人承擔模塊:圖像采集,運動檢測,圖像壓縮,撥打電話報警。2.1 eDog的頂層數(shù)據(jù)流圖:圖2.1 eDog的頂層數(shù)據(jù)流圖2.2 eDog的層

21、次方框圖:圖2.2 eDog的層次方框圖2.3主程序流程圖圖2.3 主程序流程圖第三章 在 Platform Builder定制Windows CE3.1 PB簡介PB是微軟提供給Windows CE開發(fā)人員進行基于Windows CE.net平臺下嵌入式操作系統(tǒng)定制的集成開發(fā)環(huán)境。具體說來PB提供了幾個主要開發(fā)特性:n Platform Wizard和BSP Wizard。用來引導開發(fā)人員去創(chuàng)建一個簡單的系統(tǒng)平臺或BSP。n 基礎(chǔ)配置。為各種流行的設(shè)備類別預置的可操作系統(tǒng)基礎(chǔ)平臺,為自定義操作系統(tǒng)的創(chuàng)建提供了一個起點n 特性目錄。操作系統(tǒng)的可選特性均在特性目錄中,開發(fā)人員可以選擇相應(yīng)的特性來

22、定制操作系統(tǒng)。n 自動化的依靠性檢查。特性之間的依賴關(guān)系是系統(tǒng)自動維護的。n 系統(tǒng)為驅(qū)動程序開發(fā)提供了基本的測試工具集Windows CE.net Test Kit。n 內(nèi)核調(diào)試器。可以對自定義的操作系統(tǒng)映象進行調(diào)試,并且向用戶提供有關(guān)映象性能的信息。n 導出想到(Export Wizard)??梢韵蚱渌鸓B用戶導出自定義的目錄特性。n 導出SDK向?qū)?Export SDK Wizard)。n 遠程工具??蓤?zhí)行同基于Windows CE.net的目標設(shè)備有關(guān)的各種調(diào)試任務(wù)和信息收集任務(wù)。n 仿真器。通過硬件仿真加速和簡化了系統(tǒng)的開發(fā),使用戶可以在開發(fā)工作站上對平臺和應(yīng)用程序進行調(diào)試。n 應(yīng)用程

23、序調(diào)試器??梢栽谧远x的操作系統(tǒng)映象上對應(yīng)用程序進行調(diào)試。n 提供了對NET FrameWork Compact Edition的支持。3.2 BSP簡介BSP又稱主板支持軟件包,它是一個包括啟動程序、OEM適配層成年工序(OAL)、標準開發(fā)板(SDB)和相關(guān)硬件設(shè)備的驅(qū)動程序的軟件包。BSP是基于Windows CE.net平臺系統(tǒng)的主要部分,它主要由一些源文件和二進制文件組成。圖3.1 關(guān)系示意圖3.3 定制Windows CE.1. 新建PB工程,并啟動工程向?qū)?. 按需求依次選擇BSP、基本配置結(jié)構(gòu)、定制設(shè)備的方法、基本類庫、應(yīng)用程序、操作系統(tǒng)核心服務(wù)、通信服務(wù)、文件系統(tǒng)、字體、國家等

24、等3. 向?qū)崾拘畔ⅲ瓿晒こ滔驅(qū)?.4 Windows CE 注冊表簡介在Windows CE.net中,注冊表扮演著很重要的角色,它是一個系統(tǒng)數(shù)據(jù)庫,存儲著應(yīng)用程序、驅(qū)動程序和操作系統(tǒng)的配置信息,通常還存儲著操作系統(tǒng)調(diào)用程序的狀態(tài)信息。注冊表的結(jié)構(gòu)與磁盤的邏輯結(jié)構(gòu)相似。Windows CE.net的注冊表是一個包括關(guān)鍵字子樹的集合,它和文件目錄樹一樣有層次結(jié)構(gòu)。它的注冊表包括4個根鍵HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOT和HKEY_USERS。表3.1 Windows CE.net注冊表根鍵根鍵名鍵值內(nèi)容HKEY_LOC

25、AL_MACHINE硬件及驅(qū)動程序配置數(shù)據(jù)HKEY_CURRENT_USER用戶配置數(shù)據(jù)HKEY_CLASSES_ROOTOLE和文件類型匹配配置數(shù)據(jù)HKEY_USERS適用于所有用戶的存儲數(shù)據(jù)從Windows CE 2.0開始,注冊表就可以存儲在永久性的存儲設(shè)備中,并能夠進行讀取。在Windows CE.net中,注冊表可以在任何一個文件系統(tǒng)中以一個文件的形式存在。CE能以基于RAM中堆文件的方式來實現(xiàn)注冊表。如果RAM掉電,且OLM供應(yīng)商未進行注冊表備份,注冊表數(shù)據(jù)將丟失。3.5 注冊表編輯器為了系統(tǒng)安全性,Windows CE.net并未為最終用戶增加注冊表編輯的功能,所有在Window

26、s CE.net下不能像在9x/2000下那樣用Regedit.exe來編輯注冊表。這樣雖然能夠保證用戶不致因為錯誤使用注冊表信息而出現(xiàn)問題,但是為了一個注冊表參數(shù)的修改就可能要重新編譯整個操作系統(tǒng)內(nèi)核,這樣會在時間上造成浪費并降低工作效率。1.根鍵的定義見表3.12.對注冊表的限制,見表3.2限制內(nèi)容具體說明鍵或值的名字255個字苻數(shù)據(jù)大小4KB鍵嵌套層次最多16層3Windows CE.net下對注冊表操作的API函數(shù)l RegCreateKeyEx;l RegOpenKeyEx;l RegQueryValueEx;l RegSetValueEx;l RegCloseKey;第四章 圖像模

27、塊圖像采集模塊包括圖像采集,運動檢測,圖像壓縮三個模塊。它是eDog系統(tǒng)的基礎(chǔ),也是eDog的核心。圖像采集模塊可以獲取被監(jiān)控現(xiàn)場的實時圖像,并存成BMP格式;運動檢測模塊對圖像中運動物體檢測,當有運動物體進入監(jiān)視現(xiàn)場時,自動保存圖片并發(fā)出警報;圖像壓縮模塊可以在eDog系統(tǒng)要對圖片進行備份時對其進行格式轉(zhuǎn)換(.JPG)。4.1 視頻采集在現(xiàn)有的攝像頭及其驅(qū)動的基礎(chǔ)上,我們在EVC上針對我們定制的Windows CE系統(tǒng),開發(fā)了eDog的圖形采集模塊。該模塊能夠從監(jiān)控區(qū)域采集圖像并在運動檢測模塊的判斷下決定是否DELETE剛SAVE的BMP文件。4.1.1 BMP文件格式BMP是計算機系統(tǒng)中最

28、常見的圖像格式,他用RGB三個通道的深度來表示一個象素點的顏色值。計算機中一個典型的BMP文件包含4個主要部分:BMP文件頭、BMP信息頭、調(diào)色板和位圖數(shù)據(jù)。另外Windows CE中BMP是24位的,也就是說,RGB三個通道分別用一個字節(jié)表示。存儲圖像的具體操作,下面章節(jié)介紹。4.1.2 視頻采集相關(guān)說明首先必須向注冊表中寫入攝像頭的驅(qū)動信息。HKEY_LOCAL_MACHINEDriversBuiltInQCPCamera“Prefix”=“QCP”“Dll”=“QCP4000.dll”“Order”=dword:1l prefx:設(shè)備文件名l Dll:驅(qū)動的文件名l Order:設(shè)備文件

29、名索引² 檢測設(shè)定視頻源1、 自動檢測攝像頭是否連接好,如果沒有則應(yīng)彈出一個提示對話框,提示沒有視頻源。2、 對捕獲設(shè)備的搜索,并默認為Logitech QuickCamPro4000 攝像頭。² 捕獲設(shè)置:設(shè)定相關(guān)的參數(shù): 敏感度(Sensibility): 按0100調(diào)整質(zhì)量(Quality): 按0100調(diào)整亮度(Brightness): 按0100調(diào)整對比度(Contrast): 按0100調(diào)整色調(diào)(Hue):按0100調(diào)整顏色(Color): 按0100調(diào)整頻率:按8fps 幀率設(shè)置捕獲視頻。² 捕獲格式:對視頻的格式及圖片的格式進行設(shè)置:分辨率: 32

30、0 × 240,格式為BMP。² 回放與備份:1、 回放 對已存在存儲器上的圖片進行播放。2、 備份 對捕獲的圖片進行壓縮(.JPG)存儲與備份Ø 指定存儲的Server位置Ø 對存儲充滿時采用的方法:將最早存入的刪除并以最新的資料存入。4.1.3 CE的流接口驅(qū)動程序流接口驅(qū)動程序是以動態(tài)鏈接庫形式存在的,由設(shè)備管理器統(tǒng)一加載,管理和卸載。與具有單獨目的的內(nèi)部設(shè)備驅(qū)動程序相比,所有的流接口驅(qū)動程序都是用同一組接口并調(diào)用同一個函數(shù)集的,我們將這個函數(shù)集稱作流接口函數(shù)。流接口驅(qū)動程序是為了連接到基于Windows CE的平臺的外圍設(shè)備(包括我們的攝像頭)設(shè)

31、計的。流接口驅(qū)動程序的注意認為就是把外設(shè)的使用傳遞給應(yīng)用程序,著是通過把設(shè)備表示為文件系統(tǒng)的一個特殊文件實現(xiàn)的。4.1.4 即時圖像捕捉此模塊用于圖像捕捉,一秒8幀。當發(fā)現(xiàn)沒有運動發(fā)生的時候刪除圖片(圖片名按時間命名。eg.2005052022171401.bmp 表示2005年5月20日22點17分14秒的第一幀)。判斷是否有運動產(chǎn)生的算法是:定義一個newest變量存放已保存的最新的圖片名。調(diào)用運動檢測類若發(fā)現(xiàn)現(xiàn)在捕捉到的圖片和newest的圖片不同,則發(fā)生了運動,保存者張圖片并將newest變?yōu)楝F(xiàn)在圖片的文件名。圖4.1 圖像采集模塊流程圖l 相關(guān)說明BOOL M_Estimation(

32、)是運動檢測模塊所提供的接口,若發(fā)生運動返回TRUE,否則返回FALSE。Pic1存之前最新的圖片的文件名。Pic2是存現(xiàn)在的圖片的文件名。1. 變量定義HANDLE hDevice;HDC hDisplay;LPBITMAPINFO pbmi;LPBYTE pBits;HBITMAP hBitmap;HDC hMemory;HBITMAP hBitmap0;2. 創(chuàng)建文件,打開設(shè)備。把設(shè)備表示為文件系統(tǒng)的一個特殊文件。hDevice = CreateFile(TEXT("QCP1:"), 0, 0, NULL, OPEN_EXISTING, 0, NULL);if (hD

33、evice = INVALID_HANDLE_VALUE)return FALSE;注: “QCP1:”為攝像頭的設(shè)備文件名。CE中一個具體的設(shè)備名稱是由設(shè)備文件名前綴和設(shè)備文件名索引組成的,索引是緊隨的那個數(shù)字,用來區(qū)別由一個流接口驅(qū)動程序管理的所有設(shè)備。Windows CE.net的設(shè)備文件名前綴由三個大寫字母組成,Windows CE.net使用這三個字母來來識別與特殊流接口驅(qū)動程序相對應(yīng)的特殊設(shè)備。索引的編號默認從1到9。3. 當模塊啟動時執(zhí)行,收到消息WM_PAINT。a. 獲得客戶區(qū)大小RECT rt;GetClientRect(hWnd, &rt);b. 分配位圖空間/

34、Allocate bitmaphDisplay = GetDC(hWnd);int nInfoSize = sizeof(BITMAPINFOHEADER); / no palettepbmi = (LPBITMAPINFO) LocalAlloc(LPTR, nInfoSize);c. 對pbmi進行初始化pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);pbmi->bmiHeader.biWidth = nWidth; d. 創(chuàng)建設(shè)備無關(guān)的位圖,程序可以直接寫入數(shù)據(jù)并將圖片設(shè)為RGB模式hBitmap = CreateDIBSe

35、ction(hDisplay, pbmi, DIB_RGB_COLORS, (void*)&pBits, NULL, 0);e. 創(chuàng)建一個兼容的設(shè)備上下文并把位圖數(shù)據(jù)選入它hMemory = CreateCompatibleDC(hDisplay);hBitmap0 = (HBITMAP) SelectObject(hMemory, hBitmap); f. 發(fā)送控制信息,并將數(shù)據(jù)從指定驅(qū)動程序傳送到變量中DWORD ulReturn = 0;DeviceIoControl(hDevice, 1, NULL, 0, pBits, (nHeight * nWidth * 3), &

36、;ulReturn, NULL);g. 如果位圖信息正確,顯示位圖if (ulReturn)BitBlt(hDisplay, 0, 0, nWidth, nHeight, hMemory, 0, 0, SRCCOPY);h. 若發(fā)生運動則把圖像保存, 這里保存圖片的過程與手動抓圖的過程一樣,不述。見下:i. 調(diào)用運動檢測模塊,若沒有運動發(fā)生則刪除圖片,否則更新Pic1if(M_Estimation(Pic1,Pic2) / BOOL M_Estimation()是檢查是否發(fā)生運動 DeleteFile(Pic2);else Pic1 = Pic2;4. 手動抓圖,當模塊獲得消息 WM_KEYD

37、OWN。a. 如果按下PrintScreenIf(LOWORD(wParam) = 0x2C)b. 如果位圖信息錯誤,退出if (pbmi = NULL) break;c. 否則,初始化BMP位圖文件頭BITMAPFILEHEADER hdr;PBITMAPFILEHEADER pbi = &hdr;hdr.bfType = 0x4D42;hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) + pbmi->bmiHeader.biSize + pbmi->bmiHeader.biClrUsed * sizeof(RGBQUAD) +

38、pbmi->bmiHeader.biSizeImage); .d. 獲得系統(tǒng)時間(CTime:CTime(),在Afx.h聲明),并將其轉(zhuǎn)化為字符型的文件名tmp = CTime();nowYear = (char *)tmp.nYear; nowMonth = (char *)tmp.nMonth;nowDay = (char *)tmp.nDay; nowHour = (char *)tmp.nHour;nowMin = (char *)tmp.nMin; nowSec = (char *)tmp.nSec;if(+frame = 8)frame = 0; /幀記數(shù)從07CStrin

39、g Pic2;Pic2 = Pic2 + nowYear + nowMonth + nowDay + nowHour + nowMin + nowSec + framee. 輸出BMP文件HANDLE hFile = CreateFile(TEXT("saveimagePic2.bmp"),GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);If (hFile = INVALID_HANDLE_VALUE) break;f. 寫B(tài)MP的文件頭及信息頭的相關(guān)信息,

40、如果出錯則關(guān)閉驅(qū)動程序引用實例DWORD dwWritten;WriteFile(hFile, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER),(LPDWORD) &dwWritten, NULL); WriteFile(hFile, (LPVOID) &pbmi->bmiHeader,sizeof(BITMAPINFOHEADER) + (pbmi->bmiHeader.biClrUsed * sizeof(RGBQUAD), (LPDWORD) &dwWritten, NULL).g. 關(guān)閉驅(qū)動程序引用實例If (

41、hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile);h.刪除名字空間delete Pic2;nowname = NULL;3. 當收到WM_DESTROY時,銷毀變量,釋放空間LocalFree(pbmi);SelectObject(hMemory, hBitmap0);DeleteDC(hMemory);DeleteObject(hBitmap);ReleaseDC(hWnd, hDisplay);CloseHandle(hDevice);PostQuitMessage(0);至此,圖像采集模塊的基本流程介紹完畢,上述流程忽略了系統(tǒng)中位圖參數(shù)(

42、如敏感度、亮度等)的設(shè)置。此模塊是eDog最基礎(chǔ)的模塊,它為運動檢測提供位圖;同時調(diào)用運動檢測模塊判斷是否保存此時的位圖。開發(fā)過程原本想用DirectShow開發(fā),并對圖片進行適當?shù)奶幚?,但是由于EVC平臺下這方面的資料欠缺,所以無法進行。另外,攝像頭驅(qū)動的相關(guān)信息必須寫入注冊表,否則每次接入攝像頭必須手動設(shè)置。關(guān)于注冊表的相關(guān)知識,3.4節(jié)已經(jīng)介紹,攝像頭驅(qū)動的注冊信息在4.12節(jié)已出。4.2 運動檢測因為BMP文件存儲的是每個象素點的RBG三個通道的深度值,因此我們的運動檢測模塊采用計算幀差絕對值的方法。對于檢測圖像區(qū)域,用下一幀的每一點象素的三個通道的深度值減去前一幀的象素的相同通道的深

43、度值,當差異過大時,我們便定義這一個點發(fā)生了變化,并令設(shè)定的變量自加一。當這個變量的計數(shù)值超過閥值T的時候時則保存這個時刻捕捉的圖片創(chuàng)建報警進程定時通知用戶。4.2.1計算幀差絕對值 (1)其中, f(x,y,i)、f(x,y,j)為序列圖像在i,j時刻點(x,y)的通道的深度值,T為用戶定義的閥值,閥值T的大小決定運動檢測的靈敏度,同時幀間隔也會對檢測靈敏度有影響。當幀間變化和超過閥值T時,則判定有運動發(fā)生。這種方法運算簡單,檢測速度快,易于實現(xiàn)。但易受光線、天氣、小目標物體的干擾,檢測準確度低。實現(xiàn)時我們把一張圖片分成8 * 6 48個區(qū)域。對于其中的每個圖像區(qū)域S,判別條件是: (2)其

44、中,0 f(x,y,i), f(x,y,i) 255; T域值。表示統(tǒng)計差值超過閥值T的像素點的數(shù)目,當數(shù)目大于固定值N時,則判定有運動發(fā)生,本算法不僅從閾值的變化上進行判斷同時又從變化的點數(shù)上予以限制,同時為了避免天氣、光線等因素發(fā)生變化時,產(chǎn)生的誤判斷。我們在(2)式的基礎(chǔ)上,進一步改進算法,增加了一個附加判別條件(3)。(3)光線、天氣變化會對整個圖像產(chǎn)生影響,變化比較均勻,分布于整個區(qū)域。若是有人闖入則變化是局部的個別的。通過判斷四個角區(qū)域S1,S2,S3,S4的象素深度變化大小即可來判斷是否為光線等分布均勻的干擾信號。當S1,S2,S3,S4四個區(qū)域都滿足(3)式時,說明深度變化是光

45、線的影響,不是有物體運動,不用啟動報警。該判斷條件提高了檢測的準確度,降低了誤報警率,同時也容易實現(xiàn),運算量增加不大,對檢測速度影響不大。4.2.2 eDog中運動檢測模塊的具體實現(xiàn)方法將圖片分為8 × 6 的48塊。每一塊為一個區(qū)分別計算,一張圖片為320 ×240 大小。則每個區(qū)為40 × 40象素的圖片。先用3.2.1的式(3)的算法對4個角的區(qū)域進行判斷,如果是光線產(chǎn)生的影響則沒有運動發(fā)生,否則判斷其余區(qū)域。橫向縱向每四個點進行一次比較,也就是每行進行10次比較。當發(fā)現(xiàn)一個區(qū)中差異點大于一個用戶指定的敏感度N時(4,6,8,12,15),這塊區(qū)域所有的點都

46、為差異點,這個區(qū)域發(fā)生運動。當發(fā)生運動的區(qū)域個數(shù)超過某個值時,我們認定有運動發(fā)生。在差異點的判斷上,用的是象素差異的方法。每4個象素取出的顏色值,從中取出每一點的紅綠藍三種通道的深度值。由于自然界光線等外在環(huán)境影響,不能單純的比較象素值的不同,便判定此點為差異點。必須允許存在一定微小的變化。之所以將320 × 240的全域,分為8 × 6的48的小區(qū)域??梢詽M足圖片的比例要求。在敏感度參數(shù)的問題上,經(jīng)過多次試驗敏感度低的時候取值15,敏感度較低取值12,敏感度中取值8,敏感度較高的時候取值為6。高的時候取值4??梢苑謩e滿足近景,中遠景,和遠景等不同距離和環(huán)境的要求(eg.

47、沒有人的時候)。圖4.2 P_Contrast()的流程圖圖4.3 運動檢測模塊l 相關(guān)說明BOOL M_Estimation()是運動檢測模塊所提供的接口,若發(fā)生運動返回TRUE,否則返回FALSE。Pic1存之前最新的圖片的文件名。Pic2是存現(xiàn)在的圖片的文件名。a. 必須包含的頭文件include “Windows.h”include “Afxwin.h”b. 定義的閥值和敏感度#define T 自定義(閥值)#define N 自定義(變化的象素個數(shù))#define Q自定義(產(chǎn)生變化的區(qū)域個數(shù))c. 定義對比象素點的函數(shù)P_Contrast()BOOL P_Contrast(HBI

48、TMAP hdc1,HBITMAP hdc2,int i, int j)COLORREFcolor1,color2;BYTEr1,r2,g1,g2,b1,b2;IntDif2=0;intx = y =0;/用來控制步進,對比相應(yīng)的象素for(每隔3個pixel)color1 = GetPixel(hdc1, i * 40 + x, j * 40 + y); r1 = GetRValue(color1); g1 = GetGValue(color1); b1 = GetBValue(color1);color2 = GetPixel(hdc2, i * 40 + x, j * 40 + y);r

49、1 = GetRValue(color2); g1 = GetGValue(color2); b1 = GetBValue(color2);if(abs(r1-r2) > T| abs(g1-g2) > T| abs(b1-b2) > T)Dif2+; if(Dif2 > N)return TURE; else return FALSE;d. 模塊的主要函數(shù)BOOL M_Estimation(HBITMAP hdc1,HBITMAP hdc2)int Dif1 0;COLORREFcolor1,color2;/判斷for(四個對角區(qū)域)If(P_Contrast(Pic

50、1.hdc,Pic2.hdc),i, j)Dif1+;if(Dif1 = 4)return FALSE;/ Dividing into 8*6 areas, every 3 pixels are compared with oncefor(除了4個角區(qū)域的其余區(qū)域)If(P_Contrast(Pic1.hdc,Pic2.hdc)Dif1+;if(Dif1 >= Q)Save_BMP();Beep();return TURE;return FALSE;運動檢測模塊是判斷是否有運動產(chǎn)生的模塊。我們采用幀差絕對值的方法,這種方法運算簡單,檢測速度快,易于實現(xiàn)。但易受光線、天氣、小目標物體的干擾

51、,檢測準確度低。因此在此基礎(chǔ)上我們又對算法進行優(yōu)化。因為光線對圖像的影響是片狀的,換句話說如果是光線引起的顏色深度的變化,每個模塊的變化值應(yīng)該差不多。所以我們利用公式三,在用幀差絕對值算法前我們先判斷4個角區(qū)域的深度變化值。如果4個區(qū)域的變化值都很大,則我們認定是光線的影響,而非運動產(chǎn)生,否則保存圖片,啟動報警模塊。4.3 圖像壓縮IJG的全稱是Independent JPEG Group(獨立JPEG小組),該組織以C語言源代碼的形式提供應(yīng)用廣泛、完全免費的JPEG解碼/編碼函數(shù)庫,編譯后生成二進制格式的LIB文件,可以連接到其他編譯型語言的程序中。其實對于Windows程序員來說,這個函數(shù)

52、庫最難的地方就是對編譯選項的設(shè)置。圖像壓縮模塊主要實現(xiàn)在運動發(fā)生的情況下,對新的BMP文件進行壓縮,并傳到ftp上進行備份的功能。因為Jpeg庫體系通過兩個頭文件進行配置的:jconfig.h和jmorecfg.h。所以我們要移植JpegLib要先做下列修改:1. 代碼#ifndef XMD_Htypedef long INT32#endif要改為#if !defined(XMD_H) && !defined(_BASETSD_H_)typedef long INT32#endif2. 代碼#ifdef NEED_FAR_POINTERS#define FAR far#else

53、#define FAR#endif要改為#ifdef NEED_FAR_POINTERS#define FAR#else#define FAR#endif3. 在我們的工程中,我們必須添加JpegLib的項目文件到工作區(qū)。圖4.4 圖像壓縮的算法流程圖l 相關(guān)說明若有運動產(chǎn)生,換句話說有BMP文件生成,則新建一個進程進行圖像壓縮。DWORD WINAPI Bmp2Jpg(LPVOID lpvoid)a. 必須包含的頭文件#include "jpeg.cpp"b. 模塊的主要代碼void BmpToJpg(String BmpName, 

54、;String JpgName)    /將bmp文件轉(zhuǎn)換為jpg文件  Graphics:TBitmap *MyBMP = new Graphics:TBitmap;          MyBMP->LoadFromFile(BmpName); /圖片位置      TJPEGImage *MyJPE

55、G = new TJPEGImage;      MyJPEG->Assign(MyBMP);      MyJPEG->CompressionQuality = 70; /設(shè)置壓縮比,比例為 1.100 ,默認70     MyJPEG->Compress();     

56、0;MyJPEG->SaveToFile(JpgName);    /保存路徑      delete MyJPEG;              delete MyBMP; c. 創(chuàng)建新進程,啟動ftp模塊,上傳圖片進行備份。第五章 撥打電話模塊5.1 串口通信一些Windows CE設(shè)備可以通過串行連接與其他計算機、打印機、調(diào)制解調(diào)器或者全球定位系統(tǒng)(GPS)衛(wèi)星通信。串行I/O是Windows CE支持的最簡單的通信形式,通常用于兩個設(shè)備之間直接的、點對點的連接。串行I/O以各種各樣的設(shè)備硬件連接出現(xiàn),但是,大多數(shù)Windows CE設(shè)備使用串口線或PC卡設(shè)備,象調(diào)制解調(diào)器或者紅外(IR) 接收機等。通過串

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論