Re: Who creates the hash?
Being pedantic, a hash is simply a function that maps an arbitrarily length of data onto a fixed length of data. The definition does not have any requirements around changing the hash with data change. A hash function could simply map all data to the value "1" and it's still technically a hash, just a terrible one.
It just so happens that most hash function we think about in IT are designed to change when a single bit changes.
As for how this specific hash function, Microsoft Research's PhonoDNA is the hash function that's used for this. It is apparently resistant to colour changes, resizing etc. how it works is practice is way over my head https://en.wikipedia.org/wiki/PhotoDNA