• 大小: 226KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: matlab  图像加密  

资源简介

利用分数阶傅里叶变换的方法,通过迭代相位将加密图像替换为所需要的相位达到加密效果,上传压缩包包括代码和图片,不需要任何修改即可运行。

资源截图

代码片段和文件信息

function y = Disfrft(fap)
%
% Computes discrete fractional Fourier transform
% of order a of vector x
% p (optional) is order of approximation default N/2
%
%
 
N = length(f); even = ~rem(N2);
shft = rem((0:N-1) + fix(N/2)N)+1;
f = f(:);
if (nargin == 2) p = N/2; end;
p = min(max(2p)N-1);
E = dFRFT(Np);
y(shft1) = E*(exp(-j*pi/2*a*([0:N-2 N-1+even])).‘ .*(E‘*f(shft)));
 
function E = dFRFT(Np)
%
% function E = dFRFT(Nap) returns the NxN eigenvectors of the 
% Fourier transform matrix
% The optional argument p is the order of approximation
 
global E_saved p_saved
 
if (length(E_saved) ~= N | p_saved ~= p)
    E = make_E(Np);
    E_saved = E; p_saved = p;
else
    E = E_saved; 
end;
 
function E = make_E(Np)
 
% Returns sorted eigenvectors and eigenvalues of corresponding vectors
 
% Construct matrix H use approx order ord
 
d2 = [1 -2 1]; d_p = 1; s = 0; st = zeros(1N);
for k = 1:p/2
    d_p = conv(d2d_p);
    st([N-k+1:N1:k+1]) = d_p; st(1) = 0;
    temp = [1:k;1:k]; temp = temp(:)‘./[1:2*k];
    s = s + (-1)^(k-1)*prod(temp)*2*st;        
end;
 
% H = circulant + diagonal
 
col = (0:N-1)‘; row = (N:-1:1);
idx = col(:ones(N1)) + row(ones(N1):);
st = [s(N:-1:2).‘;s(:)];
H = st(idx) + diag(real(fft(s)));
 
% Construct transformation matrix V
 
r = floor(N/2);
even = ~rem(N2);
V1 = (eye(N-1) + flipud(eye(N-1))) / sqrt(2);
V1(N-r:endN-r:end) = -V1(N-r:endN-r:end);
if (even) V1(rr) = 1; end
V = eye(N); V(2:N2:N) = V1;
 
% Compute eigenvectors
 
VHV = V*H*V‘;
E = zeros(N);
Ev = VHV(1:r+11:r+1);           Od = VHV(r+2:Nr+2:N);
[veee] = eig(Ev);               [voeo] = eig(Od); 
 
%
% malab eig returns sorted eigenvalues
% if different routine gives unsorted eigvals then sort first
%
% [dinde] = sort(diag(ee));      [dindo] = sort(diag(eo));
% ve = ve(:inde‘);               vo = vo(:indo‘);
%
 
E(1:r+11:r+1) = fliplr(ve);     E(r+2:Nr+2:N) = fliplr(vo);
E = V*E;
 
% shuffle eigenvectors
 
ind = [1:r+1;r+2:2*r+2]; ind = ind(:);
if (even) ind([NN+2]) = []; else ind(N+1) = []; end
E = E(:ind‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      56243  2005-12-05 09:43  相位迭代加密\cameraman.GIF

     文件       2146  2016-04-29 19:14  相位迭代加密\Disfrft.m

     文件        367  2016-04-29 19:50  相位迭代加密\frft2d.m

     文件       1473  2017-05-11 21:15  相位迭代加密\GSfenxi.m

     文件       1368  2017-05-12 10:32  相位迭代加密\jieshubianhuan.m

     文件      66614  2004-03-23 21:24  相位迭代加密\lena.bmp

     文件      80718  2005-12-02 10:07  相位迭代加密\monkey.GIF

     文件        329  2017-06-13 21:05  相位迭代加密\Psnr1.m

     文件        688  2017-05-09 19:38  相位迭代加密\similar.m

     文件       1474  2017-06-03 17:22  相位迭代加密\Untitled23.m

     文件       1040  2017-05-11 21:11  相位迭代加密\wanshan.m

     文件      43669  2017-06-13 13:11  相位迭代加密\zzy.jpg

     目录          0  2018-04-19 13:25  相位迭代加密

----------- ---------  ---------- -----  ----

               256129                    13


评论

共有 条评论