jemenake writes: A friend of mine teaches electronic media (Photoshop, Premiere, etc.) at a local high-school. Right now, they're doing Photoshop, and each chapter in the book starts with an "end result" file which shows what they're going to construct in that chapter, and then, given the basic graphical assets (background textures, photos, etc.), the students need to duplicate the same look in the final-result file.

The problem, of course, is that some students just grab the final-result file and rename it and turn it in. Some are a little less brazen and they rename a few layers, maybe alter the colors on a few images, etc. So, it becomes time-consuming for her to open each file alongside the final-result file to see if it's "too perfect".

When I first discovered that she was doing this, my first reaction was that there's got to be some automated way of catching the cheaters. Of course, my first idea of just doing MD5 hashes of each file won't work, since most kids alter the file a little bit.

A second idea I had was to alter the final-result file in a way that isn't obvious, like removing someone's shoelace, mis-spelling a word in the background, or removing/adding some dust-specks. (I know map publishers and music transcribers use this trick to catch copiers). But this still requires that she look for the alteration in each file. I'd think that Photoshop, after all these years, would have some kind of scripting language which also supports some digital watermarking, but I've just never dabbled in that realm.

And, of course, I guess another solution would be for her to not provide the end-result file in Photoshop format, but to export it as a flat image. But I'm still intrigued by the notion of being able to "fuzzily" compare two photoshop files or images to find the ones which are too similar in certain aspects (color histograms, where the edges are, level of noise, whatever).