引言
人脸检测跟踪是计算机视觉中十分重要的研究领域,正受到越来越多的关注。传统基于PC平台的人脸检测跟踪系统体积大,不能满足便携的要求,更不适合露天使用;而采用通用的DSP芯片组成的系统,外围电路较复杂,设计与调试都需要较长的时间,且系统的可扩展性和移植性不好。利用32位NiosⅡ软核处理器在FPGA上完成设计,减小了系统的体积,而且在PC上开发的程序可移植到NiosⅡ处理器上,实现了片上系统。采用NiosⅡ处理器的自定义指令,用硬件实现部分算法,大大提高了数据的处理速度,保证了较好的实时性。在外围电路不变的情况下,通过更新FPGA内部的电路设计,能使系统功能升级和增强。
系统组成及工作原理
人脸检测跟踪系统根据具体应用场合可以定制为不同的功能,而且不同的功能只需要在Nios中写入相应的C语言程序即可,不需要再做硬件板,非常方便。下面介绍一种比较通用的人脸检测跟踪系统。系统的结构如图1所示。本文设计的人脸检测跟踪系统主要包括三个模块:图像采集模块,人脸检测跟踪模块以及数据通信模块。
图像采集模块
该模块主要包括摄像头和外扩SRAM。本系统采用的图像传感器是OV7620,OV7620是美国OmniVision公司开发的1/3英寸,30万像素CMOS彩色图像传感器,该芯片将CMOS光感应核与外围辅助电路集成在一起,具有可编程控制与视频模/数混合输出等功能。该芯片的主要特性有:最大分辨率为664×492,同时支持VGA(640×480分辨率)和QVGA(320×240分辨率)两种模式。输出帧频在0.5fps—30fps之间可调。输出窗口尺寸在4×2—664×492之间可调。图像数据输出格式可以为8位/16位的YCrCb4:2:2ITU2656、IR2601GRB4:2:2或RGB Raw Data。能工作在逐行/隔行扫描方式下,也能工作在彩色/黑白模式下。上述的所有性能,用户可以根据自己的需要,通过SC2CB接口设置芯片内相应的寄存器进行选择。
人脸检测跟踪模块
该模块采用的FPGA选择Altera公司Stratix系列的EP1S25。该芯片的片上资源比较丰富,有25660个逻辑单元(LE),1944576bit的RAM,10个DSP模块,6个数字锁相环(DPLL),用户可用的I/O最多达到702个。在EP1S25中嵌入Nios软核,控制连接在外部总线上的SRAM和Flash,用它的以太网模块单元控制以太网接口芯片LAN91C11。
其中FPGA是主芯片,在1片FPGA中包含了Nios处理器、SRAM控制器、SDRAM控制器、Flash控制器、UART以及摄像头和外扩SRAM控制器的用户逻辑模块。这正体现了Nios的优势,将很多资源集中在FPGA中为设计PCB带来了便利,而且对系统的更改也变得非常容易,只要重新在FPGA中添加不同的模块就可以了。SRAM中存储嵌入式系统所用的向量表、数据和程序。Flash用于在系统掉电的情况下存储程序和数据。
数据通信模块
根据实际情况选择用以太网或GPRS把人脸检测跟踪后的结果发送到主控制站。在有以太网连接的条件下优先选用以太网连接,可以提供较高的传输速率和可靠性,在没有以太网的条件下选用GPRS进行通信。同时,如果用户需要,也可以直接在LCD上显示。
人脸检测跟踪算法的实现
在实现人脸检测跟踪算法之前,图像的预处理很重要。图像预处理主要有噪声滤除和图像增强,提高图像的质量。本系统采用中值滤波进行噪声滤除。与其它滤波方法相比,中值滤波不仅能有效滤除图像中的孤立噪声点,还能保护边界信息。图像增强技术主要包括直方图修改处理、图像平滑处理和图像锐化处理等。所以,实际的人脸检测系统采用图像增强来消除光照影响。
本系统采用基于肤色和差分帧相结合的方法来确定视频序列中的人脸。这样不但可以排除类似肤色背景的干扰,提高人脸检测的准确性,还可以保证检测与跟踪的实时性。大量实验表明,人脸肤色在YCrCb空间内的Cr和Cb值分布在特定的范围之内,Cr范围为135~156,Cb的范围为108~123。由此建立人脸肤色聚类模型,即彩色图像的像素B满足条件:108≤Cb≤123和135≤Cr≤156,则B是肤色点。
根据公式(1)可将图像转化为一个二值图像,其中白色像素点为肤色点,黑色像素点为非肤色点。由于头部与背景的相对运动,差分帧法是运动图像分析的有效方法。它检测图像序列相邻两帧之间的变化,即直接比较两帧图像对应像素点的灰度值。帧f(x,y,j)与帧f(x,y,k)之间的变化可用一个二值差分图像DBjkf(x,y)表示:
式中的T是阈值。
使用NiosII的定制指令,可以将一个复杂的标准指令序列简化为一个用硬件实现的单一指令,从而简化系统软件设计并加快系统运行速度。在人脸检测跟踪算法中,对图像的处理数据运算量大,循环数目多,而NiosII的定制指令个数已增加到256个,可以使用定制指令完成许多循环内的数据处理,从而加速数据处理的速度。定制指令逻辑和NiosII的连接在SoPCBuilder中完成。NiosIICPU配置向导提供了一个可添加256条定制指令的图形用户界面,在该界面中导入设计文件,设置定制指令名,并分配定制指令所需的CPU时钟周期数目。系统生成时,NiosIIIDE为每条用户指令产生一个在系统头文件中定义的宏,可以在C或C++应用程序代码中直接调用这个宏。
结语
本文的人脸检测跟踪系统利用32位NiosⅡ软核处理器在FPGA上完成设计,减小了系统的体积,而且在PC上开发的程序可移植到NiosⅡ处理器上,实现了片上系统。Nios是性价比较高的微处理器软核,可以方便地把用户需要的接口和自定义的逻辑加入到系统中。本文介绍的方法体现了SoPC嵌入式系统的灵活性。因此,这种方法能够有效地缩短开发周期、同时能够延长产品的生命周期、可以不断地在原有产品的基础上进行升级设计。