MATLAB基础小波变换程序工具包
项目介绍
本项目是一个专为MATLAB初学者设计的教育型小波变换工具集。它通过底层逻辑实现,详细展示了离散小波变换(DWT)及逆变换(IDWT)的核心算法。该工具包不仅提供了信号处理和图像分析的基础功能,还通过清晰的代码结构和详尽的数学实现步骤,帮助用户理解多分辨率分析、滤波器组以及尺度变换等核心概念。
功能特性
- 一维信号处理:支持对非平稳信号执行自定义层数的多尺度分解,并能准确进行信号重构。
- 二维图像分析:实现图像的行列分级分解,展示LL、LH、HL、HH四个子带的结构。
- 信号去噪:内置基于软阈值(Soft Thresholding)法的去噪功能,包含噪声标准差估算和阈值自动计算逻辑。
- 增强可视化:提供一维分解系数拼接视图和二维多层系数嵌套视图,并对细节分量进行对数增强以便观察。
- 算法底层化:主要变换过程采用卷积与下采样/上采样结合的方式实现,减少对高层封装函数的依赖,便于学习原理。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱:基础程序主要依赖MATLAB核心功能,但获取小波滤波器系数(如db4)需安装 Wavelet Toolbox。
功能实现逻辑
1. 一维信号处理流程
- 信号生成:生成一个包含50Hz和120Hz正弦分量、突变点以及高斯白噪声的混合非平稳信号。
- 多层分解:通过循环迭代,在每一层利用低通(Lo_D)和高通(Hi_D)滤波器对信号进行卷积,随后通过下采样(每隔一个采样点取一个值)获得近似系数(cA)和细节系数(cD)。
- 去噪逻辑:
- 使用第一层细节系数的中值绝对偏差(MAD)估计噪声标准差 $sigma$。
- 计算通用阈值(Universal Threshold):$sigma sqrt{2 ln N}$。
- 对除了最终层近似系数之外的所有细节系数应用软阈值公式:$y = sign(x) cdot max(0, |x| - Threshold)$。
- 重构:对系数进行上采样(补零插值)并配合重构滤波器(Lo_R, Hi_R)进行卷积,将各层细节与近似分量逐级累加。
2. 二维图像分解流程
- 分解操作:对图像先进行行方向的滤波与下采样,再进行列方向的操作。每层分解得到一个近似分量(LL)和三个方向的细节分量(水平LH、垂直HL、对角HH)。
- 多级结构:程序会将图像减半尺寸后递归进行分解,直到达到预设层数(如3层)。
- 可视化合成:将不同层级的系数按照经典布局拼合成一张大图,并通过对数变换
log1p(abs(vis)) 增强微弱的变化信息,使用户能直观看到各级频率分布。
关键函数与算法分析
算法实现细节
- 下采样(dyadDownsampling):通过索引操作
x(2:2:end) 实现,模拟数字信号处理中的抽取过程。 - 上采样(dyadUpsampling):创建一个两倍长度的零向量,并在奇数位填充原信号,模拟内插过程。
- 卷积模式:在滤波过程中统一使用
'same' 模式,以确保卷积后信号长度与原输入一致,简化了多尺度分解中的尺寸管理。
性能指标
- 信噪比(SNR):程序实时计算去噪前后的信噪比,通过数学公式 $10 log_{10}(frac{sum Signal^2}{sum Noise^2})$ 量化去噪效果,验证重构的准确性。
使用方法
- 环境准备:确保MATLAB路径中已包含本程序所在文件夹。
- 运行程序:在MATLAB命令行窗口输入主程序名并回车。
- 交互与观察:
- 程序将自动弹出三张图形窗口。
- 第一窗口展示“含噪原始信号”、“理想信号”与“去噪重构信号”的对比,并显示SNR提升数值。
- 第二窗口展示一维小波系数的级联结构。
- 第三窗口展示原始图像、多尺度小波分解视图及重构还原后的图像。
- 参数调整:用户可自行修改变量中如
waveName(小波基名称,如 'haar', 'db4', 'sym8')和 level(分解层数)来观察不同配置下的处理效果。