matlab数字水印算法及实现和源代码
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实现
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的数字水印设计——基于空域的水印实现
摘要数字水印(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进行数字水印的嵌入和提取,并给出相应的代码实现。
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数字水印算法及实现和源代码
1.数字作品的知识产权保护----数字作品(如电脑美术、扫描图像、数字音乐、视频、三维动画)的版权保护是当前的热点问题。
由于数字作品的拷贝、修改非常容易,而且可以做到与原作完全相同,所以原创者不得不采用一些严重损害作品质量的办法来加上版权标志,而这种明显可见的标志很容易被篡改。
----“数字水印”利用数据隐藏原理使版权标志不可见或不可听,既不损害原作品,又达到了版权保护的目的。
目前,用于版权保护的数字水印技术已经进入了初步实用化阶段,IBM公司在其“数字图书馆”软件中就提供了数字水印功能,Adobe公司也在其著名的Photoshop软件中集成了Digimarc公司的数字水印插件。
然而实事求是地说,目前市场上的数字水印产品在技术上还不成熟,很容易被破坏或破解,距离真正的实用还有很长的路要走。
2.商务交易中的票据防伪----随着高质量图像输入输出设备的发展,特别是精度超过 1200dpi 的彩色喷墨、激光打印机和高精度彩色复印机的出现,使得货币、支票以及其他票据的伪造变得更加容易。
----另一方面,在从传统商务向电子商务转化的过程中,会出现大量过度性的电子文件,如各种纸质票据的扫描图像等。
即使在网络安全技术成熟以后,各种电子票据也还需要一些非密码的认证方式。
数字水印技术可以为各种票据提供不可见的认证标志,从而大大增加了伪造的难度。
3.证件真伪鉴别----信息隐藏技术可以应用的范围很广,作为证件来讲,每个人需要不只一个证件,证明个人身份的有:身份证、护照、驾驶证、出入证等;证明某种能力的有:各种学历证书、资格证书等。
国内目前在证件防伪领域面临巨大的商机,由于缺少有效的措施,使得“造假”、“买假”、“用假”成风,已经严重地干扰了正常的经济秩序,对国家的形像也有不良影响。
通过水印技术可以确认该证件的真伪,使得该证件无法仿制和复制。
4.声像数据的隐藏标识和篡改提示----数据的标识信息往往比数据本身更具有保密价值,如遥感图像的拍摄日期、经/纬度等。
基于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的数字水印设计基于空域的水印实现
摘要数字水印(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代码)数字⽔印技术作为信息隐藏技术的⼀种,不可见性和鲁棒性是它的两个主要特点,通常在⽔印嵌⼊时需要确定⽔印的嵌⼊量,来平衡不可见性和鲁棒性之间的关系,若嵌⼊量过⼩,不可见性好⽽鲁棒性差,若嵌⼊量过⼤,则不可见性差⽽鲁棒性强,嵌⼊量最佳的取值可以通过遗传算法来确定,现在常⽤的有蚁群算法,果蝇算法,粒⼦群算法等等。
对于不可见性,我们可以直观地⽤视觉来判断,⽽对于鲁棒性,我们⽆法直接的判断⼀个⽔印算法的鲁棒性强弱,需要进⾏⼀系列的攻击测试,来判断其鲁棒性。
下⾯,我将介绍数字⽔印常见的⼏种攻击类型,分别从理论,代码和实例来展开。
1. 常见的攻击类型按照攻击原理可以将攻击类型分为四⼤类:简单攻击,同步攻击,削去攻击,混淆攻击。
(1) 简单攻击简单攻击是试图对整个⽔印化数据(嵌⼊⽔印后的载体数据)进⾏操作来削弱嵌⼊的⽔印的幅度(⽽不是试图识别⽔印或分离⽔印),导致数字⽔印提取发⽣错误,甚⾄根本提不出⽔印信号。
常见的有:压缩(JPEG,MPEG)、噪声(2)同步攻击同步攻击是试图破坏载体数据和⽔印的同步性,被攻击的数字作品中⽔印仍然存在,⽽且幅度没有变化,但是⽔印信号已经错位,不能维持正常⽔印提取过程所需要的同步性。
同步攻击通常采⽤⼏何变换⽅法。
同步攻击⽐简单攻击更加难以防御。
因为同步攻击破坏⽔印化数据中的同步性,使得⽔印嵌⼊和⽔印提取这两个过程不对称。
常见的有:缩放,剪切,旋转(3)削去攻击削去攻击试图通过分析⽔印化数据,估计图像中的⽔印,将⽔印化数据分离成为载体数据和⽔印信号,然后抛弃⽔印,得到没有⽔印的载体数据,达到⾮法盗⽤的⽬的。
常见的有:合谋攻击(4)混淆攻击混淆攻击是试图⽣成⼀个伪源数据、伪⽔印化数据来混淆含有真正⽔印的数字作品的版权常见的有:IBM攻击(这⾥主要介绍前两种,简单攻击和同步攻击。
)2. 理论知识及代码2.1 压缩图像的JPEG压缩内容⽐较多,后⾯有机会了单独开⼀个帖⼦写吧。
基于LSB的数字水印算法及MATLAB实现
基于LSB 的数字水印算法及MATLAB 实现加密算法宗岳,王恺山东科技大学 山东,中国 ***************摘要—LSB 是一种简单传统的信息隐藏算法,属于数字水印技术中的一种。
本文首先介绍了LSB 技术的原理和特点,然后讨论了基于LSB 的数字水印算法。
最后利用MATLAB 2010 b2对这一算法的加密过程进行了仿真。
关键词:LSB 数字水印 信息隐藏 MATLABI. 介绍随着计算机应用逐渐广泛、网络技术的迅速发展,使音频、视频等多媒体信息都能以数字形式传输和播放,从而使大规模非授权拷贝成为了可能,而这样会损害音乐、电影、书籍和软件等出版业的发展,为了保护知识产权引发了一个很有意义的研究方向:信息隐藏。
本文首先介绍了了数字水印技术的原理和分类,接着对LSB 算法原理及LSB 算法实现进行了介绍,最后使用MATLAB 对其加密过程进行了仿真。
II. 数字水印技术的基本原理数字水印的主要 目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息版权的内容,如公司标志、媒体作者、特定代码等,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。
数字水印的具体内容、算法、提取或检测过程根据实际应用有不同的要求。
数字水印的嵌入和提取过程如图1,图2所示。
图1 数 字水印的嵌入过程图2 数字水印的提取过程图1是数字水印的嵌入过程,加入密钥可以提高数字水印的隐蔽性、抗攻击性,而并非是必须的。
根据用途不同,,嵌入的水印有些是需要还原的,而有些则只需验证水印的存在性,前者需要数字水印的提取算法,而图2需要数字水印的检测算法,根据具体的水印算法,嵌入或提取的过程可能有所不同。
III. 数字水印的分类数字水印技术可以从不同的角度进行分类,因此有多种分类方法。
按数字水印的特性可分为鲁捧数字水印和脆弱数字水印。
鲁棒数字水印主要用于标识数字媒体信息的版权信息,它要求嵌入的水印能够抵抗对媒体的常规编辑和恶意攻击,在对媒体进行如:裁剪、旋转、缩放、压缩的变换后水印信息不受到较大损害。
基于LSB的图像数字水印实验
基于LSB的图像数字⽔印实验1. 实验类别设计型实验:MATLAB设计并实现基于LSB的图像数字⽔印算法。
2. 实验⽬的了解信息隐藏中最常⽤的LSB算法的特点,掌握LSB算法原理,设计并实现⼀种基于图像的LSB隐藏算法。
条件实验条件3. 实验(1) Windows 2000或Windows Xp以上操作系统;(2) MATLAB 6.5以上版本软件;(3)图像⽂件4. 实验原理基于LSB的图像数字⽔印任何多媒体信息在数字化时都会产⽣物理随机噪声,⽽⼈的感官系统对这些随机噪声并不敏感。
替换技术就是利⽤这个原理,通过使⽤秘密信息⽐特替换随机噪声,从⽽实现信息隐藏⽬的。
图像⾼位平⾯对图像感官质量起主要作⽤,去除图像最低⼏个位平⾯并不会造成画⾯质量的下降。
利⽤这个原理可⽤秘密信息(或称⽔印信息)替代载体图像低位平⾯以实现信息嵌⼊。
LSB算法选⽤最低位平⾯来嵌⼊秘密信息,最低位平⾯对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,可采⽤冗余嵌⼊的⽅式来增强稳健性加以解决,即在⼀个区域中嵌⼊相同的信息,提取时根据该区域中的所有像素判断。
1.嵌⼊⽔印.m脚本代码:clear all;clc;picpath = input('请输⼊图⽚绝对路径(加单引号):');watermark_path = input('请输⼊⽔印⽂件绝对路径(加单引号):');msgfid = fopen(watermark_path,'r'); % 打开秘密⽂件,读⼊秘密信息[key,count] = fread(msgfid,'ubit1'); % 读取秘密信息,存⼊key,count为成功读⼊了多少位fclose(msgfid); % 关闭⽂件i = imread(picpath);i1 = i(:,:,1); % 提取RGB第1层嵌⼊⽔印[row,col] = size(i1); % x⾏y列contents = row * col; % 图像能嵌⼊⽔印最⼤⽐特数if count > contentsdisp('warning: 当前图⽚容量⽆法通过LSB⽅法嵌⼊所有⽔印信息!按enter退出matlab.');pause;quit;elsedisp(['当前图⽚通过LSB能嵌⼊的最⼤⽔印⽐特数为: ',num2str(contents),' bits']);endkey_counter = 1;round_counter = 0;total_watermark_bits = 0;if mod(count,row) == 0round = floor(count/row);elseround = floor(count/row) + 1;endfor ii=1:1:roundfor jj = 1:1:rowi1(jj,ii) = bitset(i1(jj,ii),1,key(key_counter,1));% bitset函数改变像素值最后⼀位bit为⽔印bit值key_counter = key_counter + 1;total_watermark_bits = total_watermark_bits + 1;if key_counter > countbreak;endend %内层forround_counter = round_counter + 1;disp(['当前嵌⼊轮数: ',num2str(round_counter)]);if key_counter > countdisp(['LSB嵌⼊正常结束!共嵌⼊⽔印⽐特数: ',num2str(total_watermark_bits),' bits']);break;endend %外层fori(:,:,1) = i1;imwrite(i,'E:\new\LSB_watermarked.bmp');figure;subplot(1,2,1);imshow(picpath);title('原始图像');subplot(1,2,2);imshow(i);title('LSB嵌⼊⽔印后的图像');运⾏截图:2.提取⽔印.m脚本代码:clear all;clc;picpath = input('请输⼊待提取LSB⽔印图⽚绝对路径(加单引号):');watermark_bits = input('请输⼊提取的⽔印⽐特数:');i = imread(picpath); % 读取含有⽔印信息的彩⾊图像i1 = i(:,:,1);key = zeros(watermark_bits,1); % 创建⼀个watermark_bits⾏1列的全0矩阵,⽤于存放⽔印⽐特[row,col] = size(i1);key_counter = 1;round = 0;round_counter = 0;total_watermark_bits = 0;if mod(watermark_bits,row) == 0round = floor(watermark_bits/row);elseround = floor(watermark_bits/row) + 1;endfor ii = 1:1:roundfor jj = 1:1:rowkey(key_counter,1) = bitget(i1(jj,ii),1); % 提取图像矩阵的bit⽔印信息key_counter = key_counter + 1;total_watermark_bits = total_watermark_bits + 1;if key_counter > watermark_bitsbreak;endend %内层forround_counter = round_counter + 1;disp(['当前提取轮数: ',num2str(round_counter)]);if key_counter > watermark_bitsdisp(['LSB⽔印提取正常结束!共提取⽔印⽐特数:',num2str(total_watermark_bits),' bits']);break;endend %外层forfobject = fopen('E:\new\LSB_watermark.txt','w'); % 以只写模式打开⼀个名为mark_message.txt的⽂件,不存在则创建之fwrite(fobject,key,'bit1'); % 将key矩阵中的数作为bit写⼊⽂件句柄为fobject的⽂件fclose(fobject); % 关闭⽂件句柄所对应的⽂件运⾏后hidden.txt与LSB_watermark.txt⽂件⽔印内容LSB⽔印实验的要点1.该实验选取的是彩⾊RGB图像,是3维图像,因此要选RGB中的某⼀层进⾏⽔印嵌⼊,可以选第1,2或3层,分别对于R,G,B层,本实验选择R层及第⼀层i1 = i(:,:,1)2.还应对图像所能容纳⽔印⽐特最⼤数进⾏检查,以防⽔印信息太多导致嵌⼊失败.3.嵌⼊完成后,要将选取的RGB层赋给原3维矩阵对应层i(:,:,1) = i14.代码注意if及for与end配对,⼀个if或for配⼀个end上述脚本在matlab6.5能正确运⾏.。
一种基于Wavelet—SVD数字水印算法的MATLAB实现
3 系统 应 用
该系统在宜 昌市全面应用 以来 . 虽然不到 2 年, 但取得 了很 好的效果 . 主要表现在 : 31 操作便捷 . . 效率提高 系统基 于浏览器朋 务器 ( /) 式 . 艮 Bs 模 操作简 单 , 据输 入方便快捷 . 数 摒弃 了传统 繁琐 的手工 登记、 检查 、 核 、 审 统计 工作 , 利用规 范化 、 标准 化、 科学和程序化的计算机网络流程 录入 。使用 图 2 单 位 专 业 人 数 统计 考 勤机 对参加继续教 育活动 的人 员进行现场考 勤登记 . 不但解决 了传统登记速度慢造成人员进 4 小 结 人会场 时排 队拥堵的现象 . 同时也减少人工登记带来的误差和不公正 性。 宜 昌市继续医学教育信息管理系统集继续 医学教育项 目管 理 学 3 数据准确 . . 2 客观公正 分管理及人员信息管理为一体 .实现 了继续医学 教育管 理科 学化 、 现 系统根据学员所属单位级别 和专业技术级别 。 动调用 《 昌市 代化和程序化 . 自 宜 节省了大量的人力 、 物力 , 大大提高了继续教育工作的 继续医学教育学分授予办法》 的相关规定 与标准 , 自动判别是否合格。 质量和效率 全市各级医疗卫生单位 、 医务人员的继续医学教育执行 在最大限度上降低 了各项标准 由手工录入而造成的 出错率 : 在数据查 情况实时在线统计并信息共享 . 非常有利于卫生管理部门了解当前信 询 、 中可生成各类报 表 . 统计 使继教管理人员能直 观地分析各类数据 息 . 掌握最新动态 . 实现继续医学教育一体化管理 , 了很好 的应 获得 趋势 . 更好地把握所有人员 的继续教育情况 用效果。 l 3 实时记录 . . 3 查询统计方便 本 系统充分利用现代网络技术 . 实现了全市继续 医学教育资源 的 【 参考文献 】 网络共享 。 通过网页浏览 器实现学分 自 助查询 功能 . 卫生行政主管部 [ ] 卿. 医学教 育学术 活动管 理工 作探 讨[ . 医学教 育 ,0 3 1 1 胡瑞 继续 J 继续 ] 20 ,7 门足不 出户可以查询本地 区所有卫 生专业 技术 人员继续 医学教 育情 ( )6 7 3 :- M] 人民卫生 出版社 ,0 0 1 9 18 2 1 : 1 —2 . 况。每 名医务人员亦可上网查看相关继教管理政策 、 息、 信 本人学分 。 [ ] 2 孟群新 中国继续医学教育发展历程 【 . [] 3 郭川 军. 于 We 方 式 的学 生档 案管 理系统 的设 计与 实现 【. 息技 术 , 基 b J信 ] 个统计 页面实例如图 2 所示 20 (2 :0 - 0 . 0 6 1 ) 1 5 1 6 3 智能管理 . . 4 实用性强 [] 4张彦通 , 刘春生 , 张有声 . 实施学分制 , 推进高校教学管理模式改革[. J中国大 ] 该系统与考勤 系统联合使用 . 对各级继续医学教育项 目实现智能 学教学,0 2 4 :3 1 2 0 () 1 — 5 管理 , 参学人员学分的授予 由系统根 据出勤情况 自动完成 . 同时系统 f ] 芝英. 于 We 5金 基 b方式 的继续医学教 育学分 管理 系统【 . 国继 续 医学 教 J中 ] 根据卫生专业技术人员 的单 位级别和技术级别 自动判别 年度学分是 育 ,0 0 ̄:3 3 . 2 1( 3 — 5 否达标 。 35 有的放矢 . . 针对性强 [ 责任编辑 : ] 周娜 以往 的继续教育针对性不强 . 一些基层 医疗 机构 中, 继续医学教
利用Matlab进行数字水印与版权保护的方法总结
利用Matlab进行数字水印与版权保护的方法总结引言:随着信息技术的快速发展,数字媒体的使用已经成为人们生活的一部分。
然而,数字媒体的盗版现象也日益严重,这对于版权保护提出了巨大挑战。
数字水印技术作为一种应对盗版问题的手段,逐渐受到了广大研究者的重视。
本文将总结利用Matlab进行数字水印与版权保护的各种方法,以期为相关研究提供一些参考。
一、数字水印技术的基本原理数字水印技术是通过在数字媒体中嵌入特定的信息,以实现版权保护的目的。
其基本原理是将数字水印信息与原始媒体进行融合,使得人眼无法察觉水印的存在,同时能够在未经授权的复制或者修改方面进行鉴别。
二、Matlab在数字水印技术中的应用1. 数字水印的嵌入与提取Matlab提供了一些常用的方法,如频域相关和空域相关等,可用于数字水印的嵌入与提取。
通过Matlab强大的图像处理功能,可以对原始媒体进行一系列的变换、嵌入水印信息,并能够在水印保护数据的传输过程中进行提取和验证。
2. 图像处理与特征提取Matlab具有灵活的图像处理函数和工具箱,可以用于数字媒体的图像预处理,改变图像的特征,增强数字水印的可靠性和抗攻击性。
例如,可以利用Matlab进行图像的降噪、平滑处理,提取图像的边缘信息以及重要特征点,以增加数字水印的鲁棒性。
3. 抗攻击与鲁棒性分析在数字水印技术中,抗攻击能力和鲁棒性是非常重要的指标。
Matlab提供了多种方法和函数,例如小波变换、图像压缩等,可以用于对数字水印的抗攻击性进行分析和评估。
通过Matlab的模拟仿真,可以评估数字水印在媒体攻击、失真压缩等情况下的抗干扰能力和鲁棒性。
4. 数字水印算法的改进与优化Matlab是一种非常适合进行算法实现和验证的工具。
通过Matlab平台,可以将新的数字水印算法快速实现并进行验证。
同时,Matlab提供了优化和调优的函数和工具箱,可以对数字水印算法进行优化,提高数字水印的嵌入效率和提取准确性。
基于MATLAB数字水印系统设计
• 4.按内容划分
• 按数字水印的内容可以将水印划分为有意义水印 和无意义水印。有意义水印是指水印本身也是某 个数字图像(如商标图像)或数字音频片段的编 码;无意义水印则只对应于一个序列号。有意义 水印的优势在于,如果由于受到攻击或其他原因 致使解码后的水印破损,人们仍然可以通过视觉 观察确认是否有水印。但对于无意义水印来说, 如果解码后的水印序列有若干码元错误,则只能 通过统计决策来确定信号中是否含有水印。
• 2)通用性:比较好水印算法大多都实用于多类媒 体格式与文件格式。通用性在特定程度上也代表 易用性。
• 3)计算效率高:在软件和硬件方面,水印算法也 应该能被有效的实现。需要特别注意的是,在分 布式网络上的多媒体数据监视方面,水印检测算 法的能够快速完成。
2.2数字水印技术的分类
• 数字水印的分类方法有很多种,不同的出发点导 致了不同的分类,他们之间既有联系又有区别, 本文主要介绍按水印的嵌入域划分。
•
II=II+1;
•
end
•
end
•
end
• end
•
%分块DCT反变换
• watermarked_image(y:y+blocksize-
1,x:x+blocksize-1)=idct2(dct_block);
1)*8:j*8),(1+(i-1)*8):i*8)));
•
fc(xx)=1/64*sum(sum((cover_object((1+(j-
1)*8:j*8),(1+(i-1)*8):i*8)-pjhd(xx)).^2));
•
xx=xx+1;
• end
• end
基于Matlab的数字图像水印算法设计设计
基于Matlab的数字图像水印算法设计设计1、绪论本章主要介绍信息隐藏技术的背景和研究意义、国内外信息隐藏技术研究现状,并给出全文的结构安排。
1.1信息隐藏技术的背景和研究意义从二十世纪九十年代开始,网络信息技术在全世界范围内取得了迅猛发展,它极大方便了人们之间的通信和交流。
借助计算机网络所提供的强大的多媒体通信功能,人们可以方便、快速地将数字信息(数字音乐、图像、影视等方面作品)传到世界各地,一份电子邮件可以瞬息间传遍全球[1-7]。
但在同时计算机网络也成为犯罪集团、非法组织和有恶意的个人利用的工具。
从恶意传播计算机病毒,到非法入侵重要部门信息系统,窃取重要机密甚至可使系统瘫痪;从用计算机进行金融犯罪,到利用表面无害的多媒体资料传递隐蔽的有害信息,对计算机信息系统进行恶意攻击的手段可谓是层出不穷。
信息隐藏技术在保密通信、版权保护等领域中都具有相当广泛的应用价值,根据不同应用背景,信息隐藏技术可以分为两个重要分支隐写术(Stegano Graphy)和数字水印[8](Digital Watermarking)。
数字水印主要是为了保护知识产权的,通过在原始媒体数据中嵌入信息来证实该媒体的所有权归属问题。
数字水印的主要目的不是限制对媒体访问,而是确保媒体中水印不被篡改或消除。
因此稳健性是数字水印最基本要求之一。
数字水印中的稳健性是指水印图像经过一些常见改变后,水印仍具有较好可检测性。
这些改变包括常见的图像处理手段(如数据压缩、低通滤波、图像增强、一次抽样、二次量化、A/D和D/A转换等等)、几何变换和几何失真、噪声干扰、多重水印(Multiple Watermarking)的重叠等。
对不同应用场合,要求具有不同的稳健性。
但需要指出的是,存在另一种与稳健水印性质相反的水印,被称为易损水印(Fragile Watermarks),它们被用来证实原始媒体是否被改动过。
稳健性在整个水印系统设计中具有很重要的分量,这也是将隐写术和数字水印分别对待的原因之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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行以上。