LBP(local banary patter)是一种非常经典的用来描述图像局部纹理特征的算子。

1,基本LBP

LBP方法自1994年提出,此后就作为一个有效的纹理特征,不断的被人使用和改进。LBP非常简单,也非常有效。

左边的图是从一个图片上拿下来的3*3矩阵,矩阵上的值就是像素值,现在我们要计算的中间那个点的LBP。除了它此外的8个点依次与中间点比较,比它(也就是15)大的记成1,比它小的记成0,然后我们就得到右面的图片。然后我们选定一个起始点-这个图片选的是左上角第一个点,然后按照顺时针方向得到一个二进制串10011010,转换为十进制则为154。到此,我们得到了中间点的LBP值--154。对整个图片的所有点都这样处理,也就是以它为中心与附近的8个点相比较,这样就得到整个图所有点的LBP值。那么得到这么个与源图像大小相等的LBP值矩阵有什么用呢?通常我们统计它的直方图,得到一个直方图矩阵向量,然后每一个图片对应一个直方图向量,这个直方图向量就是此图片的一个特征。我们由两个图像的直方图向量从而得到它们的相似度,从而来分类。

2, LBP均匀模式LBP (uniform LBP)

均匀模式就是一个二进制序列从0到1或是从1到0的变过不超过2次(这个二进制序列首尾相连)。比如:10100000的变化次数为3次所以不是一个uniform pattern。所有的8位二进制数中共有58个uniform pattern.为什么要提出这么个uniform LBP呢,因为研究者发现他们计算出来的大部分值都在这58种之中,所以他们把值分为59类,58个uniform pattern为一类,其它的所有值为第59类。这样直方图从原来的256维变成59维。

3,旋转不变模式LBP

旋转不变模式LBP能够在图片发生一定的倾斜时也能得到相同的结果。它的定义可以看下图:

我们看到中心点的邻居不再是它上下左右的8个点(补充一句,不一定非要是3*3的邻域,这个自己定,但是邻域大了意味着直方图向量维度的增加),而是以它为圆心的一个圈,规定了这个圆的半径和点的个数,就可以求出各个点的坐标,但是点的坐标不一定是整数,如果是整数那么这个点的像素值就是对应点的值,如果不是整数,就用差值的方式得到。

其他基于LBP的算法

1,MBP

将整个邻域内的所有点的中值作为阈值进行比较,中值不是平局值哦,是所有的值按照从小到大排列,最中间的那个。话说这个MBP可以用matlab的一个函数实现:medfilt2

2,

利用邻域内所有点的平局值作为阈值。

3,

第三种不是在阈值上做改动,而是将大图片切分成小图片,然后再小图片上用LBP方法,然后把小些小图片的直方图矩阵连接起来,成为大图的特征。为什么这么做呢?因为很明显的LBP 直方图会丢失局部信息,比如得到一个值为100那么不管你这个值是从哪里得到的--比如人脸,不管是眼睛处得到这个值还是鼻子处得到,应该不管,都放到lable=100这里。

-----------------------------------------------------------------------------------------------------

在这里列出那58个uniform patterns.

00000000,0
00000001,1
00000010,2
00000011,3
00000100,4
00000110,6
00000111,7
00001000,8
00001100,12
00001110,14
00001111,15
00010000,16
00011000,24
00011100,28
00011110,30
00011111,31
00100000,32
00110000,48
00111000,56
00111100,60
00111110,62
00111111,63
01000000,64
01100000,96
01110000,112
01111000,120
01111100,124
01111110,126
01111111,127
10000000,128
10000001,129
10000011,131
10000111,135
10001111,143
10011111,159
10111111,191
11000000,192
11000001,193
11000011,195
11000111,199
11001111,207
11011111,223
11100000,224
11100001,225
11100011,227
11100111,231
11101111,239
11110000,240
11110001,241
11110011,243
11110111,247
11111000,248
11111001,249
11111011,251
11111100,252
11111101,253
11111110,254
11111111,255

十进制数位:

[0, 1, 2, 3, 4, 6, 7, 8, 12, 14, 15, 16, 24, 28, 30, 31, 32, 48, 56, 60, 62, 63, 64, 96, 112, 120, 124, 126, 127, 128, 129, 131, 135, 143, 159, 191, 192, 193, 195, 199, 207, 223, 224, 225, 227, 231, 239, 240, 241, 243, 247, 248, 249, 251, 252, 253, 254, 255]

也谈LBP的更多相关文章

  1. LBP特征 学习笔记

    这几天一直在做人脸识别的项目,有用到LBP特征,但是毫无头绪,师姐这几天也比较忙,没有时间来指导我,随自己找相应的介绍LBP的博文来看,现在总算有了一个大体的思路了,就写下来吧 注:参考博文: 目标检 ...

  2. DeepFace--Facebook的人脸识别(转)

    DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -> represent -> classify 人脸对齐流程 分为如下几步: a. 人脸检测,使用 ...

  3. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  4. 从I/O复用谈epoll为什么高效

    上一篇文章中,谈了一些网络编程的基本概念.在现实使用中,用的最多的就是I/O复用了,无非就是select,poll,epoll 很多人提到网络就说epoll,认为epoll效率是最高的.单纯的这么认为 ...

  5. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  6. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  7. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  8. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  9. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

随机推荐

  1. 关于ORALCE一个表空间的数据导入到另一个表空间的方法(原创)

    用户:   whnaproject     所属表空间: whnaproject 新用户   : wniec            所属新表空间: wniec 要求:将用户whnaproject中的数 ...

  2. SVN代码回滚命令之---merge的使用

    一.改动还没被提交的情况(未commit) 这种情况下,见有的人的做法是删除work copy中文件,然后重新update,恩,这种做法达到了目的,但不优雅,因为这种事没必要麻烦服务端. 其实一个命令 ...

  3. 最最简单的~WordCount¬

    sc.textFile("hdfs://....").flatMap(line =>line.split(" ")).map(w =>(w,1)). ...

  4. Educational Codeforces Round 15 Road to Post Office

    Road to Post Office 题意: 一个人要从0走到d,可以坐车走k米,之后车就会坏,你可以修或不修,修要花t时间,坐车单位距离花费a时间,走路单位距离花费b时间,问到d的最短时间. 题解 ...

  5. HTML document对象(2)

    五.相关元素操作: var a = document.getElementById("id");找到a: var b = a.nextSibling,找a的下一个同辈元素,注意包含 ...

  6. VMware和CentOS7安装和配置

    准备工作: 下载: 1.VMware-workstation-full-10.0.0-1295980 2.CentOS-7-x86_64-DVD-1511.iso 安装: 1.VMware-works ...

  7. android 中怎么保存当前按钮的状态?就是退出后重新进入还是上一次离开的状态

    比如当前Activity中有一个按钮目前是开启,点击后按钮的text变成关闭!然后退出该Activtity,然后重新打开该Activity后当前按钮的状态还是关闭呢? 就是设置一个状态flag.fla ...

  8. Linux中记录终端(Terminal)输出到文本文件(转载)

    一,如何把命令运行的结果保存到文件当中? 这个问题太简单了,大家都知道,用 > 把输出转向就可以了 例子: [lhd@hongdi ~]$ ls > ls.txt [lhd@hongdi ...

  9. 30天轻松掌握JavaWeb_使用beanutils

    导入commons-beanutils-1.8.3.jar及commons-logging-1.1.3.jar 使用commons-beanutils-1.8.3.jar包时需要同时使用commons ...

  10. spring controller中@Value取不到applicationContext.xml中加载配置文件的问题

    原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个 ...