王梦思, 王任华
(中国人民公安大学信息技术与网络安全学院, 北京 100038)
随着数字时代的到来,数字照片日益深入人们的生活,图片处理软件的广泛应用,使修改照片变得简单又快速,但人们也会运用科技的手段恶意篡改伪造数字图像,小到个人,大到国家,篡改图像会在不同方面造成恶劣影响,所以通过技术手段可鉴定图像的真伪性,从而保证媒体和网络发布图像的真实性、可靠性。
同图复制篡改是数字图像篡改较为常见的一种类型,主要操作是将图像中的一个目标体复制粘贴到同一图像中的其他位置,再结合模糊、缩放、压缩的操作让篡改图像显得更真实。在同图复制篡改检测中,SIFT(Scale Invariant Feature Transform)[1]算法是目前应用最广泛、最基本的算法之一,它具有旋转、平移、光照不变等性质,但是SIFT算法是基于灰度图像操作,若篡改对象为灰度图像,则所有的色彩信息全部消失,这就造成一定的信息浪费,而SIFT算法的自身缺陷也会导致存在一定的误匹配。如图1中街景图像为同图复制篡改图像,SITF检测出篡改区域,但易拉罐图像为真实图像,SIFT也检测出了匹配区域,而该匹配区域除颜色不同外,其他特征如纹理特征等都很相似,这也印证了SITF算法无法应用颜色特征进行判断从而会出现误匹配。SIFT检测效果如图1所示。
图1 左上:篡改图;右上:SIFT检测结果;左下:非篡改图;右下:SIFT检测结果
针对彩色图像在此之前已有许多基于各类色彩空间的研究,[2-4]分析了图像色彩成分和描述子以有效结合SIFT算法进行特征提取;基于HSV色彩空间,[5]提出了颜色直方图,[6]提出了颜色信息量化以增强鲁棒性并减少计算复杂程度,[7]在该空间内使用SIFT算法提取车牌信息;[8]基于YCbCr空间进行图像拼接检测;[9]基于RGB空间提出了实时图像检索的快匹配特征。
本文选择了RGB色彩空间来提取关键点的颜色特征,因为在日常生活中RGB空间是最频繁使用也是最易理解的颜色模型之一,以人的肉眼来看,RGB空间非常接近自然颜色,也是最长应用的模型之一。在提取图像中的关键点时,大致分为两个步骤:(1)使用SIFT算法提取关键点;(2)在以关键点为中心的邻域内分别提取RGB 3个通道的颜色特征。在特征点匹配时,会发现匹配点减少,这是因为增加的颜色特征会将许多误匹配过滤掉,在接下来的环节中会减少许多工作量。特征点匹配常见的方法是k-d树或是基于欧氏距离,为了提高检测效率,本文选择的是找出最近邻域的Best-Bin-First (BBF)算法[10]。为了进一步消除误匹配,本文使用Random Sample Consensus(RANSAC)算法[11]并结合新提出的异常距离算法,即根据坐标判断关键点到正确匹配点集的位置距离是否在所设定的阈值内,从而排出异常值。
本文的方法是通过结合SIFT算法和RGB特征来实现,第一步是用SIFT算法提取图像中的关键点,然后计算每个关键点邻域内的RGB颜色特征;第二步根据两种特征进行特征点匹配。为了减少计算的复杂性,首先用SIFT算法匹配关键点,然后匹配关键点对的RGB特征,若它们的颜色特征不相似,则认为是异常点并排除,最后一步是使用RANSAC和异常距离算法将异常匹配点移除,算法流程图见图2。
图2 算法流程图
SIFT算法是David Lowe在1999提出的用于局部特征描述和提取的算法,它针对旋转、缩放、光照、放射变化有很好的鲁棒性,大体步骤为:
(1) 通过构造高斯金字塔和高斯差分尺度空间可以检测到局部极值点;
(2) 通过三维二次函数以精确确定关键点的尺度和位置,同时去除低对比度的关键点和不稳定的边缘响应点,以增强匹配的稳定性,提高抗噪声能力;
(3) 利用关键点邻域像素的梯度分布方向特性为每个关键点指定方向参数,使算子具有旋转不变性;
(4) 以关键点为中心取一个16×16 的邻域,一共产生4×4个种子点,这样对于一个关键点就产生了4×4×8 共128 维的特征向量,再对特征向量进行归一化,则可进一步去除光照变化的影响。
颜色特征在图像检索中是最常使用的特征之一,它不受图像方向和尺度的影响,因此具有较强的鲁棒性,而SIFT算法应用于灰度图像,这会导致丢失大量颜色信息,所以通过增加关键点的颜色特征从而增强匹配的准确性。首先选择合适的色彩空间,考虑到计算复杂度和适用性,本文选用的是RGB空间,RGB模型由3个通道组成:红、绿、蓝,每个通道各有256级亮度范围(从0~255),然后我们用颜色直方图将亮度级进行量化,该颜色直方图可表明图像像素的颜色分布情况,但无法表明像素的空间坐标,所以对于旋转和缩放有很强的鲁棒性。
在SIFT提取关键点后,在这些点的邻域内进行RGB特征提取,大体步骤如下:
提取关键点的N×N邻域;
分别量化3个颜色通道的亮度级。为了便于构建直方图灰度分布特征向量,将256级亮度分成M个区间(M取偶数),即每个区间大小为256/M,同时为了避免较大误差,M的值要大于6;
将关键点的N×N邻域内像素的颜色分布分别映射到3个通道的颜色直方图中;
根据颜色直方图,最终将形成3×M维的颜色特征。
如图3所示,当M=16,N=9时的红色通道的颜色特征提取直方图,右上的表格所示的是SIFT提取的关键点P1(坐标是(469,1 309))及其邻域,它的红色通道强度是253,右下直方图所示的是表格的颜色分布直方图,左边所示的是颜色量化区间,在P1邻域内红色密度在[144,160]之间,归一化为6个区间像素点,所以P1的红色通道向量为[0,0,0,0,0,0,0,0,0,6,3,0,5,4,1,62]。
图3 P1点的红色通道特征提取,原图像为图1b
在提取SIFT特征和RGB颜色特征后,再通过欧氏距离匹配特征向量,然而随着特征维数的增加,匹配的效率会越来越低,所以一开始不将SIFT特征和RGB特征结合,而是参照[6]的方法将整幅图像分成若干不重叠的区域块,其大小为16×16;使用BBF算法计算128维SIFT关键点间的最近邻域,生成第一轮的匹配对,再使用RGB特征进行第二轮匹配。设定匹配对为v1,v2,两种阈值θ1,θ2,v1_color和v2_color分别代表v1,v2的RGB颜色特征向量。
v1_color=(x1,x2,x3, …,x3×M-1,x3×M)
(1)
v2_color= (y1,y2,y3, …,y3×M-1,y3×M)
(2)
distinct=v1_color-v2_color=
(d1,d2,d3,…,d3×M-1,d3×M)
(3)
如果max(distinct)=di<θ1,i∈(1,3×M) 且 min(distinct)=dj>θ2,j∈(1,3×M),即视两个特征向量为匹配对。
使用RANSAC算法估算篡改区域和原始区域的仿射变换矩阵,进而可排除由于噪声引起的异常值点。
RANSAC算法本质上是一种数学模型参数估计算法,可以从包含异常点的数据集中通过迭代的方法估计数学模型参数,当其达到一定概率才会得到合理结果,通过提高迭代次数来提升概率,从而达到理想结果。RANSAC算法选择假设为“局内点”的随机子集,本文的输入点集为特征向量匹配对,通过反复训练实现目标模型,并经以下步骤验证:(1)所有未知参数适用于根据“局内点”训练出的模型,并能从该模型中获得;(2)若某个点适用于1中模型,则认为该点是局内点;(3)若适用该模型的点达到一定规模,那么可认为该模型合理;(4)用所有被测试过且被认为合适该模型的“局内点”重新估计模型;(5)用通过测试的“局内点”的通过率和错误率来评估新估算的模型。RANSAC估计参数模型具有鲁棒性,它能在存在噪声的数据集中高效的估计出参数,但缺点是迭代次数无法设置上限,否则会导致效果不是最优,并且得到的模型是一定概率可信。
考虑到正常值往往集中在特定区域,而异常值有时会距离该特定区域较远,本文提出异常值距离算法(outlier distances algorithm)将这些点排除。算法步骤如下:
(1)匹配点的坐标为(x,y),而异常值距离特定区域较远,我们选择匹配点的一种颜色通道。例如在图1中,所有的点(共W个)在绿色通道中根据x坐标的值按升序排列,如A={x1,x2,x3…xW-1,xW} 。
(2)分别计算d1=x2-x1,d2=x3-x2,d3=x4-x3,…,dW-1=xW-xW-1,由于可能存在几个复制区域,我们需将异常值移除的同时保留正常值。假设一块区域至少有T对匹配点(事先假设T=3,这会在第三部分说明),将结果分如下情况讨论:
k=M/2; 如果k>5, 则k=5; 分析每个dn;如果dn>T且n≤k,则认为xn左边全部的点是异常的并将它们移除;如果dn>T且n>M-k,则认为xn+1右边的点是异常的并将它们移除;如果dn>T且dn+i>T(i<3),并且M-k>n+1>n>k, 则认为从xn+1到xn+i是异常的,并将它们移除。
为了对本文算法进行总体评估,从CASIA[14]图像库中选择55张未压缩伪造图像和30张真实图像,从[15]中的基准数据集中选择大小为600×450,47张高质量伪造图像和25张大小为3 000×2 000的真实图像。在每张图像中添加标准差为0.002~0.01之间的高斯噪声,每次取值间隔为0.002。在每张图像中添加90到10的JPEG压缩因子,每次取值间隔为20。
实验参数设定如下:N=9,M=16,θ1=15,θ2=-13。
考虑到高品质图像中有更多的SIFT关键点,本文在处理不同质量图像时,选择不同的匹配点数T。对于低质量图像,设置T=3,对于高质量图像,设置T=5。实验结果将在图像级和像素级两个不同层面进行讨论。在图像级别,通过计算准确率(precision)和召回率(recall) 来测评。准确率和召回率公式如下:
Precision=TP/(TP+FP)
(4)
Recall=TP/(TP+FN)
(5)
其中TP是指被正确地划分为正例的个数;FP是指被错误地划分为正例的个数;FN是指将正例漏判的个数[11]。检测结果如表1所示。
表1 两种算法检测结果
从表1中的结构分析,当检测的图像为原图时,无论是低质量的图像还是高质量的图像,RGB_SIFT的综合检测结果都要略好于SIFT。
图4显示了当使用无伪造的原始图像和压缩图像时的实验结果,在检测此类图像的真实性时,RGB_SIFT几乎检测不到错误点,从而避免了SIFT出现误检测的情况。
图4 左上:真实图像;右上:SIFT检测;左中:JPEG压缩90使用SIFT检测,右中:JPEG压缩90使用RGB_SIFT检测;左下:JPEG压缩10使用SIFT检测;右下:JPEG压缩10使用RGB_SIFT检测
在像素级别上只检测篡改图像,选择CASIA的55个低质量图像和 [14]基准数据集中的47个高质量图像。测定102张篡改图像的准确率,在图像中添加90~10的JPEG压缩添加,压缩间隔为20,添加0.002~0.01的噪声,噪声间隔为0.002。记录了每个图像的正确匹配对和总匹配对,并计算出总准确率。表3显示了基于像素级时,RGB_SIFT检测结果具有非常高的准确率。
表2 在压缩条件下两种算法的实验结果
表3 在噪声条件下两种算法的实验结果
表2和表3分别显示了在压缩条件下和在噪声条件下两种算法的检测结果,通过数据对比,可见RGB_SIFT算法针对JPEG压缩和噪声具有很好的鲁棒性,检测结果明显优于SIFT算法。
随着JPEG压缩质量的降低,异常值似乎逐渐增加,但内容保持稳定,准确率下降,但RGB_SIFT仍然可以容易地去除异常值。
图5对比了两种种法针对同一张图的检测结果,并添加了不同程度的JPEG压缩。当JPEG压缩为10的时候,此时压缩程度为实验选取的最大值,SIFT检测存在大量的异常匹配点,而RGB_SIFT的异常匹配点明显较少。
本文提出了一种结合SIFT特征和RGB特征新算法,该算法提高了检测的准确性和有效性。实验结果表明在检测过程中,误匹配大大减少,检测的准确率达到90%,对真实图像的误检率低。在以后的工作中要深入研究提高JPEG压缩和多区域复制检测的准确性和有效性。