基于MATLAB的数字水印算法实现
一、课题介绍
数字水印(Digital Watermark)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。数字水印是信息隐藏技术的一个重要研究方向。随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。
当数字水印应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。数字水印的认证方面主要ID卡、信用卡、ATM卡等上面数字水印的安全不可见通信将在国防和情报部门得到广泛的应用。
本文主要是根据所学的数字图象处理知识,在MATLAB环境下,通过系统编程的方式,建立并实现基于DCT域的数字水印加密系统。该系统主要包含数字水印的嵌入与提取,仿真结果表明,数字水印算法具有有效性、可靠性、抗攻击性、鲁棒性和不可见性,能够为数字媒体信息在防伪、防篡改、认证、保障数据安全和完整性等方面提供有效的技术保障。
二、课题提纲
1 设计目的
2 设计要求
3 数字水印技术基本原理
3.1 数字水印基本框架
3.2 算法分类
3.2.1 DCT法
3.2.2 其他方法
3.3 实际需要考虑的问题
3.3.1 不可见性
3.3.2 鲁棒性
3.3.3 水印容量
3.3.4 安全性
4 基于DCT变换仿真
4.1 算法原理
4.1.1 准备工作
4.1.2 选取8*8变换块
4.1.3 边界自适应
4.1.4 DCT变换与嵌入
4.1.5 恢复空域8
4.2 嵌入算法扩展
4.2.1 RGB彩色图像三个矩阵的划分
4.2.2 八色彩色水印
4.3 水印的提取
4.4 仿真程序
5 结果分析4
结束语7
参考文献8
三、数字水印技术基本原理
3.1 数字水印基本框架
一个数字水印系统一般包括三个基本方面:水印的生成、水印的嵌入和水印的提取或检测。数字水印的嵌入和提取的一般过程基本框架如图3.1,图3.2所示。
水印生成算法(G)
数字水印(W)
原始载体数据(J)
水印嵌入算法(E)
私钥/公钥(K)
嵌入水印后的数据(IW)
图3.1 水印嵌入的一般过程基本框架
待检测数据(IW)
水印检测算法(D)
私钥/公钥(K)
估计水印(W)/相似度检测(Sim)
数字水印(W)/原始数据(I)
图3.2 水印检测的一般过程基本框架
3.2 算法分类
根据水印实现方法不同,数字水印可分为空(时)域数字水印和频域数字水印。
空域数字水印是直接在信号空间上叠加水印信号,而频域法加入数字水印的原理是首先将原始信号(语音一维信号、图像二维信号)变换到频域,常用的变换一般有DWT、DCT、DFT、WP和分形。然后,对加入了水印信息的信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息的信号。
频域法检测水印的原理是将原始信号与待检测信号同时进行变换域变换,比较两者的区别,进行嵌入水印的逆运算,得出水印信息。如果是可读的水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出的水印与已知水印作比较,由相关性判断,待检测信号含不含水印,故水印的检测有两个结束点。
频域法有以下优点:嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见性;视觉系统(HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过程中;频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内的水印编码。
3.2.1 DCT法
对原始信号做DCT的算法:Cox和Piva等人提出的DCT技术的经典之作。Cox利用随机数发生器产生标准正态序列作为水印信息对图像进行整体DCT变换后,选取除去DC系数之外部分较低频率系数叠加水印信息;Piva则修改整幅图像的中频部分。
对原始信号分块后,再作DCT的算法:Hsu和Wu把图像进行8*8分块,将一个二进制序列作为水印放入DCT的中频区;有些学者则计算整个图像的DCT,把一个实数序列嵌入DCT的中频系数上。选择中频区的好处是一方面尽量减少嵌入信息对图像主观视觉的影响;同时,尽量避免有损压缩对水印信息可能带来的损失。
还有一种DCT方法就是把水印信息嵌入到高频系数上,但是采用这种方法,抗压缩性非常差。
3.3 实际需要考虑的问题