matlab编程实现一种简单的数字水印嵌入与提取方法

matlab编程实现一种简单的数字水印嵌入与提取方法,第1张

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代替)。

进行嵌入时的反计算。

提取后的水印图片进行保存。

  水印嵌入过程的流程图如图3-12所示。

  水印提取过程的流程图如图3-13所示。

  将像素值对2取模,可以获取像素值的最低有效位。因此,可以通过让含水印载体图像对2取模的方式,获取图像的“最低有效位”位平面,提取到的位平面即为水印信息。

【例3.15】编写程序,模拟数字水印的嵌入和提取过程。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8043592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存