⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhangyhsan.m

📁 这么代码是用Matlab编写的
💻 M
字号:
clear all;

Ximage=double(imread('D:\work\Lena.jpg'));
Yimage=double(imread('D:\work\Monkey.jpg'));
Zimage=double(imread('D:\work\house.jpg'));
Ih=size(Ximage,1);%图像的长度
Iw=size(Ximage,2);%图像的宽度
Image=double(zeros(size(Ximage)));
Image=Zimage;
Dimage=Image;
s=1;
renewing=0;
hiding=0;
                            %                     隐                   藏
key1=4.0;
key2=0.1;

for(t=1:s)
figure(t)
subplot(4,2,1)
imshow(Ximage,[]);;%显示图像
title('待隐藏图像1');
Ximage=uint8(Ximage);
figure(t)
subplot(4,2,2)
imhist(Ximage);%显示图像数据的柱状图
title('待隐藏图像1的直方图');
Ximage=double(Ximage);

figure(t)
subplot(4,2,3)
imshow(Yimage,[]);
title('待隐藏图像2');
Yimage=uint8(Yimage);
figure(t)
subplot(4,2,4)
imhist(Yimage);
title('待隐藏图像2的直方图');
Yimage=double(Yimage);

figure(t)
subplot(4,2,5)
imshow(Image,[])
title('模板图像');
Image=uint8(Image);
figure(t)
subplot(4,2,6)
imhist(Image);
title('模板图像的的直方图');
Image=double(Image);

% key2=(key1*key2*(1-key2))/2;
for(i=1:Ih)
        for(j=1:2:Iw)
          % key2=key1*key2*(1-key2);
% %             key2=1-key1*(key2*key2);
%            if( key2< 0.0001)
                Image(i,j)=mod((key2)*(Ximage(i,j)-Image(i,j))+Image(i,j),256);
                Image(i,j+1)=mod((key2)*(Yimage(i,j+1)-Image(i,j+1))+Image(i,j+1),256);
              
%             else
%                 Image(i,j)=mod(key2^2*(Image(i,j)-Yimage(i,j))+key2*(Yimage(i,j)-Zimage(i,j))+Zimage(i,j),256);
%              end
        end
        
end

figure(t)
subplot(4,2,7)
imshow(Image,[]);
title('结果图像');
Image=uint8(Image);
figure(t)
subplot(4,2,8)
imhist(Image);
title('结果图像的直方图');
Image=double(Image);
Dimage=Ximage;
Ximage=Image;
Yimage=Image;
if(t<s)
Image=Zimage;
end

end


for(i=1:Ih)
        for(j=1:Iw)
            if(Image(i,j)~=Zimage(i,j))
                hiding=hiding+(Image(i,j)-Zimage(i,j))^2;
            end
        end
    end
    
   hiding=hiding/(Ih*Iw);
   hiding=hiding^(1/2);
                 %                          恢                               复
% key1=4;
key2=0.1;

for(t=1:s)
Ximage=double(zeros(size(Image)));
Yimage=double(zeros(size(Image)));
figure(t+s)
subplot(4,2,1)
imshow(Image,[]);
title('结果图像');
Image=uint8(Image);
figure(t+s)
subplot(4,2,2)
imhist(Image);
title('结果图像的直方图');
Image=double(Image);
figure(t+s)
subplot(4,2,3)
imshow(Zimage,[]);
title('模板图像');
Zimage=uint8(Zimage);
figure(t+s)
subplot(4,2,4)
imhist(Zimage);
title('模板图像的直方图');
Zimage=double(Zimage);



key=0; 

for(i=1:Ih)
       for(j=1:2:Iw-1)
%             key2=1-key1*(key2*key2);
            %key2=key1*key2*(1-key2);
%             if( key2< 0.001)
                key=1/key2;
                Ximage(i,j)=mod(key*(Image(i,j)-Zimage(i,j))+Zimage(i,j),256);
                Image(i,j)=Ximage(i,j);
%                 Ximage(i,j+1)=Ximage(i,j);
                
                Yimage(i,j+1)=mod(key*(Image(i,j+1)-Zimage(i,j+1))+Zimage(i,j+1),256);
                Image(i,j+1)=Yimage(i,j+1);
%                 Yimage(i,j)=Yimage(i,j+1);
%             else
%                 key=1/key2;
%                 Image(i,j)=mod(key^2*(Image(i,j)-Zimage(i,j))+key*(Zimage(i,j)-Yimage(i,j))+Yimage(i,j),256);
%             end
         
        end
      
end
for(i=1:Ih)
for(j=2:2:Iw-2)
    Ximage( i,j)=0.5*(Ximage( i,j-1)+Ximage(i,j+1));
    Yimage( i,j+1)=0.5*(Yimage( i,j)+Yimage( i,j+2));
end
end
% Image=Ximage+Yimage;

figure(t+s)
subplot(4,2,5)
imshow(Yimage,[])
title('恢复图像2');
Yimage=uint8(Yimage);
figure(t+s)
subplot(4,2,6)
imhist(Yimage);
title('恢复图像2的的直方图');
Yimage=double(Yimage);

figure(t+s)
subplot(4,2,7)
imshow(Ximage,[]);
title('恢复图像1');
Ximage=uint8(Ximage);
figure(t+s)
subplot(4,2,8)
imhist(Ximage);
title('恢复图像1的直方图');
Ximage=double(Ximage);

end


for(i=1:Ih)
        for(j=1:Iw)
            if(Image(i,j)~=Ximage(i,j))
                renewing=renewing+(Image(i,j)-Ximage(i,j))^2;
            end
        end
    end
    
   renewing=renewing/(Ih*Iw);
   renewing=renewing^(1/2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -