1、第三章图像信息隐藏与水印3.1 LSB图像信息隐藏【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解信息隐藏中最常用的LSB算法特点,掌握LSB算法原理,设计并实现一种基于图像的LSB隐藏算法;了解如何通过峰值信噪比来对图像质量进行客观评价,并计算峰值信噪比。【实验环境】【实验环境】(1)Windows XP或Vista操作系统(2)MATLAB7.1科学计算软件 (3)BMP灰度图像文件【原理简介】【原理简介】多媒体信息在数字化时,会产生物理随机噪声,而人的感观系统对这些随机噪声不敏感。替换技术就是
2、利用这个原理,通过使用秘密信息比特替换随机噪声,从而完成信息隐藏目标。BMP灰度图像的位平面图如右,每个像素值为8bit二进制值,表示该点亮度。不同位平面对视觉影响不同,可用下面系列图像表示。去除第一位平面的图像和第一位平面去除第1-4位平面的图像和第1-4位平面去除第1-7位平面的Lena图像和第1-7位平面 图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降。利用这个原理可用秘密信息(或称水印信息)替代载体图像低位平面以实现信息嵌入。算法选用最低位平面来嵌入秘密信息。最低位平面对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,解决办法可采用冗余嵌入
3、的方式来增强稳健性。即在一个区域(多个像素)中嵌入相同的信息,提取时根据该区域中的所有像素判断。【实验步骤实验步骤】(1)(1)隐藏算法隐藏算法(2)(2)计算峰值信噪比计算峰值信噪比(1)(1)隐藏算法隐藏算法算法分为三个部分实现:隐藏算法 提取算法 测试脚本(2)(2)计算峰值信噪比计算峰值信噪比 峰值信噪比定义:峰值信噪比函数 测试脚本2,2,maxx yx yx yx yx ypPSNRXYpp【思考题】【思考题】1.LSB算法可以替换最低位,也可以采用随机算法来替换低第四位中的任何一位,因为图像低四位中的任意一位的改变不影响图像文件的视觉效果,自行设计一个LSB隐写算法,将秘密信息随
4、机嵌入到原始载体每个像素的低四位中的任意一位。2.设计一种算法,用水印信息(二值图像)的高四位替换载体图像(灰度图像)的低四位,并提取水印信息。3.2 二值图像信息隐藏【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解二值图像的特点,掌握基于二值图像的信息隐藏原理,设计并实现两种基于二值图像的信息隐藏方法。【实验环境】【实验环境】(1)WindowsXp或Vista操作系统(2)MATLAB7.1科学计算软件 (3)二值图像文件【原理简介】【原理简介】二值图像又称为单色图像或黑白图像,一般用1或者0表
5、示黑色或白色像素点,利用二值图像信息隐藏的方法主要是根据二值图像中黑白像素的数量的比较来隐藏信息。方法是把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0;如果白色像素的个数大于一半,则表示嵌入1,但是当需要嵌入的比特与所选区域的黑白象素的比例不一致时,为了达到希望的像素关系,则需要修改一些像素的颜色。该方法存在一定的缺陷,没有明确界定哪些像素可以修改以便于隐藏秘密信息,二值图像中某些像素的修改可能会引起二值图像视觉效果上的较大变化,相应的水印嵌入算法可能在较大程度破坏图像的质量。为达到较好的隐藏效果,可以采用游程编码方法在二值图像中隐藏信息。游程编码
6、的概念在图像压缩的过程中经常使用,如下图所示的编码为:,。其中0表示白色像素点,1表示黑色像素点。游程编码像素分布图 秘密信息嵌入的时候修改二值图像的游程长度,如果秘密信息位是0,则修改该游程长度为偶数;如果为1,则修改游程长度为奇数;如果秘密信息的取值与游程长度的奇偶性相匹配,则不改变游程长度。提取的时候根据游程长度奇偶性提取出秘密信息。在隐藏信息的时候,改变游程的奇偶性是通过对下一个游程的第一个像素的像素值进行修改,因此当下一个游程的值为1的时候不能修改。修改后的游程长度不能隐藏信息,因此隐藏信息的位置是选取游程长度数组的偶数位来隐藏。【实验步骤】【实验步骤】1.1.嵌入秘密信息嵌入秘密信
7、息 2.2.提取秘密信息提取秘密信息提取秘密信息时,提取方需知道隐藏的秘密信息的数量,使用隐藏的秘密信息的数量值来对载体图像进行分块。3.3.游程编码方法在二值图像中游程编码方法在二值图像中隐藏信息隐藏信息携秘载体在视觉效果上和原始载体有很大变化,通过不断修改hidden.txt文本的值来增加隐藏的信息容量。隐藏的信息越多,图像的分块就越细,隐藏的效果就越好。方案中修改像素的位置非常固定,都是修改每个图像块的所有行前面的像素,这样隐藏信息后的图像在视觉效果上和原始图像存在较大差别,违背了信息隐藏不改变视觉效果的原则。为改变上述算法,可以采用游程编码方法在二值图像中隐藏信息。采用游程编码方式隐藏
8、的信息量较大,而且隐写后的载体图像和原始载体图像从视觉效果上看差别不大,是较好的一种二值图像信息隐藏方法。【思考题】【思考题】1.二值图像信息隐藏另一种方法原理如下:将二值图像分块,使用一个与图像块大小相同的密钥二值图像块,与每一个图像块按像素进行“与”运算,“与”运算的结果可以确定是否在该块中嵌入数据,或嵌入怎样的数据。设计并实现该算法。3.3 Patchwork图像信息隐藏【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解Patchwork信息隐藏特点,掌握基于Patchwork的图像信息隐藏原理
9、,设计并实现一种基于Patchwork信息隐藏方法。【实验环境】【实验环境】(1)Windows XP或Vista操作系统(2)MATLAB7.1科学计算软件 (3)BMP图像【原理简介】【原理简介】Patchwork是指从载体数据中选择一些数据组成两个集合,然后通过修改这两个集合之间的某种关系来携带水印信息。这两个集合可以是两个系数、两组系数或者是两个特征量。两个集合之间的关系可以是大小关系、能量关系、逻辑关系和奇偶性关系等。Patchwork方法嵌入水印时,通过修改集合之间的某种关系来嵌入水印;提取水印时,则根据对应的关系来提取嵌入的水印信息。Patchwork方法最大优点之一就是可以实现
10、盲检测。Patchwork可以适用于时/空域、变换域和压缩域,本节主要介绍时域下的典型Patchwork方法。Patchwork方法典型算法只能隐藏1bit的信息,也就是只能说明该图像是否存在水印,隐藏的信息量比较小,但是该算法的鲁棒性较强。该算法的原理如下:随机选择两个集合A=ai和B=bi,要求A和B中含有相同图像系数,设为n;将集合A中所有样点的像素值增加d,同时将集合B中所有样点的像素值减少d,这样两个集合中的样值都经过微小的改动。选择集合A和B的方法很多,但PatchWork方法是基于以下假设的,也就是说随机选择的两个样本集合的均值相同。本节中方法是根据图像的横坐标和纵坐标之和的奇偶
11、性不同将图像分为两组,将横坐标和纵坐标之和为偶数的所有系数上增加常量d=2.3,将横坐标和纵坐标之和为奇数的所有系数上减少常量d=2.3。第二种方法是随机选择N对像素点(ai和bi),然后将ai点的值增加d,将bi点的像素值减少d。【实验步骤】1.1.嵌入秘密信息嵌入秘密信息 2.2.提取秘密信息提取秘密信息原始图像和携密图像从视觉效果上几乎相同。提取时,首先将两个图像块集合的样本分别求平均值,计算两个样本均值的差来判断水印信息是否存在。把整个图像中的像素全部分成两组,也可以通过随机的方式实现。【思考题】【思考题】1.本节介绍的方案都是假设A和B两个集合在未修改之前样本的均值相同,但实际情况下
12、样本均值之间的差异并不总为零。读者可自行从图像的像素中挑选A和B两个集合,使得这两个集合样本的均值尽量接近,越接近,隐藏和提取的效果越好。设计并实现一种Patchwork算法,使得挑选的两个集合A和B的均值尽可能接近。3.4 调色板图像隐写【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【实验目的】【实验目的】了解调色板图像的特点,掌握基于调色板图像的信息隐藏原理,设计并实现一种基于调色板图像的信息隐藏算法。【实验环境】【实验环境】(1)WindowsXP或Vista操作系统(2)MATLAB7.1科学计算软件 (3)调色板图像【原理简介】【原理
13、简介】调色板图像含有一个不超过256种颜色的调色板,并对应每种颜色的R、G、B三种分量的值,图像内容中的每个像素存储的是一个不超过8比特的索引值,其指向调色板中的对应颜色就是图像的真实色彩。大部分图像用到的颜色数小于256种,甚至小于128种,因此可以在调色板中隐藏秘密信息。调色板图像的调色板中最多包含256种颜色,若改变这些颜色的排列顺序并相应的改变图像像素数据,不会对图像内容造成任何影响。因此隐藏秘密信息最简单方法就是重新排列调色板中的这些颜色,同时修改索引值,但是许多软件生成的调色板都是按照亮度和使用频率排列的,如果在调色板中打乱颜色会使其毫无隐藏可言。如果调色板颜色小于128种,可复制
14、一个调色板,得到一个扩展的调色板,隐藏0使用原始索引值,隐藏1使用扩展索引值,但是重复颜色的调色板会引起使用者怀疑。其他方法来隐藏信息:对于调色板中的每一种颜色,可以通过修改颜色的蓝色分量(人眼对于绿色分量最为敏感,对蓝色分量最不敏感)来增加一种接近的但不完全相同的颜色,这样就形成一个扩展的调色板。嵌入算法如下:对调色板中所有颜色,把像素点的蓝色分量增加,然后将这种颜色添加到调色板中形成一个扩展调色板。根据需要嵌入的消息长度,随机选取隐藏的位置,当嵌入0 的时候,使用原调色板中的颜色,当嵌入1的时候,使用扩展后调色板中的颜色。提取的时候,需要知道原始调色板的长度、随机选择的种子数和隐藏的信息数
15、量,对于选中的像素点,如果使用原调色板中的颜色,提取信息0,如果使用扩展调色板中颜色数,提取信息1。【实验步骤】【实验步骤】1.1.嵌入秘密信息嵌入秘密信息 2.2.提取秘密信息提取秘密信息3.5 DCT域图像水印【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解频域水印的特点,掌握基于DCT系数关系的图像水印算法原理,设计并实现一种基于DCT域的图像水印算法。【实验环境】【实验环境】(1)WindowsXP或Vista操作系统(2)MATLAB7.1科学计算软件 (3)图像文件【原理简介】【原理简介
16、】在信号的频域(变换域)中隐藏信息要比在时域中嵌入信息具有更好的鲁棒性。一副图像经过时域到频域的变换后,可将待隐藏信息藏入图像的的显著区域,这种方法比LSB以及其他一些时域水印算法更具抗攻击能力,而且还保持了对人类感官的不可察觉性。常用的变换域方法有离散余弦变换(DCT)、离散小波变换(DWT)和离散傅立叶变换(DFT)等。下面介绍一种提取秘密信息的时候不需要原始图像的盲水印算法。算法的思想是利用载体中两个特定DCT系数的相对大小来表示隐藏的信息。载体图像分为88分块,进行二维DCT变换,分别选择其中的两个位置,比如用(u1,v1)和(u2,v2)代表所选定的两个系数的坐标。如果Bi(u1,v
17、1)Bi(u2,v2),代表隐藏1,如果相反,则交换两系数。如果,代表隐藏0,如果相反,则交换两系数。提取的时候接收者对包含水印的图像文件进行二维DCT变换,比较每一块中约定位置的DCT系数值,根据其相对大小,得到隐藏信息的比特串,从而恢复出秘密信息。但是在使用上述算法的过程中,注意到如果有一对系数大小相差非常少,往往难以保证携带图像在保存和传输的过程中以及提取秘密信息的过程中不发生变化。因此在实际的设计过程中,一般都是引入一个Alpha变量对系数的差值进行控制,将两个系数的差别放大,可以保证提取秘密信息的正确性。【实验步骤】【实验步骤】1.1.嵌入水印信息嵌入水印信息 2.2.提取秘密信息提
18、取秘密信息【思考题】【思考题】1.本节算法提取方需知道隐藏方嵌入数据的比特数,如何设计一种新的算法来克服这个问题。3.6 完全脆弱图像水印【实验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解什么是脆弱性水印和半脆弱性水印,掌握实现半脆弱水印和脆弱水印的原理,设计并实现一种完全脆弱水印的实现方法。【实验环境】【实验环境】(1)WindowsXP或Viata操作系统(2)MATLAB7.1科学计算软件 (3)图像文件【原理简介】【原理简介】在保证多媒体信息一定感知质量的前提下,将数字、序列号、文字、图像标志
19、等做为数字水印嵌入到多媒体数据中,当多媒体内容受到怀疑时,可将该水印提取出来用于多媒体内容的真伪识别,并指出篡改位置,甚至攻击类型等。这种水印称为脆弱性水印,脆弱性水印分为完全脆弱性水印和半脆弱性水印。当原始载体内容发生改变时,被嵌入的水印信息就遭到了破坏,因此图像的接收方就不能完整的提取水印信息。从而可以鉴定原始数据是否被篡改。完全脆弱水印主要用于完整性保护,图像不能发生任何修改,图像如果发生一个比特的修改都会影响水印信息的提取。而半脆弱水印对一般图象处理(如:滤波、加噪声、替换、压缩等)有较强的免疫能力(鲁棒性),但是能检测到对图像的恶意篡改,一般用于内容保护。完全脆弱水印系统要求图像的任
20、何部分均不能被修改,检测器对图像任何细微的变动都会做出拒绝判决。完全脆弱水印一般是从空域LSB水印算法演变过来,其中最有代表性的是校验和(checksum)算法、公钥认证水印算法和查找表水印算法。校验和算法的原理如下:首先计算每个像素字节最高7位的checksum值,Checksum值定义为一系列相同长度数据的二进制位的模2和。此长度为8 个连续像素中的最高7位的联合长度,共56位。在Checksum 值计算过程中,整幅图像中的每个像素都参与计算,但每个像素只计算一次,最后结果为56位的数据。随后在图像中随机选取56个像素,将每个像素的最低位变为与上述Checksum 比特位相同,以此存储Ch
21、ecksum 值,从而完成水印的嵌入。图像认证时,只需要将被检图像的Checksum值与提取的水印信息进行比较,便可得知图像是否被篡改。在这个算法中,随机选取的存放Checksum 值的像素位置以及Checksum 值本身构成了水印信息。在提取水印时,只需计算图像的Checksum 值并与水印信息中的Checksum 值进行比较,便可知水印是否因遭受篡改而被破坏。【实验步骤】【实验步骤】1.Checksum1.Checksum水印嵌入水印嵌入 2.2.判断图像是否被修改判断图像是否被修改 3.3.判断图像是否被篡改判断图像是否被篡改【思考题】【思考题】1.采用公钥水印认证系统实现的完全脆弱水印
22、算法的原理是:利用Hash函数的单向性和能在输入发生微小变化的时得到完全不同输出值的特点。嵌入过程如下:先将原始图像(m*n)按照i*j大小进行分块,第r个分块记为Xr,同时将水印图像扩充到与原始图像同样尺寸大小,按照i*j进行分块,第r个分块记为Br,将Xr的LSB位置置0,得到的分块记为Xr*。以Xr*和M、N为参数,进行Hash运算,得到Pr。将Pr与Br 进行Bit位上的异或运算,将异或的结果置入Xr*的LSB位得到结果记为Yr,最后,将分块的Yr重新组合,即可得到嵌入后的图像。Hash运算可以采用MD5来实现。设计与实现一种基于公钥的水印认证算法。3.7 基于内容认证的半脆弱水印【实
23、验目的】【实验目的】【实验环境】【实验环境】【原理简介】【原理简介】【实验步骤】【实验步骤】【思考题】【思考题】【实验目的】【实验目的】了解基于图像内容级认证的半脆弱性水印的原理,掌握实现半脆弱水印方法,设计并实现一种基于内容认证的半脆弱性水印算法。【实验环境】【实验环境】(1)WindowsXP或Vista操作系统(2)MATLAB7.1科学计算软件 (3)图像文件【原理简介】【原理简介】基于上节介绍的脆弱性水印的基础,本节的算法从给定图片中的水印生成区域提取出水印,与从水印嵌入区提取的水印相比较,如果相同则未被篡改,反之则被篡改。本算法的流程如下:首先将图片分成8*8像素块,把图像所有的块
24、分成两个不相交的集合Pp和Pq,根据定理2,取k=0,则每个块对要嵌入的水印信息为,10()00p qpp qFvF()pv 水印的嵌入:为了完成水印嵌入,设置可接受的JPEG压缩品质因子阀值m,根据产生的水印比特,将前3bit嵌入一个块对中一块的选定位置,后3bit嵌入另一块的相应位置。通过以下的方法来修改选定位置上的DCT系数:11()()()()()()()()()sgn()()()()()aapmpTpppppmpTpmf v Q vLSB f vvF vF vf vf v Q vLSB f vvQ v()()Integer Rounding()()ppmF vf vQ v()()1mmQvQv其中:水印检测:从给定的图片中的水印生成区域提取出水印,与从水印嵌入区提取的水印相比较,如果相同则未被篡改,反之则被篡改。算法流程:【实验步骤】【实验步骤】1.1.嵌入水印嵌入水印 2.2.检测水印检测水印
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。