MATLAB 图像纹理特征提取(14种GLCM特征值)
本项目是一个基于 MATLAB 环境开发的图像纹理分析工具,旨在通过灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM)算法,从图像中提取描述表面纹理结构的 14 种经典哈拉利克(Haralick)统计特征。这些特征能够量化地反映图像的均匀性、对比度、复杂性及相关性,为后续的机器学习分类、目标检测或质量评价提供核心数据支撑。
主要功能特性
- 全套特征提取:完整实现 Haralick 提出的 14 种纹理特征,包括能量、对比度、相关性、方差、同质性、和平均、和方差、和熵、熵、差方差、差熵、相关信息度量 I、相关信息度量 II 以及最大相关系数。
- 多方向综合分析:支持 0°、45°、90°、135° 四个典型偏移方向的共生矩阵构建,确保特征提取具有较好的旋转不敏感性。
- 稳健的预处理:内置图像灰度化与灰度级别重采样功能,能够将图像量化调整为指定的等级(默认 16 级),提高计算效率并降低噪点干扰。
- 手动核心算法实现:核心 GLCM 构建逻辑与特征计算逻辑均采用底层代码编写,未依赖封装好的黑盒函数,便于理解算法细节及进行跨平台移植。
- 直观的结果展示:自动生成控制台报告及包含原始图、特征分布图、GLCM 矩阵热力图和特征趋势图在内的可视化窗口。
系统要求
- MATLAB R2016b 或更高版本。
- 建议安装 Image Processing Toolbox(用于图像读取与基本显示),但核心算法部分已实现手动编写。
使用方法
- 将项目文件放置在 MATLAB 当前工作路径下。
- 直接运行主程序。
- 程序会自动加载内置的测试图像(若不存在则生成合成图像),并在命令行窗口输出 14 种特征的均值。
- 运行结束后将弹出可视化图像窗口,展示分析结果。
实现逻辑与算法细节分析
#### 1. 图像预处理与量化
主程序首先检测输入图像的色彩通道,若为 RGB 则转换为灰度图。随后执行灰度量化操作,将原始 0-255 的灰度范围重新映射到 1-N(默认 N=16)的区间。量化是通过公式 floor((I - min)/(max - min + eps) * (N-1)) + 1 实现的。这种处理能显著减小共生矩阵的维度(从 256x256 降至 16x16),在保留纹理信息的同时极大提升运行速度。
#### 2. 灰度共生矩阵(GLCM)计算
程序通过手动循环遍历图像像素,根据给定的偏移量(Offset)统计相邻像素对出现的频次。
- 对称化处理:算法将计算得到的矩阵与其转置矩阵相加,使矩阵满足对称性,从而抵消 0° 与 180° 等方向的差异。
- 归一化处理:将频数矩阵除以总像素对数,将其转化为概率分布矩阵 P(i, j),这是计算后续所有统计特征的基础。
#### 3. 14 种特征计算逻辑
程序内部函数严格遵循 Haralick 的数学公式进行计算:
- 基本统计类:如能量(角二阶矩)、对比度、方差、同质性(逆差距)。
- 概率分布类:利用边缘概率 px 和 py 计算相关性。
- 求和与差值类:构造 px+y 和 px-y 的分布,计算和平均、和方差、和熵、差方差及差熵。
- 信息论类:通过计算联合熵、边缘熵及辅助熵 H1、H2,得出两种相关信息度量指标。
- 矩阵特征值类:通过构造 Q 矩阵并求解其特征值,取第二大特征值的平方根作为最大相关系数(f14)。
#### 4. 特征融合与输出
由于纹理在不同方向上表现不同,程序在四个方向上分别独立计算 14 个特征,随后对这四个方向的结果进行均值化处理。这种做法能够获得一组代表图像全局纹理特征的 1x14 维向量,增强了特征对图像旋转的鲁棒性。
核心函数说明
- 主控制流逻辑:负责环境清理、参数初始化、图像加载、循环调用计算模块以及最终的数据可视化排版。
- 矩阵构建模块:实现方向性偏移量的逻辑映射及对称归一化矩阵的生成。
- 特征提取模块:本项目最核心的计算单元,通过矢量化运算与多维概率分布构建,精确提炼 14 种纹理指标,特别处理了 log 运算中的极小值补偿以防止数值溢出。