《Python人脸识别:从入门到工程实践》 ——3.6.2 LBP特征
3.6.2 LBP特征
LBP(Local Binary Pattern)即局部二值模型,是一种用来描述图像局部纹理特征的算子,它具有旋转不变性和灰度不变性等优点。该算法在1990年提出,于1994年被首次描述。算法的具体实现过程如下所述。
LBP算法有很多变种,原始的LBP算法是在一个3×3的窗口内,通过比较窗口中心像素点的灰度值与周围像素点的灰度值大小,从而确定该中心像素点周围8个像素点的值。这个算法过程可以用数学语言描述如下:
(xc,yc)为中心像素点的坐标,p为中心像素点邻域的第p个像素点,ip为邻域像素点p的灰度值,ic为中心像素点的灰度值,s(x)代表判别函数,由于是二值的,这里的判别函数是符号函数sign。
图3-12 LBP计算过程示例
使用数学公式来表示可能会比较抽象,我们通过图3-12来展示这个计算过程。
我们看到,图3-12a中展示了9个像素点的灰度值,通过比较中间阴影部分的像素点与其周围8个像素点灰度值的大小,使用0或1来替换其周围像素点的数值。例如,图3-12a中左上角像素点的灰度值为255,大于中心像素点的灰度值125,因此,将灰度值255替换为1。
通过这个计算过程,我们可以看到,在进行LBP特征提取的时候,要求原图是一张灰度图片,而不能是彩***片。如果是彩***片则需要先将其转换为灰度图片,然后再对其提取LBP特征。通过计算过程我们可以体会到,通过对图片中所有的像素点施加这样的处理过程,LBP特征其实能够将灰度图像转换为二值图像,即生成的图像仅仅包含黑色、白色两种颜色,而不存在中间过渡的灰色。
上面所演示的计算过程是比较原始的LBP特征提取方法,而其实通过LBP特征可以演变出非常多的变种算法。例如,原始的LBP特征是通过对比九宫格中中心像素点与其周围相邻的8个像素点之间的灰度值大小而进行特征提取的,可以将这个过程中3×3网格换成其他的任意领域。用得比较多的另外一种邻域是圆形邻域,称为圆形LBP算子,该算子可以在半径为r的区域内有任意多个像素点,圆形邻域示例如图3-13所示。
图3-13 圆形邻域示例
原始图像以及经过原始LBP特征、圆形LBP特征提取特征之后的图像如图3-14所示。
图3-14 原始图像以及经过LBP特征提取之后的图像
LBP特征因其对光照具有良好的鲁棒性、灰度不变性,且计算速度快、实现简单、旋转不变性等特点被广泛应用在图像识别领域,其效果表现良好。尤其是在人脸识别、物体检测领域,基于LBP特征的检测与识别是一种比较经典的方法。LBP特征对纹理特征具有较高的敏感性,能够清晰地体现各区域的典型纹理,与此同时能够淡化过渡区域,同时起到降维的作用。
- 点赞
- 收藏
- 关注作者
评论(0)