编程学习
🖼️C++OpenCV(16):图像纹理特征提取与检测
00 分钟
2023-8-30
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
💡
水寒江静,满目青山,载月明归。——黄庭坚《诉衷情》
🔆
文章首发于我的个人博客:欢迎大佬们来逛逛

GLCM

灰度共生矩阵法(GLCM, Gray-level co-occurrence matrix),就是通过计算灰度图像得到它的共生矩阵,然后透过计算该共生矩阵得到矩阵的部分特征值,来分别代表图像的某些纹理特征

计算过程

这是原始的图片像素矩阵,可以看到其最大像素为2,最小像素为0,因此可知最后得出的共生矩阵应为3x3的矩阵(行为像素i,列为像素j,共生矩阵中坐标(i,j)表示像素为i的点走到距离为δ处灰度为 j的像素出现的次数),注意:不记录重复的情况.
notion image
0度共生矩阵 位置的数值表示这两个数值排列在原生图像像素矩阵中出现了多少次,可以发现一共出现了12次,对于 的排列在原生矩阵中出现了4次,以此类推。
常用的还有45度方向,90度方向和135度方向检索方式,这里不做例举。

GLCM特征

GLCM纹理特征主要有以下四点
notion image
  • 熵(Entropy):熵是一种度量图像纹理复杂性的特征。它衡量了在图像中灰度级分布的不确定性或无序性。较高的熵值表示图像纹理更加复杂或不规律。
  • 能量(Energy):能量也称为反映度量,它衡量了图像纹理的局部灰度级分布的均匀性或平滑度。较高的能量值表示图像纹理更加均匀或平滑。
  • 对比度(Contrast):对比度衡量了图像中不同灰度级像素之间的差异程度。它反映了图像中纹理相邻像素对比度的强度。较高的对比度值表示图像纹理更加清晰或明显。
  • 均匀度(Homogeneity):均匀度衡量了图像纹理相邻像素之间灰度级的相似性。它描述了图像中纹理的一致性或相似性。较高的均匀度值表示图像纹理更加一致或相似。

代码实现

0度GLCM矩阵的实现:
45度GLCM的实现
notion image

LBP特征提取

LBP是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。
它是首先由T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用于纹理特征提取。

计算过程

原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。数学表达式方式如下图所示
notion image
上述表述可能会比较抽象,接下来我们举一个例子表述 一下:
notion image
计算LBP的顺序并没有硬性要求,只是一个量化公式,在同一处理中保持相同的顺序即可(都按顺时针或者都按逆时针处理)。
邻域扩展可以扩展到任意邻域,圆形LBP 算子用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R 的圆形邻域内有任意多个像素点,能满足不同尺寸和频率纹理的需要,并且可以达到灰度和旋转不变性的要求。这里不做过多叙说,有兴趣的可自行扩展。

代码实现

notion image
 

评论
  • Twikoo
  • Valine