新闻中心

EEPW首页>嵌入式系统>设计应用> 用于图像认证的半脆弱水印算法研究

用于图像认证的半脆弱水印算法研究

作者: 时间:2012-02-11 来源:网络 收藏


4.2.2水印嵌入的实现
由于JPEG压缩的不变性,也就是说,如果一个DCT系数是经过某个预先选定的量化步长量化并取整得到的,只要后续的量化步长小于选定值,则这个DCT系数可以被精确重建,换句话说,如果某幅图像预先经过某个选定的质量因子的JPEG有损压缩,那么这幅图像可以对任何大于该选定质量因子的后续JPEG压缩保持不变,因为原始量化图像所有DCT系数都可以精确重建,而如果后续JPEG压缩的质量因子小于选定值,原始量化图像的DCT系数则无法恢复。这个需要预先选定的质量因子一般可以设定为人眼最低可以接受的图像质量因子,也就是说,任何低于该质量因子的图像被视为不可接受的。JPEG标准推荐图像的质量因子在50一75之间均为视觉上可以接受的,因此我们可以选择50作为预先设定的质量因子,其对应的量化表为DCT系数的量化步长。


利用前面所述的JPEG压缩的不变性,首先将原始图像的8*8块DCT系数块按预定的质量因子对应的量化表进行量化,通过对量化后的DCT系数进行”微调”来嵌入水印信息比特,再进行DCT反变换得到水印图像。相同的过程提取出水印,并将其与原始水印信息匹配的百分比和设定的阈值比较,决定是否通过认证。该算法能够抵抗所有大于预定质量因子的攻击。


算法中水印信息的选择是基于图像内容特征的。一种简单的基于图像内容的特征是每个分块灰度值的均值的最重要位(MSB ,the Most Significant Bit),即最高位。水印的嵌人算法采用了一种无损数据隐藏方法环形直方图算法(Circular His-togram Algorithm)。首先把待嵌人水印的图像分成8*8块,每块64个像素通过密钥被随机地分为A和B两组,在每一组中,灰度值直方图映射为一个环形,环形的周长为256个单位,等分为Q个区间,每个区间分的弧长为256/O若一个像素灰度值落在某个区间之内,则这个区间的权重加1,这样每一组共有犯个权重加载在环上。计算每组环上的加权平均值,从统计学的角度分析,由于A, B两组的像素都是随机选择的,因而A, B两组的加权平均值应非常接近或近似相等。为了在每一个8*8块中嵌入1比特水印信息,将块中像素的灰度值作如下修改:
若嵌人比特为”1 ” C`=C+P当像素在A组中;
C`=C-P当像素在B组中;
若嵌入比特为”0″ C`=C-P当像素在A组中;
C`=C+P当像素在B组中;
其中c为待嵌入水印图像的像素灰度值,c为修改后,即嵌入水印后图像的像素灰度值,P= 256/Q。若嵌入比特”1″,则A组中的所有像素灰度值增加P,对应到环上即像素灰度值均顺时针方向偏转了一个区间,每个像素在环上的位置均顺时针转了360/Q度。相应的B组中的所有像素均逆时针方向偏转了相同的度数。这样当嵌入比特”10的时候,A组的加权平均值大于B组,且每个图像块灰度值的均值,即选定的图像特征保持不变。嵌入”0″比特的情况同理可得。通过这种环形直方图无损数据隐藏算法将由图像内容特征产生的水印信息嵌入了预压缩后的图像〔9〕。


4.2.3水印检测的实现
将接收到的待验证的图像先按预定质量因子压缩,恢复出预压缩后的水印图像;再依照环形直方图算法提取水印:将图像8*8分块按选定的密钥随机分成A, B两组,并映射到环上,计算A, B两组对应环的加权平均值。如果A组的加权平均值大于B组,则提取出比特”1″,反之则提取出比特”0″。过程将提取出的水印比特与对恢复出的预压缩图像再次计算得到的特征信息进行比较匹配,若匹配的百分比大于设定的域值则图像通过认证,反之判断为遭受过恶意篡改。由前面所说的JPEG压缩的不变性可知,该算法可以抵抗任何高于预定质量因子的JPEG压缩。并能根据认证过程中不匹配的比特定位遭受篡改的位置,精度为8*8块。由于嵌人的水印信息是基于图像内容特征的,每幅图像嵌人的比特信息必定各不相同,因而可以有效地抵抗共谋攻击〔10〕。
论文中用到的纠错编码现在就可以发挥它的优势了。程序实现到此,论文用纠错解码的方法得到36*4的提取水印,把这个水印和之前植入的水印信息进行比较,就可以作出是否被篡改的判断了。
for i=1:36
s1(i)=x1(i,1)+x1(i,2)+x1(i,3)+x1(i,5);
s2(i)=x1(i,2)+x1(i,3)+x1(i,4)+x1(i,6);
s3(i)=x1(i,1)+x1(i,2)+x1(i,4)+x1(i,7);
s1(i)=mod(s1(i),2);
s2(i)=mod(s2(i),2);
s3(i)=mod(s3(i),2);
if (s1(i)==0s2(i)==0)(s3(i)==1)
x1(i,7)=~x1(i,7);
elseif (s1(i)==0s2(i)==1)(s3(i)==0)
x1(i,6)=~x1(i,6);
elseif (s1(i)==0s2(i)==1)(s3(i)==1)
x1(i,4)=~x1(i,4);
elseif (s1(i)==1s2(i)==0)(s3(i)==0)
x1(i,5)=~x1(i,5);
elseif (s1(i)==1s2(i)==0)(s3(i)==1)
x1(i,1)=~x1(i,1);
elseif (s1(i)==0s2(i)==1)(s3(i)==0)
x1(i,3)=~x1(i,3);
elseif (s1(i)==1s2(i)==1)(s3(i)==1)
x1(i,2)=~x1(i,2);
end;
end;


4.3 实验结果与分析
由算法写的程序在Matlab6.5平台上仿真,使用标准水印实验图像cameraman(256*256)(如图4.1)作为认证图像。由于Matlab的易用性,我只要用个简单的函数imread()就能读取cameraman图像为我用了。

图4.1 Cameraman
Matlab功能强大的函数功能使我生成高斯正态序列也变得简单了。如下的程序能生成36*4的信息。
randn(’state’,1106);
g1=randn(36,4);
for i=1:36
for j=1:4
if g1(i,j)>=0
w0(i,j)=1;
else w0(i,j)=0;
end;
end;
end;
加入的高斯正态序列生成的图片,也即要加入的水印图像如图4.2。

图 4.2 水印图像
这些属于预处理的工作做好后,就可以实现嵌入了。嵌入水印是所有所有算法中最重要的部分,这部分写的好坏能很大程度上影响算法的性能。应用本算法嵌入水印后的图像为4.3图。

图 4.3 嵌入水印后的图像
使用语句imwrite(f,’attackf.jpg’,'jpg’,'quality’,30)即实现了30%JPEG压缩。攻击后的图像为图4.4。

图 4.4 30%jpeg压缩后的图像
我们知道,在评价一个算法好坏的时候有两中标准,一种是主观的一种是客观的。首先在主观上我们可以很直接的说,算法能抵抗压缩因子为30%的JPEG压缩。当我们把压缩因子提高到20%时的图像如图4.5。


这样在主观上我们就能看出来压缩因子在20时,算法就有一定的局限性了。对JPEG压缩攻击后的图像进行水印提取后与嵌入的水印进行相关系数运算结果是r11=corr2(w0,w11)=1;snr11=31.2909。对余下的九种攻击,我们也给出图像,并求其相关系数和信噪比。由于算法加入了纠错编码,使得水印在遭受恶意篡改后所求出的相关系数是0,而在遭受了善意攻击后的相关系数则是1。


所以得出结论如下:本算法能有效抵抗高斯低通滤波,直方图均衡化,图像增亮和变暗,对增加对比度,降低对比度,添加高斯噪声增黑白像素点,添加乘积性噪声则性能下降。也就是说本算法能很好的实现对图像的认证功能。但算法对篡改的定位不是很有效,只能在主观上判断篡改部分。

图 4.5 20%jpeg压缩后的图像
snr=30.3054 r=1
以下依次给出论文所做的其它攻击后的图像,如图4.6-4.14。

图4.6高斯低通滤波后的图像 图4.7 直方图均衡化后的图像
snr=31.067 r=1 snr=31.126 r=1

图4.8 图像增亮处理后的 图4.9 图像变暗处理后的
snr= 30.596 r=1 snr=30489 r=1

图4.10 增加对比度后的图像 图4.11 降低对比度后的图像
snr=30.158 r=0 snr=31.268 r=0

图4.12 添加高斯噪声后的图像 图4.13 增加黑白点像素后的图像
snr=31.564 r=0 snr=31.357 r=0
图4.14添加乘积性噪声后图像
snr=31.874 r=0

第五章 总结与展望
5.1 本文所做的工作总结
本论文主要是研究了一个用于的水印算法,并对其有效性进行了评价。下面就在本论文写作过程中作的工作进行一下总结:


一. 针对现在数字媒体应用的日益广泛和盗版现状的担忧,提出了数字水印的概念。并进一步阐述了数字水印的必要性和重要性。然后对于特殊应用上,比如方面的要求,引出了的概念。之后论文还详细介绍了脆弱水印的发展历程和研究现状。


二. 论文具体解释了数字水印的定义和的技术要求,并详细介绍了国内外做的方法,在此基础上介绍了评价水印算法优劣的几个指标。最后对本次毕业设计要用到的仿真平台Matlab6.5进行了简单的介绍。


三. 针对要实现对图像进行认证这一目标,介绍了认证算法的一般要求,然后就提出了一个可用于图像认证的半脆弱水印算法。介绍了算法的思路,并画出了算法的方框图。


四. 这部分详细说明了算法各个部分的实现过程。包括水印的预处理的实现,水印嵌入的实现和水印检测的实现。之后把仿真后的输出结果直观的贴在论文里,并给出了攻击后图像对于原图像的信噪比和水印的相关系数。再加上我们的主观评价,得出了对算法的评价。


5.2 工作展望
数字水印技术的理论基础依然非常薄弱,大多数水印算法还是经验性的。主要有以下几个方面还需努力:


〔1〕 从现实的角度看,水印系统必然要在算法的鲁棒性、水印的嵌入信息量以及不可觉察性之间达到一个平衡,这涉及鲁棒性算法的原理性设计、水印的构造模型、水印能量和容量的理论估计、水印嵌入算法和检测算法的理论研究等方面。如何确定平衡点仍是一个难题,目前大多数水印算法均利用经验而不是从理论上解决此问题;


〔2〕如何将水印技术与现行国际图像及视频压缩标准,如JPEG2000和MPEG-4(Moving Picture Experts Group-4,运动图像专家组)相结合,以及如何将水印技术应用于DVD工业标准中;


〔3〕 所有权的证明问题还没有完全解决,就目前已经出现的很多算法而言,攻击者完全可以破坏掉图像中的水印,或复制出一个理论上存在的”原始图像”,这导致文件所有者不能令人信服地提供版权归属的有效证据。因此一个好的水印算法应该能够提供完全没有争议的版权证明,在这方面还需要做很多工作。目前将水印作为版权保护的法律证据还不可能;


〔4〕声频和视频水印的解决方案还不完善,大多数的视频水印算法实际上是将其图像水印的结果直接应用与视频领域中,而没有考虑视频应用中大数据量以及近乎实时的特性。从今后的发展上看,水印在包括DVD等数字产品在内的视频和音频领域将有极为广阔的应用前景。因此如何设计成熟的、合乎国际规范的水印算法仍然悬而未决;

〔5〕现有水印算法中在原理上有许多雷同之处,但目前国内外的工作尚未能对这些有内在联系的不同算法中的共性问题进行高度提炼和深入的理论研究,因而缺乏对数字水印作进一步研究具有指导意义的理论结果。


从目前看大多数水印算法本质上都没什么差别,且在嵌入过程中均是对PN(Pseudo Noise Sequence,伪随机序列)序列进行调制并结合掩蔽特性,在检测过程中使用基于相关法的假设检验。水印算法的设计不仅要考虑一般性的由标准数据处理过程导致的鲁棒性问题,而且要考虑由于恶意攻击而导致的鲁棒性问题。前面已经提到了几种普遍的攻击类型,针对性的水印策略和方法也在研究中。一句话,水印应该有足够的冗余设计以保证能够抵抗各种攻击行为。在版权保护方面,还需要考虑一些额外的方面。一个问题是如果有很多水印被嵌入到图像中,如何证明那个最先被嵌入的。此问题的解决也许需要数字时间标识或水印等级等方法。而且现在已经可以看出,一个水印算法仅仅有足够的鲁棒性不足以保证解决有效版权问题,即使能够得到原始数据。更进一步的讲,水印算法应该是非对称的、单向的、不可逆的。


虽然已经有商业化的水印系统,但对水印的研究还远未成熟,许多问题如鲁棒性、真伪鉴别、版权证明、网络快速自动验证等方面仍然还需要比较完美的解决方案〔11-14〕。


上一页 1 2 3 4 5 6 下一页

评论


技术专区

关闭