3个版本 (破坏性)
0.3.0 | 2022年12月11日 |
---|---|
0.2.0 | 2022年11月30日 |
0.1.0 | 2022年11月17日 |
#657 in 图像
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