前言

局部二值模式(Local Binary Pattern,LBP)是一种用来描述图像局部纹理特征的算法,反映的是图像像素点周围纹理变化情况,具有旋转不变性、灰度不变性(光照变化无影响)、计算复杂度低等优点,1994年首次由Timo Ojala, Matti Pietikainen等人提出,用于纹理特征提取。2002年论文《Multiresolution gray-scale and rotation invariant texture classification with local binary patterns》进行了归纳总结,2018年该论文引用量154次,累计9832次。

LBP特征描述

原始LBP特征

使用3×3矩形模板,从上到下,从左到右逐行扫描,模板中心像素值为gc,从右侧中间像素点开始编号gp(p=0,...,7)。每次周围像素与中心像素比较:

得到二值图像,将二值图像值从右侧中间像素点逆时针排列,得到8位二进制数,转为10进制数,就是该中心点gc的LBP特征值:

一幅图像的LBP特征如果用灰度图形化显示出来就是这样的:

你可以用lbp的官方matlab代码|百度网盘(密码:3yzp) 去测试和实际使用:

lbp.m - LBP returns the local binary pattern image or LBP histogram of an image.

getmapping.m - GETMAPPING returns a structure containing a mapping table for LBP codes.

cont.m - C computes the VAR descriptor.

详细描述和样例在头部注释里都有,这里给出我上面测试的例子:function lbptest

I=imread('rice.png');

SP=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];

I2=lbp(I,SP,0,'i');

subplot(1,2,1)

imshow(I)

title("rice.png")

subplot(1,2,2)

imshow(I2)

title("lbp特征")

end

LBP的整体思想非常简单,计算复杂度很低,反映的特征较好,但是有两个明显问题:

1) 3×3邻域模板过小,无法捕获大尺度纹理结构

2) 矩形模板是具有旋转不变性的

因此很多人开始改进。

圆形LBP特征:Circle LBP

在论文的2.1 Achieving Gray-Scale Invariance中,Ojala等人提出了圆形邻域系统,如下图所示,定义中心点为gc,从最右中间点开始计数g0-gP-1共P(P>1)个点,它们等角均匀地分布在半径为R(R>0)的圆周上。以gc为原点(0, 0),圆周上的点gp坐标为(-Rsin(2πp/P), Rcos(2πp/P)),如果点没有落到像素中心,则采用插值的方式进行估计近似,通常来说使用双线性插值。

这样就可以通过改变P的值在圆上添加任意多个点,也可以通过改变R的值任意改变模板大小,记这样的LBP算子为:

然而圆形LBP依然不具有旋转不变性。

旋转不变LBP特征:LBPROT

我们总是选择最右中间点作为起始点g0,所以当LBP算子旋转的时候,g0会发生变化,这样即使是同一个模板、同一个位置、同样的P、R,计算得到的LBP特征值都是不同的。为了消除这种旋转差异,在论文的2.2 Achieving Rotation Invariance中,作者重新定义了LBP计算方式:

其中ROR(x,i)指的是对p位数字x进行i次循环右移。也就是说,从各个旋转的LBP二进制串中,找到最小的值,作为这个模板的LBP特征。举个例子,假设P=8,R=1(8个点,半径1),那么对于4个连续的1,4个连续的0(00001111)来说,可以旋转的有:

显然最小的是15,所以这个模板的值就是15。

看起来圆形LBP很完美,但实际使用发现LBPROT并不具有很好地辨别力,因为随着采样点数的增加,二进制模式会急剧增多,会使得数据量过大,直方图过于稀疏,不能很好地反映图像特征。

等价LBP特征:Uniform LBP

针对圆形LBP缺点,作者在2.3 Improved Rotation Invariance with "Uniform" Patterns and Finer Quantization of the Angular Space中进一步提出等价LBP特征,利用等价模式来对LBP模板种类进行降维。我们首先定义“跳变”为二进制串中"01"、"10"这样的变化,定义等价量度(Uniformity measure U("pattern"))为二进制串中的跳变次数。Ojala等人发现,大部分图像中都只包含两次跳变,于是可以保持跳变次数小于等于2的模式不变, 大于2的模式笼统归为归为一类。定义LBP:

其中,

例如,(00000000)2 等价于 (11111111)2,他们的等价量度U都是0,没有跳变,它们都是小于等于2的等价模式类;而(10101010)2含有8次跳变(注意是循环计数的,头和尾的差异也算跳变),属于混合模式类。

我们以P=8,R=1来仔细分析,本来应该有2^8 = 256个模式,这样一划分就变成了:等价量度模式个数等价量度模式个数

U=02个U=10个

U=256个U=30个

U=4140个U=50个

U=656个U=70个

U=82个

共9种跳变,那么小于2次的共58种LBP模式,将其编码为1-58;其余的混合模式类统一编码为0,如果用灰度值图像展示等价LBP会发现这种LBP特征值图像偏暗,因为大部分不重要的特征像素都被编码为0=黑色了。

等价LBP将原来2^P指数个模式变为了P(P-1)+2多项式个模式,大大减少了内存占用,并且特征维度的降低可以减少高频噪声带来的影响。

等价LBP不具有旋转不变特性。

旋转不变等价LBP特征

将旋转不变的圆形LBP和等价LBP结合起来,就构成了最强功能的旋转不变等价LBP特征。将旋转不变LBP进一步分成P+1类均匀旋转不变模式和1类非均匀模式。实验表明,旋转不变均匀LBP具有最低特征维数,保持鉴别力的同时具有良好的旋转不变性和灰度不变性,是LBP中最好的特征了。

LBP特征提取方法

1) 提取整幅图的LBP特征

2) 将特征按相同规则转为向量,例如按行拼接,就能够进行后续处理了。

参考资料

lbp纹理特征 MATLAB,毕业设计整理(六):LBP纹理特征相关推荐

  1. 基于块的纹理合成 matlab程序,基于块的纹理合成方法和装置制造方法

    基于块的纹理合成方法和装置制造方法 [专利摘要]本发明公开了一种基于块的纹理合成方法和装置.其中,该方法包括:查找候选纹理块集合中的每个候选纹理块与在目标纹理图中已合成纹理块的重叠区:将已合成纹理块中 ...

  2. lbp特征提取算法 知乎_图像-LBP特征描述算子-人脸检测

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

  3. 经典人脸识别算法(特征脸,FISHERFACE,LBP)

    首先,只是基于对算法的主要是想的介绍和理解,对于涉及到的PCA以及直方图比较提到的方法等等可以自己再去深入研究. 其次,只是用作笔记记录. 参考了CSDN博客:https://blog.csdn.ne ...

  4. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(五) 第六章 · 纹理贴图及相关技术 The Texturing

    本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/73718109 在计算机图形学中,纹理 ...

  5. 模式识别 - 处理多演示样例学习(MIL)特征(matlab)

    处理多演示样例学习(MIL)特征(matlab) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27206325 多演示样例学习( ...

  6. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  7. matlab dpsk,2DPSK调制与解调matlab(最新整理)

    <2DPSK调制与解调matlab(最新整理)>由会员分享,可在线阅读,更多相关<2DPSK调制与解调matlab(最新整理)(5页珍藏版)>请在人人文库网上搜索. 1.- 2 ...

  8. 《如何搭建小微企业风控模型》第六节节选 特征工程(下)

    <如何搭建小微企业风控模型>第六节节选 特征工程(下) 第一章 小微企业数据风控技术的框架 小微企业数据贷发展情况概述 搭建小微企业风控模型所需知识 风控模型概览 第二章 强相关变量:企业 ...

  9. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第六章 纹理 Texturing

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  10. 基于matlab毕业设计题目,matlab毕业设计题目.doc

    matlab毕业设计题目 matlab毕业设计题目 篇一:matlab毕业设计 龙岩学院 毕业设计 题目:基于matlab的音频信号处理 专业: 电子信息工程 学号: 作者: 指导教师(职称): 二0 ...

最新文章

  1. 在 Linux 终端调整图像的大小
  2. 原创 | CRUD更要知道的Spring事务传播机制
  3. git 换行符LF与CRLF转换问题
  4. python在线编辑器编译excel_python在线编译器的简单原理及简单实现代码
  5. actuator的原理_使用Spring Boot Actuator监视Java应用程序
  6. JQuery图表插件之Flot
  7. Bladex生成Swagger的方法
  8. 为了兴趣爱好,我该选嵌入式么?
  9. 真正的OKR是什么?
  10. 变量的解构赋值(对象)
  11. 【EMNLP2020】融合自训练和自监督方法的无监督文本顺滑研究
  12. Socket编程例子
  13. CE修改器使用教程 [入门篇]
  14. java/php/net/python城市管理综合执法系统设计
  15. 微博相册下载助手v7.2 微博图片批量下载神器
  16. 一张表了解四大物联网通信技术差异:NB-IoT 、LTEeMTC、LoRa与SigFox
  17. 2022年招投标,最加分的资质证书排行榜!
  18. 漫步数学分析三十九——隐函数定理
  19. 关于百度地图设置显示的比例尺大小
  20. 如何利用XGen制作头发,发片-笔记

热门文章

  1. 卷帘快门与全局快门的区别
  2. 018 EPLAN 宏部件库 西门子 欧姆龙 三菱PLC窗口宏ema正泰edz数据 mdb(94G)
  3. mysql 预处理stmt操作(写入数据库和从数据库中取出)
  4. 为啥E进制计算机的效率最高?
  5. 计算机及数码产品营销课后题,职业教育课程改革创新系列教材:计算机及数码产品营销...
  6. Web3.0时代:你在网上创造的一切,真的可以全部归你?
  7. 模仿excel复合饼图 (饼-柱)
  8. C#如何在EPPlus中冻结首行,冻结Excel首行
  9. Excel 冻结首行
  10. iOS Core Bluetooth 教程:心率监测