苏文煊,方 针
上海大学通信与信息工程学院,上海200444
随着数字图像处理软件的发展,图像内容的修改变得越来越容易,以致人们很难通过肉眼分辨图像的真伪,也就是图像的真实性受到越来越多的挑战,因此如何有效鉴别图像内容的真伪日益受到关注.
颜色滤波阵列(color filter array,CFA)插值是相机成像过程中的重要环节.受制造成本和工艺复杂度的限制,目前大部分数码相机使用单传感器,并在前端放置颜色滤波阵列,使得传感器的每个像素位置只记录一个颜色分量,而缺失的颜色分量则通过CFA 插值得到.CFA插值使得相机输出图像具有特定的空域/频域相关性,而图像篡改操作会破坏这一特性,因此可以根据CFA 插值特性的不一致鉴别图像真伪.
一些学者基于插值像素的邻域相关性,实现对单通道插值图像的真伪鉴别.由于插值像素和非插值像素的方差存在差异,文献[1]根据像素的方差来反映两类像素排列的周期性,将方差图在频域上的峰值点作为取证特征.文献[2]估计待测图像绿色分量的预测误差,计算每个图像块的加权方差作为块特征,使用EM算法定位篡改区域.文献[3]通过搭建一个高斯模型来估计CFA 插值图像的局部相关模式(local correlation pattern,LCP),并从中提取频域特征来检测图像中的CFA插值痕迹.然而在实际应用中通常采用通道间插值算法,故插值图像中像素的邻域相关性较弱.文献[4]根据不同通道高频分量的频谱差异鉴别通道间插值图像的真实性,但检测结果容易受到图像内容变化和JPEG 压缩的影响.
本文基于通道间CFA 插值特性,提出一种图像真伪鉴别方法.从频谱变化和色度失真两方面提取特征以反映插值特性,根据待鉴定图像重插值前后的插值特性变化检测图像篡改.
根据奈奎斯特采样定理,信号越平滑,采样后越容易恢复出原信号.一幅图像的色差(色比)通常比颜色分量更平滑.当通道间插值算法在空域实现时,一般基于色差(色比)恒定的假设,先用单通道插值算法对绿色分量进行插值,得到参考绿色分量;再对色差(色比)分量进行插值,并结合参考绿色分量估计红色分量和蓝色分量;最后通过迭代更新得到完整的全色图像.
以红色分量R为例,根据Bayer 模式采样后求傅里叶变换(discrete Fourier transform,DFT)可得[5]
式中,Rs(u,v)为传感器记录的红色分量频谱,Rf(u,v)为理想全色图像的红色分量频谱.由式(1)可得,Rs频谱发生了混叠.虽然可以通过CFA 插值克服频谱混叠,尽量保留Rs频谱中的低频部分,但插值结果的频谱幅值将小于Rf.绿色分量和蓝色分量也具有类似特性,于是可将CFA 插值过程表示为
式中,I{·}表示插值的过程,G表示单通道插值后的参考绿色分量,Gs表示G在Bayer 模式下红色分量位置处的采样.
由于插值具有低通滤波的作用,插值后图像的频谱主要包含低频信息,可以表示为
式中,Rl和Gl分别表示红、绿分量的低频.将绿色分量分解为高频和低频之和,则由式(2)和(3)可得
由式(4)可知插值图像的高频分量与理想图像存在差异.插值图像红、绿分量的高频近似相等,而理想全色图像的红、绿高频只是强相关,此外绿、蓝分量的高频也具有类似特性.
采样后的CFA 图像可以表示为亮度分量和色度分量,其转换公式[6]为
式中,L为亮度分量,C1、C2为2 个色度分量,于是可用亮度和色度将CFA 图像表示为
式中,fC为CFA 图像,fL为其亮度分量,fC1、fC2为其色度分量,[n1,n2]为第n1行n2列的像素坐标.将式(8)进行傅里叶变换得
由式(9)可得:色度分量C1在频谱上被搬移到(π,π)的位置,色度分量C2被搬移到(π,0)和(0,π)的位置.如图1所示,亮度与色度的高频发生了混叠.
图1 CFA 图像频谱Figure1 Fourier transform of CFA image
CFA 插值的任务是分别提取CFA 图像的亮度和色度分量,得到全色的CFA 插值图像.混叠使得插值图像的亮度和色度分量都存在失真,其中色度分量的失真更明显,且失真程度与所采用的插值方法有关,能够反映CFA 的插值特性.
篡改操作通常包含的缩放、旋转等操作会破坏图像中的插值痕迹,使得篡改区域的插值特性与真实区域不一致[7].本文分别从频谱变化和色度失真两方面提取特征以反映CFA 插值特性,根据待测图像重插值前后的插值特性变化检测图像篡改.
插值图像的频谱能量、高频分量都与理想图像存在差异,于是需要计算通道间频谱差的能量特征以反映CFA 插值导致的频谱变化.区域Ω1可定义为
如图2阴影部分所示:
图2 区域Ω1Figure2 Area Ω1
提取频谱差能量特征U
式中,b为区域Ω1中元素的数目;C(ω1,ω2)为绿红频谱差,其计算公式为
本文根据插值图像与理想全色图像的频谱差异,分块提取频谱变化和色度失真特征来反映CFA 插值特性;然后对待测图像进行重插值,并依据图像CFA 插值特性在重插值前后变化的不一致来实现篡改检测,其算法步骤如下:
步骤1采用通道间插值算法对待测图像I进行重插值,得到重插值图像;将I和重叠分块,图像块大小为b×b,滑动步长为n,边缘剩余部分舍弃.
步骤2将I和中以(i,j)为中心像素的图像块分别记为Ii,j和,提取图像块Ii,j的通道间频谱差能量特征Ui,j和色度失真特征Vi,j,得到块特征Fi,j={Ui,j,Vi,j};同样地,得到图像块的块特征.
步骤3计算图像重插值前后的块特征差异Di,j作为取证特征
步骤4对于非边缘块Ii,j,计算它与8 个相邻块之间的相关系数.Ii,j与第m个相邻块Iim,jm的相关系数Rm为
步骤5计算非边缘块Ii,j的相关系数R1∼R8中的最大值t,并将所有非边缘块相关系数的最大值排序,再根据t的排序位置确定其一致性权值k1.类似地,分别确定块Ii,j的相关系数均值、中值的一致性权值k2、k3.
步骤6将k1、k2、k3相加得到块特征差异Di,j的一致性权值qi,j,从所有块的一致性权值排序中找到最小、次小的块I1、I2.
步骤7将块I1相关系数的最大值、均值、中值及其与块I2的差异(比值表示)构成6维特征向量Y,以反映待测图像的CFA 插值特性一致程度.使用SVM 分类器对Y进行分类,实现篡改检测.
采用LC[8]、Dresden[9]、UCID[10]图像库生成篡改图像.分别使用Bilinear、POCS[11]、ACPI[12]、Zhang 等人的算法[13]对上述图像库进行CFA 插值,并在重插值图像中随机选取64×64 大小的区域,随机拼接到某幅真实图像中,得到篡改图像.
按照2.2 节的算法实现篡改检测.当提取块特征F时,分块尺寸如果太小容易受到图像内容的影响,因此实验中取分块尺寸为64×64,取滑动步长n为32.当使用SVM 进行分类时,取5/6 的实验图像作为训练集,剩下的1/6 实验图像作为测试集,且训练集和测试集中真实图像和篡改图像的数量均为1:1.另外,实验中为了降低随机选择训练集带来的影响,准确率取1 000 次分类的平均值,SVM 惩罚系数的范围设定在0∼104之间,gamma 参数的范围设定在1.6×2−11∼0.1 之间.以鉴真率和鉴伪率来评价算法性能,鉴真率表示真实图像被检测为真实图像的概率,鉴伪率表示篡改图像被检测为篡改图像的概率.
对基于UCID 库生成的篡改图像进行检测,所得结果如表1所示.其中,通道间插值图像的检测准确率在95%以上,使用POCS 生成的篡改图像检测准确率最高.同时,本文算法也能准确检测单通道插值图像.
对不同库生成的篡改图像进行检测.实验图像包含建筑、风景、动物、人像等不同的场景,LC 库图像的相机型号分别为Canon Powershot S70 和Canon IXY Digital 910IS,Dresden库图像的相机型号分别为Canon Ixus55,检测结果如表2所示.LC 库和Dresden 库的平均准确率均在96%以上,证明了该算法对不同图像内容和成像设备的鲁棒性.
表1 不同插值方法的篡改检测性能Table1 Forgery detection performance by different interpolation methods
表2 LC and Dresden 图像库的篡改检测性能Table2 Forgery detection performance on LC and Dresden image datasets
分析不同滑动步长对检测结果的影响.对基于UCID 库生成的篡改图像,分别取滑动步长为32、16、8 进行检测,结果如表3所示.随着滑动步长的减小,重叠分块的数量急剧增加,以致影响了块排序的结果,降低了算法准确率.因此,滑动步长不宜太小,取分块尺寸的一半比较合适.
表3 不同步长的篡改检测性能Table3 Forgery detection performance on different step size
比较不同分块尺寸下的检测结果.分别使用96×96 和48×48 的分块尺寸进行篡改检测,结果如表4所示.当分块尺寸较大时,篡改区域相对分块尺寸而言较小,块间一致性特征受到影响,故算法准确率略有下降;当分块尺寸较小时,块特征的提取易受图像内容的影响,使得算法准确率有所降低.
进一步分析本文方法对JPEG 压缩的鲁棒性.选取检测单通道插值图像篡改的Li 方法[3]和检测通道间插值图像篡改的Zhang 方法[4]作为比较对象对UCID 库及其生成的篡改图像库进行JPEG 压缩,压缩质量取100、95、90、85、75.
本文方法与Li 方法[3]的比较结果如表5所示.随着JPEG 压缩质量因子Q的减小,Li 方法的准确率迅速降低.当质量因子为95 时,准确率已降至74.54%;本文方法的准确率下降不大,在质量因子为90 时仍保持在96%以上.
表4 不同分块尺寸的篡改图像检测结果Table4 Forgery detection performance on different block size
表5 JPEG 压缩对线性插值图像篡改检测性能的影响Table5 Effect of JPEG compression on the forgery detection performance using linear interpolated images
表6给出了本文方法与Zhang 方法[4]的比较结果.对于未压缩图像,本文方法的平均准确率略低于Zhang 方法[4]的平均准确率;对于压缩图像,该方法表现出较好的鲁棒性.当质量因子降至75 时,平均准确率仍然高于89%.
表6 JPEG 压缩对通道间插值图像篡改检测性能的影响Table6 Effect of JPEG compression on the forgery detection performance using inter-channel interpolated images
由此可见:对于经过JPEG 压缩的单通道和通道间插值图像,本文方法都表现出较强的鲁棒性,这是因为本文将重插值前后插值特性的变化作为取证特征,所以取证特征受到JPEG压缩的影响较小.
分析不同篡改区域大小和数量对检测结果的影响.使用UCID 库随机生成单篡改区域图像,篡改区域大小分别为128×128、32×32、16×16;随机生成多篡改区域图像,每幅篡改图像包含3 个16×16 的篡改区域.
单篡改区域图像检测结果如表7所示.其中篡改区域越大,检测的平均准确率也越高.当篡改区域较小时,准确率有所下降,但均超过88%.另外,多篡改区域图像的平均检测准确率为90.06%,鉴真率为87.76%,鉴伪率为92.36%,可见本文方法对多篡改区域的情况也具备一定的鉴别能力.
表7 不同篡改区域尺寸下的检测结果Table7 Detection results on the images with various forged region size
本文利用CFA 插值引入的频谱相关性实现篡改检测.从频谱变化和色度失真两方面提取特征来反映通道间插值特性,根据重插值前后CFA 插值特性变化的不一致来实现真伪鉴别.实验结果表明,该方法能够有效检测篡改图像,对于JPEG 压缩、图像内容和成像设备变化具有较好的鲁棒性.在后续工作中,将考虑对于篡改区域较小的图像,进一步提高算法的准确率,解决篡改区域的定位问题.