基于MATLAB的DCT域数字图像水印的实现.ppt

基于MATLAB的DCT域数字图像水印的实现.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种基于MATLAB的DCT域数字图像水印的实现 3 水印的嵌入与提取原理: 4 一种DCT域数字水印的具体算法: 实现水印的嵌入,具体方法如下: (1)读取原始图像和黑白水印图像到二维数组M与W; (2)将原始图像M分割为互不覆盖的图像块block(x,y),1x,y8,对block(x,y)进行DCT变换,得到block_dct (x,y); (3)取黑白水印图像中的一个元素W(p,q)嵌入原始图像块的低频系数中; (4)对嵌入水印信息后的图像块block_dct(x,y)进行逆DCT变换; (5)合并图像块,得到嵌入黑白水印后的图像。 水印提取过程为: 整个水印算法经Matlab实现运行的程序如下: 附图 1数字水印的特征: 不可感知性。数字水印的嵌入不应使原始数据发生可感知的改变,也不能使被保护数据在质量上发生可以感觉到的失真。 鲁棒性。生成的水印应当具有经受各种常用的信号处理、压缩和解压及抗攻击的能 力。鲁棒性描述了水印对攻击的抵抗能力, 通常用比特差错率或检验错误来度量。 安全性。数字水印应该难以被伪造或者加工,并且未经授权的个体不得阅读和修改水印。 可证明性。允许对媒体添加水印, 并能证明其存在性。 无歧义性。恢复出的水印对水印判决结果能够表明版权的惟一。 2基于DCT域的数字图像水印的基本原理 离散余弦变换(Discrete Cosine Transform)简称为DCT,是一种频域变换, 计算速度较快, 很适合于做图像转换、压缩和随机信号处理等方面。 DCT变换的基本思路是将图像分解为88的子块或1616的子块, 并对每一个子块进行单独的DCT变换, 然后对变换结果进行量化、编码。随着子块尺寸的增加, 算法的复杂度急剧上升, 因此,通常采用88的子块进行变换, 但采用较大的子块可以明显减少图像分块效应。 在图像处理中一般使用的是二维DCT变换,对一幅NN图像,它的DCT变换公式为: 二维DCT的逆变换公式为: 利用此公式可以恢复出原来的图像。 一种DCT域水印的嵌入(图1)与提取(图2)示意图: dct逆变换 图1 一种DCT域的水印嵌入示意图 8*8dct变换 原始图像 水印嵌入 水印化 的图像 8*8dct变换 水印图像 + dct逆变换 水印图像 水印提取 8*8的dct变换 8*8的dct变换 水印化的图像 原始图像 图2 一种DCT域的水印提取示意图 - (1)读取嵌入黑白水印化的图像,并对图像进行分块; (2)对每一图像块进行逆DCT变换,得到嵌入水印后的图像块block_dct(x,y); (3)从每一图像块block_dct(x,y)提取出黑白水印元素W(p,q),并进行DCT变换; (4)合并图像块,得到原来的黑白水印图像。 clear;close all size=256;block=8;C=zeros(size); M=imread(E:\lena256.jpg); figure(1);imshow(M); title(原始图像); M=double(M)/256; W=imread(E:\hxx.png); figure(2);imshow(W); title(水印图像); R=double(imresize(W,[32,32])); figure(3);imshow(R); title(调整后的水印图像); for p=1:32 for q=1:32 x=(p-1)*block+1;y=(q-1)*block+1; block_dct=M(x:x+block-1,y:y+block-1); block_dct=dct2(block_dct); if R(p,q)==0 a=-1; else a=1; end block_dct(1,1)=block_dct(1,1)*(1+a*0.01); block_dct=idct2(block_dct); C(x:x+block-1,y:y+block-1)=block_dct; end end figure(4);imshow(C,[]); title(提取出来的水印图像); %嵌入水印 %提取水印 for p=1:32 for q=1:32 x=(p-1)*block+1; y=(q-1)*block+1; if(C(x,y)-M(x,y))0

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档