LBP算子理解

来源:互联网 发布:刷票软件 编辑:程序博客网 时间:2024/04/28 07:53

LBP(局部二进制模式)是一种用来描述灰度图像局部纹理特征的算子,具有明显的旋转不变性和灰度不变性的优点,具体计算过程为:

原始的LBP算子定义在3*3邻域内,随机选取图像的3*3局部区域,选取该区域的中心为算子阈值,将周围的8个像素点和该中心阈值进行比较,令大于该阈值的像素点表示为1,小于部分表示为0,这样就得到一个8位二进制数,从第一个值开始排列得到该像素点的十进制表示值即为该像素点的LBP编码特征值,以此类推即可得到该图像的其它像素点的LBP特征表示向量,具体如下图所示:

分析可以发现上述算子只能在8邻域内进行纹理特征的统计表示,而对于不同尺寸和频率的纹理特征无法得到有效的有区分性地特征表示,因此出现两种改进:

第一种,为了提高该算子的覆盖范围,提出了圆形区域的LBP算子模式,即将该算子形状定义为圆形,就可以针对不同尺寸和不同频率的纹理特征设计算子形状得到有效LBP特征表示,具体模式如下图所示:

第二种改进为针对LBP的旋转不变性结合圆形区域进行改进

根据LBP算子的原始定义,发现该算子无法实现旋转不变性,因此结合圆形LBP算子进行改进,即根据图像分布定义好圆形区域后,随机确定一种LBP表示,随后将该算子围绕待表示中心像素点进行旋转直到算子的每个像素点能够遍布所有的周围区域,进而得到一系列的LBP编码,选择十进制编码值最小的为最终的LBP表示,具体过程如下图所示:

一个LBP算子可以产生不同的二进制模式,对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生P2种模式。很显然,随着邻域集内采样点数的增加,二进制模式的种类是急剧增加的。例如:5×5邻域内20个采样点,有220=1,048,576种二进制模式。如此多的二值模式无论对于纹理的提取还是对于纹理的识别、分类及信息的存取都是不利的。同时,过多的模式种类对于纹理的表达是不利的。例如,将LBP算子用于纹理分类或人脸识别时,常采用LBP模式的统计直方图来表达图像的信息,而较多的模式种类将使得数据量过大,且直方图过于稀疏。因此,需要对原始的LBP模式进行降维,使得数据量减少的情况下能最好的代表图像的信息。

        为了解决二进制模式过多的问题,提高统计性,Ojala提出了采用一种“等价模式”(Uniform Pattern)来对LBP算子的模式种类进行降维。Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类。如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类,例如10010111(共四次跳变)(这是我的个人理解,不知道对不对)。

       通过这样的改进,二进制模式的种类大大减少,而不会丢失任何信息。模式数量由原来的2P种减少为 P ( P-1)+2种,其中P表示邻域集内的采样点数。对于3×3邻域内8个采样点来说,二进制模式由原始的256种减少为58种,这使得特征向量的维数更少,并且可以减少高频噪声带来的影响。

实际对图像进行LBP模式特征提取的过程如下:

1.首先将图像划分为16*16的若干个连续区域;

2.对于每个区域,提取3*3区域的LBP特征表示,进而每个16*16区域可以得到196个LBP特征向量;

3.对得到的LBP特征向量表示值表示为直方图的形式,依次统计每个16*16区域的直方图之后进行归一化;

4.将所有区域的直方图进行连续表示得到该图像的LBP模式特征表示,随后设计合适的分类器进行分类表示即可。

关于将LBP应用到静脉识别的思路:

思路1.将静脉进行分割和细化处理得到单像素的表示后标记每个交叉点,随后对每个交叉点进行LBP表示,并且最终得到直方图表示进行分类;

思路2.统计每个交叉点的LBP特征值时,在计算旋转不变表示值时,是否要取最小值,LBP作用区域大小如何确定

上述思路待后续研究,应该可以出点小成果,加油,晚安~


0 0
原创粉丝点击