基于HMM的嵌入式人脸识别系统研究
摘要:系统选用S3C2410A处理器作为硬件平台,Linux操作系统作为软件平台,采用OV7640+OV511的结构实现图像信息采集,使用基于V4L的方法编写图像处理、检测和识别程序,实现了快速、准确识别人脸的功能;并对相关浮点算法进行了改进,极大地提高了ARM处理器上图像预处理的速度。采用基于隐马尔可夫模型(HMM)的方法,简化了人脸检测和识别的过程。
关键词:嵌入式系统;HMM;ARM;人脸识别
0 引言
嵌入式人脸识别系统与传统鉴别身份的系统相比具有很强的优势,无需特殊的采集设备,成本低廉,使用简单;同时,人脸识别不干扰使用者,不侵犯使用者的隐私,属于非侵犯的主动识别,易于为用户所接受。
本文以嵌入式ARM9系统开发为主线,以HMM模型为理论基础,展示了完成图像采集、人脸检测与识别等功能相对应的硬件平台和软件模块的设计及实现过程;并对图像预处理的浮点算法做了优化,极大提高了嵌入式系统的速度。
本系统软件部分可直接应用于带有Linux操作系统的智能手机中,利用手机以及内置的摄像头,即可进行个人面部特征数据分析,然后对比最初存储的人脸信息库,完成身份识别功能。
1 系统架构及其设计方案
本系统采用了Samsung推出的以ARM 920T RISC为内核的处理器——S3C2410A。其优秀的处理性能理所当然地成为便携式设备开发的首选。同时为适应智能手机对视频图像采集的需求,系统采用了基于USB总线的视频采集模块,与串行传输相比极大地提高了数据的采集速率。本系统涉及到数字图像的采集、处理、存储、传输和HMM算法等多种技术。其系统架构如图1所示。
2 图像采集硬件设计
鉴于传统CCD图像传感器昂贵的成本、相对复杂的附加电路和较高的功耗,本系统采用OmniVision公司的OV7640 CMOS芯片作为图像传感器。OV7640是一款低电压(2.5 V)、高灵敏度的CMOS图像传感器。
实时采集存储系统需要高速的数据传输,对系统硬件之问的配合提出较高的要求。本系统设计中,在采集部分和传输部分之间配有相应的缓存区。实际中,采用OV7640及配套的芯片OV511扩展DRAM起缓存作用,实现将数字视频图像通过高速USB送入ARM处理器。OV511是一个专用的数字摄像IC的USB接口芯片。
3 图像采集程序
本系统采用Linux做为操作系统平台,操作系统的移植在此不做过多介绍。
Video4 Linux(简称V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。Linux内核提供Video4Linux应用程序接口,在程序开发时,首先是基于Video4Linux API函数来设计程序。
基于Video4Linux图像采集的程序流程如图2所示。
4 图像预处理与人脸识别算法及实现
人脸识别过程首先判断输入的人脸图像或者视频中是否存在人脸,如果存在,则进一步给出每个人脸的位置、大小和各个主要面部器官的位置信息,并依据这些信息,进一步提取每个人脸中所蕴含的身份特征,将其与已有人脸库中的人脸进行对比,从而识别人的身份。
人脸识别的过程可以分为图像预处理、人脸检测和人脸识别三部分。
人脸检测是指从待识别矩阵中定位人脸区域中各特征区域,并将各个区域分割开。人脸识别是根据已有的人脸数据库,输出待测人脸对应在人脸库中的对象标号。二者互为前提和目的。由于HMM既可完成人脸检测,又可完成人脸识别,因此我们将人脸检测与识别同时处理。
4.1 隐马尔可夫模型(HMM)基本概念
HMM是一组用于特征化信号的统计特性的模型,它包含两个相关的过程:一个是隐含的、不可见的有限状态马尔可夫链,它具有初始状态概率分布函数和状态转移概率矩阵,另外是一组与状态有关的概率密度函数。
一个HMM的构成元素如下:
一个HMM可以简记为λ={A,B,∏},由于其输入为有限字符集V={v1,v2,… vm},因此称其为离散隐马尔可夫模型。
4.2 用于人脸识别的HMM模型
根据状态转移的类型,HMM可分为遍历的(ergodic)和从左到右的(left-right)。前者表示状态转移是任意的,可以到本身和其他所有状态,后者状态转移只限于本身和下一个状态。人脸垂直方向由上至下和水平方向从左至右各个区域具有自然不变的顺序,可以用1D-HMM来模拟人脸,如图3所示。
4.3 人脸图像特征提取
设每一个人脸图像宽度为W,高度为H,被划分为互相重叠的块。块的高度为L,重叠深度为P。因此,从人脸图像抽取的总分块数为观察矢量数T,且T=(H-L)/(L-P)+1。参数L和P的选择将影响系统的识别率,大的重叠深度值P增加了垂直特征向量的数量,使系统的识别率提高。L的选择比较微妙,较小的L使观察矢量不能有效鉴别;而大的L使剪切相交特征概率增加。当P大时,系统识别率对L的变化不敏感。分割算法流程如图4所示。
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)