陈丁睿 佟国香
(上海理工大学 上海 200093)
近年来,数字技术发展迅速,伴随着网络的发展,数字产业的快速发展,以及数字图像所具有的广泛实用性和功能性等特点,数字图像已成为应用最广泛的一种数字信息。但随之而来的是多媒体数据的版权保护问题,而数字水印在版权保护方面起到了重要的作用。数字水印在近年来也发展了许多,在科研人员中也出现了许多杰出的成果[1~5]。文献[12]选择对图像进行三级离散小波变换,再对变换后得到的低频子带进行奇异值分解。在强鲁棒性的研究上面,文献[13]提出了一种具有多方向,多尺度特征的二维图像分析算法,但是不足的是,图像边缘会出现伪Gibbs 失真现象。文献[14]提出了一种基于局部特征的鲁棒盲水印算法,算法鲁棒性强,提取图像的特征点是其算法的主要内容,其算法缺点是视觉质量的下降。因此,图像水印技术中最难的一个技术点就是在保证图像质量的前提下,尽可能平衡不可见性和鲁棒性。
本文针对上述问题提出了一种对原始水印图像进行二重加密的方法。算法利用基于中国剩余定理(CRT)的RNS余数系统进行水印的加密,再结合Arnold 置乱使得加密的图像具备二次加密性和良好的随机性。此外,基于DCT域的数字图像数字水印算法,将立足于基于人眼视觉系统,将不同基色的水印分量嵌入到DCT 的中频系数当中。本文提出的RNS加密算法运算简单,使得水印具有良好的不可见性,相比传统的混沌系统加密,RNS 的加密速度更快。
Arnold 置乱的原理是利用置换矩阵,将矩阵中的像素点重新排列,从而达到加密的效果[15]。
二维Arnold置乱的公式为
xn,yn是原始图像矩阵中的像素点的初始位置。xn+1,yn+1是变换后的新位置。经过多次置乱后,图像会失去本来的面目。
实验中发现,Arnold 置乱没有密钥参与,且具有周期性,且这种置乱只是像素位置的变换,图像的统计信息无法加密,安全系数并不理想。因此,我们需要利用RNS进行二次加密。
RNS是一个非权重数值表征系统,RNS不同于十进制、二进制那样有权位的数制,它的数值表示和算数运算都是用余数进行的,余数运算是一种并行运算,不需要进位,具有高精度[11]。余数系统可表现为如下形式。
{m1,m2…mn}为一组两两互质的正整数,整数X由它对该余数基的余数向量{x1,x2…xn}来表示,其中xi=Xmodmi,∀i∈{1,2…n},写作xi=X mi由式(1)可以确定X的值:
一个完整的余数系统至少应该包含三个部分:余数约化、余数运算、余/二后向转换(R/B 转换)。余数约化的目的是将有位权数值表示转化为余数表示,余数运算包括算数四则运算和其他的必要运算,R/B 转换的作用是将各种余数运算的最终结果从余数制表示转换成二进制表示[9]。
R/B 转换是余数系统的重要内容。目前,对于普通余数基的R/B 转换,主要有以下两种方法:混合基转换和中国剩余定理(CRT)[10],本文主要的R/B 实现也是基于CRT 及其变形来处理。文献[6]对CRT 进行变形,得到了上述定理的三个推论CRT-I,CRT-II 和CRT-III,本文主要利用CRT-I 作为RNS的后向转换算法进行水印的提取。
CRT-I计算X可以由式(3)确定:
将上述内容带入式(3)可以求得R/B的后向转换算法:
Step1:首先,将水印图像进行Arnold 置乱得到置乱后的水印图像,实现初步加密。
Step2:将加密后的图像按照余数基进行取余,得到三通道的RNS余数块,实现二次加密。
Step3:对载体图像进行RGB 分解得到RGB 灰度图像,将RGB 灰度图像按N*N 的数据块进行DCT变换,再将三通道的RNS数据块按照合适的嵌入强度a 分别嵌入到RGB 灰度图像的DCT 中频变换域数据块中:
a 为嵌入强度,D 为DCT 变换后的基色图像矩阵,Rj为RNS 余数块,Ri为嵌入水印后的DCT 变换图像矩阵。
Step4:再分别对嵌入水印后的图像矩阵按N*N 的数据块进行DCT 反变换得到加密后的RGB灰度图像,再将三通道的分量合成得到加密后的彩色图像。图1为水印嵌入的流程图。
图1 水印嵌入流程图
Step1:将嵌入水印的彩色图像按RGB 分量进行分解,获得三通道的灰度图像。
Step2:将三通道的灰度图像按照N*N 的数据块进行DCT变换,并且与未嵌入水印的彩色图像的RGB 三通道的DCT 变换矩阵作差获得嵌入的三通道水印数值。
Step3:按照嵌入强度a 对水印数值进行缩放,获得三通道的RNS余数块,再利用R/B的后向转换算法获得初步加密的水印图像,最后对上述图像进行Arnold反置乱,获得水印图像。
本实验用Matlab 来对图像进行水印的加密和嵌入。载体图像选取一幅分辨率为256*256 的标准Lena 彩色图像,水印图像为32*32 的灰度图像,DCT 变换的数据块选择8*8 数据块,嵌入强度a 取3.5。
峰值信噪比PSNR 用来评价算法的不可见性,PSNR 的值越大,说明水印图像对原始载体图像的改变越小,算法的不可见性越好,彩色图像的PSNR计算公式定义如下:
NC 归一化相关性表示提取出的水印图像与原始水印图像的相似程度,它的值越大,表明算法的鲁棒性越好。在此基础上,还需要通过各种常见攻击来深入测试水印的鲁棒性:在嵌入水印之后,对载体图像进行裁剪、JPEG 压缩、旋转、添加噪声以及均值滤波、中值滤波等多种常见的水印攻击。图2 是RGB 原始载体图像和原始水印图像;图3 是含水印的RGB 载体图像和未受攻击情况下提取的水印图像;图4 是旋转45°后的载体图像和提取的水印图像;图5 是添加高斯噪声0.1 后的RGB 载体图像和提取的水印图像。
图2 原始图像和水印
图3 未受攻击的载体图像和水印
图4 旋转45°的载体图像和水印
图5 高斯噪声0.1的载体图像和水印
表1 是本文算法与和另一文献中结合傅里叶全息加密技术和非抽样变换的的彩色图像水印算法的性能比较,显然,本文的算法效果更优。
表1 算法抗攻击性能比较
在RNS中,通过对该系统下的每个分量进行加减法和乘法操作,可以实现大数相加减和乘法运算。RNS中的各个分量在运算时不需要进位,这使得算法的并行度得到极大的提高。本文的算法将余数系统分为RGB 三通道进行并行计算,并且与文献[8]提供的算法进行时间上的比较,实验均采用256*256 的国际标准测试图像,如图6 所示。可见,RNS 算法不仅具有良好的加密效果,还能实现高速的计算。
图6 算法速度性能比较
本文结合基于中国剩余定理(CRT)的RNS 余数系统和Arnold置乱,提出了一种适用于彩色图像的数字水印嵌入算法,试验结果表明,对于普通的几何攻击或噪声攻击,该算法具有较强的鲁棒性,算法速度快。若采用FPGA 硬件平台,可以设计RNS 复用处理器,实现算法的可重构特性,并通过合理的调度实现数据级并行和指令集并行,充分挖掘数据的并行度,加快运算速度,有很强的实用性。