lbp特征提取算法 知乎_图像-LBP特征描述算子-人脸检测

本文详细介绍了局部二值模式(LBP)特征提取算法,包括其灰度不变性和旋转不变性的原理,以及在人脸识别和目标检测中的应用。重点讲述了OpenCV中如何实现LBP算法,包括基本的LBP、圆形LBP和旋转不变LBP的计算方法,以及如何利用LBP特征进行图像处理,如人脸检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 简介

LBP指局部二值模式(Local Binary Pattern),是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性等显著优点。LBP常应用于人脸识别和目标检测中,在OpenCV中有使用LBP特征进行人脸识别的接口,也有用LBP特征训练目标检测分类器的方法,OpenCV实现了LBP特征的计算,但没有提供一个单独的计算LBP特征的接口。也就是说OpenCV中使用了LBP算法,但是没有提供函数接口。

2.2 算法理论介绍

预备数学:圆的参数方程

代表某个对应圆上某点的半径到x轴的夹角,

是圆上某点的坐标。

2.2.1 LBP原理介绍 LBP特征用图像的局部领域的联合分布

来描述图像的纹理特征,如果假设局部邻域中像素个数为

,那么纹理特征的联合分布

可以表述成:

其中,

表示相应局部邻域的中心像素的灰度值,

表示以中心像素圆心,以R为半径的圆上的像素的灰度值。

假设中心像素和局部邻域像素相互独立,那么这里可以将上面定义式写成如下形式:

其中

决定了局部区域的整体亮度,对于纹理特征,可以忽略这一项,最终得到:

上式说明,将纹理特征定义为邻域像素和中心像素的差的联合分布函数,因为

是基本不受亮度均值影响的,所以从上式可以看出,此时统计量T 是一个跟亮度均值,即灰度级无关的值。

最后定义特征函数如下:

定义灰度级不变LBP为:

即二进制编码公式。

通俗解释:

原始的LBP算子定义在像素

的邻域内,以邻域中心像素为阈值,相邻的8个像素的灰度值与邻域中心的像素值进行比较,若周围像素大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,

邻域内的8个点经过比较可产生8为二进制数,将这8位二进制数依次排列形成一个二进制数字,这个二进制数字就是中心像素的LBP值,LBP值共有

种可能,因此LBP值有256种可能。中心像素的LBP值反映了该像素周围区域的纹理信息。

注意:计算LBP特征的图像必须是灰度图,如果是彩色图,需要先转换成灰度图

2.2.2 圆形LBP算子

基本的 LBP算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度级和旋转不变性的要求,Ojala等对 LBP算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP算子允许在半径为 R的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子,表示为

对于给定中心点

,其邻域像素位置为

,其采样点

用如下公式计算:

R是采样半径,p是第p个采样点,P是采样数目。如果近邻点不在整数位置上,就需要进行插值运算,可以参考这篇博客

3.2.3 LBP旋转不变性及等价模式 LPB特征是灰度不变,但不是旋转不变的,同一幅图像,进行旋转以后,其特征将会有很大的差别,影响匹配的精度。Ojala在LBP算法上,进行改进,实现了具有旋转不变性的LPB的特征。

实现方法:不断旋转圆形邻域得到一系列初始定义的LPB值,取最小值作为该邻域的值。

其中

表示具有旋转不变性的LBP特征。

为旋转函数,表示将

右循环

位。

1、举个例子,你是否困惑,一个图像的每一个像素点邻域内的像素点的值都是固定的,得到的采样点经过处理得到的值不是1就是0就已经确定下来了。那是如何实现圆形领域的旋转呢?

事实上,应该换个角度,并且是通过示例的方式来理解。

假设,我规定一个图像全部使用半径为1且采样点为8的邻域且这个领域中已经确定有四个点的为0,另外四个点为1,而组合顺序不定。比如其中的一种情况如下图:

那么我们可以想一下,会有多少种序列的排列情况。应该是

种事实上, 如果仅告知要使用半径为1采样点为8的邻域, 对于任意一个区域, 圆形LBP值会产生 256种不同的输出

注意邻域是由半径和采样点共同决定,并且是对图像所有像素点均使用相同种类的邻域

2、为了能将这个问题解释得稍微简单,我们再简化一个场景

假设某个像素点计算得到的二进制模式为:11100001,求解其旋转不变性处理后的LBP值(十进制)。

第一,由11100001可知,该像素点在进行LBP算子计算时的邻域设定为采样点为8。并且,该中心点所在邻域的8个像素点中存在4个位置的像素点的数值大于中心像素。1110001的LBP值是225。 第二,计算8个采样点且四个值为1的二进制模式,并且跟“11100001”类似的是这四个1的点要紧挨着进行旋转的二进制模式,如下图所示,除了11100001,还有另外7种模式。经过计算可知,加上11100001总共8种模式对应的LBP值中15是最小,所以11100001经过旋转处理后的LBP值就不再是225,而是15了。

同理,当某个像素点的二进制模式为以下7种(11110000、01111000、00111100、00011110、00001111、10000111、11000011)的任意一种,其旋转不变性的LBP值都是15!

等价模式:

一个LBP算子可以产生不同的二进制模式,对于

将会产生

种模式。比如

邻域内有

种模式。如此多的二值模式对于信息的提取和识别都是不利的。

Ojala等认为,在实际图像中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值