有没有大佬看看,代码哪里出问题了,急急急!!!
本人没学过matlab遇到好多问题,如果有热心的大佬愿意解答可以私信我,有偿!
问题一:用差不多的代码分别处理matlab自带图片和我自己的图片,在含噪图像那一步就结果不同了。
- 处理matlab自带图片的代码
>> load facets;
>> subplot(2,2,1);
>> image(X);
>> colormap(map);
>> xlabel('原始图像');
>> axis square;
>> init=2055615866;
>> randn('seed',init);
>> x = X + 50*randn(size(X));
>> subplot(2,2,2);image(x);
>> colormap(map);
>> xlabel('含噪声图像');
>> axis square;
- 处理我自己用的图片的代码
>> load facets;
>> X=imread('cat.jpg');
>> subplot(2,2,1);
>> image(X);
>> colormap(map);
>> xlabel('原始图像');
>> axis square;
%产生含噪声图像
>> init=2055615866;
>> randn('seed',init);
>> x = X + 50*randn(size(X));
>> subplot(2,2,2);image(x);
>> colormap(map);
>> xlabel('含噪声图像');
>> axis square;
为什么p2变成这个样子?
问题2:进行第二次去噪后的图像变成了很乱的样子,就像音频的一样
代码(接上面的原始图像代码)
%图像的去噪处理
%用小波函数coif3对x进行2层小波分解
>> [c,s] = wavedec2(x,2,'coif3');
%提取小波分解中第一层的低频图像,即实现了低通滤波去噪
%设置尺度向量
>> n = [1,2];
%设置阈值向量p
>> p = [10.12,23.28];
%对三个方向高频系数进行阈值处理
>> nc = wthcoef2('h',c,s,n,p,'s');
>> nc = wthcoef2('v',nc,s,n,p,'s');
%对新的小波分解结构[c,s]进行重构
>> x1 = waverec2(nc,s,'coif3');
>> subplot(2,2,3);image(x1);
>> colormap(map);
>> xlabel('第一次去噪图像');
>> axis square;
>%对nc再次进行滤波去噪
>> x2 = wthcoef2('v',nc,s,n,p,'s');
>> subplot(2,2,4);image(x2);
>>colormap(map);
>> xlabel('第二次去噪图像');
>> axis square;
第二次去噪的图像没保存,大概是这样
白色线条是彩色的,这个不重要,就是错的离谱!!!
网上做出来的结果是这样