1、实验一 基于图像的 LSB 信息隐藏算法一、 实验目的1、 了解和熟悉数字图像的读入和显示等基本操作。2、 了解不同“位平面”对图像质量的影响。3、 掌握不同图像格式之间的转换方法。4、 熟悉和掌握基于图像的 LSB 信息隐藏算法。5、 掌握对 LSB 算法的不可感知性的客观评价。6、 掌握 LSB 提取算法。二、实验内容1、结合 EXZAMPLE.M,查看不同 “位平面”对图像质量的影响。(1)运行 example.m 程序,将“位平面”的第 7、8 位设置为0 ,得到如下结果,如图所示:由图分析得:去掉第 7、8 为,此两位(低位)对图像质量没有明显影响,没有携带图像的有用信息。(2)运行
2、 example.m 程序,将“位平面”的第 3、4 位设置为0 ,得到如下结果,如图所示:由上图分析:对比左右两幅图像,可以看出去掉第 3、4 位对图像质量有较为明显的影响,携带有图像的有用信息。(2)运行 example.m 程序,将“位平面”的第 1、2 位设置为0 ,得到如下结果,如图所示:由图分析:对比左右两幅图像,可以看出去掉第 1、2 位对图像质量产生非常大的影响,携带有图像的大量有用信息。由此程序可以得出,不同“位平面”对图像的质量有不同程度的影响,第 1、2 位携带有有用信息,而第 7、8 位不含有图像的有用信息。2、运行 water.m 程序,理解不同图像格式之间的转换方法
3、。运行 water.m 程序,得到如下结果,如图所示:分析:可以在图像不同格式(RGB、灰度、二值)之间进行转换。3、阅读并 “完善 “ imbed.m 内容,掌握基于图像的 LSB 信息隐藏算法。(1)填写完善 imbed.m 程序,填写部分如下所示:(2)运行已完善的 imbed.m 程序,得到如下结果,如下图所示:分析:将水印嵌入灰度图像的“位平面”第 N=6 位,得到上图右图所示,与原图视觉效果没有区别,嵌入成功。4、编写 matlab 函数:sse(f,f0)、mse(f,f0) 、psnr(f,f0), 实现对上述算法不可感知性的客观评价。(1)编写完成 see(f,f0)函数,编
4、写完毕如下所示:然后,在 command 窗口输入如下程序:Img_imbeded=imread(Img_imbeded.bmp);Img_cover=imread(lena.bmp);Img_sse = sse(Img_imbeded,Img_cover) 运行得到图像的总方差值:(2)编写完成 mse(f,f0 )函数,编写完毕如下所示:然后,在 command 窗口输入如下程序:Img_mse = mse(Img_imbeded,Img_cover) 运行得到图像的总方差值:(3)编写完成 psnr(f,f0)函数,编写完毕如下所示:然后,在 command 窗口输入如下程序:Img_p
5、snr = psnr(Img_imbeded,Img_cover) 运行得到图像的峰值信噪比值:单位为 dB(分贝)分析:对伪装后的图像和载体图像进行不可感知性的客观评价,可以看出这种隐藏的峰值信噪比比较大,效果不是很好!5 运行 detect.m 程序,理解和掌握 LSB 提取算法的实现。运行 detect.m 程序,得到如下结果:容易看出所隐藏的信息被成功的提取出来,算法正确!(3)当取“位平面”N=8,运行Imbeddedm.m 和 dectect.m 程序,得到如下结果,如图所示:嵌入效果稍比 N=6 好些,提取出的秘密信息也正确!进行不可感知性评价,运行 sse(f,f0)、mse(
6、f,f0)、psnr(f,f0)函数,得到如下结果:与 N=6 相比其峰值信噪比增大,不可感知性更加好。故可得出,将秘密信息隐藏在最低位效果比较能取得较好的嵌入效果。三、分析及讨论通过这个实验,了解和掌握了 LSB 的隐藏算法以及提取算法,这是将每个像素点化为 8 位的“位平面” ,在低位嵌入秘密信息,以达到隐藏信息的目的。此方法存在一种缺陷,即提取信息时须知道信息隐藏“位” ,抗攻击能力不高。此外,在编程中应特别注意变量的类型,否则会造成错误。实验二 基于变换域的信息隐藏算法一、 实验目的1、 复习理解基于变换域的信息隐藏技术相关内容。2、 掌握基于变换域的信息隐藏方法。3、 了解 DCT
7、变换及其系数分布。4、 了解掌握相应的秘密信息提取思路,并编写提取程序。5、 总结 DCT 变换信息隐藏的思想并改进之。二、实验内容1、复习教材中基于变换域的信息隐藏(数字水印)技术相关内容。目前主要使用的变换域方法有:离散余弦变换(DCT) 、离散小波变换(DWT) 、离散傅里叶变换(DFT)等。本实验主要探讨离散余弦变换(DCT) ,DCT 变换首先将载体图像分为8x8 的像素块,然后进行而为 DCT 变换,得到 8x8 的 DCT 系数这些 DCT 系数从低频到高频按照 Zig-Zag 次序排列,左上角部分为直流和低频系数,右下角部分为高频系数,中间区域为中频系数。一般将隐藏信息嵌入在载
8、体中的中频部分,保持了图像的可视性。2、认真阅读,并运行调试 dct_imbed.m 内容,并思考该方法能否实现秘密信息的盲检测?调试运行程序,得到如下结果如图所示:分析:该程序的核心语句如下:在选定的中频系数中叠加秘密信息并没有采用所选择的 DCT 系数,而是直接对秘密信息编码后乘以嵌入强度,因此可以判断出嵌入秘密信息时不需要载体图像的参与,为盲检测。3、对应 dct_imbed.m 编程思路,编写相应的秘密信息提取程序 dct_detect.m,实现watermarked_image.bmp 中所嵌秘密信息的提取。编写程序完毕,如下:运行该程序,得到提取信息的结果,如下图所示:秘密信息提取
9、成功,说明算法是正确的。4、在 dct_imbed.m 和 dct_detect.m 的基础上进一步改进该 DCT 域隐藏算法。嵌入秘密信息和提取信息(1)嵌入信息程序编写完毕其中关键部分如下:运行程序,得到如下结果:实现了秘密信息的嵌入。(2)提取信息程序编写完毕,其中关键部分如下:运行程序得到如下结果:秘密信息提取成功,说明程序正确。(3)可通过改变嵌入信息强度 k 值来改善伪装图像的质量,若令 k=50,则得到如下结果:图像质量较以前有所改观。运行秘密信息提取程序,得到如下结果如图示:由图可以看出,提取信息过程中出现了一些错误,故此条件下秘密信息嵌入强度较低。三、分析及讨论通过这个实验,
10、了解和掌握了基于 DCT 变换域的秘密信息的隐藏和提取算法,将秘密信息隐藏在中频部分,既不较大影响图像质量,也具有一定的抗攻击能力。嵌入中也需考虑嵌入强度的影响,若选择不当就影响了图像的提取和传输中的抗攻击能力。实验三 回声隐藏算法一、实验目的1、了解“回声隐藏”的基本原理和数学模型。2、了解“倒谱”的计算方法。3、了解音频信号在 matlab 环境里的读、写、显示。4、掌握在“回声隐藏”基础上进行秘密信息的隐藏和提取方法。二、实验内容1、复习教材中有关“回声隐藏”的基本原理和数学模型的相关知识。在数字声音中隐藏信息有一种方法是回声隐藏发,它主要是利用了人耳在一个较强声音后的极短时间内的较弱声
11、音的不可觉察性。回声隐藏方法是在数字声音信号 中引入回声 ,引入回声的不同方法就()ft()ft代表了秘密信息。生成的伪装信号为 ,通过选择不同的延迟 来ct达到对秘密信息编码的目的,比如,秘密信息为“0” ,选择延迟为 ;秘密信息为“1” ,t选择延迟为 。为了在一段语音信号中隐藏多个秘密信息比特,需要把连续载体语音信t号先分成 L(m)个短序列块,每一个语音块利用回声隐藏方法隐藏一比特秘密信息。在每一块之间用一些不用的取样点隔开,并且间隔大小事随机选取的,这些间隔不会引起听者的察觉,并使得检测和提取秘密信息更加困难。在接受端提取秘密信息时,必须采取某种同步措施,使得接受者能够得到 L(m)
12、个信号块的起止位置,然后,在每一个信号块中采用快速傅里叶变换得方法,求得信号的自相关函数,自相关函数在延迟时间 或者 上出现峰值,就得到了隐藏的秘密信息。tt2、熟悉并掌握“倒谱”的计算方法。由于每段隐写声音信号都是一个卷积性组合信号,直接从时域或频域确定回声延时存在一定困难,可采用卷积同态滤波系统来处理,将这个卷积性组合信号变为加性组合信号。传统方法大都用倒谱分析来确定回声延时: 1()ln()yCFy其中:F 和 分别为傅立叶变换和逆变换。在信号的倒谱 中,延迟时间 d 处会1 ()yCn出现幅度为 a 的峰值,然后根据峰值出现位置的不同可确定嵌入回声的延时大小,从而进一步确定隐藏信息是“
13、0”或是“1” 。3、阅读“myecho.m” ,实现“回声隐藏”法。将 myecho.m 程序填写完整,如下所示:运行此程序,得到如下结果:由图可以看出,采用回声隐藏并没有太大影响语音波形,并可以看到最后一个采样点的倒谱峰值。4、在回声隐藏的基础上编写程序,实现回声隐藏算法。编程将 20bit 秘密信息隐藏在 manvoice.wav 中,编程完毕如下所示:运行此程序,得到如下结果:由图可以看出,秘密信息隐藏前后语音波形并没有产生太大的变化,提取出的秘密信息中发生了一位误码,说明这种隐藏算法也存在着不足。三、分析及讨论通过此次实验,熟悉和掌握了基于回声隐藏的语音信号的信息隐藏算法,了解了语音信号的读入、写和显示,通过嵌入秘密信息前后语音质量的对比,没有对语音质量造成太大的影响;但在提取过程中出现了一位的错误信息,说明语音信号的隐藏比图像隐藏要更困难些。