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
,令模板上相应位置的系数为
为了求导方便,可以取 cos(θ)≈1−12θ2
分类
待识别的人脸提取为人脸图后,将其与数据库中已有人脸库做对比(使用上一节公式),相似度最高且大于预设值的认为是同一人
算法实现
Colorado State 大学提供的csFaceIdEval算法验证系统里包含了EBGM的实现
Malic是一个基于Gabor小波实现的开源人脸识别项目