转载:LBP的初步理解

转自http://blog.csdn.net/ty101/article/details/8905394

本文的PDF版本,以及涉及到的所有文献和代码可以到下列地址下载:

1、PDF版本以及文献:http://download.csdn.net/detail/ty101/5349816

2、原作者的MATLAB代码:http://download.csdn.net/detail/ty101/5349894

LBP一种用来描述图像纹理特征的算子,该算子由芬兰奥卢大学的T.Ojala等人在1996年提出[1],在2002年时,Timo Ojala等人在PAMI上又发表了一篇关于LBP的文章[2],该文章非常清楚的阐述了多分辨率、灰度尺度不变和旋转不变、等价模式的改进的LBP特征。LBP的核心思想就是:以中心像素的灰度值作为阈值,与他的领域相比较得到相对应的二进制码来表示局部纹理特征。呃,这句话实在有些拗口-_-#还是举例吧,下面我们从最简单的入手,一步一步讲解整个LBP特征(整个LBP特征提取流程请看文章最后的appendix)。

l  初级的LBP计算方法(先撇开多分辨率、灰度尺度不变、旋转不变^_^)

假设我们有一个3*3的窗口,窗口内的值代表每个像素的灰度值,如下所示:

可以看到中心像素点的灰度值为6,我们将这个中心像素点的灰度值与它周围8领域的像素值大小做比较,也就是说我们将7、9、8、7、1、2、5、6这8个数字分别与6做比较,大于6,我们则把右边相应的方格置为1,小于6则置为0。之后我们就得右边的窗口,我们按逆时针方向把这些1和0连起来就得到了所谓的LBP模式:11110001(注意是二进制的),然后将这个数转换为10进制,也就是241。

Tips:扩展后的LBP中的窗口形状

上面所说的版本是Timo Ojala在1996年提出的,在2002年的时候Timo Ojala在PAMI上的文章对上述算法进行了拓展。拓展后的算法可以设置邻域和半径的属性,用P来表示邻域像素点个数,用R来表示半径,上面我们描述的初级版本就是P=8,R=1.0的版本(不考虑插值,后面会详细描述)。下图描述了P,R取不同值时的情形:

注意初级版本[1]的领域是没有表现出插值的思想的(也就是方形邻域),而2002年的PAMI文章[2]是圆形邻域,是涉及到插值的(可以看出,只有对角线的像素需要插值)。其实将方形窗口换成圆形窗口也有利于后面的旋转不变性的实现,后面会详细描述。

Tips:关于LBP的亮度变化鲁棒性以及灰度尺度不变

灰度尺度不变其实很好理解,我们依旧用图1为例子,我们将亮度放大10倍:

可以看到,灰度尺度的变换并没有对最后的局部二值模式产生影响,同样的道理,即使该窗口的9个像素的灰度值出现了亮度的非线性变换,只要中心像素的灰度值与8邻域内像素的灰度值的大小关系不变,那么最终产生的LBP特征就不会改变。但是请注意:要是亮度变换后,中心像素灰度值与周围像素的灰度值大小关系与变换前不一样,那么LBP特征就会随之改变了。例如,图1中的窗口,亮度进行了一次非线性的变化,结果为:

可以看出,右边的局部二值模式已经和图1中的局部二值模式不一样了。

为LBP算子加入旋转不变性

在2000年Pietikinen等人在文章[3]中描述了如何扩展LBP特征,使之具备旋转不变性。下面我们以一个P=8,R=1.0的圆形窗口作为例子,讲解LBP算子的旋转不变性。令中心点的灰度值为gc,8邻域内的8个像素灰度值分别为gi={g0,g1,…,g7},当图像发生旋转时,圆形邻域内的灰度值gi是在以gc为中心R为半径的圆周上运动的。例如我们有一个这样的窗口:

那么把图像逆时针旋转每次45度,枚举出所有可能的取值,得到如下结果:

我们可以发现,只要我们取上述枚举出来的值的最小值,就可以消除旋转带来的影响。例如我们得到一个二进制的LBP值10000011(也就是原图逆时针旋转45度),然后不断对这个二进制进行向右循环移位(加上它本身,总共有8种取值可能),之后取最小结果就是该窗口的LBP值。

Tips:旋转不变的LBP特征也起到了一定的特征将维作用

当p=8,R=1.0的时候,最终会有2^p=2^8=256种取值可能,而旋转不变的LBP特征只会存在36种旋转不变的二值模式:

l  利用等价模式来提高旋转不变性

加入了旋转不变性后是不是就万事大吉了呢?其实不是,后来T.Ojala发现效果并不是很好,因为当我们把P和R值取很大时,也就意味着得到的局部二值模式二进制的位数会非常大(P和 R取值越大,邻域内的像素就越多,T.Ojala在论文[2]中已经给出,P的取值为24),这样一来,最后产生的直方图就非常稀疏,不利于分类。而如果p和r取值太小的话,就会使角度的分割精度降低,从而使得后面的分类性能降低。为了解决这些问题,T.Ojala等人在文献[2]中提出了一种叫“等价模式”的方法来降低LBP特征的维数。T.Ojala等人发现,有一类模式在图像中出现的频率及其高,这类模式就是等价模式,它们都有一个特性,就是黑白跳变数量都小于等于2(在图 7中的第一行即为等价模式,其他都为非等价模式)。另外我们也可以推出,在P邻域中,等价模式的个数U为:U=P*(P-1)+2,其他模式都称为非等价模式。等价模式的LBP值就等于二值编码中1的个数,非等价模式的LBP值为P+1,用公式来表示就是:

其中U(LBPp,R)<=2 就表示0,1跳变次数小于等于2。尽管等价模式只占了全部模式的一小部分,但是T.Ojala表明这一小部分等价模式能够刻画90%以上的纹理特征。

l  关于LBP支持多分辨率的分析

我们在图2中可以看出,只要不断改变P和R的大小(即图像处理中常用的所谓“窗口大小”的概念),即可以让LBP具有多分辨率识别的特性,还有一种常见的方法是不改变P和R的大小,而是将图像按某一因子缩放,T.Ojala在会议论文[4]中提出,根据他们实验得出使用前一种方法(及改变窗口大小而非scale图片)会得到更好的效果。当如在[4]在,T.Ojala等人还提出将图像的灰度直方图和LBP特征结合来增强分类的效果,具体的内容可以参考Texture Classification byMulti-Predicate Local Binary Pattern Operators这篇文章^_^。

下面是一些关于LBP“原汁原味”的文章,多看看原作者的文章才是王道,呵呵。

参考文献:

[1]T.Ojala, M.Pietikinen et al. A Comparative Study of Texture Measures with Classification based on Feature Distribution. Pattern Recognition. 1996. Vol.29.pp.51-59.

[2]T.Ojala, M.Pietikinen. Multiresolution Gray-Scale and Rotation InvariantTexture Classification with Local Binary Patterns. Pattern analysis and MachineIntelligence. Vol.24.7.pp.971-986

[3]M.Pietikinen, T.Ojala, and Z.Xu. Rotation-Invariant Texture ClassificationUsing Feature Distributions. Pattern Recognition. 2000. Vol.33.pp.43-52.

[4] T.Maenpaa , M. Pietikinen, and T. Ojala, “Texture Classification byMulti-Predicate Local Binary Pattern Operators,” Proc. 15th Int‘l Conf.Pattern Recognition, vol. 3, pp. 951-954, 2000.

Appendix:LBP特征提取流程图

本文的PDF版本,以及涉及到的所有文献和代码可以到下列地址下载:

1、PDF版本以及文献:http://download.csdn.net/detail/ty101/5349816

2、原作者的MATLAB代码:http://download.csdn.net/detail/ty101/5349894

LBP一种用来描述图像纹理特征的算子,该算子由芬兰奥卢大学的T.Ojala等人在1996年提出[1],在2002年时,Timo Ojala等人在PAMI上又发表了一篇关于LBP的文章[2],该文章非常清楚的阐述了多分辨率、灰度尺度不变和旋转不变、等价模式的改进的LBP特征。LBP的核心思想就是:以中心像素的灰度值作为阈值,与他的领域相比较得到相对应的二进制码来表示局部纹理特征。呃,这句话实在有些拗口-_-#还是举例吧,下面我们从最简单的入手,一步一步讲解整个LBP特征(整个LBP特征提取流程请看文章最后的appendix)。

l  初级的LBP计算方法(先撇开多分辨率、灰度尺度不变、旋转不变^_^)

假设我们有一个3*3的窗口,窗口内的值代表每个像素的灰度值,如下所示:

可以看到中心像素点的灰度值为6,我们将这个中心像素点的灰度值与它周围8领域的像素值大小做比较,也就是说我们将7、9、8、7、1、2、5、6这8个数字分别与6做比较,大于6,我们则把右边相应的方格置为1,小于6则置为0。之后我们就得右边的窗口,我们按逆时针方向把这些1和0连起来就得到了所谓的LBP模式:11110001(注意是二进制的),然后将这个数转换为10进制,也就是241。

Tips:扩展后的LBP中的窗口形状

上面所说的版本是Timo Ojala在1996年提出的,在2002年的时候Timo Ojala在PAMI上的文章对上述算法进行了拓展。拓展后的算法可以设置邻域和半径的属性,用P来表示邻域像素点个数,用R来表示半径,上面我们描述的初级版本就是P=8,R=1.0的版本(不考虑插值,后面会详细描述)。下图描述了P,R取不同值时的情形:

注意初级版本[1]的领域是没有表现出插值的思想的(也就是方形邻域),而2002年的PAMI文章[2]是圆形邻域,是涉及到插值的(可以看出,只有对角线的像素需要插值)。其实将方形窗口换成圆形窗口也有利于后面的旋转不变性的实现,后面会详细描述。

Tips:关于LBP的亮度变化鲁棒性以及灰度尺度不变

灰度尺度不变其实很好理解,我们依旧用图1为例子,我们将亮度放大10倍:

可以看到,灰度尺度的变换并没有对最后的局部二值模式产生影响,同样的道理,即使该窗口的9个像素的灰度值出现了亮度的非线性变换,只要中心像素的灰度值与8邻域内像素的灰度值的大小关系不变,那么最终产生的LBP特征就不会改变。但是请注意:要是亮度变换后,中心像素灰度值与周围像素的灰度值大小关系与变换前不一样,那么LBP特征就会随之改变了。例如,图1中的窗口,亮度进行了一次非线性的变化,结果为:

可以看出,右边的局部二值模式已经和图1中的局部二值模式不一样了。

为LBP算子加入旋转不变性

在2000年Pietikinen等人在文章[3]中描述了如何扩展LBP特征,使之具备旋转不变性。下面我们以一个P=8,R=1.0的圆形窗口作为例子,讲解LBP算子的旋转不变性。令中心点的灰度值为gc,8邻域内的8个像素灰度值分别为gi={g0,g1,…,g7},当图像发生旋转时,圆形邻域内的灰度值gi是在以gc为中心R为半径的圆周上运动的。例如我们有一个这样的窗口:

那么把图像逆时针旋转每次45度,枚举出所有可能的取值,得到如下结果:

我们可以发现,只要我们取上述枚举出来的值的最小值,就可以消除旋转带来的影响。例如我们得到一个二进制的LBP值10000011(也就是原图逆时针旋转45度),然后不断对这个二进制进行向右循环移位(加上它本身,总共有8种取值可能),之后取最小结果就是该窗口的LBP值。

Tips:旋转不变的LBP特征也起到了一定的特征将维作用

当p=8,R=1.0的时候,最终会有2^p=2^8=256种取值可能,而旋转不变的LBP特征只会存在36种旋转不变的二值模式:

l  利用等价模式来提高旋转不变性

加入了旋转不变性后是不是就万事大吉了呢?其实不是,后来T.Ojala发现效果并不是很好,因为当我们把P和R值取很大时,也就意味着得到的局部二值模式二进制的位数会非常大(P和 R取值越大,邻域内的像素就越多,T.Ojala在论文[2]中已经给出,P的取值为24),这样一来,最后产生的直方图就非常稀疏,不利于分类。而如果p和r取值太小的话,就会使角度的分割精度降低,从而使得后面的分类性能降低。为了解决这些问题,T.Ojala等人在文献[2]中提出了一种叫“等价模式”的方法来降低LBP特征的维数。T.Ojala等人发现,有一类模式在图像中出现的频率及其高,这类模式就是等价模式,它们都有一个特性,就是黑白跳变数量都小于等于2(在图 7中的第一行即为等价模式,其他都为非等价模式)。另外我们也可以推出,在P邻域中,等价模式的个数U为:U=P*(P-1)+2,其他模式都称为非等价模式。等价模式的LBP值就等于二值编码中1的个数,非等价模式的LBP值为P+1,用公式来表示就是:

其中U(LBPp,R)<=2 就表示0,1跳变次数小于等于2。尽管等价模式只占了全部模式的一小部分,但是T.Ojala表明这一小部分等价模式能够刻画90%以上的纹理特征。

l  关于LBP支持多分辨率的分析

我们在图2中可以看出,只要不断改变P和R的大小(即图像处理中常用的所谓“窗口大小”的概念),即可以让LBP具有多分辨率识别的特性,还有一种常见的方法是不改变P和R的大小,而是将图像按某一因子缩放,T.Ojala在会议论文[4]中提出,根据他们实验得出使用前一种方法(及改变窗口大小而非scale图片)会得到更好的效果。当如在[4]在,T.Ojala等人还提出将图像的灰度直方图和LBP特征结合来增强分类的效果,具体的内容可以参考Texture Classification byMulti-Predicate Local Binary Pattern Operators这篇文章^_^。

下面是一些关于LBP“原汁原味”的文章,多看看原作者的文章才是王道,呵呵。

参考文献:

[1]T.Ojala, M.Pietikinen et al. A Comparative Study of Texture Measures with Classification based on Feature Distribution. Pattern Recognition. 1996. Vol.29.pp.51-59.

[2]T.Ojala, M.Pietikinen. Multiresolution Gray-Scale and Rotation InvariantTexture Classification with Local Binary Patterns. Pattern analysis and MachineIntelligence. Vol.24.7.pp.971-986

[3]M.Pietikinen, T.Ojala, and Z.Xu. Rotation-Invariant Texture ClassificationUsing Feature Distributions. Pattern Recognition. 2000. Vol.33.pp.43-52.

[4] T.Maenpaa , M. Pietikinen, and T. Ojala, “Texture Classification byMulti-Predicate Local Binary Pattern Operators,” Proc. 15th Int‘l Conf.Pattern Recognition, vol. 3, pp. 951-954, 2000.

Appendix:LBP特征提取流程图

0
时间: 2024-10-13 21:52:30

转载:LBP的初步理解的相关文章

初步理解socket

近期研究下socket,发现自己还是有非常多不明确的地方,索性沉下心来,从最基础開始学习,開始看起,如今对自己的学习做下小小总结,以便和大家分享,如有谬误,敬请指正. 原创文章,转载请注明出处:http://blog.csdn.net/jessonlv TCP/IP 在学习socket之前,先回想下TCP/IP协议. TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机怎样连入因特网及数据怎样再它们之间

对于中国剩余定理(CRT)的初步理解

以前觉得用中国剩余定理来求同余方程组很鸡肋,因为可以用拓展欧几里得算法来构造出一种更加强大(可以处理取模的数(默认为mi)不互质的情况)的算法. 今天查了点资料,发现我太天真了. 首先讲讲中国剩余定理: 即 : x ≡ a[i] (mod m[i]) 1<= i <= r (m[i] 两两互质) 求这个同余方程组可以快速算: x = ∑M/m[i] * Inv(M/m[i], m[i]) * a[i] (mod M) 其中M = m[1]*m[2]*m[3]...m[r]  , Inv(x,

CSS (一)初步理解

通过牛腩新闻发布系统,接触了CSS,也感受到了它在做Web前台开发时简单方便易更改的优点. 尤其是后边对于CSS盒子的学习和认识,更加让人体会到网页设计和很多事物一样蕴含着深刻的思想和设计技巧,融于生活,表现生活. 本篇文章主要是对CSS内容概况的一些个人理解. CSS,即级联样式表.它真正做到了使网页表现层与内容分离的一种样式设计语言,做到了代码控制界面,简单易修改的解耦效果. 通过CSS,我们可以精确控制对象位置精确到像素级,还可以随心设计对象样式和风格,达到最优的美观度. 下面是CSS的一

CSS初步理解

最近在学习牛腩的时候遇到了网页的制作,挺新鲜的.当中涉及到了有关CSS的知识,于是乎自己也就花费两个小时的时间,找了本浅显易懂的书来看了一遍,从宏观上来了解CSS的相关内容.有关CSS的基础知识详见下链接. CSS基础知识 以下是对CSS理解的导图 通过上图我们也发现,CSS也很难,也容易.容易是说,学起来很快就可以上手,这中语言简单易懂,只要你具备小学英语的知识量就可以了.困难是在指学好它并不容易,因为它需要你耐心.就好比我们对word文档的排版,哪里需要主体鲜明一点,哪里需要着重突出一下,哪

Spring学习笔记--环境搭建和初步理解IOC

Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hibernate等其他众多的框架. 下面介绍环境的搭建,首先下载好spring的完整包,我下载的是4.2.5版本的,在elipse中,新建java项目: 1,导入核心jar包: 2.在src目录下,创建spring配置文件(名称可以自定义,一般写为beans.xml): <?xml version="1.

通过阅读Oracle Enterprise Asset Management User Guide,我对Oracle eAM的初步理解

通过阅读Oracle Enterprise Asset Management User Guide,我对Oracle eAM的初步理解 Oracle eAM是Oracle EBS套件的一部分,解决资产密集的组织的综合的和常规的设备维护需求.在设备层面追踪所有的维护成本和工作历史,来衡量绩效和最优化维护操作. eAM为组织提供了工具给资产和可重建的库存物料创建和应用维护程序.eAM让用户可以最大化地计划和安排维护活动,同时对组织的运作或生产中断最小.重要的是,它能提高资源有效性,增强维护质量,跟踪

初步理解require.js模块化编程

初步理解require.js模块化编程 一.Javascript模块化编程 目前,通行的Javascript模块规范共有两种:CommonJS和AMD. 1.commonjs 2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程,这标志”Javascript模块化编程”正式诞生. 在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限:但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程. node.j

关于THINKPHP5模型关联的初步理解

初步理解的意思是,使用最常用的关联模型,然后可以正常运行 还是打个比方 文章表  和文章分类表 一个文章分类可以有多个文章  所以  文章分类模型和文章建立 hasMany的关联 而文章和文章分类表则建立belongto关联 注:belongto和hasMany第二个参数外键的定义请仔细查看教程 关联建立后,可以使用with所以查询关联,with是预载入的时候最常用 比如要查找文章的列表,想顺便展示文章的分类名 $list=Article::with('articleType')->where(

【Oracle】 oracle数据库的并发初步理解

先从一个列子来说:我们经常听到说某某网站的每天访问用户数有几十,几千,几百万甚至上千万,同时在线用户数有几万,几十万的. 从这个列子我们来分析,数据库并发的概念. 首先,这儿有两个名词,一个是每天访问的用户数,一个是同时在线用户数.那么这两个数据是不是就是数据库的并发数呢?Oracle数据库的一个相对比较稳定的并发数是200左右,也就是说一台比较好的服务器,并发数在200时,还能够正常的运行,不会死机.由此可见,上面两个数据都不是并发数. 我们再来了解这两个名词的含义. 访问用户数:一个大型的网