提取lbp特征java代码_特征提取算法之LBP

本文介绍了LBP(局部二值模式)算法,一种强大的纹理特征描述算子,具有光照不变性和旋转不变性。通过Python代码展示了如何使用OpenCV库读取图像并应用LBP算法。同时讨论了LBP的旋转模式不变性和等价模式,以及如何提取LBP特征向量用于后续的机器学习分类任务。
摘要由CSDN通过智能技术生成

图像特征,图像纹理,图像频域等多种角度提取图像的特征。

LBP,局部二值模式,局部特征描述算子,具有很强的纹理特征描述能力,具有光照不变性和旋转不变性。用python进行简单的LBP算法实验:

1 from skimage importdata,io2 importmatplot.pyplot as plt3 importcv24 from skimage.feature importlocal_binary_pattern5 image = cv2.imread('Lena.jpg')6 plt.subplot(1,2,2)7 plt.imshow(image)8 plt.show(image)9 radius = 1

10 n_points = radius * 8

11 lbp=local_binary_pattern(image,n_points,radius)12 plt.inshow(lbp)13 plt.show(lbp)

(1)LBP旋转模式不变性

初始的LBP算法不具有旋转不变性,LBP串的连接顺序是固定的,当图像旋转后LBP就会发生改变,为了保持旋转不变性,制定一个规则,计算所有旋转产生的LBP值,取其中最小的(不知道为什么取最小的而不是最大的)作为该点的LBP值,则无论图像如何旋转,最小值始终是不变的,获得了旋转不变性。代价是增大了算法的计算量。

(2)LBP等价模式

一个LBP算子可以产生多种不同的二进制模式,如果有P个采样点,每个采样点有两种可能的取值,一个有2^P种模式,不利于分析。使用一种等价模式对LBP算子的模式种类进行降维。Ojala对等价模式的定义,即当某个局部二进制模式所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该局部二进制模式所对应的二进制就成为一个等价模式类,其他的归为混合模式类,有两次跳变的等价模式一个有P*(P-1)种,0次跳变的2种,混合模式类1种,将维数从2*P降为P*(P-1)+3种。

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

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

2)对于每个cell中的一个像素,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0.这样,3*3领域内的8个点经过比较可产生8位二进制数,即得到该窗口中心像素点的LBP值;

3)然后计算每个cell的直方图,即每个数字出现的频率,然后对该直方图进行归一化处理

4)最后将得到的每个cell的统计直方图进行连接成一个特征向量,也就是整幅图的LBP纹理特征向量

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值