【计算机视觉】LBP纹理特征

作者: JasonDing | 来源:发表于2014-11-05 15:38 被阅读1898次

    LBP简介

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen,和 D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征。
    从纹理分析的角度来看,图像上某个像素点的纹理特征,大多数情况下是指这个点和周围像素点的关系,即这个点和它的邻域内点的关系。从哪个角度对这种关系提取特征,就形成了不同种类的特征。有了特征,就能根据纹理进行分类。LBP构造了一种衡量一个像素点和它周围像素点的关系。

    LBP basicLBP basic

    原始的LBP算子定义为在3 * 3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3 * 3领域内的8个点可产生8bit的无符号数,即得到该窗口的LBP值,并用这个值来反映该区域的纹理信息

    原始的LBP提出后,研究人员不断对其提出了各种改进和优化,从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子;LBP均匀模式;LBP旋转不变模式;LBP等价模式等等。
    显而易见的是,上述提取的LBP算子在每个像素点都可以得到一个LBP“编码”,那么,对一幅图像提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”。
    因为这里的LBP特征是跟位置信息紧密相关的,所以,不能利用这种特征进行直接的判别分析。然而,研究人员发现,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一来,每个子区域,就可以用一个统计直方图来进行描述;整个图片就由若干个统计直方图组成。利用统计直方图的方式,就可以描述这幅图片了。

    LBP的改进版本

    原始LBP

    LBP的基本思想是对图像的像素和它局部周围像素进行对比后的结果进行求和。把这个像素作为中心,对相邻像素进行阈值比较。如果中心像素的亮度大于等于他的相邻像素,把他标记为1,否则标记为0。你会用二进制数字来表示每个像素,比如11001111。因此,由于周围相邻8个像素,你最终可能获取2^8个可能组合,被称为局部二值模式,有时被称为LBP码。


    原始LBP原始LBP

    但是这样的LBP描述特征能力有限,且不具备旋转不变性。很容易想象,如果图片进行了旋转,则LBP值也会随之改变。因此有了下面的改进。

    旋转不变的LBP算法

    为了降低LBP的编码模式,对同一编码模式经旋转(循环位移,按位旋转)后产生的编码结果编码为同一值,即这些旋转结果中的最小值。


    旋转不变的LBP示意图旋转不变的LBP示意图

    36个旋转不变的LBP编码模式:


    uniform LBP算法

    个数是P(P-1)+2,P为邻域像素点个数。对于8个采样点,uniform形式有58中输出。
    旋转LBP模式同样存在缺陷,大量的实验证明LBP模式的36种情况在一幅图像中分布出现的频率差异较大,得到的效果并不是很好。因此人们提出uniform LBP。
    首先介绍什么是uniform,它是指均匀环形结构内包含非常少的空间转换。我们定义U(pattern),用来记录空间转换的数量,即0-1变化的次数。
    0-1变化少于等于两次的二进制码形成的LBP看成是一个 uniform LBP ,比如说11000011,01变化次数是两次。就是一个uniform LBP。
    为什么要提出这么个uniform LBP呢,因为研究者发现他们
    计算出来的大部分值都在这58种之中,可达到90%以上,所以他们把值分为59类,58个uniform pattern为一类,其它的所有值为第59类。59=(2+0+56)+1,这样直方图从原来的256维变成59维。起到了降维*的作用,并且可以减少高频噪声带来的影响。

    ![](http://jason-images.qiniudn.com/@/ML/opencv/lbp/uniform LBP function.jpg)
    ![](http://jason-images.qiniudn.com/@/ML/opencv/lbp/uniform LBP.png)

    旋转不变的uniform LBP算法

    个数是P+1个。对于8个采样点,基于unifrom的旋转不变LBP将只有9个输出。
    该模式即对于上图的uniform LBP,每一行都是旋转不变的,被编为一个编码值。

    ![旋转不变的uniform LBP](http://jason-images.qiniudn.com/@/ML/opencv/lbp/旋转不变的uniform LBP.jpg)

    对LBP特征向量进行提取的步骤

    1. 首先将检测窗口划分为16×16的小区域(cell)
    2. 对于每个cell中的一个像素,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数,即得到该窗口中心像素点的LBP值
    3. 然后计算每个cell的直方图,即每个数字(假定是十进制数LBP值)出现的频率;然后对该直方图进行归一化处理
    4. 最后将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量

    转载请注明作者Jason Ding及其出处
    Github主页(http://jasonding1354.github.io/)
    CSDN博客(http://blog.csdn.net/jasonding1354)
    简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

    相关文章

      网友评论

      • 4e3d63516434:你好,最近在做目标检测相关的,想先利用LBP特征,用SVM训练一个分类器,其中有一些问题跟您请教一下可以吗?

      本文标题:【计算机视觉】LBP纹理特征

      本文链接:https://www.haomeiwen.com/subject/jzkbtttx.html