基于ARM9的便携式人脸识别系统
扫描二维码
随时随地手机看文章
摘要:介绍了一种硬件基于ARM9处理器,采用主成分分析法(PCA)的人脸识别系统。实现了脱离PC机进行人脸识别。系统采用通用USB摄像头进行图像采集。软件基于Linux操作系统,可方便地进行网络连接和图像显示。
关键词:人脸识别;PCA;ARM9
开发低成本、小型化人脸识别系统在发展实际人脸识别应用中具有重要的意义。本系统采用ARM9作为系统控制芯片,达到了系统低成本、便携化、小型化的要求。不同于运行在PC机的人脸识别算法,系统的识别算法必须更多地考虑算法的计算量和ARM的运行速度,使识别准确率和识别时间都达到可接受范围。
1 硬件平台
1.1 ARM9处理器
本系统采用三星公司的ARM9系列S3C2410作为处理器,工作频率可达到203 MHz,可满足系统对计算速度的要求。该处理器内置2个USB HOST,本系统可用来挂载USB摄像头。
1.2 液晶显示屏
为显示摄像头当前采集图像的预览,系统采用三星的320×240像素液晶屏,大小为106.68 cm。该液晶屏的每个像素深度为2 bit,采用RGB565色彩空间。
1.3 摄像头
摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。
CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极管,该二极管在接受光线照射之后能够产生输出电流,而电流的强度则与光照的强度对应。相对CCD图像传感器,CMOS传感器具有成本低廉的优点。该摄像头通过USB接口与ARM9处理器通信。该摄像头输出格式yuv,在输出至屏幕之前,需将数据格式转化为RGB565格式。
1.4 存储器
系统采用64 MB的SDRAM,由两片K4S561632芯片组成,工作在32位模式。另有64 MB的NANDFlash,采用K9F1208芯片。该芯片在系统中空间分配情况,如图2所示。
2 软件平台
系统的软件设计主要由底层的操作系统,驱动程序以及应用程序组成。操作系统采用Linux 2.4内核。通过对内核的适当裁剪,删除对本系统不需要的系统服务以及驱动程序。
本系统的驱动程序主要用来驱动摄像头、按键和指示灯。这3个驱动程序在操作系统启动后,采用Linux特有的动态加载模块方式加载至系统内核。摄像头驱动程序可在Linux内核自带的OV 51l驱动程序基础上修改,使其兼容OV 511+芯片。指示灯驱动程序主要用来提示当前程序工作状态。由于程序运行于Linux操作系统之上,应用程序无法直接控制硬件I/O口,需要先经过驱动程序对物理地址进行地址映射,才可通过映射的虚拟地址进行I/O操作。按键驱动程序采集用户输入,并通过硬件中断传至Linux内核空间,再由驱动程序通过Linux进程间通信方式之一的信号通信,传至运行在Linux用户空间的应用程序。
3 识别算法
3.1 PCA算法
PCA方法(即特征脸方法)是M.Turk和A.Pentland在文献中提出的,该方法的基本思想是:将图像向量经过K-L变换后由高维向量转换为
低维向量,并形成低维线性向量空间,即特征子空间,然后将人脸投影到该低维空间,用所得到的投影系数作为识别的特征向量。识别人脸时,只需将待识别样本的投影系数与数据库中目标样本集的投影系数进行比对,以确定与哪一类最近。
PCA算法分为两步:核心脸数据库生成阶段,即训练阶段以及识别阶段。
(1)核心脸数据库生成阶段。
1)假设共有K张M×N大小的人脸图像。先将每张图像按列化为(M×N)×1的列向量,命名为xi,i=1,2,…,K。
5)计算AAT的特征向量μi;根据计算量保留j个最大特征向量组成特征子空间。
6)将每张脸φ(减去均值后)表示成j个特征向量的线性组合,即为φ的特征脸。每张标准化训练脸φi用Ω=(ω1i,ω2i,…,ωji)T,i=1,2,…,K表示。
(2)识别阶段。
1)设要识别的未知人脸为T,先将T按列变化为一列向量xt。
2)xt求与平均脸ψ得差值φ。再将φ向特征子空间投影,即
3)将φ表示成
4)最后计算两个矩阵的欧氏距离
若er<ξ,其中ξ为固定值,则该人脸被识别。
3.2 PGA算法的预处理
虽然PcA算法在待识别图像质量较好的情况下,有识别准确且计算量不大的优点,但在以下几点情况下,存在缺陷。其一是待识别图像和训练图像光照度差别较大。其二是人脸背景差别较大。为改进PCA算法,可对图像做以下预处理:
(1)删除背景。要删除背景就要找出人脸在图像的位置。对此,本系统通过人脸肤色建模的方法找出人脸的位置,并进一步找出眼睛位置,然后根据两个眼睛之间的距离计算出人脸大概范围,通过对人脸范围的适当调整,使其规格化。
(2)调整每张人脸图像的亮度。通过设定一固定值,调整图像像素的灰度值,使图像灰度平均值达到这一固定值。通过同态滤波,减少光照不均。
4 结束语
采用了在ARM9控制下CMOS图像传感器进行图像采集,并利用改进的PCA算法对图像识别,提高了识别效率和系统的实用性。测试表明,脸部范围在180×200像素时,设定阈值er为2×1015的情况下,系统的识别率为89.2%。