1 背景
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子,具有旋转不变形和灰度值不变形等显著优点。主要用于纹理特征提取,在人脸识别部分有较好的效果。
2 LBP特征原理
2.1概述
从94年T. Ojala, M.Pietikäinen, 和D. Harwood提出至今,LBP大致经历了三个版本。下面按照时间顺序进行介绍。(下面的First-LBP、Second-LBP..均为自己定义,只是为写技术文档方便,LBP作者并未定义。)
2.2First-LBP原理
最初的LBP算子通过定义一个3x3的窗口,以窗口内中心点的像素值为标准,对比窗口内另8个点像素值的大小,大于为1,小于为0。8个点形成一个二进制数字(通常转换为十进制表示)即为中心点的LBP特征值。详细计算如下图:
通过上面得到的LBP算子具有很多缺点,后研究人员在LBP基础上进行不断改进。
2.3 Second-LBP原理
原始LBP算子计算区域为像素点的周围8个点,在图像尺寸发生改变时会出现很大的偏差,不能正确反映像素点周围的纹理信息。为适应不同尺寸纹理特征,LBP原作者将圆形邻域代替正方形邻域。同时增加了旋转不变的特性,在对LBP特征值的存储部分,也进行了改进。详细如下文。
2.3.1圆形LBP算子
圆形LBP算子计算中,以像素点为圆心,R为半径,提取半径上P个采样点,根据2.2中像素值比较方法,进行像素值大小的比较,得到该点的LBP特征值。其中提取采样点的方法如下:
xt =xd + Rcos(2πp/P)
yt = yd - Rsin(2πp/P)
(xt,yt)为某个采样点,(xd,yd)为邻域中心点,p为第P个采样点,P为采样点的个数。得到采样点的坐标可能为小数,改进后的LBP采用双线性插值法进行计算该点的像素值:
几种不同半径不同采样点数量的LBP算子:
2.3.2旋转不变LBP特征:
上面通过采取圆形邻域的计算,一定程度上削弱了尺度改变的影响。研究人员在上面的基础上进一步扩展,使具备旋转不变的特征。
首先,在确定半径大小和采样点数目后,不断旋转圆形邻域内采样点的位置,得到一系列的LBP特征值,从这些LBP特征值中选择最小的值作为LBP中心像素点的LBP特征值,具体如下图:
通过不断旋转,取最小值,使具备旋转不变特性。
2.3.3 Uniform Pattern LBP特征:
Uniform Pattern LBP特征也称为等价模式或均匀模式。对LBP特征值的存储方式上,进行了优化。详细如下。
假设对于半径为R的圆形邻域内提取P个采样点,会产生2p种二进制表达方法,随着邻域内采样点数目的增加,二进制模式的种类以指数形式增加,不利于LBP特征值的存储、提取、分类和识别。LBP原作者提出一种“等价模式”对LBP算子进行降维。详细如下。
在实际图像中,绝大多数LBP模式只包括从0到1或从0到1的转变,LBP原作者将“等价模式”定义为当某个LBP特征值所对应的二进制数从0到1或从1到0的转变最多有两次时,该LBP所对应的二进制就称为一个等价模式。如00000000(0次跳变)、00000011(1次跳变)、10001111
(2次跳变)均为等价模式类。除等价模式类外均归为混合模式类。上述算法,使得模式数量由原来的2p种减少为P(P-1)+2+1种(P代表采样点的数量)。
实例介绍:
如采样点数为8,即256种LBP特征值,根据等价模式可分为59类:跳变0次——2个,跳变1次——0个,跳变2次——56个,跳变3….8次——1个。(跳变1次为0个是因为LBP作者把LBP二进制数字看做一个圆性的序列,故跳变1次为0个)
2.3.4 MB-LBP特征:
MB-LBP特征,全称为Multiscale Block LBP,由中科院的研究人员研究发表,原理与HOG特征提取有相似之处,接扫MB-LBP仅用于了解,下面是原理介绍。
首先将图像分为分为多个块,再将每个小块分成多个区域,每个区域的灰度值为该区域内灰度值的平均值。在一个块内,将中心区域的灰度值大小与周围区域的灰度值大小进行比较形成LBP特征值。如下图:
作者对得到的MB-LBP特征值同样进行均值编码。首先,对得到的特征值采用直方图进行表示,计算每一种特征值的数量,进行排序,将排序在前63为的特征值看作是等价模式类,其他的为混合模式类,共64类。
2.4 Third-LBP原理
LBP的最后一步改进为LBPH即LBP特征统计直方图的使用,可用于机器学习特征的提取。这种表示方法由Ahonen等人提出,将LBP特征图像分成m个局部块,提取每个局部块的直方图,并依次连接在一起形成LBP特征的统计直方图。具体过程如下:
(1) 计算图像中每一像素点的LBP特征值。
(2) 图像进行分成多块。(Opencv中默认将LB