One of the issues with version tracking is to come up with a unique ID for each image.
The ideal ID is one that can be reconstructed from the image file, doesn't require editing the master file, and is meaningful to people -- not just alphabet soup.
It also helps if close (however you define it) files have close id's. Hashes don't have this property. Change 1 bit of the original get a radically different hash.
So far the best one I've come up with is a concatenation of camera model, camera serial number, timestamp with hundredths.
This tells the user which camera and when it was shot. Nearby shots in time sequence will have IDs that are similar. It's resistant against 1 bit errors in the image itself, which I see as the main problem in using a digest.
Shuttercount could be used instead of date stamp, and could be more useful for forensic work -- where you want to know that you have all the images taken during a session.
Some Makernotes, I've heard are only somewhat writable -- editing them works as long as you don't change the length.
But also, some cameras have the ability to mark their raw files with a copyright notice. If you did this something like "Copyright 2018 J. Random Shutterbug -- Image ID Nikon_D7100-8003412 XXXXXXXXXXXXXXXXXXXXX" where the field of X's is long enough to revise later with an ID.
In this way users can either choose to never write to their raw files, at the expense of having to dig harder for the ID, or write only one time to their raw files to place the ID.
IPTC has a field for this, badly named Image Description. Is this the best field to use?
***
One of the points of version tracking is tackle the whole issue of derived images.
E.g. I shoot in both raw and jpeg. I'd like the jpeg file to show as being 'the same' picture as the raw file, and derived from it.
E.g. I produce 6 different resolution versions of a master for use on a website. Later I want to redo these for different devices. Go ahead. Find the original. A customer sends you a watermarked image and asks for version of the original at higher resoluiton. If the primary ID is the prefix for the version number, finding the original is a piece of cake.
With a decent version tracking system in place then changing a keyword on a master image can be propagated to the derived versions. Renaming an image or folder is now recoverable. Database or XML file stores the ID as part of the metadata.
Some forms of metadata are problematic: I'm not aware of a standard format for face tags. One description used coordinates of two corners of a box enclosing the face, with the coordinates in percents of the linear pixel dimensions of the image. This is resistant to resizing, but I would expect it to fail for cropping, rotation, flipping. Presumably the software that does the image mods would have to correct the face tags, applying the appropriate transform.
Some cameras are weak on certain metadata. Apple iPhones (at least from 4 through 6) don't include iphone serial number in the metadata, nor do they have a shuttercount. This could be added on ingest.
Comments?
Best fields to use? Some apps strip metadata they don't recognize, or mangle it. The ideal ID is put in a place where it survives external editing. Store it multiple places?
Do you see a need in your work with images for tracking derived images?
I can't speak to the majority of your post, as it goes deeper into tracking images than I ever plan on doing, but I do have a few comments.
Quote from: sgbotsford on July 14, 2018, 12:05:44 PM
IPTC has a field for this, badly named Image Description. Is this the best field to use?
Do you mean
EXIF:ImageDescription? IPTC doesn't have an a field called
ImageDescription, though it does have
Caption-Abstract. I believe that the Metadata Working Group suggests that that
EXIF:ImageDescription,
IPTC:Caption-Abstract,
XMP:Description to be synced, so I wouldn't suggest it as a place for a unique ID.
QuoteSome forms of metadata are problematic: I'm not aware of a standard format for face tags.
...
This is resistant to resizing, but I would expect it to fail for cropping, rotation, flipping.
I only know of two ways to record face tags. The MWG format (XMP-mwg-rs (https://exiftool.org/TagNames/MWG.html#Regions) group) and the Microsoft format (XMP-MP (https://exiftool.org/TagNames/Microsoft.html#MP) group). The Microsoft format, IMO, is an inferior format. The MWG format is more robust and if I recall correctly, takes into account the rotation of the image. The region is always supposed to be in relation to the top left corner of the image as specified by the
EXIF:Orientation tag. If you read the MWG Guidelines for Handling Image Metadata pdf (http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf#page=51) on the subject (pages 51-56), they go into depth about the issue. It addresses rotation, resizing, and cropping, but not flipping.
QuotePresumably the software that does the image mods would have to correct the face tags, applying the appropriate transform.
It should, but I honestly doubt most software will do so. I did create a config file to rotate regions if they're not correct, which can be found in this post (https://exiftool.org/forum/index.php/topic,6354.msg32394.html#msg32394). I used it a few times without problems, but never tested it intensely, checking for edge cases. I never thought about flipping the regions either. I might have to revisit it work with that, just for completeness.
QuoteBest fields to use? Some apps strip metadata they don't recognize, or mangle it. The ideal ID is put in a place where it survives external editing. Store it multiple places?
This is where things might fall apart, especially when it comes to social media websites, which often strip all metadata out of privacy concerns. I really have no suggestions here as it's hard to tell what apps will strip what metadata.