C++ OpenCV特征提取之基本的LBP特征提取

2019-07-24 11:11:28 浏览数 (1)

前言

LBP(Local binary pattern)是一个易理解且有效的局部图像特征,应用很广泛。它具有旋转不变性和灰度不变性的显著的有点。已经广泛的应用于纹理分类、纹理分割、人脸图像分析等领域。

介绍

局部二值模式(Local binary patterns,LBP)是机器视觉领域中用于描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著的优点。它是由T. Ojala, M.Pietikäinen, 和 D. Harwood [1][2]在1994年提出,LBP在纹理分类问题上是一个非常强大的特征;如果LBP与HOG结合,则可以在一些集合上十分有效的提升检测效果。LBP是一个简单但非常有效的纹理运算符。它将各个像素与其附近的像素进行比较,并把结果保存为二进制数。由于其辨别力强大和计算简单,局部二值模式纹理算子已经在不同的场景下得到应用。LBP最重要的属性是对诸如光照变化等造成的灰度变化的鲁棒性。它的另外一个重要特性是它的计算简单,这使得它可以对图像进行实时分析。

代码演示

我们再新建一个项目名为opencv--sift,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

LBP基本特征的提取

1.先奖图片转为灰度图

2.获取图片的宽度和高度

3.创建一个空的输出图像,大小是原来的宽度高度减2,因为3*3的算法最两边是算不到的,所以我们用减2的大小。

4.根据源图的值计算LBP

5.输出图像

然后我们看一下输出的结果

上图基本特征全部显示了出来,效果还是不错的。

0 人点赞