?? image attack and encryption.m
字號:
%《利用隨機位相編碼技術對光學圖像進行保密》論文的試驗模擬。
clear all;
close all;
clc;
%讀取原圖像,其大小為[128,128],并顯示
I=imread('test.tif');
%I=imcrop(I,[20 20 127 127]);
figure;imshow(I);
title('Originadl Image');
A=double(I);
%從key1.dat中獲得密鑰mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
%key1=repmat(0.8,[128 128]);
r1=exp(i*2*pi*key1);
%從key2.dat中獲得密鑰mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%產生加密圖像B
B=A.*r1;%2、通過mask1
B1=fft2(B);%3、通過透鏡1
B2=B1.*r2;%4、通過mask2
B3=ifft2(B2);%5、通過透鏡2
A_show=mat2gray(abs(B3));
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image');
%把加密后的圖像保存
fid=fopen('encrption1.dat','wb');
fwrite(fid,real(B3),'double');%B3的存實部
fclose(fid);
fid=fopen('encrption2.dat','wb');
fwrite(fid,imag(B3),'double');%B3的存虛部
fclose(fid);
%----------------------------------------------------------------
%從key1.dat中獲得密鑰mask1
%fid=fopen('key1.dat','rb');
%key1=fread(fid,[128,128],'double');
%fclose(fid);
key1=exp(-i*2*pi*key1);
%從key2.dat中獲得密鑰mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
key2=exp(-i*2*pi*key2);
%產生解密圖像AA
AA=fft2(B3); %通過透鏡1
AA=AA.*key2; %通過mask2的共軛
AA=ifft2(AA); %通過透鏡2
AA=AA.*key1; %通過mask1的共軛
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
%產生相位并存儲
r=rand(128,128);
fid=fopen('r.dat','wb');
fwrite(fid,r,'double');
fclose(fid);
%The second
%讀取原圖像,其大小為[128,128],并顯示
I=imread('rice.tif');
I=imcrop(I,[20 20 127 127]);
figure;imshow(I);
title('Originadl Image');
A=double(I);
%從key1.dat中獲得密鑰mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
r1=exp(i*2*pi*key1);
%從key2.dat中獲得密鑰mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%產生加密圖像B
B=A.*r1;%2、通過mask1
B1=fft2(B);%3、通過透鏡1
B2=B1.*r2;%4、通過mask2
B3=ifft2(B2);%5、通過透鏡2
A_show=mat2gray(abs(B3));%產生加密圖像A
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image')
%----------------------------------------------------
%從rr1.dat中獲得密鑰rr1
fid=fopen('rr1.dat','rb');
rc1=fread(fid,[128,128],'double');
fclose(fid);
fid=fopen('ir1.dat','rb');
ic1=fread(fid,[128,128],'double');
fclose(fid);
co1=rc1+i*ic1;
cod1=conj(co1);
%從rr2.dat中獲得密鑰rr2
fid=fopen('rr2.dat','rb');
rc2=fread(fid,[128,128],'double');
fclose(fid);
fid=fopen('ir2.dat','rb');
ic2=fread(fid,[128,128],'double');
fclose(fid);
co2=rc2+i*ic2;
cod2=co2;
%產生解密圖像AA
AA=fft2(B3); %通過透鏡1
AA=AA.*cod2; %通過rr2的共軛
AA=ifft2(AA); %通過透鏡2
AA=AA.*cod1; %通過rr1的共軛
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
clear all;
close all;
clc;
%讀取原圖像,其大小為[128,128],并顯示
I=imread('test.tif');
figure;imshow(I);
title('Originadl Image');
A=double(I);
%從key1.dat中獲得密鑰mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
r1=exp(i*2*pi*key1);
%從key2.dat中獲得密鑰mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
r2=exp(i*2*pi*key2);
%產生加密圖像B
B=A.*r1;%2、通過mask1
B1=fft2(B);%3、通過透鏡1
B2=B1.*r2;%4、通過mask2
B3=ifft2(B2);%5、通過透鏡2
A_show=mat2gray(abs(B3));%產生加密圖像A
figure;imshow(A_show);
%figure;imshow(real(B));
title('Encrypted Image');
%把加密后的圖像保存
fid=fopen('encrption.dat','wb');
fwrite(fid,B3,'double');
fclose(fid);
%----------------------------------------------------------------
%從key1.dat中獲得密鑰mask1
fid=fopen('key1.dat','rb');
key1=fread(fid,[128,128],'double');
fclose(fid);
key1=exp(-i*2*pi*key1);
%從key2.dat中獲得密鑰mask1
fid=fopen('key2.dat','rb');
key2=fread(fid,[128,128],'double');
fclose(fid);
key2=exp(-i*2*pi*key2);
%產生解密圖像AA
AA=fft2(B3);%2、通過透鏡1
AA=AA.*key2;%3、通過mask2的共軛
AA=ifft2(AA);%4、通過透鏡2
AA=AA.*key1;%5、通過mask1的共軛
AA_show=mat2gray(real(AA));
%AA_show=real(AA);
figure;imshow(AA_show);
title('Deciphered Image');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -