In an earlier post (Photo forensics from reflections), I described how to verify if reflections in a mirror, window, or any flat glossy surface were physically plausible. This simple image forensic technique relies on the observation that lines that connect points in the scene to their reflections should all intersect at a single point. Shown below is a beautiful photo in which this type of analysis is not effective since the constraint lines are nearly parallel to one another, making the estimate of their intersection unreliable. There is, however, another geometric property of reflections that can be used to verify the validity of the reflection.
In the figure below I have drawn, in red, three (parallel) vertical lines connecting points in the scene to their corresponding reflection. The red dot on each line is drawn at exactly the middle of each vertical line. The cyan horizontal line is drawn for point of reference. Notice that the mid-points of these lines are at different heights in the image, with the mid-point for the farthest location in the image being higher than the mid-point for the nearest location. In fact, there is a direct relationship between the height of the mid-point and the distance of the object to the camera — distant objects will always be higher in the image than nearby objects (see Exposing Photo Manipualtion with Inconsistent Reflections for complete details). Here you can see that the location of the mid-points are consistent with the scene.
Shown below is a fake image in which I created the reflection by copying, flipping and slightly darkening the top half of the image. I have again drawn three red vertical lines connecting points in the scene to their reflection. This time, the mid-point of each line (red dots) are all at the same height in the image — a tell-tale sign that the reflection is a fake.
Although a close inspection will reveal differences between the fake and authentic reflection, the fake reflection shown above is visually convincing. Because the constraint lines are parallel it is impossible to use them to distinguish between a real and fake reflection. The mid-point of each constraint line, however, can be used to validate the reflection. Creating a reflection as I have done is quite easy, but creating one that respects this additional geometric constraint is more difficult.