forgery-detection-zero
An implementation of ZERO: a JPEG grid detector applied to forgery detection in digital images.
The approach is described in the following paper:
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
The original implementation is written in C.
Library example
Simple usage:
# use Zero;
# let jpeg = todo!;
#
for r in from_image.into_iter
More advanced usage:
# use Zero;
# let jpeg = todo!;
#
let foreign_grid_areas = from_image.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;
for r in forged_regions
CLI example
You can use the example to generate the forgery masks of an image:
cargo r --release --example zero image.jpg