基于MATLAB的数字图像水印技术

发布时间 : 星期四 文章基于MATLAB的数字图像水印技术更新完毕开始阅读

《MATLAB应用与通信仿真》课程设计

大地节省了时间,提高了工作效率。

在数字水印研究领域,MATLAB显示了强大的生命力,它有如下几个特点:

1.集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现,方便了数字水印算法设计和编码实现。

2.提供了强大的数学运算功能特别是矩阵运算功能,能够方便、高效地实现数字音频、视频处理过程中需要进行的大量矩阵运算。

3.提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。

4.能与Visual C++等语言有良好的接口,方便了开发设计出有实际价值的数字水印产品。

5.编程效率高。MATLAB语言简洁紧凑,使用灵活方便,程序书写形式自由。而且库函数十分丰富,避免了繁杂的子程序编程任务。

5

《MATLAB应用与通信仿真》课程设计

3 数字图像水印技术

3.1 数字水印基本框架

从信号处理的角度看,嵌入载体对象的水印信号可以视为在强背景下叠加一个弱信号,只要叠加的水印信号强度低于入视觉系统(HVS)对比度门限或听觉系统(HAS)对声音的感知门限,HVS或HAS就无法感知信号的存在。由于HVS和HAS受空间、时间和频率频率特性的限制,因此通过对载体对象作一定的调整,就有可能在不引起人感知的情况下嵌入一些信息。

从数字通信的角度看,水印嵌入可理解为在一仑宽带信道(载体对象)上用 扩频通信技术传输一个窄带信号(水印)。尽管水印信号具有一定的能量,但分布 到信道中任一频率上的能量是难以检测到的。水印的译码(检测)则是一个有噪 声信道中弱信号的检测问题。

下面根据Voyatzis和Pitas提出的思想,对数字水印的基本框架进行介绍。 尽管数字水印有各种形式,通常可以定义水印为如下的信号W

??? W??w?k?|w?k??U,k?Wd? (3-1)

???这里,Wd表示维数为d的水印信号域,d=l,2,3分别表示声音、静止图像和视频中的水印。水印信号可以是二值形式?U??0,1?或U???1,1??或高斯噪声形式。 水印处理系统的基本框架可以定义为六元体(X,W,K,G,E,D),其中:

(1)X代表所有要保护的数字产品X的集合。 (2)W代表所有可能水印信号W的集合。 (3)K是标识码(也称水印密钥)的集合。

(4)G表示利用密钥K和待嵌入水印的X共同生成水印的算法,即

G:X?K?W,W?G?X,K? (3-2)

(5)E表示将水印w嵌入数字产品X0中的嵌入算法,即

E:X?W?X,XW?E(X0,W) (3-3)

这里X0代表原始的数字产品,Xw代表嵌入水印后得到的数字产品。 (6)D表示水印检测,即

6

《MATLAB应用与通信仿真》课程设计

D:X?K??0,1? (3-4)

?1,如果X中存在W?H1? (3-5) D?X,K????0,如果X中不存在W?H0? 这里,H1和H0代表二值假设,分别表示水印的有无。

在实际应用中.一个完整水印系统的设计必然包括水印的生成、嵌入和提取三部分。

1.水印生成。水印信号的产生通常基于伪随机数发生器或混沌系统。产生的水印信号W往往需要进~步的变换以适应水印嵌入算法。为了分析方便,我们把算子G分解为算法R和算法T两个部分:

G?T?R (3-6)

R:K?W,W?X?K?W (3-7)

子算法R输出原始水印W?W,该原始水印只由密匙K?K产生。当R基于伪随机数发生器时,密钥K直接映射为伪随机数发生器的种子。当R基于混沌系统时,密钥集由许多初始条件的适当变换而产生。这两种方法所产生的密钥集足够大并且满足密钥惟一性条件,而且由R产生的水印是有效的水印。此外,R是不可逆的。

子算法T对原始水印进行修改以获得最后的依赖于产品的水印W。T应满足:

'T(W,X0)?T(W,X0)?T(W,Xw) (3-8)

'?M(Xw),这里,X0表示原始产品,而Xw表示嵌入水印的产品, 并且Xw'Xw~Xw,M表示多媒体数据处理操作算法。原始水印信号可以预先指定,而在

~~~嵌入水印前对该水印信号可以做适当的变换或者不做变换,密匙可以在水印嵌入过程中产生。

2.水印嵌入。水印的嵌入过程如图3.1所示。

密匙 水印信息 掩体对象 水印嵌入 图3.1 水印嵌入框图

7

隐藏对象

《MATLAB应用与通信仿真》课程设计

水印嵌入就是把水印信号W??w?k??嵌入到原始产品X0??X0?k??中,一般的水印嵌入规则可描述为:

xw?k??x0?k??h?k?w?k? (3-9)

其中?为某种叠加操作,也可能包括合适的截断操作或量化操作。H??h?k??称为d维的水印嵌入掩码。最常用的嵌入准则如下:

xw?k??x0?k??aw?k?,加法准则 (3-10)

xw?k??x0?k??1?aw?k??,乘法准则 (3-11)

在这里,变量既可以指掩体对象采样的幅值(时域),也可以是某种变换的系数值(变换域);参数a可能随采样数据的不同而不同。

本设计嵌入水印的步骤如下:

(1)读取原始图像和黑白水印图像得到二维数组w0和f0; (2)将原始图像f0分割为互不覆盖的图像块;

(3)取调制后的水印信号yp嵌入到原始图像中,并重构含水印的图像,得到含水印的图像f1。

3.水印提取或检测。水印提取或检测就是判断某一数据中是否含有指定的水印信号,并可能恢复出水印信息。提取或检测算法主要是设计一个相应于嵌入过程的检测算法。检测的结果或是原水印(如字符串或图像等),或是基于统计原理的只能判断水印存在与否。为了给攻击者增加去除水印的难度,目前大多数水印制作方案都在水印加入、提取时采用了密钥,只有掌握密钥的人才能读出水印。水印提取过程如图3.2所示,检测过程如图3.3所示。本设计的原体掩藏(原始信号)是MATLAB自带的图像cameraman.

密匙 原始掩体 隐藏对象 水印提取 图3.2 水印提取框图

水印信息 8

联系合同范文客服:xxxxx#qq.com(#替换为@)