-
Notifications
You must be signed in to change notification settings - Fork 1
/
data.txt
107 lines (77 loc) · 14 KB
/
data.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
doi:10.3969/j.issn.1001-2400.2XXX.0X.0
基于整数小波变换的无损数据隐藏方法
李宝玉
(西安电子科技大学 嵌入式技术与视觉处理研究中心,陕西 西安 710071)
摘要:本文提出了一种用于整数小波变换域图像无损数据隐藏的直方图移位方法。该算法将数据隐藏到高频子波段的小波系数中。它向频外平移高频小波子的直方图的一部分,从而向平移后出现的直方图零点嵌入数据。在数据嵌入有效载荷与标记图像的视觉质量方面,将所提出的方法的性能与现有的在空间域,整数余弦变换域和整数小波变换域中实现的现有无损数据隐藏方法的性能进行比较。实验结果证明了该方法优于现有方法。即,所提出的方法在相同的视觉质量(通过PSNR(峰值信号噪声比)测量)中具有更大的嵌入有效载荷或者在相同的有效载荷中具有更高的PSNR。。
关键词:数据隐藏 CDF(2,2) 直方图平移
中图分类号: 文献标识码:A 文章编号:1001-2400(2XXX)0X-0-0
LOSSLESS DATA HIDING USING HISTOGRAM SHIFTING METHOD BASED ON INTEGER WAVELETS
LI Bao-yu
(Embedded Technology and Vision Processing, Xidian Univ., Xi’an 710071, China)
Abstract: This paper1 proposes a histogram shifting method for image lossless data hiding in integer wavelet transform domain. This algorithm hides data into wavelet coefficients of high frequency subbands. It shifts a part of the histogram of high frequency wavelet subbands and thus embeds data by using the created histogram zero-point. This shifting process may be sequentially carried out if necessary. Histogram modification technique is applied to prevent overflow and underflow. The performance of this proposed technique in terms of the data embedding payload versus the visual quality of marked images is compared with that of the existing lossless data hiding methods implemented in the spatial domain, integer cosine transform domain, and integer wavelet transform domain. The experimental results have demonstrated the superiority of the proposed method over the existing methods. That is, the proposed method has a larger embedding payload in the same visual quality (measured by PSNR (peak signal noise ratio)) or has a higher PSNR in the same payload.
此文章重点研究图像无损数据隐藏,不仅需要对隐藏数据进行正确提取,还需要将标记图像反转回原始封面图像而不会产生任何失真。Ni等人提出一种使用零点和峰值点对的图像无损数据隐藏算法,方法是将图像直方图的一部分移位以嵌入数据。 另外,Leest等人提出了一个类似的方法。 但是,这两种方法都是在空间域中实现的。 众所周知,直方图分布在图像之间变化很大。因此,这两种方法难以实现在高度不失真的情况下嵌入较大的数据。 由于高频子波段的小波系数具有拉普拉斯样分布,这意味着在零和小两端的直方图中存在高峰,因此作者建议将直方图位移技术应用于小波域。 由于无损要求,作者选择在整数小波变换域中嵌入数据。
在高频整数小波子波段的直方图移位期间,对于8位图像,溢出(对于8位图像超过255的像素灰度值)和/或下溢(对于8位图像低于0的像素灰度值 )可能发生,因此违反了无损要求。 为了克服溢出,作者采用了直方图修改技术,这些技术已经在作者以前的论文中用于使用整数小波变换的图像无损数据隐藏。(这部分工作需要参考作者之前的论文,而且通过代码实现我并没有发现在小波子波段上平移会造成原数据溢出,所以这部分的代码并没有实现)。
作者为比较这种新技术与现有技术的性能做了实验,结果显示了所提出技术的优越性。。
1 基于整数小波直方图变换的无损数据隐藏
1.1 整数小波变换
由于需要进行原始图像的无损恢复,作者采用基于小波变换的整数平移策略,小波变换选择了CDF(2,2)小波。CDF(Cohen–Daubechies–Feauveau)是历史上第一族双正交小波。尽管与正交Daubechies 小波的形状与性质不同,这些小波的构造思想是一样的。JPEG 2000压缩标准使用用于无损压缩的双正交CDF 5/3小波(也称为LeGall 5/3小波)和用于有损压缩的CDF 9/7小波。
1.1.1性质
如果原始因子分解 确定,则原始生成器是B样条。
双生成器在其长度上具有尽可能高的平滑系数。
这个家族中的所有生成器和小波都是对称的。
1.1.2 构建
对每个正整数A,存在一个唯一的多项式 满足
这也是Daubechies小波构造时用的多项式。然而CDF不采用谱因子分解,而是采用如下的因子分解:
其中因子是具有实系数和常系数1的多项式。
上面两个多项式组成了一对双正交尺度序列。d是一些整数,用于将对称序列置零为零或使对应的离散滤波器成为因果关系。根据 的根,可能会有 种不同的因子分解。一个简单的分解为 且 那么主尺度函数就是A - 1阶的B样条。对于A=1,就可以得到正交的Haar小波。
1.1.3 编号与命名
CDF家族的小波有两种相同的编号方案:
低通滤波器的平滑系数的数量,或者等效于高通滤波器的消失矩的数量,例如, “2,2”;
低通滤波器的尺寸,或等效的高通滤波器的尺寸,例如, “5,3”。
第一个编号被用在Daubechies的书的第十讲。 这两个编号都不是唯一的。 消失矩并不能确定选择的因子分解。 滤波器大小为7和9的滤波器组在使用微分分解时可能有6个和2个消失矩,或者JPEG2000小波的情况下有4和4个消失矩。 因此相同的子波可以被称为“CDF 9/7”(基于滤波器大小)或“双正交4,4”(基于消失矩)。
1.2 小波直方图平移简介
经过整数小波变换,高频子波段的直方图被计算出来,下面将此直方图称为小波直方图。 横轴表示小波系数的值,纵轴表示改大小的小波系数的出现次数。 如前所述,Ni等人 [1,2]提出了空间域直方图的移动方法,而Leest等人在空间域中提出了直方图间隙函数方法。
下面,使用一个简单的例子来说明使用直方图平移来进行数据嵌入的原理。如图1,(a)是原始的整数小波高频子波段直方图,(b)图上一个zero point在小波系数等于Z+1的地方被创建,意味着原始图像的小波系数中将不会再有Z+1,创建方法就是将所有的大于Z的小波系数全体加1。意味着Z+1变成Z+2,Z+2变成Z+3,以此类推。而小于等于Z的小波系数不发生改变。
图1, zero point产生示例,(a)原始直方图,(b)zero point创建后的直方图
在数据嵌入操作中,首先在Z+1处创建zero point,之后扫描所有的整数小波变换的高频子波段系数(是一个二维数组),一旦一个值为Z的系数被发现,那么如果将要被嵌入的数据bit位为1,那么将该位置的小波系数加1,这意味着在直方图中Z的zero point,Z+1处有了一个系数。如果将嵌入的数据bit位为0,那么跳过此点。
数据提取是嵌入的反过程。当前位置为Z时,如果在整数小波变换的高频子波段系数中发现了一个Z+1,那么意味着有一个为1的bit位被提取,之后将该位置的系数置为Z,如果遇到一个Z,那么意味着有一个为0的bit位被提取。在Z位置的所有数据被提取后,在直方图上所有大于或等于Z+2的部分需要被左移一位。而实际的操作就是,所有大于或等于Z+2的系数全部减1。直方图的平移过程也可以被扩展到频谱的左边,而以当前例子类推那时的平移将是向左边平移。显然,有效负载就是直方图上位置Z处的系数的个数。
由于用于数据嵌入的小波系数的位置可被一个密码控制以保证数据安全性。如果将要被嵌入的数据bit位很多,经常需要多个zero point和相应的平移来逐渐累积以达到较大的payload。
前面说明的数据嵌入的过程和数据提取过程可以总结如下。对于数据嵌入,首先在当前位置为Z时,从Z+1开始讲直方图向右平移,使Z+1处空着,即在直方图上Z+1处创建了一个zero point。接着,根据将要被嵌入的bit序列,选择保持值为Z的小波系数不变(嵌入一个0 bit)或者将系数从Z变为Z+1(嵌入一个1 bit)。在数据提取期间,在系数为Z的地方提取0,在系数为Z+1的地方提取1。并且将系数为Z+1的变回Z。当所有的隐藏为被提取出来以后,需要将直方图中大于Z+1的部分向左平移一个单位。
由于整数小波变换的高频子波段的直方图服从类拉普拉斯分别,此算法可以将数据嵌入到直方图的两边,直到所有要嵌入的bit位被嵌入完成。本文提出的数据嵌入和提取算法详细过程如下。
1.3 数据嵌入算法
假设有M个bit位将要被嵌入到图像的整数小波变换的高频子波段。嵌入过程如图2:
.
图2 数据嵌入流程图
(1)设置一个阈值T>0,使得在[-T,T]内小波高频系数的个数大于M,并且将Peak置为T。
(2)在小波直方图上,将直方图值大于Peak的部分向右边平移一个单位,以在Peak+1处留出一个zero point。之后在这个位置嵌入数据。
(3)如果还有未嵌入的数据,使Peak=(-Peak),将小于Peak的直方图部分右移一个单位,以在(-Peak-1)处留出一个zero point。之后在这个位置嵌入数据。
(4)如果所有数据被嵌入,停止并且记录Peak值为停止值stop peak。否则使Peak=(-Peak-1),返回(2)以继续嵌入数据。
1.4 数据提取算法
数据提取算法时数据嵌入算法的反操作。假设停止值stop peak为S,并且阈值为T,图3为数据提取的流程图。
图3 数据提取流程图
(1)设置Peak = S。
(2)使用Peak解码(假设Peak>0,如果Peak<0,相应的运行过程如图3的流程图),提取所有数据直到Peak+1成为一个zero point。将直方图上所有大于Peak+1的系数向左移动一个单位,掩盖住zero point。
(3)如果提取到的数据小于M,设置Peak=-Peak-1。继续提取数据直到Peak-1位置变成一个zero point然后将直方图上小于Peak-1的系数向右移动一个单位以盖住zero point。
(4)如果所有被隐藏的位被提取,停止。否则设置Peak = -Peak,跳到(2)以继续提取数据。
1.5阈值选择与小波系数修改分析
负载大小决定于Peak,即根据整数小波变换系数给出的Peak值。一旦阈值T被设置,根据算法,数据将被嵌入到直方图上的[-T,T]区域中。因此,最大负载为在[-T,T]中的系数的格式。例如,如果T==5,可能的zero points将是6,-6,5,-5,4,-4,…S,S是停止值。从T与S,可以计算出总的zero points:2*(T-|S|+1)-u(S),u(.)是一个单步函数,如果还有将要嵌入的数据,S=0,这表示[-T,T]不够容纳数据,应该增加T值。如果最大负载足够,不同的T将导致有不同的S,此时原图与嵌入图像后的PSNR值如下表所示。下表展示了如果嵌入0.02bit每个像素点,最高的PSNR将在T=3处达到,因此本文选择用有最高PSNR的T=3。
表1 阈值T与停止值S和PSNR
2 一些实验结果
本文在六个经常用到的图像上即Lena, Baboon, Airplane, House, Peppers, Sailboa上进行实验并将结果列出。从图4可以看到当131k bits的数据被嵌入到这些图像中时,图像的质量还是可以接受的,此时嵌入的payload达到0.5bpp。
图4 负载为0.5bpp时的图像效果,PSNR:(a) Lena: 41.07 dB,(b) Baboon: 31.18 dB, (c) Airplane: 42.71 dB, (d) House: 40.90 dB, (e) Peppers:39.71 dB, (f) Sailboat: 36.91 dB.
表2和表3列出了不同的负载情况下Lena和Baboon的PSNR。可以看出,提升阈值T并不总是提升负载。当负载很小时,可以选择一个更大的阈值T。因此更少的系数会被改变,并且PSNR更高。当负载较大时,zero point的数量和阈值T也需要变大。
表2 Lena的实验结果
表3 Baboon的实验结果
图5 说明了此文提出的方法与当前各种先进的无损的数据隐藏方法的性能对比,包含Ni,Tian等人的方法,整数DCT方法,阈值嵌入方法。此前最优的方法是阈值嵌入法,而这也表明了本文提出的方法达到了最高的PSNR。
图5 与其他最好的无损数据隐藏方法在Lena上的性能对比
表4和表5展示了与Ni的方法的详细的比对。表4说明当负载相同时本文的方法能够达到更高的PSNR。表5说明相同的PSNR下本文能够有更高的负载。
表4 相同负载下的PSNR
表5 相同PSNR下的负载
3 论文总结
本文提出来一个新颖的基于直方图平移,整数小波变换与直方图修改的无损数据隐藏方法。使用结果和理论分析表明提出的方法与其他相似的在空间域、整数DCT域、整数小波域的方法相比有更高的性能。提出的方法在相同PSNR下具有更大的负载。尤其当负载很小时本文提出的方法有非常高的PSNR。
4 代码实现
我根据论文,查阅相关资料,在matlab上实现了此代码,其中CDF(2,2)的正向变换与反向变换由matlab实现,我主要完成了直方图平移算法以及数据嵌入和数据提取。经过试验,我实现的算法确实能够达到论文中的指标。
程序输入为一张图像与嵌入的数据,运行期间会将数据嵌入到图像的小波变换的高频子波段。同时绘制嵌入前后的高频波段直方图与原始图像、嵌入数据后的图像、提取数据后的重建图像。最终还会输出提取到的数据。同时计算MSE,PSNR等值。
原始图片 嵌入数据后的图片 两图之差
嵌入数据前小波系数直方图 嵌入数据后小波系数直方图
程序输出: