7
\$\begingroup\$

Is it possible to identify images (without exif data) and link them to the exact same camera? If so, I'd like some software recommendations to get the job done.

I have two photos that I'd like to compare whether they were taken with the same camera or not. They both seem to lack EXIF data but I am sure I've heard of other hidden fingerprints to be found within the images.

For instance, sensor noise should be rather consistent if the photos were taken with the same camera, pretty much like firing a handgun and the bullet gets unique marks. I've also heard that the camera manufacturers sometimes add a hidden watermark which can be read with some special software.

\$\endgroup\$
3
  • 5
    \$\begingroup\$ It sounds like you've been watching too much CSI :) \$\endgroup\$
    – Flimzy
    Commented Oct 30, 2011 at 1:48
  • \$\begingroup\$ What format are the images? If they're jpeg, how compressed are they? Have they been downscaled? \$\endgroup\$
    – Evan Krall
    Commented Oct 30, 2011 at 6:29
  • 3
    \$\begingroup\$ @Flimzy This technology exists. I should know - I helped prototype it when working for the US Air Force, using research out of SUNY Binghamton. My answer cites the research that went into the work that we did. \$\endgroup\$ Commented Oct 30, 2011 at 13:37

5 Answers 5

10
+100
\$\begingroup\$

For instance, sensor noise should be rather consistent if the photos were taken with the same camera, pretty much like firing a handgun and the bullet gets unique marks.

Bingo - that's right on the money.

There are two aspects research aspects that I'm familiar with when I worked in this area in 2006-2007. The first was the identification of the make and model of the camera and the second was identifying if a specific camera took a specific image.

Here's a few relevant links:

Given a large sample of images from multiple cameras, I can produce an average noise pattern that exists on a given make and model. When provided with a single image, I can use this average noise pattern and the single image to, with high confidence, tell you the make and model of a given camera.

Given a sample of images from a single camera, I can compare a single image to the noise pattern from this sample of images and tell you if the camera that produced the large sample also produced the single image.

However, the algorithms and techniques to do this are patented. I believe US Patent 7,616,237 is relevant to your particular question. It cites the work of Jessica Fridrich, Miroslav Goljan, and Jan Lukas and also provides a number of research papers on the subject. Unfortunately, I'm not familiar with any publicly available software (commercial or otherwise) that implements this technique. The work that I was doing was on behalf of the US Department of Defense, who supported the research that went into this patent.

\$\endgroup\$
7
  • \$\begingroup\$ How is this affected by cameras with removable lenses? If I have two cameras and two lenses, and give you 1000 shots from each camera, but the lenses are swapped back and forth randomly, how accurate will the results be? (Assume the lenses are identical models, so focal length, distortion, etc, won't be dead give-aways) \$\endgroup\$
    – Flimzy
    Commented Oct 31, 2011 at 20:04
  • 1
    \$\begingroup\$ @Flimzy I don't believe it's significant. The noise pattern is produced by the electronics that sit behind the lense, the CCD or the CMOS sensor and all of the other components that carry charges. So even if you had random lenses of various focal length, distortion, and so on, the noise pattern that exists and is captured by the sensor in the n*m pixel output image should be similar, if not the same. \$\endgroup\$ Commented Nov 2, 2011 at 13:04
  • \$\begingroup\$ Does this mean a dirty/scratched/defective lense won't affect this process? I suppose a lense would have to be very dirty or scratched to do more than just make a photo blury in most cases, anyway, eh? \$\endgroup\$
    – Flimzy
    Commented Nov 2, 2011 at 15:34
  • \$\begingroup\$ @Flimzy It has nothing to do with dirty or scratched lenses or blurry images. Everything occurs on the sensor-level. There are environmental factors which do cause differences in the noise pattern, which is why you need a fairly large data set to get the noise that's consistant across images. But you can have the most blurry, scratched, dirty lenses and still identify the camera, as long as the same sensors were used. \$\endgroup\$ Commented Nov 2, 2011 at 16:20
  • \$\begingroup\$ Very interesting. Thanks for the informative post, and for humoring me and my questions :) \$\endgroup\$
    – Flimzy
    Commented Nov 2, 2011 at 16:23
4
\$\begingroup\$

If the sensor has hot pixels and these pixels are not removed from the photos, then you might identify the camera.

\$\endgroup\$
1
  • \$\begingroup\$ Same goes for sensor dust, if the sensor has not been cleaned between the shots. \$\endgroup\$
    – Imre
    Commented Oct 30, 2011 at 12:10
4
\$\begingroup\$

The short answer

Yes, it is possible to match a photo to the discrete camera it was taken with (without metadata) and it is also pretty reliable. The technique is readily available in a few software products, one of those is Amped Authenticate, produced by Amped Software (disclaimer: I am the company CEO and Founder).

The basic idea

The basic idea is that every single device leaves a different “noise fingerprint” on each photo it produces. This component is called PRNU (Photo Response Non-Uniformity) and it has been widely studied in literature. It has been shown to be:

  • constant over time
  • constant over temperature -independent of other camera settings (exposure, focus, etc…)
  • fairly robust to recompression (up around JPEG quality 5-60%)
  • fairly robust to intensity and color adjustments (contrast, brightness…)
  • fairly robust to local modifications (i.e. if a part of the image has been tampered, - the picture as a whole is still recognized as coming from a specific camera)

However, it does not work properly in these situations:

  • if the image has been cropped or has digital zoom, since it would take only a part of the sensor and not its whole area (this could be solved, but then it wouldn’t be robust to resize)
  • for very strong enhancements
  • for very dark or very bright images, since the noise is not present in these areas)

How does it work

To extract the PRNU of the image you need to basically extract a specific component of the noise. You can do it denoising the image and subtracting to it the original image. In literature it is recommended to use Wavelet filters, but even with simpler and faster filters you can get similar results.

Practically speaking the procedure is done in the following way:

  1. You need to create the Camera Reference Pattern (CRP): this is done extracting the PRNU from some images of your test device. For the best results it is recommended to use about 30-50 pictures with as little detail as possible and not too dark or too white and make a pixel by pixel average. Let’s call these Reference Pictures. If you have the camera, you can take out of focus pictures of a wall or of the sky. If you don’t have the camera, you can take general pictures, but you’ll probably need more of them to filter out details with averaging.

  2. Then you can extract the PRNU from the picture under analysis and calculate the correlation with the CRP. The higher the correlation, the higher the probability that the picture comes from the same camera.

  3. You can automatically classify the pictures calculating a threshold for the correlation: pictures with a correlation higher than the threshold will have a high probability of coming from the camera, otherwise they probably come from a different device.

The threshold can be obtained calculating the correlation for:

  • pictures coming from the same device (positive)
  • pictures coming from another camera model (negative)
  • pictures coming from another exemplar of the same camera model (negative)

enter image description here

In general it’s likely that the positive sets and the negative sets will not be perfectly separated, so you must set a desired balance between false positives and false negative that you want to obtain from case to case.

If used appropriately the method has been shown to be very reliable, even though it has been shown that it is possible to find two exemplars of the same model with very similar PRNU. This may happen, for example, if the sensor of the two devices was produced from the same silicon wafer. It’s a remote possibility, but still a possibility.

As an example, this image below is the PRNU extracted from an image without any significant content (out of focus picture of a wall).

Tampering

The PRNU correlation can also be applied locally to detect tampering on the images. The idea is to calculate the PRNU on a sliding window of n x n pixels across the image to create a map of correlation. Areas with low correlation will have a high probability of having been subject to tampering.

The image below represents an example of a picture being analyzed.

enter image description here

Below is the result of the block wise correlation of CRP with the PRNU extracted from the image. The white area represents the areas most likely to be tampered, where the noise is inconsistent. In the middle of the desk there is a clear sign of tampering.

enter image description here

In fact, this is the original picture, from where a gun has been removed.

enter image description here

References

There are countless papers which analyze the PRNU by different points of view, but these are probably the most important:

Summary

The technology to distinguish pictures coming from different cameras, even if they are the same make and model, exists and is pretty established in the academic and forensic community. There are some software products available on the market which allow you to do it with relative ease and also evaluate the authenticity of the image with a similar process.

\$\endgroup\$
2
\$\begingroup\$

In your situation, you pretty much cannot. Noise is not entirely random but has a random component to it. To isolate the fingerprint of the camera, you need to profile the camera over a series of shots. Having just two shots, there is not much you can do.

Some camera makers add a signature but that goes in the metadata, so if the EXIF was stripped then your are out of luck on that front. Plus, that is designed to determine if an image came from a camera, not which camera it came from.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Also if the images are compressed (as most are), I suspect the vast majority of any sensor and/or lens noise will be distorted beyond anything useful. \$\endgroup\$
    – Flimzy
    Commented Oct 30, 2011 at 1:48
  • \$\begingroup\$ As I understand it, the "sensor noise fingerprint" technique is surprisingly robust against compression and other lossy image edits. \$\endgroup\$
    – mattdm
    Commented Oct 31, 2011 at 3:02
0
\$\begingroup\$

This is an interesting question. While I don't think its possible with 100% accuracy, you should be able to determine, with a sufficient number of source photos, from which type of camera it came from. This is given certain noise distributions, certain camera internal properties (which can be determined from just raw photo data), etc... But there is no known software that I know of to do this. Realistically speaking though at this point you should just consider it currently not possible.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.