人脸识别(3)--EBGM

来源:互联网 发布:mysql数据库压力测试 编辑:程序博客网 时间:2024/06/09 21:23

EBGM(Wiskott L, Fellous J M, Kuiger N, et al. Face recognition by elastic bunch graph matching[J]. IEEE Transactions on pattern analysis and machine intelligence, 1997, 19(7): 775-779.)
使用Gabor提取预设位置的特征,将其与已知的人脸特征进行比较,寻求最佳匹配。
主要分为3个部分:创建人脸弹性束图(模板)、生成人脸图、分类。


算法描述

EBGM里比较重要的一块是确定提取特征点的位置,因此需要一幅模板图来做定位

人脸弹性束图

这个过程是手动的,取一部分人脸图,人工标记关键点,对每个点计算其不同方向不同尺度的Gabor滤波结果:

参考Gabor滤波器一文,
取其角度θ={kπ8|k[0,7]}
取尺度λ={24+k2|k[0,4]}
其他参数取ϕ=0γ=1σ=λ
这样得到40个Gabor系数Jet={jn},其中jn=ane(iϕn)an为系数幅度,ϕn为系数相位

标准的特征点位置为:左(右)眼、左(右)眼眉、额头、鼻尖、左(右)脸颊、下巴(图1)
                       模板图
                         图1. 人脸束图模板
最后形成的模板图代表了平均脸的位置及每个位置的Gabor参数。

生成人脸图

对每张原始人脸图,需要根据人脸弹性束图生成人脸图,以便于下一阶段的识别与分类。

首先根据人脸弹性束图(模板)粗定位到特征点:
每张人脸的左眼是确定像素的(如何?),然后根据模板图上其他点到已知点的矢量确定该点位置。这里认为距离越近的点可信度越高,因此根据不同距离给每个点赋予不同权值。

然后对每个点做精定位:
比较直接的方法是,计算粗定位点周围每个点的Gabor系数Jet,与模板相应点距离最近的即为所求
但Gabor系数计算复杂度太高,基于Gabor系数的以下性质
1)系数幅度大小随偏移量改变发生很小的变动
2)系数相位随偏移量在正弦波方向上产生线性变化
由此计算粗定位点的Gabor系数J,定义一个偏移量d,令模板上相应位置的系数为J,当下式取极大值时得到偏移量

SD(J,J,d)=Nn=1anancos(ϕn(ϕn+dk⃗ n)Nn=1a2nNn=1a2n

为了求导方便,可以取cos(θ)112θ2

分类

待识别的人脸提取为人脸图后,将其与数据库中已有人脸库做对比(使用上一节公式),相似度最高且大于预设值的认为是同一人


算法实现

Colorado State 大学提供的csFaceIdEval算法验证系统里包含了EBGM的实现

Malic是一个基于Gabor小波实现的开源人脸识别项目


0 0
原创粉丝点击