李昌盛,王亚娟,黄启俊,常 胜
(武汉大学 物理学院,湖北 武汉430072)
近年来,以人脸、虹膜、视网膜、指纹、声音、基因等生物特征作为识别手段的生物特征识别技术渐渐发挥出了很好的作用。这类识别属于模式识别范畴,相比传统的识别方式更安全、稳定和方便[1]。其中,人脸识别因具有友好、方便、直接等优点而成为一个热门研究领域。
鉴于FPGA的并行高速处理特点以及设计、扩展的灵活性,本论文采用FPGA来实现人脸检测系统的设计。
目前,根据是否使用人脸区域的色彩特征,将人脸检测算法分为两大类:针对彩色图像的基于肤色检测的算法和针对灰度图像的基于灰度信息的算法。
本文综合采用基于彩色图像的肤色检测方法和基于几何特征的灰度检测方法对人脸区域进行实时跟踪检测。
本设计选取的是一种由粗及精的方法,综合采用基于彩色图像的肤色检测方法和基于几何特征的灰度检测方法。首先基于肤色检测在一个大的摄像头范围内捕捉人脸区域,在一个最佳范围内定位人脸候选区,实现人脸的粗定位,这一模块大大减小了后续部分的搜索范围,降低了系统的运算量。在此基础上,在肤色检测所圈定的区域中,利用先验人脸的几何特征,实现人脸检测的目的。
本设计的算法部分在传统肤色检测算法的基础上加入图像预处理模块、色彩平衡模块、自适应阈值二值化模块、形态学滤波模块等实现人脸的粗定位;在此基础上,对定位出来的人脸区域进行中值滤波、边缘检测等处理,如图1所示。
基于上述基本算法,本系统最终需要搭建CMOS摄像头、FPGA核心图像处理单元、LCM显示人脸区域这样一个完整的人脸图像处理以及检测定位系统。系统整体架构如图2所示。
图2中左部分是CMOS摄像头设备及其控制电路,它输出主要的数字视频数据给CMOS Sensor Data Capture模块,同时从该模块获得MCLK信号。另外,摄像头电路需要通过I2C进行配置,它们之间传递的信号主要有SDAT和SCLK。
中间的FPGA模块主要完成输入设备和输出设备的配置、控制等功能,并完成从输入到输出的数据传输,是设计的核心单元。其中,主要包含CMOS摄像头电路的数据获取、图像类型转换、LCM显示设备控制器、SDRAM控制器、I2C配置控制器等模块。SDRAM控制器主要是用作帧缓存和图像获取(拍照功能);LCM控制器主要是输出 HS(行同步信号)、VS(场同步信号)、显示数据以及显示时钟给LCM;图像格式转换模块主要是实现数据格式到RGB格式的转换,以方便后续显示及处理。
本设计采用Altera公司的FPGA(EP2C35F672C6)作为核心处理芯片,全部模块功能通过纯硬件实现。采用Verilog语言编程,系统具有很好的便携性、实时性、可扩展性和移植性。
在本设计中,使用图像预处理技术来消除环境因素对人脸检测的影响,主要有快速中值滤波、形态学滤波和边缘检测。
中值滤波是一种基于统计排序理论的、能有效抑制噪声的非线性信号处理技术[2]。其基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。
在本设计中,选用快速中值滤波[3]来进行图像预处理,在快速实现滤波输出的同时节省了比较逻辑单元的个数,减少了资源占用率。
形态学滤波器被广泛地应用于图像处理和目标识别领域。它的基本思想是[4]利用具有一定形态的结构元素作为“探针”,在图像中不断移动来度量图像的结构信息,考察图像各部分之间的相互关系,进而提取图像的结构特征。
本文所述形态学滤波的目的是检测大小为256×256像素的8位灰度图像中的弱小目标。在本文中,主要实现了腐蚀、膨胀、开运算和闭运算,并在此基础上通过级联开运算和闭运算对图像进行预处理。
经过形态学滤波后,二值化后的图像变得“黑白分明”,更符合实际的二值结果,去除了噪声点或背景区域的干扰。
图像边缘检测可以简化图像处理,广泛应用于图像分割、图像识别、纹理分析等领域。在数学上可以利用其亮度变化曲线的一阶、二阶导数来描述两种不同的边缘[5]。
本文采用Sobel边缘检测算子做硬件实现,并且用于实时人脸检测系统。Sobel边缘检测算子是综合图像每一个像素点的上下左右亮度加权和,接近模板中心的权值较大[6]。
从图3和图4可知,Sobel算子 x方向和y方向的滤波分别突出了图像的横向和纵向的边缘,灰度连续的部分削弱。经过Sobel边缘检测之后,lena图像的边缘信息被提取了出来,检测效果比较理想。
本系统中,通过摄像头采集图像做人脸检测。同时,视频检测的结果需要通过显示系统显示结果,因此需要视频采集电路和显示电路[7]。
3.2.1 人脸矩形位置确定
本设计中,利用了人脸的几何形状特征来精确地定位人脸区域。这里的人脸区域是指包含了人脸主要特征部位(如眼睛、鼻子、嘴巴)的一个矩形区域。
图5给出了人脸几何形状的模型图。根据人们的先验知识,可以假设人脸长度约是宽度的1倍到1.5倍,即:iFaceHeight<1.5iFaceWidth。
以上图作为模型,并且根据人们的先验经验,可以找出二值化后人脸区域的左右边缘、上下边缘以及人脸中心位置点,这样就可以在人脸面部区域画一个矩形框,进而确定人脸的上、下、左、右边缘的位置。
3.2.2 系统测试结果分析
图6和图7是一个摄像头采集到图像,经过肤色检测二值化后加入形态学滤波,去除周围环境类肤色区域影响的结果图,人脸的肤色区域检测效果较好。
本文综合采用基于彩色图像的肤色检测方法和基于几何特征的灰度检测方法,设计的人脸检测系统能较好地检测人脸。下一步工作中,需对本系统从如下几方面做出改进:
(1)在进行肤色二值化时,可以采用自适应阈值方法代替固定的统计得出的经验阈值,即可针对不同的图像进行二值化,肤色检测的效果更好。
(2)实现人脸面部五官的精确定位,以提高人脸检测的精确度。
(3)光照平衡模块的小波变换方法实现。采用的方法是利用小波变换[8]做3级分解,然后再对3级之后的低通滤波分量LL3做灰度平均,并且将LL3中的每个像素都赋值为该均值,相当于对图像做了亮度的归一,从而去掉了图像中的光照成分,最后做小波重构即可。本文中已验证此方法可行。
(4)实现复杂背景下[9]的人脸区域检测定位以及分割技术。
[1]邢嘉,李磊.人脸识别方法综述[J].科技信息.2010,2(17):472-473.
[2]VISAKHASART S,CHITSOBHUK O.Multi-pipeline architecture for face recognition on FPGA[C].International Conference on Digital Image Processing,IEEE.2009.
[3]孟显英.中值滤波算法的FPGA设计与实现[J].电脑知识与技术,2010(9):7822-7824.
[4]李爱军.基于帧差法的交通图像形态学滤波处理方法的研究[D].沈阳:沈阳工业大学.2006.
[5]程鸿亮.基于FPGA的实时图像边缘检测系统的研究[D].西安:长安大学.2009.
[6]薛丽霞,李涛,王佐成.一种自适应的 Canny边缘检测算法[J].计算机应用研究,2010,27(9):3588-3590.
[7]赵东方.基于FPGA的数字视频采集与显示系统的设计[D].湖北:武汉大学.2008.
[8]王亚娟,旷捷,倪奎,等.基于 FPGA的高性能离散小波变换设计[J].电子技术应用,2009,35(9):22-24.
[9]郭红建,敖婷,冯建强.复杂背景彩色图像中的人脸分割技术[J].计算机工程与应用,2005,41(35):73-75.