基于MATLAB的小波矩图像特征提取程序
项目介绍
本项目实现了一种基于小波矩(Wavelet Moments)的图像特征提取方案。小波矩通过结合多分辨率分析与拓扑几何矩,能够同时捕捉图像的全局轮廓信息与局部纹理细节。该程序提供了一个从图像预处理、多级小波分解到矩特征计算及可视化的完整工作流,旨在为形状识别、目标检测及医学影像分析等研究提供基础的特征提取工具。
功能特性
- 鲁棒的图像预处理:自动进行灰度化处理,并具备自动尺寸调整功能(统一缩放至256x256像素),以适配离散小波变换的计算要求。
- 多级 Haar 小波分解:实现了二层离散小波分解(DWT),将图像分解为近似分量、水平细节、垂直细节和对角细节等多个子带。
- 多尺度特征提取:针对7个不同尺度和方向的小波子带,分别计算几何矩与归一化中心矩。
- 平移不变性优化:通过计算中心矩并利用低阶矩进行归一化处理,提升了特征向量对目标平移的稳定性。
- 直观的可视化界面:程序运行后自动生成综合对比图,包括原始图像、各级分量图、复合分解图以及最终提取的特征向量柱状图。
- 自适应运行环境:内置合成图像生成逻辑,即使在缺少外部图片资源的情况下,程序仍能通过模拟带噪声的几何形状进行演示运行。
实现逻辑说明
程序的核心执行流程分为以下五个核心环节:
- 初始化与环境配置:清理工作空间,并检测输入源。若指定图像不存在,则生成一个带有高斯噪声的圆形合成图像。
- 格式规范化:确保图像为双精度灰度格式,并利用双线性插值将其调整为2的幂次大小(256x256),这是为了保证多级小波分解能整除进行。
- 递归式小波分解:
- 执行第一层Haar小波变换,获得LL1、LH1、HL1、HH1四个子带。
- 对第一层获得的低频近似分量(LL1)进行第二层递归分解,获得LL2、LH2、HL2、HH2。
- 子带矩特征提取:
- 程序依次遍历从L1到L2层的共7个核心子带。
- 对每个子带计算零阶矩(m00)、一阶矩(m10, m01)以及二阶矩(m20, m02)。
- 计算质心坐标并将几何矩转换为中心矩。
- 构造组合特征:对零阶矩进行缩放平衡量级,并结合归一化后的二阶中心矩,形成每个子带的特征描述子。
- 特征聚合与展示:将所有子带的特征拼接成一个高维特征向量,通过命令行打印具体数值,并绘制特征分布图。
关键算法与函数分析
程序通过手动实现行与列的均值与差分计算(除以sqrt(2))来完成小波分解。这种实现方式不依赖于MATLAB小波工具箱,具有更好的平台移植性。它将图像能量集中在LL子带,而将边缘信息留在高频子带。
利用网格矩阵生成坐标信息,通过图像像素密度与空间坐标的乘积和来描述图像的质量分布。该逻辑是提取形状特征的基础。
通过减去重心坐标偏移,消除图像在空间中平移对特征值的影响。程序中利用二阶中心矩与零阶矩平方的比值进行归一化,进一步增强了特征的统计特性。
最终特征向量由7个子带的特征集组成,每个子带包含1个量级特征和2个形状特征,总计形成21维的特征向量,能够全面覆盖图像在不同尺度上的结构信息。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱要求:无需特殊工具箱,程序采用纯数学矩阵运算实现核心算法。
- 硬件要求:适配标准个人计算机,内存4GB以上即可。
使用方法
- 将所有代码保存并放置于MATLAB当前工作路径下。
- 确保路径中包含名为
cameraman.tif 的图像文件;若无此文件,程序将自动进入合成图像模式。 - 在MATLAB命令行窗口输入该程序的主函数名称并回车。
- 程序将自动弹出窗口显示处理过程及特征提取结果,并在命令行窗口输出完整的特征向量数值。