python图像纹理提取_图像处理7 LBP纹理特征提取
LBP(局域二值模式)是一种用来表征图像局部纹理特性的运算符;它以其旋转不变性和灰度不变性等明显优势著称。最初由T. Ojala, M.Pietikäinen, 和D. Harwood于1994年首次提出该方法,并将其应用于纹理特征提取。该方法所提取的是图像局部一种表示其纹理特性的特征。
1、LBP特征的描述
传统的LBP算子定义为在一个3×3的窗口中以中心像素灰度值作为基准点,在其周围选取8个相邻像素点进行分析。具体而言,在计算与中心像素相邻的8个像素点时会生成相应的二进制信息:如果周围的8个像素点灰度值均高于中心像素灰度值,则标记该位置为1;否则标记为0。这些比较结果将形成一个包含8位二进制信息的结果(通常转换为十进制数值即LBP码),从而得到该窗口区域中中心位置对应的LBP特征码(总共有256种可能)。如图所示:
LBP的改进版本:
原始的LBP提出后,研究人员不断对其提出了各种改进和优化。
(1)圆形LBP算子:
传统 LBP 算子的主要局限性在于其仅能聚焦于固定半径范围内的局部区域,在面对不同尺寸与频率纹理时表现不足。为此,Ojala 等人提出了一种改进方案,通过将 3×3 邻域扩展为任意形状邻域,并采用圆形邻域替代原有的正方形邻域,使得改进后的 LBP 算法能够在半径为 R 的圆形区域内自由配置采样点数量,从而实现了对具有 P 个采样点的圆盘形区域进行有效描述的目的
(2)LBP旋转不变模式
基于其定义可知, LBP 算子具备灰度不变性, 但并未具备旋转不变性. 当图像发生旋转变换时, 相应的 LBP 描述子也会发生变化.
针对LBP框架的改进方案进一步发展出具有抗旋转变性的新版本。具体而言,该方法通过连续旋转圆形采样区域生成一系列基础特征描述符,并计算这些描述符中的最小值来确定最终的LBP编码。
该流程图展示了如何实现LBP在旋转不变性上的计算过程。其中,在该算子下方标注的数字反映了其对应LBP值的具体数值。经过对上述8种LBP模式实施旋转不变性优化后,则可获得具有旋转不变性的LBP值共计15。由此可见,在上述8种LBP模式中对应的优化后LBP模式均为二进制码00001111。
(3)LBP等价模式
一个LBP算子能够生成多种二进制模式。对于半径为R且包含P个采样点的一个圆形区域内的LBP算子来说,则会产生P²种不同的二进制模式。显然地,在邻域集内的采样点数量增加时,二进制模态的数量显著上升。例如,在5×5邻域中包含20个采样点时,则会产生2²⁰=1,048,576种不同的二进制模式。如此之多的不同模态在纹理提取、识别、分类以及信息存储等方面均带来诸多不便。然而,在纹理分类或人脸识别等应用中使用较多的不同LBP模态会导致统计直方图过于稀疏
为了解决二进制模式过多的问题,并从而提高了统计性,Ojala提出了采用一种"等价模式"(Uniform Pattern)的方法来降低LBP算子的模式种类数量。Ojala等认为,在实际应用中,大多数LBP模式最多只会经历两次从1到2的变化(即从1变到2或从2变到1)。因此,Ojala将"等价模式"定义为:当某个LBP对应的循环二进制表示中,仅有零次或两次由2变至1或由1变至2的变化时,该LBP对应的二进制序列就被称为一个等价模式类。例如,像全零型的数字(如[8\ 8\ 8\ 8\ 8\ 8\ 8\ 8])就没有变化;又如[8\ 8\ 8\ 8\ 9\ 9]只有一个由2变为1的变化;再如[9\ 9\ 9\ 9],则经历了两次变化(一次由2变为1,另一次由1变为2)。除此之外的其他情况都被归类为混合型模式类,例如[9\ [9][9][9][7][7][7]就经历了四次变化(这是我的个人理解)。
通过这种改进方案的应用后,在实际应用中能够实现分类准确率的有效提升。具体而言,在采用3×3邻域时取8个采样点的情况下,则能够将分类器的设计效率从原先的基础设计中节省约40%的时间成本,并且还能有效避免因计算复杂度所带来的系统性能下降问题
2、LBP特征用于检测的原理
显然,在我们之前提到的方法中,从一副图像(其中包含每个像素点对应的灰度值)中提取其原始的lbp特征后,则这些原始lbp特征仍然构成了一幅新的图像(其中每个像素代表对应的lbp值)
在LBP的应用领域中,在纹理分类与人脸分析等相关场景下,并非直接将LBP图谱作为分类识别的特征向量进行处理;相反地,则通过提取LBP特征谱的统计直方图来构建相应的特征向量进行分类识别
鉴于此, 从前面的分析可以看出, 这个"特征"与位置信息高度相关。仅凭两幅图片提取这种"特征"后进行判别分析, 由于"位置未对准", 会产生较大的误判。随后, 研究者发现, 可以将一张图片分割成多个子区域部分, 并分别提取LBP特征向量于每个子区域内。在此基础上, 在每个子区域内建立该区域内的LBP特征统计直方图。这样一来, 每个子区域都可以由其对应的统计直方图来描述; 整张图片则由多张这样的统计直方图组成
例如:一张分辨率100×100像素的图片会被划分为10×10的小块区域(可以通过不同的划分方法实现),每块区域的尺寸均为10×10像素;在每个小区域内对每个像素点进行LBP特征提取,并生成该区域的直方图描述;这样一来整幅图片就会被分割成10×10个小区域,并相应地生成10×10个直方图描述;通过一系列相似性度量方法可以利用这些直方图来比较两张图片之间的相似程度。
3、对LBP特征向量进行提取的步骤
(1)首先将检测窗口划分为16×16的小区域(cell);
在每一个cell内的单个像素上,在计算其与周边8个像素灰度值的关系时,请注意以下两点:首先,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;其次,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
为了实现这一过程,在计算这些关系时,默认假设边缘细胞具有零梯度或者采用镜像反射的方式处理边缘情况;
接下来统计每个cell区域内的LBP值分布情况(假设为十进制数范围内的LBP值)出现的几率或频次;之后对该分布情况进行归一化处理
在最后阶段将每一个cell的统计直方图进行融合形成一个特征向量即为整幅图的LBP纹理特征向量
