⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dctanddwt.m

📁 对比dct和dwt在图像数字水印应用中的特点
💻 M
字号:
close all;
clear all;

%%%%%%%%%%%******************************************
dat=imread('E:\watermark\use picture\lena256.bmp','bmp');    % 256*256

[m,n]=size(dat);

for i=1:m/64
    for j=1:n/64
        block(:,:,i,j)=dat((i-1)*64+1:i*64,(j-1)*64+1:j*64);
        block2(:,:,i,j)=dct2(block(:,:,i,j));
        if mod(i+j,2)==0
            block22(:,:,i,j)=block2(:,:,i,j)*1.1;
        else
            block22(:,:,i,j)=block2(:,:,i,j)/1.1;
        end
        datdc((i-1)*64+1:i*64,(j-1)*64+1:j*64)=idct2(block22(:,:,i,j));
    end
end
[a,h,v,d]=lwt2(double(dat),'bior4.4');
[m,n]=size(d);
for i=1:m/64
    for j=1:n/64
        block(:,:,i,j)=d((i-1)*64+1:i*64,(j-1)*64+1:j*64);
        if mod(i+j,2)==0
            block33(:,:,i,j)=block(:,:,i,j)*1.5;
        else
            block33(:,:,i,j)=block(:,:,i,j)/1.5;
        end
        dd((i-1)*64+1:i*64,(j-1)*64+1:j*64)=block33(:,:,i,j);
        
        block(:,:,i,j)=h((i-1)*64+1:i*64,(j-1)*64+1:j*64);
        if mod(i+j,2)==0
            block33(:,:,i,j)=block(:,:,i,j)*2;
        else
            block33(:,:,i,j)=block(:,:,i,j)/2;
        end       
        hh((i-1)*64+1:i*64,(j-1)*64+1:j*64)=block33(:,:,i,j);
    end
end
datdw=ilwt2(a,h,v,double(dd),'bior4.4');
datdw2=ilwt2(a,double(hh),v,d,'bior4.4');

figure(1);
subplot(2,2,1);
imagesc(dat);
axis image;
title('original');
colormap(gray);                  % 用dct和fft的方法,需要先将原图分块,否则直流分量会很大,
                                 % 但是这样就会在反变换之后产生块噪声,因为各块系数在整图作用中被修改的程度不同
                                 % 解决方法:取中频分量进行水印的修改和嵌入工作,但是由于实际中可能遇到的几何攻击变
                                 % 换,例如旋转攻击,在整体旋转后我们在检测前需要给待检测图像进行反向旋转,并且无法
                                 % 精确还原到原始位置,这时对于整幅图像其实频域的能量分布已经发生变化,检测时的分块
                                 % 和dct(fft)操作后系数值也会有较大改变,无法达到优化效果。
                                 % 如果用小波变换,通过一对小波基构造一个高通滤波器和一个低通滤波器,分别提取出LL
                                 % ,LH,HL,HH的分量,就可以直接选择对应的频率块进行嵌入和修改,省去了fft
                                 % 中选择中频分量点的步骤,同时,在经过几何攻击之后,由于保留了大部分的低频和细节信
                                 % 息,因此只要得到近似的图像位置,无需恢复到原始角度,就可以提取出90%以上的嵌入完整
                                 % 信息,如果再加上纠错机制,就可以得到优化后的水印提取图像。
subplot(2,2,2);
imagesc(datdc);
axis image;
title('dct');
subplot(2,2,3);
imagesc(datdw);
axis image;
title('dwt use hh frequency');
subplot(2,2,4);
imagesc(datdw2);
axis image;
title('dwt use hh frequency');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -