How to detect whether the image is modified or not?
Assume that someone have an image(.JPG or .PNG) of a white paper which has black text in it. Someone modified this image(changed letters/numbers by brush) with an advanced photo editor(Photoshop, GIMP, etc.) and send it to us.
Is there any way to detect this type of modification in our end by code?
I开发者_如何学JAVA read that there are some algorithms used on cameras and output images are rendered with a series of operations/patterns. When someone touch the image by a image editor, there needs to be some incorrectness on the patterns which are created by the original camera. Is this true?
Any link, code or idea will be appreciative. cas sakal
There is in fact a long history of research in that aspect. For example, at pixel level, the part that one modifies might not agree with the neighboring pixels (under some assumptions of course, edges never agree with neighboring pixels, but a user-imposed blurring region does not agree with the rest of the picture, if you duplicate regions in an image, two regions would have unbelievably high similarity scores).
Of course, there are a lot of countermeasures(technical/logical) that would defeat existing forgery detection methods.
I'll advice you to google "digital image forgery"
Just a thought, though I have never tried it.
- Obtain the Image Histogram at a predefined scale and store the histogram bin into the EXIF
- For checking the Image, scale the Image to the predefined scale and obtain its histogram
- From the EXIF histogram bins compare with histogram bins obtained in (2)
Kind of simple, I guess ;-)
No, this is not possible. You may be able to come up with something that will work 99% of the time, but I guarantee if it is important enough, someone will find a countermeasure.
For example, they could alter the picture in photoshop, print it out and take a new photo, then send that to you. Good luck detecting that digital alteration.
精彩评论