All Projects → esimov → Forensic

esimov / Forensic

Licence: mit
Copy-move image forgery detection library.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Forensic

Lidar
A Python package for delineating nested surface depressions from digital elevation data.
Stars: ✭ 85 (-9.57%)
Mutual labels:  image-processing
Processing Imageprocessing
Collection of basic image processing algorithms for processing
Stars: ✭ 87 (-7.45%)
Mutual labels:  image-processing
Connected Components 3d
Connected components on multilabel 3D & 2D images. Handles 26, 18, and 6 connected variants.
Stars: ✭ 90 (-4.26%)
Mutual labels:  image-processing
Image Copy Move Detection
Copy-move forgery detection on digital image using Python
Stars: ✭ 85 (-9.57%)
Mutual labels:  image-processing
Damselfly
Damselfly is a server-based Digital Asset Management system for photographs. The goal of Damselfly is to index an extremely large collection of images, and allow easy search and retrieval of those images, using metadata such as the IPTC keyword tags, as well as the folder and file names.
Stars: ✭ 86 (-8.51%)
Mutual labels:  image-processing
Seamcarving
Image processing method that allows to remove an object from a photo.
Stars: ✭ 89 (-5.32%)
Mutual labels:  image-processing
Densedepthmap
Create Dense Depth Map Image for Known Poisitioned Camera from Lidar Point Cloud
Stars: ✭ 84 (-10.64%)
Mutual labels:  image-processing
Pyautolens
PyAutoLens: Open Source Strong Gravitational Lensing
Stars: ✭ 90 (-4.26%)
Mutual labels:  image-processing
Awesome Medical Imaging
Awesome list of software that I use to do research in medical imaging.
Stars: ✭ 87 (-7.45%)
Mutual labels:  image-processing
Replace Color
Replace color with another one pixel by pixel.
Stars: ✭ 90 (-4.26%)
Mutual labels:  image-processing
Simd
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
Stars: ✭ 1,263 (+1243.62%)
Mutual labels:  image-processing
Imscript
a collection of small and standalone utilities for image processing, written in C
Stars: ✭ 86 (-8.51%)
Mutual labels:  image-processing
React Tint
A React component that applies image processing filters to an image using Processing
Stars: ✭ 89 (-5.32%)
Mutual labels:  image-processing
Keras Icnet
Keras implementation of Real-Time Semantic Segmentation on High-Resolution Images
Stars: ✭ 85 (-9.57%)
Mutual labels:  image-processing
Mocogan
A pytorch implemention of MoCoGAN
Stars: ✭ 90 (-4.26%)
Mutual labels:  image-processing
Operation Wise Attention Network
Attention-based Adaptive Selection of Operations for Image Restoration in the Presence of Unknown Combined Distortions (CVPR 2019)
Stars: ✭ 84 (-10.64%)
Mutual labels:  image-processing
The bilateral solver
Fast Bilateral Solver implementation with C++ and demos
Stars: ✭ 87 (-7.45%)
Mutual labels:  image-processing
Dped
Software and pre-trained models for automatic photo quality enhancement using Deep Convolutional Networks
Stars: ✭ 1,315 (+1298.94%)
Mutual labels:  image-processing
Cropperjs
JavaScript image cropper.
Stars: ✭ 10,120 (+10665.96%)
Mutual labels:  image-processing
Png To Ico
convert png to ico format
Stars: ✭ 88 (-6.38%)
Mutual labels:  image-processing

Forensic

Build Status

Forensic is an image processing library which aims to detect copy-move forgeries in digital images. The implementation is mainly based on this paper: https://arxiv.org/pdf/1308.5661.pdf

Implementation details

  • Convert the RGB image to YUV color space.
  • Divide the R,G,B,Y components into fixed-sized blocks.
  • Obtain each block R,G,B and Y components.
  • Calculate each block R,G,B and Y components DCT (Discrete Cosine Transform) coefficients.
  • Extract features from the obtained DCT coefficients and save it into a matrix. The matrix rows will contain the blocks top-left coordinate position plus the DCT coefficient. The matrix will have (M − b + 1)(N − b + 1)x9 elements.
  • Sort the features in lexicographic order.
  • Search for similar pairs of blocks. Because identical blocks are most probably neighbors, after ordering them in lexicographic order we need to apply a specific threshold to filter out the false positive detections. If the distance between two neighboring blocks is smaller than a predefined threshold the blocks are considered as a pair of candidate for the forgery.
  • For each pair of candidate compute the cumulative number of shift vectors (how many times the same block is detected). If that number is greater than a predefined threshold the corresponding regions are considered forged.

Install

First install Go if you don't have already installed, set your GOPATH, and make sure $GOPATH/bin is in your PATH environment variable.

$ export GOPATH="$HOME/go"
$ export PATH="$PATH:$GOPATH/bin"

Next download the project and build the binary file.

$ go get -u -f github.com/esimov/forensic
$ go install

In case you do not want to build the binary file yourself you can obtain the prebuilt one from the releases folder.

Usage

$ forensic -in input.jpg -out output.jpg

Supported commands:

$ forensic --help

Image forgery detection library.
    Version: 

  -blur int
    	Blur radius (default 1)
  -bs int
    	Block size (default 4)
  -dt float
    	Distance threshold (default 0.4)
  -ft float
    	Forgery threshold (default 210)
  -in string
    	Input image
  -ot int
    	Offset threshold (default 72)
  -out string
    	Output image

Results

Original image Forged image Detection result
dogs_original dogs_forged dogs_result

Notice

Sometimes the library produces false positive results depending on the image content. For this reason I advise to adjust the settings. Also in some cases human judgement is required, but otherwise the library do a decent job in detecting forged images.

How to interpret the results?

The more intensive the overlayed color is, the more certain is that the image is tampered.

Author

License

Copyright © 2018 Endre Simo

This project is under the MIT License. See the LICENSE file for the full license text.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].