RE: TIFF-FX ImageBaseColor's photometry

"McIntyre, Lloyd" <[email protected]>
Newsgroups gmane.ietf.fax
Message-ID <[email protected]>
Dale,
We have reconsidered and accepted your latest proposal to use a new field in
accommodating use of the image color encoding parameters rather than only
ITULAB in the interpretation of ImageBaseColor. 

Our decision was base on:
1. Since there is currently no mechanism to enable ICC profiles in TIFF-FX,
your concern for the impact of profiles doesn't currently come into play.
However, we'd like to make sure that we don't preclude it's future use.

2. In the current use of TIFF-FX, if ICC profiles *were* used, then it would
likely be in one of two situations:
  a. A closed environment, where an input device is preparing a file for a
known output device.  In this case, both devices not only need to know how
to deal with ICC profiles, but they should make sure that they enable the
full use of the profiles.  In this case, we believe the reader and writer
should have full access to algorithms that can apply the profiles.  The end
result is that profiles shouldn't be an inhibitor.
  b. An open environment.  In this case the preference might be to maintain
a device-independent color space.  Otherwise, the profiles ought to be dealt
with correctly, and ought to be well understood (algorithms available).

3. In the remote but likely case that someone gets a file with the image
data coupled to an ICC profile, and the ImageBaseColor is not, there's the
risk that the image data will contrast with the "default color" of the
ImageBaseColor, notably when compared to the original.  The contrast is
relative, such that if the default and image data had the same wrong ICC
profile applied, the contrast should not stand out.  However, with the
current ImageBaseColor approach, the image color will be perceptibly
different from that of the adjoining color derived from the ImageBaseColor -
this becomes the most important factor.

Given the expectation that ICC profiles may one day work themselves into
TIFF-FX, we feel it prudent to make provisions in the use of ImageBaseColor
for consistent color data.  We are proposing the following new field, to be
used in place of ImageBaseColor, when using TIFF-FX extensions (any file
containing the TIFF-FXExtension field).

The new field, IFDBaseColor, is defined within a new subsection "E1.2.1.3.2
New fields required for designated profiles" as below.

Regards,
Lloyd

E1.2.1.3.2 New fields required for designated profiles

IFDBaseColor Field
   This field applies to Profiles M and T, however it is only
   recommended for Profile T. The IFDBaseColor field is introduced as a
   duplication of ImageBaseColor, which is tied to the ITU L*a*b* color
   space, as a way to keep the color space of the image data in sync
   with that of the 0-byte strips.  This should not be a significant
   factor when device-independent color data is present, but may be a
   factor should device-dependent image data be considered, coupled with
   the device-independent color value stored in ImageBaseColor.  More
   notably, if ICC Profiles were to be used, it is possible that
   misinterpretation of the image data may cause the ImageBaseColor to
   contrast.  Keeping the color interpretation in sync would avoid
   possible contrasting.  Furthermore, color space conversion
   differences to and from ITU L*a*b* and the intended color space could
   be avoided.

   In keeping with the constraint that this extension set requires no
   modification of existing TIFF-FX implementations, this field SHALL be
   used only when the TIFF-FXExtensions field is present, and SHOULD
   exist along with the ImageBaseColor field. When both fields are
   present, the IFDBaseColor field takes precedence, and it's at the
   discretion of the writer to determine the color values that will go
   into the ImageBaseColor, knowing that a base TIFF-FX reader will see
   only the ImageBaseColor. If extensions are used to the point that a
   base TIFF-FX reader may not be able to reasonably read the image
   anyway, the ImageBaseColor MAY be omitted.

IFDBaseColor(34700).                                       CHAR or SHORT
   Count = SamplesPerPixel
   In areas of an image layer where no image data is available (i.e.
   where no strips are defined, or where the StripByteCounts entry for a
   given strip is 0), the color specified by IFDBaseColor SHALL be used,
   and SHOULD exist along with the ImageBaseColor field.  This field is
   used in a similar manner to ImageBaseColor, but is tied to the color
   characteristics of the IFD, not ITU L*a*b*.

   The color specified by IFDBaseColor SHALL be described by the color
   characteristics of the IFD: PhotometricInterpretation,
   SamplesPerPixel, BitsPerSample and, depending on the value of
   PhotometricInterpretation, all other fields of the IFD that affect
   the interpretation of color samples. For example, if the
   PhotometricInterpretation is ITU L*A*B*, then the color is further
   described by the gamut defined in the Decode field, if any, and by
   the Indexed field where applicable. This insures that the
   IFDBaseColor is represented in exactly the same way as any image
   data that is represented.

   Note that there is currently no provision for color profile data in
   TIFF-FX.

   Each color component may be stored in a CHAR array, if BitsPerSample
   is 8 or less.  If BitsPerSample is less than that of the IFDBaseColor
   array element (8 for CHAR and 16 for SHORT), then the 'BitsPerSample'
   least-significant bits are used to hold the color component(s).  For
   example, if BitsPerSample is 4, then the lower 4 bits in each CHAR or
   SHORT will hold the color components.

   Other than color designation, IFDBaseColor is used as described by
   ImageBaseColor.
   To define a child IFD specifying a IFDBaseColor but containing no
   encoded image data, create an IFD with PhotometricInterpretation,
   SamplesPerPixel, BitsPerSample and any other field(s) required to
   specify color Characteristics. The IFD will also contain the
   following settings.

      ImageLayer[0]:             specified layer
      ImageLayer[1]:             less than any other IFDs corresponding
                                 to the same layer and strip.
      RowsPerStrip:              strip height
      ImageLength:               strip height
      ImageWidth:                full image width
      Compression:               1 (none)
      X/YResolution:             that of the Primary IFD
      XPosition:                 0
      YPosition:                 the offset from the top of the page to
                                 the beginning of the strip in the 
                                 resolution units of inches
      StripByteCounts:           single 0 value
      StripOffsets:              single 0 entry
      NewSubFileType:            bit 4 set   (MRC)
      ImageBaseColor:            desired color

   For the Foreground layer image(s), the default value for the
   IFDBaseColor field is black. For other cases, including the
   Background layer image, the default value is white.

> -----Original Message-----
> From: Dale Knutsen [mailto:[email protected]]
> Sent: Thursday, August 02, 2001 5:24 AM
> To: [email protected]; [email protected]
> Cc: 'IETF fax WG'
> Subject: RE: TIFF-FX ImageBaseColor's photometry
> 
> 
> Lloyd,
> 
> Thanks for your thoughtful reply. I understand the
> requirement for backward compatibility. And in that light I
> offer the following proposal, which might be found to meet
> all concerns.
> 
> In TIFF-FX Extension Set 1, define a new field, I'll call it
> NewImageBaseColor, that is the same as ImageBaseColor except
> that the photometry and interpretation of the
> NewImageBaseColor field data is specified to be identical to
> that of the containing IFD (including all applicable fields
> which modify the representation and photometric
> interpretation of color sample data).
> 
> For a writer of a TIFF-FX Extension Set 1 data set who
> wishes to use NewImageBaseColor, to conform to the base
> TIFF-FX standard the writer will include the standard
> ImageBaseColor field as well as the NewImageBaseColor field.
> This is no benefit to the writer, but it is extremely simple
> and easy to do, and so adds negligible costs to the writer.
> 
> The benefit of the proposed change accrues to the reader of a
> TIFF-FX Extension Set 1 data set, who may use the following
> algorithm when dealing with a strip that has a strip byte
> count of zero:
> 
>    IF NewImageBaseColor is present, then use its content to
>    render the color in the color space of the image of which
>    the strip is a part. This is simple, accurate, and very
>    efficient.
> 
>    ELSE Use the ImageBaseColor field. If the color space of
>    the image of which the strip is a part has photometry
>    other than ITULAB, the reader must convert the
>    ImageBaseColor data to the required output photometry.
> 
> 
> As you know, I claim that this conversion (of ITULAB to an
> arbitrary photometry) is onerous and problematical in many
> system environments. Nevertheless, the addition of
> NewImageBaseColor provides to readers of a TIFF-FX Extension
> Set 1 data set an efficient, accurate, and simple way of
> rendering fill colors in cases where the writer has utilized
> NewImageBaseColor, while at the same time not significantly
> increasing the complexity of software required to support
> both TIFF-FX Extension Set 1 as well as the base TIFF-FX
> standard.
> 
>     Dale Knutsen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.