CK=}f ×: x+K 一1 y- Y+K 一 1) BLOCK=dct2 (BL0CK) : If(P , q)= =0 a=一1: else a:1: end BL0CK=BL0CK$(1+a$0 03) : BL0CK=idct2(BL0CK) I(×: X+K 一1y: Y+K 一 1): BLOCK ; end end % 显示嵌入水印后的图像 subplot(3 ,2, 3) imshow(1) : title( 嵌入水印后的图像): ..页眉.. 页脚. imwrite(I , watermarked . bmp , bmp ): %从嵌八水印的图像中提取水印 I: imread( mona , bmp) J: imread( watermarked bmp , bmp ) forP=1 :N forq=1 :N X=(P 一 1)女 K+1 : Y=(q 一 1)}K+1 : BLOCK1=l( ×:X 4-K 一1,v: Y+K 一 1): BLOCK2=J( ×: X+K 一1,y: Y+K 一 1): BL0CK1=idct2(BL0CK1) : BL0CK2=idct2(BL0CK2) : a: BLOCK2(1 , 1)/ BL0CK1(1 , 1)一1: ifa<0 W (P, q):O: else W (P, q)=1 end end end % 显示提取的水印 subplot(3 ,2, 4) ..页眉.. 页脚. imshow(W ): title( 从含水印图像中提取的水印); 仿真结果如下: 4. 结果分析嵌入水印信息后, 原图与嵌入水印信息后的图像在视觉效果上没有明显分别, 用肉眼几乎分辨不出, 这说明这种算法充分利用人眼的视觉特性, 嵌入水印后, 水印的不可见性相当好, 图像在嵌入水印前后视觉效果改变不大, 不影响图像的正常使用。