matlab数字水印算法及实现和源代码

合集下载

matlab dwt方法水印嵌入与提取

matlab dwt方法水印嵌入与提取

一、水印技术概述水印技术是指在数字媒体中嵌入一些特定信息,以保护数字内容的版权和完整性。

水印技术可以分为可见水印和不可见水印,其中不可见水印更适用于数字图像和音频等领域。

本文主要介绍基于Matlab的离散小波变换(DWT)方法在数字图像中的水印嵌入与提取。

二、离散小波变换(DWT)简介离散小波变换是一种多尺度分析的方法,它可以将信号分解成不同频率成分的低频部分和高频部分。

在数字图像处理中,DWT可以对图像进行多尺度分析,将图像分解为不同尺度的子图像,使得图像的局部特征得以突出。

三、水印嵌入的步骤在Matlab中使用DWT方法进行水印嵌入的具体步骤如下:1. 读取原始图像和水印图像。

2. 对原始图像进行DWT分解,得到低频部分LL和高频部分LH、HL、HH。

3. 对水印图像进行预处理,如调整大小和灰度处理。

4. 对水印图像进行DWT分解,得到低频部分LL_w和高频部分LH_w、HL_w、HH_w。

5. 将水印信息嵌入到原始图像的DWT高频部分,可以选择直接替换部分高频系数或加减小幅度的高频系数。

6. 对修改后的DWT系数进行逆变换,得到含有水印信息的新图像。

四、水印提取的步骤在Matlab中使用DWT方法进行水印提取的具体步骤如下:1. 读取含水印的图像。

2. 对含水印图像进行DWT分解,得到低频部分LL'和高频部分LH'、HL'、HH'。

3. 对提取水印的图像进行DWT分解,得到低频部分LL_w'和高频部分LH_w'、HL_w'、HH_w'。

4. 根据嵌入水印时的处理方式,从高频部分中提取含水印信息。

5. 对提取的水印信息进行后处理,如灰度处理和大小调整。

五、实验与结果分析本文以一张数字图像为例,使用Matlab中的DWT方法进行水印嵌入和提取实验。

实验结果显示,DWT方法在水印嵌入和提取方面具有较好的鲁棒性和隐蔽性,对一定程度的噪声和攻击具有一定的抵抗能力。

基于DCT变换的数字水印研究及其MATLAB实现

基于DCT变换的数字水印研究及其MATLAB实现

S u y o i i lwa e m a k b s d o t d n d g t t r r a e n DCT n h e l a i n a a d t e r a i to z
o ATLAB i u a i n nM sm l to
YANG n Xi
出水 印的存在 。这样 , 字水 印技 术包 含水 印 的嵌 数 入 和提取 两个过程 。
数字 媒体 因其 数字特 征极易被 复制 、 改 、 篡 非法 传播
以及蓄意攻击, 其版权保护, 1益引起人们 的关 已3 注 。数 字水印技术 就是在 这种背 景下应运 而生 。数 字水 印技术 利用人类 的听觉 、 视觉 系统 的特点 , 图 在
( oeeo pol toi Eli e g C o g i nvri f ot a dT l o mu i t n , hn q g4O6 , hn ) C lg f te c nc I n 血 , h nq gU i s yo s n e cm nc i sC o gi O5 C i l O er g e n e t P s e ao n O a
像、 音频 、 频 中加 入 一定 的信息 , 人们 很 难 分辨 视 使 出加人水 印后 的资 料 与原 始 资料 的 区别 , 通过 专 而 门的检验步骤 又能 提取 出所 加 信 息 , 以此 证 明原 创 者对数 字媒体 的版权 ¨ 。 J
研 究数字水 印技术 的最初 目的是用 于保护 数字
1 9— 2
数字 水印提取 从 水 印数 据 中提取 出水 印信 号 ,
数字水 印嵌 人是将 水 印信号 加 人原 始数 据 中 ,
其过 程如 图 1 所示 。
产 品的版权 , 随着研究 的进一 步深入 , 但 它在信息 安

基于Matlab的数字水印设计——基于空域的水印实现

基于Matlab的数字水印设计——基于空域的水印实现

摘要数字水印(Digital Watermarking)技术是我们生活中经常见到的信息隐藏技术。

它将一些标识信息(即数字水印)直接嵌入数字载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到。

空间数字水印是信息隐藏技术的一个重要研究方向,另一类是频率数字水印。

空间数字水印采用最低有效位(LSB)算法,通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。

本实验是基于matlab的数字水印设计——基于空域的水印实现。

关键词:信息隐藏技术;空间数字水印; LSB算法;matlab目录1 设计任务与目的 (1)2 MATLAB的简介及应用 (1)2.1 MATLAB简介 (1)2.2 MATLAB应用 (1)3 数字水印技术 (2)3.1 数字水印技术的发展 (2)3.2 水印分类 (2)3.3 数字水印的特点 (3)3.4 数字水印技术的基本原理 (4)4 基于LSB的数字水印算法 (5)4.1 LSB算法原理 (5)4.2 LSB算法的实现 (6)4.2.1 水印嵌入算法 (7)4.2.2 水印提取算法 (9)5 MATLAB软件仿真 (11)5.1 仿真结果 (11)5.1.1 水印嵌入仿真 (11)5.1.2 水印提取仿真 (12)5.2 仿真分析 (13)结论 (14)参考文献 (15)基于Matlab的数字水印设计——基于空域的水印实现1 设计任务与目的(1)通过课程设计把自己在大学中所学的知识应用到实践当中。

(2)在课程设计的过程中掌握程序编译及软件设计的基本方法。

(3)深入了解利用Matlab设计基于Matlab的数字水印设计——基于空域的水印实现。

(4)提高自己对于新知识的学习能力及进行实际操作的能力。

(5)锻炼自己通过网络及各种资料解决实际问题的能力。

2 MATLAB的简介及应用2.1 MATLAB简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

matlab数字水印嵌入与提取代码

matlab数字水印嵌入与提取代码

数字水印技术是一种用于保护数字信息安全和保护知识产权的重要技术手段。

Matlab作为一种强大的数学计算软件,具有丰富的数字信号处理和图像处理工具包,能够很好地支持数字水印的嵌入和提取。

本文将介绍如何使用Matlab进行数字水印的嵌入和提取,并给出相应的代码实现。

1. 数字水印嵌入数字水印嵌入是将一段隐藏的信息嵌入到载体中,使得这段信息对于一般观察者来说是不可察觉的。

在Matlab中,可以使用一些图像处理工具进行数字水印的嵌入。

需要读入载体图像和待嵌入的数字水印。

载体图像可以使用Matlab 中的imread函数进行读取,得到一个包含图像像素信息的矩阵。

待嵌入的数字水印可以是一段文本、一幅小型图像或者一段音频信号。

接下来,可以选择合适的嵌入算法进行数字水印的嵌入。

常用的算法包括LSB替换算法、DCT变换算法以及扩频水印算法等。

这些算法都可以在Matlab中找到相应的实现。

将得到的嵌入水印后的图像保存起来,成为带有数字水印的图像。

可以使用Matlab中的imwrite函数将处理后的图像保存到本地。

2. 数字水印提取数字水印提取是将嵌入在载体中的数字水印提取出来,还原成原始的水印信息。

在Matlab中,可以利用数字信号处理和图像处理工具进行数字水印的提取。

需要读入带有数字水印的载体图像。

同样可以使用Matlab中的imread函数进行读取。

接下来,根据数字水印嵌入时所采用的算法,使用相应的提取算法进行数字水印的提取。

提取算法通常与嵌入算法是对应的,可以在Matlab中找到相应的实现。

将提取得到的数字水印展示出来,可以是一段文本、一张图像或者一段音频信号。

在Matlab中可以利用文本处理工具、图像处理工具和音频处理工具展示提取得到的数字水印信息。

3. 示例代码以下是一个简单的示例代码,演示了如何在Matlab中进行数字水印的嵌入和提取:数字水印嵌入image = imread('carrier_image.jpg'); 读入载体图像watermark = imread('watermark_image.jpg'); 读入待嵌入的数字水印watermarked_image = embed_watermark(image, watermark); 使用embed_watermark函数进行数字水印的嵌入imwrite(watermarked_image, 'watermarked_image.jpg'); 保存带有数字水印的图像数字水印提取watermarked_image = imread('watermarked_image.jpg'); 读入带有数字水印的载体图像extracted_watermark = extract_watermark(watermarked_image); 使用extract_watermark函数进行数字水印的提取imshow(extracted_watermark); 展示提取得到的数字水印信息以上代码中,embed_watermark和extract_watermark分别是数字水印的嵌入和提取函数。

matlab数字水印算法及实现和源代码

matlab数字水印算法及实现和源代码

1.数字作品的知识产权保护----数字作品(如电脑美术、扫描图像、数字音乐、视频、三维动画)的版权保护是当前的热点问题。

由于数字作品的拷贝、修改非常容易,而且可以做到与原作完全相同,所以原创者不得不采用一些严重损害作品质量的办法来加上版权标志,而这种明显可见的标志很容易被篡改。

----“数字水印”利用数据隐藏原理使版权标志不可见或不可听,既不损害原作品,又达到了版权保护的目的。

目前,用于版权保护的数字水印技术已经进入了初步实用化阶段,IBM公司在其“数字图书馆”软件中就提供了数字水印功能,Adobe公司也在其著名的Photoshop软件中集成了Digimarc公司的数字水印插件。

然而实事求是地说,目前市场上的数字水印产品在技术上还不成熟,很容易被破坏或破解,距离真正的实用还有很长的路要走。

2.商务交易中的票据防伪----随着高质量图像输入输出设备的发展,特别是精度超过 1200dpi 的彩色喷墨、激光打印机和高精度彩色复印机的出现,使得货币、支票以及其他票据的伪造变得更加容易。

----另一方面,在从传统商务向电子商务转化的过程中,会出现大量过度性的电子文件,如各种纸质票据的扫描图像等。

即使在网络安全技术成熟以后,各种电子票据也还需要一些非密码的认证方式。

数字水印技术可以为各种票据提供不可见的认证标志,从而大大增加了伪造的难度。

3.证件真伪鉴别----信息隐藏技术可以应用的范围很广,作为证件来讲,每个人需要不只一个证件,证明个人身份的有:身份证、护照、驾驶证、出入证等;证明某种能力的有:各种学历证书、资格证书等。

国内目前在证件防伪领域面临巨大的商机,由于缺少有效的措施,使得“造假”、“买假”、“用假”成风,已经严重地干扰了正常的经济秩序,对国家的形像也有不良影响。

通过水印技术可以确认该证件的真伪,使得该证件无法仿制和复制。

4.声像数据的隐藏标识和篡改提示----数据的标识信息往往比数据本身更具有保密价值,如遥感图像的拍摄日期、经/纬度等。

基于Matlab的数字水印设计――基于DCT域的水印实现

基于Matlab的数字水印设计――基于DCT域的水印实现

基于Matlab的数字水印设计――基于DCT域的水印实现沈阳理工大学数字图像处理课程设计摘要数字水印(Digital Watermark)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。

数字水印是信息隐藏技术的一个重要研究方向。

随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。

当数字水印应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。

数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。

数字水印的认证方面主要ID卡、信用卡、ATM卡等上面数字水印的安全不可见通信将在国防和情报部门得到广泛的应用。

本文主要是根据所学的数字图象处理知识,在MATLAB环境下,通过系统编程的方式,建立并实现基于DCT域的数字水印加密系统。

该系统主要包含数字水印的嵌入与提取,仿真结果表明,数字水印算法具有有效性、可靠性、抗攻击性、鲁棒性和不可见性,能够为数字媒体信息在防伪、防篡改、认证、保障数据安全和完整性等方面提供有效的技术保障。

关键词:数字水印;MATLAB;DCTI沈阳理工大学数字图像处理课程设计目录1 课程设计目的 ........................................................................... ............................... 1 2 课程设计要求 ........................................................................... ............................... 2 3 数字水印技术基本原理 ........................................................................... (3)3.1 数字水印基本框架 ........................................................................... ............. 3 3.2 算法分类 ........................................................................... .. (3)3.2.1 DCT法 ........................................................................... ...................... 4 3.2.2 其他方法 ........................................................................... ................... 4 3.3 实际需要考虑的问题 ........................................................................... (4)3.3.1 不可见性 ........................................................................... ................... 4 3.3.2 鲁棒性 ........................................................................... ....................... 5 3.3.3 水印容量 ........................................................................... ................... 5 3.3.4 安全性 ........................................................................... .. (5)4 基于DCT变换仿真 ........................................................................... (6)4.1 算法原理 ........................................................................... .. (6)4.1.1 准备工作 ........................................................................... ................... 6 4.1.2 选取8*8变换块 ........................................................................... ....... 7 4.1.3 边界自适应 ........................................................................... ............... 7 4.1.4 DCT变换与嵌入 ........................................................................... ...... 7 4.1.5 恢复空域 ........................................................................... ................... 8 4.2 嵌入算法扩展 ........................................................................... (8)4.2.1 RGB彩色图像三个矩阵的划分 ........................................................ 8 4.2.2 八色彩色水印 ........................................................................... ........... 8 4.3 水印的提取 ........................................................................... ......................... 9 4.4 仿真程序 ........................................................................... ............................. 9 5 结果分析 ........................................................................... ..................................... 14 结束语 ........................................................................... ............................................... 16 参考文献 ........................................................................... . (17)II沈阳理工大学数字图像处理课程设计1 课程设计目的数字水印技术是用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。

数字水印算法设计

数字水印算法设计

课程设计任务书学生姓名:蒋立豪专业班级:通信1303班指导教师:李瑞芳工作单位:信息工程学院题目: 数字水印算法设计初始条件:设计任务:学习掌握一种数字水印算法,选择两幅图像分别作为版权图像和水印图像,采用水印嵌入算法成生含水印图像。

采用水印提取算法,提取出嵌入水印。

并对水印算法的鲁棒性进行测试。

(1)掌握一种数字水印的嵌入与提取算法原理;(2)编写出水印嵌入算法的matlab程序,并给出水印嵌入前后的版权图像,并对嵌入效果进行分析说明;(3)编写出水印提取算法matlab程序,并给出水印原图和提取出的水印图像,并对水印的提取效果进行分析说明;(4)进行水印的抗攻击实验,噪声攻击,剪切攻击,缩放攻击,压缩攻击等。

测定提取前后水印的峰值信噪比(PSNR)和相关性(NC);时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日摘要 (I)Abstract (II)1 MATLAB概述 (1)1.1 MATLAB的优点 (1)2 数字水印概述 (2)2.1 数字水印技术的应用领域 (2)2.2 数字水印的基本特点 (4)2.3 数字水印的分类 (5)2.4 数字水印技术的研究动态 (7)3 典型的数字水印算法 (8)3.1 空域算法 (8)3.2 变换域算法 (8)3.3 压缩域算法 (10)3.4 NEC算法 (11)3.5 生理模型算法 (11)4 DCT算法的概述 (12)4.1. 离散余弦变换(DCT)的定义 (12)4.2 离散余弦变换(DCT)水印嵌入算法 (14)4.3 离散余弦变换(DCT)水印提取算法 (14)4.4 离散余弦变换(DCT)水印算法原理框图 (14)5 抗攻击实验 (16)5.1 水印嵌入和提取 (16)5.2 抗攻击实验 (19)5.2.1 噪声攻击 (20)5.2.2 滤波攻击 (21)5.2.3 压缩攻击 (22)5.2.4 剪切攻击 (23)5.2.5 旋转攻击 (24)6 小结与体会 (26)参考文献 (27)附录 (28)随着计算机通信技术和互联网的迅速发展,数字多媒体的传播业越来越方便快捷。

基于Matlab的数字水印设计基于空域的水印实现

基于Matlab的数字水印设计基于空域的水印实现

摘要数字水印(Digital Watermarking)技术是我们生活中经常见到的信息隐藏技术。

它将一些标识信息(即数字水印)直接嵌入数字载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察或注意到。

空间数字水印是信息隐藏技术的一个重要研究方向,另一类是频率数字水印。

空间数字水印采用最低有效位(LSB)算法,通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。

本实验是基于matlab的数字水印设计——基于空域的水印实现。

关键词:信息隐藏技术;空间数字水印; LSB算法;matlab目录1 设计任务与目的 (1)2 MATLAB的简介及应用 (1)2.1 MATLAB简介 (1)2.2 MATLAB应用 (1)3 数字水印技术 (2)3.1 数字水印技术的发展 (2)3.2 水印分类 (2)3.3 数字水印的特点 (3)3.4 数字水印技术的基本原理 (4)4 基于LSB的数字水印算法 (5)4.1 LSB算法原理 (5)4.2 LSB算法的实现 (6)4.2.1 水印嵌入算法 (7)4.2.2 水印提取算法 (9)5 MATLAB软件仿真 (11)5.1 仿真结果 (11)5.1.1 水印嵌入仿真 (11)5.1.2 水印提取仿真 (12)5.2 仿真分析 (13)结论 (14)参考文献 (15)基于Matlab的数字水印设计——基于空域的水印实现1 设计任务与目的(1)通过课程设计把自己在大学中所学的知识应用到实践当中。

(2)在课程设计的过程中掌握程序编译及软件设计的基本方法。

(3)深入了解利用Matlab设计基于Matlab的数字水印设计——基于空域的水印实现。

(4)提高自己对于新知识的学习能力及进行实际操作的能力。

(5)锻炼自己通过网络及各种资料解决实际问题的能力。

2 MATLAB的简介及应用2.1 MATLAB简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

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

摘要:数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣。

但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编程工具便成为一个亟待解决的问题。

本文从数字水印技术本身的特点、一般模型和典型算法出发,简要地介绍了一种可以快速上手的高效的实用语言——Matlab。

最后,作者给出一个用Matlab实现数字水印实例。

关键词:数字水印Matlab Visual C++6.0 DWT DCT1 引言作为传统加密系统的有效补充办法,从1993年Caronni正式提出数字水印到现在短短几年里,无论是在国内还是在国外对数字水印的研究都引起了人们极大的关注。

但数字水印技术的发展还很不成熟,应用也处于初级阶段。

在我国,知识产权问题是一个敏感的话题,只有深入开展数字水印技术的研究,尽快制定我国的版权保护水印标准,才能使我们在未来可能的国际知识产权纠纷中取得主动权。

那么掌握高效的工具,便成为一个必须解决的问题。

本文就针对数字水印本身的特点,介绍了一种高效的实用工具——MATLAB。

2 数字水印技术2.1 数字水印技术的复杂性数字水印技术涉及到通信理论、编码理论、噪声理论、视听觉感知理论、扩频技术(Spre ad Spectrum)、信号处理(Signal Processing ) 技术、数字图像处理(Digital Image Processing)技术、多媒体(Multimedia)技术、模式识别(Pattern Reorganization)技术、算法设计(Algorithm Design)等理论,用到经典的DFT(Discrete Fourier Transf orm)、DCT(Discrete Cosine Transform)变换和近代最先进的数学工具----小波(Wa velet)。

数字水印又是一个横跨计算机科学、生理学、密码学、数字、数字通信等多门学科,并与I nternet的发展密切相关的交叉科学。

数字水印的多学科性导致数字水印技术研究的难度和复杂性。

所以,针对数字水印技术本身的跨学科特点,找出一种合适的编程工具,往往可以起到事半功倍的效果。

下面我们从数字水印的一般模型出发,来逐步介绍MATLAB。

2.2数字水印的一般模型数字水印的一般模型如图1所示:频域法加入数字水印的原理是首先将原始信号(语音一维信号、图像二维信号)变换到频域,常用的变换一般有DWT、DCT、DFT、WP和分形。

然后,对加入了水印信息的信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息的信号。

频域法检测水印的原理是将原始信号与待检测信号同时进行变换域变换,比较两者的区别,进行嵌入水印的逆运算,得出水印信息。

如果是可读的水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出的水印与已知水印作比较,由相关性判断,待检测信号含不含水印,故水印的检测有两个结束点。

2.3数字水印技术的常用算法数字水印算法一般可分为两种空域法和频域法,频域法有以下优点:1)嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见性;2)视觉系统(HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过程中;3)频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内的水印编码。

所以我们也以频域法为主介绍MATLAB在数字水印技术中的使用。

DCT法(Discreste CosineλTransformation)对原始信号做DCT的算法:Cox 和Piva 等人提出的DCT技术的经典之作。

Cox利用随机数发生器产生标准正态序列作为水印信息对图像进行整体DCT变换后,选取除去DC系数之外部分较低频率系数叠加水印信息;Piva则修改整幅图像的中频部分。

对原始信号分块后,再作DCT的算法:Hsu和Wu 把图像进行8*8分块,将一个二进制序列作为水印放入DCT的中频区;有些学者则计算整个图像的DCT,把一个实数序列嵌入DCT的中频系数上。

选择中频区的好处是一方面尽量减少嵌入信息对图像主观视觉的影响;同时,尽量避免有损压缩对水印信息可能带来的损失。

还有一种DCT方法就是把水印信息嵌入到高频系数上,但是采用这种方法,抗压缩性非常差。

DFT法(DiscreteλFourier Transformation)Swanson 等利用时域小波变换和频率掩蔽特性结合,实现多分辨率视频水印;Kundur和Hatzinakos 把水印植入灰度图像的小波变换域。

其它变换域还有Fourier-mellin 域、Fourier 变换域、分形或WP(WaveletλPack age)等。

以上的变换域算法计算量都非常大,编程实现这些变换和逆变换也需要好好下一番功夫,由此造成研究人员把大量的时间和精力浪费在与水印算法研究无关的问题上。

3 可实现数字水印技术的高效实用工具——Matlab3.1Matlab简介Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。

它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。

Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。

由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal pr ocessing)、控制系统(control system)、神经网络(neural network)、图像处理(imag e processing)、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。

3.2用Matlab研究数字水印的优点集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。

λ强大的数学运算功能。

能够方便、高效地实现音频、视频中的大量矩阵运算。

λ提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。

用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。

λMATLAB与目前最强大的编程工具——VisualλC++具有良好的接口。

3.3Matlab函数介绍(以MATLAB5.3为例)在介绍函数之前,我们必须明确一点:作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号。

这里,我们仅仅简单介绍与水印有关的函数,具体函数的用法请读者参考文献[2]。

数据输入输出函数λimread()和imwrite():可以读写bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd 格式文件。

读索引文件时,还可以得到相应的调色板数据。

auread()、auwrite()、wavread()和wavwrite():可以方便地读写au和wa v文件,并可控制其中的位及频率。

图像显示与声音播放λimshow():显示一幅图像;imfinfo():可以得到读入图像的信息。

如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等wavplay():播放wav声音文件。

当然,也可以把处理后的wav文件保存后再用其它工具播放。

wavrecord():可以对处理后的wav文件进行录音。

变换频函数λ对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。

离散余弦变换(DCT)λdct(),dct2():分别实现一维信号和二维信号的DCT(离散余弦变换);idct(),idct2():分别实现一维信号和二维信号的IDCT(逆向离散余弦变换);离散傅里叶变换(DFT)λfft(),fft2():分别实现一维信号和二维信号的DFT(离散傅里叶变换);ifft(),ifft2():分别实现一维信号和二维信号的IDFT(逆向离散傅里叶变换);离散小波变换(DWT)λdwt(),dwt2():分别实现一维信号和二维信号的DWT(离散小波变换);idwt(),idwt2():分别实现一维信号和二维信号的IDWT(离散小波变换);Wavedec2():多级二维小波分解函数;Waveinfo():提供小波包中所有的小波信息;另外,MATLAB中还有丰富的小波包处理函数,有兴趣的读者可参考文献[2]。

攻击函数λ对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。

MATLAB中的许多函数可以直接用来做的攻击测试。

旋转:rotate()可以对图像进行任意角度的旋转;剪裁:imcrop()可以按精确定位的各点坐标进行剪裁;滤波:filter()和filter2()可实现对一维信号和二维信号的滤波;抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击;jpeg压缩:imwrite()中jpg和quality参数能对图像进行可控jpg压缩;加各种噪声:imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击;放大/缩小:imresize()可以以指定的插值方法来对图像进行放大和缩小。

3.4一个用MATLAB编写的数字水印算法实例为证明MATLAB的高效性与实现简便性,我们以文献[1]的算法为例,给出在Windows9 8环境下MATLAB5.3中调试通过的完整源程序。

嵌入水印λ%定义常量size=256;block=8;blockno=size/block;LENGTH=size*size/64;Alpha1=0.02; Alpha2=0.1; T1=3; I=zeros(size,size); D=zeros(size,size); B W=zeros(size,size); block_dct1=zeros(block,block);%产生高斯水印,并显示水印信息;randn('seed',10);mark=randn(1,LENGTH);subplot(2,2,1);plot(mark);title('watermarc:Gaussian noise');%显示原图subplot(2,2,2);I=imread('lena264_264','bmp');imshow(I);title('origine image:I');%显示prewitt为算子的边缘图BW=edge(I,'prewitt');subplot(2,2,3);imshow(BW);title('edge of origine image');%嵌入水印k=1;for m=1:blocknofor n=1:blocknox=(m-1)*block+1; y=(n-1)*block+1;block_dct1=I(x:x+block-1,y:y+block-1);block_dct1=dct2(block_dct1);BW_8_8=BW(x:x+block-1,y:y+block-1);if m<=1|n<=1T=0;elseT=sum(BW_8_8); T=sum(T);endif T>T1Alpha=Alpha2elseAlpha=Alpha1;endblock_dct1(1,1)=block_dct1(1,1)*(1+Alpha*mark(k)); block_dct1=idct2(b lock_dct1);D(x:x+block-1,y:y+block-1)=block_dct1;k=k+1;endend%显示嵌入水印后的图像subplot(2,2,4);imshow(D,[]);title('embeded image:D');由些可以看到用MATLAB的编写一个完整的水印嵌入算法只需几十条语句便可以完成,而这些程序如果用C语言或其它高级语言编写程序至少在100行以上。

相关文档
最新文档