基于小波变换的多算法图像去噪与质量评价系统
项目介绍
本项目是一个基于MATLAB开发的图像去噪与质量评价工具,专注于利用多分辨率分析理论解决图像中的噪声污染问题。系统通过离散小波变换(DWT)将图像信号从空域转换至小波域,通过识别并处理代表噪声的高频细节系数,实现图像的平滑与边缘保持。本项目不仅实现了多种经典的阈值处理算法,还集成了客观的图像质量评价指标,为科研和教学提供了一个直观的实验平台。
功能特性
- 多小波基支持:系统支持包括 Haar、Daubechies (db)、Symlets (sym) 和 Coiflets (coif) 在内的多种小波基函数,适应不同特征的图像处理需求。
- 多尺度分解:允许用户自定义分解层数,深入探究图像在不同频率子带上的特征分布。
- 主流噪声模拟:内置高斯噪声和椒盐噪声生成的模拟功能,用于测试系统的鲁棒性。
- 自适应阈值估计算法:集成了 VisuShrink 准则,利用第一层高频系数的鲁棒标准差估算(Median Absolute Deviation)自动生成去噪阈值。
- 多种去噪算法对比:系统同场对比硬阈值法、软阈值法以及一种基于调节因子的改进型半软阈值法。
- 质量评价体系:通过峰值信噪比(PSNR)和均方误差(MSE)两个维度,对去噪后的图像质量进行量化分析。
- 多维可视化:一站式展示原始图像、含噪图像、小波分解系数图以及三种不同算法的去噪成果图。
系统要求
- 运行环境:MATLAB R2016b 或更高版本
- 必备工具箱:
1. Image Processing Toolbox(图像处理工具箱)
2. Wavelet Toolbox(小波工具箱)
实现逻辑与流程
主程序按照以下流程顺序执行:
- 初始化与参数配置:设定实验所需的小波基(如 db4)、分解层数(3层)以及噪声参数。
- 数据预处理:读取图像并进行灰度化处理。将图像数据转换为双精度浮点数(double),以确保后续计算的精度。
- 噪声注入:根据预设参数,在原始高清图像中加入高斯颗粒噪声或椒盐噪声。
- 小波空间映射:调用二维离散小波分解函数,将图像分解为包含近似系数和各级细节系数的向量结构。
- 阈值计算逻辑:
* 提取第一层分解中的对角线细节系数。
* 使用中值绝对偏差法估计噪声强度 sigma(公式:median(|D1|) / 0.6745)。
* 应用 VisuShrink 准则计算全局通用阈值(公式:sigma * sqrt(2 * log(N)))。
- 核心去噪处理:通过内部处理函数,按照预定算法逻辑遍历处理小波系数向量:
*
硬阈值:直接将绝对值小于阈值的系数置零。
*
软阈值:在置零的基础上,对剩余系数进行收缩处理。
*
改进阈值:引入调节因子 k=0.5,在保持边缘与减少伪影之间取得平衡。
- 图像重建:运用逆离散小波变换(IDWT),将处理后的系数还原为去噪图像。
- 评价与可视化:计算各结果的 PSNR 和 MSE,并通过控制台输出统计表,同时生成对比图表展示实验效果。
关键函数与算法说明
- 小波分解与重构实现:算法核心依赖于多尺度分解逻辑。生成的系数向量包含近似分量及各层的水平、垂直、对角线三个方向的细节分量。重构过程则利用这些经过处理的系数精确还原图像。
- 系数处理函数 (apply_threshold):该函数是系统的核心逻辑单元。它根据输入的参数(hard, soft, improved),在不打乱小波空间结构的前提下,通过遍历各层细节系数的索引位置,针对性地应用数学收缩公式。
- 质量评价函数 (calculate_metrics):实现了标准的 PSNR 计算公式,通过对比原始图像与处理后图像的均方差,反映出滤波算法对有用信号的还原能力。
- 改进型阈值算法:代码中实现了一种结合硬、软阈值优点的计算方式。当系数大于阈值时,进行特定比例的线性收缩,旨在解决软阈值导致的图像模糊问题和硬阈值产生的局边界效应(Gibbs 现象)。
使用方法
- 在 MATLAB 中打开主程序文件。
- 根据实验需求,在脚本顶部的“参数设置”部分通过修改变量(如 wavelet_name, decomp_level等)来调整实验条件。
- 点击“运行”,系统将自动完成从噪声生成到结果评价的全过程。
- 运行结束后,系统会自动弹出可视化图形窗口,并在命令行窗口打印出质量评价指标统计表。