其他分享
首页 > 其他分享> > 【图像去噪】基于小波阈值实现图像去噪matlab代码

【图像去噪】基于小波阈值实现图像去噪matlab代码

作者:互联网

 1 简介

针对一些混合噪声在图像处理过程中存在的问题及经典的图像去噪算法进行分析,以小变换为基础,提出一种小波阈值函数构建的图像去噪算法.研究过程以加性高斯和乘性斑点两种图像噪声的模型构建为基础,找出图像噪声出现概率的分布函数是区分和有效控制噪声的前提条件;通过对小波阈值去噪的原理进行分析,明确小波阈值去噪的小波频率分解,构建小波阈值函数及计算函数,重构图像三个关键流程;通过对硬阈值,软阈值和半软半硬阈值三种图像去噪算法进行分析,找出三种算法中存在的关键问题,提出在阈值处具有连续性,阈值函数具有线性,阈值函数具有可微可导性,计算的阈值结果在预估阈值区域具有平滑过度性,是获取最佳阈值计算结果的四个重要条件.针对阈值函数的构建,采用MATLAB仿真实验,对硬阈值算法,软阈值算法和本文阈值算法进行线性处理后的输出结果统计;以三幅实验图像为对象,对硬阈值算法,半软半硬阈值算法和本文提出的算法进行去噪效果统计;并根据图像去噪的主要目的所在,对采用的三种算法进行图像去噪后,进行图像边缘特征提取实验.实现结果表明:本文算法中构建的阈值函数,在理想阈值和预估阈值相等处都具有连续性,所确定的小波平缓系数,起到较好的平滑作用,且有助于求导计算.

2 部分代码

clc
clear all
close all
I=imread('1.jpg');%读入图像的值为无符号型unit8(),进行矩阵操作前必须先转换为矩阵运算所支持的double()双精度型。
x1=rgb2gray(I);
x1=imresize(x1,[1824,1960]);
figure(1);
subplot(2,3,1)
imshow(I);
title('原图');
% [Sh00]=Soft(h00,t);
[Sh01]=Soft(h01,t);
[Sh10]=Soft(h10,t);
[Sh11]=Soft(h11,t);
%图像重构
[S1]=revers1(h00,Sh01);
[S2]=revers1(Sh10,Sh11);
[S3]=revers1(S1',S2');
%软阈值去噪后的信噪比
SNRS=10*log(sum(x1.^2)/(sum((S3-x1).^2)));
y2=uint8(S3);
subplot(2,3,5)
imshow(y2);
title(['软阈值去噪,信噪比=',num2str(SNRS)]);

% %% 半软半硬阈值去噪
% % [HSh00]=HardSoft(h00,t);
% [HSh01]=HardSoft(h01,t);
% [HSh10]=HardSoft(h10,t);
% [HSh11]=HardSoft(h11,t);
% %图像重构
% [HS1]=revers1(h00,HSh01);
% [HS2]=revers1(HSh10,HSh11);
% [HS3]=revers1(HS1',HS2');
% %半软半硬阈值去噪后的信噪比
% SNRHS=10*log(sum(x1.^2)/(sum((HS3-x1).^2)));
% y3=uint8(HS3);
% subplot(2,3,5)
% imshow(y3);
% title(['半软半硬阈值去噪,信噪比=',num2str(SNRHS)]);

%% DCT去噪
%DCT变换
Y=dct2(x2); 
[m,n]=size(x1);
I=zeros(m,n);
%高频屏蔽
I(1:m/3,1:n/3)=1; 
Ydct=Y.*I;
%逆DCT变换
Y=double(idct2(Ydct)); 
SNRDCT=10*log(sum(x1.^2)/(sum((Y-x1).^2)));
%结果输出
subplot(236);
imshow(uint8(Y));
title(['离散余弦变换去噪,信噪比=',num2str(SNRDCT)]);

3 仿真结果

4 参考文献

[1]万庄姝等. "一种小波阈值函数构建的图像去噪算法研究." 现代计算机 3(2021):7.​

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页

标签:图像去噪,阈值,sum,于小波,revers1,算法,matlab,x1
来源: https://blog.csdn.net/qq_59747472/article/details/122213223