PatchWork-算法

上传人:go****e 文档编号:130631627 上传时间:2020-04-29 格式:DOCX 页数:6 大小:174.17KB
返回 下载 相关 举报
PatchWork-算法_第1页
第1页 / 共6页
PatchWork-算法_第2页
第2页 / 共6页
PatchWork-算法_第3页
第3页 / 共6页
PatchWork-算法_第4页
第4页 / 共6页
PatchWork-算法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《PatchWork-算法》由会员分享,可在线阅读,更多相关《PatchWork-算法(6页珍藏版)》请在金锄头文库上搜索。

1、张道德 UCAS第1题 PatchWork 算法Bender等提出了著名的Patchwork算法,这是一种统计算法,即在一个载体图像中嵌入具有特定统计特性的水印。1.1算法介绍假设算法针对256级线性量化系统,其初始值为0,所有亮度等级均匀分布,且个个采样点相互独立。在图像中随机选出两点A和B。设A的亮度为,B的亮度为,令。如果大量重复上述过程,则的期望应为0。但是这并不代表在某一特定条件下究竟取值多少。这是因为在这种处理中,的方差是相当高的。的方差则是反应的样本围绕其期望值变化的紧密情况。因为是相互独立的,可以用下式计算:sss=+ 对于均匀分布的有从而的标准差为。在高斯聚类情况下,一次单独

2、的迭代意义不大。但是,如果我们执行上述过程多次,则会出现不同的情形。如果将这个过程重复次,、和 是、和的第次迭代值,定义,则的期望值为0,标准差约为。对于一幅图像,按照上面的方法计算,如果其偏差高于标准差,则可以在很大程度上确定这并非偶然。事实上,当很大时,下面提到的将呈高斯分布,使得依据偏离值的少数几倍数值即可以高置信度地指出图像已经人为的修改,也就是嵌入了水印。具体步骤如下: 一个密钥利用和伪随即数发生器来选择数据对。该密钥和随机数发生器的模型仅为收发双方拥有,解码器需要按照和编码器相同的顺序和位置来选择数据对; 将补丁处的亮度值提高,的一般取值为256的1%5%之间; 将补丁处的亮度值降

3、低同样的值; 重复上述步骤次(的典型值为10000)。 相应的解码过程只需要两步: (1)对编码后的图像,用同样的密钥和伪随机数发生器来选择数据对; (2)计算当的值很大时,有。 =-+=-在不知道密钥的情况下,随机选取像素对,假设它们是独立同分布的,就有。这就表明,只有水印嵌入者可以对水印进行正确检测,攻击者无法判定图像中是否含有水印。1.2 编程实现与分析1.2.1 Patchwork算法的程序实现与分析在实验过程中,我们选取,则标准差。我们选取标准差的1.5倍作为阀值,即首先,我们在原始图像 “elain.bmp” 中运用Patchwork算法嵌入水印,原始图像与嵌入水印后的图像如下图:

4、图1.1 原始图像与嵌入水印后的图像在肉眼的观察下,嵌入水印后的图像与原始图像没有什么区别。在已知密钥的情况下,计算原始图像的和水印图像,判断是否有水印。结论如下表:结论含有水印Sn1416Sn101266在不知密钥的情况下,计算水印图像,判断是否有水印。结论如下表:结论不含有水印Sn-52171.2.2 程序代码%*Patchwork水印算法在已知密钥的情况下,计算原始图像的和水印图像的函数 function Sn=KnownKey(ImgName,key1,key2)%在已知密钥的情况下,计算原始图像的Sn 和水印图像的SnSn=0;ImgMatrix=double(imread(ImgN

5、ame); %读入bmp位图,存入矩阵ImgMatrix中rowNum,colNum=size(ImgMatrix); %rowNum 图像矩阵的行数;colNum 图像矩阵的列数rng(key1) % 恢复生成器设置(密钥)RandomNumber3=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数1;rng(key2) % 恢复生成器设置(密钥)RandomNumber4=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数2;for i=

6、1:10000 Sn=Sn+ImgMatrix(floor(RandomNumber3(i)/512)+1,mod(RandomNumber3(i),512)+1). -ImgMatrix(floor(RandomNumber4(i)/512)+1,mod(RandomNumber4(i),512)+1);end%*在不知密钥的情况下,计算水印图像的函数function Sn=UnknownKey(ImgName)%在未知密钥的情况下,计算水印图像的SnSn=0;ImgMatrix=double(imread(ImgName); %读入bmp位图,存入矩阵ImgMatrix中rowNum,co

7、lNum=size(ImgMatrix); %rowNum 图像矩阵的行数;colNum 图像矩阵的列数RandomNumber3=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数1;RandomNumber4=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数2;for i=1:10000 Sn=Sn+ImgMatrix(floor(RandomNumber3(i)/512)+1,mod(RandomNumber3(i),512)+1).

8、-ImgMatrix(floor(RandomNumber4(i)/512)+1,mod(RandomNumber4(i),512)+1);end%*Patchwork函数 function BrightMatrix,key1,key2=patchwork(ImgName)%更改后的图像矩阵%ChangedImg 更改后的图像名称%key1,key2系统分配给用户的密钥ImgMatrix=double(imread(ImgName); %读入bmp位图,存入矩阵ImgMatrix中BrightMatrix=ImgMatrix; rowNum,colNum=size(ImgMatrix); %r

9、owNum 图像矩阵的行数;colNum 图像矩阵的列数key1=rng; %获取当前的生成器设置(密钥)RandomNumber1=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数1;key2=rng; %获取当前的生成器设置(密钥) RandomNumber2=randi(0,rowNum*colNum-1,10000,1); %产生一系列0,rowNum*colNum-1之间的随机数2;degree=5; %亮度值增加值为256的1%5%,我们取为5 %*%图像水印嵌入for i=1:10000BrightMa

10、trix(floor(RandomNumber1(i)/colNum)+1,mod(RandomNumber1(i),colNum)+1)=. BrightMatrix(floor(RandomNumber1(i)/colNum)+1,mod(RandomNumber1(i),colNum)+1)+degree;BrightMatrix(floor(RandomNumber2(i)/colNum)+1,mod(RandomNumber2(i),colNum)+1)=. BrightMatrix(floor(RandomNumber2(i)/colNum)+1,mod(RandomNumber2

11、(i),colNum)+1)-degree;end%*主程序clcclearDeviation=104*100; %标准差 threshold=1.5*Deviation; %图像阀值,设置为标准差的1.5倍BrightMatrix,key1,key2=patchwork(elain1.bmp);imwrite(uint8(BrightMatrix),elain2.bmp,bmp);subplot(121),imshow(elain1.bmp),title(原始图像); subplot(122),imshow(elain2.bmp),title(嵌入patchwork水印的效果); %*%在已知密钥的情况下,计算原始图像Sn和 水印图像SnSn0=Kno

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号