8

openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)

 3 years ago
source link: https://blog.csdn.net/KimmKing/article/details/26143845
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检测人脸区域,ASM Library特征检测,然后使用YCrCb颜色空间做肤色检测,再用LBP+Gabor小波提取特征,最小邻近距离做分类识别。

1、GT人脸库

Georgia Tech face database,网址:http://www.anefian.com/research/face_reco.htm

GT人脸库包含50个人,每人15张不同角度、不同表情的正面照片。

图片为JPG格式,640*480,大小在159~192KB之间。Zip压缩下总大小130M。

特点是数据量比较多,每个人的图像信息丰富多变,相对也比较其他库难以识别。

2、openCV人脸区域检测

以下几个图片在 CV_HAAR_DO_CANNY_PRUNING |  CV_HAAR_FIND_BIGGEST_OBJECT(识别最大的人脸区域)下识别不出来:

s05_07.jpg // 可以在CV_HAAR_DO_ROUGH_SEARCH | CV_HAAR_SCALE_IMAGE(识别所有的人脸区域)下识别,见下图
s24_03.jpg // 无法识别
s32_06.jpg // 无法识别
s32_14.jpg // 识别错误
s43_14.jpg // 识别错误

可见openCV的检测率还是很高的(745/750 = 99.33%)。

s05_07.jpg 

s01_01.jpg

3、ASMLibrary特征检测

ASM Library是国人的作品,https://code.google.com/p/asmlibrary/

识别以后,提取人脸区域。

4、YCrCb颜色空间做肤色检测

按照肤色判断公式检查区域内的肤色像素,按照阈值为0.2判断是否为人脸区域,

再进一步规范化并获取人脸特征。

 s05_07提取的人脸特征灰度图    s01_01提取的人脸特征灰度图

5、LBP+Gabor小波

LBP见: http://baike.baidu.com/view/1099358.htm?fr=aladdin

Gabor见:http://en.wikipedia.org/wiki/Gabor_filter

Complex

g(x,y;\lambda,\theta,\psi,\sigma,\gamma) = \exp\left(-\frac{x'^2+\gamma^2y'^2}{2\sigma^2}\right)\exp\left(i\left(2\pi\frac{x'}{\lambda}+\psi\right)\right)g(x,y;\lambda,\theta,\psi,\sigma,\gamma) = \exp\left(-\frac{x'^2+\gamma^2y'^2}{2\sigma^2}\right)\cos\left(2\pi\frac{x'}{\lambda}+\psi\right)

Imaginary

g(x,y;\lambda,\theta,\psi,\sigma,\gamma) = \exp\left(-\frac{x'^2+\gamma^2y'^2}{2\sigma^2}\right)\sin\left(2\pi\frac{x'}{\lambda}+\psi\right)

where

x' = x \cos\theta + y \sin\theta\,y' = -x \sin\theta + y \cos\theta\,

简单的说就是使用Gabor变换在0~4五个尺度,0~8八个邻域方向对前面提取的人脸灰度图做卷积运算。然后提取灰度直方图作为特征。

6、最小邻近距离

最后使用最小邻近距离,判断 待检测图片与样本的距离,最小的即为匹配的样本。

7、几点总结

1、速度:训练大概是0.16s一幅,识别大概是0.35s一幅。速度有点慢。

2、识别率:一组测试采用5个人每人5个图片作为样本,测试每个人另外5张照片。

例如s01-s05,使用每人前5张照片(共25张)训练,中间或最后5张照片(共25张)作为待识别图片,识别率均为92%(23张)。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK