基于小波变换与各向异性扩散的超声图像去噪系统
项目主要介绍
本项目是一个基于MATLAB开发的医学图像处理系统,旨在解决超声成像中普遍存在的乘性斑点噪声(Speckle Noise)问题。由于超声成像的相干性质,斑点噪声会显著降低图像对比度并模糊组织边缘,严重影响后续的临床诊断与图像分析。
本项目不依赖外部图像文件,而是内置了一个能够生成模拟人体软组织、病灶和囊肿特征的合成超声模体(Phantom)生成器。算法核心采用混合去噪策略:结合了对数域转化、离散小波变换(DWT)的多尺度分析能力,以及各向异性扩散(Anisotropic Diffusion)的边缘保持平滑特性。该系统不仅能有效去除斑点噪声,还能最大程度地保留病灶边缘和细微结构,并提供详细的定量评价指标和可视化对比分析。
功能特性
- 合成超声模体生成:程序内置算法自动生成包含高回声病灶、低回声囊肿、背景组织、线性结构及渐变区域的仿真超声图像,作为Ground Truth(金标准)用于算法评估。
- 乘性噪声模拟:自动向原始图像添加指定方差的乘性斑点噪声,模拟真实的B超成像环境。
- 对数域预处理:通过对数变换将乘性斑点噪声模型转化为易于处理的加性高斯白噪声模型。
- 多尺度小波分析:采用
sym4 小波基对图像进行3层离散小波分解,实现信号的频率分离。 - 混合去噪策略:
*
低频部分:应用Perona-Malik各向异性扩散模型,在平滑背景的同时保留强轮廓。
*
高频部分:结合自适应软阈值(Soft Thresholding)与选择性微量扩散,有效滤除高频噪点的同时连接断裂边缘。
- 全方位评价指标:自动计算并输出峰值信噪比(PSNR)、均方误差(MSE)、结构相似性(SSIM)和边缘保持指数(EPI)。
- 多维度可视化:提供原始/带噪/去噪图像对比、局部感兴趣区域(ROI)放大对比以及残差图分析。
详细算法流程与实现逻辑
系统的主要执行流程严格遵循以下步骤,代码逻辑完全自动化:
- 图像生成与噪声添加
* 利用内置函数生成分辨率为256x256的仿真组织图像。
* 向图像添加方差为0.04的乘性斑点噪声(Speckle Noise)。
- 预处理:对数变换
* 为了将乘性噪声转换为加性噪声,对带噪图像执行
log(I + epsilon) 变换,防止对0取对数的数值错误。
- 核心分解:离散小波变换 (DWT)
* 选定
sym4(Symlets 4)作为小波基函数,因其良好的对称性适合医学图像。
* 执行3级二维小波分解,获取近似系数(低频)和细节系数(高频)。
- 混合域处理
*
低频近似系数处理:提取第3层近似系数,应用
各向异性扩散滤波。设置迭代次数为15,时间步长0.25,采用“宽区域优先”的扩散方程(Option 2)。利用局部梯度信息动态调整传导系数,实现区域内平滑、边界处截止。
*
高频细节系数处理:
* 对每一层(1-3层)的水平、垂直、对角分量分别处理。
*
阈值估算:利用鲁棒的中值估计法计算噪声标准差 sigma,进而计算通用阈值 $T = sigma sqrt{2 ln(N)}$。
*
软阈值去噪:应用软阈值函数收缩系数,去除幅值较小的高频噪声。
*
条件性微量扩散:为了增强边缘连通性,代码对第2层及以上的细节分量在阈值处理后,额外进行极少次(3次)的各向异性扩散;第1层由于噪声最密集,仅进行阈值处理。
- 图像重构
* 将处理后的系数进行小波逆变换(IDWT)。
* 执行指数变换
exp 将图像还原至原始灰度域。
* 进行归一化处理,确保像素值在 [0, 1] 范围内。
- 评价与展示
* 计算去噪前后图像相对于原始无噪图的 PSNR、MSE、SSIM。
* 使用拉普拉斯算子计算边缘保持指数(EPI),量化边缘恢复程度。
* 绘制包含局部放大图和差值残差图的分析图表。
关键函数与算法细节
generate_ultrasound_phantom(N)
负责构建复杂的仿真测试图。它不只是简单的几何图形,还包含了模拟部分容积效应的高斯模糊、模拟组织纹理的正弦渐变以及不同灰度级的病灶模拟,为算法测试提供了可靠的基准。
anisodiff2D(img, num_iter, delta_t, kappa, option)
这是各向异性扩散的核心实现函数,基于Perona-Malik方程。
- 原理:利用图像的梯度模值来控制扩散系数。在平坦区域(梯度小)扩散系数大,表现为高斯平滑;在边缘区域(梯度大)扩散系数小,停止平滑。
- 方向性:计算北、南、东、西四个方向的有限差分。
- 传导函数:代码中实现了两种经典的传导系数计算方式:
* Option 1: 指数衰减型,注重高对比度边缘。
* Option 2: 平方反比型,注重宽区域的平滑(本主程序主要使用此项)。
calculate_epi(orig, denoised)
用于客观评价边缘保持能力的专用函数。
- 首先使用拉普拉斯算子对原始图像和去噪图像提取高通边缘信息。
- 计算两幅边缘图的相关性系数。值越接近1,表示边缘保持得越完整。
使用方法
- 启动 MATLAB。
- 将包含
main 函数及其子函数的文件保存为 main.m。 - 在 MATLAB 命令窗口或编辑器中运行
main。 - 程序将自动执行所有步骤,最终弹出三个图形窗口:
*
原始与带噪图像:显示仿真生成过程。
*
去噪结果详细对比:包含原始、带噪、去噪三者的全图对比及局部放大对比。
*
残差分析:显示去除的噪声成分(主要是斑点噪声)。
- 在 MATLAB 命令行窗口查看具体的定量评价指标(PSNR, SSIM, MSE, EPI)。
系统要求
- MATLAB 版本:建议使用 R2016a 或更高版本。
- 工具箱要求:
*
Image Processing Toolbox:用于
imnoise,
imshow,
psnr,
ssim,
fspecial,
imfilter 等图像处理函数。
*
Wavelet Toolbox:用于
wavedec2,
waverec2,
appcoef2,
wthresh 等小波变换函数。