[已答复] 有大佬知道基于小波变换的图像去噪程序为啥子出不来嘛?麻烦各位看一下吧,孩子在写毕业论文。

[复制链接]
Tanyanyyds 发表于 2021-5-26 03:35:36
clear;
X=imread('F:\matlab2019B\Aworkspace2019B\1.bmp');
subplot(221);image(X);
title('原始图像');
axis square;
init=2055615866;randn('seed',init);
X=double(X);
x=X+8*randn(size(X));
subplot(222),image(X);
title('含噪图像');
axis square;
x=x(:,1);
[c,s]=wavedec(x,2,'sym4');
a1=wrcoef2('a',c,s,'sym4');
a1=double(a1);
subplot(223);image(a1);
title('一次去噪');
axis square;
a2=wrcoef2('a',c,s,'sym4',2);
subplot(224);image(a2);
title('二次去噪');
axis square;


下面是一直错的bug,我一直不知道哪里错了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

2 条回复


Tanyanyyds 发表于 2021-5-26 03:38:35
错误是a1=wrcoef2('a',c,s,'sym4')这一句

lyqmath 发表于 2021-5-28 15:13:16
可以

参考书籍《计算机视觉与深度学习实战——以MATLAB、Python 为工具》[刘衍琦等]

使用一个比较简单的方法,如下



  1. clear all; clc; close all;
  2. X=imread('cameraman.tif');
  3. subplot(131);imshow(X,[]);
  4. title('原始图像');
  5. axis square;
  6. init=2055615866;randn('seed',init);
  7. X=double(X);
  8. x=X+8*randn(size(X));
  9. sz=size(x);
  10. subplot(132),imshow(x,[]);
  11. title('含噪图像');
  12. axis square;
  13. s=double(x(:)');
  14. [c,l]=wavedec(s,3,'sym4');
  15. a3=appcoef(c,l,'sym4',3);
  16. d3=detcoef(c,l,3);
  17. d2=detcoef(c,l,2);
  18. d1=detcoef(c,l,1);
  19. N1 = 10;
  20. sigma1=median(abs(d1))/0.5;     
  21. thr1=(sigma1*sqrt(2*(log10(N1))))/(log10(2));
  22. %进行硬阈值处理
  23. ythard1=wthresh(d1,'h',thr1);
  24. sigma2=median(abs(d2))/0.5;
  25. thr2=(sigma2*sqrt(2*(log10(N1))))/(log10(3));
  26. ythard2=wthresh(d2,'h',thr2);
  27. sigma3=median(abs(d3))/0.5;
  28. thr3=(sigma3*sqrt(2*(log10(N1))))/(log10(4));
  29. ythard3=wthresh(d3,'h',thr3);
  30. c2=[a3 ythard3 ythard2 ythard1];
  31. s3=waverec(c2,l,'sym4');
  32. s3=reshape(s3,sz(1),sz(2));
  33. s3=im2uint8(mat2gray(s3));
  34. subplot(133),imshow(s3,[]);
  35. title('小波去噪图像');
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表