您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 信息隐藏LSB算法实验报告
本科生课程考试答题本考生姓名__________考生学号_______专业班级________指导老师__________考试科目_________考试日期__年__月__日1目录一、实验任务和要求..................................................................................................21.1实验任务..........................................................................................................21.2实验要求..........................................................................................................2二、实验算法LSB原理..............................................................................................2三、实验环境和采用的工具........................................................................................3四、具体实现步骤........................................................................................................34.1LSB算法水印嵌入.........................................................................................34.2LSB算法水印提取.........................................................................................44.3LSB算法实验测试.........................................................................................5五、源码分析................................................................................................................55.1LSB算法水印嵌入.........................................................................................55.2LSB算法水提取.............................................................................................95.3计算PSNR值...............................................................................................12六、实验测试..............................................................................................................136.1LSB水印的嵌入...........................................................................................136.2水印的提取...................................................................................................146.3对水印进行鲁棒性测试...............................................................................146.4对水印进行有效性测试...............................................................................146.5对水印计算PSNR值...................................................................................146.6对水印容量进行分析...................................................................................15七、结论......................................................................................................................152一、实验任务和要求1.1实验任务•信息载体:每个人自己的一张外景照片;•水印信息:每个人将学号、姓名按上下两列写在白纸上,然后手机拍摄,转化为黑白图片,作为水印信息;•信息隐藏方法:LSB算法(空域或频域)。1.2实验要求实验可采用matlab6.5以上版本(C++、Java等),程序分为嵌入与检测两部分,最好有友好的操作方式;程序代码需要注释,编码简洁可靠明了,易检查。实验测试要求有:•需对信息处理进行鲁棒性测试;•对水印嵌入的有效性进行测试;•计算嵌入前后的PSNR值;•对水印容量进行分析。二、实验算法LSB原理LSB是L.F.Turner和R.G.vanSchyndel等人提出的一种典型的空间域信息隐藏算法。LSB最低有效位法(LeastSignificantBit;LSB)是运用人类视觉系统无法觉察细微变化之掩蔽效果,将秘密信息隐藏在图像像素的最低位,具有计算速度快且容易秘密信息隐藏在图像像素的最低位,具有计算速度快且容易实现有点。通常最低位是表示图像细节信息,一般人眼不容易觉察,也因此容易成为一般信号处理和压缩时被抛弃的部分。本次主要是针对24位的BMP图片做处理,算法通过把信息嵌入到24位真彩色BMP图象中,从而达到隐藏的效果。通常BMP图像可以用一个M*N的矩阵表示,矩阵的数值表示一个像素的色彩信息,一般用8位二进制数表示。每个像素对应的数值的每位bit其意义和作用不尽相同,我们可以把每个数据的每一位bit构成一个平面数据,称为位平面,其中由每一个像素最低比特位组成的称为第0个位平面,为最不重要为平面,相应的比特位称为最低有效位(LSB)。LSB算法原理就是通过修改最不重要的LSB后,图像的改变根本无法用肉眼识别,以此来实现以图像为载体的信息隐藏。3三、实验环境和采用的工具此次试验环境及工具见下表3.1所示。表3.1实验环境及工具项目内容实验环境Windows7(64位)开发工具MicrosoftVisualStudio2012(C#)图像处理Matlab2010Ra辅助工具Photoshop/画图四、具体实现步骤实验主要包括三个方面,LSB算法水印嵌入、LSB算法水印提取以及针对LSB算法性能的测试。4.1LSB算法水印嵌入LSB算法水印嵌入主要步骤是加载载体和水印图片、将图片文件流转换成二进制数组(设计两个转换函数:长整型转换成24位和1字节转换成8位,详见后面源码分析)、获得水印长度判定是否大于载体长度大约1/8(程序中有详细的图4.1LSB水印嵌入流程图计算公式)、大于则重新选择水印;符合则进行水印长度嵌入(设计长度值嵌在4载体BMP第55-77位字节(24位)的LSB处)、循环获得水印内容并嵌入(内容从载体BMP的78位字节处开始,载体每8位嵌入1位字节水印)、最后保存隐写体、备份载体。该嵌入步骤说明下:(1)长度嵌入在载体第55-77字节,这是因为24位BMP图前54位存储的是图片本身信息(如果嵌入可能会破坏载体图片导致嵌入后的隐写体无法正确读取);选择24位字节是因为可以嵌入24位的二进制长度,即能够嵌入2的24方水印信息(此范围合适,当然最终能否嵌这么多还要看载体信息长度)。(2)备份载体,这是为后面进行嵌入效果的对比和PSNR值做准备。4.2LSB算法水印提取LSB算法水印提取与嵌入基本相同,主要步骤是加载隐写体、选择提取水印的保存名字及位置、将图片文件流转换成二进制数组(同嵌入)、提取隐写体第55-77位的水印信息长度、判定长度是否大于隐写体长度的大约1/8(程序中有详细的计算)、大于,则提示可能不包含水印(判定方式做的比较简单);小于,则开始从隐写体的78位逆置换提取水印、保存水印、选择原始水印进行比较。图4.2LSB水印提取流程图说明:1.因为长度不满足,系统就不做提取(设计比较简单);2.水印对比中,如有嵌入过程,则不需选择;直接提取需要选择原始水印。54.3LSB算法实验测试测试这一模块主要有:鲁棒性测试、可行性分析、计算PSNR值以及水印容量分析等内容。这一部分的实验步骤主要按照它们的分析进行,具体见下。1.鲁棒性检测主要是对嵌入水印后的隐写体进行各种变换(比如旋转、裁剪、放大缩小等),转换后再进行隐写体的水印提取。其中变换可以借用Photoshop或者画图来简单实现。2.LSB水印嵌入的可行性分析主要是针对嵌入是否合理、提取是否成功等进行分析。作为最简单常用的水印嵌入算法LSB,它的可行性分析具体见后面。3.计算PSNR值,这个依据PSNR值计算公式,使用C#语言界面化实现。具体步骤就是加载隐写体和原始载体,计算PSNR值并显示。4.水印容量分析,这个在设计实现LSB算法时已经做了初步定论,分析的实现可以简单计算出来或者利用matlab实现。五、源码分析5.1LSB算法水印嵌入根据前面的原理和分析,我主要是利用visualstudio2012结合C#语言进行LSB算法的实现。LSB水印嵌入主要是建立LSBEncrypt类来实现,其中有如下五个函数,具体功能见下表5.1所示。表5.1LSB水印嵌入所用函数及功能函数名功能byte[]ConvertToBinaryArray(longx)将长整型数转换为24位二进制字节数组ConvertToBinaryArray(byte[]array)将1个字节转换为8位二进制字节数组voidHideInfoLength()在载体55-77字节LSB替换为水印的长度voidHideInfoContent()将水印信息以每1个字节写入载体图像从第78字节开始的每8字节块的LSB中voidExecuteEncrypt()执行LSB水印信息嵌入操作根据上表5.1中的函数及功能,主要的源码分析见下面:namespaceLSB_Algorithm{classLSBEncrypt{//原始载体图片路径privatestring_originalPicPath=null;6//水印信息路径privatestring_hidingInfoPath=null;//原始载体图片的文件流privateFileStream_picStream=null;//水印信息的文件流privateFileStream_infoStream=null;///summary///LSBEncrypt类的构造函数////summary///paramname=path1原始图片路径/param///
本文标题:信息隐藏LSB算法实验报告
链接地址:https://www.777doc.com/doc-5210753 .html