毕业设计说明说参考例如2_第1页
毕业设计说明说参考例如2_第2页
毕业设计说明说参考例如2_第3页
毕业设计说明说参考例如2_第4页
毕业设计说明说参考例如2_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——毕业设计说明说参考例如2

毕业设计说明书

批量信息隐蔽技术研究与实现

刘毅敏1206034116学生姓名:学号:软件学院

学院:软件工程(软件开发与测试方向)专业:***指导教师:

2023年6月

批量信息隐蔽技术研究与实现

摘要

伴随着信息技术的飞速发展,信息安全问题受到好多关注。信息隐蔽技术也得到了很大的发展,随着这些的发展,也带来了大量关于这方面算法的研究。

本文主要介绍了信息隐蔽的背景及原理,在信息隐蔽的基础上,实现对成批数据进行隐蔽,以MAtlab为工具,利用GUI完成对系统的构建。整个系统分为了对数据的嵌入和提取,显示嵌入载体,频谱分析等模块。其中主要是对于隐蔽的算法进行了相应改进,利用了LSB算法,在其基础上对成批数据进行了隔段算法嵌入与提取,和二叉树算法的嵌入与提取。并且每种算法原图片和嵌入数据后的图片都有直方图比对。

中北大学2023届毕业设计说明书

1绪论

1.1课题的提出1.1.1课题的产生与发展

计算机及网络的飞速发展在带给人们通讯便利的同时,也对通讯安全带了挑战,信息安全问题日益突出。而现在的信息安全技术几乎都是基于密码学理论的,即将文件加密成密文,使得那些具有非法企图的个人或集团,不能对密文进行正确解读,使得信息得以安全保存和传递。由于时代在不断进步,计算机处理能力也越来越高,因此传统的通过增加密钥长度来提高系统安全的方法也变得更加的不可靠。信息的保密性,也在遭遇着严重的挑战。

当今社会,数字多媒体技术应用越来越普遍,大量的文件,音像资料,图片等都需要认证和版权保护[2]。例如,以音像资料为例,其本质上也是数字信号,若采用密码加密方式,就会忽视其本身信号属性,因此具有伪装特点的信息隐蔽技术应运而生。

作为隐蔽通信和版权保护的有效手段,并受到人们的特别关注。特别是数字图像作为载体的信息隐蔽与传统加密方法不尽一致,利用所具有的迷惑性产生的信息隐蔽更能经受起恶意者的攻击[3]。

由于这些原因,认为批量信息隐蔽技术研究与实现确实可以给现实生活中的安全与机密信息传送带来便利。特别是以图像为载体,将机要信息藏于其中,完成成批数据的传输,利用相应算法保证嵌入的规律不易被推断,保证传输数据的安全性。随着理论研究的不断完善,必将在社会中得到广泛应用。1.1.2课题的现状及提出

现代数字信息隐蔽的历史可以追溯到1954年,Muza公司的EmilHembrooke获得一项名为“Identifieatiofsoundandlikesignals〞的专利,专利中描述了向音乐中嵌入不可感知的信号来证明所有权的方法[4]。1983年Simons提出了具有代表性的“囚犯问题〞,此问题引发了人们对信息隐蔽技术的研究热潮。

VanSchyndel在ICIP’94会议上发表了题为“Adigitalwatermark〞的文章,它是第一篇在主要会议上发表的关于数字水印的文章,其中说明了一些关于水印的重要概念,它被认为是一篇具有历史价值的文献。1996年5月30日至6月1

[1]

第1页共29页

中北大学2023届毕业设计说明书

日在英国剑桥大学召开了国际第一届信息隐蔽学术研讨会(FirstInternationalWorkshoponInfor-mationHiding),会上对信息隐蔽的部分英文术语和学科分支进行了统一和规范,标志着信息隐蔽学科正式诞生[5]。直到现在,已经举行了多届国际信息隐蔽学术研讨会,其研究内容从空域信息隐蔽正在逐步转向频域的信息隐蔽,从以数字水印为主的研究正逐步转向与数据压缩、数据融合、神经网络等学科的理论和方法相结合的理论和应用研究。

国内关于信息隐蔽技术的研究从1999年开始兴起,其标志是由我国信息科学领域的何德全、周仲义、蔡吉人三位院士联合发起的全国信息隐蔽学术研讨会,至今已经举行了七届全国学术会议,CIHW1999北京、CIHW2000北京、CIHW2023XX等。“西北工业大学〞钱思进教授所著的“信息隐蔽与信息安全〞,该文介绍了信息隐蔽技术和信息隐蔽分析技术,分析了基于数字图像的信息隐蔽分析技术,并对现有的多种信息隐蔽分析方法和研究现状进行了深入探讨[6]。研讨会聚集了国内从事多媒体信息安全技术研究的权威专家和广大学者,促进了我国的信息隐蔽学术研究及其应用,国内的研究主要集中在数字水印方面。2023年“北京电子技术应用研究所〞的林代茂,胡岚,郭云彪,周琳娜等在中山大学学报(自然科学版)上发表了“广义信息隐蔽技术的安全问题〞,该文对对信息隐蔽的安全性问题进行了深入探讨,给出了不同应用模式下的信息隐蔽安全性定义,结合广义信息隐蔽有关理论给出了广义信息隐蔽安全性条件,并利用感知系统空间理论加以确切描述,在分析理论安全的基础上,对广义信息隐蔽的现实安全给出了解释[7]。

随着我国对信息隐蔽研究的不断升入,各种各样的信息隐蔽分支相继出现,数字图像的信息安全问题成为研究课题。它主要包括数字图像的隐蔽、数字水印和数字图像的分存等课题[8]。数字图像分存技术作为图像信息安全的一个重要课题,主要研究如何把一幅机要的数字图像分解成几幅无意义或者杂乱无章的图像或者伪装到几幅有意义的图像中进行存储或传输,它可以避免由于少数图像信息的丢失而造成严重的事故,同时在通信中个别图像信息的泄露不会引起整个图像信息的丢失

[9]

。在图像分存与信息隐蔽相结合情形下,将机要信息分解为若干子机要存于若干

图片中,机要信息不会由于某几个子图片的丢失而消失,在恢复阶段当指定的若干子图片集合在一起机要信息便可恢复,因此多载体批量信息隐蔽技术的研究与实现将会变得更具有实际意义。

第2页共29页

中北大学2023届毕业设计说明书

1.2课题研究基础

1.2.1信息隐蔽技术的基本概念

信息隐蔽运用各种信号处理方法将需要加密的信息隐蔽在一般的多媒体数据中,若途中被非法截得,也只能得到载体的信息,而不会意识到其中包含机要信息

[10]

。信息隐蔽的优点在于它不仅隐蔽了信息的具体内容,而且隐蔽了信息的存在,

因此在信息安全领域显示出巨大的优势。1.2.2信息隐蔽的一般模型

在信息隐蔽中,寻常称待隐蔽的机要信息为嵌入对象,称用于隐蔽嵌入对象的公开信息为载体对象[11]。嵌入对象和载体对象可以是文本、图像、音频或视频等等。隐蔽技术主要研究如何将机要信息嵌入到载体对象中生成隐蔽对象,而隐蔽分析技术则主要考虑如何从隐蔽对象中检测并破译出嵌入信息,或对隐蔽对象进行某些处理以达到破坏嵌入对象的目的[12]。图1.1给出了一个信息隐蔽系统的基本模型:

密钥生成与分派嵌入密钥原始数据嵌入运算合成数据提取密钥提取运算隐秘信息隐秘信息隐秘攻击图1.1信息隐蔽系统基本模型框图

1.2.3信息隐蔽的特征

信息隐蔽是信息保护的一种手段,不同于传统的密码学。信息隐蔽技术必需考虑正常的信息操作所造成的要挟,即要使机密信息对正常的数据操作技术具有免疫力。这种免疫力的关键是使隐蔽信息不易被正常的数据操作所破坏

[13]

。尽管信息隐

藏技术存在着大量不同的分支,但是根据信息隐蔽的目的和技术要求,该技术存在以下共同特性:

⑴不可感知性:指嵌入信息后在不引起机要信息质量下降的前提下,不显著改变载体对象的外部特征,即不引起人们感官上对载体对象变化的觉察。从安全的角度考虑,载体对象与隐蔽载体还应具有一致的噪声统计分布等特性,不致使非法拦截者判断出机要信息的存在,以至于破坏信息隐蔽系统的安全性。

第3页共29页

中北大学2023届毕业设计说明书

⑵鲁棒性:指隐蔽载体对一般的信号处理(如滤波、加强、重采样、有损压缩等)、一般的几何变换(如平移、旋转、缩放、分割等)等恶意攻击具有一定的稳健性,即宿主信号受到一定的波动,也可恢复隐蔽信息。

⑶自恢复性:指经过了一些操作和变换后,可能会使隐蔽载体受到较大的破坏,假使只留下部分的数据,在不需要宿主信号的状况下,却依旧能恢复隐蔽信息的特征。

⑷安全性:指隐蔽算法有较强的抗攻击能力,即隐蔽载体在承受一定程度的人为攻击的状况下而不致使隐蔽信息遭到破坏的能力。隐蔽的信息内容应是安全的,应经过某种加密后再隐蔽,同时隐蔽的具体位置也应是安全的,至少不会因格式变换而遭到破坏。且第三方在不知道隐蔽算法和密钥时,均不能获得机要信息。

⑸可纠错性:为了保证隐蔽信息的完整性,使其在经过各种操作和变换后仍能很好地恢复,寻常采取纠错编码方法达到这一目的[14]。1.2.4GUI界面设计系统的介绍

MATLAB是当今最优秀的科技应用软件之一,以强大的计算与可视化功能,简单易用,开放式可扩展环境,特别是所附带的30多种面向不同领域的工具箱支持,使得它在大量科学领域中成为计算机辅助设计与分析,算法研究和应用开发的基本工具和首选平台。GUI是一种图形化的沟通界面,通过此界面可以便利的达到一些特定控制的操作,而这些界面又是由按钮,窗口,工具栏,键盘等操作对象所构成的,以便利借助这些界面调用MATLAB来进行运算操作[15]。GUI是未来的趋势,由于人类对于图形辨识能力远超于其他表达方式,因此借助于GUI程序可以设计出专属某个主题的图形化界面。

第4页共29页

中北大学2023届毕业设计说明书

2批量信息隐蔽中相关算法的介绍

2.1课题的任务

本次设计通过LSB算法以及它的相应改进算法,将成批数据存入载体图像中,这些数据可以是图片也可以是文本,在嵌入过程完成后将两者通过直方图进行了比较,最终将其依照嵌入时的规则在相应位置进行提取。2.2LSB算法

LSB算法主要包括一个嵌入过程和一个提取过程。嵌入过程是指信息隐蔽者利用嵌入密钥将嵌入对象添加到载体对象中,从而生成隐蔽对象这一过程。提取过程是指利用提取密钥从接收到的可能经过修改的隐蔽对象中恢复嵌入对象。在提取过程中可能需要载体对象、也可能不需要载体对象。为了提高保密性需要预先对隐蔽信息进行预处理(如加密)而得到嵌入对象,相应地在提取过程中要对得到的嵌入对象进行解预处理(如解密),恢复为原隐蔽信息。

一种典型的LSB算法:最低有效位替换:

设对载体图像的扫描方式为从左下开始,先行后列,且其像素数为lcr,Cji

为位于ji的像素点的最低有效位,机要信息长度为lm比特,位置i的相应机要信息为mi(mi=1或0)。嵌入过程如下:从一副载体图像中选择一个像素点子集{j1,j2,…,ji}(ji为在图像中的位置),然后将Ck替换为mi即可。在提取过程中,按嵌入时的方法抽出被选择嵌入信息的载体元素,然后提取相应最低比特位信息即得到隐秘信息。

2.3LSB算法的改进隔段嵌入

对于LSB算法,由于嵌入休止是针对图片矩阵的像素点,逐个顺序嵌入的,这种方式实现简单,但是非法人员截得嵌有密文的载体后,依照一般思路,将其顺序提取,这样密钥很简单将被泄露,因此隔段嵌入就是采用在嵌入阶段,不依照顺序逐个嵌入,采用隔几个像素点嵌入密钥转换后的二进制流,这样就将不容被提取泄密,顺序提取的话将得到的是一串串乱码,而非真正的密钥。2.4LSB算法的改进二叉树嵌入

隔段嵌入尽管在一定程度上解决了顺序嵌入带来的密钥泄露的问题,但是并没有真正解决,由于隔段嵌入的规则太过明显,一旦被识破,还是很简单被提取的,

第5页共29页

中北大学2023届毕业设计说明书

为此在嵌入阶段就要采取一种规则不明显的方式进行嵌入,采用二叉树方式寻觅像素点进行嵌入的话,这样像素点的位置规律,不简单像隔段那样彼此差距规整,这样将不会被非法用户很简单截得真正的密钥信息,只有依照设计者的方式,在相应位置寻觅嵌入的二进制密钥信息,才会真正提取正确的信息。2.5直方图分析

在载体中嵌入了一定量的密文后,就需要对二者进行相应的比较,当嵌入密钥的载体能够在视觉上无区别的显示出与本体可以乱真的图像后,本次嵌入才可以算是成功。但是,嵌入密钥后的图片必定会与本身真正的图片存在一定的不同,为了比较两者的区别就参与了直方图分析,通过将原图片和嵌入密钥的图片放到一起,将二者的直方图显示出来,通过对比则可以,看出彼此的区别。2.6隔段提取

通过了对LSB的第一层的改进,进行隔段嵌入后,得到嵌入密钥后的图片,为了能够将密要正确提取我们需要,依照隔段嵌入的规则,找到嵌入了密钥的像素点的具体位置,通过相对于嵌入相逆的方式,将密钥的二进制比特流提取出来,接着进行相关的转化,将其转化为文本或者BMP图片。2.7二叉树提取

相对应与隔断提取,二叉树提取也是采用二叉树嵌入阶段时嵌入规则,依照相对应的方式在所需要提取的载体图片上,依照二叉树规则正确寻觅到需要提取二进制流的像素点,通过相逆与嵌入的过程,将相应二进制流提取出来,然后在进行相关转化,将其转化为文本或者图片。

第6页共29页

中北大学2023届毕业设计说明书

3批量信息隐蔽系统的详细设计

3.1批量信息隐蔽系统整体的设计过程

整个系统的实现,首先想到的是整个界面的规划,采用MATLAB7.0中的GUI界面化设计,来对整个界面进行相关规划,首先是需要对嵌入的载体进行区分,为此设计了,复选框按键,一个是图片,另一个是文本。当其选中相关按键后,表示接下来将要嵌入密钥是何种类型,然后对该类型的密钥信息进行相应的的处理。这个过程的流程图如图3.1所示:

开始进入系统初始界面Yc9=1还是c8=1N读入载体图片并显示密钥为文本进入选择判定流程文本图片的相关处理密钥为图片判断嵌入类型终止

图3.1显示载图片并进行密钥类型判定

接着是设计了相关算法的选择按钮,在LSB基础上设计了两种基本算法,一种是对LSB的简单改进,隔断嵌入方式;另一种是对于隔断方式又进行了改进的二叉树嵌入方式。由于要对批量信息进行处理,因此设计了四个载体,三个密钥来实现量化。三个密钥可以向四个载体中任意一个进行嵌入,并且在嵌入时可以选择相应的嵌入算法。当嵌入完成后,可以点击频谱分析的按键,然后对原有图像和嵌入了一定密钥后的图像进行分析,显示出它们的直方图,从而可以直观的比较出嵌入后所引起的区别。在直方图的比较完成后,进入下一阶段,即提取密钥信息的阶段。由于我们当时嵌入时可以选择不同的算法进行嵌入,因此在我们提取时,就要注意相关的一些事项。我们需要选择将要提取的密钥信息的相应载体,和提取时的相关

第7页共29页

中北大学2023届毕业设计说明书

算法,注意此时的这个算法必需和嵌入时的相对应,然后点击提取按键就可显示出相应的密钥信息。当整个过程终止后,我们可以针对两种算法中曾经设置的记录基本操作次数的宏观变量进行一些比较,粗略的得出两种算法在相应情形下的优劣,这个过程的流程图如图3.2所示:

开始进入嵌入算法的判定s2=1s2=1还是s3=1s3=1隔段嵌入算法二叉树嵌入算法显示嵌入后的结果进行直方图对比提取密钥信息相关算法的简单比较终止

图3.2算法的选择及相应的嵌入提取过程

3.2批量信息隐蔽系统主界面的实现

程序的设计语言是MATLAB,采用其中的GUI可视化编程。首先利用了复选框按键checkbox,用于对嵌入类型,嵌入信息以及嵌入载体的选择。然后通过单项选择框按钮radiobutton来对算法进行选择。最终在pushbutton对应的框架中对相应的功能进行了相关设计。最终在这些基础上设计出一个简单的批量信息隐蔽系统,系统

第8页共29页

中北大学2023届毕业设计说明书

的具体界面如下图3.3所示:

图3.3系统初始界面

3.3显示载体图片

在系统设计的最初,首先对将要嵌入的载体进行初步了解,因此通过本功能将其直观的显示出来,其相应的代码如下:I=imread('D:\\tupian\\tu6.bmp');H=imread('D:\\tupian\\tu7.bmp');figure;

subplot(221);imshow(I);title('图1');subplot(222);imshow(H);title('图2');A=imread('D:\\tupian\\tu8.bmp');B=imread('D:\\tupian\\tu9.bmp');subplot(223);imshow(A);title('图3');subplot(224);imshow(B);title('图4');

当载体图片显示出后,我们可以依照自己的爱好,将自己所要隐蔽的一批密钥信息嵌于自己喜欢的载体图片中。

第9页共29页

中北大学2023届毕业设计说明书

3.4宏观控制的数据量

由于本系统需要对多个载体和多个密钥,进行嵌入和提取,以及对相关算法进行选择,因此宏观上就需要一些可以在整体上控制的变量,来进行相关的控制。

globalc1;globalc2;globalc3;globalc4;

globalc5;globalc6;globalc7;globallen_total;

globalc8;globalc9;globals2;globals3;

上述的宏观变量中c1,c2,c3,c4是对嵌入载体进行选择;c5,c6,c7是对嵌入的信息进行相关的选择;c8,c9是对嵌入的类型(文本,图片)进行选择;s2,s3是对相关算法进行的选择。这些宏观变量通过值0,1来进行控制,值0表示相应按键未选中,值1表示已经选中。3.5文本作为批量数据的嵌入

选择文本为嵌入密钥时,通过按键选择使C9为1,选中文本,然后选择相关的密钥信息,和要嵌入密钥信息的载体图。得到载体图的像素矩阵,然后读取密钥文本将其转化为相应的二进制流,读取,并得到其最大长度,然后判断密钥的长度是否大于像素矩阵的容量。当容量判断好后,进入算法选择的流程,如图3.4所示:

开始容量判断适合进入算法选择过大读入载体图片并得到像素矩阵开启密钥文本将其转化为为二进制流终止报错

图3.4将文本读取并判断容量

当进入算法选择的流程后,我们接着所要做的操作是对S2,S1进行判断,假使s2为1,则将要进行隔段嵌入;但假使s3为1,那么接下来就会进入二叉树嵌入过程。当嵌入完成后,会对嵌入后的载体图片进行显示。这个过程对应的流程图如图3.5所示:

第10页共29页

中北大学2023届毕业设计说明书

开始进入算法选择的判定s2=1s2=1还是s3=1s3=1隔段嵌入算法二叉树嵌入算法显示嵌入后的结果终止图3.5对相关内容进行相应算法选择并嵌入

核心代码如下:

读取图片矩阵,通过c1,c2,c3,c4进行相应载体图片的选择:ifc1==1

cover=imread('D:\\tupian\\tu6.bmp');elseifc2==1

cover=imread('D:\\tupian\\tu7.bmp');elseifc3==1

cover=imread('D:\\tupian\\tu8.bmp');elseifc4==1

cover=imread('D:\\tupian\\tu9.bmp');end

ste_cover=cover;

ste_cover=double(ste_cover);

第11页共29页

中北大学2023届毕业设计说明书

进行文本的提取,通过c5,c6,c7进行:ifc5==1

f_id=fopen('D:\\tupian\\file.txt','r');elseifc6==1

f_id=fopen('D:\\tupian\\file1.txt','r');elseifc7==1

f_id=fopen('D:\\tupian\\file2.txt','r');end

[msg,len_total]=fread(f_id,'ubit1');隔段嵌入代码:

h1=waitbar(0,'正在嵌入,请稍候!!!');p=1;forf2=1:nforf1=1:m

y=mod(f1,8);//用来计算嵌入的位置ify==0;

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1);//当y为0时,进行嵌入运算ifp==len_total

break;//若嵌入数量已经等于准备嵌入的,中止嵌入,退出循环endp=p+1;

waitbar(p/len_total,h1);//用于计算嵌入的进度endend

ifp==len_total

break;//若嵌入数量已经等于准备嵌入的,中止嵌入,退出循环endend

第12页共29页

中北大学2023届毕业设计说明书

close(h1);//嵌入完成关闭进度条二叉树嵌入代码:

h1=waitbar(0,'正在嵌入,请稍候!!!');p=1;J=1;Q=0;index=0;

count=5;//根结点初始位置forf2=1:nforf1=1:m

//当count==5时进行如下嵌入操作

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1);//这一步仅在判断根节点时进行

count=2*count;//找到左子树节点的位置f1=count;//移动矩正列的位置J=2*J;//进入二叉树的下一层

forf3=1:J//以该层节点数构建第三层循环p=p+1;

waitbar(p/len_total,h1);//用来计算嵌入进度ifp>=len_total

break;若嵌入数量已经等于准备嵌入的,中止嵌入,退出循环endiff1>m

R=f1;//记录这是f1的值

index=fix(f1/m);//通过取整运算得到这时真正应在的行数f2=index;//将其赋给f2iff2>n

break;//若超出则终止运算end

第13页共29页

中北大学2023届毕业设计说明书

f1=f1-f2*m;//计算出f1在该行的具体位置iff1==0

ste_cover(m,f2)=ste_cover(m,f2)-mod(ste_cover(m,f2),2)+msg(p,1);f1=R+1;//当恰好为0时,表示在上一行最终一个位置,进行运算else

f2=f2+1;//否则的话在下一行,f2加1并进行嵌入

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1);f2=f2-1;//还原f2;

f1=R+1;//让f1加1嵌入它旁边的子结点Q=1;endelse

ste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1);f1=f1+1;iff1>m

Q=1;//用来关注f1是否超出m,超出Q置1endendendifQ==1

f1=f1-f2*m;//计算出f1的位置f2=f2+1;//计算出f2的位置;endend

ifp>=len_total//超出嵌入数量后,终止循环break;

close(h1);//关闭进度条3.6图片作为批量数据的嵌入

图片作为将要嵌入的密钥信息时,所要做的是下面一系列步骤。首先将图片选

第14页共29页

中北大学2023届毕业设计说明书

中,即让c8为1。然后进行图片密钥的嵌入时,同样需要读取载体图片的像素矩正,同时也要得到密钥图片的像素矩正,在得到相应的矩正后,通过二进制转化,将相应的密钥图片的像素矩正中的数值转化为与之对应的二进制数值,接着将得到的数值存放于事先定义好的文本文档“zhancun〞中,而此文档的真正目的也正是用于存放图片对应的二进制流。然后将文本中的二进制流读出,并得到其总容量,与载体图片的像素矩正的像素点总数比较。若容量不适合则更换载体图片,只有当容量适合时才进行嵌入,选择相应的嵌入算法,在设定的像素点处进行嵌入。在嵌入完成后,同样也将原图片与嵌入后的图片进行显示。该过程的流程图如图3.6和3.7所示:

开始读入载体图片并得到像素矩阵读入密钥图片并得到其像素矩阵将密钥图片的像素矩正转化为二进制流存入文本文档zhancun中开启zhancun文本提取二进制流判断容量是否过大是否进入算法选择的判定提醒并报错终止

第15页共29页

中北大学2023届毕业设计说明书

图3.6将图片读入转化为二进制流并判定容量

开始算法选择的判定s2=1s2=1还是s3=1s3=1隔段嵌入算法二叉树嵌入算法显示嵌入后的结果终止

图3.7显示嵌入算法的选择流程

选择嵌入的载体图片:ifc1==1

cover=imread('D:\\tupian\\tu11.bmp');elseifc2==1

cover=imread('D:\\tupian\\tu11.1.bmp');elseifc3==1

cover=imread('D:\\tupian\\tu11.2.bmp');elseifc4==1

cover=imread('D:\\tupian\\tu11.3.bmp');end

ste_cover=cover;

ste_cover=double(ste_cover);

第16页共29页

中北大学2023届毕业设计说明书

选择嵌入的密钥图片:ifc5==1

T=imread('D:\\tupian\\tu10.bmp');elseifc6==1

T=imread('D:\\tupian\\tu10.1.bmp');elseifc7==1

T=imread('D:\\tupian\\tu10.2.bmp');endT_tu=T;

T_tu=double(T);

[m,n]=size(ste_cover);//读取图片矩正的尺寸,并记忆[h,k]=size(T_tu);//读取密钥图片的尺寸并做记忆frr=fopen('D:\\tupian\\zhancun.txt','W+');

fprintf(frr,'%s','');//找到了准备存密钥图片的文本,并准备进行写入fori=1:hforj=1:k

bind=dec2bin(T_tu(i,j),8);//将相应像素矩正数值转化为相应的二进制frr=fopen('D:\\tupian\\zhancun.txt','a+');//进行文本的追加fprintf(frr,'%s',bind);//写入文本中fclose(frr);//关闭文本endend

f_id=fopen('D:\\tupian\\zhancun.txt','r');[msg,len_total]=fread(f_id,'ubit1');

然后将文本中的二进制流依照相应的两种算法进行嵌入。3.7嵌入后的图片与原图片的直方图对比

在嵌入阶段完成后,为了能够直观的看出原图片和嵌入以后的图片的不同,引入了相应的直方图分析,首先读取原图片,然后读取嵌入密钥的图片,在这些完成后,将图片显示,并通过相应的功能函数,将其直方图显示出来,其过程如图3.8

第17页共29页

中北大学2023届毕业设计说明书

所示:

开始选择原载体图片选择嵌入密钥后的图片显示出原图片及其直方图显示出嵌有密钥的图片和直方图终止图3.8显示读取直方图的流程

具体代码如下:ifc1==1

I=imread('D:\\tupian\\tu6.bmp');elseifc2==1

I=imread('D:\\tupian\\tu7.bmp');elseifc3==1

I=imread('D:\\tupian\\tu8.bmp');elseifc4==1

I=imread('D:\\tupian\\tu9.bmp');end

subplot(221),imshow(I);title('原图片!');I=rgb2gray(I);

I=histeq(I);//显示原图的直方图ifc1==1

第18页

共29页

中北大学2023届毕业设计说明书

H=imread('D:\\tupian\\d.bmp');elseifc2==1

H=imread('D:\\tupian\\h.bmp');elseifc3==1

H=imread('D:\\tupian\\e.bmp');elseifc4==1

H=imread('D:\\tupian\\f.bmp');end

subplot(222),imshow(H);title('嵌入文本密钥后的图片');H=rgb2gray(H);

H=histeq(H);//显示嵌入后的图片的直方图

subplot(223),imhist(I);title('原图片对应的直方图!');

subplot(224),imhist(H);title('嵌入文本密钥后对应的直方图!');3.8文本的提取

对于文本的提取,当c9为1时,说明将要提取的是文本。然后依据嵌入时的选择,选择好提取的算法。依据相应的算法找到真正应当提取的像素点。然后通过与像素点对应的数值进行与1的与运算,得到嵌入的二进制流,然后将其转化成为相应的文本内容,写入存放密钥的文本中。具体的流程如图3.9所示:

开始提取相关文本信息选择嵌有密钥的图片进行提取算法选择存放于文本寻觅嵌入密钥的像素终止

图3.9显示提取文本的流程

具体提取代码如下:

读取图片矩阵,通过c1,c2,c3,c4进行提取图片的选择:

第19页共29页

中北大学2023届毕业设计说明书

ifc1==1

ste_cover=imread('D:\\tupian\\d.bmp');elseifc2==1

ste_cover=imread('D:\\tupian\\h.bmp');elseifc3==1

ste_cover=imread('D:\\tupian\\e.bmp');elseifc4==1

ste_cover=imread('D:\\tupian\\f.bmp');end

ste_cover=double(ste_cover(:,:,1));[m,n]=size(ste_cover);

通过c5,c6,c7进行密钥提取的目的文本选择:ifc5==1

frr=fopen('D:\\tupian\\goalfile1.txt','w');elseifc6==1

frr=fopen('D:\\tupian\\goalfile2.txt','w');elseifc7==1

frr=fopen('D:\\tupian\\goalfile3.txt','w');end隔段算法提取p=1;

h=waitbar(0,'正在提取请稍等!!!');forf2=1:nforf1=1:m

y=mod(f1,8)//寻觅到提取的位置ify==0

ifbitand(ste_cover(f1,f2),1)==1

fwrite(frr,1,'ubit1');//找到位置后,判断并进行提取,存于文本result(p,1)=1;

第20页共29页

中北大学2023届毕业设计说明书

else

fwrite(frr,0,'ubit1');result(p,1)=0;end

ifp==len_total;

break;//若提取完毕则终止循环endp=p+1;

waitbar(p/len_total,h);//计算提取进度endend

ifp==len_total;break;endendclose(h);二叉树算法提取:

在经过了二叉树算法的嵌入后,我们已经基本了解了通过二叉树进行嵌入的具体过程,在二叉树的提取中,我们只需要依照相应的原理,计算出提取像素点的具体位置,然后通过相应的运算,判断出在该像素点嵌入的二进制是0还是1,然后将其写入文本中。在二叉树寻觅提取点的过程中,我们设置J来控制二叉树,在循环的第三层,通过相关运算变化来J,然后由J控制二叉树的每层结点的嵌入,并且在提取过程中设置p,通过它来计算出提取的进度,当提取完成后,关闭进度条,并关闭相应的文本。3.9图片的提取

若选择的为图片提取,即c8为1时,同样先对算法进行选择,若选择的算法不是当时嵌入密钥时的算法,则会在将来提取出一批乱码,不是正确二进制流。当正确从载体图片中提取出相应的二进制流后,存于相应的文本中,在利用的得到二进制流,求出原图片各像素点的像素值,重建像素矩阵,然后通过像素矩阵显示出

第21页共29页

中北大学2023届毕业设计说明书

相应的密钥图片,这个过程的具体流程图如图3.10所示:

开始提取出嵌入的二进制流存于文读取嵌有密钥的图片矩阵将二进制流转化为像素矩正并进行相应的提取算法选择终止寻觅嵌入密钥的像素点图3.10显示提取图片的流程

利用3.7小节的方法将密钥图片的二进制流提取出放于文本后,接着将其通过计算转化为图片的像素矩阵,具体代码如下:fori=1:hforj=1:(8*k)

sec_m=str2num(ch(index,1));//将二进制流读出一位并将其转化为数字型;ifcount==1

sec_m1=sec_m*128;//若读出的是第一位,将其乘以128elseifcount==2

sec_m2=sec_m*64;//若读出的是其次位,将其乘以64elseifcount==3

sec_m3=sec_m*32;//若读出的是第三位,将其乘以32elseifcount==4;

sec_m4=sec_m*16;//若读出的是第四位,将其乘以16elseifcount==5

sec_m5=sec_m*8;//若读出的是第五位,将其乘以8elseifcount==6

sec_m6=sec_m*4;//若读出的是第六位,将其乘以4elseifcount==7

sec_m7=sec_m*2;//若读出的是第七位,将其乘以2elseifcount==8

第22页共29页

中北大学2023届毕业设计说明书

sec_m8=sec_m*1;//若读出的是第八位,将其乘以1end

count=count+1;//用来限制加的次数,限制为八次index=index+1;//用来表示读取二进制的位置ifcount==9

sec_m=sec_m1+sec_m2+sec_m3+sec_m4+sec_m5+sec_m6+sec_m7+sec_m8;result(i,flag)=sec_m;//够八次后将其转化为像素矩阵的十进制形式flag=flag+1;//用来控制列,记忆像素矩阵列的位置ifflag>k

flag=1;//超出k后自动回归为1;end

count=1;//超出8后回归为1;endendend

通过上面一系列算法,最终将文本中的二进制流成功读取,并转化为相应的十进制形式,存于像素矩阵中。

第23页共29页

中北大学2023届毕业设计说明书

4终止语

4.1试验的数据流程

1)显示嵌入的载体图片,如图4.1所示:

图4.1显示嵌入的载体图片

2)显示主界面,在主界面中,可以通过复选框选择相关按键,实现相应的功能,如下图4.2所示:

图4.2主界面

第24页共29页

中北大学2023届毕业设计说明书

3)以嵌入文本为例,将原文本file中的内容嵌入图1中并显示,如下图4.3所示:

图4.3嵌入文本file中的内容

4)显示文本file中内容,如图4.4所示:

图4.4显示文本file中的内容

第25页共29页

中北大学2023届毕业设计说明书

5)将文本嵌入后,显示出它们的直方图,如4.5所示:

图4.5显示直方图

6)接着提取嵌入图片的文本信息,显示提取内容,如图4.6所示:

图4.6显示提取的文本内容

第26页共29页

中北大学2023届毕业设计说明书

4.2设计结论

虽然经过三个月的学习和设计,最终我做出了一个简单的批量信息隐蔽系统。但是其中还存在好多的不足,我明白自己对这个领域的理解还很浅薄,需要自己不断地深入学习和实践。当我每次遇到问题时,总是努力去解决问题,从中锻炼自己编程的调试能力。由于批量信息隐蔽的特点,必定会在将来得到广泛应用。对于批量信息隐蔽,我会在以后继续坚持学习,对该课题做进一步研究,不断地完善和改进,设计出更好的批量信息隐蔽软件。4.3心得体会

当辩论邻近,自己才突然感觉到三个月的毕业设计竟然这么快就要终止。回首已经逝去的三月,心中有种莫名的感动。可能是将要离别,心中有些许伤感,想着就要与悉心指导我的各位老师、与我的母校和与我一起走过风风雨雨的同学道别,无尽的不舍充塞在我的心中。而毕业设计的这三个月也是我感想最深的,其中有苦也有甜,但是最终确实是让我得到了好多。想法也有了很大的改变,最初只觉得毕业设计就是对以前的知识进行总结,但是当毕业设计真正开始后,我发现自己真正的想错了。毕业设计不仅是对以前知识的总结,更要在此基础上进行对毕业设计相关内容进行学习,从而对自己能力进行进一步提升,以下是我在毕业设计期间一些简单的总结。

首先接到毕业设计任务后,对自己题目进行相关了解。为开题报告做相应的准备,3月份的开题报告也是至关重要的,通过对开题报告的写作,可以让自己对毕业设计有一个整体的概念,同时能对论文书写有一定的锻炼。

接着当开题报告上交之后,就要进行相关资料的查阅,而图书馆,书店这些传统的方式自然必不可少,除此之外,我们还要在网上,电子阅览室等进行查阅。将所需知识一一记录下来。

最终就是对设计的程序进行调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论