LBP(局部二进制模式)

article/2025/9/19 2:01:49

        LBP(Local Binary Patterns ,局部二进制模式)是一种理论简单、计算高效的非参数局部纹理特征描述子。由于其具有较高的特征鉴别力和较低的计算复杂度, 近期获得了越来越多的关注,在图像分析、计算机视觉和模式识别领域得到了广泛的应用,尤其是在纹理分类和人脸识别两个经典的模式识别问题中,LBP方法得到充分的研究和发展。

        局部二进制模式(LBP)方法最早由芬兰Oulu大学提出,目前该方法已经成为纹理分类和人脸识别领域主要的特征提取方法之一,并在图像处理和计算机视觉领域受到越来越多的关注。

LBP方法存在如下显著优势: 

1)计算复杂度低; 
2)无需训练学习;
3)光照不变性;

4)易于工程实现 


图 0.LBP算子抗单调灰度变换

        正是因为如此, 该方法已被成功应用于以纹理分类和人脸识别为代表的诸多图像处理和计算机视觉领域,包括工业检测、遥感图像分析、动态纹理识别、基于内容的图像检索、医学图像处理、人脸检测、场景分类、运动分析和环境建模等等,出现了大量 LBP 改进方法。

一、原始LBP描述子
        最原始的LBP算子定义在某中心像素及其周围大小为3 × 3 的矩形邻域系统上,如图1所示,将中心像素的每个邻域像素值以该中心像素的灰度值为阈值进行二值量化,大于或等于中心像素的像素值则编码为1,小于则编码为0,以此形成一个局部二进制模式。将该二进制模式以x正轴方向为起点按照逆时针方向进行串联得到一串二进制数字,并用该二进制数对应的十进制数字来唯一地标识该中心像素点图像中的每个像素都可以计算得到一个局部二进制模式。

                                   


定义在大小为3×3的矩形邻域系统上的LBP模式的应用受到严重制约,主要原因在于: 

1)3×3的邻域系统过于局部,无法捕获大尺度的纹理结构特征; 

2)矩形邻域系统不宜于旋转不变特征的设计 

        针对这些不足,Ojala等人提出采用圆形邻域系统(如图2所示)来计算LBP模式,并通过采用不同大小的圆形邻域系统(如图3所示)将LBP扩展到多尺度上,没有位于图像像素中心位置的邻域像素采用双线性差值方式获得。数学上,如图2所示,给定图像中位于(i,j)的某像素Xc及以该像素为中心的半径为r的圆周上等角间距均匀分布的p个邻域像素。

       基于p个邻接采样点的LBP模式总共有2^p种,用于表示整幅纹理图像的LBP直方图矢量的维数为2^p 通过改变参数对(r,p)的值,可以获得不同尺度上的LBP模式。Ojala等人经过实验比较,在特征鉴别力和特征维数之间做一个折中,建议(r,p) 选取为(1,8)、(2,16)、(3,24)、(r,8r)。
       给定一幅大小为M×N的纹理图像Img,常用的方法是通过统计纹理图像中所有像素对应的LBP模式出现的频率直方图H,作为该纹理图像的全局特征描述。

缺点:

1)LBPr,p不具有旋转不变性,而要提高一个特征描述子的实用性,需要增强对图像旋转变化的鲁棒性,

2)另一个严重劣势在于,全局LBP直方图矢量的维数随着p的增加而成指数增长,很快就受到计算和存储的限制。      为了解决这两个问题,Ojala等人继续进行了改进,创新性地提出了旋转不变(rotation invariant)LBP模式与均匀(uniform)LBP模式,以及两者的结合得旋转不变均匀LBP模式。

二、旋转不变LBP描述子

        当图像旋转时,某中心像素周围的圆形邻接像素也会发生变化,进而引起LBP模式的改变(全为0或者全为1的LBP模式除外) 。为了减轻图像旋转带来的影响,Ojala等人提出一种旋转不变算子。如图1中的二进制模式00100000 逆时针移动3次,得一个新的LBP模式00000001,旋转不变LBP描述算子中,00100000和00000001被认为是同一种模式。相比原始LBPr,p描述子, 旋转不变描述子的直方图特征维数明显降低。
        但是随着尺度的增加仍然很高,限制了其应用,因此研究者仅仅测试了旋转不变LBP(1,8)描述子的旋转不变纹理分类性能。 研究表明旋转不变LBP(1,8)描述子的旋转不变纹理分类性能较差,主要原因是单一尺度描述能力不足, 且角度空间采样较稀疏。

三、均匀LBP描述子
        Ojala等人注意到在所有同一尺度下的原始LBP模式LBPr,p中,有些模式出现的频率显著高于其他模式,于是有理由认为出现概率高的模式包含更多的局部纹理信息,从某种意义上来说它们反映了纹理图像中的基本局部模式。因此Ojala 等人建议采用所有LBPr,p模式的一些子集来描述纹理图像特征,提出所谓的均匀LBP算子,为后续研究者所广泛采用。
       该方法按照一定的准则将原始LBPr,p模式划分为均匀模式非均匀模式两大类。一个LBP模式称为均匀模式,是指其U值不大于2。U值表示LBP模式中在圆周上相邻的两个二元值的0/1(或1/0)转移次数。

          举例来说,LBPr,p模式00000000和01110000均为均匀模式,因为它们的0/1(或1/0)转移次数分别为0和2,即U(00000000) = 0,U(01110000)=2,而模式01100101为非均匀模式 因为 U( 01100101)=5。U值反应了局部纹理结构的一种均匀性度量,U值越大表示结构趋向于不均匀,变化频率较高,U 值越小则反之,而图像中很多信息集中在低频,因此有理由认为均匀模式要比非均匀模式多,图4给出了几种典型的均匀模式及其表示的结构特征,对于参数(r,p),共有均匀模式成p(p-1)+2种,而其余所有的非均匀模式将被统计一种, 故均匀LBP描述子的特征的直方图维数为p(p-1)+3。均匀LBP描述子的特征的直方图维数较原始 LBP 描述子和旋转不变LBP描述子有了显著降低,使其扩展到多尺度上成为可能。但是在很多标准的均匀LBP描述子应用中,通常局限于3个尺度。

图4.几种典型的均匀模式

四、旋转不变均匀LBP描述子
       为了进一步提高LBP特征描述子的旋转不变性能,并进一步降低其特征维数,在原始LBP描述子、旋转不变LBP描述子、均匀LBP描述子的基础上, Ojala等人提出旋转不变均匀LBP描述子。 在旋转不变LBP描述子的基础上,将旋转不变LBP 模式进一步分为均匀旋转不变模式非均匀模式。旋转不变均匀模式仅p+1类,所有非均匀模式归为1类, 按照这种方式,最后用于表示整幅纹理图像的旋转不变LBP描述子的直方图矢量特征仅 p + 2 维, 显著低于之前讨论的 3 种 LBP 描述子,Ojala 等人通过大量旋转不变和光照不变纹理分类实验, 得出旋转不变均匀LBP描述子不仅具有最低的特征维数,在保持满意的特征鉴别力的同时具有较好的旋转不变性能和灰度尺度不变性能, 因此该描述子得到后续研究者的青睐。在标准的 LBP 描述子应用中, 通常采用旋转不变均匀LBP 描述子。

五、LBP改进算法






参考文献:[1]刘丽,谢毓湘等.局部二进制模式方法综述[J].中国图象图形学报,2014,19( 12):1696-1720.

LBP论文&代码:http://www.cse.oulu.fi/CMV/LBP_Bibliography

python&Opencv code:http://www.tuicool.com/articles/mUVz63q

LBP人脸识别;http://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial.html

github:https://github.com/nourani/LBP

Matlab code:http://www.cse.oulu.fi/CMV/Downloads/LBPMatlab


http://chatgpt.dhexx.cn/article/CWhFrLog.shtml

相关文章

图像特征(HOG、LBP、SIFT、SURF)

大纲 引言HOGLBPHARRSIFTSURF特征点获取特征点描述子总结 参考 引言 最近看了些使用将传统的人工特征用于脱机签名的特征提取文章,思路大差不差,都是从脱机签名中提取某种图像特征,再送入判别器进行判别。具体到提取的图像特征层面,当前的图…

对LBP与HOG的理解

LBP(Local Binary Pattern),局部二值模式 一种描述图像局部纹理特征的算子 主要思想:: 通过比较图像区域中每个像素点与其邻域内像素点的灰度值,利用二进制模式表示的比较结果来描述图像的纹理特征。 keywords:邻域&…

浅谈LBP原理和代码(基于Python)

LBP,全称Local Binary Pattern,局部二值模式,是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性的优点 原始LBP算法 33的矩形块,由1个中心像素和它周围的8个邻域像素组成,若相邻像素值大于或…

LBP原理加源码解析

没有看LBP之前觉得它很神秘,看完了之后也就那么回事,不过提出LBP的人确实很伟大!! LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性…

局部二值模式LBP

文章目录 1.基础介绍2.局部二值模式(Local Binary Patterns,LBP)编码介绍3.使用skimage求lbp参考资料 欢迎访问个人网络日志🌹🌹知行空间🌹🌹 1.基础介绍 局部二值模式(Local Binary…

LBP(Local Binary Pattern)

一、LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的算子,LBP特征具有灰度不变性和旋转不变性等显著优点。在1994年提出,由于LBP特征计算简单、效果较好,因此LBP特征在计算…

Windows保护模式(一)段寄存器GDT表

保护模式 x86 CPU的3个模式:实模式、保护模式和虚拟8086模式。 段寄存器 段式内存管理 段式内存管理是将内存划分成若干段,处理器在访问一个内存单元时通过“段基址偏移”的方式计算出实际的物理地址。 在Intel x86处理器中,有专门的段寄存…

段、GDT、调用门学习笔记

保护模式 什么是保护模式 x86 CPU的3个模式:实模式、保护模式、虚拟8086模式。AMD64与Intel64 AMD在1999年的时候拓展了这套指令集,成为x86-64后改名叫AMD64,AMD是首先开发了64拓展,但是AMD的 64位拓展并不支持32位,后来Intel也开发了64位…

linux内核gdt,linux内核学习之全局描述符表(GDT)(二)

在进入保护模式之前,我们先要学习一些基础知识。今天我们看一下全局描述符表(Global Descriptor Table, 简称GDT)。 同实模式一样,在保护模式下,对内存的访问仍然使用段地址加偏移地址。但是,在保护模式下,在每个段能够…

【IDT】 windows IDT GDT LDT

IDT: (Interrupt Descrptor Table)中断描述符表,用来处理中断的。 IDT的获取: 可以通过SIDT指令,它可以在内存中找到IDT,返回一个IDTR结构的地址。也可以通过kpcr结构获取 ISR: …

GDT 表与段选择子等解析

来源:https://blog.csdn.net/qq_37653144/article/details/82821540 https://blog.csdn.net/yeruby/article/details/39718119 https://blog.csdn.net/lindorx/article/details/89410113 全局描述表(GDT Global Descriptor Table):在保护模式下一个重要的数据结构…

GDT和GDTR

文章目录 GDTR和GDTGDT和GDTR关系GDTR的结构GDT的结构如何在MBR中建立GDT和GDTR? GDTR和GDT GDT和GDTR关系 GDT是global descriptor table,全局描述符表,它是描述符组成的一张描述符表。描述符就是段描述符它用来描述一个段的信息,由8个字节…

GDT,LDT,GDTR,LDTR

GDT,LDT,GDTR,LDTR 前言全局描述符表GDT局部描述符表LDT中断描述符表IDT段选择子任务寄存器TR实例1:访问GDT2:访问LDT 前言 所谓工作模式,是指CPU的寻址方式、寄存器大小、指令用法和内存布局等。 实模式 段基址:段内偏移地址”产生的逻辑地…

GDT和LDT详解

1.GDT 我们回顾一下实际的操作系统的内存关系: ​ 程序/进程 → 映射 段 表 逻辑地址 → segment unit 段 基 址 偏 移 地 址 虚拟地址 → page unit 页 表 物理内存地址 \text{程序/进程}\overset{段表}{\xrightarrow[\text{映射}]{}} \text{逻辑地址}\overset{段基址偏移…

GDT(全局描述符表)和LDT(局部描述符表)

Home > GDT(全局描述符表)和LDT(局部描述符表) 每个程序都有自己的LDT,但是同一台计算机上的所有程序共享一个GDT。LDT描述局部于每个程序的段,包括其代码、数据、堆栈等。GDT描述系统段&#xff0c…

什么是数据可视化?

到底什么是数据可视化?带你一窥究竟~ 技术人最不该忽视可视化数据分析! 导读:在这个“人人都是数据分析师”的时代,大企业的同学几乎都在参与数据的采集、加工与消费。数据可视化作为连接“加工——消费”的重要一环…

当下最火的中台到底是个什么鬼,看完这一篇最通俗易懂的文章后,你就会彻底明白了!...

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你提升技术视野! 背景 自从阿里巴巴现任CEO逍遥子在2015年提出”大中台,小前台”战略以来,关于”什么是中台”,可谓是一石激起千层浪,大量文章在描述…

STD::是什么?

【&#xff23;&#xff0b;&#xff0b;】std&#xff1a;&#xff1a;是什么&#xff1f; 引例&#xff1a; #include<iostream> int main() {std::cout<<"我喜欢C";//输出一句话std::cout<<std::endl;//换行return 0; } 1.std是什么&#xff1…

C语言中 1%3,算术什么意思啊 算数什么意思

算术什么意思啊 算数什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 算术是什么意思 数学 什么是算术和 算术和是正数的和,即绝对值的和,例如2+13.5+7,Ge个数值皆为正且相加。  主要区别于代数和,…