(九) LBP特征提取

局部二值模式(LBP)是图像处理中的纹理特征描述算子,具备灰度和旋转不变性。原始LBP在3*3窗口内比较像素值,形成8位二进制表示纹理信息。圆形LBP扩展到任意领域,增强尺度适应性。旋转不变LBP通过取最小值确保旋转不变性。均匀模式LBP限制二进制模式跳变次数,减少模式种类,提高表示效率。结合旋转不变性,形成均匀模式+旋转不变LBP,进一步优化特征表示。
摘要由CSDN通过智能技术生成

LBP(局部二值模式)是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著优点。

(1) 原始LBP

原始的LBP算子定义在一个3*3的窗口内,以窗口中心像素为阈值,与相邻的8个像素的灰度值比较,若周围的像素值大于中心像素值,则该位置被标记为1,否则标记为0.可以得到一个8位二进制,将这个值作为窗口中心像素点的LBP值,来反映这个3*3区域的纹理信息。LBP记录的是中心像素点与领域像素点之间的差值,所以当光照变化引起像素灰度值同增同减时,LBP变化并不明显,可以认为LBP对于光照变化不敏感,LBP检测的仅仅是图像的纹理信息,因此,进一步还可以将LBP做直方图统计,这个直方图可以用来作为纹理分析的特征算子。

 数学公式:

其中,p表示3*3窗口中除中心像素点外的第p个像素点,I(c)表示中心像素点的灰度值,I(p)表示领域内第p个像素点的灰度值。

(2) 圆形LBP

为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,将3*3领域扩展到任意领域,并用圆形领域代替正方形领域,改进后的LBP算子在半径为R的圆形领域内有任意多个像素点。假设半径为R的圆形区域内含有P个采样点的LBP算子:

p=16,R=2时,圆形边界上的点可能不是整数或者正好落在某个格子内,可能位于交界处,可以使用双线性插值法来计算该点的像素值。

 其中,p表示圆形区域中总计P个采样点中的第p个采样点,I(c)表示中心像素的灰度值,I(p)表示圆形边界像素点中第p个点灰度值。总共有p个点在圆形边界上,点坐标计算:

(3) 旋转不变LBP

从原始LBP的定义来看,LBP算子是灰度不变的,但不是旋转不变的,图像旋转的话就会得到不同的LBP值。提出具有旋转不变性的LBP算子,即不断旋转圆形领域得到一系列初始定义的LBP值,取其最小值作为该领域的LBP值。

 在于对LBP的结果进行二进制编码,并做循环位移,取所有结果中最小的那个值:

def value_rotation(num): 
	value_list = np.zeros((8), np.uint8) 
	temp = int(num) 
	value_list[0] = temp 
	for i in range(7): 
		temp = ((temp << 1) | (temp / 128)) % 256 
		value_list[i+1] = temp 
	return np.min(value_li

(4) 均匀模式LBP

对于半径为R的圆形区域内含有P个采样点,会有2P-1种模式。很显然,随着采样点数P的增加,二进制模式的种类是呈指数趋势增长的。尽可能少且具有代表性的特征,因此需要对LBP得到的二进制模式种类进行降维,使用更少的数据量来最好地表示图像的信息,这种降维的方法就是uniform LBP。限制一个二进制序列从0到1或1到0的跳变次数不超过2次。模式数量从原来的2P种减少为P(P-1)+2种,其中P表示领域集内的采样点数。

 目的就是统计二进制数的跳变次数,跳变次数小于等于2,则各自代表一类,跳变次数大于2的所有情况归为一类。

(5) 均匀模式+旋转不变模式LBP

先计算跳变次数:

跳变次数小于等于2,则各自代表一类,跳变次数大于2的所有情况归为一类。得到的结果设为LBPuniP,R,再对其二进制编码做循环移位,求出最小值。

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中实现LBP(Local Binary Patterns)特征提取的过程可以分为以下几个步骤: 1. 加载图像:使用imread函数加载图像,并将其转换为灰度图像(如果原始图像不是灰度图像)。 2. 图像预处理:对于LBP特征提取,通常需要对图像进行一些预处理操作,例如直方图均衡化来增强图像的对比度。 3. LBP算子计算:对于每个像素点,计算其周围邻域的LBP值。最常见的是使用3x3或者8x8的邻域大小。LBP操作的核心思想是将每个像素点与其邻域像素进行比较,将比它亮的像素点设为1,比它暗的像素点设为0,然后将这些二进制值组合成一个二进制数。 4. LBP特征提取:对于图像中的每个像素点,利用构建的LBP算子获得一个二进制串。可以将这些二进制串组成一个特征向量作为LBP特征。 下面是一个示例代码,演示了如何在Matlab中实现LBP特征提取: ```matlab % 加载图像 image = imread('image.jpg'); % 转换为灰度图像 grayImage = rgb2gray(image); % 图像预处理,例如直方图均衡化 processedImage = histeq(grayImage); % 定义LBP算子的邻域大小和半径 neighborhood = 8; radius = 1; % LBP特征提取 lbpFeatures = extractLBPFeatures(processedImage, 'Radius', radius, 'NumNeighbors', neighborhood); % 显示LBP特征向量 disp(lbpFeatures); ``` 在这个示例中,我们首先加载图像,然后将其转换为灰度图像。接下来,我们对图像进行了直方图均衡化处理,以增强图像的对比度。然后,我们定义了LBP算子的邻域大小和半径,并利用extractLBPFeatures函数计算LBP特征。最后,我们显示了计算得到的LBP特征向量。 请注意,这只是一个简单的示例代码,你可以根据实际需求进行调整和扩展。另外,Matlab还提供了其他一些函数和工具箱(如Image Processing Toolbox)来辅助LBP特征提取的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值