不同图像之间拼接篡改的数字图像检测研究
2018-12-17王丽侠
王丽侠
(唐山学院 智能与信息工程学院,河北 唐山 063000)
0 引言
将不同图像的目标拼接在同一张图片中,称为不同图像之间的拼接篡改。不同图像之间的拼接篡改具有如下特点:①在视觉上察觉不到比较明显的篡改痕迹;②图像的某种统计特性被篡改行为改变了,这些统计特性可以理解为是在其采集和后续图像处理的过程中留下的图像指纹。篡改检测的任务就是通过验证图像指纹是否存在来定位篡改的位置。
通过对图像指纹存在性的判断就可以对整个图像进行验证,从而提供整个图像的真实信息。一个更好的处理方法是找到一种可以显示图像中每个特征可信性的映射关系,从而自动定位可疑区域。目前,基于图像整体特征的检测算法主要有两类:基于JPEG压缩特征的检测算法[1-2]和基于颜色滤波阵列(Color Filter Array,CFA)的检测算法。基于JPEG压缩特征的检测算法是通过检测双JPEG压缩图像的图像块先前的量化矩阵来实现,对篡改前和篡改后都是JPEG格式的图像具有很好的检测效果,但是该方法对其他格式的图像检测效果不佳,并且对篡改区域的边缘定位也不准确。现在使用更为广泛的算法是基于CFA的检测算法,只要图像是经过CFA滤波后插值得到,如bayer图片,该方法就有可能对其进行检测而不受图像格式的限制。目前,98%以上相机拍摄的图片都是经过插值得到,使得该算法得到了广泛的研究,本文研究的重点也放在该算法上。
文献[3]中的图像检测算法是通过对[4][5]中提到的众多指纹的比较,选择插值过程中留下的痕迹作为图像指纹。图像插值是使用在相邻的位置已知的值计算新位置的像素值的过程。文献[3]研究了一个局部域的插值伪影:当一个局部CFA插值伪影本该存在而不存在的时候,就把该处定为篡改位置。该方法提出了高斯混合模型的概念,并认为篡改位置的特征符合均值为零的高斯模型,而且通过对单个CFA单元模式进行了验证。本文在该方法的基础上进行改进,目的是在没有获取任何篡改位置信息的前提下,对篡改区域进行准确定位。
1 CFA模型
在CFA插值过程中,通过插值核周期性地作用于原始图像来产生新的图像。对于CFA插值,本文只考虑一个单一的尺寸,用文献[6]中的结果Var[e(x)]=Var[e(x+2)]表示,即假定预测误差的方差只有两个值,一个为奇数位置,另一个为偶数位置。更具体地,只考虑在图像绿色通道G(x)中一个特定行里的插值,得到信号sA(x)为:
。
(1)
在本文中只考虑一个简单的插值模型,即插值后的信号sR(x)由原有部分sA(x)和插值部分组成,如下表示:
(2)
其中,hu代表插值核,u∈(r1,r2),r2-r1为插值核大小。在模型(2)中,假定每一个颜色通道都是通过线性滤波独立插值得到的,并且原来的真实样本值不通过插值修改。在实际中,因为只有u为奇数的时候对上面的和有用,所以令u为奇数时hu=0。预测误差可以定义为e(x)=sR(x)-sP(x),其中sP(x)=∑kusR(x+u)表示预测信号,ku是预测核,因此:
(3)
假设在预测的时候使用相同的插值内核(即hu=ku),在奇数位置的预测误差为零。因此,在理想的情况下,Var[e(x)]在插值信号的位置对应零,真实信号的位置对应非零。
一般来说,精确的插值系数是无法知道的,但是可以假设当u为奇数时,ku=0。此外,还可以假设常见的插值核有∑ku=∑hu=1。这样,公式(3)就可以改写为:
(4)
通过假设获得的信号样本服从均值μG和方差σG2的独立同分布,则预测误差的均值是:
(5)
当x为偶数时,预测误差的方差是:
(6)
当x为奇数时,预测误差的方差是:
(7)
根据上述模型,预测误差具有均值为零和方差正比于真实像素位置的方差的性质,然而,当预测核接近插值核时,真实像素位置点的预测误差的方差将会比插值像素位置点的预测误差的方差大。
在非理想的条件下,获得的信号将只在局部位置独立同分布,且其方差也只在局部位置比较稳定,这样σG2需要在信号的小部分估计得到,Var[e(x)]依赖特定的信号取不同的值。同时,由于舍入和截断效应值的影响,在像素上可能会存在加性噪声,但是仍然希望组成真实像素的值的方差会比较大。
2 基于CFA模型的算法
把常用的RGGB排列的拜耳滤波器作为具体的CFA单元。拜耳滤波器阵列如图1(a)所示,这里只考虑绿色通道。由于绿色通道用因子2进行了上采样,对于一个通用方块,将得到两类像素(真实像素和插值像素)相同数量的样本(相同的估计可靠性)。
(a)拜耳滤波阵列(b)真实绿色通道的梅花形格A和插值绿色通道的互补梅花形格I
图1RGGB滤波阵列和对应的梅花形格
在绿色通道里,一维信号里面的偶数位(真实样本)转化为了真实绿色通道的梅花形格A,奇数位(插值样本)转化为了插值绿色通道的互补梅花形格I,如图1(b)所示。类似一维信号,假定CFA插值伪影存在,则A的预测误差的方差比I的预测误差的方差要大很多,并且两者是独立的,相反,如果没有插值存在,两网格的方差比较接近。因此,为了检测是否存在插值伪影,就需要评估两网格之间的预测误差的方差的不平衡性。
2.1 特征描述
假设s(x,y)代表待测图像,其中s(x,y)∈R2,则预测误差就可以表示为:
(8)
其中,ku,v表示二维预测滤波器;u∈(r1,r2),v∈(r3,r4),且r1,r2,r3和r4为整数,(r2-r1)×(r4-r3)为插值核大小。在理想的情况下,ku,v=hu,v∀(u,v),其中ku,v是相机内部的插值算法的插值核。在实际中,可以假设ku,v≠hu,v,因为相机内部的插值算法是没办法获得的。
由于残余误差具有局部平稳性,所以预测误差e(x,y)的方差只能够从插值像素I或者真实像素A的邻域的每个位置(插值像素位置或者真实像素位置)逐像素进行估计。假设已经知道了CFA的单元模式(如拜耳CFA),在(2k+1)×(2k+1)的窗口里假设预测误差的局部平稳性是有效的,预测误差的局部加权方差就可以定义为:
(9)
W(i,j)是一个标准方差为k/2,大小为(2k+1)×(2k+1)的高斯窗口。
(10)
其中GMA(k,l)是在真实像素位置上预测误差方差的几何均值,定义为:
GMI(k,l)是插值位置的相似定义。
当图像有插值的时候,特征L就可以检测出预测误差局部方差的不平衡性,事实上,在这样的情况下,真实像素预测误差的方差远大于插值像素的,且L(k,l)是非零正数。相反,如果一个图像没有经过插值,真实像素和插值像素的预测误差的方差没有多大的区别,因为具有相同的局部统计特性,且L(k,l)=0,本文的推论是根据这两个关键点展开的。
本文做出如下假设:一个插值图像通过获取一个新的内容来进行篡改,为了使篡改的区域更加真实,往往会加入一些其他的处理,如模糊、裁剪、旋转、压缩等,以破坏篡改位置的插值痕迹。由此提出的特征L就会在篡改图像中保持不一致:在未篡改的区域里L比零大很多,而在篡改区域里L则接近于零。本文就是通过这样的不一致来定位篡改区域的。
在某些方面,本文所提出来的特征在概念上和文献[7]比较相似,其中的方差运用了绝对值的平均进行了近似表示。然而,不同之处在于本文未使用文献[7]用到的傅里叶分析技术,这就会在CFA伪影的准确定位上受到限制。此外,本文所提出的特征用了一个比较方便的特征模型进行了描述(下面将会讲到),这样就可以对每一个操作块的概率进行操作。
2.2 特征模型
利用贝叶斯方法,对于每一个块Bk,l都可以用特征值L(k,l)来表征CFA伪影是否存在。用M1作为CFA伪影存在的假设,M2作为CFA伪影不存在的假设。为了拥有一个简单易处理的模型,本文假设在块Bk,l的任意块B下都满足高斯分布。对一个固定的B,可以通过如下的条件概率密度函数来表征提出的特征:
Pr{L(k,l)/M1}=N(μ1,σ12),
(11)
Pr{L(k,l)/M2}=N(μ2,σ22)。
(12)
其中∀k,l=0,1,…,(N/B)-1。因为两个条件概率密度函数的参数在图像中不会改变,所以可以在图像的整个区域范围内进行估计。如果插值图像包含了一些篡改区域,那么图像里面的CFA伪影就会遭到破坏,则M1和M2就会存在,因此L就可以通过高斯分布的混合模型来建立。μ1表示的第一部分代表CFA伪影存在的区域,μ2表示的第二部分代表篡改区域(CFA伪影丢失的部分)。文献[3]认为篡改区域的均值应该为零,即μ2=0,但这样的确定不具有普遍性,为了更加真实地反映出篡改位置的特征模型,本文对其进行改进,即对其不进行事先确定,而是采用模糊估计来得到。为了评估高斯混合模型的参数,本文运用文献[8]中提到的期望最大化(Expectation-Maximization,EM)算法。EM算法是评估组件分布均值和方差的标准迭代算法,它是最大化针对分布参数的完整对数似然函数的期望值。在本文算法中,EM算法用于评估μ1,μ2,σ1和σ2。
2.3 生成映射关系
本文最终的目的是获得一个指示每一个B×B块Bk,l的映射关系,这种映射关系是基于是否存在CFA伪影的概率映射到是否经过篡改的概率。从公式(11)(12)和先验概率Pr{M1}=Pr{M2}=1/2,可以得到原始块的后验概率。通过探索贝叶斯理论和依靠每个Bk,l块的观察特征L(k,l),可以得到:
Pr{M1/L(k,l)}=
(13)
其可以表示为:
(14)
其中Γ是L(k,l)的似然估计,定义为:
(15)
从(14)和(15)可以看出两个公式具有相同的统计信息。对图像运用公式(15),就可以获得一个似然图(Likelihood Map,LM),LM中的每一个像素都关联一个大小为B×B块的似然率。
这些映射关系里面通常含有噪声,因为其本身就是L(k,l)的一个单一的实现对应的概率值(似然比),其本身就是噪声。为了对映射关系进行去噪,本文在一个比较大的块C上计算特征,其中C=n×B,n∈R2。如果块在M1或者M2情况下有条件独立,则累计似然率Γcum为:
(16)
由于图像语义内容的因素,在真实的环境中,图像的篡改区域都是连通的,所以为了进一步提升定位性能,用中值滤波器作用在连通区域。为了使数值更加稳定,在对数似然映射中也使用该滤波器。
2.4 改进的多CFA模型的轮循检测算法流程
文献[3]提出了基于单CFA模型的检测算法,对单CFA模式下的图像能够进行很好的检测,且目前的大多数算法的研究也只是针对特定的CFA模型进行。但是现在数码产品的种类越来越多,CFA单元模式不一样,并且在一个固定通道的颜色中提取特征也不具有普遍性。因此,为了更好地检测,本文对其进行改进,采用多CFA模型的轮循算法进行检测,具体的流程如图2所示。其中,初始值i=0,N表示CFA模板的个数。输入一个可疑的图像,输出一个对应的篡改映射阵列:在C×C的图像块映射阵列里面的每一个像素点对应着其包含CFA伪影的概率,输出映射阵列里面比较低的值对应着篡改区域。
图2 多CFA模型的轮循检测算法流程图
首先,以第一个CFA模板阵列开始,从图像中分离出一个通道的值,使用固定的插值算法计算它的预测误差。其次,评估加权局部方差和对B×B大小的块进行特征提取,通过EM算法来评估GMM参数,并运用它来生成篡改映射阵列。当C=B时,篡改映射阵列由文献[9]的似然率来产生,当C>B时,篡改映射阵列由文献[10]提供的方法产生。最后,通过中值滤波器对对数似然映射阵列进行滤波。算法详细步骤描述如下:
(1)选择第i个CFA单元阵列,初始值i=0,提取图像的单通道IS,用插值算法ku,v对图像进行预测,得到图像的预测误差e(x,y);
(2)获取特征L。用高斯模板分别对真实位置和插值位置进行作用,得到两处位置的局部加权方差,通过公式(3)-(11)计算得到每个CFA单元的特征值;
(3)计算高斯混合模型的参数。用EM算法对高斯混合模型的参数进行估计,初始参数μ1,σ12为整个特征的均值和方差,μ2=0和σ22=σ12/10,收敛条件为:迭代误差为10-3或者迭代次数为1 000;
(4)利用高斯混合模型参数进行概率计算,生成映射关系阵列,然后使用中值滤波器进行滤波;
(5)将映射关系阵列的值转换到灰度级颜色空间,显示本次模板下的检测结果。如果检测到篡改区域,则将本次的检测结果作为最终的检测结果,如果没有检测到,则令i=i+1,重复前面的步骤,当i>N时,检测结束,输出基于第i个模板的检测结果。
3 实验结果及分析
为了验证基于CFA单元阵列的算法对本单元阵列的图像有效,本文用图3中4种单元阵列来验证。
(a)BGGR (b)GBRG (c)GRBG (d)RGGB图3 CFA单元阵列
由于本文的研究工作主要是集中在篡改检测,对CFA单元阵列的评估没有做过多的研究,为了获得4种阵列的图像,借用相机内部图像获取原理。首先,对BMP图像进行滤波,获取4种阵列对应的灰度图,然后用文献[11]的方法将其插值成为彩色图像,这样就得到了具有4种单元阵列的图像。这里对两张原始图像分别做4种阵列转化。接着使用一张图像(图4)对上述图像进行篡改,其中篡改部分进行了羽化和平滑处理,为了加以区分,令相同图像内容的篡改位置不一样,如图5所示。
图4 原始图像
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列(1)图像1
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列(2)图像2图5 制作图像篡改结果
得到篡改图像后,对4种不同的CFA单元阵列图像使用其对应的阵列模板进行特征提取。由于4种阵列中真实绿色值都占一半,所以对绿色通道进行分析。这里预测插值算法先选用双三次插值,后面部分将对不同插值算法进行比较,特征直方图如图6所示。
从特征直方图可以看出,所有的直方图都是两种高斯模型叠加的结果,高斯混合模型和单个高斯模型类似,因为篡改部分只占图像的很少部分。
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列(1)图像1
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列(2)图像2图6 制作图像篡改后的特征直方图
接着使用EM算法对高斯混合模型的参数进行估计,估计结果如表1所示。
表1 制作图像篡改后的高斯混合模型参数
其中,均值表示单高斯模型的对称轴位置,标准差表示特征的分布情况,其值越小,代表特征分布越密集,反之,则越扩散。表1中篡改位置的标准差比其对应的非篡改位置的标准差小,也印证了非篡改位置的特征比较分散。从篡改位置的均值可以看出,最终得到的值不为零,表明本文的改进更符合实际。最后给出实验的检测结果,如图7所示。
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列(1)图像1
(a)BGGR阵列 (b)GBRG阵列
(c)GRBG阵列 (d)RGGB阵列
实验结果显示,基于不同模板的算法对各自CFA单元阵列都具有很好的实验效果。其中,图像2的检测效果要高于图像1,这是因为图像1的上半部分是比较平坦的区域,灰度值之间的差距不大,插值位置和真实位置的像素对周围像素的依赖性较弱,其相关性的差异没有非平坦区域大。上述实验结果表明:基于CFA的模板越多,就越容易检测出图像的篡改区域。
为了验证算法对真实照片的检测效果,本文对尼康D7000拍摄的3张原始图像进行篡改,得到3张篡改图像,为了篡改简便,用网络图片中心的花朵作为篡改目标,通过Photoshop CS6软件拼接到3张原始图像中,如图8所示。
(a)网络图片
(b)原图a (c)原图b (d)原图c
(e)篡改图像a (f)篡改图像b (g)篡改图像c图8 原图及篡改图像
得到篡改图像后,选用双线性插值算法和双三次插值算法对图像进行预测估计,然后根据预测误差得到每个点的局部加权方差,最后用公式(10)计算得到每个CFA单元的特征。用EM算法对经两种预测算法得到的3张篡改图像的特征进行参数估计,用公式(17)计算出每个特征的似然率。为了显示不同预测插值算法对同一张篡改图像的篡改检测,图9给出了通过两种预测插值算法检测的似然率图。
(a)双线性预测 (b)双三次预测(1)篡改图像a
(a)双线性预测 (b)双三次预测(2)篡改图像b
(a)双线性预测 (b)双三次预测(3)篡改图像c图9 检测似然率图
从图9显示的两组似然图可以看出:两种预测插值算法得到的篡改区域都可以很好地定位篡改区域,并且边缘定位都较好。但是从篡改区域的亮度可以看出,基于双三次预测插值的算法比基于双线性预测插值的算法具有更高的执行度,所以本文选用双三次插值算法作为最终的预测算法。
不同图像之间的拼接篡改是严重类篡改行为中比较常见的篡改行为,为了进一步验证本文算法的优越性,将本文算法和另外两种算法用于对不同图像之间拼接篡改的检测,以做对比分析。第一种是基于JPEG块效应的检测算法[12],记为块效应算法,其思想是首先估计图像的DCT压缩量化表,然后根据量化表计算出每个块的块效应值,最后将块效应值大于阈值的块确定为可疑区域;第二种是错误水平分析(Error Level Analysis,ELA)算法[13],ELA算法是通过在不同的压缩率下识别JPEG图像质量的下降水平即错误水平来判断篡改区域。对于一个没有经过篡改的图像,其每个区域的错误水平应该保持一致;相反,如果图像的某个区域错误水平不一样,则很可能是经过篡改得到的。图10给出了3种算法的对比检测结果。
(a)块效应算法 (b)ELA算法 (c)本文算法(1)篡改图像a
(a)块效应算法 (b)ELA算法 (c)本文算法(2)篡改图像b
(a)块效应算法 (b)ELA算法 (c)本文算法(3)篡改图像c图10 对比检测结果
通过上面的检测效果可看出,3种算法都可定位到篡改区域,但是块效应算法只定位到了篡改区域的一部分,正确检测率较低;ELA算法虽然定位到了整个篡改区域,但也定位到了非篡改区域,误检测率较高,两种算法都受到JPEG压缩质量因子的影响,如果篡改区域和非篡改区域的质量因子相差不大,检测效果都比较差。相比前两种算法,本文算法检测效果较好,尤其是在篡改区域的边缘上。
4 结语
本文对现有基于CFA模型的检测算法进行了改进,并对篡改图像做了检测对比。首先为了验证特征模型和检测算法的有效性,本文使用了4种常用的CFA单元阵列进行了实验分析,检验结果表明所选算法具有很好的检测能力。然后将双线性插值算法和双三次插值算法对篡改图像进行了预测估计,实验结果显示不同的预测插值算法对图像篡改检测结果影响很大,离图像内部的插值算法越接近的插值算法对检测效果越好。图像篡改定位结果显示本文改进的检测算法可以对不同图像之间的拼接篡改进行准确定位。