当前位置:编程学习 > Matlab >>

【很着急】帮忙写一个matlab程序,关于图片FFT后变换加盲水印的~~~

改变原图的系数,在相位比值小于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怎么打开?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,