用于图像篡改检测和恢复的半脆弱水印的开发策
1 引言
近年来,网络技术变得越来越成熟,然而网络在方面人们生活的同时也给人们带来了困扰。人们不仅可以通过多种网络手段方便快捷的获得各种信息,还可以得到与原始数据完全相同的复制品。这样人们可以随意的编辑、修改、复制和散布数字图像数字音乐等[1]。这样网络中的信息安全问题也面临着极其严峻的考验。尤其是近些年来著作版权更是引起很大的争执。本文重点介绍半脆弱水印的研究方向和成果。
2 技术基础
2.1 脆弱性水印的特性
图像的完整性、真实性认证有其独特性[2]。第一,它是基于语义的认证。只要图像中的场景、对象没有被篡改,且保持其较好的视觉质量,则认为图像内容是完整的。第二,它是二维认证。即,不但要判断图像是否被篡改而且还需要确定被篡改的位置,以便分析图像哪部分是无效的,进而推断篡改者的意图等。
2.2 半脆弱数字水印技术
数字水印可以有效地保护电子商务等行业的网络和安全性,其中一个重要的应用是用于图像内容认证[3],而我们要研究的半脆弱水印就是主要应用于图像的内容认证,以确保图像数据的完整性和真实性。它是目前国内外研究的热点之一。可见,数字水印的研究具有研究和应用的两个方面价值,都值得我们去探索。本文重点介绍的半脆弱水印技术,正是认证水印的主流因素,从目前的研究进展来看,数字水印可以很好的保护电子商务等行业的安全性,上面已经提到了,半脆弱性水印技术能有效地抵抗诸如JPEG压缩、随机Gauss噪声等偶然攻击等常规操作,因此应用十分广泛。
2.3 半脆弱水印的基本框架
半脆弱性数字水印算法通常包含下面几个大体过程[4]:(1)水印生成的过程;(2)水印嵌入的过程;(3)水印提取的过程;(4)水印检测的过程(或者说是图像鉴别过程)。图1大致流程图。
2.4 半脆弱水印的算法分类
半脆弱水印的分类方法与前面归纳的数字水印分类方法类似。目前的研究成果方法包括LSB方法、Patchwork方法等;其中第二种方法是将水印信息隐藏到数字图像中经仿射变换后生成的系数矩阵,再仿射变换分类,但是必须保证水印信息不可见,能获得较强抵抗偶然攻击的能力。
已有的几种变换:
(1)基于空间域的半脆弱水印算法:空间域算法是将信息嵌入到随机选择的图像点中最低的像素位(LSB:Least Significant Bit)上;
(2)基于变换域的DCT半脆弱水印算法:又称离散余弦变换,由于DCT变换具有能量集中度高等特点,所以该变换常常被用来提升数字水印算法的鲁棒性;
(3)基于变换域的DWT半脆弱水印算法。
3 设计方案
3.1 水印的置乱方案
水印的置乱,实际上就是利用算法技术将一幅图各像素的次序位置打乱,即越乱越好,但要求像素的总个数不能发生改变。
常用的置乱技术主要包括Arnold变换算法、仿射变换算法、幻方变换、分形Hilbert曲线,IFS模型、Conway游戏和广义Gray码变换等方法。本设计使用的是Arnold变换算法,因为其算法简单、置乱效果很好,且具有可以计算的周期性,在图像信息隐藏方面得到了很好的应用。
3.2 Arnold变换及其逆变换
定义:Arnold变换是由提出的一种裁剪变换。Arnold变换如下:
(1)
式子(1)中:(mod 1)表示模1运算。其中,(x,y)是指原图像中的坐标,( x',y')是变换后的坐标。这里的坐标均是像素点所在的坐标。此变换就是Arnold变换,经过变换后,图像就会变得模糊。一般实际生活中为了使图片变得更加复杂,需要将式中的二维 Arnold变换改写为:
(2)
在公式(2)中,N是图像矩阵的阶数,也即是图像的大小,一般指的是方阵,在本设计中我们用到的是位图。Arnold变换用到方阵中较多,也可以用到一般的矩阵中。
迭代过程呈周期性,只要不断的变换N值,继续使用Arnold变换就一定能恢复出初始状态。Arnold变换可以看作是反复连续的过程,将数字图像矩阵中的像素重新排列组合,以达到置乱的目的。但是数字图像的像素点总是有限的,迭代到一定程度上时,就会恢复原图。表1是在不同N值下Arnold变换的周期表。
我们可以看出,Arnold变换的周期与N值的大小有关,即与图像大小有关,但并不成线性关系。设T为Arnold变换的周期,那么要计算经过t次变换的图像如何恢复出原始图像[5]。
(3)
(4)
我们可以这样计算,假设要对一幅进行过t(t∈[1,T])次 Arnold置乱变换的数字图像进行恢复,我们可以利用公式(3)对其继续进行次置乱即可恢复原图。对于任意置乱次数n,则需要利用公式(4)对其继续进行次变换。这是我们计算置乱恢复的公式,根据不同的N值可以得到我们想要的结果。
例如,对于512*512的数字图像,其置乱周期T=384,也就是说原图经过384次Arnold变换后图像就会变回原图。假设对一幅图像进行了Arnold置乱50次,即t=50,只需代入公式(3)计算出再经过334次Arnold变换,便可恢复出原图。对于256*256的图像,要经过192次恢复原图,假设对置乱300次后的图像,则需要利用公式(4)再进行置乱变换的次数为84次才可以恢复原图。
3.3 水印检测与图像内容认证
一般来说判断图像块是否通过验证,相异则判断为被篡改。定义篡改矩阵T以对图像的篡改位置作出标记[6,7]。
(5)
其中,公式(5)的矩阵T中为1的点就表示图像中像素点被非法篡改,为0表示图像中的像素点未被非法篡改。
3.4 图像信息的篡改定位
我们这里提出的篡改定位[8]的方法是,假设从含水印图像某一部分中某块子图像进行编号为L[nInd](0<=nInd 4 测试与分析
图2中的各个图展示了所有过程。载体图片如图2(a)所示,利用原始图像(如图2(b)所示)生成了二值水印图像(如图2(c)所示),然后把二值水印图像嵌入到载体图像中(如图2(d)所示)。对含水印的图像进行N=1的置乱效果如图2(e)所示,对含水印的图像进行N=40的置乱效果如图2(f)所示,在对置乱后的图像使用Aronld逆变换恢复原始图像,然后在提取出原来的二值水印信息。当N=384时恢复出了原始的水印图像,如图2(g)所示。由此可见Arnold变换呈现周期性,
即不同的N值对水印图像的置乱效果也不一样。当遍历了原图像的所有点之后,便产生了一副新的混乱不堪的图片。实验证明了Arnold变换具有很好的周期性,在Matlab工具中很好的恢复了原始的水印图片(如图2(h)所示)。
5 结语
本文用于图像篡改与恢复的半脆弱水印的研究,先是讨论数字水印,紧接着详细介绍半脆弱水印的性质以及分类。文中从水印的生成、水印的嵌入、水印的提取、水印的检测以及置乱算法,详细的介绍了含水印图像的置乱与恢复。最终在Matlab工具上实现,结合Arnold变换算法有效的恢复了原始的图像信息和水印信息,文中提出的水印检测是很复杂的运算,目前都是在已知恶意破坏的情况下,尽量去完整的恢复原始图像或水印信息。若要对检测的篡改区域完整的恢复还需要我们进一步的努力去探索。
参考文献:
[1]汤文明,李海华.用于图像认证的半脆弱数字水印技术综述[J].机电学报,2010,27(4):115-118.
[2]董刚,张良,张春田.一种半脆弱性数字图像水印算法[J].通信学报,2004,24(1):33-38.
[3]赵洋,孙燮华.HVS的DWT域半脆弱水印算法[J].中国计量学院学报,2008,19(4):333-337.
[4]刘东彦,刘文波,张弓.图像内容可恢复的半脆弱水印技术研究[J].中国图像图形学报,2010,15(1):20-25.
[5]石兆军.基于半脆弱数字水印的图像内容认证及恢复研究[D].电子邮件科技大学,2010.
[6]陈自刚,朱海华.可信JPEG XR图像采集研究与实现[J].合肥工业大学学报(自然科学版).2012,39(7):913-918.
[7]陈自刚,何金枝.基于JPEG XR的半脆弱数字水印技术研究[J].电视技术,2012,36(15):25-27,39.