
%% 小波去噪
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
[filename ,pathname]=...
uigetfile({'*.bmp';'*.tif';'*.jpg';},'选择图片'); %选择图片路径
str=[pathname filename]; % 合成路径+文件名
im = imread(str); % 读图
im = imnoise(im,'gaussian',0,1e-3); % 原图像 + 白噪声
[thr,sorh,keepapp] = ddencmp_thr('den','wv',im);
% ‘gb1’表示使用全局门限进行去噪
% 'sym4'小波变换函数
N = 4; % 小波变换的尺度
im1 = wdencmp('gbl',im,'sym4',N,thr,sorh,keepapp); % 小波滤波
figure,
subplot(121),imshow(im);title('原始图像')
colormap(jet) % 颜色
shading interp % 消隐
subplot(122),imshow(im1,[]);title('小波滤波图像')
colormap(jet) % 颜色
shading interp % 消隐
%% 小波包去噪
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
im = imread('brain.bmp'); % 读图
im = imnoise(im,'gaussian',0,1e-3); % 原图像 + 白噪声
[thr,sorh,keepapp] = ddencmp_thr('den','wp',im);
im1 = wpdencmp(im,sorh,4,'sym4','threshold',thr,keepapp);
figure,
subplot(121),imshow(im);title('原始图像')
colormap(jet) % 颜色
shading interp % 消隐
subplot(122),imshow(im1,[]);title('小波包滤波图像')
colormap(jet) % 颜色
shading interp % 消隐
function [thr,sorh,keepapp] = ddencmp_thr(dorc,worwp,x)
% 函数输入:
% dorc: 'den'还是‘cmp’
% worwp: 'wv'小波还是‘wp’小波包
% x:输入图像二维矩阵
% 函数输出:
% thr:阈值
% sorh:软阈值‘s’还是硬阈值'h'
% keepapp:常数1;
% 默认值
keepapp = 1; % keepapp=1时,表示保持低频图像系数不变,keepapp=0时,表示可以改变。
if isequal(dorc,'den') && isequal(worwp,'wv')
sorh = 's'; % 软阈值门限
else
sorh = 'h'; % 硬阈值门限
end
% 最著名的阈值形式
n = numel(x); % 一般为65536
% nominal threshold.
switch dorc
case 'den'
switch worwp
case 'wv' , thr = sqrt(2*log(n)); % wavelets.
case 'wp' , thr = sqrt(2*log(n*log(n)/log(2))); % wavelet packets.
end
case 'cmp' , thr = 1;
end
版权声明:本文为m0_38127487原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。