1 引言
图像的信息隐藏技术是指在图像中加入代表版权拥有者的某些信息(水印),以实现版权保护。加入水印后的图像应无明显降质现象出现,即水印具有较强的不可见性;同时也应具有鲁棒性,即经过各种恶意或无恶意的信号处理后,水印仍能被完整、准确的鉴定出来。
本文介绍了一种空间域图像信息隐藏方法,该方法中首先将水印图像各像点的位置进行随机置乱达到加密的目的,再根据水印各像点的取值,并结合宿主图像块的特点,自适应地改变嵌入信息的强度,以满足水印的不可见性,利用伪随机序列将水印点嵌入到图像中的位置进行随机置乱,提高了水印的安全性以及受到剪切时的稳健性,此算法无论是在嵌入或是提取水印时都非常简便,可利于实时或者FPGA的实现,另外实验也证明,该算法具有很好的水印透明性和鲁棒性。
2 水印的嵌入方法描述
2.1 二值水印图像的随机置乱
将二值图像作为水印,设其像点为为Mm×Nm。为了提高水印的安全性,首先对原始二值水印图像进行随机排列,即随机置乱。过程如下:
(1)将大小为Mm×Nm的二值图像表示成向量形式。
(2)由密钥key1控制产生一个长度为Mm×Nm的随机序列,序列的元素是1-Mm×Nm之间随机排列的整数。
(3)以随机序列的元素为序号,重排水印序列的元素的次序,实现水印的置乱。
2.2 宿主彩色图像从RGB到YUV格式的转换
彩色图像比较常用的表示格式为RGB(即红、绿、蓝)格式,而YUV颜色表达方式主要用于电视信号中,Y分量的物理含义是亮度,代表了图像的所有信息,U和V分量代表了色差信号,我们在Y分量中加入水印,对于U,V分量不做任何变换,在Y分量中加入水印之后,由YUV分量重新生成RGB分量,即构成了加入水印后的图像。
图像从RGB到YUV以及从YUV到RGB格式的转换的公式如下:
2.3 根据图像块特征,自适应地改变嵌入水印的强度
将宿主图像Y分量分成大小4×4的图像块,水印加入的过程实际上就是根据水印像点值的取值情况依次改变对应图像块灰度值的过程,这里灰度值改变的大小程度主要是根据宿主图像块的特征而自适应地改变,根据人类的视觉特点,如果图像块的灰度值对比度越大,人眼对图像中的噪声的敏感性越弱,相反,对噪声的敏感性就强。而水印的嵌入过程可以认为是图像加入噪声的过程,嵌入水印的强度可以根据宿主图像块的灰度对比度而改变,如果对比度大,则加入的水印可以强一点,假设Ymax和Ymin分别是选定的一个4×4块中的16个象素中最大的灰度值和最小的灰度值,那么差值Δ=gmax-gmin可以近似表示图像块的对比度的大小,根据Δ可以改变宿主图像灰度值的变化量的大小,即加入水印的强弱,为了防止由于图像块过于平滑,造成水印在图像块中强度太弱使鲁棒性变差,我们设置了水印强度的下限λmin,这样构成了如下用于调整水印强度的系数:λ=max[λmin,K×(ymax-ymin),其中k可以调整水印图像中的整体强度,λmin根据宿主图像的特点由实验中确定,下面介绍水印嵌入的方法。
首先产生一个数值在0-1之间的长度为4×4的伪随机序列,并将该序列变成4行×4列的矩阵PN(i,j),(j=1,…,4;j=1,…,4)
假如二值水印序列当前元素值为0,相应的宿主图像块的各灰度值y(i,j)作如下修改:ynew(i,j)=y(i,j)+λ×PN(i,j);若二值水印序列当前元素值为0,相应宿主图像块的各灰度值y(i,j),作如下修改:ynew(i,j)=y(i,j)-λ×PN(i,j)。也就是说保证在水印像点值为1时,相应宿主图像块中的各灰度值比原来的值有所增加,而水印像点值为0时则相应宿主图像块的灰度值变小,由于PN(i,j)是随机的,所以图像块中任意位置增加或减小的灰度值是随机的,类似于噪声,使水印在视觉上不易被察觉。
2.4 水印信息随机嵌入到图像块
水印信息随机加入到各个图像块中,而不是依次将水印信息加入到由上而下、由左到右描述的图像块中,其主要原因有两个:第一是为了防止攻击时可能将含水印的图像部分完全剪切掉以致于提取不出水印,以及保证图像成片被剪切时水印不是也被连续剪切,从视觉角度还可以观察到水印图像的概貌;第二,依赖于密钥的水印信息的随机加入,也是从水印安全性的角度考虑的。
水印随机嵌入的实现方法如下:设原始图像的大小为M点×N点,由密钥key2产生长度为M×N的随机序列,其值x是1- M×N的自然数的随机重排,x=p(i),x即是第i(i=1,2,…,Mm×Nm)个水印点嵌入到宿主图像中的图像块的序号,通过实验证明,这种随机嵌入法可以很好地抗击剪切的攻击。