LBP(Local Binary Pattern, 局部二值特征)是一种用来描述图像局部纹理特征的算子,它具有旋转不变性和灰度不变性,同时该特征对光照不敏感。该特征对姿态和表情的鲁棒性不强。 LBP特征在人脸识别和目标检测中常用。

1、原始LBP特征描述及计算方法
原始的LBP算子定义在像素3x3的领域内,以领域中心像素为阈值,相邻的8个像素的灰度值与领域中心的像素值进行比较,若周围像素大于中心像素值,则该像素点(非中心点)的位置标记为1,否则为0。这样,3x3领域内的8个点经过比较可产生8位二进制数,将这8位二进制数依次排列形成一个二进制数字这个二进制数字就是中心像素的LBP值。LBP值共有2^8种可能,故LBP值有256种。中心像素的LBP值反映了该像素周围区域的纹理信息。
注意:LBP特征的图像必须是灰度图,如果是彩色图,需要先转化为灰度图。
上诉过程用图表示为:

demo输出

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

demo输出: ratio=1,采样点8

3、LBP旋转不变模式
由于编码的起始点是一点的,每一种二值编码经旋转(循环移位)会产生不同的编码值。为了形成旋转不变的编码模式,对同一个编码模式经旋转后产生的编码结果为同一值,既是这些旋转结果中最小的。我看有不少博客上的代码demo实现这种模式时是直接右移的,这样做应该不对的。

demo输出:

4、LBP等价模式
原始的LBP算子,随着领域内采样点数的增加,二进制模式的种类是急剧增加的。如半径为R的圆形区域内含有P个采样点石将会产生P^2种模式。过多的二值模式对特征的提取以及信息的存取都是不利的。
等价模式定义: 当某个LBP所对应的循环二进制数从0到1或者从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式。在实际图像中,计算出来的大部分值都在等价模式之中,可达百分之90%以上。
例子说明:

如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。
除等价模式类以外的模式都归为另一类,称为混合模式类,例如10010111(共四次跳变)

uniformLBP模式的个数为P(P-1)+2,P为领域像素点个数。对于8个采样点,uniform形式有58种输出, 其他的所有值为第59类,这样直方图从原来的256维降到了59维,并且可以减少高频噪声带来的影响。
对。
demo输出:

5、MB-LBP特征(Multiscale LBP)
原理图解

将图像分成一个个小块(Block),每个小块在分为一个个小区域,小区域内的灰度平均值作为当前小区域的灰度值,然后与周围小区域灰度进行比较形成LBP特征,该特征就是MB-LBP特征。
Block大小为3(3x3)则小区域的大小为1,就是原始的LBP特征,上图的Block大小为9(9x9),小区域的大小为3(3x3)
MB-LBP特征典型应用是Adaboost中,人脸识别等。

demo输出:block为9x9

6、LBPH-图像的LBP特征向量(Local Patterns Histograms)
LBPH-LBP特征的统计直方图。LBPH将LBP特征与图像的空间信息结合在一起。由Ahonen等人提出【论文: ] Ahonen, T., Hadid, A., and Pietikainen, M. Face Recognition with Local Binary Patterns. Computer Vision- ECCV 2004 (2004), 469–481】。
他们将LBP特征图像分成m个局部块,并提取每个局部快的直方图。
LBPH的具体计算过程:

1、计算图像的LBP特征;
2、将LBP特征图进行分块,Opencv中默认将LBP特征图分成8*8,64块区域;
3、计算每块区域特征图的直方图cell_LBPH, 将直方图进行归一化,直方图大小为1*numPatterns;
4、将上面计算的每块区域特征图像的直方图按照分块的空间顺序依次排列成一行,形成LBP特征向量,大小为(numPatterns * 64);
5、用机器学习的方法(SVM等)对LBP特征向量进行训练,用来检测和识别目标;

LBPH的维度:
采样点为8个,如果用的是原始的LBP或者扩展LBP特征,其LBP特征值的模式为256种,则一幅图像的LBP特征向量维度为:64256=16384维。
若使用uniform LBP特征,其LBP值得模式为59种,其特征向量维度为:64
59=3776维。既使用等价模式时,LBPH维度大大减少,这意味着在进行机器学习时时间能大大减少但性能确并不受很大影响。

7、demo地址

8、参考
https://blog.csdn.net/zouxy09/article/details/7929531
https://blog.csdn.net/lsq2902101015/article/details/48680779
https://blog.csdn.net/quincuntial/article/details/50541815 //MB-LBP,LBPH
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html#histogram-calculation //直方图

LBP特征原理及C实现相关推荐

  1. LBP特征原理与人脸检测

    LBP特征原理 原始LBP特征 某个像素的LBP值定义为:将其灰度值作为一个阈值,其周围像素值与之相比,比中间点像素值大(或者相等)的记为1,小的记为0,这样就得到二值图,然后按顺序排列得到八位二进制 ...

  2. 人脸检测(七)--LBP特征原理及实现

    主要依据这篇文章总结,但是有些地方,个人感觉理解有偏差,特此做备注. http://blog.csdn.net/zouxy09/article/details/7929531 LBP(Local Bi ...

  3. 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 什么叫特征检测?就是检测图像中目标的特征呗,所谓 ...

  4. 提取lbp特征java代码_LBP特征提取原理及代码实现

    老规矩,先上背景,算是表示对LBP算法提出者的一种尊敬(其实,是为了装...kkk,大家都懂ha). 一.LBP背景: LBP(Local Binary Pattern,局部二值模式)是一种用来描述图 ...

  5. 图像特征检测描述:SIFT、SURF、ORB、HOG、LBP特征的原理概述

    版权声明:本文为博主原创文章,转载请标明原始博文地址: https://blog.csdn.net/yuanlulu/article/details/82148429 </div>< ...

  6. LBP特征的理论介绍

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietikäinen ...

  7. lbp特征提取算法 知乎_计算机视觉基础-图像处理: LBP特征描述算子

    1 简介 LBP指局部二值模式(Local Binary Pattern),是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性等显著优点.LBP常应用于人脸识别和目标检测中,在OpenCV中 ...

  8. 图像的全局特征--LBP特征

    原文链接:http://blog.csdn.net/zouxy09/article/details/7929531#comments 这个特征或许对三维图像特征提取有很大作用.文章有修改,如有疑问,请 ...

  9. CV之LBP特征描述算子-人脸检测

    2.1 简介 LBP指局部二值模式(Local Binary Pattern),是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性等显著优点.LBP常应用于人脸识别和目标检测中,在OpenC ...

最新文章

  1. HDOJ 1060 Leftmost Digit
  2. python如何写生日快乐说说_高逼格祝福朋友生日快乐的说说
  3. python 两数之和
  4. C#封装类似任务管理器CPU使用记录图
  5. A - Junk-Mail Filter HDU - 2473
  6. 如何用JS实现音乐播放、暂停
  7. quill一些插件的配置 注意事项
  8. session mysql java_PHP自定义session处理方法,保存到MySQL数据库中
  9. Linux程序分析工具介绍—ldd,nm
  10. JavaScript 面向对象编程(二) —— 构造函数 / 原型 / 继承 / ES5 新增方法
  11. JavaEE开发之SpringMVC中的自定义拦截器及异常处理
  12. Qt 学习笔记(5)绘图 五子棋游戏
  13. golang语言函数--示例--模板--小程序模板
  14. 解析大型.NET ERP系统 业务逻辑设计与实现
  15. 纯html 404页面,一款纯css3实现的漂亮的404页面_html/css_WEB-ITnose
  16. 六、瞰景Smart3D三维重建
  17. 产品报告|利用SWOT模型分析趣头条APP
  18. [Multisim][模电实验]简易函数信号发生器的设计与实现_北京邮电大学2019级信通院电子电路实验下
  19. 木纹标识lisp_Lisp
  20. 将dropbear SSH移植到arm9开发板

热门文章

  1. Google浏览器Chrome不能上网并且报错DNS_PROBE_FINISHED_NO_INTERNET
  2. 小程序:微信小程序支付流程
  3. 复制或下载的文字粘贴到WORD中有底色,如何去掉?
  4. 递归和迭代的效率比较
  5. PHP中三元运算符的用法_PHP 三元运算符的使用
  6. 新环境中奋起的岁月(六)
  7. anki 必备插件之 Advanced Browser
  8. 使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)
  9. AVAudioRecorder录音和AVAudioPlayer播放声音小的问题!
  10. Vue-快餐店收银系统-leftNav.vuePos.vue