图像数字水印技术

学习《MATLAB图像处理—能力提高与应用案例》第九天。

图像水印处理算法分成空域水印处理算法和变换域水印处理算法两类,主要学习了变换域水印处理算法。
实现过程:
    图像变换到变换域嵌入水印信息反变换输出空域图像
              ↓↓                          
       DCT变换/               嵌入算法
   离散傅里叶变换/       di = di(1+Awi) 
    离散小波变换          D={di},i=1,...,k 为DCT系数的前k个最大分量表示;A为尺度因子,用以控制水印的添加强度。
本例中通过离散余弦变换实现:
cda0 = blkproc(a0,[8,8],'dct2');

嵌入算法实现如下:

for i=1:32  % i=1:32
    for j=1:32  % j=1:32
        x=(i-1)*8;y=(j-1)*8;
        if mark(i,j)==1
        k=k1;
        else
        k=k2; 
        end
    cda1(x+1,y+8)=cda0(x+1,y+8)+alpha*k(1);
    cda1(x+2,y+7)=cda0(x+2,y+7)+alpha*k(2);
    cda1(x+3,y+6)=cda0(x+3,y+6)+alpha*k(3);
    cda1(x+4,y+5)=cda0(x+4,y+5)+alpha*k(4);
    cda1(x+5,y+4)=cda0(x+5,y+4)+alpha*k(5);
    cda1(x+6,y+3)=cda0(x+6,y+3)+alpha*k(6);
    cda1(x+7,y+2)=cda0(x+7,y+2)+alpha*k(7);
    cda1(x+8,y+1)=cda0(x+8,y+1)+alpha*k(8);
   
    end
end

反变换输出空域图像:
w_img = blkproc(cda1,[8,8],'idct2'); 
这本书的程序中,加入了测试鲁棒性程序。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭