1.简介

LBP是一种针对灰度图像任意单调变换(monotonic transformation)具有不变性的鲁棒特征算子。除了鲁棒性外,另一个突出特点就是计算量小,实现时只需在很小的邻域内使用少量的算子和查询表。

作者提出算法时,主要是想应用于二维图像纹理分析:工业表面检测,遥感,生物医学图像分析等,但是当时在这一领域成功的探索非常有限。作者分析主要是由于,真实世界中的纹理并不总是一致的,而是存在方向性、尺度以及其他的视觉表现上的差异。因此,灰度不变性(Gray scale invariance)对于关照不均和较大的类间差异问题非常重要。此外,当时其他一些分析方法计算量偏大。论文围绕两个方面阐述:1)LBP算子,能够对方向、灰度保持特征不变性;2)低计算量。

LBP算法使用圆形邻域在任意可量化的角度值与空间分辨率,检测“一致的”(uniform)的局部二值模式(后文会对这一概念进行解释)。定义这样一个圆形对称邻域:

LBPriu2P,R

其中P指邻域的数量,用于控制量化的角度值,R指圆形半径,决定算子的空间分辨率。除了这两个参数外,作者还使用一种由多种(P,R)参数组合的方式,进行多尺度分析。

对于一幅图像或者局部区域,统计这种“一致的”模式的离散分布直方图(Discrete occurrence histogram),是一种非常有用的纹理特征。为了有效的计算DOH,作者融合了结构与统计的方法:使用直方图评估那些LBP检测的微结构(例如,边缘、线、点、平滑区域)的分布特征。

作者分析认为,二维图像具有主要三个特点:二维正交,空间结构(pattern),对比度(局部纹理)。在图像灰度和旋转不变纹理分布上,有两个有趣的现象:空间模式受到旋转的影响,而对比度不会;对比度受图像灰度影响,但是空间模式却不会。因此,对于单纯的灰度不变纹理分析,对比反差是可以不考虑的。

LBPriu2P,R算子对于局部的空间结构具有很好的表达能力,但是很明显不具备一些其他局部特征的描述能力,例如对比度。因此,如果只考虑旋转不变性纹理分析(不考虑灰度不变性),LBP_{P,R}^{riu2}算子足矣。但是通过引入局部方差旋转不变测度VAPP,R描述局部纹理对比度,就可以弥补这一不足。

2.灰度与旋转不变性的LBP

在灰度图像中一个局部纹理,可以视为像素灰度值(像素级为P, P>1)得联合分布:

T=t(gc,g0,...,gP−1),(1)

其中gc指的是局部邻域的中心像素,gp(p=0,...,P−1)指的是以中心像素为圆心半径R(R>0)的圆周上的像素值。将其用坐标值表示,则gc为(0,0),gp则定义为(−Rsin(2πp/P),Rcos(2πp/P))。图 1 给出了不同圆形对称邻域(P,R)的示例。那些没有落在像素中心的点通过内插获得(文中实验中使用的是双线性内插(bilinear interpolation))。

2.1灰度不变性

为了趋向于灰度不变性,首先进行灰度减:

T=t(gc,g0−gc,g1−gc,...,gP−1−gc),(2)

这样做,并不会产生什么信息损失。

接着,可以假设差异gp−gc是与gc无关的,因此可以进行因式分解:

T≈t(gc)t(g0−gc,g1−gc,...,gP−1−gc),(3)

当然在实际中,绝对的上述的独立性是很难保证的,因此上式仅仅是一种联合分布的近似表达。然而,我们能接受由灰度漂移,产生的可能存在的小损失,从而达到灰度不变性。换句话说,就是令公式(3)中的t(gc)表示整幅图像的亮度,而非局部图像。因此,公式(1)中的原始灰度联合分布,可以转化为联合差异分布:

T≈t(g0−gc,g1−gc,...,gP−1−gc),(4)

这是一个具有较强表达能力的算子。它能够记录多种出现在邻域的各个像素的模式,并表达在直方图里。对于灰度值不变的区域,这种差异在各个方向都是0。对于微微倾斜的边缘,算子在梯度方向获得最大差异,而沿着边缘方向为0。对于一个点,这种差异在各个方向都很高。

作者进一步简化公式(4)为:

T≈t(s(g0−gc),s(g1−gc),...,s(gP−1−gc)),(5)

其中s(∗)为符号(Sign)函数:

s(x)={10;x>0;x⩽0(6)

这样仍然能够保证灰度不变性。通过给每一项s(gp−gc)分配一个二项分布系数,公式(5)可以转变成用来描述局部图像的空间结构的特征值:

LBPP,R=∑p=0P−1s(gp−gc)2p(7)

由此,“Local Binary Patten”反应出算子的功能,例如一个局部领域,通过以中心像素为阈值进行二值化。另外LBPP,R算子对于图像的单调变换具有不变性,例如,只要保持灰度值的顺序不变,输出的结果就不变。

2.2旋转不变性

LBPP,R可以输出2P种结果,对应着2P种由P个邻域所产生的不同二值模式。当图像旋转时,灰度值gp会对应着沿着以gc为中心的圆形圆周旋转。由于g0总是赋予位于(0,R),即gc右边的像素值,当某一特定二值模式旋转后,其LBPP,R值也会改变。当然,对于那些只有0或1的模式,旋转后结果仍然不变。为了消除旋转的影响,我们为每种二值模式提供一个独一无二的标识符:

LBPriP,R=min{ROR(LBPP,R,i)|i=0,1,...,P−1}(8)

其中函数ROR(x,i)指将P-bit的数,绕着圆周逐比特向右偏移,并最终得到最小值记为该模式的标识符。什么意思呢?大致是下图的意思:

通过图示的方法,就可以保证旋转不变性。

LBPriP,R通过量化统计每个图像微结构对应的旋转不变性模式,而这些模式可以作为特征检测算子。下图中给出了P=8时,LBPri8,R的36种可能值,对应着的36种不同的旋转不变性的局部二值模式。

其中,可以看出模式#0检测的是白斑点(bright spots),#8可能是暗斑点或者平滑的区域(dark spots or flat areas), #4是边缘。

2.3改善“一致”模式的旋转不变性

作者分析认为,这些3x3的模式中,一些局部二值模式,是纹理的基本属性,提供主要的信息,有时甚至能超过90%。于是,就称这些基本模式为“一致的”,因为它们包含着被称为包含少量空间变形的一致圆周结构的共同成分。而这种“一致的”模式就是Fig. 2中的第一行的九种。

为了描述这种“一致的”模式,作者引入了一个一致性测度U,用来统计模式中0/1交替出现的数量,例如模式00000000和11111111的U值为0,而第一行的其他模式均为2,其他的27种模式的U值都大于等于4。作者将U值不超过2的模式为”一致的”,由此将LBPriP,R优化为:

最后,纹理分析把算子的输出(例如模式对应的label)统计到直方图中,就可以得到最终的纹理特征。至于为什么使用“一致的”模式直方图比所有模式的直方图具有更强的区分能力,是由于它们在统计上的差异性,那些“非一致的”模式的属性在直方图中占了非常少的比例,因此这部分的统计特征是不稳定的。去掉这部分不稳定的统计结果,最终结果不但不会受影响,反而更加鲁棒。

2.4旋转不变性与局部方差对比测度

引入局部对比度信息:

将两者结合在一起:

限制条件是两个的P,R是一样的。

论文其余部分不作叙述。

局部二值模式(Local Binary Patterns)纹理灰度与旋转不变性的更多相关文章

  1. 【计算机视觉】纹理特征之LBP局部二值化模式

    转自http://blog.csdn.NET/ty101/article/details/8905394 本文的PDF版本,以及涉及到的所有文献和代码可以到下列地址下载: 1.PDF版本以及文献:ht ...

  2. LBP(Local Binary Patterns)局部二进制模式

    1. LBP 用于人脸识别 为了预测每个像素属于哪个脸部器官(眼睛.鼻子.嘴.头发),通常的作法是在该像素周围取一个小的区域,提取纹理特征(例如局部二值模式),再基于该特征利用支持向量机等浅层模型分类 ...

  3. 【计算机视觉】基于局部二值相似性模式(LBSP)的运动目标检测算法

    基于局部二值相似性模式(LBSP)的运动目标检测算法 kezunhai@gmail.com http://blog.csdn.net/kezunhai 本文根据论文:Improving backgro ...

  4. 一种局部二值化算法:Sauvola算法

    之前接触过全局二值化(OTSU算法),还有OPENCV提供的自适应二值化,最近又了解到一种新的局部二值化算法,Sauvola算法. 转载自:http://www.dididongdong.com/ar ...

  5. OpenCV——LBP(Local Binary Patterns)特征检测

    #include <opencv2/opencv.hpp> #include <iostream> #include "math.h" using name ...

  6. Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?

    前言:今天他给大家带来一篇发表在CVPR 2017上的文章. 原文:LBCNN 原文代码:https://github.com/juefeix/lbcnn.torch 本文主要内容:把局部二值与卷积神 ...

  7. OpenCV_基于局部自适应阈值的图像二值化

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  8. 【转】Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  9. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

随机推荐

  1. magento 自定义url路径 和 filter data 小结

    背景是往一个第三方的搜索插件里面加入filter功能. 首先是路径,插件自己定义了一个router,类似于cms.那首先说说router好了,从入口一路追查的话,会发现最后进入的是Mage_Core_ ...

  2. Java图解

    java虚拟机 JVM运行过程: java开发工具包 java入门图解1 java入门图解2 java入门图解3 java入门图解4

  3. android开发学习 ------- 枚举类型在Android中的用法

    一般上为了简化代码,重用代码,设置标志位来表示不同的流程,这个标志位可以使用枚举类型来表示: 1:定义 public FbManner fbManer = FbManner.EMAIL; //给一个默 ...

  4. maven-ali镜像网站setting.xml

    简述 使用maven管理jar包的时候,有可能会有网络限制,要解决的这个问题的话可以使用ali的镜像网站. 创建文件 创建settings.xml,内容如下 <settings xmlns=&q ...

  5. html到计时特效(直接代码)

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  6. AJPFX总结java开发常用类(包装,数字处理集合等)(一)

    一:首谈java中的包装类 Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型,直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类.jav ...

  7. Intent实现界面跳转、程序跳转

    一个程序往往由多个界面组成,界面之间的跳转,实质是Activity之间的跳转. 从当前程序跳转到其它程序,实质是启动了目标程序的入口Activity. Intent被称为意图,常用于组件之间的交互,可 ...

  8. 02html基础

    02_html 1.几个标签 1.1 meta标签 meta标签的属性有name和http-equiv,其中name属性用于描述网页,对应于content(网页内容). <meta name=& ...

  9. Handler引起的内存泄露

    一般我都写handler的时候是这样的:   public class MyActivity extends Activity{ private final Handler myHandler = n ...

  10. 不能说的hidden

    不能说的hidden 时光跑跑...路在脚下...晨光依在...----Vashon 1.所谓"时尚",本质上就是自己看不见自己的样子.好比我们在地球上,却感觉不到地球在动. 2. ...