基于Matlab的数字水印设计基于空域的水印实现Word下载.docx
《基于Matlab的数字水印设计基于空域的水印实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于Matlab的数字水印设计基于空域的水印实现Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
![基于Matlab的数字水印设计基于空域的水印实现Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/11/cbe4646a-1125-40db-b590-3f35ca700b33/cbe4646a-1125-40db-b590-3f35ca700b331.gif)
(3)深入了解利用Matlab设计基于Matlab的数字水印设计——基于空域的水印实现。
(4)提高自己对于新知识的学习能力及进行实际操作的能力。
(5)锻炼自己通过网络及各种资料解决实际问题的能力。
2MATLAB的简介及应用
2.1MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
2.2MATLAB应用
MATLAB产品族可以用来进行以下各种工作:
1)数值分析
2)数值和符号计算
3)工程与科学绘图
4)控制系统的设计与仿真
5)数字图像处理技术
6)数字信号处理技术
7)通讯系统设计与仿真
8)财务与金融工程
MATLAB的应用围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域特定类型的问题。
3数字水印技术
3.1数字水印技术的发展
数字水印是一个崭新的信息隐藏技术,首次提出这个概念至今也不到20年。
由于还处在学术研究的高峰阶段,仅有少数应用研究和应用案例,所以还没有形成国际标准、国家标准和行业标准,目前发现除了"
国际知名的五家电脑及消费型电子产品主流公司,包括IBM及索尼等已就数字"
水印"
技术的共同标准达成协议"
的报道外,仅发现有宇飞信息工程有限责任公司起草并获得国家标准化部门备案的两个企业标准《印刷打印数字水印软件》(备案号:
1104-2002)和《基于容的、非密码机制的计算机与移动存储设备信息安全系统》企业标准(备案号:
400-2010)。
所以,学术界对数字水印技术的概念也没有统一的表述和界定。
3.2水印分类
数字水印技术可以从不同角度进行分类,因此有多种分类方法。
1)按特性划分
按水印的特性可以将数字水印分为鲁棒数字水印和易损数字水印两类。
2)按水印所附载的媒体划分
按水印所附载的媒体,我们可以将数字水印划分为图像水印、音频水印、视频水印、文本水印以及用于三维网格模型的网格水印等。
3)按容划分
按数字水印的容可以将水印划分为有意义水印和无意义水印。
4)按用途划分
按水印的用途,我们可以将数字水印划分为票证防伪水印、保护水印、篡改提示水印和隐蔽标识水印。
5)按水印隐藏的位置划分
按数字水印的隐藏位置,我们可以将其划分为时(空)域数字水印、频域数字水印、时/频域数字水印和时间/尺度域数字水印。
时(空)域数字水印是直接在信号空间上叠加水印信息,而频域数字水印、时/频域数字水印和时间/尺度域数字水印则分别是在DCT变换域、时/频变换域和小波变换域上隐藏水印。
随着数字水印技术的发展,各种水印算法层出不穷,水印的隐藏位置也不再局限于上述四种。
应该说,只要构成一种信号变换,就有可能在其变换空间上隐藏水印。
本实验重点研究基于空域的数字水印技术。
3.3数字水印的特点
作为数字水印技术基本上具有下面几个方面的特点。
1)安全性:
数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;
当然数字水印同样对重复添加有很强的抵抗性
2)隐蔽性:
数字水印应是不可知觉的,而且应不影响被保护数据的正常使用;
不会降质;
3)鲁棒性:
是指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。
可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。
主要用于保护的数字水印易损水印(FragileWatermarking),主要用于完整性保护。
当容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。
4)水印容量:
是指载体在不发生形变的前提下可嵌入的水印信息量。
嵌入的水印信息必须足以表示多媒体容的创建者或所有者的标志信息,或购买者的序列号,这样有利于解决纠纷,保护数字产权合法拥有者的利益。
尤其是隐蔽通信领域的特殊性,对水印的容量需求很大。
3.4数字水印技术的基本原理
数字水印技术(DigitalWatermark):
技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。
目前主要有两类数字水印,一类是空间数字水印,另一类是频率数字水印。
空间数字水印的典型代表是最低有效位(LSB)算法,其原理是通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。
数字水印的主要目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息的容,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。
数字水印的具体容、算法、提取或检测过程根据实际应用有不同的要求。
数字水印的嵌入和提取或检测的通用模型如图3.1、图3.2所示。
图3.1数字水印的嵌入过程
图3.2数字水印的提取或检测过程
图3.1是数字水印的嵌入过程,通过密钥可以提高数字水印的隐藏性、抗攻击性,并非必须的输入。
根据不同的用途,嵌入的水印有些是需要还原的,而有些则需要验证水印的存在性,前者需要数字水印的提取算法,而后者需要数字水印的检测算法,根据具体的水印算法,嵌入或提取过程可能有所不同。
数字水印技术是从信息隐藏技术发展而来的,是数字信号处理,图像处理,密码学应用,算法设计等学科的交叉领域。
数字水印最早在1993年由Tirkel等人提出,在国际学术会议上发表题为”Electronicwatermark”的第一篇有关水印的文章,提出了数字水印的概念及可能的应用,并针对灰度图像提出了两种向图像最低有效位中嵌入水印的算法。
1996年在英国剑桥牛顿研究所召开了第一届国际信息隐藏学术研讨会,标志着信息隐藏学的诞生。
4基于LSB的数字水印算法
4.1LSB算法原理
最低有效位方法是最早提出来的最基础的空域图像信息隐藏方法,其他的许多空域算法都是从它的基本原理进行改进扩展得到的,使得LSB方法成为使用最广泛的隐藏技术之一。
现在有一些简单信息隐藏软件大多是运用LSB和调色板调整等相关技术将信息隐藏在24bit图像或256色图像之中,如:
HideandSeek,Stego-Dos,WhiteNoiseS-tools等经典信息隐藏软件。
最低有效位(leastsignificantbit,LSB)指的是一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用它来检测数的奇偶性。
最低有效位和最高有效位是相对应的概念。
在大端序中,lsb指最右边的位。
LSB(全大写)有时也指LeastSignificantByte,指多字节序列中最小权重的字节。
LSB算法利用了数字图像处理中位平面的原理,即改变图像的最低位的信息,对图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉。
以一幅256灰度的图像为例,256灰度共需要8个位来表示,但其中每一个位的作用是不一样的,越高位对图像的影响越大,反之越低的位影响越小,甚至不能感知。
图4.1显示了一幅200×
200像素的图像的8个位平面。
图4.1200×
200像素图像的8个位平面
图4.1中的第一是原始图像,后面依次是从高到低的位平面。
可以看出,较高的位平面反映了图像的轮廓等主要信息,而较低的位平面反映的是图像的细节信息,最低的2个位平面看上去和原始图像几乎没有相关性,像是噪声。
4.2LSB算法的实现
LSB算法实现较为简单,首先,需要考虑嵌入的数字水印的数据量,如果嵌入最低的1位,则可以嵌入的信息量是原始图像信息量的1/8,如果适用最低两位则可以嵌入的信息量是1/4,以此类推。
适用的最低位越多,嵌入的数字水印的信息量越大,同时对图像的视觉效果影响也越大。
然后,适当调整数字水印图像的大小和比特位数,以适应数字水印图像数据量的要求。
最后,对原始图像中要使用的最低位置0,再将数字水印数据放入原始图像的最低位即可。
下面通过MATLAB7.1来实现这一算法。
LSB算法原理程序代码:
clc;
clearall;
A=imread('
color.bmp'
);
%显示原始图像
subplot(3,3,1);
imshow(A);
title('
原始图像'
%显示8个位平面图像
fori=8:
-1:
1
A_bitplane=bitshift(bitget(A,i),i-1);
subplot(3,3,9-i+1);
%显示8个位图
imshow(A_bitplane);
title(['
位平面'
num2str(i)]);
end
MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化工具软件,利用MATLAB只需要几个函数和十来行语句就可以实现基本的LSB算法,而如果用C语言等程序语言来实现则可能需要上百行的语句。
以下是水印嵌入算法和提取算法的程序代码。
4.2.1水印嵌入算法
[C,map]=imread('
%读入原始图片
[m,map1]=imread('
word.bmp'
%读入水印图片
Mc=size(C,1);
%原图的行数
Nc=size(C,2);
%原图的列数
Mm=size(m,1);
%水印的行数
Nm=size(m,2);
%水印的列数
w_i=C;
%将原图值赋给w_i
forii=1:
Mc;
%将原图的最低有效位值换为水印的值
forjj=1:
Nc;
w_i(ii,jj)=bitset(w_i(ii,jj),1,m(ii,jj));
%调用bitset()函数将原图的最低位值换为水印的值
end
end
imwrite(w_i,'
lsb_watermark.bmp'
'
bmp'
%将嵌入水印图像写入lsb_watermark.bmp
figure
(1)
imshow(w_i,[])
嵌入水印后'
)%显示嵌入水印后的图片
figure
(2)
ims