Given an image - such as a simple JPEG of a person or a landscape - is it possible to produce an algorithm that extracts certain visual features from the input image to produce a unique fingerprints of the image.
Think of this as a hash function (such as MD5) that receives an image as input and produces a digest. However in our scenario the digest/hashing result is not from the byte content but rather form the visual representation of the image.
An important feature of the visual fingerprint generation is its consistency for different variation of the image. For example the input image could be resized or saved in a different format (e.g., BMP) or with a different compression rate (in the case of JPEG), or with a reduce set of colours (in the case of GIF).
Is such an algorithm possible to develop? If so what variations can it cover? and how accurate such algorithm can become?