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. Vijos p1688 病毒传递 树形DP

    https://vijos.org/p/1688 看了下别人讨论的题解才想到的,不过方法和他的不同,感觉它的是错的.(感觉.感觉) 首先N只有1000, 如果能做到暴力枚举每一个节点,然后O(N)算出 ...

  2. 从零开始docker部署flask

    1.下载一个Ubuntu镜像 2.启动镜像,使用apt-get安装python.安装pip,建议也装个vim吧 3.通过以上的容器生成一个新的镜像,命令如下docker commit afcaf46e ...

  3. 定时器、线程queue、进程池和线程池

    1.定时器 指定n秒后,执行任务 from threading import Timer,current_thread import os def hello(): print("%s he ...

  4. SQL Server 2008还原数据库的具体方法

    俗话说“好记性不如烂笔头”,在相隔较长的时间段内,每次还原客户的数据库都记不清完全的步骤,为此mark一下. SQL Server 2008一般默认备份的文件格式是bak,即后缀名为.bak.bak文 ...

  5. asp.net 中文部分显示问号

    很神奇的事情,今天部署了一个网站,页面从数据读取新闻后,有些新闻标题全部显示问题号,有几个新闻能正确显示汉字,然后查看新闻页面又能正常显示汉字. 解决办法: 在异常的页面上加上 < %@ COD ...

  6. ios项目中引用其他开源项目

    1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Libraries 引入.a文件.Target Depende ...

  7. Java String startsWith()方法

    描述: 这个方法有两个变体并测试如果一个字符串开头的指定索引指定的前缀或在默认情况下从字符串开始位置. 语法 此方法定义的语法如下: public boolean startsWith(String ...

  8. vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式

    不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...

  9. Git 版本控制系统的基本使用、常用操作

    以Ubuntu16.04操作系统为例(其他系统类似),主要记录常用的.基本操作: 0. 安装Git 分散型版本控制系统(CVS): sudo apt-get install git 1. 初始化本地配 ...

  10. [转] 学习,思维三部曲:WHAT、HOW、WHY(通过现象看本质)

    https://www.douban.com/note/284947308/?type=like 学习技术的三部曲:WHAT HOW WHY 我把学习归类为三个步骤:What.How.Why.经过我对 ...