图像的可逆水印算法研究

2012-09-28 09:37
赤峰学院学报·自然科学版 2012年23期
关键词:数字水印奇数差分

杨 超

(烟台职业学院,山东 烟台 264670)

数字水印技术的基本思路是在现今流行的数字技术产品(数字视频、数字图像和数字音频等)中嵌入不可见或者微小的信息,用来证明数字产品的一些版权问题归属和拥有权等,信息隐藏技术包含了数字水印技术,在实际应用中,数字水印技术常被用来标注和证明产品的真实可靠性,证明是否盗版行为或者为客户提供一些附加的产品信息[1].经通过将近20年的研究,数字水印技术已渐渐发展成熟.在目前,大多数研究者们的目光主要集中在数字图像水印研究方面,对音频水印的研究的关注就相对于来说比较少了.

1 可逆水印算法的优点

现代科学技术的不断发展,水印技术也在不断前进,可逆水印算法是在数字水印算法的基础上形成的,但是它可以更好的填补传统数字水印算法的缺陷.可逆水印算法为分析信号提供了更加精确的方法,它首先是把信号频带进行划分,一般都是划分为多个层次,然后进一步分解数字转换没有细分的高频信号,并提取信号特征自适应选择相应的频带,匹配信号谱,这样可以改善的时频分辨率.可逆水印算法可以在保持大小不改变的情况下,进行冗余的传递,是因为它保证了表示这些信息能量所需要的系数的个数的不改变,这也就是说数字水印中的信息并不是在数字图像的分解系数组中平均分布的,同时这些系数之间又是存在着相互制约的关系的,这是一个很好的混合操作,使得传统的攻击——基于数理统计方法创建没有效果.

2 图像可逆水印算法研究

2.1 图像的L S B算法

图像的L S B算法的实现比较简单,其形成水印图片的步骤为[2]:

2.1.1 对于最初开始需要加载的水印图像,要把它最初由10进制表示的时/空域像素值转换成2进制表示,下面的图1作为一个例子来展示.

图1

2.1.2 使用二进制秘密信息每一位的信息替换为相应的矢量数据最低有效位,假设能够嵌入秘密信息的二进制序列[011000100],替换过程如图2显示了.

图2

将包含机密信息的二进制数据转换成十进制像素值,从而获得包含机密信息的图像,如图3显示.

图3

L S B算法提取水印步骤如下:

将隐藏秘密信息十进制像素转换成二进制数据,如图4显示.

图4

将二进制数据的最低有效位提取出来,即为秘密信息序列[011000100].如图5所示.

图5

2.2 基于差分图像的可逆水印算法

在差分图像的基础上建立的可逆水印算法可以实现通过预处理过程和嵌入过程,提取和恢复过程中等等来实现[3-4].

2.2.1 预处理过程

对于已经得到的差分图像函数D(i,j),可以求出其直方图的最高值点pm,那么pm和-pm是在差分图像像素图形之中出现的最大数,我们可以把这个最大数记为mpm.接下来,我们就要考察pm点在直方图上的上下相邻近的点(即为 pm-1、pm+1).把 pm-1、pm+1对应的直方值找出来,取其中较大者,可记为mpmn,相应的像素值(pm-1或pm+1)可记为pmn.这样我们就可以直接地比较pm和pmn的大小,其中较大者要记为ph,对应的直方值要记为mph,相对较小者要记为pl(ph=pl+1),较小者的直方值要记为mpl.接下来我们就要考虑嵌入水印的问题,这里我们是通过移动PSNR、ph(=pl+1)和 ph+1,以及 ph+2这四点的直方值来实现的.这样一来,我们知道的嵌入容量就为mph+mpl.

2.2.2 嵌入过程

在嵌入过程中,我们需要考虑如何把水印序列W嵌入到载体图像I(i,j)中.为了解决这个问题,首先,我们需要通过平移把 D(i,j)差分图像函数在点±(pl+1)和点±(ph+1)的直方值清空.如果ph的值小于或者等于差分图像函数在某一点的像素值,我们就要把原始载体图像中所有奇数列所对应的像素值加上2.如果-ph大于或者等于差分图像函数在某一点的像素值,就要把原始载体图像中所有对应的奇数列对应的像素值减去2.最后,把修改后的差分图像函数记为 J(i,j).

在对差分图像函数进行修改后,就需要通过修改后的差分图像函数的直方图间接的修改原始的载体图像,在其中嵌入进水印序列.首先,逐个点逐个点的查询修改后的差分图像J(i,j),在查询的过程中,如果遇到某一点的像素值为±(ph+2)或者±pl,在此需要考察准备被嵌入的水印序列位.如果水印序列位为1,那么J(i,j)在这一点的值就要被修改:如果水印序列位为-pl,那么J(i,j)在这一点的值就要减去1最终变为-(pl+1),就是把初始载体图像中的奇数列所对应的像素点减 1;如果水印序列位为 pl,那么 J(i,j)在这一点的值就要加上1变为pl+1,就是把初始载体图像中的奇数列所对应的像素点加1;如果水印序列位为ph+2,那么J(i,j)在这一点的值就要减去1变为ph+1,就是把初始载体图像中的奇数列所对应的像素点减1;如果水印序列位为-(ph+2),那么 J(i,j) 在这一点的值就要加上 1变为 -(ph+1),就是把初始载体图像中的奇数列所对应的像素点加 1.而如果水印序列位为 0,那么 J(i,j)在这一点的值就不需要做任何修改.接着查询,一直持续到 J(i,j)中第二次出现像素值±ph或±pl为止,接着依然根据水印序列位的值,进行新一轮的循环修改中.循环修改结束后,被嵌入水印后的载体图像的奇数列Iw(i,2j+1)是可以有下面的推导得出来的:若 W(u,v)=1,J(i,j)=±ph或者±pl,并且 J(i,2j+1)=Iw(i,2j+1),即偶数列没有发生变化,那么偶数列的像素值Iw(i,2j)=I(i,2j).

2.2.3 复原图像和提取水印的过程

在可逆水印算法中,水印嵌入图片后提取水印和复原图像的过程是一个逆向的水印嵌入过程.

对于灰度大小为M×N的已嵌入水印的图像Iw(i,j),在接收端求出它的差分图像函数 Dw(i,j)=M×N/2.在整个差分图像函数中进行查询,其中水印序列值是由下式提出的:与此同时,得到过渡复原图像函数为Rr(i,j):与之相对应的Rr(i,j)可以记做r(i,j)的差分图像函数.最终要修改得到的过渡图像函数R(i,j)就需要通过反向移动Rr(i,j)的直方图上的点间接得到.

这个过程表现为:首先复原图像函数的奇数列可以求出为Ir(i,2j+1):因为在整个复原过程中图像函数的偶数列一直没有发生变化,所以可求得Ir(i,2j)=Rr(i,2j).

2.2.4 实验结果和结果分析

在仿真实验中,我们选取的测试图像是标准化的图像.通过实验数据和计算可得ph=2,pl=1,与它们相应的最大值直方值对分别为18,129和20,301,由此可以得到,图片的嵌入容量达到了38,430位.从图1中可以看到我们选取了大小128×128像素,(即16,384位)的二值标志图像作为最终的待嵌入的水印图像.

从实验结果中可以看出,尽管在水印嵌入过程中修改了两个最大值直方点,但最终把这些修改反射到初始载体图像上形成的改动却极其微小,这样微小的改动人类视觉系统根本就无法辨别出来,但是形成的水印图片的质量却是非常完善的.实际情况中,由实验数据计算得到的已形成的水印图片的PSNR值等于46.399dB.由此可以看出,在PSNR保持比较高的情形下,应用我们提出的在差分图像的基础上建立的可逆水印算法,会使得图片的嵌入容量提高很多.

〔1〕刘振华,尹萍.信息隐藏技术及其应用[M].北京:科学出版社,2010.

〔2〕王朔中,张新鹏,张开文.数字密写和密写分析——互联网时代的信息战技术[M].北京:清华大学出版社,2011.

〔3〕SalleeP.Model—Based Steganography[C]//In Proceedings of International Workshopon Digital Watermarking.Berlin:Springer-Verlag,2004:154—167.

〔4〕Guomng Xuan,Yun Q,Shi,Jianjlong Gao,eta1.Steganal ysisbasedon Multiple Features Formedby Statistical Moments of Wavelet Character-istic Functions[C]//Proceedings of Seventh International Workshop on Information Hiding.Springer—Verlag,2005,3727:262—277.

猜你喜欢
数字水印奇数差分
RLW-KdV方程的紧致有限差分格式
奇数凑20
数列与差分
奇数与偶数
关于奇数阶二元子集的分离序列
基于网屏编码的数字水印技术
基于FPGA的数字水印提取系统设计研究
基于数字水印的人脸与声纹融合识别算法
基于差分隐私的大数据隐私保护
相对差分单项测距△DOR