人脸识别经典算法二:LBP方法

标签: geek | 发表时间:2019-03-26 00:00 | 作者:
出处:http://itindex.net/relian

第一篇博文特征脸方法不同,LBP(Local Binary Patterns,局部二值模式)是提取局部特征作为判别依据的。LBP方法显著的优点是对光照不敏感,但是依然没有解决姿态和表情的问题。不过相比于特征脸方法,LBP的识别率已经有了很大的提升。在[1]的文章里,有些人脸库的识别率已经达到了98%+。


1、LBP特征提取

最初的LBP是定义在像素3x3邻域内的,以邻域中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3x3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该邻域中心像素点的LBP值,并用这个值来反映该区域的纹理信息。如下图所示:



用比较正式的公式来定义的话:


其中 代表3x3邻域的中心元素,它的像素值为ic,ip代表邻域内其他像素的值。s(x)是符号函数,定义如下:



LBP的改进版本

(1)圆形LBP算子

基本的 LBP算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,Ojala等对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R 的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子。比如下图定了一个5x5的邻域:


上图内有八个黑色的采样点,每个采样点的值可以通过下式计算:


其中 为邻域中心点, 为某个采样点。通过上式可以计算任意个采样点的坐标,但是计算得到的坐标未必完全是整数,所以可以通过双线性插值来得到该采样点的像素值:



(2)LBP等价模式

一个LBP算子可以产生不同的二进制模式,对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2^P种模式。很显然,随着邻域集内采样点数的增加,二进制模式的种类是急剧增加的。例如:5×5邻域内20个采样点,有2 20=1,048,576种二进制模式。如此多的二值模式无论对于纹理的提取还是对于纹理的识别、分类及信息的存取都是不利的。同时,过多的模式种类对于纹理的表达是不利的。例如,将LBP算子用于纹理分类或人脸识别时,常采用LBP模式的统计直方图来表达图像的信息,而较多的模式种类将使得数据量过大,且直方图过于稀疏。因此,需要对原始的LBP模式进行降维,使得数据量减少的情况下能最好的代表图像的信息。

        为了解决二进制模式过多的问题,提高统计性,Ojala提出了采用一种“等价模式”(Uniform Pattern)来对LBP算子的模式种类进行降维。Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类。如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类,例如10010111(共四次跳变)。比如下图给出了几种等价模式的示意图。



       通过这样的改进,二进制模式的种类大大减少,而不会丢失任何信息。模式数量由原来的2 P种减少为 P ( P-1)+2种,其中P表示邻域集内的采样点数。对于3×3邻域内8个采样点来说,二进制模式由原始的256种减少为58种,这使得特征向量的维数更少,并且可以减少高频噪声带来的影响。这几段摘自[2]。


通过上述方法,每个像素都会根据邻域信息得到一个LBP值,如果以图像的形式显示出来可以得到下图,明显LBP对光照有较强的鲁棒性。



2、LBP特征匹配

如果将以上得到的LBP值直接用于人脸识别,其实和不提取LBP特征没什么区别,会造成计算量准确率等一系列问题。文献[1]中,将一副人脸图像分为7x7的子区域(如下图),并在子区域内根据LBP值统计其直方图,以直方图作为其判别特征。这样做的好处是在一定范围内避免图像没完全对准的情况,同时也对LBP特征做了降维处理。


对于得到的直方图特征,有多种方法可以判别其相似性,假设已知人脸直方图为M i​,待匹配人脸直方图为S i,那么可以通过:

(1)直方图交叉核方法


该方法的介绍在博文: Histogram intersection(直方图交叉核,Pyramid Match Kernel)

(2)卡方统计方法


该方法的介绍在博文: 卡方检验(Chi square statistic)



参考文献:

[1]Timo Ahonen, Abdenour Hadid:Face Recognition with Local Binary Patterns

[2]目标检测的图像特征提取之(二)LBP特征

相关 [人脸识别 经典 算法] 推荐:

人脸识别经典算法二:LBP方法

- - IT瘾-geek
与 第一篇博文特征脸方法不同,LBP(Local Binary Patterns,局部二值模式)是提取局部特征作为判别依据的. LBP方法显著的优点是对光照不敏感,但是依然没有解决姿态和表情的问题. 不过相比于特征脸方法,LBP的识别率已经有了很大的提升. 在[1]的文章里,有些人脸库的识别率已经达到了98%+.

人脸识别发展史与算法综述

- king - CSDN博客推荐文章
      在我们生存的这个地球上,居住着近 65 亿人. 每个人的面孔都由额头、眉毛、眼睛、鼻子、嘴巴、双颊等少数几个区域组合而成,它们之间的大体位置关系也是固定的,并且每张脸的大小不过七八寸见方. 然而,它们居然就形成了那么复杂的模式,即使是面容极其相似的双胞胎,其家人通常也能够非常容易地根据他们面孔上的细微差异将他们区分开来.

人脸识别算法终于超过了人类本身

- - 博客 - 伯乐在线
计算机科学家已经开发出一种新的人脸识别算法,在识别人脸的能力上比人类本身更加强大. 我们每个人都有过认不出某个自己曾经认识的人的经历,在不同的姿势、光照和表情下,这其实是一件比较困难的事情. 计算机识别系统同样存在这些问题. 事实上,尽管全世界的计算机科学家努力了这么多年,还是没有任何一种计算机识别系统在识别人脸方面能够像人类一样强大.

既要高精度也要高性能,人脸识别主流算法大合集

- - InfoQ - 促进软件开发领域知识与创新的传播
在 上一篇文章中,我们回顾了人脸识别算法的发展历程,介绍了人脸识别算法从传统机器学习算法到现在的深度学习算法的演进历程. 接下来,我们将详细介绍一下人脸识别常见的应用方式,以及现在主流的人脸识别算法. 1.人脸识别的主要应用方式. 为了讲清楚人脸识别算法的设计思路,有必要首先介绍人脸识别在实际场景中的主要的三种不同的应用方式.

【人脸识别】初识人脸识别

- - CSDN博客推荐文章
由于导师给我们布置了每周阅读两篇大牛论文,并写ppt的任务. 反正ppt都写了,所以我想干脆直接把ppt的内容再整理一下写成博客. 近期的阅读论文都是 人脸识别相关的主题. 如果你研究过人脸识别,或者对这方面有兴趣,那么你一定听说过Paul Viola. 他可以算得上是人脸检测识别的始祖,他的一篇大作《RobustReal-time Object Detection》可以说是人脸识别领域最重要的一篇论文.

人脸识别黑产

- - 奇客Solidot–传递最新科技情报
新京报 报道了人脸识别的地下黑产交易,有许多应用都需要人脸验证,创造了对人脸验证的一种需求,催生了一个地下产业链. 报道称,人脸识别的优质数据需要一百元一套,而便宜量大的仅需要 0.5元一套. 报道称一小部分来自网络刷单兼职人员,大部分来自企业内部员工. 人脸识别的黑产商贩称,市面上流通的手持身份证照片大多是在小额贷款平台和公司野蛮发展期间,泄露出来的,还有部分是从各行业收集而来的,这种信息交易和使用一般情况下不会被人发现,“当时很多人借钱不还,平台就把这些信息拿出来卖钱了,刚开始挺贵的,现在层层转卖就便宜了.

【转载】用HTML5进行人脸识别

- - HTML5研究小组
其中的一个特性是getUserMedia( W3C规范 ). 它是一个JavaScript API,可以让你访问(需要权限)用户的网络摄像头和麦克风. 今天发现一篇文章写的很有趣,叫你如何使用HTML5进行人脸识别. 在网页内进行人脸识别,很好很强大. “现代Web”不断发展出不少有趣的API,但你并不会在大多数项目中使用到所有的内容.

自动人脸识别基本原理

- - IT技术博客大学习
标签:   https://b2museum.   人脸识别经过近 40 年的发展,取得了很大的发展,涌现出了大量的识别算法. 这些算法的涉及面非常广泛,包括模式识别、图像处理、计算机视觉、人工智能、统计学习、神经网络、小波分析、子空间理论和流形学习等众多学科. 所以很难用一个统一的标准对这些算法进行分类.

用python库face_recognition进行人脸识别

- - 开源软件 - ITeye博客
期间在安装依赖包dlib时遇到问题,解决见:  http://kissmett.iteye.com/blog/2409857. 3.通过摄像头实时在获取的帧上进行人脸识别(较卡顿). basefacefilespath ="images"#faces文件夹中放待识别任务正面图,文件名为人名,将显示于结果中 baseface_titles=[] #图片名字列表 baseface_face_encodings=[] #识别所需人脸编码结构集 #读取人脸资源 for fn in os.listdir(basefacefilespath): #fn 人脸文件名.

无损压缩经典算法

- - CSDN博客综合推荐文章
总结经典的文件压缩算法原理,主要包括:哈夫曼压缩算法及其延伸,LZ77算法及其演变算法,LZ78算法及其演变算法,几何编码算法Arithmetic Coding. 内容部分摘录翻译自港大‘多媒体技术’硕士课程. 像图片、声音、视频这些类型的多媒体数据要比文本数据占用多得多的内存空间,尤其是视频文件,文件传输时占用带宽大,存储又占用大量的硬盘空间.