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
在CCJRM特征下误检率
Figure 2
Error rate in using CCJRM
从
使用尺寸为512×512,量化因子为80的Lena灰度JPEG图像作为载体,来说明基于图像纹理自适应嵌入的特点.为了让改动位置更多,得到的修改位置图能够看得更明显,选择嵌入率为0.5 bpac的载密图像进行对比.从
图 3
基于图像纹理自适应嵌入的特点
Figure 3
Characteristic of texture-based adaptive embedding
在没有进行均匀嵌入思想的算法中,嵌入后系数值发生变化主要集中在系数本身绝对值为0附近,并且随着系数绝对值的增大发生改动的系数个数越来越少.而在进行了均匀嵌入的算法中,对各个绝对值不同的系数进行改动个数应该相近.为了验证算法中是否体现了均匀嵌入的特征,选用nsF5和本文算法作对比,使用512×512的Lena灰度图在嵌入率为0.3 bpac下进行嵌入,分别对两种算法中DCT不同系数的改动个数进行统计,为了能够更明显地观察到变化,在直方图中选取区别比较明显的[-20,20]区间进行比较.
图 4
nsF5算法嵌入时改动DCT系数值分布
Figure 4
DCT coefficient modified using nsF5
图 5
本文算法嵌入时改动的DCT系数分布
Figure 5
DCT coefficient modified using proposed algorithm
4 结论
利用STCs编码进行隐写,涉及到的失真代价函数设计丰富多样,本文采用图像纹理复杂度函数作为失真代价函数,与一般的内容自适应隐写相比,由于直接使用与图像纹理密切相关的纹理描述函数作为考量,能够充分利用复杂纹理带来的掩蔽效果,所以实验效果较好.在实际应用中,为了达到更好的隐藏效果,隐写的嵌入率一般设置较小,而在嵌入率相对较小的情况下,本文方法更具有优势.
尽管由图像纹理复杂度所设计的失真代价函数能够带来较好的隐蔽效果,但其太过依赖图像的纹理特性,对于一些纹理平滑的图片,其嵌入容量往往较低.因此,将图像纹理失真与针对特定应用场景的失真结合起来,在提高嵌入容量的同时考虑到图像纹理的安全性将是本文的一个重要研究方向.同时,由于图片纹理描述方式的多样性,研究不同纹理描述方式所带来的影响效果,并进一步根据不同场景图片选择效果较好的纹理描述方式来进行代价函数的设计,提高隐写安全性是本文的另一个重要研究方向.
nsf5隐写算法 matlab,基于纹理复杂度的JPEG图像自适应隐写相关推荐
- (亲测可行)基于面绘制的MC算法以及基于体绘制的 Ray-casting 实现Dicom图像的三维重建(python实现)
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 转载自 基于面绘制的MC算法以及基于体绘制的 Ray-casting 实现Dicom图像的三维重建(python实现) ...
- 详解利用基于gensim的TF-IDF算法实现基于文本相似度的推荐算法
详解利用基于gensim的TF-IDF算法实现基于文本相似度的推荐算法 TF-IDF的基本原理 算法思想 计算公式 相似度计算原理 微型图书推荐案例 案例背景 开发工具 数据预处理 TF-IDF模型建 ...
- ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例
ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例 目录 基于MovieLens电影评分数据集利用基于 ...
- mbs 隐写算法 matlab,缩写发现算法,abbreviation-discovered algorithm,音标,读音,翻译,英文例句,英语词典...
补充资料:常用塑料名称的缩写符号 常用塑料名称的缩写符号 缩写符号 塑料名称 缩写符号 塑料名称 AAS 丙烯脂一丙烯酸酌一苯乙烯 PDAP 聚邻苯二甲酸二丙烯酯 ABS 丙烯脂一丁二烯一苯乙烯 PV ...
- burg算法 matlab,基于burg算法的谱估计研究及其matlab实现.doc
基于burg算法的谱估计研究及其matlab实现 XX大学学院 毕业设计(论文) 相关资料 题目: 基于 其MATLAB实现 机电 系 电子信息工程 专业学 号: 学生姓名: 指导教师: (职称:讲 ...
- 抛物线求积公式求积分算法matlab,基于Matlab的数值积分公式问题.doc
基于Matlab的数值积分公式问题 数值分析 学 号: 学 生 姓 名 :教 师 : 教师 2数值积分算法介绍............................................. ...
- 虹膜识别算法 matlab,基于MATLAB GUI 的虹膜识别算法测试平台
基于MATLAB GUI 的虹膜识别算法测试平台 田启川;潘泉;程咏梅;张洪才 [期刊名称]<计算机仿真> [年(卷),期]2006(023)002 [摘要]虹膜识别是一种重要的利用生物学 ...
- 仿射投影算法 matlab,基于仿射投影算法的时延估计
Signal Process & System 号与系 基于仿射投影算法的时延估计 摘要:在时间延迟计中,通常利用互相关箅法对8寸延进行估计.然而,互相关算法受操声影较人,在低信比时无法准确对 ...
- dtw算法 matlab,基于DTW的语音识别在MATLAB中的实现方法浅析
摘要:本文阐述了基于DTW的非特定人语音识别的基本原理与实现方法.该语音识别系统预先建立标准语音模板库与三名待测者的语音模板的方法,然后结合MATLAB中自带voicebox语音工具箱及相应语音处理函 ...
最新文章
- Runtime.getRuntime()
- [转] java的 Collection 和 Map 详解
- matlab中tab键怎么用来缩进,MATLAB中的一些小技巧
- 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )
- 一篇男人必看的创业文章。(人活着不能没有钱,但是活着却不能只为了钱)...
- db2诊断系列之---定位锁等待问题
- LINUX mount -t用法
- amoeba mysql_使用Amoeba 实现MySQL DB 读写分离
- 线程中这么调用类_一文学会 Python 多线程编程
- 【云栖大会】“天”与“人”的大数据
- Ext中的get、getDom、getCmp、getBody、getDoc的区别
- 全国英语等级考试网上报名
- 厉害了!阿里的这套“实人认证”系统通过率高达99%
- 还在为挖不到漏洞烦恼?还在为如何才能升职加薪困惑?听听徐老师怎么说.........
- python等高线绘制_用matplotlib画等高线图详解
- 店内扫码点餐系统 计算机毕业设计 微信小程序开发
- POJ 3278,抓牛问题(BFS)
- 链表逆置(三种方法详解)
- PyCharm 不能自动生成函数注释
- 04741计算机网络原理2018年版-第八章 网络安全基础 知识要点
热门文章
- 【愚公系列】2022年10月 使用win11系统自带远程桌面,远程控制VMware中Windows虚拟机系统
- SAMSUNG,三星,N8000升级
- vscode 实时运行代码插件 Quokka
- 29岁,从绝望崩溃到年入50万:这个技能,决定你5年后的人生!
- 带着孩子学数学--经验总结1:乘法怎么教,小学数学阶段等等
- 扫地机器人朋友圈文案_扫地机器人的简单文案
- 使用Fiddler抓公众号数据
- 学习笔记21.07.09:绘制色块图
- 【CSDN 竞赛第四期】参赛题解(JAVA)
- 计算机主板测试配件,如何检测主板是否有问题_如何诊断主板是否损坏,没有图形步骤...