基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片

作者 | Raini
出品 | 北京图特摩斯科技有限公司 (thutmose.cn)

说在前头:

局部特征检测方法

斑点Blob检测,LoG检测 , DoG,DoH检测,SIFT算法,SUFT算法
边缘检测: 梯度边缘检测算子,拉普拉斯算子,LoG检测 ,Canny边缘检测算子,Roberts,Sobel,Prewitt,
角点检测: Kitchen-Rosenfeld,Harris角点,多尺度Harris角点,KLT,SUSAN检测算子,Shi-Tomasi
将基于主分量分析和Fisher线性鉴别分析所获得的特征抽取方法,统称为线性投影分析。

这些方法与本文无太大关系,主要用于Logo检测,即图形图像固定,形状大体不变的问题。
##--------------------------------------------------------------------------------------------------------------------
在这里插入图片描述
分析:
由于数据集太小,所以神经网络模型并不适合此类的图像处理.就需要寻找方法提取图像的纹理信息.本文采用LBP的方法提取图像的纹理信息,然后转化成直方图作为图像的特征,然后使用多分类的方法进行分类.

前言

基于内容的图像检索技术(CBIR)一般包括图像获取,特征提取,图像分类,图像检索四个阶段。CBIR 有两个核心问题:如何能够实现快速有效的图像分类与检索,其关键在于选用哪一种算法提取何种特征;如何建立有效的图像分类识别系统,其关键在于分类算法的选取。

纹理特征作为显著的视觉特征,不仅不依赖于颜色或亮度,并且包含事物表面结构的排列与组织次序,表现出上下文内容的联系,反映图像中同质现象重复出现的视觉特征,因此纹理是基于内容的图像检索方法中非常重要的一种用于图像描述和分类的特征。目前其在许多重要工作重要领域都有其研究成果,如天气预报,其卫星云图与红外线图提取的纹理特征有很大差异,所以纹理特征可以应用在模式识别领域,作为模式识别的一个重要特征。在地球卫星上拍摄到的地球表面遥感图像大部分纹理特征非常明显,其表面的山川、陆地、沙漠、海洋以及大的城市建筑群都有不同的纹理特点,因此我们可以通过图像的纹理特征对国家的不同区域识别、土地整治、土地沙漠化、城市建筑群分布等宏观进行研究。CBIR有着非常广阔的应用领域,主要应用于知识产权的保护、犯罪与图片过滤、网上图像检索和数字图书馆以及新式视频服务和图像编辑等领域。

在70年代早期,Haralick等人提出纹理特征的灰度共生矩阵表示法(eo一oeeurrenee matrix representation),这个方法提取的是纹理的灰度级空间相关性(gray level Spatial dependenee),它首先基于象素之间的距离和方向建立灰度共生矩阵,再由这个矩阵提取有意义的统计量作为纹理特征向量。基于一项人眼对纹理的视觉感知的心理研究,Tamuar等人提出可以模拟纹理视觉模型的6个纹理属性,分别是粒度,对比度,方向性,线型,均匀性和粗糙度,将图像像素的灰度值转化为纹理信息,对纹理进行了较为系统的分析和理解。这也是早期出现的基于统计的纹理特征提取方法。20世纪80年代以来,马尔可夫随机场理论为纹理特征提取找到了一个新方向,也是基于模型的纹理特征提取方法的开端,而后相继出现了高斯马尔可夫随机场模型(GMRF)、Gibbs模型、高斯马尔可夫随机场模型、同步自回归模型(SAR)、隐马尔可夫随机场模型(HMRF)、广义马尔可夫随机场模型等。

1989年,Mallat首先将小波分析引入纹理分析中,为时频尺度分析纹理提供了一种更为精确而统一的框架。随后,小波理论发展了许多分支,如多进制小波、小波包以及小波框架等等,它们均在图像纹理分析中发挥了积极的作用。近年来,较引人瞩目的是Ojala等人于2002年提出的局部二值模式(LBP),其特点在于计算复杂度小,具有多尺度特性和旋转不变形,在纹理检索领域得到应用。

另一方面,研究人员致力于对现有纹理提取方法进行融合并对特征指数进行有效筛选,如GLCM与MRF的融合,小波方法与MRF的融合等等;除此之外,研究人员也在不断尝试研究并开拓新的纹理特征提取方法,主要是纹理多尺度特征和旋转不变特征的提取;但是纹理的微观异构性,复杂性以及其应用的广泛性和概念的不明确性给纹理研究带来很大挑战。

迄今为止,已经有一些比较成功的检索系统问世,在一定范围之内,这些系统可以得到一个比较令人满意的效果。现简单介绍几种纹理特征提取方式仅供参考:
(1)Visual SEEK/WebSEEK:是由哥伦比亚大学所开发,在图像特征方面,采用基于小波变换方法提取纹理特征。
(2)QBIC:IBM公司的QBIC系统的结构包括:图像入库、特征向量提取和查询。采用Tamura进行纹理特征的描述,特征向量是由其中的粗糙度、对比度和方向性的结合所构成。
(3)NETRA:有加利福利亚大学亚历山大数字图书馆开发。采用基于Gabor滤波器的纹理分析方法对图像进行处理,从而得到纹理特征向量。

常用的特征提取与匹配-纹理特征描述方法分类

(1)统计法
:统计法的典型的分析方法是共生矩阵法,Tammra方法等。利用灰度共生矩阵可得到描述纹理特征的统计量,常用的有对比度、能量、熵等七个特征。Tammra提出了与人的视觉感受相关的六个纹理特征,分别是粗糙度、对比度、方向性、线性相似性、规则性和粗略度。
(2)几何法
:所谓几何法,是建立在纹理基元(基本的纹理元素)理论基础上的一种纹理特征分析方法。纹理基元理论认为,复杂的纹理可以由若干简单的纹理基元以一定的有规律的形式重复排列构成。在几何法中,比较有影响的算法有两种:Voronio棋盘格特征法和结构法。
(3)模型法
:模型法以图像的构造模型为基础,采用模型的参数作为纹理特征。典型的方法是随机场模型法,如马尔可夫(Markov)随机场(MRF)模型法和Gibbs随机场模型法
(4)信号处理法
: 纹理特征的提取与匹配主要有:灰度共生矩阵、Tamura纹理特征、自回归纹理模型、小波变换等。

灰度共生矩阵特征提取与匹配主要依赖于能量、惯量、熵和相关性四个参数。Tamura纹理特征基于人类对纹理的视觉感知心理学研究,提出6种属性,即:粗糙度、对比度、方向度、线像度、规整度和粗略度。自回归纹理模型(simultaneousauto-regressive,SAR)是马尔可夫随机场(MRF)模型的一种应用实例。

在对图像纹理特征的提取算法中,高斯马尔可夫随机场(GMRF)、局部二值模式(LBP)、灰度共生矩阵(GLCM)这3种应用最为广泛,分别对应3种不同的纹理空间,即3种纹理分类的途径。

业务解决方案—采用基于统计法的纹理特征描述

本人从事电商行业,现有业务对服装纹理进行识别。单幅服装图像通常对应一片较大的区域,有很多区域是无用的背景等,需要按照某种性质将不同性质的区域分割开来,以有利于下一步的图像分析以及目标检测和识别。研究发现,不同底质区域的商品图像具有不同的统计和纹理特征。

基于灰度共生矩阵( grey level co-occurrence matrix) GLCM 提取纹理特征的方法是一种典型的统计分析方法,本文即采用 GLCM 进行服装图像的表示和分析。GLCM 纹理提取方法具有较强的适应能力和稳健性,近年来已越来越多地用于图像的检测和分类。 如:
在这里插入图片描述

**特征选择:**
1)选取灰度直方图的均值、标准差、峰度等统计特性和灰度共生矩阵的能量、相关性、对比度、熵值等纹理特性用以描述商品图像的不同区域。
2)将选取的特征作为 SVM 的训练特征,进而得到 SVM 分类器,用于商品图像分类。
实验结果表明,SVM 算法可以较好地对服装商品图像进行区域分类,数据少的情况优于RF。

优点:

纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。

缺点:

纹理特征一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响,从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。
例如,水中的倒影,光滑的金属面互相反射造成的影响等都会导致纹理的变化。由于这些不是物体本身的特性,因而将纹理信息应用于检索时,有时这些虚假的纹理会对检索造成“误导”。

在检索具有粗细、疏密等方面较大差别的纹理图像时,利用纹理特征是一种有效的方法。但当纹理之间的粗细、疏密等易于分辨的信息之间相差不大的时候,通常的纹理特征很难准确地反映出人的视觉感觉不同的纹理之间的差别。

灰度共生矩阵(GLCM)

1. 算法简介

灰度共生矩阵法(GLCM, Gray-level co-occurrence matrix),就是通过计算灰度图像得到它的共生矩阵,然后透过计算该共生矩阵得到矩阵的部分特征值,来分别代表图像的某些纹理特征(纹理的定义仍是难点)。灰度共生矩阵能反映图像灰度关于方向、相邻间隔、变化幅度等综合信息,它是分析图像的局部模式和它们排列规则的基础。

对于灰度共生矩阵的理解,需要明确几个概念:方向,偏移量和灰度共生矩阵的阶数。
方向:一般计算过程会分别选在几个不同的方向来进行,常规的是水平方向0°,垂直90°,以及45°和135°;
步距d:中心像元(在下面的例程中进行说明);
灰度共生矩阵的阶数:与灰度图像灰度值的阶数相同,即当灰度图像灰度值阶数为N时,灰度共生矩阵为N × N的矩阵;

GLCM将拍摄的图像(作为矩阵),定义角度([“0”,“45”,“90”,“135”]__角度在我这影响不大)整数距离d([1, 2, 8, 16]__‘1’最优)。GLCM的轴由图像中存在的灰度级定义。扫描图像的每个像素并将其存储为“参考像素”。然后将参考像素与距离d的像素进行比较,该距离为角度θ(其中“0”度是右边的像素,“90”是上面的像素)远离参考像素,称为相邻像素。每次找到参考值和邻居值对时,GLCM的相应行和列递增1。
为了说明,下图显示了如何计算GLCM中的前三个值:
在这里插入图片描述

一个直观的例子显示了这个过程图像中的像素被着色并用灰色值标记。设置GLCM使得每个像素值在每个轴上表示。
在这里插入图片描述

我们计算每对灰度级出现的次数,例如,如果angle =“0”且d = 1,对于灰度级为1,则有一对1:1对:
在这里插入图片描述
这有两个1:3对,对于每个灰度级,我们以这种方式继续,最终得到一个充满计数的GLCM。
在这里插入图片描述
按照惯例,我们将GLCM和GLCMs转置相加以获得对称矩阵:
在这里插入图片描述
通常,在计算特征之前对GLCM进行标准化,一般的glcm()函数会是默认。
此外,还有

灰度级运行长度矩阵(GLRLM)

GLRLM试图量化运行具有相同灰度质量的图像。GLRLM的设置与GLCM略有不同;GLRLM不是沿着表的横坐标具有灰度级,而是具有运行长度。
与GLCM一样,需要一个角度(“0”,“45”,“90”或“135”之一)。下面是使用“0”的示例,请注意图像矩阵与GLCM示例不同:
在这里插入图片描述
对于给定长度的每次运行,我们计算每个灰度级长度发生的次数。这里,对于黄色像素,1个像素的游程长度发生3次,对于蓝色像素,游程长度3发生一次。
在这里插入图片描述
我们为图像中的所有像素完成此操作以获得最终的GLRLM:
在这里插入图片描述

灰度级区域矩阵(GLSZM)

(GLSZM,目标是量化图像中连续像素的区域)。GLSZM的设置方式与GLRLM相同,但横坐标是尺寸区域而不是运行长度。尺寸区域被定义为相同灰度级的9连接像素的集合(即,在它们的边缘和角上连接)。
对于GLSZM,我们将使用与GLCM相同的图像。不是标记灰度级别,而是将连续大小的区域标记为其大小:
在这里插入图片描述
对于每种颜色,我们计算给定尺寸的区域数量,例如,在其他尺寸区域中,有两个尺寸为1的红色区域,一个尺寸为2的蓝色区域和一个尺寸为3的浅蓝色区域:
在这里插入图片描述
从纹理矩阵中可以计算出许多不同的特征。这些总结在下表中:
在这里插入图片描述
在这里插入图片描述
有关这些数量的更多信息和数学定义:here.
radiomics的R包 提供了用于计算图像纹理的工具,也用于计算一阶图像特征,例如峰度,偏度和平均偏差。挺方便的,但可惜的是我们需要使用Python(当然也有PyRadiomics,但只用于计算2D\3D医学影像图,如果有领悟到其用在Image的方法,还请告知!)。

算法实现步骤

(1) 提取灰度图像
计算纹理特征第一步,就是将多通道的图像(一般指RGB图像)转换为灰度图像,分别提取出多个通道的灰度图像。
纹理特征是一种结构特征,使用不同通道图像得到的纹理特征都是一样的,所以可以任意选择其一。
(2) 灰度级量化
一般在一幅图像中的灰度级有256级,从0–255。但在计算灰度共生矩阵时我们并不需要256个灰度级,且计算量实在太大,所以一般分为8个灰度级或16个灰度级。
而且当分成8个灰度级时,如果直接将像素点的灰度值除以32取整,会引起影像清晰度降低,所以进行灰度级压缩时,首先我们会将图片进行直方图均衡化处理,增加灰度值的动态范围,这样就增加了影像的整体对比效果。
(3) 计算特征值的参数选择
计算特征值前,先选择计算过程中的一些参数:
• 滑动窗口尺寸:一般选择5×5或7×7的滑动窗口进行计算特征值;
• 步距d:一般选择d = 1,即中心像素直接与其相邻像素点做比较运算;
• 方向选择:计算灰度共生矩阵的方向一般为0°,45°,90°,135°四个方向;求出四个方向矩阵的特征值后,可以通过计算四个特征值的平均值作为最终特征值共生矩阵;
◦ 注:如果选择其他方向,则在每个方向上都会得到相当繁多的纹理特征,不利于使用的效率。
(4) 纹理特征值的计算
由于灰度共生矩阵的维度较大,一般不直接作为区分纹理的特征,而是基于它构建的一些统计量作为纹理分类特征。例如HaralickHaralick曾提出了14种基于灰度共生矩阵计算出来的统计量:能量、熵、对比度、均匀性、相关性、方差、和平均、和方差、和熵、差方差、差平均、差熵、相关信息测度以及最大相关系数。

纹理特征值

1) 角二阶矩 / 能量( ASM)

灰度共生矩阵( grey level co-occurrence matrix,GLCM)用来描述图像灰度分布的均匀程度和纹理的粗细程度。
如果 GLCM 的所有值都非常接近,则 ASM 值较小; 如果矩阵元素取值差别较大,则 ASM 值较大。当 ASM 值较大时,纹理粗,能量大; 反之,当 ASM 值小时,纹理细,能量小。
ASM=∑i∑jP(i,j)2

2) 相关性(Correlation)

自相关反应了图像纹理的一致性。如果图像中有水平方向纹理,则水平方向共生矩阵Correlation值大于其余方向共生矩阵Correlation的值。它度量空间灰度共生矩阵元素在行或列方向上的相似程度,因此,相关值大小反映了图像中局部灰度相关性。当矩阵元素值均匀相等时,相关值就大;相反,如果矩阵像元值相差很大则相关值小。
在这里插入图片描述

3)熵(Entropy)

测量图像纹理的随机性(强度分布)。熵是图像包含信息量的随机性度量,表现了图像的复杂程度。当共生矩阵中所有值均相等或者像素值表现出最大的随机性时,熵最大;因此熵值表明了图像灰度分布的复杂程度,熵值越大,图像越复杂。
表示矩阵中元素的分散程度,也表示图像纹理的复杂程度。
在这里插入图片描述

4)对比度(Contrast)

对比度反应了图像的清晰度和纹理的沟纹深浅。度量矩阵的值是如何分布和图像中局部变化的多少,反应了图像的清晰度和纹理的沟纹深浅。纹理的沟纹越深,反差越大,效果清晰;反之,对比值小,则沟纹浅,效果模糊。对公式(6),典型的有κ=2,λ=1。
反应某像素值及其领域像素值亮度的对比情况,图像亮度值变化快,换句话说纹理较深,它的对比度就越大,也就是它的纹理越清晰。
在这里插入图片描述

5)反差分矩阵(Inverse Differential Moment, IDM)

反差分矩阵又称逆方差、倒数差分矩,反映了纹理的同质性(清晰程度和规则程度),度量图像纹理局部变化的多少,纹理清晰、规律性较强、易于描述的,值较大。其值大则说明图像纹理的不同区域间缺少变化,局部非常均匀。
矩阵的对角元素值越大,逆差矩越大,反映了图片纹理的局部变化,局部变化越小,图像越均匀,逆差矩越大。
在这里插入图片描述

6)能量(Energy)

是灰度共生矩阵各元素值的平方和,是对图像纹理的灰度变化稳定程度的度量,反应了图像灰度分布均匀程度和纹理粗细度。能量值大表明当前纹理是一种规则变化较为稳定的纹理。更高的值==纹理均匀性。
在这里插入图片描述

7)相异性(Dissimilarity)

计算对比度时,权重随矩阵元素与对角线的距离以指数方式增长,如果改为线性增长,则得到相异性。

8)同质性/逆差距(Homogeneity)

测量图像的局部均匀性,非均匀图像的值较低,均匀图像的值较高。与对比度或相异性相反,同质性的权重随着元素值与对角线的距离而减小,其减小方式是指数形式的。

9)集群阴影(ClusterShade)

阴影大小(shade),可能和图片质量有关,更直观的是与服装的褶皱程度相关(褶皱处与光线形成反射阴影),越平整,shade值越小。测量矩阵的偏度并衡量均匀性的概念; 当值很高时,图像是不对称的。

10)集群突出物(ClusterProminence)

物体在图中的突兀情况,纹路和纹案反差越大,prom值就越大。(可看我另一篇纹理相关分析的文章)

11)最大概率(Maximum probability)

表示图像中出现次数最多的纹理特征。

12)集群趋势(clusterTendency)

群集趋势是具有相似灰度值的体素分组的度量。(该值在我这个项目中没有做)

13)差熵(Difference Entropy)

差熵是邻域强度值差异的随机性/变异性的度量。

14)峰度(Kurtosis)

15)均值(Mean)

16)标准差(Std)

注:后3个不属于纹理特征,为常规统计量,不受glcm的步长和方向影响。

图像特征值_峰度与偏度

Kurtosis(峰度): 表征概率密度分布曲线在平均值处峰值高低的特征数,是对Sample构成的分布的峰值是否突兀或是平坦的描述。直观看来,峰度反映了峰部的尖度。样本的峰度是和正态分布相比较而言的统计量,计算时间序列x的峰度,峰度用于度量x偏离某分布的情况,正态分布的峰度为3。如果峰度大于3,峰的形状比较尖,比正态分布峰要陡峭。反之亦然; 在统计学中,峰度衡量实数随机变量概率分布的峰态,峰度高就意味着方差增大是由低频度的大于或小于平均值的极端差值引起的。
Skewness(偏度): 是对Sample构成的分布的对称性状况的描述。计算时间序列x的偏度,偏度用于衡量x的对称性。若偏度为负,则x均值左侧的离散度比右侧强;若偏度为正,则x均值左侧的离散度比右侧弱。对于正态分布(或严格对称分布)偏度等于O。
YY:(这两个值比较熟悉,以前有个图计算的项目用Spark做,SparkSQL里就有该函数)

Python的2种参考(计算数据均值、标准差、偏度、峰度):

import numpy as np
R = np.array([1, 2, 3, 4, 5, 6]) #初始化一组数据
R_mean = np.mean(R) #计算均值
R_var = np.var(R)  #计算方差
R_sc = np.mean((R - R_mean) ** 3)  #计算偏斜度
R_ku = np.mean((R - R_mean) ** 4) / pow(R_var, 2) #计算峰度
print([R_mean, R_var, R_sc, R_ku])


import numpy as np
from scipy import stats
x = np.random.randn(10000)
mu = np.mean(x, axis=0)
sigma = np.std(x, axis=0)
skew = stats.skew(x)
kurtosis = stats.kurtosis(x)

扩展阅读:利用Scipy实现统计功能

使用GLCM特征值+SVM对纹理图片分类

通过提取灰度直方图的均值、标准差、峰度等统计特性和灰度共生矩阵的能量、相关性、对比度、熵值等如上所属纹理特性,作为 SVM 训练特征,得到 SVM 分类器,即可用于纹理图像的处理。
8个类别,图片质量稍低,但也得到了0.8左右的准确率,说明了统计特征的有效性。
在这里插入图片描述

GLCM特征的重要性分析

下图是我测试的各个特征对分类准确度的重要性分析结果:
在这里插入图片描述
据图理解:
(1)反差性特征:
与反差相关的特征使用的是和GLCM对角线距离相关的权重,也就是说,权重是距离的函数。
为了强调窗口内的局部反差,权重应该使反差大的影像的运算结果得到较大的数值。对角线元素没有反差,离对角线越远反差越大。因此,权重应该随距离而增加。通过计算得出波点纹理GLCM值如:
波点纹理GLCM值
反差的特征:

  1. 对比度(Contrast)
    度量矩阵的值是如何分布和图像中局部变化的多少,反应了图像的清晰度和纹理的沟纹深浅。每张图像都有着不同的对比度,跟拍摄环境相关,这是个比较无规律的度量值。计算方向的不同,变化也较大。

  2. 相异性(Dissimilarity)
    计算对比度时,权重随矩阵元素与对角线的距离以指数方式增长,如果改为线性增长,则得到相异性。 同类照片,如豹纹,可能因为豹纹的大小和形状的不同,而得到不同的纹理特征。 计算对比度时,权重随矩阵元素与对角线的距离以指数方式增长,如果改为线性增长,则得到相异性。 同类照片,如豹纹,可能因为豹纹的大小和形状的不同,而得到不同的纹理特征。

  3. 同质性(Homogeneity)
    与对比度或相异性相反,同质性的权重随着元素值与对角线的距离而减小,其减小方式是指数形式的。 与对比度或相异性相反,同质性的权重随着元素值与对角线的距离而减小,其减小方式是指数形式的。

  4. 图片突出物(Prominence)

    计算下图glcm值:
    在这里插入图片描述
    得出的部分glcm值如下:
    在这里插入图片描述 (图片对应名称在最右边)
    对比度在上面已经讲过了,这里得出的对比度结果也验证了上面所说的。
    这里重点讲Prominence这个特征值,如上图:
    (27、28)->(8、9)->(4、5)->(6、7)Prominence值递增很多,纹路逐渐清晰至白色
    由此可见,纹路和纹案反差越大,prom值就越大。

(这部分论证内容可看我另一篇文章:影响纹理分类准确度的GLCM特征研究分析)…好像没写完

(2)有序性特征
有序性(Orderliness)是指窗口内像元值的规律程度或有序程度。比如以下两个窗口A, B,其水平方向有相同的对比度(都为1),因为每个像元都比左侧像元大1。但是A, B的有序性却很不相同,A很明显比B更有规律。
在这里插入图片描述
在GLCM中,元素的值是各种组合的概率,用GLCM元素本身来构造权重就可以得到度量有序性的纹理特征。

有序的特征:
1.角度二阶矩(Angular Second Moment, ASM)和能量(Energy)
这两个特征直接以Pi,j作为权重,W=P,有序性越高,ASM和能量越大。能量有时也被称为均匀性(Uniformity)。
2.熵(Entropy)
以Pi,j的自然对数的相反数作为权重。有序性越低,熵越大。

度量有序性的三个特征都有一定的物理意义。角度二阶矩是旋转加速度的一种度量,能量则是一个常见的物理量,而熵在热动力学中代表的是永久损失掉无法再利用的热量。熵可以不严格的理解为混沌或无序,可以认为和能量是相反的一对概念。

:------------------------------(分界线)-----------------------------------------
这部分是实验,没上面的方法好,仅作为一个简单的记录。

图像特征提取(二)-LBP特征

LBP(Local Binary Pattern,局部二值模式) 是一种用来描述图像局部纹理特征的算子,具有多分辨率、灰度尺度不变、旋转不变等特性。主要用于特征提取中的纹理提取。
  纹理是个什么概念呢?具体定义为:泛指物体面上的花纹或线条,是物体上呈现的线形纹路。在图像处理中一般理解也就是灰度变化引起的某些特征反应。
  在这里插入图片描述
LBP具有的特性:

  1. 灰度不变性

  2. 支持多分辨率

  3. 等价模式

LBP纹理特征向量,一般以图像分块LBP直方图表示。LBP特征向量提取的步骤:

  1. 计算图像中每个像素点的LBP模式(等价模式,或者旋转不变+等价模式)。 图像划分若干为N × N的图像子块(如16 × 16),计算每个子块中每个像素的LBP值;
  2. 然后计算每个子块的LBP特征值直方图,得到N × N图像子块的直方图,然后对该直方图进行归一化处理;
  3. 最后将得到的每个子块的归一化直方图连接成一个特征向量,也就是整幅图的LBP纹理特征向量;

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

基于LBP纹理特征-计算GLCM纹理统计量-进行纹理图片识别

注意:
使用from skimage.feature import local_binary_pattern 的lbp算法得到的是归一化后的float数组形式图像,而GLCM要求输入的图像为int数组形式的(cv2读进来的格式)。所以我们使用自己实现的lbp函数。

  def LBP(self, image):
       W, H = image.shape  # 获得图像长宽
       xx = [-1, 0, 1, 1, 1, 0, -1, -1]
       yy = [-1, -1, -1, 0, 1, 1, 1, 0]  # xx, yy 主要作用对应顺时针旋转时,相对中点的相对值.
       res = np.zeros((W - 2, H - 2), dtype="uint8")  # 创建0数组,显而易见维度原始图像的长宽分别减去2,并且类型一定的是uint8,无符号8位,opencv图片的存储格式.
       for i in range(1, W - 2):
           for j in range(1, H - 2):
               temp = ""
               for m in range(8):
                   Xtemp = xx[m] + i
                   Ytemp = yy[m] + j  # 分别获得对应坐标点
                   if image[Xtemp, Ytemp] > image[i, j]:  # 像素比较
                       temp = temp + '1'
                   else:
                       temp = temp + '0'
               # print int(temp, 2)
               res[i - 1][j - 1] = int(temp, 2)  # 写入结果中
       return res

计算结果如图:
在这里插入图片描述

总结:
LBP是一种基于灰度描述图像纹理特征的不相关算子,它通过对图像任意一点与其周围点的灰度值大小关系来表征图像的局部纹理特征。
采用融合LBP和GLCM的纹理特征提取方法,运用旋转不变的LBP算子对纹理图像进行计算,得到LBP图像后,提取LBP图像的纹理信息(对比度、相关性、熵、能量、逆差矩等), 外加(均值、标准差、峰度)3个非GLCM特征,最后使用分类算法对纹理进行分类。

最终的识别准确率(使用与上面单GLCM特征方法相同数据集):
在这里插入图片描述
实验得知,此方法有助于提高模型准确度。

PS: 为了减少GLCM计算量,可对原始图像灰度级压缩,将Gray量化成16级。

扩展方法:

gabor滤波器提取纹理特征

(这应该是我最认真的一篇博客了)。。。

博主w~x:lovebyz99
(交流请备注,对创业有想法欢迎联系)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页