基于小波变换贝叶斯LMMSE估计的图像降噪方法(MATLAB 2018)

自从小波被发现以来,由于其优良的时频局部化性能,大大解决了信号与图像降噪的难题。利用小波降噪大致有三种方法,分别是基于小波模极大值原理、基于小波变换系数的相关性,和最为常用的小波阈值函数法。

基于小波模极大值降噪

该方法是根据图像中有效信号和噪声信号在小波变换的各级尺度上具有传播方式的差异性,继而找到因噪声而产生的模极大值点并予以去除,同时并保留图像有效信号所相对应的模极大值点。最后用剩下的模极大值点进行小波系数重构,得到复原图像,实现图像的降噪。其中高斯白噪声和脉冲噪声非常适合用该方法降噪,但同时模极大值法也存在一些缺陷。模极大值法处理过后的图像,会使噪声分量几乎全部消失,只保留了小波分量。经过多个模极大值点重构信号后,会使重构信号有较大误差,图像严重失真。

基于小波系数相关性降噪

研究表明,当一幅图像中同时含有有效信号和噪声信号时,随着小波分解尺度的增加,有效信号的幅值会随之增大,而噪声信号的幅值随之减小。因此经过小波多尺度分解后的图像,其有效信号分量关联性较强,而噪声信号分量关联性很弱。根据这一特性,可对各自的小波系数相关性进行取舍,舍掉噪声信号后便实现了图像的降噪。该方法实现简单,但缺点是取舍相关系数时不准确。

基于小波阈值函数降噪

数字图像由低频分量与高频分量组成。在灰度梯度较小,即灰度变化不明显的区域,属图像低频分量;反之在灰度梯度较大,即灰度变化明显的区域,如图像中目标的边缘处以及图像的噪声处便属图像高频分量。小波阈值函数降噪法的基本思想便是将图像高频部分中的噪声予以剔除,保留图像原始有效信号。数字图像在经过小波分解后,会分解出四个分量,分别是低频分量、水平方向上的高频分量、垂直方向上的高频分量和对角方向上的高频分量。对低频分量不作处理,对剩下的三个高频分量利用小波阈值函数,将噪声信号分离出来。在高频分量中,噪声系数的幅值较小,有效信号的系数幅值较大。因此便可以选取一个阈值,将两种幅值差异较大的信号分隔开来,然后将幅值较低的噪声信号予以剔除,同时将幅值较大的有效信号予以保留。最后再将四个分量进行小波重构,便可得到降噪处理后的图像。该方法是目前信号降噪的主要技术手段,因其思想简单,可操作性强,计算量相对较小,降噪效果佳而被广泛使用。

鉴于此,提出一种基于小波变换贝叶斯LMMSE估计的图像降噪方法,运行环境为MATLAB 2018。

Matlab 复制代码
clc;clear all
original = imread('05f35a6a-2c42-4f6a-9bad-a5f500ebe9eb.00.jpg');
original = original(:,:,1); %Rendo immagine bianco e nero (1 Channel)
original = cast(original, 'double');

% noisy = sqrt(speckleNoise(original.^2,Looks));
noisy = original;

lognoisy = zeros(size(noisy));

for i=1:size(original,1)
    for j=1:size(original,2)
        if noisy(i,j) <= 0
            lognoisy(i,j) = 0;
        else
            lognoisy(i,j) = log(noisy(i,j));
        end
    end
end

%wname = 'bior3.5';
wname = 'bior4.4';
level = 1;
[C,S] = wavedec2(lognoisy,level,wname);


type1 = 'heursure';
type2 = 'penalhi';
thr = wthrmngr('dw2ddenoLVL',type2,C,S,3);
sorh = 's';
[XDEN,cfsDEN,dimCFS] = wdencmp('lvd',C,S,wname,level,thr,sorh);

XDEN = exp(XDEN);

mse = sum(sum(original-XDEN).^2)/(numel(original))
PSNR = 20*log10(255^2/mse)

figure;
subplot(1,2,1);
imagesc(noisy); colormap gray; axis off;
title('Noisy Image');
subplot(1,2,2);
imagesc(XDEN); colormap gray; axis off;
title('Denoised Image');

figure;
imshow(original/255);

%完整代码:https://mbd.pub/o/bread/ZZWWlJ1r

figure;
imshow(XDEN/255);

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

相关推荐
I_Am_Me_5 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
yyt_cdeyyds5 分钟前
FIFO和LRU算法实现操作系统中主存管理
算法
Robot2518 分钟前
浅谈,华为切入具身智能赛道
人工智能
只怕自己不够好13 分钟前
OpenCV 图像运算全解析:加法、位运算(与、异或)在图像处理中的奇妙应用
图像处理·人工智能·opencv
重生之我是数学王子15 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Ai 编码助手17 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z21 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹28 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE30 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
alphaTao32 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode