nsf5隐写算法matlab,基于纹理复杂度的JPEG图像⾃适应隐写0 引⾔
隐写术是⼀种利⽤载体的掩蔽效应将秘密信息隐藏,实现信息秘密传递的技术.隐写载体可以是图像、⾳频、视频、⽂本等⽹络数字媒体.由于JPEG已成为⽬前互联⽹上进⾏图像传输时最常⽤的图像格式,因此以JPEG图像作为载体的隐写研究也成为了图像隐写领域的热点.
通过修改载体图像空域或频域的LSB(lest significant bit)位即可以实现最简单的隐写,这种修改会造成图⽚像素或DCT系数统计频率中相邻值对趋于⼀致,为了避免这种现象,LSB匹配(MLSB)被提出.为了进⼀步提升隐写算法性能,编码技术被引⼊隐写过程.⽂献[[,⼤⼤提⾼了隐写编码的效率.然⽽,矩阵编码仅仅解决了降低修改率的问题,并未考虑隐写位置与隐写安全性之间的相关性.事实上,隐写载体中,部分位置的隐写具有很好的隐藏效果,⽽另⼀些位置的隐写将会⼤⼤增加风险.湿纸编码[能够将载体中风险较⼤的嵌⼊位置标记为湿点,从⽽在隐写过程中跳过这些危险的嵌⼊位置,实现隐写算法安全性提升.正是基于这样的编码优势,⽂献[
矩阵编码和湿纸编码都提升了隐写算法的安全性,但是在可隐写的位置范围内,所有隐写位置被等风险对待.也就是说,隐写算法尚未达到⼀种最低代价的隐写路径.随着STCs编码[的出现,这⼀问题得到了很好解决.STCs算法将卷积编码和维特⽐算法结合起来,通过针对载体的特性设计不同的失真模型,并据此选择嵌⼊信息的位置.⼀⽅⾯,在隐写嵌⼊率较⼩的情况下,STCs编码有着极⾼的编码效率,可⼤⼤降低隐写
修改率;另⼀⽅⾯,STCs可以寻⼀条近似最低代价的修改路径,实现失真最⼩化.因此,STCs隐写框架下的算法仅仅需要设计⼀个失真数学模型即代价函数,即可极⼤提升隐写算法安全性.该编码⽅法也是⽬前隐写算法最好的编码,⽽代价函数的设计成为STCs隐写中的核⼼问题.
基于STCs隐写⽅法的代价函数可以针对特定的隐写分析⽅法设计,如HUGO算法[根据SPAM[隐写分析⽅法提取的特征针对性地设计失真代价函数,将失真定义为三阶共⽣矩阵的权重,对SPAM具有很强的抗检测能⼒.也可以利⽤JPEG图像DCT系数的统计特性等设计代价函数,如⽂献[
与上述隐写分析⽅法不同,本⽂针对图像的纹理特性,设计了⼀种⾃适应隐写算法,同时,将均匀嵌⼊[的思想引⼊,摆脱隐写嵌⼊在DCT 系数绝对值为0附近改动较⼤的缺点,提⾼算法的安全性.
1 相关⼯作
1.1 纹理特征描述
图像的纹理分析⽅法有很多,利⽤灰度共⽣矩阵研究纹理特征是其中⽐较经典的⽅法之⼀.
设图像的灰度级为N,则对应该图像的灰度共⽣矩阵K为N阶矩阵,在矩阵中处于第i⾏第j列的值代表在图像的灰度矩阵中灰度值为i的元素和灰度值为j的元素在距离为(Δx, Δy)的情况下成对出现的次数,记为pΔx, Δy(i, j).基于灰度共⽣矩阵,可以从反差和熵两个⽅⾯提取纹理特征.
1) 反差
(1)
反差主要⽤于表征图像的纹理的粗细程度,能够在⼀定程度上表现出图像的清晰程度.对于纹理较粗的图像,p(i, j)会主要出现在灰度共⽣矩阵的主对⾓线附近的位置,此时(i-j)值⽐较⼩,对应式中的G值也会⽐较⼩,反之在纹理⽐较细的图像中G值就会⽐较⼤.
2) 熵
(2)
熵⽤于表征图像中纹理出现的随机性.当图像的灰度共⽣矩阵中p(i, j)值都相同时,S值达到最⼤,此时图像显得⽐较平滑,当p(i, j)值完全不相同的时候,S值达到最⼩,此时图像显得⽐较复杂.
1.2 基于STCs编码的最⼩失真框架
基于STCs编码的最⼩失真框架是⽬前最为流⾏的隐写设计框架,它将隐写设计的重⼼转移到了对图像失真代价函数的设计上来.
设原始和嵌⼊信息后的JPEG载体图像的量化DCT系数的LSB分别为x和y,其中x=(x1, x2, x3, …, xn)∈0, 1n,y=(y1, y2, y3, …,
yn)∈0, 1n,n为图像像素总个数.假设嵌⼊操作是⼆元性的,即对于每⼀个载体元素来说,只会产⽣两种处理⽅式:完全不作改动或产⽣⼀个特定⼤⼩的变化.对于⼀个载体元素xi⽽⾔,对它作改动所引起的失真定义为ρi,其中ρi∈[0, +∞),即单个元素的失真代价.那么完成嵌⼊后的总体失真D(x, y)可表⽰为:
(3)
即所有改动引起的失真代价之和.
采⽤合适的ρi作为失真测度定义可以最⼩化嵌⼊对于载体在统计特征上的变化,增强隐写的抗检测性.在F5隐写中使⽤矩阵编码已经能够在⼀定程度上解决这个问题,然⽽在F5编码⽅法中其ρi被限制为1,⽽STCs编码能够在更⼀般的失真定义下进⾏编码过程. STCs编码过程可以表⽰为:
(4)
其中x为载体信息流,m为秘密信息流,y为载密信息流,D(x, y)为失真函数,C(m)为m的陪域,H为校验矩阵.即到合适的载密信息流y,使得失真代价最⼩.
1.3 均匀嵌⼊失真
现有的许多⾃适应算法,在进⾏信息嵌⼊时,改动的DCT系数的绝对值⼀般在0附近.这样的特点容易被隐写分析所利⽤.为了减弱这种特点,有学者提出了均匀嵌⼊的思想,设计均匀嵌⼊失真函数(uniform embedding distortion,UED)[如下:
(5)
其中cij是(i, j)位置的DCT系数,αia和αir是为了满⾜相加的性质⽽设置的调整参数,Nia和Nir分别表⽰cij的块内和块间相邻系数.Nia=
{ci+1, j, ci-1, j, ci, j+1, ci, j-1},即与cij直接相邻的4个系数,Nir={ci+8, j, ci-8, j, ci, j+8, ci, j-8},即cij相邻块的4个系数.考虑到cij可能处于图像的边界上,此时邻近系数不存在的点不计⼊计算.
2 本⽂⽅法
2.1 失真代价函数分析设计
JPEG图像压缩前,先将RGB图像转换为YCrCb图像,并对图像进⾏8×8分块.如果原始的图像的长宽不是8的倍数,需要先补成8的倍数,使其能够进⾏同等处理.基于以上JPEG图像压缩的特点,本⽂在度量图像的局部纹理复杂度时,也选取8×8块作为复杂度的计算单元.
⽂献[
(6)
其中B(k)代表某⼀个8×8的⼦块.
在设计隐写嵌⼊的失真代价时,秘密信息嵌⼊在越复杂的区域的,抗检测性越强,即T(B(k))的值越⼤的区域嵌⼊的安全性越⾼,则失真定义为:
(7)
其中参数θ可设置为2.
直条图和直方图图片在JPEG图像DCT域上进⾏隐秘信息嵌⼊,还需要考虑到在量化过程中归整带来的影响.按照Fridrich等在⽂献[
令ρf表⽰在嵌⼊秘密信息和JPEG标准量化过程中产⽣的误差双重影响下产⽣的失真影响.假设没有经过JPEG压缩的原图像是已知的,设u 和q分别表⽰量化前DCT系数和该图像压缩对应的量化步长,uq=u/q是进⾏了量化操作之后的DCT系数,⽤u来表⽰量化后进⾏归整得到的整数DCT系数,有:
(8)
因归整产⽣的误差为:
(9)
因此对于整个量化过程产⽣的误差可表⽰为:
(10)
对于仅使⽤LSB位的变化进⾏的嵌⼊,的u最末位会发⽣+1或者-1的变化,设v为嵌⼊之后DCT的值,则变化的关系可以表⽰为:
(11)
因此,在知道载体图像原BMP格式数据时,因量化引起的失真可以表⽰为:
(12)
从(12) 式可以看出,当(|v-uq|-0.5) 的绝对值增⼤时,ρf就会增⼤.因为y是整数,因此在嵌⼊时,我们选择量化误差为0.5的系数进⾏嵌⼊,保证(|v-uq|-0.5) 的绝对值最⼩.上式可以简化为:
(13)
结合每个块的纹理复杂度失真和不同位置的DCT系数在量化过程中的量化误差,将失真函数综合定义为:
(14)
其中ρk指的是第k个DCT系数的失真定义.
⼀般来说,均匀嵌⼊是和STCs编码框架联合在⼀起进⾏使⽤的.均匀嵌⼊⽅法就是在失真函数的设计中加⼊某种控制因⼦,使得在嵌⼊过程中系数绝对值⼤⼩不同的系数被改动的概率会趋近于相同.
根据(5) 式,在均匀嵌⼊中⽤e(i, j)来表⽰此处的在这个系数上进⾏嵌⼊的失真测度.得到针对DCT系数的嵌⼊失真函数:
(15)
其中ρk描述(i, j)位置系数所处的分块.
2.2 嵌⼊与提取过程
1) 嵌⼊过程.
(a)将JPEG图像解压缩成灰度图像,对该灰度图进⾏类似JPEG标准压缩算法中的8×8分块.
(b)针对每⼀个块,利⽤(6) 式和(7) 式计算出基于每个块的失真代价.
(c)提取出该JPEG图像所⽤的量化表,按照(13)、(14) 和(15) 式,并结合(b)中得到的每个块的失真代价,计算出每⼀个DCT系数的失真代价.
(d)按照先块内⾏扫描再块间⾏扫描的⽅式,取出值为⾮0的DCT系数中的AC系数的LSB,形成⽐特流,然后对此⽐特流进⾏置乱操作,得到置乱后的⽐特流c.
(e)利⽤STCs编码和已经设计好的失真代价函数将要嵌⼊的隐秘信息⽐特流m嵌⼊到⽐特流c中,得到载密⽐特流s,将s按照密钥key进⾏恢复原始顺序,将s⽐特流和原DCT系数相结合得到载密的DCT系数.
(f)对载密的DCT系数进⾏熵编码等JPEG压缩标准中的后续操作形成JPEG图像,完成秘密信息嵌⼊过程,得到载密图像.
2) 提取过程.
(a)提取出载密图像的DCT系数,按照先块内再块间的⾏扫描⽅式得到⾮0的DCT系数中的AC系数,然后取其LSB位形成⽐特流s.
(b)利⽤密钥key对⽐特流s进⾏置乱,然后结合STCs编码的提取过程进⾏计算得到秘密信息⽐特流m,完成整个提取过程.
3 实验结果
3.1 实验准备
本⽂中使⽤的实验嵌⼊⼯具是Matlab 2013b,分类器为SVM(support vector machine),实验中所⽤图像来⾃于UCID[图像库, 选择经典的nsF5、MB[和STC-Const[算法进⾏⽐较实验,为了验证隐写⽅法的安全性,从两个⽅⾯来进⾏评价:1) 视觉感知性;2) 抗隐写检测能⼒.
3.2 视觉感知性分析
从图像库中随机选取12张灰度图像,在0.3 bpac(bits per non-zero AC DCT coefficient)和0.5 bpac嵌⼊率下对原始图像进⾏秘密信息嵌⼊形成载密图像,对不同隐写算法形成的载密图像PSNR进⾏⽐较,结果如
表1
嵌⼊率0.3 bpac和0.5 bpac PSNR均值对⽐
Table 1
Average PSNR of 0.3 bpac and 0.5 bpac embedding rate
dB
嵌⼊率/bpac
本⽂⽅法
MB
nsF5
STC-Const
0.3
46.43
42.83
44.86
45.38
0.5
41.55
40.23
41.43
41.23
从
3.3 抗检测能⼒分析
选择⾼维的CFstar[特征以及CCJRM[特征对采⽤不同嵌⼊率进⾏嵌⼊的载密图像进⾏隐写分析.
在UCID图像库中选取1 338张图像,并按照不同的嵌⼊率进⾏嵌⼊,分别形成载密图像,然后随机选取其中669张未嵌⼊图像和669张相应的嵌⼊图像⽤于对分类器进⾏训练,剩下的⼀半图像⽤于测试.在实验中对图像进⾏嵌⼊率分别为
0.01,0.02,0.03,0.04,0.05,0.1,0.2,0.3,0.4 bpac的信息嵌⼊.如
图 1
在CFstar特征下误检率
Figure 1
Error rate in using CFstar
图 2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论