全文预览

VC++基于一阶贝塞尔曲线的信息隐藏软件的设计(源代码+论文)

上传者:upcfxx |  格式:rar  |  页数:23 |  大小:0KB

文档介绍
n}作为控制点,折线P0P1……Pn为P(t)的控制多边形,点P0,P1,……,Pn为P(t)的控制顶点。对于简单的一阶Bézier曲线,有P(t)=(1-t)P0+tP1。Р对尺寸同为MⅹN的两幅数字图像F0(x,y)、F1(x,y)中位于同位置的两像素f0,f1应用一阶贝塞尔曲线,可计算出经过融合后的像素f2:f2=[(1-t)* f0 + t*f1],t∈[0,1]。融合系数t的取值决定了F0(x,y)、F1(x,y)的融合效果,图2-6中的五幅图像分别为原始图像和融合系数t分别为0.039、0.5、0.961时的融合图像图2-6[6]:Р图2-6 融合示例(基于不同融合系数t)Р从上面几幅图可以看出:当t=0.039时,F0(x,y)充当信息载体,F1(x,y)隐藏其中;当t=0.961时F0(x,y)隐藏于F1(x,y)中。从画面上看含有融合信息的图像与原始图像没有什么不同。从融合算法可以根据融合后图像F2(x,y)和F0(x,y)、F1(x,y)中任一幅图像就可计算出另一幅隐含的图像,恢复算法为:rf0=[(f2-t*f1)/(1-t)]和rf1=[(f2-(1-t)*f0)/t]Р算法的改进Р根据前面的实验,通过基于一阶贝塞尔曲线的算法,可将一幅位图隐藏于另一幅与其等大的位图之中,并能将其从中成功恢复出来。因此对于任意的数据文件,其存放形式均为从0到255的二进制码。因此可以将任意的数据文件根据内容人为地拼成一幅位图后,再按上述算法对其进行隐藏。但由于上述算法含有符号“[”和“]”,因此在进行浮点运算时必然会引入截断误差。对于图像,这些引入的误差并不会影响画质,但对于二进制文件,一个比特的错误就有可能导致程序不能执行、文件无法打开等情况,从而导致了文件恢复的失败。因此对于二进制文件的隐藏与恢复对误差有很高的要求,不允许在隐藏和恢复过程中引入1个比特的错误信息。

收藏

分享

举报
下载此文档