多域数字图像隐写技术的实现与讨论.docx
《多域数字图像隐写技术的实现与讨论.docx》由会员分享,可在线阅读,更多相关《多域数字图像隐写技术的实现与讨论.docx(9页珍藏版)》请在冰豆网上搜索。
![多域数字图像隐写技术的实现与讨论.docx](https://file1.bdocx.com/fileroot1/2022-11/24/b04c61a5-5692-4b68-b5ba-3c0b95a1b108/b04c61a5-5692-4b68-b5ba-3c0b95a1b1081.gif)
多域数字图像隐写技术的实现与讨论
多域数字图像隐写技术的实现与讨论
制作日期:
2014.6.3
摘要
随着科技的发展,信息安全技术已经成为不可忽略的因素。
而网络的普及及应用,让多媒体技术得到了广泛的发展,因此图像及视频的安全变得越来越重要。
本文正是在这种时代背景下,介绍一种关于图像处理的信息隐藏技术。
用于进行隐蔽通信的图像信息隐藏算法可以分为两大类:
基于空域的信息隐藏算法和基于变换域的信息隐藏算法。
基于变换域的算法以F5为代表算法。
下面我们介绍一下变换域的算法。
关键字:
隐藏嵌入信息图像
目录
一、常用的变换域的数字图像隐写方法。
4
1.1JSteg隐写。
4
1.1.1主要思想:
4
1.1.2具体嵌入过程:
4
1.2F5隐写。
4
1.2.1具体嵌入过程:
4
1.3F4隐写。
4
1.3.1具体嵌入过程:
4
1.4F3隐写。
4
二、基于MATLAB的F3数字图像隐写技术。
4
2.1F3隐写的原理。
5
2.2F3隐写的算法。
5
2.3运用F3隐写技术进行信息隐藏。
5
2.3.1嵌入流程图。
5
2.3.2实现过程。
5
三、讨论与分析。
8
3.1对F3隐写技术的分析。
8
四、附录。
8
4.1使用的软件。
8
4.2软件的简介。
8
4.3关键代码。
9
1、常用的变换域的数字图像隐写方法。
1.1JSteg隐写。
1.1.1主要思想:
用秘密信息比特直接替换JPEG图像量化后DCT系数的最低比特位,但不在量化后值为0或1的DCT系数中嵌入信息。
1.1.2具体嵌入过程:
(1)部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于1或0,若等于则跳过该AC系数,否则,执行下一步。
(2)判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行更改,否则,执行下一步。
(3)用秘密信息比特替换二进制存储的AC系数的LSB,将修改后的AC系数重新编码得到隐密的JPEG图像。
1.2F5隐写。
1.2.1具体嵌入过程:
1)获取载体图像,进行JPEG压缩,得到量化后的DCT系数。
2)对1)中得到的DCT系数进行混洗。
3)对可用的DCT系数计数,并根据欲嵌入的秘密信息长度计算嵌入信息所使用的三元组(1,n,k)。
4)取出n个混洗后的非0的ACDCT系数及欲嵌入的k比特信息,采用矩阵编码进行嵌入。
a)计算载体数据是否需要更改。
若不需要,则继续下一组的嵌入;若需要,则更改相应的数据LSB。
b)对经过更改后的数据,判断是否产生了新的值为0的系数。
若有,则此次嵌入无效,重新取出n个可用系数,执行a);若没有,重复执行4),直到秘密信息全部嵌入。
5)逆混洗,恢复DCT系数为原来的顺序。
6)生成隐密图像。
1.3F4隐写。
1.3.1具体嵌入过程:
和F3过程差不多,只是用正奇系数和负偶系数代表1,正偶系数和负奇系数代表0.
1.4F3隐写。
1)信息嵌入式,若DCT系数的LSB与要嵌入的秘密信息比特相同,则不作改动;否则,将该DCT系数的绝对值减1。
2)秘密信息嵌入在非0的DCT系数上,为0的系数不嵌入任何信息。
另外,当在绝对值为1的系数上嵌入比特0时,会产生新的0系数,则此次嵌入无效,在下一个系数中重新嵌入。
2、基于MATLAB的F3数字图像隐写技术。
2.1F3隐写的原理。
用秘密信息替换DCT系数的LSB值。
2.2F3隐写的算法。
1)信息嵌入式,若DCT系数的LSB与要嵌入的秘密信息比特相同,则不作改动;否则,将该DCT系数的绝对值减1。
2)秘密信息嵌入在非0的DCT系数上,为0的系数不嵌入任何信息。
另外,当在绝对值为1的系数上嵌入比特0时,会产生新的0系数,则此次嵌入无效,在下一个系数中重新嵌入。
2.3运用F3隐写技术进行信息隐藏。
2.3.1嵌入流程图。
2.3.2实现过程。
1.先把载体图像123.jpg和秘密信息文件mi.txt拷贝到MATLAB的工作路径下面。
2.把MATLAB软件打开,代码写进去,进行执行。
3.隐写后的图像和原始图像。
4.隐藏前DCT系数矩阵。
5.隐藏后DCT系数矩阵。
6.隐藏前DCT系数直方图。
7.隐藏后的DCT系数直方图。
3、讨论与分析。
3.1对F3隐写技术的分析。
优点:
可以抵抗卡方分析。
缺点:
容易被别人看出图像被修改过。
4、附录。
4.1使用的软件。
MATLAB软件。
4.2软件的简介。
MATLAB:
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。
主要功能:
数值分析
数值和符号计算
工程与科学绘图
控制系统的设计与仿真
数字图像处理
数字信号处理
通讯系统设计与仿真
财务与金融工程
4.3关键代码。
A=imread('123.jpg');//读取载体图像
B=dct2('123.jpg',137,220);//量化DCT系数。
C=uint8(B);//把DCT系数转化为整数。
figure
colormap(jet(256));
colorbar;
f_id=fopen('mi.txt');//打开秘密信息
[msg,len_total]=fread(f_id,'ubit1');//读取秘密信息。
并计算大小。
[m,n]=size(C);//计算DCT系数矩阵的大小。
iflen_total>m*n//判断密信息是否大于载体图像。
break;
end
forf2=1:
n
forf1=1:
m
ifC(f1,f2)==msg(p,1)//判断DCT系数的LSB是否和秘密信息比特相同。
break;
end
C(f1,f2)==abs(C(f1,f2))-1;//DCT系数绝对值减1。
ifC(f1,f2)==0
break;
C(f1,f2)=msg(p,1);//嵌入秘密信息。
ifp==len_total
break;
end
p=p+1;
end
ifp==len_total
break;
end
end
subplot(1,2,1);imshow(A);title('原始图像');
subplot(1,2,2);imshow('1.jpg');title('隐藏信息后的图像');
colormap(jet(256));
colorbar;