【技术实现步骤摘要】
一种基于JPEG图像的通用可逆数据隐藏方法
[0001]本专利技术涉及可逆信息隐藏
,具体涉及了一种基于JPEG图像的通用可逆数据隐藏方法。
技术介绍
[0002]随着计算机网络和数字媒体信息的快速发展,使信息的存储、传播、获取越来越容易。在大数据时代,移动端设备的使用随处可见,数字媒体形式更加多样化、携带信息量更大、传播速度更快,对信息安全的要求越来越高。然而在享受科技成果带来便利的同时,媒体的版权、内容的真伪和信息内容的安全等问题随之而来。信息隐藏技术是将一些秘密信息隐藏在信息载体中,而且不能导致信息载体无法正常使用,可逆水印技术是利用数字载体的冗余嵌入秘密信息,在检测时无失真的恢复原始载体和秘密信息。
[0003]现在的技术中已经有很多可逆信息隐藏方法,但其中大多数都是为未压缩的图像而设计的,只有少数基于JPEG图像的可逆信息隐藏方法,而JPEG图像格式在日常生活中应用广泛,对JPEG图像的可逆信息隐藏算法的创新和优化有非常重大的意义。
技术实现思路
[0004]针对现有技术的不足,本专利 ...
【技术保护点】
【技术特征摘要】
1.一种基于JPEG图像的通用可逆数据隐藏方法,其特征在于:其包括以下步骤:S1、将原始JPEG图像进行熵解码得到量化后的离散余弦变换DCT系数块,计算每个位置平滑度值,并按块平滑度降序调整块顺序,构造多个直方图;S2、确定自适应二维直方图映射规则,将秘密信息嵌入每个直方图的DCT系数对中,并获得嵌入容量和嵌入失真;S3、嵌入失真和嵌入容量组成的嵌入对,生成二维直方图的矩阵,并从矩阵中的每一行中挑选出一个嵌入对;利用改进的离散粒子群优化方法获得了每一个二维直方图的最优嵌入方式和最优阈值;S4、用最优阈值生成二维直方图,按照其对应的最优嵌入方式进行水印嵌入进行熵编码得到含秘密信息JPEG图像;并将附加信息嵌入到含秘密信息JPEG图像中。2.根据权利要求1所述的一种基于JPEG图像的通用可逆数据隐藏方法,其特征在于:所述步骤S1包括:S11、将原始JPEG图像进行熵解码后分成互不重叠的8
×
8大小的量化后的DCT系数块其中,代表块的数量,表示第k个DCT系数块;S12、每个DCT系数块中包含1个DC系数和63个AC系数,形成64个频带;即将DC系数的频带记为0,DC系数组成频带将位于第l个位置的AC系数组成第l个频带并为每一个频带分配一个阈值t
l
(t
l
∈[t
min
,t
max
]),其中l∈{1,2,
…
,63};即每个块包含1个DC系数c
k,0
和63个AC系数S13、DC系数不参与数据嵌入过程,计算中的每个AC系数c
k,l
的平滑度,即c
k,l
所在DCT系数块的平滑度的平滑度其中,l是AC系数位置的编号,表示第k个DCT系数块,#表示一个集合的秩,c
k,l
表示中第l个AC系数,c
k,l
=0代表值为零的AC系数;S14、挑选出平滑度大于t
l
的AC系数,将挑选出来的系数按照平滑度的降序排序获得排序后的AC系数其中,σ是一种映射关系,是一个一对一的映射,使得个一对一的映射,使得是频带中满足大于阈值t
l
的AC系数的数量,将中每两个相邻的AC系数组成一个系数对,构造出第l个二维直方图:其中,#表示一个集合的秩,表示向下取整函数,(c
n
,c
n+1
)代表一个AC系数对,(s1,s2)代表(c
n
,c
n+1
)的具体取值。3.根据权利要求1所述的一种基于JPEG图像的通用可逆数据隐藏方法,其特征在于:所述步骤S2包括:
S21、二维直方图有10种映射规则,代表10种嵌入方式其中第10种映射规则代表的是AC系数对没有做任何修改的嵌入方式,即在中AC系数对保持不变,其他9种映射规则代表了9种AC系数对的修改方式;S22、二维直方图以平面直角坐标系的形式表达,c
x
为横轴,c
y
为纵轴,即一个AC系数对用(c
x
,c
y
)代表,每一种映射将AC系数对分成四类:和类;假设类;假设和分别对应和中AC系数对的数量,中和的点(c
x
,c
y
)进行嵌入和移位操作,包括:若存在三个映射方向,嵌入1bit或2bits秘密信息,根据点的位置和映射的不同可将的A类点分为五种,具体来说:当属于时,(c
x
,c
y
)=(c
u
,c
v
),如果待嵌入的比特是s1=
‘0’
,则(c
x
,c
y
)保持不变;如果待嵌入的比特s1s2=
‘
10
’
,则(c
x
,c
y
)修改为(c
x
+1,c
y
);如果待嵌入的比特s1s2=
‘
11
’
,则(c
x
,c
y
)变为(c
x
+1,c
y
+1);当属于时,(c
x
,c
y
)=(c
u
,c
v
),如果待嵌入的比特是s1=
‘0’
,则(c
x
,c
y
)保持不变;如果待嵌入的比特s1s2=
‘
10
’
,则(c
x
,c
y
)修改为(c
x
,c
y
+1);如果待嵌入的比特s1s2=
‘
11
’
,则(c
x
,c
y
)变为(c
x
+1,c
y
+1);当属于时,(c
x
,c
y
)=(c
u
,c
v
),如果待嵌入的比特是s1=
‘0’
,则(c
x
,c
y
)保持不变;如果待嵌入的比特s1s2=
‘
10
’
,则(c
x
,c
y
)修改为(c
x
+1,c
y
);如果待嵌入的比特s1s2=
‘
11
’
,则(c
x
,c
y
)变为(c
x
,c
y
+1);当属于时,(c
x
,c
y
)=(c
u
,c
v
+1),如果待嵌入的比特是s1=
‘0’
,则(c
x
,c
y
)保持不变;如果待嵌入的比特s1s2=
‘
10
’
,则(c
x
,c
y
)修改为(c
x
,c
y
+1);如果待嵌入的比特s1s2=
‘
11
’
,则(c
x
,c
y
)变为(c
x
+1,c
y
+1);当属于时,(c
x
,c
y
)=(c
u
+1,c
v
),如果...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。