基于MATLAB的数字水印嵌入系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、数字水印系统的实现
( 一) 水印的嵌入算法 数字水印技术的关键在于如何处理签字信号的鲁棒性、 不 可 感 知 性 、以 及 所 嵌 入 的 数 据 量 大 小 这 三 者 之 间 的 关 系 。判 断其算法优劣的一般衡量准则为: 对于主信号发生的部分失 真, 签字信号是否具备一定的鲁棒性。对于有意或无意的窃 取 、干 扰 或 去 除 操 作 , 签 字 信 号 是 否 具 备 一 定 的“抵 抗 ”能 力 , 从而保证隐藏信息的安全可靠和完整性。签字信号的嵌入是 否严重降低了主信号的感知效果以及数据嵌入量的大小。 常 见 的 数 字 水 印 算 法 有 : 最 低 有 效 位 算 法 ( LSB) ; 文 档 结 构 微 调 方 法 ; 将 水 印 设 计 成 一 种 抖 动 矩 阵 的 形 式 ; Patchwork 方法( 基于统计的数据水印嵌入方案) ; 纹理块映射编码方法, 仅适于具有大量任意纹理区域的图像, 而且尚不能完全自动 完成; 频率域数字水印方法 ( 类似扩频通信的技术来隐藏数 据的方法, 技术可以抗击有损压缩编码和其他一些具有信号 失真的数据处理过程) 等。 现在多数水印系统都在变换域中进行处理。采用小波分 析, 算法的鲁棒性更强, 水印信息量相比也更大。假设待嵌入 二值图像水印的原始图像大小为 2mNx×2mNy, 水印图像的大小 为 2Nx×2Ny( M=2) , 水印嵌入算法步骤如下: 1.嵌入水印的原始图像进行两级小波分解, 得到不同分辨 率级别下的细节子图 cDj+1(h), cDj+1(v), cDj+1(d)( j=0, 1) (分 别 代 表 j+1 分辨率级别 下 的 水 平 方 向 、 垂 直 方 向 和 对 角 线 方 向 的 三个细节子图)和一个逼近子图 cA2。 2.将每个细节子图分割成互不重叠的大小皆是 Nx×Ny 的 细节子图块 cDj+1(h), cDj+1, i(v), cDj+1, i(d)(i=1, 2, 2m- 2j)。 3.基于稳健性考虑, 希望图像水印的统计特性类似白噪声, 即均值为 0, 所以在嵌入水印之前, 首先将水印图像中 0 和 1 变
end xishu=5; swa3=swa+swa2*xishu; swh3=swh+swh2*xishu; swv3=swv+swv2*xishu; swd3=swd+swd2*xishu; swa4=swa1+swa2*xishu; swh4=swh1+swh2*xishu; swv4=swv1+swv2*xishu; swd4=swd1+swd2*xishu; %嵌入水印:水印图像的水平、垂直、对角线和一个细节子图 乘以一个权值后, 分别于对应的原始图像的一级和二级子图相加 a1=iswt2(swa4, swh4, swv4, swd4, ' db1' ); a1=iswt2(a1, swh3, swv3, swd3, ' db1' ); %嵌入后, 则重构 图像, 则成为合成图像. delete(h1); image(a1, ' parent' , handles.axes3); colormap(map); set(handles.axes3, ' xtick' , [], ' ytick' , [], ' xcolor' , [0 0 1], ' ycolor' , [ 0 0 1]); set(handles.figure1, ' pointer' , ' arrow' ); else msgbox(' 没有水印图像' , ' 提示' , ' modal' ); end time=num2str(toc); set(handles.text5, ' string' , [' 用时: ' , time, ' 秒' ]);
【收稿日期】2006- 02- 02 【作者简介】舒云星( 1962- ) , 男, 洛阳工业高等专科学校教授。
- 27 -
像文件' ); addpath(p); if f1==0 return; end h1=figure_2(' 正在打开原始图像文件...' ); set(handles.figure1, ' pointer' , ' watch' ); %设置鼠标图
2006年第 5 期 ( 总第 91 期)
大众科技
DA ZHONG KE J I
No.5, 2006 (Cumula tive ly No.91)
基于 MATLAB 的数字水印嵌入系统
舒云星, 卫莉莉
( 洛阳工业高等专科学校计算机系, 河南 洛阳 471003)
【摘 要】文章利用 MATLAB 语言及其小波工具箱 , 采 用 小 波 变 换 算 法 , 开 发 数 字 水 印 嵌 入 系 统 , 通 过 对 原 始 静 态 图 像 和 二
标为忙状态
tic%程 序 计 时 X=rgb_toind(f1); %把 原 始 图 像 转 换 成 索 引 图 像 , 便 于 小 波工具箱处理
delete(h1); image(X, ' parent' , handles.axes1); colormap(map); %显示原始图像 set(handles.axes1, ' xtick' , [], ' ytick' , [], ' xcolor' , [0 0 1], ' ycolor' , [ 0, 0, 1]); ( 2) 图像转换函数 rgb_toind(), 通过图像转换函数, 把原始 图像转换成索引图像, 是用小波工具箱对其进行处理。 ( 3) 水印嵌入小波变换算法的实现, 根据前面介绍的小波 变换算法, 对图像进行分解。原始图像二次分解 函 数 x_fenjie (), 主要通过下面代码实现: if rem(size(X, 1), 2) ̄ =0 | rem(size(X, 2), 2) ̄ =0 X=wextend(' 2D' , ' per' , X, [1, 1]); %对 原 图 像 矩 阵 进 行延拓. end [swa, swh, swv, swd]=swt2(X, 1, ' db1' ); [swa1, swd1, swh1, swv1]=swt2(swa, 1, ' db1' ); ( 4) 水印图像延拓分解函数 y_fenjie(), 对水印图像进 行 一 次小波分解。 ( 5) 嵌入水印的实现 If~isempty(f2) f=[]; h1=figure_2(' 正在嵌入水印...' ); set(handles.figure1, ' pointer' , ' watch' ); if size(X, 1) ̄ =size(y, 1) | size(X, 2) ̄ =size(y, 2) y=y_fenjie(y_yuanshi);
【参考文献】 [1]黄继武, 等.DCT 域 图 像 水 印 : 嵌 入 对 策 和 算 法[J].电 子 学报, 2000.28( 4) . [2]孙 兆 林.MATLAB 6.x 图 像 处 理[M].北 京.清 华 大 学 出 版社, 2002. [3]张 鸿 宾 , 等.数 字 水 印 的 性 质 及 性 能 评 测[M].计 算 机 科 学, 2003, 30( 8) . [4]陈 武 凡 . 小 波 分 析 及 其 在 图 像 处 理 中 的 应 用 [M]. 科 学 出 版社, 2002.
cDj+1, i(h)= cDj+1, i(h)+α×w(h) cDj+1, i(v)= cDj+1, i(v)+α×w(v) cDj+1, i(d)= cDj+1, i(d)+α×w(d) 其中, α为对应的加权因子, 用于控制嵌入水印强度。α取 值大, 鲁棒性好, 不可见性差; 反 之 , α取 值 小 , 不 可 见 性 好 , 但 稳健性差。 5.通过对嵌入水印后的系数进行重构, 即可获得加水印后 的图像。 ( 二) MATLAB 与数字图像 MATLAB 是 一 款 功 能 强 大 的 科 学 与 工 程 计 算 的 软 件 工 具, 其中的图像处理工具包是由一系列支持图像处理操作的 函 数 组 成 的 , 所 支 持 的 图 像 处 理 操 作 有 : 几 何 操 作 、区 域 操 作 和 块 操 作 ; 线 性 滤 波 和 滤 波 器 设 计 ; 变 换 ( DCT 变 换 ) ; 图 像 分 析和增强; 二值图像操作等。本系统主要使用函数有: 单尺度 二 维 离 散 小 波 变 换 : dwt2(); 多 尺 度 二 维 小 波 分 解 : wavdec2(); 单尺度逆二维离散小波分析: idwt2(); 多尺度二维小波重构: wa- verec2(); 对二维小波系数进行单支重构: wrcoef2(); 对二维小波 分 解 的 直 接 重 构 : upcoef2 (); RGB 图 像 转 换 为 灰 度 图 像 函 数 : rgb2gray(), I=ind2gray(RGB), 其作用是将真彩色 图 像 RGB 转 换 为 灰 度 图 像 I; 函 数 RGB2IND(), 将 RGB 图 像 转 换 为 索 引 图 像 ; 将 图 像 转 换 为 二 进 制 图 像 : im2bw(); 从 灰 度 图 像 产 生 索 引 图像函数: grayslice()。 ( 三) 数字水印管理系统的编程实现 本 程 序 应 用 MATLAB6.0 进 行 编 程 , 实 现 以 下 功 能 : 原 始 图像到二值图像的转换; 水印的嵌入; 混合图像的保存; 水印 的检测与提取等。设计思路及其主要实现代码如下: 1.在 GUI 模式下进行界面设计。用 MATLAB 的控件, 做出 窗体上所需的图像显示区和命令按钮, 合理布局。用菜单编辑 器设置菜单, 各菜单选项对函数进行相关调用。 2.在 编 程 窗 口 中 进 行 编 程 。 包 括 以 下 主 要 代 码 : ( 1) 打开原图的方法 f1=' ' ; [f1, p]=uigetfile(' *.jpg; *.bmp; *.tif; *.gif' , ' 打开原始图
值图像水印进行小波多分辨率分解, 组合对应方向上的小波细节子图数据, 从而实现了在原始静态图像上嵌入二值图像水印。
【关键词】数字水印; MATLAB; 小波变换
【中 图 分 类 号 】T P309
【文 献 标 识 码 】A
【文章编号】1008- 1151(2006)05- 0027- 02
一、引言
日常生活中, 人眼所能感受到的两幅质量十分相似的数 字图像, 其像素值可能存在很大的差别。这种依赖于人的视觉 系统的不完善性, 为数字图像的失真压缩和信息隐藏提供了 非常巨大的施展空间。数字水印技术在多媒体信息的版权归 属和信息安全领域已得到广泛关注。将水印信息通过某一算 法嵌入到原始数字信息如数字图像中, 但不影响数据的正常 使用和价值, 且不能被人的视觉系统所察觉。水印的嵌入借助 于算法进行实现, 而且用嵌入的逆算法, 可以提取水印。被嵌 入的数字水印种类很多, 本文介绍的水印是二值图像, 具有较 强的现实意义。
( 上 接 第 26 页 ) 的 责 任 ; 只 有 正 确 的 分 析 , 才 能 找 到 今 后 应 吸 取的教训, 化消极因素为积极因素; 也只有正确的分析, 才能 制定出适宜的防治措施, 防患于未然。对于结构设计, 施工技 术和使用中的错误引起的, 其中大部分是主观性的错误。而当 严格遵守勘查、设计与施工的标准文件的规定和相应要求 , 则 错 误 是 可 以 避 免 的 。工 程 设 计 人 员 在 进 行 地 基 基 础 的 设 计 时 , 应注意以下几个方面:
成- 1 和+1, 然后 对 水 印 图 像 进 行 一 次 小 波 分 解 得 到 三 个 细 节 子 图 w(h), w(v), w(d)和 一 个 逼 近 子 图 w(ca)(皆 为 大 小 是 Nx×N来自百度文库 的 子 图 )。
4.为增强嵌入水印信息的稳健性和不可见性, 可利用图像 多分辨率技术, 相同分辨率层次的数字水印嵌入对应的相同 分辨率层次的原始静态图像之中, 水印嵌入算法公式如下:
相关文档
最新文档