1、嵌入式课程设计报告学院信息电子技术专业通信工程班级学号姓名指导教师2017年07月01日课程设计基于ARM9的人脸识别系统一、 引言人脸识别背景和意义人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱
2、人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体.人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗.二、 系统设计1、硬件电路设计(1)ARM9处理器本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片.ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3
3、级流水线的冯诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上.指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30左右。ARM7一般没有MMU(内存管理单元),(ARM720T有MMU).(2)液晶显示屏为显示摄像头当前采集图像的预览,系统采用三星的320
4、x240像素的液晶屏,大小为206.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。(3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。 CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极管,该二极管在接受光线照射之后能够产生输出电流,而电流的强度则与光照的强度对应。相对CCD图像传感器,CMOS传感器具有成本低廉的优点.该摄像头通过USB接口与ARM9处理器通信。该摄像头输出格式yuv,在输出至屏幕之前,需将数据格式转化为RGB565格式。(4)存储器 系统采用64MB的SDRAM,由两片K4S5616
5、32芯片组成,工作在32位模式。另有64MB的NANDFlash,采用K9F1208芯片.该芯片在系统中空间分配情况.系统电路原理框图(如图2-1):TQ2440开发板(ARM920T内核的S3C2440芯片)摄像头液晶显示屏LED指示灯控制键盘存储器图2-1系统电路原理框图2、 程序设计系统的软件设计主要有底层的操作系统,驱动程序以及应用程序组成。操作系统采用Linux2。6。30.4内核(如图2-3 Linux操作系统)(1)嵌入式Linux系统平台Bootloader在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的
6、软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成.在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。Bootloader启动的两个阶段:第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现.这个阶段的任务有:基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令
7、/数据Cache等).为第二阶段准备RAM空间.嵌入式Linux内核的配置在配置内核前的须做必要的设置,主要在内核原码中设置文件Makefile,用下列指令打开Makefile文件:viMakefile在Makefile中主要设置两个地方:ARCH CROSSCOMPILE。ARCH:=arm;表示目标板为arm。CROSS COMPILE=交叉编译工具的地址 ;设置交叉编译工具的地址,例如CRoSSCOMPILE=lusr10calarm2953、birdarm1inux。还要在脚本文件mkimage中把路径改为9200bootldruboot-10Otools。(具体的路径和你的u-boo
8、t放的位置有关)然后按如下命令顺序进行内核编译即可:内核配置:Smake menuconfig 或makcxeon!ig内核编译:Smaketiean make dep $make mkimage;运行mkimage脚本文件。在Linux下,用makemenuconfig或makexeontig进入配置界面。在内核配置中,一般有四种选择:Y(选择)、N(不选)、M(模块)和数字,用户可以根据剪裁需要进行设置,最后配置完毕,选择是否对配置结果进行保存?保存为eonfig文件。图23 Linux操作系统(2)USB摄像头驱动移植在USB主机控制器的配置中,首先输入“make menuconfig”
9、,按照如下配置单进行配置和保存.(3)人脸识别过程人脸识别的图像处理方法有图像的灰度化,直方图均衡化和中值滤波。通过图像预处理增加了检测识别率并提高了整个过程的速度。人脸检测用的是基于Adaboost方法.人脸识别程序框图(如图2-4):检测到的人脸图像提取人脸特征对比人脸数据可信度是否大于阀值是显示人脸对应身份否是否继续人脸图像采集继续人脸采集图2-4 人脸识别程序框图本系统的驱动程序主要用来驱动摄像头、按键和指示灯。这3个驱动程序在操作系统启动后,采用Linux特有的动态加载模块方式加载至系统内核. 摄像头驱动程序可在Linux内核自带的OV511驱动程序基础上修改,使其兼容OV511+芯
10、片。指示 灯驱动程序主要用来提示当前程序工作状态.由于程序运行于Linux操作系统之上,应用程序无法直接控制硬件I/O口,需要先经过驱动程序对物理地址进行地址映射,才可通过映射的虚拟地址进行I/O操作.按键驱动程序采集用户输入,并通过硬件中断传至Linux内核空间,再由驱动程序通过Linux进程间通 信方式之一的信号通信,传至运行在Linux用户空间的应用程序。图25系统总框图Linux系统启动应用软件开机启动系统初始化摄像头启动图像采集图像预处理人脸识别图25系统总框图三、结论嵌入式技术今年来发展迅猛,目前已经在很多领域得到应用.本文结合人脸识别技术对嵌入式系统进行了研究和开发,对人脸识别的
11、各个环节所用到的诉法进行了研究和探究,设计并完成了嵌入式平台的搭建和应用程序的开发,对系统的检测率,识别率、运行率等性能进行了测试,保证了系统不经能够体现ARM系统的便携性和医用性,还能有叫好的识别效果.本设计深入研究了Adaboost对人脸识别上的算法,对人脸的检测的原理。并且完成了嵌入式的系统搭建。还完成了应用程序的开发.人脸识别技术的前景:生物识别技术已广泛用于政府、军队、银行、社会福利保障、电子商务、安全防务等领域。例如,一位储户走进了银行,他既没带银行卡,也没有回忆密码就径直提款,当他在提款机上提款时,一台摄像机对该用户的眼睛扫描,然后迅速而准确地完成了用户身份鉴定,办理完业务.这是
12、美国德克萨斯州联合银行的一个营业部中发生的一个真实的镜头。而该营业部所使用的正是现代生物识别技术中的“虹膜识别系统”。此外,美国“9.11”事件后,反恐怖活动已成为各国政府的共识,加强机场的安全防务十分重要。美国维萨格公司的脸像识别技术在美国的两家机场大显神通,它能在拥挤的人群中挑出某一张面孔,判断他是不是通缉犯。四、参考文献1人脸识别-原理、方法与技术作者:王映辉 编著 出版社:科学出版社 出版时间:2010年2月2ARM9嵌入式系统设计-基于S3C2410与Linux(第3版)作者:徐英慧等编著 出版社:北京航空航天大学出版社 出版时间:2015年5月3ARM9嵌入式系统设计与开发应用作者:熊茂华,杨震伦编著 出版社:清华大学出版社 出版时间:2008年1月4基于全局与局部信息的人脸识别作者:孔俊,易玉根,王建中 出版社:科学出版社 出版时间:2016年5月5精通Linux设备驱动程序开发作者:印斯里克里斯汉温卡特斯瓦兰(Sreekrishnan Venkateswa 出版社:人民邮电出版社 出版时间:2016年4月5XXX大学信息电子技术学院