Advertisement

图像特征提取 — LBP算法

阅读量:

原创博客,转载请注明出处!

该算法基于**LBP(局部位二值模式)**表征图像中局部区域的纹理特性;该算法具有抗旋转性和抗亮度变化等显著的优势;该方法最初由Timo Ojala、Matti Pietikäinen和David Harwood于1994年提出;其提取结果能够反映图像中特定区域的纹理特性。

1、LBP特征的描述

LBP算子被定义为在一个3×3的窗口中进行操作,在这个窗口中取中心位置作为基准点。随后计算其周围8个位置与中心位置之间的灰度差异关系:如果这些邻居中的任何一个像素灰度值高于中心位置,则将对应的二进制位设为1;否则设为0。通过比较这周围8个点可以得到一个八位二进制序列(通常转换为其对应的十进制数值即LBP码),每个窗口的位置都可以生成一个这样的八位二进制序列(通常转换为其对应的十进制数值即LBP码),这种编码方式能够有效反映该区域内的纹理特征(如图所示)。

用公式表示就是

LBP的改进版本:

原始的LBP提出后,研究人员不断对其提出了各种改进和优化。

(1)圆形LBP算子:

基本LBP算法的主要局限性在于其仅能聚焦于固定半径范围内的局部区域。这一缺陷明显无法适应不同尺寸与频率纹理的需求。针对上述局限性,Ojala等人提出了改进方案,将3×3领域扩展至任意大小领域,并采用圆形窗口替代传统的正方形窗口。这种改进使得新算法可以在半径R范围内实现任意数量样本点的选择,进而导出了具有半径R且包含P个采样点的新LBP算子形式。

(2)LBP等价模式

一个LBP算子能够生成多种二进制模式。对于半径为R且包含P个采样点的一个圆形区域内的LBP算子而言,则会产生P²种不同的二进制模式。显然地,在邻域集内的采样点数量增加时,生成的不同二进制模式的种类也会急剧上升。例如,在5×5邻域中包含20个采样点时,则会产生2²⁰=1,048,576种不同的二进制模态。由于如此之多的不同二值模态在纹理提取、识别以及分类等方面都带来了不便,并且过多的数量不仅增加了数据量,并且可能导致信息过于分散。因此有必要将原始LBP模态进行降维处理,在保持数据量减少的同时最大限度地保留图像信息

为了有效减少过密化的二进制序列数量并提升统计效率问题,Ojala通过引入“等价模式”(Uniform Pattern)的概念来降低LBP算子的模式种类数量。研究发现,在实际应用中, 大部分LBP 模式的变化次数通常不超过两次, 这一特性有助于简化模型复杂度的同时保持较高的识别性能。具体而言, 当某个LBP对应的循环二进制序列最多经历两次状态变化(从 0 到 1 或从 1 到 0)时, 我们将其定义为此处所谓的"等价类型"。例如循环二进制序列如全零型(无状态变化)、单向渐变型(仅一次状态转换)以及部分交替变化型(两次状态转换)都属于此类别范畴, 其余未达到标准的标准则被归类为非等价类型, 如交替变化频繁型(四次以上状态转换)就属于这一类别中的一个典型代表。

经过这一改进措施后,在采样点数为P的情况下

那么,为什么是变成 P ( P-1)+2种呢? 对于8个采样点,为什么是58种呢?

因为混合模型很少见,所以Ojala把它去掉了,就剩下等价模式。

需关注Ojala关于等价模式的定义:当某个局部位二元编码所对应的循环码状态从零状态向一状态转变或由一状态回归零状态的过程中最多发生两次转换时,则该局部位二元编码可被归类为一个等价模式类

必须在两次跳变之内完成任务。每个数字在编码过程中只能连续出现一次。如 8 位码表示为 23 位中的某个序列(注:此处可能有误,在二进制中通常用 8 位表示一个字节)。不过根据上下文可能需要更准确的信息)。所以上面两种情况都表现为仅发生过两次跳变更频繁!无需担心出现奇数次跳变更频繁的情况。

为什么不允许超过两次跳跃?因为这会导致数字只能连续出现。参考以下示例:例如,在序列0 中(如4$次跳跃),每次跳跃的数量等于数字连续出现次数乘以二。因此,在这种情况下数字无法交替变化。

设P值为8,并基于不同数量的零来分析各种情况。首先考虑只有一个零的情况,在此情况下,请列举出所有对应一个零的各种模式。

0 1111111 10 111111 110 11111 1110 1111 11110 111 111110 11 1111110 1 11111110

然后是2个0的情况:

00 111111 100 11111 1100 1111 11100 111 111100 11 1111100 1 11111100 0 1111110

以此类推,不难看出,1到7个0的情况都是每种都有8种,所有就要8 * 7即P(P-1) 种,

有人想问,那0和8个0的情况呢?其实就是00000000 和11111111 这两种,所有就有P(P-1)+2 种。

(3)LBP旋转不变模式

通过查阅 LBP 的定义资料可知,在其基本性质中具有灰度不变性这一特征;然而,并不具有旋转不变性这一特性。当图像发生旋转变换时,则会导致计算出的 LBP 值也随之发生变化。

Maenpaa等人进一步扩展了LBP算子,并提出了一种能够保持旋转不变性的改进型LBP算子。具体而言, 该方法通过持续旋转圆形窗口获取一系列基于原始定义的LBP特征值, 并选择其中最小的那个作为当前区域的LBP特征码。

图2.5展示了求取旋转不变LBP的过程示意图,在图中每个算子下方标注的是其对应的LBP值;其中每个算子下方标注的是其对应的LBP值,并且通过旋转不变性处理后得到了具有旋转不变性的LBP值为15;具体而言,在图中展示出的8种LBP模式都被转换成了二进制码00001111

2、LBP特征用于检测的原理

不言而喻的是,在提取过程中所获得的那个特定区域都会被赋予一个独特的数字标识码——该区域中的每一个像元都将拥有相同的编码值。

从上图可以看出LBP对光照具有很强的鲁棒性

在LBP的应用场景中,在纹理分类、人脸分析等应用领域里通常不采用LBP图谱用作特征向量来实现分类识别;而采用的是基于LBP特征谱的统计直方图来实现这一目标。

由于通过上述分析可以看出该属性与位置信息密切相关。仅通过两幅图像提取这种属性并进行判别分析可能会导致较大的误识别率。随后研究者发现将一幅图像分割为多个子区域段落并在基础上为每个像素点提取LBP特征这种方法使得各子区域内可以通过构建相应的统计直方图来进行描述而整个图像则由这些统计直方图组成的系列来表示

举个例子来说吧:一张分辨率设定为每边54毫米的照片(即每英寸包含约54毫米)),划分为一个由行与列组成的网格状结构(总共有N \times M个小块),其中每一小块又被进一步划分成K \times L的小块(这样的划分方法有很多选择)。对于每一个这样的小块,在其中每一个像素点上计算其LBP特征值后进行分析处理,并生成相应的统计分布表(也就是所谓的直方图)。这样一来就会得到一个完整的二维数组——具体来说就是总共有(N \times M) \times (K \times L)个小块以及同样数量的小块对应的直方图)。通过将这些数据综合起来就能完整地反映原始照片的信息含量。接下来我们可以利用各种不同的相似度评估方法来进行比较分析——也就是说根据这些预处理后的数据就能有效地衡量出两张照片之间存在的相似程度了)。

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

(1)首先将检测窗口划分为16×16的小区域(cell);

在每个cell中的每一个像素处计算其与周围8个相邻 pixels 的灰度值关系:当周围任一相邻 pixels 的灰度值高于中心 pixel 的灰度值时,则将该 pixels 的位置标记为1;反之则标记为0。通过分析这3×3邻域内的所有关系信息,则可获得该区域中心 pixel 的LBP特征码

(3)接下来统计每个cell区域中各个十进制数LBP值的出现频率;即每个十进制数LBP值在该区域中的频次统计情况。随后对所获得的直方图数据进行归一化处理以获得最终结果。

在最后一步中会整合每个cell中的统计分布情况,并将其融合形成一个特征向量。这种表示方法即整个图像区域基于LBP的空间纹理特征表示。

然后便可利用SVM或者其他机器学习算法进行分类了。

参考自 黄非非,基于 LBP 的人脸识别研究,重庆大学硕士学位论文

全部评论 (0)

还没有任何评论哟~