LBP特征学习(附python实现)

LBP的全称是Local Binary Pattern即局部二值模式,是局部信息提取中的一种方法,它具有旋转不变性和灰度不变性等显著的优点。在人脸识别领域有很多案例,此外,局部特征的算法还有 SIFT HOG等等。

LBP就是一种局部信息,它反应的内容是每个像素与周围像素的关系。举最基本的LBP为例,它反应了像素与周围8个点灰度值的关系,如下图所示:

LBP局部二值特征
  如上图所示,中间像素的灰度值为54,我们如下定义:当周围像素的灰度值大于等于中间像素值时,则LBP的一位值为1,否则为零。由这个九宫格,我们就得到了8位二进制数,顺时针取值,就得到了一个像素的LBP值,即11010011。那么我们如何表示这个二进值数呢,很简单,我们将它转化为十进制数即可,也就是211,即这一点的LBP值为211。就这样对整个图像进行LBP运算,就可以得到这幅图像的LBP特征。也就是说,我们把一张像素为256*256的图片进行LBP特征提取,我们就可以得到一个256*256的特征图(最外面的一圈进行补0后在进行运算),但每个特征图里的数值的范围是多少呢  0-256吗 不是的,特征图里的数值是由你定义的半径 和邻居数决定的 。比如上述的例子,他的半径是只选了周围一圈的8个,也就是 半径为1,邻居为 8 (一般来说,邻居数为半径的8倍) 。以此类推。 如果我们定义的是 半径为2 ,邻居为 2*8时 得到的特征图的数值的二进制数长度就翻了一番,所以范围是  0-65535 。

  但是得到这些特征有什么作用呢?提取图像特征的目标无非就是为了进行分类,我们把一幅灰度图像转化为了LBP特征图像,从理论上讲并没有实现降维,也无法进行分类。

  这时就引入了直方图统计,我们将LBP特征进行直方图统计,也就是统计LBP特征0~255各占的比例,这样就进行了数据的降维。之后就可以将一个向量输入分类器中进行分类。可是由于只有256维特征,所以分类的效果并不好。这时我们就引入了图像分块处理的方法,也就是说将图像分成若干的图像块,如,在人脸识别中,把脸分为7*7,5*5的区域,并对这49,25个小区域进行LBP处理,将每个小区域的直方图进行串联,就可以得到整个图像的LBP直方图。并对这个直方图进行分类处理,这样可以大大的增强分类的效果。但是分类数据维度也大大增加了,如果是7*7区域,数据维度为7*7*256=12544维。

    可以看出数据

  • 3
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值