【很着急】帮忙写一个matlab程序,关于图片FFT后变换加盲水印的~~~
改变原图的系数,在相位比值小于20的点上才能插入水印,根据水印的值,如果是1的话修改fGA,使得这点的相位比大于5,是0的话使得这点的相位比小于5………… 可追分,无限追分~~~求帮助!
改变原图的系数,在相位比值小于20的点上才能插入水印,根据水印的值,如果是1的话修改fGA,使得这点的相位比大于5,是0的话使得这点的相位比小于5………… 可追分,无限追分~~~求帮助!
答案:Im=imread('d:\WImg.bmp');
ImgR=double(Im(:, :, 1));
ImgG=double(Im(:,:,2));
fR=fft2(ImgR); %傅里叶变换
fG=fft2(ImgG);
fG2=reshape(fG,1,[]);
fR1=reshape(fR,1,[]);
flag1=angle(fR1)./angle(fG2);
for i0=1:W1*W2
if flag1(indexG(initPos+2*i0-2)) < 0 %indexG:密钥位置
tp(i0)=0;
else
tp(i0)=1;
end
end
water=reshape(tp,W1,W2);
subplot(2,2,4);
imshow(water);
title('提取的水印');
这是提取的~
其他:两个问题:
(1)函数名fft与matlab自带的fft函数冲突,建议改名后重新存盘
(2)最好缺两end
改后的程序:
1),stem((0:7),abs(hc(1:8)));
grid;
title('8点正三角波的幅频特性');
hd(1:8)=fft(xd(1:8));
subplot(212),stem((0:7),abs(hd(1:8)));
grid;
title('8点反三角波的幅频特性');
elseif aa==2
subplot(211),stem((0:15),xc(1:16));
title('8点正三角波补0到16点后的时间波形');
grid;
subplot(212),stem((0:15),xd(1:16));
title('8点反三角波补0到16点后的时间波形');
grid;
elseif aa==3
hc(1:16)=fft(xc(1:16));
subplot(211),stem((0:15),abs(hc(1:16)));
title('8点正三角波补0到16点后的幅频特性');
end
end
上一个:我用MATLAB做基于NCD优化的PID控制,仿真程序包括:主程序,M函数程序和Simulink子程序,主程序不明白
下一个:MATLAB中REGRESS怎么打开?