[Openicc] XICC specification draft
Chris Murphy
lists at colorremedies.com
Tue Jun 28 17:03:02 EST 2005
On Jun 27, 2005, at 11:23 PM, Craig Ringer wrote:
> Nonetheless, even if both displays are on the
> same card it is not at all safe to assume identical colour.
I agree. And anyone with dual displays, I feel, is automatically in a
more professional category rather than just average Joe consumer.
> I tend to agree. The discussion of using the composite manager for
> colour correction is very interesting.
[Nitpick warning!] The term color correction in this context doesn't
really bug me, I know what you mean. But the term implies something
isn't right with the color now and it needs to be corrected so it is
right. Traditionally it's the generic term for enhancing images.
Display compensation originally appeared as a term in Adobe Photoshop
5.x, but hasn't appeared in subsequent versions, or any other
applications that I'm aware of and now is used for the kind of
conversion we're talking about - that of color space conversion to a
display profile prior to painting to the display itself.
> My worry is that if the X server takes, eg, sRGB and transforms it to
> the output device colour spaces, many apps that know about the colour
> profiles of their inputs are going to have to convert once from the
> input colour space to sRGB, then let the X server convert to the
> output
> device's space. My puny knowledge of colour management leads me to
> worry
> about gamut compression and loss of precision due to the double
> conversion involved here. Is this likely to be a serious issue in the
> real world?
If they are 16-bits/channel conversions no, at least not until we
starting seeing compositing being done on HDR imagery which will
absolutely become common place. Hard to say when but there is already
one single capture camera that captures HDR (values brighter than
100% and less than 0%, fully reversible non-destructive edits).
Gamut compression between matrix based profiles is up to the CMM, not
the profiles. If the rendering intent is RelCol, gamut compression
should not occur.
But there are three options I'm proposing, should be serviced:
1. Application is color managed, and can do display compensation
already. Therefore it would submit drawing commands as explicitly
device dependent to avoid further conversion; this could be done by
tagging the data with the current display profile as source. Since
the destination in display compensation is also the display profile,
source=destination=null transform. Or it could be merely tagged as
"intentionally device dependent."
2. Application is not color managed and simply sends what it things
are device dependent drawing commands using today's APIs. An updating
compositer/xserver simply says "aha, ignorant application, I will
assume these values are tagged sRGB for the source profile and
perform display compensation using the destination profile." Anyone
who wants to prevent this from happening and doesn't care about
display compensation can simply set the display profile to sRGB and
again get a null transform.
3. application is color managed, but wants to opt for normalizing to
some larger gamut space (a system compositing space perhaps), so that
it doesn't have to negotiate display compensation itself, especially
for multiple displays, rather allowing the xserver to do this. But
the conversion still needs to be to a space that has a sufficiently
wide gamut in order to not cause clipping in the event the display
being used is a wide gamut display.
> The former gives apps maximum control and makes things easier for
> developers of portable applications. That's evidently important - look
> at how Photoshop and friends largely ignore the OS's ColourSync CMM on
> Mac OS in favour of their own.
They do this primarily for cross platform reasons because the Apple
CMM isn't on Windows but they want to ensure the same conversions
occurs when using the same profile sequence, regardless of the
platform. Also, this is merely default. You can change the CMM on
both platforms. Adobe also does at least 20-bits/channel
transformations (except for display compensation, not sure what the
precision is there.)
> It forces more complexity into the app,
> but for the near future most apps will need built-in CMS support to
> handle other platforms and older displays without native CM support
> anyway. Centralised configuration is harder, but can be handled
> through
> approaches like the XICC atom, XSettings, etc. On the upside, the X
> server doesn't need to know about non-RGB colour spaces or some of the
> weirder types of profile used for some inputs. Network transfer sizes
> would also be kept down, both for profiles and input data.
I realize the prospect of doing this across the various incarnations
of "unix" et al, that are out there lies somewhere between daunting
and impossible. But the ones that can't provide this "for free" for
all applications are going to be relegated to a very questionable
usability as wide gamut displays start being used on them, and
regular imagery (uncompensated) looks like oversaturated crap. It
will inherently limit the platform, if it can't do display compensation.
> On the downside, potentially large input colour profiles have to be
> sent
> across the wire, as must large input colour data (think 16 bit per
> channel CMYK) and the X server / composite manager must know about a
> variety of colour spaces solely to support transforms to device
> colour.
I would say any application that handles color models other than RGB
would be required to use option #3 above - they normalize to a wide
gamut RGB space and then submit drawing commands, with the color
space tag used. Then only RGB data is being sent, and only a single
matrix based profile is sent.
> I don't know the "right answer" if there is one. Does anybody here
> know
> of real world examples of either of the two approaches outlined above
> that can be looked at? The only one I can think of is OS CMS
> implementations, eg ColourSync on Mac OS X, but that doesn't really
> map
> well onto either of the above.
OS X isn't really doing full display compensation. For some kinds of
files it assumes Generic RGB as source for untagged content, for most
kinds of data it assumes it's display RGB and does not compensation
at all. And in those cases, wide gamut displays don't display files
reasonably at all.
Chris Murphy
Color Remedies (TM)
www.colorremedies.com/realworldcolor
---------------------------------------------------------
Co-author "Real World Color Management, 2nd Ed"
Published by PeachPit Press (ISBN 0-321-26722-2)
More information about the openicc
mailing list