clc
[a type]=myfunction(0.7,0)/a嵌入强度,type攻击类型
x=imread('E:\ori1.bmp')
subplot(2,3,1)
image(x)
title('初始待加入水印图du像')
w=imread('E:\water1.bmp')
subplot(2,3,2)
imshow(w)
title('待用水印图像')
w=w/255
[cA1,cH1,cV1,cD1]=dwt2(x,'haar')% 对原始图像x进行小波分解zhi
[cA2,cH2,cV2,cD2]=dwt2(cA1,'haar')
[cA3,cH3,cV3,cD3]=dwt2(cA2,'haar')
title('加入水印后的图像')
%(1)放大两倍的 *** 作,(当然提取之前要先缩小两倍)
xxx1=imresize(Y,2,'bicubic')
xxx2=imresize(xxx1,1/2,'bicubic')
Y= double(xxx2)
end
%(8) JPEG压缩
if type==8
A='JPEG压缩,强度=10'
imwrite(uint8(round(Y)),'jpeg_n.jpg','jpg','Quality',10)%按压缩因子Quality的比例,将J2压缩到jpeg_n.jpg中。
end
title('提取结果')
原图像512*512 水印64*64
函数声明为function [a type]=myfunction(a,type)
图像降维dao,是因为,音频是zhi一维的dao,所以要用到 reshape 这个函版数。
置乱权,这个 有很多种的,一般用RandStream 这个来设定乱数。
密钥:图像(watermark)算法(比如XOR) 乱数 。
嵌入与提取: 根据算法和处理方法不同方法不同。小波 一般利用平均差值 嵌入的,提取的时候可以根据与差值比较 ,大的时候1小的时候0等方法。
扩展资料:改空衫
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、亏链编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强, *** 作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
参考资料核腔来源:百度百科-MATLAB
水印嵌入过程的流程图如图3-12所示。
水印提取过程的流程图如图3-13所示。
将像素值对2取模,可以获取像素值的最低有效位。因此,可以通过让含水印载体图像对2取模的方式,获取卜握图像的“最低型则庆有效位”位平面,提取到的位平面即为水印信息。
【例3.15】编写程序,模拟数字水印的嵌入和提取过程盯春。
DCT 嵌入水印图片与DWT是耐激漏擦不多的。在Matlab上直接用函数的话值是一样的,应该说DWT包含DCT。下面昌烂我说一下嵌入过程,程序就不写了。网上很多的。给你一个嵌入思路。
DWT方法。原图大小为(512,512)嵌入图片大小为(64,64)
嵌入:
读取原图片。
读取水印图片。
原图片要处理为灰图。
水印图片要处理铅搭为2值图。
生成伪随机乱数(记住是怎么生成的,提取时用到)。
随机乱数做成2值图K与水印图生成密钥WK的2值图(方法有很多种)。
原图片做3次DWT处理(Matlab里函数是dwt2)得到图片DA,DB,DC,DD。
取出DB或DC,或者DB,DC都用上,设一个嵌入强度Q,与密钥K一起嵌入到DB,DC中(方法有很多种)。
将嵌入后的DB,DC与没有嵌入的DA,DD一起(DA,DB,DC,DD顺序不要错了)进行反DWT处理。
得到嵌入水印后的图片进行保存。
提取:
读取嵌入水印后的图片。
嵌入水印后的图片做3次DWT,并得到DA,DB,DC,DD。
定义Q(嵌入时的强度,比如5)。
生成嵌入水印时的伪随机乱数并做成2值图K。
取出,嵌入水印的成分(嵌入到DB的话取出DB,两个都用了就两个都取出,在这里用DB代替)。
进行嵌入时的反计算。
提取后的水印图片进行保存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)