#jpeg #image-processing #伪造检测 #图像法医

伪造检测-零

应用于数字图像伪造检测的JPEG网格检测器

3个版本 (破坏性)

0.3.0 2022年12月11日
0.2.0 2022年11月30日
0.1.0 2022年11月17日

#657 in 图像

AGPL-3.0-or-later

36KB
645 代码行

伪造检测-零

数字图像伪造检测中应用JPEG网格检测器ZERO的实现。

以下论文描述了该方法

Tina Nikoukhah, Jérémy Anger, Miguel Colom, Jean-Michel Morel, and Rafael Grompone von Gioi,
ZERO: a Local JPEG Grid Origin Detector Based on the Number of DCT Zeros and its Applications in Image Forensics,
Image Processing On Line, 11 (2021), pp. 396–433. https://doi.org/10.5201/ipol.2021.390

原始实现是用C语言编写的。

库示例

简单使用

# use forgery_detection_zero::Zero;
# let jpeg = todo!();
#
for r in Zero::from_image(&jpeg).into_iter() {
    println!(
        "Forged region detected: from ({}, {}) to ({}, {})",
        r.start.0, r.start.1, r.end.0, r.end.1,
    )
}

更高级的使用

# use forgery_detection_zero::Zero;
# let jpeg = todo!();
#
let foreign_grid_areas = Zero::from_image(&jpeg).detect_forgeries();
let missing_grid_areas = foreign_grid_areas
    .detect_missing_grid_areas()
    .unwrap()
    .unwrap();
let forged_regions = foreign_grid_areas
    .forged_regions()
    .iter()
    .chain(missing_grid_areas.forged_regions());
for r in forged_regions {
    println!(
        "Forged region detected: from ({}, {}) to ({}, {})",
        r.start.0, r.start.1, r.end.0, r.end.1,
    )
}

命令行界面示例

您可以使用示例生成图像的伪造掩码

cargo r --release --example zero image.jpg

依赖关系

~17MB
~145K SLoC