数字图像取证 - 基于相机属性的取证 2

Posted on Sat 15 August 2020 in Digital Image Forensics • 1 min read

CA

理想状态下光线透过滤镜聚焦到传感器上,传感器将光子转储为颜色信息并保存。然而实际上不存在一种滤镜能够完美的将所有波长的光聚焦于传感器上,从而导致导致高光区域与低光区域出现带有颜色的边缘。这一现象被称为CA或色差或紫边(摄影)。由于相机以及镜头的不同,篡改图像的过程中,就会出现色差问题不一致的问题,那么利用这一特性就可以校验图像是否被篡改。首先介绍一下为何会出现色差现象 有折射定律: 1. 折射光线位于入射面内. 2. \(n\sin I = n' \sin I'\) 注: \(I\)表示入射角, \(I'\) 表示折射角,n表示折射率. 以及短波(蓝色)折射率高,长波(红色)折射率低. 根据折射定律由于不同的波长在同一种介质中的折射率不同就会出现如下的情况 ref_wave

建模CA向量

根据折射定律\(nsin(\theta) = n_r\sin(\theta_r)\) 以及 \(nsin(\theta) = n_b\sin(\theta_b)\)得出\(n_r\sin(\theta_r) = n_b\sin(\theta_b)\), 进一步的则有

$$ \begin{aligned} \frac{n_r\sin(\theta_r)}{\cos(\theta_b)} &= n_b\tan(\theta_b) \\ &= \frac{n_b x_b}{f} \end{aligned} $$

其中\(f\)是透镜至传感器的距离. 但一般而言, 折射角与入射角的偏差很小, 故

$$ \begin{aligned} n_r\sin(\theta_r) &\approx \frac{n_b x_b}{f} \\ n_r\tan(\theta_r) &\approx \frac{n_b x_b}{f} \\ \frac{n_r x_r}{f} &\approx \frac{n_b x_b}{f} \\ n_r x_r &\approx n_b x_b \\ x_r &\approx \alpha x_b \end{aligned} $$

其中\(\alpha = \frac{n_b}{n_r}\)

对于二维图像, 那么便有\((x_r, y_r) \approx \alpha(x_b, y_b)\). 利用该公式可以构造出一组向量\(v = (x_r - x_b, y_r - y_b)\), 将其拓展至全图, 则会得到如下的概念图 ca_vec 因为图像裁剪的问题存在, 一张图像的光线入射中心并不一定是图像的正中心, 所以该向量还可以建模为

$$ \bigg\lbrace{ \begin{aligned} x_r = \alpha(x_b - x_0) + x_0 \\ x_r = \alpha(x_b - x_0) + x_0 \\ \end{aligned} } $$

由于不同镜头的折射率不尽相同, 并且取证是不能获取其所有信息. 故建立一个参数模型对色彩的扭曲进行估算.

估计色差

求解中心点基于互信息最大化来求解\(\argmax_{x1, y1, \alpha{1} }I{R; G}\). 其中R与G是红色通道\(R(x, y)\)以及绿色通道\(G(x, y)\)中的随机点. 基于暴力破解法求解

$$ I(R, G) = \sum_{r \in R}\sum{g \in G}Pr(r, g)log(\frac{Pr(r, g)}{Pr(r)Pr(g)}) $$

其中\(P(\cdot , \cdot)\)是联合概率分布,\(P(\cdot)\)是边缘概率分布

作者同时还提出了验证估计出的参数的方法. 这一模块与取证无关, 简述一下其思想以及方法. 令\(x_0, y_0, \alpha_0\)为真实参数, \(x_1, y_1, \alpha_1\)则为预估出的参数. 那么则有2组CA向量

$$ \begin{aligned} \overrightarrow{v_0}(x, y) = \begin{pmatrix} (\alpha_0(x - x_0) + x_0) - x\\ (\alpha_0(y - y_0) + y_0) - y\\ \end{pmatrix}\\ \overrightarrow{v_1}(x, y) = \begin{pmatrix} (\alpha_1(x - x_1) + x_1) - x\\ (\alpha_1(y - y_1) + y_1) - y\\ \end{pmatrix} \end{aligned} $$

随后求解两向量之间的角度误差

$$ \theta(x, y) = \cos^{-1}(\frac{\overrightarrow{v_0}(x, y)\cdot\overrightarrow{v_1}(x, y)}{||\overrightarrow{v_0}(x, y)||\space||\overrightarrow{v_1}(x, y)}) $$

对于全图像素求解角度误差, 即求解

$$ \bar{\theta} = \frac{1}{P}\sum_{x, y}\theta(x, y) $$

图像篡改检测

在篡改图像时,图像总是由另一部分的图片填补或者拼凑而成,这种方式会导致横向色差的不一致。为了找到这种不一致,我们首先假设只有一小块图片是被篡改过的,以及这种篡改不会严重地影响到整张图片的色差估计。所以可以用全局的估计与每个小块做对比,所有与全局估计相悖的像素块都可能被怀疑是篡改过的。 将示例图片划分为300x300的像素块,在没有空间频域信息的情况下得到小块的色差是很难的,所以选择计算每个色块的平均梯度,且只提取梯度最大的50个色块,梯度的计算公式为

$$ \delta I(x, y) = \sqrt{I^2_x(x, y) + I^2_y(x, y) } $$

其中\(

\begin{aligned} I_x(x, y) = ((I(x, y) * d(x) * p(y)) \\ I_y(x, y) = ((I(x, y) * d(y) * p(x)) \end{aligned}
\), \(d(\cdot)\)是一阶微分, \(p(\cdot)\)是低通滤波器.

ca_res)

最上方图片圈出的即是一个色块,第二和第三个图是蓝绿的色差统计,第二张图是对全局的,而第三张图是对单独一块的。最下面一张图是角误差的统计图,误差计算的对象是第二张图和第三张图。平均角误差的统计结果为98%的角误差低于60°,平均角误差为14.8°。这个结果表现出色块色差的估计如果显著的大于60°,那么它可以表示色块中存在篡改痕迹。

参考文献

[1] Exposing digital forgeries through chromatic aberration