随着图像获取设备的快速发展, 免费图像编辑软件的可用性越来越高, 而图像编辑技术的滥用会生成虚假的图像内容, 使得数字图像篡改变得越来越容易. 篡改伪造图像不仅降低了图像可信度, 而且会误导大众, 有时甚至引发犯罪. 因此, 旨在揭示各种图像篡改的取证工具越来越受到关注.
在图像采集和传输过程中不可避免地会受到噪声的干扰, 这将会导致不同采集设备获得的图像之间存在着噪声差异. 这种类型的不一致性可以作为检测图像拼接操作的依据, 为了检测这种不一致性, 近年来许多有效的方法被相继提出.
Ajá-Fernandez等人[1]从局部统计模型来估计噪声, 其基础是大多数图像区域均是平坦的, 但这在实践中并不总是成立. Liu等人[2]针对图像强度定义了噪声水平函数(Noise Level Function, NLF), 利用图像像素平均值和亮度变化作为样本集, 并使用贝叶斯MAP(Maximum A Posteriori)估计来从单个图像推断噪声水平函数, 该方法后来扩展到图像去噪领域[3]. 然而, 在贝叶斯估计过程中, NLF曲线的形状并没有较好的限制. 因此, 均匀块不足的图像可能会影响NLF估计的准确性. Yang 等人[4]主要解决了噪声水平估计中均匀样本块不足的问题, 他们使用稀疏表示技术通过字典恢复来估计NLF. 然而不足之处是, 为了使拟合NLF更接近真实噪声水平, 在估计之前需要训练可靠的字典. Lyu等人[5]利用带通域中自然图像峰度的特定的性质以及噪声特性和峰度之间的关系, 将噪声统计量的估计表示为封闭形式解的优化问题, 并进一步推广到一种有效的局部噪声统计量估计方法. Pun等人[6]利用多尺度噪声差异作为图像拼接伪造检测依据, 图像最初被分割成多个尺度的超像素, 在每个单独的尺度中, 计算噪声水平和亮度之间的噪声水平函数, 实验结果表明, 该方案对于多目标拼接具有较好性能. Zeng等人[7]提出基于主成分分析的图像块噪声水平估计算法, 并通过k-means聚类区分原始区域和篡改区域. Chierchia 等人[8]提出了基于传感器模式噪声的图像篡改检测方法, 在贝叶斯估计框架下使用马尔可夫随机场来探索图像来源的空间依赖关系, 在整个图像上综合考虑, 利用优化技术实现全局最优解, 并通过非局部去噪来提高估计, 该技术在很大程度上改善了当前的技术水平. Yao 等人[9]通过探索NLF与相机响应函数(Camera Response Function, CRF)之间的关系, 拟合CRF约束下的NLF曲线, 建立贝叶斯最大后验MAP框架来优化NLF估计. Cozzolino等人[10]从图像的噪声残差中提取局部特征, 从而定位篡改区域.
本文主要解决当篡改图像中的拼接区域与原始区域的噪声差异较小时拼接检测的困难, 提高了对不同后处理操作的鲁棒性, 并且运用自适应的阈值确定方法, 提升了拼接区域检测的性能.
1 噪声模型大多数数字图像在成像过程中通过传感器或后处理操作引入固有的噪声分量. 最广泛使用的噪声模型是与信号无关的加性高斯白噪声[11], 噪声图像
$A(x, y) = {A_0}(x, y) + N(x, y)$ | (1) |
其中,
$f(x) = \frac{1}{{\sigma \sqrt {2\pi } }}{e^{ - \frac{{{{(x - \mu )}^2}}}{{2{\sigma ^2}}}}}$ | (2) |
其中,
在很多图像处理过程中都涉及图像分块, 针对不同的目的有不同的分块策略. 本文采用非重叠分块的方法. 具体方法为从左到右, 从上到下移动遍历整幅图像(如图1所示). 并且选择的块应该远小于图像块的大小. 设检测的图像大小为
实际处理中我们将除不尽余下的边缘像素值舍掉. 对于子块大小选取要适中, 子块过大则篡改区域无法精确地定位; 子块过小则块内信息内容不充分, 容易出现较多误检, 并且运算时间过长. 通过实验对比, 本文选取大小为16×16的子块, 此时检测精度较高(如图2). 记每一块为
3 噪声估计算法 3.1 改进的拉普拉斯算子
拉普拉斯是一种二阶导数算子, 与方向无关, 对噪声有双倍加强作用. 一个二维图像函数的拉普拉斯变换是各向同性的二阶导数, 定义为:
${\nabla ^2}f(x, y) = \frac{{{\partial ^2}f}}{{\partial {x^2}}} + \frac{{{\partial ^2}f}}{{\partial {y^2}}}$ | (3) |
为了更适合于数字图像处理, 将该方程用离散形式表示:
$\begin{aligned} {\nabla ^2}f = &[f(x + 1, y) + f(x - 1, y) + f(x, y + 1) + \cdots \\ & + f(x, y - 1)] - 4f(x, y) \\ \end{aligned} $ | (4) |
另外, 拉普拉斯算子还可以表示成掩模的形式, 如
$ {L_1} = \left[ {\begin{array}{*{20}{c}} 0&1&0 \\ 1&{-4}&1 \\ 0&1&0 \end{array}} \right],\;\;{L_2} = \frac{1}{2}\left[ {\begin{array}{*{20}{c}} 1&0&1 \\ 0&{-4}&0 \\ 1&0&1 \end{array}} \right] $ |
$C = 2({L_2} - {L_1}) = \left[ {\begin{array}{*{20}{c}} 1&{-2}&1 \\ {-2}&4&{-2} \\ 1&{-2}&1 \end{array}} \right]$ |
令
${B'_i}(x, y) = {B_i}(x, y) * C$ | (5) |
假设每一个像素的噪声标准差为
$\sigma _i^2 = \frac{1}{{36{*}W{*}H}}\sum\limits_{{\rm{i}}mage B} {{{({B_i}(x, y) * C)}^2}} $ | (6) |
其中, W和H分别为图像非重叠块的宽和高.
由于均值为0方差为
$\int_{-\infty }^\infty {|t|} \frac{1}{{\sqrt {2\pi } {\sigma _i}}}\exp (\frac{{ - {t^2}}}{{2{\sigma _i}^2}})dt = \sqrt {\frac{2}{\pi }} {\sigma _i}$ | (7) |
得到:
${\sigma _i} = \sqrt {\frac{\pi }{2}} \int_{-\infty }^\infty {|t|} \frac{1}{{\sqrt {2\pi } {\sigma _i}}}\exp (\frac{{ - {t^2}}}{{2{\sigma _i}^2}})dt$ | (8) |
因此对于块的噪声估计
${\sigma _i} = \sqrt {\frac{\pi }{2}} \frac{1}{{6{*}W{*}H}}\sum\limits_{image B} {|{B_i}(x, y) * C|} $ | (9) |
假设图像A是
$A = U \times S \times {V^{\rm{T}}}$ | (10) |
其中, U是正交矩阵, S为对角矩阵, V为另一个正交矩阵的转置. 其中,
通过使用参数M来表示选取奇异值的数量, 计算
${P_M} = \frac{1}{M}\sum\limits_{i = r - M + 1}^r {S(i)} $ | (11) |
${P_M} = \sum\limits_{i = r - M + 1}^r {{S(i)}} = a{\sigma _l} + \beta $ | (12) |
其中,
由文献[13]可知, 噪声水平越高, 奇异值越大. 而图像内容决定了奇异值的前面部分, 它会导致奇异值的前面部分包含在
为了进一步利用SVD算法, 我们需要求出
当根据式(12)估计噪声水平时, 我们需要找出
假设在噪声图像上添加一个方差为
${\sigma _w} = \sqrt {\sigma _l^2 + \sigma _1^2} = \sqrt {\sigma _l^2 + 50 ^2} $ | (13) |
从式(12)即可得到两个等式:
${P_M} = a{\sigma _l} + \beta $ | (14) |
${P_{1M}} = a\sqrt {\sigma _l^2 + \sigma _1^2} + \beta = a\sqrt {\sigma _l^2 + 50 ^2} + \beta $ | (15) |
通过求解上面的方程组, 可以计算出
$ {{\sigma _l}} = \frac{{a\sigma _1^2}}{{2({P_{1M}} - {P_M})}} - \frac{{{P_{1M}} - {P_M}}}{{2a}}$ | (16) |
通过重复上面的步骤, 即可得到所有图像块的噪声估计值
接着利用式(17)和式(18)对噪声方差
$C = \max ({{\mathop \sigma \limits^ \wedge }_i})/\max ({\sigma _i})$ | (17) |
$ {{\bar\sigma _i}} = {\sigma _i} + \frac{{\mathop {{\sigma _i}}\limits^ \wedge }}{{3C}}$ | (18) |
由于拼接操作会破坏图像的纹理强度的一致性, 因此它的改变可以作为拼接篡改的线索. 文献[11]中所说, 图像结构可以通过梯度协方差矩阵来表示. 对于图像块
${G_{{B_i}}} = [{D_h}{B_i} \;\;{D_v}{B_i}]$ | (19) |
其中,
${D_h} = \frac{1}{2}\left[ {\begin{array}{*{20}{c}} 0&0&0 \\ { - 1}&0&1 \\ 0&0&0 \end{array}} \right], {D_v} = \frac{1}{2}\left[ {\begin{array}{*{20}{c}} 0&{ - 1}&0 \\ 0&0&0 \\ 0&1&0 \end{array}} \right]$ | (20) |
或
${D_h} = \frac{1}{8}\left[ {\begin{array}{*{20}{c}} { - 1}&0&1 \\ { - 2}&0&2 \\ { - 1}&0&1 \end{array}} \right], {D_v} = \frac{1}{8}\left[ {\begin{array}{*{20}{c}} { - 1}&{ - 2}&{ - 1} \\ 0&0&0 \\ 1&2&1 \end{array}} \right]$ | (21) |
故对于图像块
$\begin{gathered} {C_{{B_i}}} = {G_{{B_{ii}}}}^{\rm{T}}{G_{{B_{ii}}}}= \left[ {\begin{array}{*{20}{c}} {{B_i}^{\rm{T}}{D_h}^{\rm{T}}{D_h}{B_i}}&{{B_i}^{\rm{T}}{D_h}^{\rm{T}}{D_v}{B_i}} \\ {{B_i}^{\rm{T}}{D_v}^{\rm{T}}{D_h}{B_i}}&{{B_i}^{\rm{T}}{D_v}^{\rm{T}}{D_v}{B_i}} \end{array}} \right] \\ \end{gathered} $ | (22) |
其中, T表示转置. 然而通过梯度矩阵
${G_{{B_i}}} = {\rm{U}}S{{\rm{V}}^{\rm{T}}} = {\rm{U}}\left[ {\begin{array}{*{20}{c}} {{s_{\rm{1}}}}&{0}& \cdots &{0} \\ {0}&{{s_2}}& \cdots &0 \\ \vdots & \vdots & \ddots &{0} \\ {0}&0& \cdots &{{s_{{r}}}} \end{array}} \right]{{\rm{V}}^{\rm{T}}}$ | (23) |
$ \begin{aligned} {C_{{B_i}}} & = {G_{{B_{ii}}}}^{\rm{T}}{G_{{B_{ii}}}} = {({{U}}S{{{V}}^{\rm{T}}})^{\rm{T}}}{{U}}S{{{V}}^{\rm{T}}} = {{V}}{S^{\rm{T}}}{{{U}}^{\rm{T}}}{{U}}S{{{V}}^{\rm{T}}} \\ & = {{V}}{S^{\rm{T}}}S{{{V}}^{\rm{T}}} = {{V(}}{S^{\rm{T}}}S){{{V}}^{\rm{T}}}\\ & = {{V}}\left[ {\begin{array}{*{20}{c}} {{s_{\rm{1}}}^2}&{0}& \cdots &{0} \\ {0}&{{s_2}^2}& \cdots &0 \\ \vdots & \vdots & \ddots &{0} \\ {0}&0& \cdots &{{s_{{r}}}^2} \end{array}} \right]{{{V}}^{\rm{T}}} \end{aligned} $ | (24) |
其中
因此我们用协方差矩阵所有特征值之和来反映图像块的纹理长度. 其中和越大说明纹理越丰富. 定义如下;
$W = {\sum\nolimits_{i = 1}^r {{s_i}} ^2}$ | (25) |
拼接图像由两个或多个不同来源的部分组成, 可能包含不一致的噪声特征和纹理强度特征. 原则上, 我们可以将全局图像分成几个局部片段, 并使用前一节中介绍的方法估计所有图像块噪声和纹理强度. 但是, 这种方式不仅计算复杂度相对较高, 特别是对于一些尺寸较大的图像, 而且由于块数较多还会造成误检升高. 基于这两个原因, 我们提出了一种基于可疑区域的拼接检测方法.
首先, 利用基于纹理相似的原理定位出可疑区域; 其次, 利用上文方法对可疑区域进行噪声估计; 最后, 定位出篡改区域.
3.4 基于纹理强度的篡改定位拼接篡改操作使得图像纹理强度的一致性受到破坏, 但也存在拼接块与原始图像可能具有相似的纹理强度的可能, 因此这种特征只能粗略定位出可疑篡改区域. 如图3给出原始图和篡改图像纹理强度的示例.
如图4所示, 篡改图像和未篡改图像的纹理强度具有明显差异, 根据这个特征我们可以粗略定位出篡改区域. 具体过程如下:
首先, 利用非重叠分块将图像分为大小为32×32的分割块. 这里主要考虑分块要能足够表达图像中的信息, 过大则是定位精度较低, 过小则可能产生漏检.
接着, 利用基于SVD的局部图像梯度矩阵的方法估计图像的纹理特征. 分别表示为
$ {C_{RS - v}} = \sum\limits_{v = 1}^4 \sum\limits_{v1 = 1}^4 {{{(S{R_v} - S{R_{v1}})}^2}} , (v \ne v1, v, v1 = 1, 2, 3, 4) $ | (26) |
${\eta _v} = \displaystyle\tfrac{{S{R_v}}}{{S{R_{\rm{ave}}}}} v = 1, 2, 3, 4$ | (27) |
其中,
$T = F(\eta )*0.6$ | (28) |
其中,
首先, 对待检测图像进行大小为16×16分块处理. 接着利用本文所提出方法得到噪声值并用阈值进行二值化处理, 阈值选择如下:
计算出噪声的平均值
$T = \frac{1}{r}\sum\limits_{i = 1}^r {\mathop {{\sigma _i}}\limits^ - } $ | (29) |
由于拼接操作将图像分为了两部分或三部分, 如图4所示三种情形:
将提取最终噪声值利用模糊聚类算法[14,15]将噪声均值和对应块聚为三类, 计算出每一类噪声的均值, 阈值定义为:
$th = (T + {N_{\max }})/2$ | (30) |
其中,
${D_i} = \left\{ \begin{gathered} 1,\;\; {\rm{if}} \;\;th < {\bar\sigma _i} \\ 0 ,\;\; {\rm{otherwise}} \\ \end{gathered} \right.$ | (31) |
在本节中, 我们通过实验来评估和分析所提出方法的性能. 并给出所提方法和对比文章的精度测试、视觉图, 并对方案的鲁棒性进行了分析. 本文在Matlab 2014a, Win7平台进行实验.
4.1 所提出的方法的有效性评估由于所提出的方法是基于噪声来检测篡改区域的, 因此验证该方法的有效性是很有必要的. 下面的实验是为了验证该方法对于不同噪声的检测性能.
我们从BSDS300数据库中随机抽取180张图片. 首先, 通过对原始图像添加均值为零标准差
$TP=\frac {\text{拼接区域被检测为拼接区域像素数}}{\text{图像总像素数}}\times 100\%$ |
$FP=\frac {\text{原始区域被检测为原始区域像素数}}{\text{原始区域总像素数}}\times 100\%$ |
从表2中可以看出对于较小
衡量一个方法的好坏不仅仅是检测精度, 还要考虑是否具有一般适用性. 接下来的实验是为了验证该方法的一般适用性, 我们利用Columbia IPDED数据集来定量分析检测率以及对于后处理操作的鲁棒性.
从表3中可以看出, 本文所提出的方法具有更好的检测性能, 且对于一些常见后处理操作具有鲁棒性, 相比于最先进的图像拼接定位方法, 所提出的方法具有较好的检测性能. 从上表看到存在较高的误检率高, 主要是因为本文采用非重叠分块, 且块的大小为16×16, 在定位时由于在拼接边缘有一部分原始图像被分割到拼接块, 因此按像素来计算误检率使得误检率较大, 另一方面是由于阈值选择造成的影响.
表4是在BSDS300数据集中利用所提出的方法对处理前和后处理操作后的检测率比较.
4.3 拼接定位视觉结果对比
为了检验所提出方案的篡改定位能力, 我们分别选用Columbia IPDED数据库与BSDS300数据中的图像进行测试. 图5是拼接篡改图像的4个实例, 以及使用文献[9]和文献[7]方法的检测结果.
从图5可以看出, 文献[7]虽然能大致定位出篡改区域, 但是误检率较大, 文献[9]也能大致定位出篡改区域, 但是由于采用显著区域检测的方法, 表现出较好性能, 但是会出现检测失败的可能. 相比之下我们所提出的方法具有一定优势.
4.3 鲁棒性拼接定位视觉结果对比为了检验所提出方案的鲁棒性, 我们选用Columbia IPDED数据库中的图像进行内容保持性操作处理, 如图6, 图7, 图8是针对不同类型的内容保持性操作篡改定位实验结果, 并与文献[9]和文献[7]中的方法进行了对比.
4.4 实验总结
从实验结果和鲁棒性实验的结果可以看出, 文献[7]对于JPEG压缩的定位能力相对较差, 勉强可以看到篡改区域, 特别对于JPEG质量因子较小时定位失败. 对于文献[9]虽然表现出较好的性能, 但是检测率不高且存在定位失败的情况. 总之从上述图中和表中的结果显示, 对于JPEG压缩、伽玛校正和高斯模糊的内容保持性的操作, 我们所提出的方法的篡改定位能力总体上优于文献[7]和文献[9].
5 结论与展望
本文提出了一种基于噪声水平的图像拼接篡改定位算法. 利用奇异值分解和改进的拉普拉斯算子计算噪声特征, 在此基础上利用模糊聚类求出阈值, 并定位出篡改区域. 相比先前算法提高了定位精度, 并对后处理操作具有较好鲁棒性, 特别对于拼接区域和非拼接区域噪声差异较小时具有优越性. 后续工作将致力于进一步改进噪声估计算法, 从而提高定位精度、精确定位篡改区域.
[1] |
Aja-Fernández S, Vegas-Sánchez-Ferrero G, Martín-Fernández M, et al. Automatic noise estimation in images using local statistics. Additive and multiplicative cases. Image and Vision Computing, 2009, 27(6): 756-770. DOI:10.1016/j.imavis.2008.08.002 |
[2] |
Liu C, Freeman WT, Szeliski R, et al. Noise estimation from a single image. 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. New York, NY, USA. 2006. 901–908.
|
[3] |
Liu C, Szeliski R, Kang SB, et al. Automatic estimation and removal of noise from a single image. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(20): 299-314. |
[4] |
Yang JY, Wu ZY, Hou CP. Estimation of signal-dependent sensor noise via sparse representation of noise level functions. 2012 19th IEEE International Conference on Image Processing. Orlando, FL, USA. 2013. 673–676.
|
[5] |
Lyu S, Pan XY, Zhang X. Exposing region splicing forgeries with blind local noise estimation. International Journal of Computer Vision, 2014, 110(2): 202-221. DOI:10.1007/s11263-013-0688-y |
[6] |
Pun CM, Liu B, Yuan XC. Multi-scale noise estimation for image splicing forgery detection. Journal of Visual Communication and Image Representation, 2016, 38: 195-206. DOI:10.1016/j.jvcir.2016.03.005 |
[7] |
Zeng H, Zhan YF, Kang XG, et al. Image splicing localization using PCA-based noise level estimation. Multimedia Tools and Applications, 2016, 76(4): 4783-4799. |
[8] |
Chierchia G, Poggi G, Sansone C, et al. A Bayesian-MRF approach for PRNU-based image forgery detection. IEEE Transactions on Information Forensics and Security, 2014, 9(4): 554-567. DOI:10.1109/TIFS.2014.2302078 |
[9] |
Yao H, Wang SZ, Zhang XP, et al. Detecting image splicing based on noise level inconsistency. Multimedia Tools and Applications, 2017, 76(10): 12457-12479. DOI:10.1007/s11042-016-3660-3 |
[10] |
Cozzolino D, Verdoliva L. Single-image splicing localization through autoencoder-based anomaly detection. IEEE International Workshop on Information Forensics and Security. Abu Dhabi, United Arab Emirates. 2016: 1–6.
|
[11] |
Russo F. A method for estimation and filtering of Gaussian noise in images. IEEE Transactions on Instrumentation and Measurement, 2003, 52(4): 1148-1154. DOI:10.1109/TIM.2003.815989 |
[12] |
Immerkær J. Fast noise variance estimation. Computer Vision and Image Understanding, 1996, 64(2): 300-302. DOI:10.1006/cviu.1996.0060 |
[13] |
Liu W, Lin WS. Additive white Gaussian noise level estimation in SVD domain for images. IEEE Transactions on Image Processing, 2013, 22(3): 872-883. DOI:10.1109/TIP.2012.2219544 |
[14] |
宫改云, 高新波, 伍忠东. FCM聚类算法中模糊加权指数m的优选方法
. 模糊系统与数学, 2005, 19(1): 143-148. DOI:10.3969/j.issn.1001-7402.2005.01.025 |
[15] |
汤效琴, 戴汝源. 数据挖掘中聚类分析的技术方法. 微计算机信息, 2003(1): 3-4. DOI:10.3969/j.issn.1008-0570.2003.01.002 |