2006.12.05 15:52 "[Tiff] Grayscale, or is it?", by Joris Van Damme

2006.12.05 15:52 "[Tiff] Grayscale, or is it?", by Joris Van Damme

Folks,

I'm forever having trouble with grayscale in TIFF, except that now I really need to resolve it and make a final descision.

The TIFF spec, in "Section 4: Grayscale images" does not contain a good definition of grayscale. However, on page 73, "Comments for TIFF writers", in a discussion of gamma, it says "Be aware that the PhotometricInterpretation value of 0 or 1 (grayscale) implies linear data because no gamma is specified. The PhotometricInterpretation value of 2 (RGB data) specifies the NTSC gamma of 2.2 as a default."

Now, what is linear data? Linear to what? What is grayscale, for that matter?

I see three possibilities.

  1. Greyscale is R=G=B. I think this interpretation is consistent with most common practice. It is also consistent with the LibTiff RGBA interface implementation, in that this just sets R, G, and B, to the greyscale read from the TIFF. It is however a clear violation of the above quoted remark on gamma.
  2. Greyscale is power(R=G=B,1/2.2). In other words, we keep the intuitive notion of greyscale based on the RGB space that itself is not very strictly defined (but we could and can assume it to mean sRGB that has a better definition), but we compensate gamme. This is consistent with the above quoted remark on gamma. It is, however, likely not very common to do this, thus resulting in an unintended interpretation of most image data out there.
  3. Greyscale is best defined on the basis of a more scientific color space, and CIE L*a*b* is most suitable. In other words, MinIsBlack greyscale is L*/100.0 (encoded in 8bit integer format, MinIsBlack grayscale equals L*), MinIsWhite greyscale is 1.0-L*/100 (encoded in 8bit integer format, MinIsWhite greyscale equals 255-L*).
  4. Sofar, I've been going with option 3. But that may not have been a good choice...
  5. True, people who want to write unambigious greyscale could write Photometric CIELAB or ICCLAB with SamplesPerPixel-ExtraSamples==1. That should unambigiously communicate L* greyscale. But this observation does not solve my problem as to how to interpret MinIsBlack and MinIsWhite greyscale.
  6. Anyone has any advice on this matter?

Best regards,

Joris Van Damme
info@awaresystems.be
http://www.awaresystems.be/
Download your free TIFF tag viewer for windows here:
http://www.awaresystems.be/imaging/tiff/astifftagviewer.html