94
福 建 电 脑
福 建 电 脑
福 建 电 脑
2007 年第 11 期
基于 MATLAB 的数字水印算法实现
武 兵
( 德州学院计算机系 山东 德州 253023 )
【摘 要】: 数字水印技术是近年来国内外一个新的研究热点, 但它的跨学科性常常给研究工作带来许多困难。因此, 选
择一个合适的工具尤为重要。文章从数字水印技术的特点、一般模型出发, 利用 MATLAB 研究工具, 给出了一个在 Matlab 环
境下实现的数字水印的嵌入和提取的算法实例, 具有较好的现实意义。
【关键词】: 数字水印; 鲁棒性; 算法; DCT; MATLAB
数字水印作为一门新的学科, 自 1993 年 Tirkel 等人正式 提
出到现在十几年里, 国内外对数字水印的研究都引起了极大的
关 注 , 从 最 初 的 版 权 保 护 , 已 扩 展 到 多 媒 体 技 术 , 广 播 监 听 , in-
ternet 等多个领域。数字水印是永久镶嵌在其他数据( 主要指宿
主数据) 中具有可鉴别性的数字信号或数字模式, 其存在不能影
响宿主数据的正常使用。为了使数字水印技术达到一定的设计
要 求 , 当 前 水 印 数 据 一 般 应 具 备 不 可 感 知 性 ( imperceptible) 、鲁
棒性( Robust) 、可证明性、自恢复性和安全保密性等特点。
在数字水印技术中, 水印的数据量和鲁棒性构成了一对基
本矛盾。理想的水印算法应该既能隐藏大量数据, 又可以抗各种
信道噪声和信号变形。然而在实际中, 这两个指标往往不能同时
实现, 实际应用往往只偏重其中的一个方面。如果是为了隐蔽通
信 , 数 据 量 显 然 是 最 重 要 的, 由 于 通 信 方 式 极 为 隐 蔽 , 遭 遇 敌 方
篡改攻击的可能性很小, 因而对鲁棒性要求较为不高。但对保证
数据安全来说, 情况恰恰相反, 各种保密的数据随时面临着被盗
取和篡改的危险, 对鲁棒性的要求很高, 而对隐藏数据量的要求
则居于次要地位。
典型的数字水印系统
至 少 包 含 两 个 组 成 部
分 - - 水 印 嵌 入 单 元 和 水
印检测与提取单元。将水
印信息进行预处理后加入
到载体中, 称为嵌入。从水
印化数据中提取出水印信
息或者检测水印信息的存
在性称为水印的提取和检
测。具体过程如图 1 所示。
图 1 数字水印系
统的基本模型图
数字水印算法主要是指水印的嵌入算法, 而提取算法往往
被看成是嵌入算法的逆变换。当前典型的嵌入算法主要被分为
空间域水印算法和变换域水印算法。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
结果显示如下:
图 3 水印信息
图 4 嵌入水印后的图像
图 2 原始图像
比较图 2 和图 4 我们可以看到, 嵌入水印信息后的图像和
原始的图像在视觉上几乎看不出什么变化, 只是从亮度上有稍
微的增强, 这是嵌入水印信息后原始图像的像素提高的缘故。这
说明该算法的不可见性较好, 满足了数字水印嵌入算法的评价
标准。
对嵌入水印后的图像进行攻击以评价其鲁棒性:
首 先 对 嵌 入 水 印 信 息 的 图 像 进 行 国 际 标 准 压 缩 JPEG 压
缩。这种压缩是一种有损压缩, 对图像产生一定的破坏, 可以将
它看作一种攻击手段。本文采用了 70%的 JPEG 压缩, 从压缩后
的 图 像 中 提 取 的 水 印 信 息, 仍 能 较 清 晰 的 看 到" 德 州 学 院" 四 个
字。这说明该算 法 对 JPEG 压 缩 攻 击 有 一 定 的 鲁 棒 性 。 实 验 证
( 下转第 100 页)
100
福 建 电 脑
福 建 电 脑
福 建 电 脑
2007 年第 11 期
提供数据交换服务。而业务主题是构建业务链的基础。在所论述
的交换平台中, 业务主题和业务链是两个关键的概念。
所谓业务链, 是指来自不同业务系统的内部业务流整合后
形成的新的业务流。如图 2 所示的系统 A 内部业 务 流 A1- A2-
A3 和系统 D 内部业务流 D1- D2 整合后形成的新的业务流 A1-
A2- A3- D1- D2, 即是一条业务链。
所谓业务主题, 是不同系统内部业务流组成的业务链的标
识, 它与业务链的业务内容密切相关, 规定了需要交换的业务数
据的内容及格式, 包括数据结构及数据类型等。通过确定业务主
题, 来自两个不同系统的业务流交换了数据, 构建了新的业务
链。
平台为用户提供其能获得的业务主题的索引服务。对于与
用户系统不相关的业务主题, 该用户不可见, 称之为不相关业务
主题的屏蔽性, 以确保平台的数据安全。
2、数据交换服务组件
数据交换组件是数据交换平台的主要组件, 通过组件为需
要数据交换服务的客户提供服务, 以实现平台的功能。它包括:
为用户提供数据上传下载服务; 为新加入的用户注册; 当用户申
请数据服务时, 验证用户的合法性及所能为其提供的服务; 当共
享数据报错时通知数据源等。所有这些功能, 都是服务平台以服
务的形式提供给提出用户使用的。平台在为用户提供数据交换
服 务 的 同 时 , 也 为 采 取 措 施 保 证 数 据 交 换 的 安 全 , 比 如 XML 数
字签名、数据转发后予以丢弃、不相关业务主题屏蔽等。
数据交换组件主要包括四个功能组件: 注册组件、验证组
件、数据转发组件、容错组件。
2.1 注册组件
注册是用户利用交换平台构建业务链的必经之门。通过注
册, 平台为用户登记其身份资料, 保存构建业务链的相关业务主
题及其他信息, 并分配相应的资源空间。注册组件就是为用户提
供注册服务的。
2.2 验证组件
当用户需要数据服务平台提供服务时, 必须先向服务平台
提出服务请求, 服务平台对用户身份的合法性进行验证, 若通
过, 数据交换服务平台则检查该用户所能得到的服务并展示相
应的业务主题给用户。验证组件为合法用户提供相关业务主题
的索引服务, 使用户能快速定位所需要的业务主题, 但遵从不相
关业务主题屏蔽性的原则。
2.3 数据转发组件
数据转发组件是平台的中心逻辑组件。其设计除保证平台
能完成业务链的数据交换外, 还必须考虑数据转发的效率及安
全性等。在经过验证组件的合法性验证后, 平台即可接受用户的
数据上传, 并根据用户 ID 及相关业务主题 ID 把数据依队列存
放起来。当该业务主题的业务链的用户下载数据后, 平台即对数
据进行减持。
对已转发数据进行减持, 其目的在于:
1) 为了用户数据安全;
2) 减少系统负担, 提高系统服务效率;
3) 回收资源空间, 实现平台轻量化的设想。
2.4 容错组件
当用户发现数据出错时, 向数据交换服务平台报错, 由服务
平台通知业务链上游提供数据的数据源重新传送出错数据。数
据服务平台会给加入数据交换共享的每个业务系统提供一个唯
一 的 识 别 ID, 对 其 所 提 供 的 主 题 也 会 加 以 识 别 , 在 此 基 础 上 对
每 条 交 换 数 据 加 以 唯 一 编 号( 流 水 号) , 因 而 服 务 平 台 系 统 能 据
此通知相应的数据源重传出错的数据。
3、结语
我们用上述三节论述了一个面向业务流整合的数据交换服
务平台。提出了业务主题、业务链、不相关业务主题屏蔽等概念,
通过业务主题整合异构平台的内部业务流以构成业务链。通过
采用用户注册加入平台 、XML 数 字 签 名 、 异 构 平 台 系 统 通 过 适
配器加入平台而无需改动原有业务系统、平台对数据转发后预
以 减 持 等 技 术 手 段, 我 们 实 现 了 以 上 基 于 开 放 的 、安 全 的 、松 耦
合的、轻量级的数据交换服务平台的设计。这种方案, 对于大量
需要简单快速、低成本进行业务流整合的异构平台, 具有广泛的
应用价值, 同时这种数据交换服务平台也可延伸为商业性的应
用平台。
上述的数据交换服务平台 的 实 现 , 可 采 用 跨 平 台 的 Java 技
术。数据服务平台向用户提供服务, 可采用 B/S 结构, 服务器端
采用 JSP/Servlet 技术, 当用户需要数据服务时, 向服务提出 请
求 , 平 台 作 出 应 答 。 对 于 业 务 逻 辑 , 采 用 JavaBean 技 术 进 行 封
装。对于各业务系统数据异构问题, 采用 XML 文档作为数据交
换的统一格式, 解决交换数据的异构问题。
参考文献:
1. 李智芳,蒋芝山, 基于 J2EE 架构的 Web 报表系统[J].计算机系 统 应 用,
2006.5
2. 南京地税信息中心, 面向应用整合的三层体系架构税务软 件 系 统 建
设[J].计算机系统应用 ,2006.1
3. 孟健, 曹立明 , 王 小 平 , 姚 亮, XML 文 档 的 加 密 访 问 控 制 与 传 输[J] .
计算机应用,第 26 卷 第 5 期 2006.3
4. 虞歌, XML 数字签名及其在成绩管理中的应用 [J]. 计算机系统应用,
2006.5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
( 上接第 94 页)
明, 在对图像进行了剪裁攻击后, 从剪裁的图像中提取的水印信
息 仍 能 清 楚 的 看 到"德 州 学 院" 四 个 字 的 轮 廓 ( 除 去 被 剪 裁 的 部
分) , 这 说 明 该 算 法 对 剪 裁 有 抗 攻 击 性, 也 证 明 了 该 算 法 的 鲁 棒
性。
综上实验结果, 可以看出嵌入前后的图像在视觉上没有发
生明显的变化, 这说明该算法充分利用了人类视觉系统( HVS)
的特性, 图像的不可感知性较好。也就说明变 换 域 DCT 水 印 嵌
入算法有较好的稳健性。
参考文献:
1. Cox I J, Killian J, Leighton F T, etal. Secure spread spectrum water-
marking for multimedia. In :IEEE Trans Image Processing [M], 1997,6(12):
1673- 1687.
2. 武兵. 数字水印技术浅析[J]. 中国科技信息. 2006.11: 191- 192
3. 黄 继 武, YunQ.SHI, 程 卫 东. DCT 域 图 像 水 印 嵌 入 对 策 和 算 法[J]. 电
子学报. 2000.(28):.57~60
4. 曾牛, 程胜利. 数字水印技术研究[J]. 交通与计算机. 2004(6)
5. 陈 明 奇, 杨 义 先. 数 字 水 印 的 研 究 进 展 和 应 用[J] . 通 信 学 报. 2001.5:
71- 79.