# Detecting copy-move forgery in images

Posted 8 years ago
14323 Views
|
8 Replies
|
22 Total Likes
|
 Mathematica 9 offers new image processing capabilities.There some quite interesting example on Matlab to detect copy-move forgery in images. I was wondering if any one had some ideas to implement such a functionality based on Mathematica 9 ?As good basis to start with some information and Matlab code :A SIFT-based forensic method for copy-move detectionKind regards, Olivier
8 Replies
Sort By:
Posted 8 years ago
 There's a lot to read there. To implement this, you will want to break your problem up into the same parts that the video shows. The first half appears to be some cluster analysis to identify parts of the image that are likely candidates for copied parts. Can you tell us more about how they implement this and what methods they use?The second half is more straightforward and there are built in functions for it. This part involves finding the corresponding points of the matched parts and finding the geometric transfomation that relates them. To do this use ImageCorrespondingPoints and then pass the corresponding points to FindGeometricTransform .
Posted 8 years ago
 It might be worth mentioning that ImageKeypoints provided by Mathematica uses a SURF ( http://en.wikipedia.org/wiki/SURF ) detector to find keypoints. SURF is development partially based on SIFT, which authors of the referred paper have obviously used. ImageCorrespondingPoints and ImageFeatureTrack use SURF data from ImageKeypoints to do their job.
Posted 7 years ago
 Jari,It is true that ImageKeypoints uses SURF, but ImageFeatureTrack does not. Conceptually, ImageFeatureTrack uses corners.Matthias
Posted 7 years ago
Posted 7 years ago
 Marco, this is such a simple but neat trick! I tried (naively) a bit different approach with resizing image, but that seems to pickup on sharper edges only, I think:img = Import["http://community.wolfram.com/c/portal/getImageAttachment?filename=Unknown.jpeg&userId=48754"];id = ImageDimensions[img];ImageSubtract[#, ImageResize[ImageResize[#, id/5], id]] &@img
Posted 7 years ago
 Dear Sam,yes, that can happen. The method I was adapting is called "Error Level Analysis" (ELA). I only used a very naive implementation. Please have a look at this website:http://fotoforensics.com/tutorial-ela.phpI can also provide references to publications if anyone is interested.In the tutorial it says:Scaling a picture smaller can boost high-contrast edges, making them brighter under ELA. Similarly, saving a JPEG with an Adobe product will automatically sharpen high-contrast edges and textures, making them appear much brighter than low-texture surfaces.This might explain your observation; in fact, your image provides a beautiful illustration of that effect.There are many obvious improvements, which are very easy to implement in Mathematica. PS: There is, by the way, a very similar and simple trick, which one can use to estimate the complexity of time series based on compression rates. Using an algorithm such as gzip one can very crudely estimate the so called algorithmic complexity. It is very easy and fast to study the parameter space of a dynamical system and look e.g. for chaotic regions.