林国强,任雪畅,王婉秋,炉庆洪
(厦门大学 物理科学与技术学院,福建 厦门 361000)
网络安全已经成为计算机领域中必不可少的话题,比如云计算中的云安全问题。在信息传输的过程中,加密传输的应用范围很广泛,而全息水印又是其中的佼佼者。光学信息隐藏大致可以分为两种,一种是基于双随机相位编码的算法[1],另一种是基于数字全息编码的算法[2]。这两种算法都对水印信息进行加密以及置乱,还有一些比如基于菲涅耳衍射的水印算法[3],但是以上算法的稳健性有待提升。Rosen和Javidi提出了半色调编码图中隐藏图像的方法[4],稳健性提升比较大,但是降低了编码图的质量以及可辨识度。彭翔等改进了全息水印的方法,利用相位复原技术将水印信息隐藏在复波前的相位中,复波前振幅定义为宿主信息,通过计算全息记录,再进行半色调编码完成嵌入[5],提取时使用傅里叶变化即可,但是彭翔提出的方法只能记录一张图像的信息,如果需要同时记录并提取两张图像,就需要对单通道半色调全息水印技术进行拓展。
本文提出了基于双通道技术的三维效果宿主图像的半色调全息水印。该方法利用双通道技术将两幅经过半色调编码的嵌入全息水印的宿主图像合成在一起,编码成计算全息图,重现的时候此计算全息图能够显示出两幅水印图像。在两幅已经编码好的半色调全息水印图像的基础上,将多幅上述图像通过多通道技术合成一幅图像,再制成全息图,是接下来要研究的一个方向。提取多幅图像的水印信息只需要重现计算全息图,再利用一个透镜即可提取出水印信息。这在传统光学中可以理解为一个4f系统(两个焦距为f的透镜,相距为2f,物距为f,像距为f),其中开始记录的半色调全息水印是4f的一部分2f,重现又是一个新的2f[6]。
本文提出的双通道的三维效果宿主图像的半色调全息水印嵌入的实现分为四个步骤。首先,利用相位复原技术获得相位函数。其次,利用计算全息中改进常数因子修正离轴参考光的方法,将获得的相位函数通过MATLAB编码成计算全息图[7]。再次,因为在上述步骤中的计算全息图中记录了特定相位信息的复波前,所以利用半色调编码技术编码此幅计算全息图可以提升图像的鲁棒性[8]。最后,重复以上步骤形成两幅经过半色调编码的计算全息图,其中每幅宿主图像可以利用三维效果去处理,然后利用双通道技术合成这两幅全息图,再将这两幅合成的图像编码成计算全息图。
先假设被嵌入水印的图像为f (x, y),水印图像为g(u, v),F{}为傅里叶变换,把被嵌入水印像放置透镜前焦面,水印图像放置后焦面,则可利用GS算法求得合适的相位函数整个公式为:
提出了GS算法基本思路为:通过不断的在透镜前被嵌入的图像与透镜后水印图像之间正向迭代与反向迭代得到相位函数[9]。在正向迭代的时候,即从透镜前的图像迭代到透镜后的图像,需要加入频谱面上的限制条件。在反向迭代的时候,即从透镜后的图像迭代到透镜前的图像,需要加入振幅面上的限制条件,直到满足限制条件则停止迭代。算法具体描述:
完成以上步骤即可获得相位函数,将获得的相位函数与宿主图像作为振幅,这样便可构出一个复波前函数,就可以设计成计算全息图。
上述产生的相位函数是复函数,所以需要利用计算全息记录复波前。Huang等提出修正离轴参考光的方法来记录复波前[7],彭翔等改进了这个方法以便更好地进行半色调编码。具体原理为,将透射率因子改为一个权重因子,同时调整参考波在x方向的频率,以使记录的复波前与振幅之间误差更小。
编码成计算全息图之后再进行半色调编码以使宿主图像更具鲁棒性。
本文利用半色调振幅调制(AM)方法对上述图像进行编码,这种方法类似于通信中的脉冲宽度调制。图1为原理图。
图1 振幅调制半色调原理图Fig. 1 Schematic diagram of the amplitude modulation halftone
其中u、v表示计算全息中像素的坐标,x、y表示半色调编码中像元位置。在编码过程中每一连续色调都被编码成dx、dy像素的二值区域。令h(u, v)为上述矩形的面积。其中宽度为常数,由于此为振幅调制而图像对于振幅常数因子不敏感,故可以忽略常数因子。将h(u, v)由灰度阶级数量化为dy阶并归一化可得:
其中式(2)左边为0, 1, 2, 3, …, dy。故半色调编码所得全息图透射率函数为:
其中rect函数为矩形函数。
经过半色调编码之后宿主图像鲁棒性在剪切、损坏方面会得到一定程度的鲁棒性提升。至此已经制作出一幅完整的单通道需要的图像,重复以上步骤,换一个三维效果[10]宿主图像,再加上水印图像然后再次制作出一幅单通道所需要的图像。
传统制作双通道计算全息需要两幅图像作为入参,接着对两幅图像产生随机相位,效果类似于传统全息实验加入毛玻璃。将两幅图像分别进行快速傅里叶变化,然后分别计算出每幅图像的振幅和相位,并对其归一化离散处理,再利用罗曼三型的计算全息编码技术将上述步骤的两幅图像通过叠加不同二次相位因子[11]进行原始公式的累加编码,这样便形成双通道全息编码。
本文在计算全息模拟实验的基础上发现,上述传统双通道计算全息编码技术的制作过程有简化的操作,此简化操作在不要求彩色水印的前提下可以有良好的效果。将两张经过半色调编码之后的图像合成一张图像,然后按照1.2小节的方法制作出计算全息图,以达到更好的信息隐藏。
单通道水印信息的提取只需要将上述制作出来的全息图模拟再现,然后进行傅里叶变化即可。双通道计算全息水印图像的水印提取与单通道一致。
本文得益于4f系统的思路,利用其中的2f系统模拟化1.1节的GS算法,再最后利用后半部的2f系统重现出原始图像。具体模拟如图2所示。
图2 三维效果全息水印提取过程Fig. 2 Extraction process of three-dimensional effect holographic watermark
通过水印制作成半色调计算全息图之后利用菲涅耳计算全息模拟重现技术将全息图重现出来,再通过傅里叶变化得到水印信息,即模拟了实验中透镜的效果。
由于实验室条件有限,本文采用MATLAB软件进行仿真实验。首先选取两幅256×256像素的图像作为嵌入水印图像和水印图像。图3、图4分别为嵌入水印图像和水印图像。
图3 嵌入水印三维效果图像Fig. 3 Embedded watermark 3D image
图4 水印图像Fig. 4 Watermark image
利用GS算法将图3作为2f系统的左焦面,图4作为右焦面迭代,得到相位函数图像如图5所示,利用反向迭代技术将图5复原出水印信息,如图6所示。
利用上文所述的理论知识制作计算全息图如图7所示,再将其半色调编码如图8所示。
图5 相位图Fig. 5 Phase diagram
图7 计算全息编码Fig. 7 Computer generated-hologram
图8 半色调编码Fig. 8 Halftone coding
图9 另一幅水印图像Fig. 9 Another watermark image
图10 图 9 的半色调编码Fig. 10 Halftone coding in Fig. 9
图8为一幅完整的半色调编码图像,将水印图像改为图9再次重复以上过程制作出半色调编码图像,如图10所示。将两幅半色调编码合成一幅图像如图11所示,通过菲涅耳计算全息将其编码成计算全息图,重现此计算全息图如图12所示,再利用傅里叶变化提取重现的半色调编码图像,其中两个水印信息如图13所示。
图11 双通道半色调编码Fig. 11 Two-channel halftone coding
由于利用了傅里叶技术,故可以看出每幅图像都有其共轭像,第一象限与第四象限互为共轭像,第二象限与第三象限互为共轭像。即图13的一般图像为两幅水印信息。
在仿真实验中,可以利用photoshop等技术将不需要的共轭像去除,以得到原始的两幅图像,如图14所示。
图12 重现图 11 全息图Fig. 12 Recreate hologram of Fig. 11
图13 提取图 12 中两幅图水印信息Fig. 13 Extract the watermark information of the two images in Fig. 12
图14 利用 photoshop 等技术消除共轭像Fig. 14 Using photoshop and other techniques to eliminate conjugate images
由上文中模拟实验信息可得出,传递不要求彩色水印的水印信息时,利用双通道技术,可以使一张全息图承载更多信息量。 本文在两方面减少了计算全息的编码时间,一方面是在计算全息编码两张相同像素的水印图像时,利用本文所阐述的方法可以节省一半的时间,也就是说加入了双通道技术之后,信息量得到了提升。另一方面是三维效果加入,具体体现在嵌入水印信息的原始图像具有三维效果信息,这可以减少三维图像的编码时间和视觉效果之间的一个平衡。信息量的增大有可能导致再现像的质量降低,具体体现在承载两幅图像水印信息的双通道技术可能会出现重叠,但是本文利用了类似全零矩阵[12]的技术来消除上述的降低再现像的可能性,使得再现像不会出现重叠,交叉之类的。由于本文采用的是傅里叶编码方式,故仿真实验中出现了共轭像,第三、第四象限才是原始的两幅水印, 在仿真实验中,只需要在重现之后通过photoshop等技术去除掉第一、第二象限的图像即可去除共轭像,但是在实验过程中的共轭像消除还有待考究。由于半色调编码能够增加水印的鲁棒性,故本文参考了Rosen和Javidi提出的半色调编码图中隐藏图像的方法,加入了半色调编码。