本科毕业论文参考.doc_第1页
本科毕业论文参考.doc_第2页
本科毕业论文参考.doc_第3页
本科毕业论文参考.doc_第4页
本科毕业论文参考.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c989fd8f29a01ecbd7cf8ef7b5898ea2.pdf的研究 30 / 30计算机系01级本科毕业论文基于Windows CE的智能家居安防系统的研究-Intelligent Security System for HouseeDog摘要 eDog系统是一个面向家庭用户的基于eBoxII在Microsoft Windows CE 5.0平台下开发的智能家居安防保全系统。eDog可以通过摄像头将采集到的实时视频图像进行运动检测,当发现有运动产生时,通过拨打电话等多种方式自动向用户发出警报,同时将实时捕获的图像上传到ftp服务器。eDog系统支持标准Web浏览和Web远程控制,并可随时检索、回放历史视频记录。用户可以由接受到的电话做出不同的反应,控制系统发出警报。系统提供了良好的用户界面,稳定的运行环境,便捷的远程操作,强大的扩展功能,有较高的实际应用价值。关键词 嵌入式 图像采集 运动检测 串口通信 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 motion 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 control, 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关键词1Abstract:2Keyword:2引言:5第一章相关介绍51.1 背景知识51.1.1 嵌入式系统的介绍51.1.2 Windows CE的介绍51.1.3 Windows CE的设计目标61.1.4 eBoxII介绍61.1.5 EVC概述71.1.6 Platform Builder71.2 Windows CE程序开发81.2.1 事件驱动和消息响应机制81.2.2 Windows CE程序和Windows程序的不同点81.3 eDog系统主要功能91.3 系统特色9第二章程序的模块设计92.1 eDog的顶层数据流图:92.2 eDog的层次方框图:102.3主程序流程图10第三章在 Platform 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 视频采集相关说明144.1.3 CE的流接口驱动程序154.1.4 即时图像捕捉164.2 运动检测194.2.1计算帧差绝对值194.2.2 eDog中运动检测模块的具体实现方法204.3 图像压缩23第五章拨打电话模块255.1 串口通信255.2 RS-232串行接口标准255.3Modem 拨打电话模块26结论:29致谢语:30参考文献:30引言:随着计算机通信技术和网络技术的快速发展,无线网络技术已成为计算机网络中一个至关重要的组成部分,它的应用领域也在飞速的扩大。因此我们设计了智能家居安防保全系统(eDog),以增强家居安全防范的能力。eDog应用现已普及的有线网络,固定电话网络,无线电话通信系统,PC摄像头等硬件条件,充分发挥eBoxII强大的功能;我们开发图像捕捉程序,自主开发了运动图像检测算法,报警程序;创建本地Web服务器系统,以及远程通信系统;通过友好的人机交互界面,用户可在本地终端或远程登陆web服务器对系统操作,并能稳定工作。本文首先介绍了嵌入式系统的相关知识、Windows CE和在Windows CE平台程序开发所必须做的准备。另外本文主要介绍了eDog开发的整个流程,着重介绍了图像模块和Modem报警模块,其余模块由小组其他成员完成。系统采用Embedded Visual C+(简称EVC)嵌入式编程语言在Microsoft Windows CE 5.0环境下编写。主要介绍了开发过程中用到的算法和相关的类,并做了详细介绍。第一章 相关介绍 1.1 背景知识1.1.1 嵌入式系统的介绍嵌入式系统是以应用为中心,以半导体技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。相关支撑硬件主要包括显示设备、存储设备和各种接口等,随着功能的增强以及复杂性的不断增加,操作系统成为了嵌入式系统不可缺少的一个基本部件。应用程序嵌入式操作系统以嵌入式微处理器为核心的硬件平台图1.1 嵌入式系统的结构图1.1.2 Windows CE的介绍Windows CE作为windows家族的最新最小的操作系统,是一个抢先式多任务并具有强大通信能力的Windows 32嵌入式操作系统,是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用等非PC领域而设计的战略性操作系统产品。它是多线程、完整优先权和多任务的操作系统,其基本内核需要至少200K的ROM。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。工业控制是嵌入式操作系统的传统应用领域,但近年来随着家电信息化成为愈来愈明显的趋势对嵌入式操作系统提出了许多新的要求,例如熟悉和友好的用户界面,统一的编程界面,强大的通信功能等,而恰好是Windows CE的优势。1.1.3 Windows CE的设计目标Windows CE的设计目标是模块化及可伸缩性,实时性能好,通信能力强大,支持多种CPU。从操作系统内核的角度看,Window CE具有灵活的电源。管理功能,包括睡眠/唤醒模式,在Windows CE中还使用了对象存储(Object Store)技术包括文件系统注册表及数据库。它还具有很多高性能高效率的操作系统特性,包括按需换页,共享存储,交叉处理,同步支持大容量堆(Heap)等。Windows CE拥有良好的通信能力。它广泛支持各种通信硬件,亦支持直接的局域网连接以及拨号连接,并提供与PC内部网以及Internet的连接,包括用于应用级数据传输的设备至设备间的连接,在提供各种基本的通信基础结构的同时,Windows CE还提供与Windows 9x/NT的最佳集成和通信。Windows CE的图形用户界面相当出色,它拥有基于Microsoft Internet Explorer的Internet浏览器,此外还支持TrueType字体。开发人员可以利用丰富灵活的控件库在Windows CE环境下为嵌入式应用建立各种专门的图形用户界面,Windows CE甚至还能支持诸如手写体和声音识别、动态影像、3D图形等特殊应用。1.1.4 eBoxII介绍eBoxII是微软专门为Windows CE.NET平台下程序开发定制的硬件平台。其中微软已经预装了新发布的Windows CE 5.0的镜像,并对其进行了内核定制。eDog的开发前必须重新定制CE内核。下面介绍一下其硬件组成。CPUVortex86-200 Mhz (SoC: System-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 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 cablesPower Adapter18 Watt Power adapter for any +110V power input 图1.2 eBoxII示意图1.1.5 EVC概述Embedded Visual C+(EVC)4.0是Microsoft公司推出的Windows CE程序的可视化开发工具,是Embedded Visual Tools的重要组成部分。利用EVC 4.0用户可以开发出规模较大,功能较复杂的Windows CE应用程序和流式驱动程序。Windows CE下的EVC编程都是对特定目标硬件的编程,允许CE的机器通常比PC的资源贫乏得多,所以编程时首先要明确目标硬件的特点和要求。1.1.6 Platform Builder大部分嵌入式系统是可移植、可裁减、可定制的。且大多数嵌入式产品都是针对特殊的目标板进行的开发。它们大多数都需要完成特定的功能,这就说明了嵌入式操作系统是与应用环境密切相关的。Platform Builder是微软提供给Windows CE开发人员进行基于Windows CE.net平台下嵌入式操作系统内核定制的集成开发环境。它提供了所有进行设计,创建,编译,测试和调试Windows CE.net操作系统平台的工具。运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核,选择系统特性,然后进行编译和调试。同时,开发人员还可以利用PB进行驱动程序开发和应用程序项目的开发等。1.2 Windows CE程序开发1.2.1 事件驱动和消息响应机制Windows程序设计是一种事件驱动的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户从所有可能的操作中任意选择,被选择的操作会产生某种特点的事件,这些事件发生后的结构是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。Windows的应用程序最大的特点就是程序没有固定的流程,而只是对某些处理有特定的子流程,Windows应用程序可以说是由许多这样的子流程构成的。另外,Windows程序本质上是面向对象的。Windows的这种事件驱动模型的实质源于Windows的消息响应机制。所谓的事件响应,就是对各种消息的响应。图1.3 Windows程序工作原理1.2.2 Windows CE程序和Windows程序的不同点n Microsoft Win32 API和Windows CE API之间的不同。n Microsoft MFC标准和 MFC for Windows CE标准不同n 存储器的限制和存储器溢出的恢复n 电源管理的不同处理方式n 存在大量不同硬件特性和限制n 测试和调试的过程不同n Windows CE使用Unicode1.3 eDog系统主要功能n GUI显示:可以在eBoxII上浏览实时视频。n 本地设置运行参数:可以设置系统各运行参数。包括系统的启动和结束;抓图的图片压缩比、色度、亮度、对比度、灰度等参数;动态检测的灵敏度参数;拨号的电话号码;E-mail的服务器地址、收件人地址、主题等参数;Ftp的地址、端口、用户名及密码等参数; Web服务器的用户名和密码参数。n 报警功能:当检测范围内有异常时,启动报警功能。包括:拨打固定电话或移动电话通知用户,发送带附件的E-mail通知用户等。n 数据备份:当检测到异常时,系统将运动的图片上传到Ftp服务器备份。n 远程Web控制:通过登陆Web服务器,同本地设置一样可以设置系统的各运行参数,实现了远程控制功能。n 远程实时视频浏览:登陆Web服务器后,可通过视频窗口浏览实时视频。n 历史记录查询:登陆Web服务器后,通过读取保存在Ftp服务器上运动图片,在Web界面的视频窗口显示,实现历史记录的查询。1.3 系统特色n 本系统可不断地检测周围环境有无运动发生n 嵌入式Web服务器n 远程控制功能n 图形化的界面,友好的人机交互n 强大的扩展性能第二章 程序的模块设计l 程序设计流程:模块设计,流程图,GUI界面,图像采集,运动检测,图像压缩,进程线程间通信,Web Service, Ftp,E-mail,拨打电话.l 本人承担模块:图像采集,运动检测,图像压缩,拨打电话报警。2.1 eDog的顶层数据流图:图2.1 eDog的顶层数据流图2.2 eDog的层次方框图:图2.2 eDog的层次方框图2.3主程序流程图图2.3 主程序流程图第三章 在 Platform Builder定制Windows CE3.1 PB简介PB是微软提供给Windows CE开发人员进行基于Windows CE.net平台下嵌入式操作系统定制的集成开发环境。具体说来PB提供了几个主要开发特性:n Platform Wizard和BSP Wizard。用来引导开发人员去创建一个简单的系统平台或BSP。n 基础配置。为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点n 特性目录。操作系统的可选特性均在特性目录中,开发人员可以选择相应的特性来定制操作系统。n 自动化的依靠性检查。特性之间的依赖关系是系统自动维护的。n 系统为驱动程序开发提供了基本的测试工具集Windows CE.net Test Kit。n 内核调试器。可以对自定义的操作系统映象进行调试,并且向用户提供有关映象性能的信息。n 导出想到(Export Wizard)。可以向其他PB用户导出自定义的目录特性。n 导出SDK向导(Export SDK Wizard)。n 远程工具。可执行同基于Windows CE.net的目标设备有关的各种调试任务和信息收集任务。n 仿真器。通过硬件仿真加速和简化了系统的开发,使用户可以在开发工作站上对平台和应用程序进行调试。n 应用程序调试器。可以在自定义的操作系统映象上对应用程序进行调试。n 提供了对NET FrameWork Compact Edition的支持。3.2 BSP简介BSP又称主板支持软件包,它是一个包括启动程序、OEM适配层成年工序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序的软件包。BSP是基于Windows CE.net平台系统的主要部分,它主要由一些源文件和二进制文件组成。图3.1 关系示意图3.3 定制Windows CE.1. 新建PB工程,并启动工程向导2. 按需求依次选择BSP、基本配置结构、定制设备的方法、基本类库、应用程序、操作系统核心服务、通信服务、文件系统、字体、国家等等3. 向导提示信息,完成工程向导3.4 Windows CE 注册表简介在Windows CE.net中,注册表扮演着很重要的角色,它是一个系统数据库,存储着应用程序、驱动程序和操作系统的配置信息,通常还存储着操作系统调用程序的状态信息。注册表的结构与磁盘的逻辑结构相似。Windows CE.net的注册表是一个包括关键字子树的集合,它和文件目录树一样有层次结构。它的注册表包括4个根键HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOT和HKEY_USERS。表3.1 Windows CE.net注册表根键根键名键值内容HKEY_LOCAL_MACHINE硬件及驱动程序配置数据HKEY_CURRENT_USER用户配置数据HKEY_CLASSES_ROOTOLE和文件类型匹配配置数据HKEY_USERS适用于所有用户的存储数据从Windows CE 2.0开始,注册表就可以存储在永久性的存储设备中,并能够进行读取。在Windows CE.net中,注册表可以在任何一个文件系统中以一个文件的形式存在。CE能以基于RAM中堆文件的方式来实现注册表。如果RAM掉电,且OLM供应商未进行注册表备份,注册表数据将丢失。3.5 注册表编辑器为了系统安全性,Windows CE.net并未为最终用户增加注册表编辑的功能,所有在Windows CE.net下不能像在9x/2000下那样用Regedit.exe来编辑注册表。这样虽然能够保证用户不致因为错误使用注册表信息而出现问题,但是为了一个注册表参数的修改就可能要重新编译整个操作系统内核,这样会在时间上造成浪费并降低工作效率。1.根键的定义见表3.12.对注册表的限制,见表3.2限制内容具体说明键或值的名字255个字苻数据大小4KB键嵌套层次最多16层3Windows CE.net下对注册表操作的API函数l RegCreateKeyEx;l RegOpenKeyEx;l RegQueryValueEx;l RegSetValueEx;l RegCloseKey;第四章 图像模块图像采集模块包括图像采集,运动检测,图像压缩三个模块。它是eDog系统的基础,也是eDog的核心。图像采集模块可以获取被监控现场的实时图像,并存成BMP格式;运动检测模块对图像中运动物体检测,当有运动物体进入监视现场时,自动保存图片并发出警报;图像压缩模块可以在eDog系统要对图片进行备份时对其进行格式转换(.JPG)。4.1 视频采集在现有的摄像头及其驱动的基础上,我们在EVC上针对我们定制的Windows CE系统,开发了eDog的图形采集模块。该模块能够从监控区域采集图像并在运动检测模块的判断下决定是否DELETE刚SAVE的BMP文件。4.1.1 BMP文件格式BMP是计算机系统中最常见的图像格式,他用RGB三个通道的深度来表示一个象素点的颜色值。计算机中一个典型的BMP文件包含4个主要部分:BMP文件头、BMP信息头、调色板和位图数据。另外Windows CE中BMP是24位的,也就是说,RGB三个通道分别用一个字节表示。存储图像的具体操作,下面章节介绍。4.1.2 视频采集相关说明首先必须向注册表中写入摄像头的驱动信息。HKEY_LOCAL_MACHINEDriversBuiltInQCPCamera“Prefix”=“QCP”“Dll”=“QCP4000.dll”“Order”=dword:1l prefx:设备文件名l Dll:驱动的文件名l Order:设备文件名索引 检测设定视频源1、 自动检测摄像头是否连接好,如果没有则应弹出一个提示对话框,提示没有视频源。2、 对捕获设备的搜索,并默认为Logitech QuickCamPro4000 摄像头。 捕获设置:设定相关的参数: 敏感度(Sensibility): 按0100调整质量(Quality): 按0100调整亮度(Brightness): 按0100调整对比度(Contrast): 按0100调整色调(Hue):按0100调整颜色(Color): 按0100调整频率:按8fps 帧率设置捕获视频。 捕获格式:对视频的格式及图片的格式进行设置:分辨率: 320 240,格式为BMP。 回放与备份:1、 回放 对已存在存储器上的图片进行播放。2、 备份 对捕获的图片进行压缩(.JPG)存储与备份 指定存储的Server位置 对存储充满时采用的方法:将最早存入的删除并以最新的资料存入。4.1.3 CE的流接口驱动程序流接口驱动程序是以动态链接库形式存在的,由设备管理器统一加载,管理和卸载。与具有单独目的的内部设备驱动程序相比,所有的流接口驱动程序都是用同一组接口并调用同一个函数集的,我们将这个函数集称作流接口函数。流接口驱动程序是为了连接到基于Windows CE的平台的外围设备(包括我们的摄像头)设计的。流接口驱动程序的注意认为就是把外设的使用传递给应用程序,着是通过把设备表示为文件系统的一个特殊文件实现的。4.1.4 即时图像捕捉此模块用于图像捕捉,一秒8帧。当发现没有运动发生的时候删除图片(图片名按时间命名。eg.2005052022171401.bmp 表示2005年5月20日22点17分14秒的第一帧)。判断是否有运动产生的算法是:定义一个newest变量存放已保存的最新的图片名。调用运动检测类若发现现在捕捉到的图片和newest的图片不同,则发生了运动,保存者张图片并将newest变为现在图片的文件名。图4.1 图像采集模块流程图l 相关说明BOOL M_Estimation()是运动检测模块所提供的接口,若发生运动返回TRUE,否则返回FALSE。Pic1存之前最新的图片的文件名。Pic2是存现在的图片的文件名。1. 变量定义HANDLE hDevice;HDC hDisplay;LPBITMAPINFO pbmi;LPBYTE pBits;HBITMAP hBitmap;HDC hMemory;HBITMAP hBitmap0;2. 创建文件,打开设备。把设备表示为文件系统的一个特殊文件。hDevice = CreateFile(TEXT(QCP1:), 0, 0, NULL, OPEN_EXISTING, 0, NULL);if (hDevice = INVALID_HANDLE_VALUE)return FALSE;注: “QCP1:”为摄像头的设备文件名。CE中一个具体的设备名称是由设备文件名前缀和设备文件名索引组成的,索引是紧随的那个数字,用来区别由一个流接口驱动程序管理的所有设备。Windows CE.net的设备文件名前缀由三个大写字母组成,Windows CE.net使用这三个字母来来识别与特殊流接口驱动程序相对应的特殊设备。索引的编号默认从1到9。3. 当模块启动时执行,收到消息WM_PAINT。a. 获得客户区大小RECT rt;GetClientRect(hWnd, &rt);b. 分配位图空间/ 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. 创建设备无关的位图,程序可以直接写入数据并将图片设为RGB模式hBitmap = CreateDIBSection(hDisplay, pbmi, DIB_RGB_COLORS, (void*)&pBits, NULL, 0);e. 创建一个兼容的设备上下文并把位图数据选入它hMemory = CreateCompatibleDC(hDisplay);hBitmap0 = (HBITMAP) SelectObject(hMemory, hBitmap); f. 发送控制信息,并将数据从指定驱动程序传送到变量中DWORD ulReturn = 0;DeviceIoControl(hDevice, 1, NULL, 0, pBits, (nHeight * nWidth * 3), &ulReturn, NULL);g. 如果位图信息正确,显示位图if (ulReturn)BitBlt(hDisplay, 0, 0, nWidth, nHeight, hMemory, 0, 0, SRCCOPY);h. 若发生运动则把图像保存, 这里保存图片的过程与手动抓图的过程一样,不述。见下:i. 调用运动检测模块,若没有运动发生则删除图片,否则更新Pic1if(M_Estimation(Pic1,Pic2) / BOOL M_Estimation()是检查是否发生运动 DeleteFile(Pic2);else Pic1 = Pic2;4. 手动抓图,当模块获得消息 WM_KEYDOWN。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) +pbmi-bmiHeader.biSizeImage); .d. 获得系统时间(CTime:CTime(),在Afx.h声明),并将其转化为字符型的文件名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; /帧记数从07CString 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. 写BMP的文件头及信息头的相关信息,如果出错则关闭驱动程序引用实例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. 关闭驱动程序引用实例If (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);至此,图像采集模块的基本流程介绍完毕,上述流程忽略了系统中位图参数(如敏感度、亮度等)的设置。此模块是eDog最基础的模块,它为运动检测提供位图;同时调用运动检测模块判断是否保存此时的位图。开发过程原本想用DirectShow开发,并对图片进行适当的处理,但是由于EVC平台下这方面的资料欠缺,所以无法进行。另外,摄像头驱动的相关信息必须写入注册表,否则每次接入摄像头必须手动设置。关于注册表的相关知识,3.4节已经介绍,摄像头驱动的注册信息在4.12节已出。4.2 运动检测因为BMP文件存储的是每个象素点的RBG三个通道的深度值,因此我们的运动检测模块采用计算帧差绝对值的方法。对于检测图像区域,用下一帧的每一点象素的三个通道的深度值减去前一帧的象素的相同通道的深度值,当差异过大时,我们便定义这一个点发生了变化,并令设定的变量自加一。当这个变量的计数值超过阀值T的时候时则保存这个时刻捕捉的图片创建报警进程定时通知用户。4.2.1计算帧差绝对值 (1)其中, f(x,y,i)、f(x,y,j)为序列图像在i,j时刻点(x,y)的通道的深度值,T为用户定义的阀值,阀值T的大小决定运动检测的灵敏度,同时帧间隔也会对检测灵敏度有影响。当帧间变化和超过阀值T时,则判定有运动发生。这种方法运算简单,检测速度快,易于实现。但易受光线、天气、小目标物体的干扰,检测准确度低。实现时我们把一张图片分成8 * 6 48个区域。对于其中的每个图像区域S,判别条件是: (2)其中,0 f(x,y,i), f(x,y,i) 255; T域值。表示统计差值超过阀值T的像素点的数目,当数目大于固定值N时,则判定有运动发生,本算法不仅从阈值的变化上进行判断同时又从变化的点数上予以限制,同时为了避免天气、光线等因素发生变化时,产生的误判断。我们在(2)式的基础上,进一步改进算法,增加了一个附加判别条件(3)。(3)光线、天气变化会对整个图像产生影响,变化比较均匀,分布于整个区域。若是有人闯入则变化是局部的个别的。通过判断四个角区域S1,S2,S3,S4的象素深度变化大小即可来判断是否为光线等分布均匀的干扰信号。当S1,S2,S3,S4四个区域都满足(3)式时,说明深度变化是光线的影响,不是有物体运动,不用启动报警。该判断条件提高了检测的准确度,降低了误报警率,同时也容易实现,运算量增加不大,对检测速度影响不大。4.2.2 eDog中运动检测模块的具体实现方法将图片分为8 6 的48块。每一块为一个区分别计算,一张图片为320 240 大小。则每个区为40 40象素的图片。先用3.2.1的式(3)的算法对4个角的区域进行判断,如果是光线产生的影响则没有运动发生,否则判断其余区域。横向纵向每四个点进行一次比较,也就是每行进行10次比较。当发现一个区中差异点大于一个用户指定的敏感度N时(4,6,8,12,15),这块区域所有的点都为差异点,这个区域发生运动。当发生运动的区域个数超过某个值时,我们认定有运动发生。在差异点的判断上,用的是象素差异的方法。每4个象素取出的颜色值,从中取出每一点的红绿蓝三种通道的深度值。由于自然界光线等外在环境影响,不能单纯的比较象素值的不同,便判定此点为差异点。必须允许存在一定微小的变化。之所以将320 240的全域,分为8 6的48的小区域。可以满足图片的比例要求。在敏感度参数的问题上,经过多次试验敏感度低的时候取值15,敏感度较低取值12,敏感度中取值8,敏感度较高的时候取值为6。高的时候取值4。可以分别满足近景,中远景,和远景等不同距离和环境的要求(eg. 没有人的时候)。图4.2 P_Contrast()的流程图图4.3 运动检测模块l 相关说明BOOL M_Estimation()是运动检测模块所提供的接口,若发生运动返回TRUE,否则返回FALSE。Pic1存之前最新的图片的文件名。Pic2是存现在的图片的文件名。a. 必须包含的头文件include “Windows.h”include “Afxwin.h”b. 定义的阀值和敏感度#define T 自定义(阀值)#define N 自定义(变化的象素个数)#define Q自定义(产生变化的区域个数)c. 定义对比象素点的函数P_Contrast()BOOL P_Contrast(HBITMAP hdc1,HBITMAP hdc2,int i, int j)COLORREFcolor1,color2;BYTEr1,r2,g1,g2,b1,b2;IntDif2=0;intx = y =0;/用来控制步进,对比相应的象素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);r1 = 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. 模块的主要函数BOOL M_Estimation(HBITMAP hdc1,HBITMAP hdc2)int Dif1 0;COLORREFcolor1,color2;/判断for(四个对角区域)If(P_Contrast(Pic1.hdc,Pic2.hdc),i, j)Dif1+;if(Dif1 = 4)return FALSE;/ Dividing into 8*6 areas, every 3 pixels are compared with oncefor(除了4个角区域的其余区域)If(P_Contrast(Pic1.hdc,Pic2.hdc)Dif1+;if(Dif1 = Q)Save_BMP();Beep();return TURE;return FALSE;运动检测模块是判断是否有运动产生的模块。我们采用帧差绝对值的方法,这种方法运算简单,检测速度快,易于实现。但易受光线、天气、小目标物体的干扰,检测准确度低。因此在此基础上我们又对算法进行优化。因为光线对图像的影响是片状的,换句话说如果是光线引起的颜色深度的变化,每个模块的变化值应该差不多。所以我们利用公式三,在用帧差绝对值算法前我们先判断4个角区域的深度变化值。如果4个区域的变化值都很大,则我们认定是光线的影响,而非运动产生,否则保存图片,启动报警模块。4.3 图像压缩IJG的全称是Independent JPEG Group(独立JPEG小组),该组织以C语言源代码的形式提供应用广泛、完全免费的JPEG解码/编码函数库,编译后生成二进制格式的LIB文件,可以连接到其他编译型语言的程序中。其实对于Windows程序员来说,这个函数库最难的地方就是对编译选项的设置。图像压缩模块主要实现在运动发生的情况下,对新的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#define FAR#endif要改为#ifdef NEED_FAR_POINTERS#define FAR#else#define FAR#endif3. 在我们的工程中,我们必须添加JpegLib的项目文件到工作区。图4.4 图像压缩的算法流程图l 相关说明若有运动产生,换句话说有BMP文件生成,则新建一个进程进行图像压缩。DWORD WINAPI Bmp2Jpg(LPVOID lpvoid)a. 必须包含的头文件#includejpeg.cppb. 模块的主要代码voidBmpToJpg(StringBmpName,StringJpgName)/将bmp文件转换为jpg文件Graphics:TBitmap*MyBMP=newGraphics:TBitmap;MyBMP-LoadFromFile(BmpName);/图片位置TJPEGImage*MyJPEG=newTJPEGImage;MyJPEG-Assign(MyBMP);MyJPEG-CompressionQuality=70;/设置压缩比,比例为1.100,默认70MyJPEG-Compress();MyJPEG-SaveToFile(JpgName);/保存路径deleteMyJPEG;deleteMyBMP;c. 创建新进程,启动ftp模块,上传图片进行备份。第五章 拨打电话模块5.1 串口通信一些Windows CE设备可以通过串行连接与其他计算机、打印机、调制解调器或者全球定位系统(GPS)卫星通信。串行I/O是Windows CE支持的最简单的通信形式,通常用于两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论