基于ARM9平台的人脸检测的实现

更新时间:2024-01-17 作者:用户投稿原创标记本站原创 点赞:3671 浏览:9686

摘 要:本文以ARM9系列处理器中的S3C2440为硬件平台,搭载嵌入式Linux操作系统,完成了该操作系统的剪裁、制作和移植,并结合Opencv开源库设计并实现了人脸检测的功能.

关 键 词:ARM;嵌入式Linux;人脸检测

中图分类号:TP311.52文献标识码:A文章编号:1674-7712(2012)20-0025-01

人脸检测的研究来源于人脸识别[1],但是其应用范围又大大超过了人脸识别,其在数字视频处理、可视化通信和视觉检测方面都有巨大的应用价值.随着科技的进步,人脸检测技术朝向小型化、便携性方向发展,ARM处理器拥有低功耗、小成本和高性能等功能[2],适合做人脸检测技术的嵌入式开发.本文以ARM9为平台,搭载嵌入式Linux系统,设计并实现了人脸检测的功能.

一、系统硬件平台介绍

本系统采用了Samsung公司推出的S3C2440处理器,它采用了ARM920T内核,为了提高和冯诺依曼体系结构的兼容性,采用了哈佛Cache结构[3].本系统图像采集使用的是采用320芯片组的USB摄像头,交叉编译平台则是主频为2.7GHz奔腾处理器的PC机.

二、嵌入式Linux系统的开发

由于嵌入式Linux系统具有开源、低成本、可移植性好等特点,所以近些年来发展强劲,得到了广泛的应用.嵌入式Linux系统开发需要在Linux操作系统下安装arm的交叉编译器,用交叉编译器对各部分进行交叉编译然后移植到开发板上去.

嵌入式Linux系统最基本的三部分,第一是Bootloader,这个类似于Windows操作系统启动时的引导程序,第二是Linux内核,就是为应用程序提供对计算机硬件安全访问的一部分软件.第三是文件系统,是用于明确磁盘或分区上的文件的方法和数据结构.本文结合这三个部分的源代码进行具体的修改和配置然后交叉编译来完成了系统的移植.

三、人脸检测应用程序的开发

(一)USB摄像头驱动的开发

驱动程序包含有关硬件设备的信息,计算机可以通过驱动与设备进行通信.由于本系统采用了USB摄像头,所以要在系统内核中的USBDevice选项中选择USBsupport选项,然后添加进本系统所采用的USB摄像头驱动.

(二)基于V4L标准通过摄像头获取图片

V4L标准是Linux系统下的音视频流采集标准,它为我们开发应用程序提供了一个内核、驱动交流的API接口,目前的驱动和应用程序都提供该标准的支持.我们通过V4L模块提供的编程接口,从USB摄像头设备中获取所捕获的图像帧,将图像以保存为图片格式以供后续处理.

(三)基于Opencv的人脸检测程序开发

Opencv是由Intel公司开发可以免费获取的开源函数库,其用来实现一些常用的图像处理和计算机视觉算法.由于我们需要在ARM平台下使用,所以需要用交叉编译器先在Linux系统下编译出嵌入式系统需要的主要动态库和静态库文件,然后我们将编译好的文件移植到嵌入式Linux的文件系统中,就可以在ARM平台下调用Opencv库中的相关函数了.

人脸检测人脸识别前期最重要的一个环节.利用Opencv提供的库函数,我们可以方便的完成复杂的算法.Adaboost算法是一种分类器算法,其基本原理是利用大量的分类能力一般的弱分类器叠加起来,从而构成一个分类能力强的强分类器[4],分类器所采用的特征是Haar特征.在该系统中应用到的最重要的一个函数是cvHaarDetectObjects,本系统中首先对得到的包含人脸的图片进行一系列预处理,然后调用该函数检测出人脸的位置.

由于Opencv在不同的操作平台下使用的库文件是有差异的,所以我们需要获取ARM平台下的嵌入式Linux库文件,首先从Opencv的网站获取Opencv源码,然后修改Opencv的Makefile文件,主要将CXX设置为arm-linux-g++,host设置为arm-linux,其他根据自己的需要进行配置,编译即可生成我们所需要的库文件.

(四)图形用户界面的开发

在嵌入式系统开发中,图形界面的支持和数据保存的管理备受开发者关注.一个成功合格的嵌入式系统,需要良好的图形用户界面支持.

QT是跨平台的C++图形用户界面应用程序开发框架,支持多种操作系统,QT/Embedded是QT的嵌入式Linux端口,完整的包含C++GUI和基于Linux的嵌入式开发工具.其不仅具有基本的可视化控件编程功能,而且提供了丰富的类库,包含绘图、数据库、多媒体等等.

本系统以QT开发出人脸检测图像的显示界面,在QT中使用Opencv库需要在.pro文件中添加已编译出的arm平台下Opencv文件路径,即可将QT和Opencv结合起来使用.

四、实验结果与总结

如图1所示,本系统能够良好的人脸检测功能,并且识别率在95%左右.

本文设计并实现了基于ARM平台的人脸检测系统,经检测该系统识别率高.虽然检测速度和PC有一定的差距,相信随着当今嵌入式科技的飞速发展,ARM处理器的速度会更快功能也更加强大,能够得到更广泛的应用.