最近用LBP做人脸识别,所以整理一些资料供参考。
一些链接:
http://cdmd.cnki.com.cn/Article/CDMD-10425-2010280670.htm
http://www.pudn.com/downloads172/sourcecode/graph/detail796475.html
http://stackoverflow.com/questions/14207485/how-to-use-facedetector-face-for-face-recognition-on-android
http://blog.csdn.net/carson2005/article/details/6292905
http://docs.opencv.org/trunk/modules/contrib/doc/facerec/facerec_api.html#createlbphfacerecognizer
https://groups.google.com/forum/#!msg/javacv/q5VGh5quUTU/ofVUx4D0m8wJ
https://groups.google.com/forum/#!topic/javacv/q5VGh5quUTU
http://tech.thecoolblogs.com/2012/10/creating-lbph-local-binary-pattern.html
下面内容是引用的http://blog.csdn.net/carson2005/article/details/6292905
LBP(Local Binary Pattern, 局部二值模式)是一种用来描述图像局部纹理特征的算子;显然,它的作用是进行特征提取,而且,提取的特征是图像的纹理特征,并且,是局部的纹理特征;
原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3领域内的8个点可产生8bit的无符号数,即得到该窗口的LBP值,并用这个值来反映该区域的纹理信息。如下图所示:
原始的LBP提出后,研究人员不断对其提出了各种改进和优化,从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子;LBP均匀模式;LBP旋转不变模式;LBP等价模式等等,具体请参考T. Ojala在IEEE TPAMI上2002年发表的那篇文章“Multiresolution Gray-Scale and Rotation Invariant Texture Classification with Local Binary Patterns”。另外,LBP算子的中文参考文章,可以参考以下:
(1)基于LBP的人脸识别研究,黄非非,重庆大学硕士毕业论文,2009年
(2)基于LBP的特征提取研究,王玲,北京交通大学硕士毕业论文,2009年
(3)基于局部二值模式的人脸识别方法研究,周凯,中南大学硕士毕业论文,2009年
显而易见的是,上述提取的LBP算子在每个像素点都可以得到一个LBP“编码”,那么,对一幅图像提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”。不过,这里我们已经将物体从图片(图片可以理解为物体在原始测量空间得到的测量特征)转换为二次特征,也就是得到了我们通常说的“特征”。不过,这个所谓的“特征”并不能直接用于判别分析。因为,从上面的分析我们可以看出,这个“特征”跟位置信息是紧密相关的。直接对两幅图片提取这种“特征”,并进行判别分析的话,会因为“位置没有对准”而产生很大的误差。后来,研究人员发现,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一来,每个子区域,就可以用一个统计直方图来进行描述;整个图片就由若干个统计直方图组成;例如:一幅100*100像素大小的图片,划分为10*10=100个子区域,每个子区域的大小为10*10像素;在每个子区域内的每个像素点,提取其LBP特征,然后,建立统计直方图;这样,这幅图片就有10*10个子区域,也就有了10*10个统计直方图,利用这10*10个统计直方图,就可以描述这幅图片了。之后,我们利用各种相似性度量函数,就可以判断两幅图像之间的相似性了;
目前,LBP局部纹理提取算子,已经成功应用在指纹识别、字符识别、人脸识别、车牌识别等领域。