dct.m

来自「一个用于matlab例程加入数字水印的程序,非常有用.」· M 代码 · 共 53 行

M
53 行
字号
clear
close all
W=imread('watermark32.bmp');
W=im2bw(W,0.5);
figure,imshow(W) ,title('origianl watermark') ;
n=32;m=256;k=8;
key1=2;key2=3;
I=imread('lena.bmp');
figure,imshow (I) ,title('origianl image') ;
I=double(I);
J=zeros(256);

%嵌入水印
for p=1:n
  for q=1:n
    x =(p-1)*k + 1;
    y =(q-1)*k + 1;
    block =I( x:x+k-1,y:y+k-1) ;
    block=dct2(block);
    if W(p,q)==0
        w=-1;
    else
        w=1;
    end
    block(2,3) =block(2,3)*(1+w*0.5);
    block=idct2(block) ;
    J(x:x+k-1,y:y+k-1)=block;
  end
end
%显示嵌入水印的图像
figure, imshow (J,[]),title( 'watermarked image');
%水印提取

for p=1:n
  for q=1:n
    x =(p-1)*k + 1;
    y =(q-1)*k + 1;
    block1 =I( x:x+k-1,y:y+k-1) ;
    block2 =J( x:x+k-1,y:y+k-1) ;
    block1=dct2(block1);
    block2=dct2(block2);
   s=block2(2,3)/block1(2,3);
    if s>1
        W1(p,q)=1;
    else
        W1(p,q)=0;
    end

  end
end
%显示提取的水印
W1=logical(W1);
figure,imshow(W1);title( 'extracted watermark ');

⌨️ 快捷键说明

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