Copy-move / clone detection
Was part of this photo cloned to hide or duplicate something?
The clone-stamp and healing tools copy one part of a picture over another, to duplicate an object or paint something out. Because the copied patch comes from the same photo, it is an almost exact match for its source somewhere else in the frame. This finds those matching pairs and, crucially, keeps only the ones that all move by the same distance and direction, the signature of a real copied region rather than ordinary repeated texture. Read it as a lead, not proof.
Runs entirely in your browser. Your image is never uploaded or stored.
Each cloned patch is drawn in a pair of colours: an orange block and the cyan block it was copied to (or from). If you see matching orange and cyan shapes in different places, that pair of regions is nearly identical and offset by the same amount, which is what a clone-stamp edit leaves behind. A photo with a genuinely repeated pattern (a brick wall, a row of windows) can also light up, so read the shapes before concluding.
How it finds a clone
The picture is cut into small overlapping blocks, and each block is boiled down to a short fingerprint of its low-frequency detail, quantized so that a lightly retouched or re-compressed copy still fingerprints the same. Sorting those fingerprints puts near-identical blocks side by side, which is a fast way to find every pair of blocks that look alike. On its own that produces a lot of noise, because textures repeat. The decisive step, from Fridrich, Soukal and Lukas, is to look at the shift between each matching pair and keep only the shifts that show up many times over. A real cloned region is dozens of neighbouring blocks all copied by the same offset, so they all share one shift vector; coincidental matches scatter across many different shifts and drop out.
How to read the result
| What you see | What it can mean |
|---|---|
| A clear orange shape and a matching cyan shape elsewhere | A region was copied from one place to another, consistent with a clone-stamp edit |
| Nothing highlighted | No large region was copied within the frame (or the copy was rotated, scaled or heavily blended) |
| Scattered highlights over a repeating texture | Genuine repetition, brickwork, foliage, windows, not necessarily an edit |
What fools it
This looks for a patch copied straight across the frame. If the pasted copy was rotated, resized or flipped before it was dropped in, the fingerprints no longer match and it slips through, which is a known limit of the plain block-matching method. Very smooth areas like clear sky are skipped on purpose, because every flat block matches every other and would swamp the result. And a genuine repeated pattern can trip it, so a highlight is a place to look closely, not a verdict. Pair it with the photo edit check, the JPEG Ghost tool and the metadata viewer before drawing a conclusion.
Sources
- Fridrich, J., Soukal, D. & Lukas, J. (2003). Detection of Copy-Move Forgery in Digital Images. Digital Forensic Research Workshop (DFRWS) 2003.