量化水印(有源码,绝对可以实现).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
量化水印(有源码,绝对可以实现)

量化水印 背景知识 在数字水印中,我们知道,设计的水印算法有时要对保真度、鲁棒性等主要性能进行折中,而从保真度和鲁棒性这两个基本的特征出发,要求水印嵌入后满足以下两个条件: 从保真度出发,要求水印嵌入后,有水印的载体数据与原始载体数据近似相等。 从鲁棒性出发,要求嵌入水印后的载体数据具有非连续性,以确保可以对抗干扰。 最初将量化运用于水印,就是为解决这方面的问题而出发的。从数学的角度来看,量化可以表示如下: Y=fstep(x)=step*[x/step]=step*round(x/step) 式中,x是待量化的数据,step是量化步长,Y是量化结果;[]和round均表示进行四舍五入取整;fstep( )是量化函数。 显然,量化函数fstep( )是一个多对一函数,是不可逆的,因此量化一般运用于不可逆水印,而且,由于量化结果均为整数,因此输出为离散值,并且误差满足|Y-x|=step/2,即在量化步长step不是特别大的情况下,Y与x是近似相等的,所以量化满足上述两个条件,可以运用于数字水印中。 量化水印的算法 设计量化水印系统的关键在于选择实时可行的量化器集合,将不同的待嵌入的水印信息与不同的量化器相对应起来,然后用相应的量化器将载体数据进行量化,就可以得到含有水印的载体数据。由于大多数情况下,水印信息都是二进制的,因此下面以研究如何嵌入二进制水印信息为例来进行说明。 二进制信息中,有0和1两种不同的数据,因此,需要两个不同的量化器,分别用A和B来表示。假设当发送水印信息为0时,用量化器A来对载体数据进行量化;当发送水印信息为1时,用量化器B来对载体数据进行量化,这样就可以得到两组不同的量化数据。在量化器中,量化器选择与原始载体数据最接近的数据来代替原始载体数据,从而保证不可感知性,即保真度;而且,A、B两个量化器之间的数据没有重叠,从而保证不同水印数据的不连续性,即使得水印系统具有一定的鲁棒性。提取水印时,根据待检数据与不同量化数据之间的距离,就可以恢复出嵌入的信息。 一种常用的二进制量化水印算法可以用公式表示如下: Q(x,s)+s*3/4 , w=1 Y= Q(x,s)+s*1/4 , w=0 式中,s代表量化步长,w表示水印信息,x表示原始载体数据,Q(x,s)是量化函数,Y是量化后的数据。Q(x,s)可如下表示 Q(x,s)=floor(x/s))) 水印检测时多为盲检测,不需要原始载体数据。 载体不影响水印的检测性能,在无干扰的情况下,可以完全恢复出嵌入的信息。 Matlab仿真 下面以最基本的量化水印算法来进行仿真设计,算法是基于时空域的,其M代码如下: clear; clc; %=====================读入并显示载体图形===================== p_lena=rgb2gray(imread(lena.jpg)); figure; subplot(2,2,1); imshow(p_lena); [m1,n1]=size(p_lena); %=====================读入并显示二值水印图片===================== w_pict=imread(jnu.bmp); subplot(2,2,2); imshow(w_pict); [m2,n2]=size(w_pict); %===================对载体空域值嵌入水印====================== step=10; code_lena=p_lena; for i=1:m2 for j=1:n2 q=(floor(code_lena(2*i,2*j)/step))*step; if w_pict(i,j)==0 code_lena(2*i,2*j)=q+step/4; elseif w_pict(i,j)==1 code_lena(2*i,2*j)=q+3*step/4; end end end %===================显示嵌入水印后的载体图像=================== subplot(2,2,3) imshow(code_lena); %=========================提取水印============================ de_lena=code_lena; f

文档评论(0)

pij541 + 关注
文档贡献者

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

1亿VIP精品文档

相关文档