✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
根据离散分数傅里叶变换(DFRFT),提出了一种基于分数傅里叶变换的图像数字水印方案.分数傅里叶变换具有空域和频城双城表达能力,可以对原始图像和水印信号分别进行不同阶次的分数傅里叶变换以增强水印安全性.将水印信号的分数傅里叶谱叠加在原始图像在视觉上的次重要分量上.在JPEG压缩,图像旋转,高斯低通滤波的攻击方式下,对水印图像进行了鲁棒性分析,实验表明该算法具有良好的鲁棒性.
⛄ 部分代码
function Faf = frft(f, a)
% The fast Fractional Fourier Transform
% input: f = samples of the signal
% a = fractional power
% output: Faf = fast Fractional Fourier transform
% H.M. Ozaktas, M.A. Kutay, and G. Bozdagi.
% [i]Digital computation of the fractional Fourier transform.[/i]
% IEEE Trans. Sig. Proc., 44:2141--2150, 1996.
narginchk(2, 2);
f = f(:);
N = length(f);
shft = rem((0:N-1)+fix(N/2),N)+1;
sN = sqrt(N);
a = mod(a,4);
% do special cases
if (a==0), Faf = f; return; end;
if (a==2), Faf = flipud(f); return; end;
if (a==1), Faf(shft,1) = fft(f(shft))/sN; return; end
if (a==3), Faf(shft,1) = ifft(f(shft))*sN; return; end
% reduce to interval 0.5 < a < 1.5
if (a>2.0), a = a-2; f = flipud(f); end
if (a>1.5), a = a-1; f(shft,1) = fft(f(shft))/sN; end
if (a<0.5), a = a+1; f(shft,1) = ifft(f(shft))*sN; end
% the general case for 0.5 < a < 1.5
alpha = a*pi/2;
tana2 = tan(alpha/2);
sina = sin(alpha);
f = [zeros(N-1,1) ; interp(f) ; zeros(N-1,1)];
% chirp premultiplication
chrp = exp(-i*pi/N*tana2/4*(-2*N+2:2*N-2)'.^2);
f = chrp.*f;
% chirp convolution
c = pi/N/sina/4;
Faf = fconv(exp(i*c*(-(4*N-4):4*N-4)'.^2),f);
Faf = Faf(4*N-3:8*N-7)*sqrt(c/pi);
% chirp post multiplication
Faf = chrp.*Faf;
% normalizing constant
Faf = exp(-i*(1-a)*pi/4)*Faf(N:2:end-N+1);
end
⛄ 运行结果
⛄ 参考文献
[1] 刘振国, 胡亚平, 陈炯聪,等. 基于双层优化的微电网系统规划设计方法[J]. 电力系统保护与控制, 2015, 43(8):10.
[2] 马婷. 一种基于Wavelet-SVD数字水印算法的MATLAB实现[J]. 科技信息, 2012(31):2.
[3] 何泉, 田瑞卿, 王彦敏. 分数傅里叶域图像数字水印方案[J]. 计算机工程与设计, 2006, 27(24):3.
[4] 陶然, 孟祥意, 王超兰,等. 一种基于分数阶傅里叶域滤波器组的数字水印技术:, CN101383042[P].