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)