基于MATLAB的数字水印算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字水印作为一门新的学科, 自 1993 年 Tirkel 等人正式提出到现在十几年里, 国内外对数字水印的研究都引起了极大的关注, 从最初的版权保护, 已扩展到多媒体技术, 广播监听, in-ternet 等多个领域。数字水印是永久镶嵌在其他数据( 主要指宿主数据) 中具有可鉴别性的数字信号或数字模式, 其存在不能影响宿主数据的正常使用。为了使数字水印技术达到一定的设计要求, 当前水印数据一般应具备不可感知性(imperceptible) 、鲁棒性(Robust) 、可证明性、自恢复性和安全保密性等特点。在数字水印技术中, 水印的数据量和鲁棒性构成了一对基本矛盾。理想的水印算法应该既能隐藏大量数据, 又可以抗各种信道噪声和信号变形。然而在实际中, 这两个指标往往不能同时实现, 实际应用往往只偏重其中的一个方面。如果是为了隐蔽通信, 数据量显然是最重要的, 由于通信方式极为隐蔽, 遭遇敌方篡改攻击的可能性很小, 因而对鲁棒性要求较为不高。但对保证数据安全来说, 情况恰恰相反, 各种保密的数据随时面临着被盗取和篡改的危险, 对鲁棒性的要求很高, 而对隐藏数据量的要求则居于次要地位。典型的数字水印系统至少包含两个组成部分- - 水印嵌入单元和水印检测与提取单元。将水印信息进行预处理后加入到载体中, 称为嵌入。从水印化数据中提取出水印信息或者检测水印信息的存在性称为水印的提取和检测。数字水印算法主要

是指水印的嵌入算法, 而提取算法往往被看成是嵌入算法的逆变换。

当前典型的嵌入算法主要被分为空间域水印算法和变换域水印算法。DCT 变换域算法是数字水印算法的典型代表, 也是数字水印中较为常用的一种稳健的算法。其算法思想是选择二值化灰度图像作为水印信息, 根据水印图像的二值性来选择不同的嵌入系数, 并将载体图像 ( 原始图像) 进行 8×8 的分块, 再将灰度载体图像( 原始图像) 进行 DCT变换。然后, 将数字水印信息的灰度值直接植入到载体灰度图像的 DCT 变换域中, 实现水印的嵌入。而后, 将嵌入了水印信息灰度图像进行 IDCT( 逆离散的余弦变换) 变换, 得到含有了嵌入水印信息的图像, 嵌入过程完毕。水印的提取、检测过程为嵌入过程的逆过程, 其方法和嵌入方法有所雷同不再进行介绍。

下面以 MATLAB 为工具, 给出一个在频域嵌入和提取黑白二值水印图像的实现过程。(1) 水印图像的预处理: 将水印信息图像进行灰度处理, 然后再将转换后的图像进行二值转换。而这些都是为了提高水印信息的安全性对图像所做的处理。(2) 读取原始公开图像(大小为 256×256) 和黑白水印图像(大小为 32×32, 模式为灰度) 到二维数组 I 和 J。(3) 将原始公开图像I 分割为互不覆盖的图像块, 每块大小为 8×8, 共分为 32×32 块。然后对分割后的每个小块Block- dct(x,y) 进行 DCT 变换, 得到变换后的小块 Block-dct(x, y)。(4) 取黑白水印图像中的一个元素 J(p, q) , 通过嵌入算法嵌入到原始公开图像块的中频系数中。(5) 对嵌入水印信息后的图像块Block- dct (x, y) 进行逆DCT 变换, 得到图像块 Block(x′, y′)。

(6) 将逆 DCT 变换后的图像块 Block(x′, y′) 合并, 得到了嵌入黑白二值水印后图像。(7) 对嵌入水印后的图像进行 JPEG 压缩( 一种水印攻击) 。(8) 从压缩后的图像中提取水印信息。提取算法为嵌入算法的逆过程。

具体 MATLAB 程序如下:

%嵌入水印信息

tem=1;

for m=1:N

for n=1:N

x=(m- 1)×K+1;

y=(n- 1)×K+1;

block_dct=I(x:x+K- 1,y:y+K- 1);

block_dct1=dct2(block_dct);

if J(m,n)==0

a=- 1;

else

a=1;

end

block_dct2=block_dct1×(1+a×0.01);

block_idct=idct2(block_dct2);

D(x:x+K- 1,y:y+K- 1)=block_idct;

tem=tem+1;

end

end

我们可以看到, 嵌入水印信息后的图像和原始的图像在视觉上几乎看不出什么变化, 只是从亮度上有稍微的增强, 这是嵌入水印信息后原始图像的像素提高的缘故。这说明该算法的不可见性较好, 满足了数字水印嵌入算法的评价标准。对嵌入水印后的图像进行攻击以评价其鲁棒性:首先对嵌入水印信息的图像进行国际标准压缩 JPEG 压缩。这种压缩是一种有损压缩, 对图像产生一定的破坏, 可以将它看作一种攻击手段。该算法对 JPEG 压缩攻击有一定的鲁棒性。实验证明,该算法对剪裁有抗攻击性, 也证明了该算法的鲁棒性。综上实验结果, 可以看出嵌入前后的图像在视觉上没有发生明显的变化, 这说明该算法充分利用了人类视觉系统(HVS)的特性, 图像的不可感知性较好。也就说明变换域 DCT 水印嵌入算法有较好的稳健性。提供数据交换服务。而业务主题是构建业务链的基础。在所论述的交换平台中, 业务主题和业务链是两个关键的概念。所谓业务链, 是指来自不同业务系统的内部业务流整合后形成的新的业务流。如图 2 所示的系统 A 内部业务流 A1- A2-A3 和系统 D 内部业务流 D1- D2 整合后形成的新的业务流 A1-A2- A3- D1- D2, 即是一条业务链。所谓业务主题, 是不同系统内部业务流组成的业务链的标识, 它与业务链的业务内容密切相关, 规定了需要交换的业务数据的内容及格式, 包括数据结构及数据类型等。通过确定业务主题, 来自两个不同系统的业务流交换了数据, 构建了新的业务链。平台为用户提供其能获得

的业务主题的索引服务。对于与用户系统不相关的业务主题, 该用户不可见, 称之为不相关业务主题的屏蔽性, 以确保平台的数据安全。

2、数据交换服务组件数据交换组件是数据交换平台的主要组件, 通过组件为需要数据交换服务的客户提供服务, 以实现平台的功能。它包括:为用户提供数据上传下载服务; 为新加入的用户注册; 当用户申请数据服务时, 验证用户的合法性及所能为其提供的服务; 当共享数据报错时通知数据源等。所有这些功能, 都是服务平台以服务的形式提供给提出用户使用的。平台在为用户提供数据交换服务的同时, 也为采取措施保证数据交换的安全, 比如 XML 数字签名、数据转发后予以丢弃、不相关业务主题屏蔽等。数据交换组件主要包括四个功能组件: 注册组件、验证组件、数据转发组件、容错组件。

2.1 注册组件

注册是用户利用交换平台构建业务链的必经之门。通过注册, 平台为用户登记其身份资料, 保存构建业务链的相关业务主题及其他信息, 并分配相应的资源空间。注册组件就是为用户提供注册服务的。

2.2 验证组件

当用户需要数据服务平台提供服务时, 必须先向服务平台提出服务请求, 服务平台对用户身份的合法性进行验证, 若通过, 数据交换服务平台则检查该用户所能得到的服务并展示相

应的业务主题给用户。验证组件为合法用户提供相关业务主题的索引服务, 使用户能快速定位所需要的业务主题, 但遵从不相关业务主题屏蔽性的原则。

相关文档
最新文档