基于超像素分割的图像复制粘贴篡改检测

2019-06-22 08:32刘佳睿黄信朝刘先进
应用科学学报 2019年3期
关键词:复制粘贴关键点像素

刘佳睿, 卢 伟, 刘 轲, 黄信朝, 蔺 聪, 刘先进

1.中山大学数据科学与计算机学院,广州510006

2.中科院信息工程研究所信息安全国家重点实验室,北京100093

随着图像编辑软件和互联网的发展,人们借助图像处理软件可以轻松地改变或者伪造一幅图像的内容而不容易被人眼识别,并在互联网上传播.因此,数字图像篡改取证工作备受关注[1].图像篡改包含诸多类型,其中区域复制粘贴篡改[2]较为常见,它是将图像的一个或多个区域复制粘贴到该图像中的其他区域以此达到改变真实图像的目的.目前针对此类篡改研究出了许多检测方法,大致可以分为两类.第1 类是基于块的区域重复检测方法,该类方法通常将图像划分为若干个块,然后对块内像素点或块的变换系数进行匹配检测.文献[2]提出了离散余弦变换(discrete Cosine transform,DCT)和字典排序法检测重复块的方法.在此基础上,文献[3]对其进行了改进,不仅提高了运算速度,而且对JPEG 压缩、模糊和添加噪声攻击也具有了鲁棒性.另外,基于离散小波变换(discrete wavelet transform,DWT)和主成分分析(principal component analysis,PCA)的检测方法[4-5]对噪声和JPEG 压缩均具有鲁棒性.文献[6-7]提出了基于Zernike 矩阵的方法,该方法提取小图像块的Zernike 矩作为该块的特征,采用基于局部敏感哈希(locality sensitive hashing,LSH)匹配的方式匹配这些小图像块,从而进行复制粘贴篡改检测.文献[8]提出随机抽样一致(random sample consensus,RANSAC)算法来减少错误匹配对,该方法对旋转、噪声和JPEG 压缩均具有较强的鲁棒性.基于块的检测方法尽管在单纯的平移复制粘贴检测中表现良好,但是在大幅度的几何变换情况下表现不佳且计算时间冗长.

为了克服块方法的缺点,人们提出了第2 类方法--基于关键点的方法.这类方法通常是从整幅图像中提取关键点,然后对其进行匹配检测,例如尺度不变特征变换(scale invariant feature transform,SIFT)[9]和SURF(speeded up robust features,SURF)[10]方法.文献[11]在区域检测中利用了SIFT 的方法,并在SIFT 算法的基础上计算复制区域和粘贴区域的仿射变换矩阵,这种方法在检测JPEG 压缩和添加噪声时具有鲁棒性.文献[12]在SIFT 特征点方法上增加了层次聚类,改善了聚类效果,从而提高了检测复制区域的性能.文献[13]在上述关键点方法的框架上使用J-Linkage 聚类方法,该方法主要包括了图像分割和关键点匹配两部分,其中关键点匹配又分为2 个步骤:第1 步是粗略推测变换矩阵;第2 步是移动关键点的定位,根据基于EM 的算法进一步推测变换矩阵.另外,文献[14]提出了采用图像分割策略进行篡改检测的方法.

关键点方法在面对包含JPEG 压缩和噪声的篡改时具有良好的鲁棒性,但是难以检测到小区域或关键点数目较少的区域的复制粘贴操作.基于块的方法能够在单纯的复制粘贴情形下具有良好的性能,然而目前阶段通用算法速度慢,难以处理旋转、缩放、添加噪声等攻击.有些方法可以检测出比一般算法更多的复制块,因而召回率较高;同时正因为所检测出的复制块较多,会将某些背景也当作复制区域,导致检测精确率下降.所以召回率和精确率之间需要一个平衡.

为了解决上述问题,本文提出了一种基于超像素分割[15]的方法,将图像分为多个子区域(块),并将每一个子区域编号.在利用SIFT 特征得到匹配点对后,将匹配点置于图像的子区域中,根据子区域内特征点的数目进行聚类.

1 SIFT 算法

尺度不变特征变换(SIFT)算法是一种提取数字图像局部性特征的算法,它在尺度空间中寻找极值点,并提取出其位置、尺度、旋转不变量.该算法对旋转、缩放、亮度变化都保持良好的鲁棒性,对仿射变换和噪声也具有一定的鲁棒性,且SIFT 特征相对容易获取,识别率较高,近些年,很多研究人员将SIFT 算法用于数字图像的复制粘贴检测中,也收获了不错的成果.SIFT 算法涉及以下4 个关键步骤.

1.1 尺度空间极值检测

SIFT 算法的特征点是在高斯差分(difference of Gaussian,DoG)金字塔上通过检测极值点的方法求得的.对于图像D,高斯差分金字塔的计算公式为

式中,L(x,y,kσ)表示原图I(x,y)与高斯核G(x,y,kσ)在kσ尺度上的卷积和.将高斯差分金字塔中的像素点与其同尺度的8 邻域像素以及上下相邻尺度的18 个像素进行比较,即可获得极值点.

1.2 关键点定位

对求取的极值点进行三维二次拟合,去除对比度低的不稳定点,然后进一步利用主曲率去除边缘点,剩余的极值点便作为关键点.

1.3 关键点方向确定

为了使特征描述子具有旋转不变性,需要利用图像的局部特征为关键点分配方向,利用特征点所在的邻域像素梯度来确定该点的方向参数.梯度值大小m(x,y)及其方向θ(x,y)的计算公式分别为

确定梯度后采用直方图统计邻域像素方向和梯度,直方图的峰值方向即为关键点的主方向.

1.4 关键点描述

对已确定的关键点,在其尺度空间内的4×4 的窗口中计算8 个方向的梯度信息,再将其转换为128 维向量,生成SIFT 描述子.

2 本文方法

2.1 特征提取

本文用式(1)对待检测的数字图像求取高斯差分金字塔,将每个点与其邻域空间进行比较,求出特征点X={x1,x2,··· ,xn};然后借助式(2)和(3)求出特征点梯度值及其方向,生成特征点的描述子集合F={f1,f2,··· ,fn}.

2.2 特征点匹配

对于得到的128 维特征描述子,本文采用欧氏距离来衡量不同向量之间的差别.由于SIFT 描述子是一个128 维的向量,欧氏距离可能取值波动较大,单纯用一个阈值来判断两描述子是否匹配会导致较大的误差,因而本文采用2NN 匹配方法,求出某一描述子与其他描述子的欧氏距离后进行排序,得到D={d1,d2,··· ,dn},其中d1为最近距离.设阈值t,若d1/d2<t,则认为d1对应的描述子与该描述子匹配,即这2 个特征点匹配.另外考虑到复制粘贴篡改可能出现多次粘贴的现象,需要一直比较到出现大于阈值的情况为止以确保证求出所有的匹配对,进而检测出可能存在的多个复制粘贴对.对各个特征点描述子进行上述2NN 匹配,即可得到所有匹配对.

2.3 聚类及篡改检测

图像的复制粘贴篡改操作实际上都具有某种目的(如将墙上的1 幅画复制成2 幅).文献[16]提出借助将图像划分为诸多有意义的子区域(如1 幅画为1 个子区域)的办法来提高聚类质量.

本文提取的特征点是在空间尺度(高斯差分空间)中寻找极值点,它们通常为边缘点、角点、明亮区域中的暗点以及黑暗区域中的明亮点,这些点反映了图像的局部特征.为了提高特征点聚类的效率,需将图像划分为若干个有意义的子区域(局部)进行聚类,本文采用了文献[15]提出的超像素分割算法(TurboPixels)进行聚类.该算法能够根据图像内部的纹理、颜色、亮度等特征将图像进行区域划分,并在子区域中对所提取的图像局部特征点进行聚类,充分发挥SIFT 算法和超像素分割算法的优势.可以看出,该算法实际上是利用了特征点反映局部特征的特性,从而借助局部特性提高聚类效率.

TurboPixels 算法初始将N个种子置于图像中,对所有种子点进行标记,随后种子开始扩张.设Δt为每次扩张的像素点数,ψ(x,y)为点(x,y)到最近的已标记点的距离,即点到最近种子边界的距离,则一个点的一次扩张可以表示为

式中,SI为当前图像的局部结构,SB为当前点与其他种子边界的距离.SI由以下2 个因素决定:一是图像在该点的梯度,梯度越大值越低;二是该点与图像边界的距离,距离越近值越小.此外,当前点距离其他种子的边界点越近,SB越小.SI和SB共同调节在当前点的扩张速度.

该算法关注的是每个种子边界外4 个像素点宽的“窄带”上点的ψ值.一旦标记完所有的点算法即可停止,共得N个子区域,编号为1~N.

求出匹配对P1和P2后对其分别进行“聚类”,若某一个子区域中点的数目达到阈值Th,则可以判定该子区域内的点属于一个整体,可聚成一类;反之,若一个子区域内点的数目小于阈值,则认为这些点是散点,将其剔除.

聚类完成后,若存在2 个或2 个以上的簇,即可认为该图像D是经过复制粘贴篡改的.

2.4 估计仿射变换矩阵

这个矩阵需要至少3 个匹配点对才能求得.本文采用最大似然估计法来推测H,该方法是通过寻找最佳匹配对的方式来降低推测误差的.误差δ公式为

图1 超像素分割在聚类中的应用Figure1 Application of super pixel segmentation in clustering

3 实 验

3.1 测试数据集

本文测试实验采用Christlein[17]构建的图像处理数据集(image manipulation dataset,IMD).该数据集包含不同尺寸的未篡改图像(共计48 幅),以及平移、缩放、旋转、添加噪声和JPEG 压缩共计5 种攻击方式的复制粘贴篡改图像,该数据集共有1 488 幅图像.

平移:有48 幅原始图像和48 幅经过平移的图像,共96 幅图像.

缩放:粘贴区域将会进行缩放,缩放比从0.91 到1.09,步长为0.02,共480 幅图像.

旋转:粘贴区域将会进行旋转,旋转角度从2°到10°,步长为2°,共240 幅图像.

添加噪声:在粘贴区域添加高斯噪声,标准差从0.02 到0.1,步长为0.02,共240 幅图像.

JPEG 压缩:质量因子取值从20 到100,步长为10,共计432 幅图像.

3.2 评价指标

本文实验在像素级上采用召回率(recall)、精确率(precision)和F1分数[17]来衡量检测算法的性能,其中召回率为

精确率为

式中,tp表示算法判定为篡改区域且事实上也是篡改区域的像素数,fp表示算法判定为篡改区域但实际上不是篡改区域的像素数,fn表示算法判定为非篡改区域但实际上是篡改区域的像素数.

3.3 数据集实验结果

3.3.1 平移复制粘贴检测结果

图2为部分实验结果示意图,可以看出本文算法得到了较好的效果.表1展示了在试验数据集中平移复制粘贴检测的结果,并将本文提出的算法实验结果与SIFT 和SURF 的算法结果进行了比较.可以看出本文算法在平移复制粘贴篡改情况下表现出明显优于SIFT 和SURF 算法的特点.

图2 SIFT、SURF 以及本文算法结果比较Figure2 Results comparison of SIFT,SURF and the proposed method

表1 平移复制粘贴篡改检测结果Table1 Detection results of plain copy-move forgery

3.3.2 其他形式复制粘贴检测结果

在试验数据集中,其他形式复制粘贴攻击检测的结果如表2~5 所示.本文实验测试了4 种形式的复制粘贴篡改攻击,分别为JPEG 压缩、添加噪声、旋转、缩放,并将其测试结果与SIFT 和SURF 算法进行了比较.结果显示,本文方法在对抗平移变换、JPEG 压缩变换、旋转和缩放变换时仍具有良好的鲁棒性,在召回率、精确率和F1分数方面都明显优于SIFT[9]和SURF[10]算法.然而,本文算法在面对添加噪声的复制粘贴篡改攻击时表现不佳,原因是噪声攻击导致图像匹配点对数量减少,使聚类时部分子区域内点对数目未达到阈值,以致没有成功聚类.

表2 JPEG 压缩复制粘贴篡改检测结果Table2 Detection results of JPEG compression copy-move forgery

表3 添加噪声复制粘贴篡改检测结果Table3 Detection results of adding noise copymove forgery

表4 旋转复制粘贴篡改检测结果Table4 Detection results of rotation copy-move forgery

表5 缩放复制粘贴篡改检测结果Table5 Detection results of scale copy-move forgery

4 结 语

本文提出一种基于超像素分割的图像复制粘贴篡改检测算法.该方法利用超像素分割算法将图像根据局部特征分为若干个子区域,求出特征匹配点对后将待聚类的匹配点置于分割后的图像中.若一个子区域中包含3 个及以上的点,即可将该子区域中的点聚成一类;若少于3 个,则认为区域中的点是错点,将其忽略.所提方法将聚类与图像区域内容结合,在聚类时从图像子区域的内容特征出发,先以图像内容进行子区域划分,再用图像子区域内容指导聚类,使得聚类结果更加贴合图像本身,能够更加清楚地反映实际的复制粘贴篡改区域情况.

猜你喜欢
复制粘贴关键点像素
像素前线之“幻影”2000
聚焦金属关键点
肉兔育肥抓好七个关键点
复制,粘贴
全面复制
Win10小技巧 复制粘贴多段不连续文字
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部
机械能守恒定律应用的关键点