Matlab图像小波阈值去噪时出错!代码如下,求高手解答!

totorovc 2012-05-28 07:24:14
[I,map]=imread('ao.jpg');
figure(2);
subplot(3,2,1);
imshow(I);
title('原始图象');
v=0.15;
I2=im2double(I);
J=imnoise(I2,'gaussian',v);
subplot(3,2,2);
imshow(J);
title('含噪图象');
[C,S]=wavedec2(J,3,'db4');
n=[1,2,3];
p=[0.0470964,0.0470964,0.0470964];
nc=wthcoef2('h',C,S,n,p,'h');
nc=wthcoef2('v',C,S,n,p,'h');
nc=wthcoef2('d',C,S,n,p,'h');
I3=waverec2(nc,S,'db4');
nc2=wthcoef2('h',C,S,n,p,'s');
nc2=wthcoef2('v',C,S,n,p,'s');
nc2=wthcoef2('d',C,S,n,p,'s');
I4=waverec2(nc2,S,'db4');
subplot(3,2,3);
imshow(I3);
title('硬阈值去噪后的图象');
subplot(3,2,4);
imshow(I4);
title('软阈值去噪后的图象');
%求CA3.CH3.CV3.CD3经阈值处理后的系数
for j=1:5776
T3=0.22800447;
N=5000;
if abs(C(1,j))<T3
C(1,j)=0;
else
k1=abs(C(1,j));
k2=exp(sqrt(C(1,j)*C(1,j)-T3*T3)/N);
u3=T3/(k1*k2);
C(1,j)=(1-u3)*C(1,j)+u3*sign(C(1,j))*[abs(C(1,j))-u3];
end
end
%求CH2.CV2.CD2经阈值处理后的系数
for j=5777:20059
T2=0.45600894;
N=5000;
if abs(C(1,j))<T2
C(1,j)=0;
else
k1=abs(C(1,j));
k2=exp(sqrt(C(1,j)*C(1,j)-T2*T2)/N);
u2=T2/(k1*k2);
C(1,j)=(1-u3)*C(1,j)+u3*sign(C(1,j))*[abs(C(1,j))-u3];
end
end
%求CH1.CV1.CD1经阈值处理后的系数
for j=20060:71542
T1=0.91201787;
N=5000;
if abs(C(1,j))<T1
C(1,j)=0;
else
k1=abs(C(1,j));
k2=exp(sqrt(C(1,j)*C(1,j)-T1*T1)/N);
u1=T1/(k1*k2);
C(1,j)=(1-u1)*C(1,j)+u1*sign(C(1,j))*[abs(C(1,j))-u1];
end
end
I5=waverec2(C,S,'db4');
subplot(3,2,5);
imshow(I5);
title('阈值去噪后的图象');


错误如下:
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

Error in ==> wavedec2 at 54
s = [size(x);s]; % store size

Error in ==> fangzhen4 at 12
[C,S]=wavedec2(J,3,'db4');
...全文
244 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧