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

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

1、LBP特征提取

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

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

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

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

其中

人脸识别经典算法二:LBP方法代表3×3邻域的中心元素,它的像素值为ic,ip代表邻域内其他像素的值。s(x)是符号函数,定义如下:

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

LBP的改进版本

(1)圆形LBP算子

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

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

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

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

其中

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

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

(2)LBP等价模式

一个LBP算子可以产生不同的二进制模式,对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2^P种模式。很显然,随着邻域集内采样点数的增加,二进制模式的种类是急剧增加的。例如:5×5邻域内20个采样点,有220=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(共四次跳变)。比如下图给出了几种等价模式的示意图。

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

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

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

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

2、LBP特征匹配

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

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

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

(1)直方图交叉核方法

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

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

(2)卡方统计方法

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

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

参考文献:

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

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

转载 http://blog.csdn.net/smartempire/article/details/23249517

Original: https://www.cnblogs.com/chenying99/p/5023372.html
Author: 刺猬的温驯
Title: 人脸识别经典算法二:LBP方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551363/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 更优雅地使用命令行

    工欲善其事,必先利其器,通过武装自己的命令行工具,从而更优雅地使用命令行,可以使工作更加高效并且有趣。本文将以下几个方面来介绍命令行的使用技巧和提效工具 CLI 一键呼入呼出 it…

    技术杂谈 2023年5月31日
    075
  • 2022年最新动力节点Java自学全套视频资源

    今天整理了java开发的学习路线和相关的学习视频资源,非常适合零基础入门java的小伙伴,希望大家在学习的时候,能够节省时间。 【B站排名第一的】Java零基础视频844集(适合J…

    技术杂谈 2023年7月24日
    048
  • Cloudflare 推出了邮件转发功能

    今天发现Cloudflare邮件转发服务已经可以使用过了,该功能与 Google Domain 的邮件转发功能类似,不过 Google Domain 只能将邮件转发到 Gmail …

    技术杂谈 2023年5月30日
    0107
  • CentOS5.5挂载本地ISO镜像

    操作步骤: 一、挂载iso文件到挂载点 [root@server ~ ]# mount -o loop /mnt/iso/CentOS5.iso /mnt/cdrom 二、查看挂载…

    技术杂谈 2023年5月31日
    081
  • java学习之Servlet

    Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到。request是用来接受客户端传过来的参数,respone是用来响应客户端的页面。我们所用…

    技术杂谈 2023年6月21日
    070
  • HDU 4107 Gangster Segment Tree线段树

    这道题也有点新意,就是须要记录最小值段和最大值段,然后成段更新这个段,而不用没点去更新,达到提快速度的目的。 本题过的人非常少,由于大部分都超时了,我严格依照线段树的方法去写。一開…

    技术杂谈 2023年5月30日
    059
  • Activiti7多实例子流程

    顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。 使用子流程确实有一些限制: 一个子流程只能有一个none类型的启动事…

    技术杂谈 2023年7月24日
    065
  • 从磁盘删除Ubuntu出现的问题

    问题描述:Win10+Ubuntu双系统,利用磁盘管理工具删除了Ubuntu占用的磁盘,导致开机直接进入Grub界面,并且启动项仍有Ubuntu。 问题解决: 开机进入BIOS或启…

    技术杂谈 2023年7月25日
    080
  • 重新审视演进式设计

    说起来,所谓Evolutionary Design已经是老生常谈了。早在2004年,Martin Fowler在文章Is Design Dead中就深刻地比较了计划式设计与演进式设…

    技术杂谈 2023年5月31日
    076
  • 9、Swift协程详解:其他语言异步函数互调用

    从异步回调到异步函数 截止目前,我们已经详细探讨了 Swift 协程当中的绝大多数语法设计,这其中最基本也是最重要的就是异步函数。 在异步函数出现之前,我们通常会为函数添加回调来实…

    技术杂谈 2023年6月1日
    052
  • Visio绘制的图片即便适应大小也有很大空白

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/hxsyl/p/6575700.htmlAuthor: …

    技术杂谈 2023年5月31日
    0177
  • QtXlsx的基本使用

    前言在很多时候 ,我们需要将数据导出,之前我是将数据表导出为CSV格式,CSV文件虽然可以用Excel打开,但相对于真正的Xlsx文件,还是有许多不足的。偶然之间,发现了QtXls…

    技术杂谈 2023年5月31日
    082
  • python-函数-统计函数

    #(1)amax(),amin() 作用:计算数组中的元素沿指定轴的最大值,最小值 import numpy as np x = np.random.randint(1,11,9)…

    技术杂谈 2023年7月25日
    055
  • Hadoop HA(高可用)、脑裂、联邦机制详解

    Hadoop HA(高可用) 一、hadoop1.x的问题 1.单点故障 每个集群只有一个NameNode,NameNode存在单点故障(SPOF) 如果该计算机或者NameNod…

    技术杂谈 2023年7月11日
    074
  • MyEclipse取消验证Js的两种途径.

    前言:有时我们通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有俩种解决方法: 选中当前工程—properties—MyEclipse—validation—Exc…

    技术杂谈 2023年5月31日
    082
  • 微服务设计模式

    微服务可以对你的企业产生积极的影响。因此,值得了解如何处理 微服务架构(MSA)和一些微服务的设计模式,以及,微服务架构的一般目标或原则。以下是微服务架构方法中需要考虑的四个目标。…

    技术杂谈 2023年6月1日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球