基于灰度共生矩阵的图像纹理特征提取与分析系统
项目介绍
本项目是一套用于通过灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM)提取图像纹理特征的分析系统。纹理是图像的一种重要属性,反映了像素灰度在空间位置上的分布规律。本系统通过统计特定距离和方向上像素对的共生频数,构建概率分布矩阵,并从中提取关键的数学特征,从而实现对图像纹理粗细、均匀程度、对比度及规律性的定量描述。该系统适用于医学影像诊断、遥感图像分析及工业产品表面缺陷检测等领域。
功能特性
- 多级灰度量化:支持将图像灰度级进行压缩,以减少计算量并突出主要的纹理结构。
- 多方向分析:系统能够同时在 0°、45°、90° 以及 135° 四个关键方向进行纹理统计。
- 对称化与归一化:通过对称处理增强矩阵的稳定性,并进行归一化处理使其符合概率分布特性。
- 核心特征提取:精准计算能量、熵、惯性矩(对比度)和相关性四个核心特征参数。
- 直观可视化:提供原始图像展示、各方向 GLCM 热力图分布以及特征统计趋势图。
- 数值报告:自动生成结构化的特征分析统计表,包含各方向的具体数值及综合均值。
使用方法
- 环境准备:确保安装了 MATLAB 运行环境。
- 数据放置:程序默认读取内置的测试图像,如需处理特定图像,需将图像路径配置到读取函数中。
- 运行程序:在 MATLAB 命令行窗口运行入口脚本函数。
- 结果查看:
- 查看弹出的图形窗口,左侧为原图,中间为四个方向的 GLCM 概率分布热图,右侧为特征对比柱状图。
- 查看命令行输出的统计表格,获取详细的特征数值分析。
系统要求
- 操作系统:Windows, macOS 或 Linux
- 软件平台:MATLAB R2016b 及以上版本
- 依赖工具箱:Image Processing Toolbox(图像处理工具箱)
实现逻辑与功能说明
系统的实现严格遵循纹理分析的经典数学模型,主要流程包括:
- 参数初始化:预设灰度级为 16 级,像素位移步长为 1,扫描角度定义为四个方向。
- 图像预处理:系统将输入的彩色或灰度图像进行 double 类型转换,并根据预设级数进行线性量化。通过将 256 级灰度映射到 1-16 范围,有效过滤噪声并减小共生矩阵的维度。
- 核心计算循环:系统通过循环遍历指定的四个方向角度。在每个角度下,首先调用共生矩阵构建算法统计像素对,然后将矩阵与其转置相加实现对称化,最后除以总元素和得到归一化概率矩阵。
- 特征计算实现:
-
能量(Energy):计算归一化矩阵中所有元素的平方和,数值越大代表纹理越均匀、越粗。
-
熵(Entropy):基于信息论公式计算,通过对非零概率元素进行对数求和,反映纹理的随机性和复杂程度。
-
惯性矩(Contrast):利用像素值的差平方作为权重进行加权求和,反映图像边缘的清晰度和纹理深浅。
-
相关性(Correlation):计算行和列的均值与方差,衡量灰度共生矩阵在空间上的线性相关性。
- 综合分析与绘图:系统在循环结束后,计算四个方向特征的均值作为综合描述符,并利用条形图直观展示各特征在不同角度下的变化趋势。
关键算法与实现细节分析
该算法通过定义的偏移量(dx, dy)查找邻域像素。针对不同角度,偏移量的选择严格遵循:0°(1, 0)、45°(1, -1)、90°(0, -1)、135°(-1, -1)。在遍历过程中,程序包含严格的边界检查逻辑,确保坐标不超出图像范围。
算法在统计完原始频数后执行
glcm = glcm + glcm'。这一步确保了 (i, j) 与 (j, i) 的统计机会均等,使得得到的矩阵不仅反映了物体间的空间位置关系,且不依赖于遍历的起始方向。
在计算熵特征时,算法采用了
p(p > 0) 的逻辑来排除概率为零的元素,从而有效避免了在计算
log2 时可能出现的数学错误或无穷大数值。
相关性特征的实现并未简单调用内置函数,而是通过手动计算边缘分布(px, py)、一阶矩(mux, muy)和二阶矩(sigmax, sigmay)来完成,这确保了算法在不同灰度量化级下均能保持极高的计算精度。