www.pudn.com > walsh_transform.rar > walsh_transform.m
I1=imread('D:\MATLAB7\toolbox\images\imdemos\lena.bmp');%读入原图像
imshow(I1);title('initial image');%显示原图像
I=double(I1);
[m,n]=size(I);
mx=max(m,n);
wal=hadamard(mx);%生成hadamard函数
[f,e]=log2(n);
I2=dec2bin(0:pow2(0.5,e)-1);
R=bin2dec(I2(:,e-1:-1:1))+1; %将列序进行二进制的倒序排列
for i=1:m
for j=1:n
wal1(i,j)=wal(i,R(j));
end
end %对hadamard的列进行列序排列
J=wal1/256*I*wal1'/256;%对图像进行二维walsh变换
figure
imshow(J);title('walsh spectrum of lena');
K=J(1:m/2,1:n/2);%截取图像的1/4
K(m,n)=0;%将图像补零至原图像大小
R=wal1'*K*wal1;%对图像进行二维walsh反变换
figure
imshow(R,[]);title('recover lena');
%计算误差
cha=I-R;
%R1=uint8(R);
%cha1=I1-R1;
mse=mean(mean(cha.^2));%mse=134.41
%mse2=mse(abs(cha1))
mse1=mse(cha)