Yahoo Groups archive

Datacolor User to User Support Group.

Index last updated: 2026-04-28 23:18 UTC

Message

Re: Profiling without calibration and monitor matching (newbie questions)

2008-02-16 by fluppeteer

> Calcs can be done in a larger space, but when all is said and done,
you are 
> sending 8 bits per channel to the videocard, and from there to the
display. No 
> highbit pipeline yet. However, some printer export modules and RIPs
offer a 
> highbit pipeline, and I don't find it to improve prints, so I'm not
hanging my 
> hopes on magic from a highbit pipeline to displays (if and when it
comes). But 
> its great for corrections, even if the actual pipeline is only 8
bits/channel. 
> Thats why loading the same LUT tables to the display, instead of the 
> videocard, can smooth the visible result onscreen, to some degree.
But only if you are 
> asking for fairly radical corrections in the LUT, like shifting the
entire 
> gamma significantly... and its only an on-screen thing, it doesn't
effect the 
> files, or the prints, just the screen preview.

Sorry to keep banging on about this, but I still think we have
crossed wires here. I'm going to have another go at making my
point, with a simplified (if extended) example, and put a big
disclaimer here to anyone who stumbles across this thread out of
context: my understanding of colour management is likely to be
flawed, and I present the following so that its errors can be
pointed out to me by anyone with the patience, not because it's
gospel. David: I'm very grateful for your assistance, and I'll
understand if you feel you've done your duty regarding me
(especially given your climatic conditions) and want to leave it
for someone else with the patience to unconfuse me, but I'll be
most grateful if you have time to tell me where I'm going wrong.

Are you sitting comfortably? Then I'll begin.

Let's say we have a hypothetical two-bit display, on which we'd
like to display evenly-distributed greys between 0 (our black
point) and 1 (our white point); that is, we'd like our four possible
frame buffer values to be:

(bit pattern -> intensity)
00 -> 0.0
01 -> 1/3
10 -> 2/3
11 -> 1.0

[I realise the definition of "evenly-distributed" sweeps a can
of worms under the carpet. This is irrelevant for the purposes
of this hypothetical discussion.]

Now, say our actual monitor isn't nicely linear, like this. The
actual intensity it outputs when fed the four frame buffer values
are:

00 -> 0.0
01 -> 0.1
10 -> 0.35
11 -> 1.0

(Note that our end points are correct - we've done our best to
set the white and black levels. We know the values from our
attempt to profile/calibrate the monitor.)

A colour editing application which doesn't know about colour
management will place bit patterns "00", "01", "10" and "11" in
the frame buffer and magically expect them to map to "0", "1/3",
"2/3" and "1" respectively. We can't make this happen, but if
there's a look-up table on the graphics card, we can map each of
the frame buffer values to the nearest possible colour that the
monitor can display. In this case, we end up with the following
look-up table:

00 -> 00 -> 0.0 (= 0)
01 -> 10 -> 0.35 (the nearest match to 1/3)
10 -> 10 -> 0.35 (the nearest match to 2/3, just)
11 -> 11 -> 1.0 (= 1)

Now an application trying to get 1/3 and 2/3 by putting 01 and
10 in the display will get the best approximation that our
display can manage.

However, there are two obvious disadvantages to having done
this:

1) It may matter more to the display that bit patterns 01 and 10
are different than what exactly they map to. This is likely to
be the case for GUI features with subtle shading, and for a less
hypothetical display, it's most likely to be a problem where the
display's gamut is clipped and a larger possible colour range are
all mapped to the same colour.

2) There is now no value that we can place into the frame buffer
in order to reproduce colour 0.1, which is a colour which the
display is perfectly capable of reproducing. Our four-colour
display has become a three-colour display.

If we look at an application which uses a colour management system,
it no longer puts a fixed value into the frame buffer, expecting
a fixed output. Instead, the application passes the colour it wants
to the CMS, which responds with the value which needs to be placed
into the frame buffer.

On a perfect (0, 1/3, 2/3, 1) display, if an application asks for
1/3, it will be told to place "01" in the frame buffer. For our
display, 0.35 is the best approximation to 1/3; the CMS will tell
the application to use a bit pattern which results in 0.35 if "1/3"
is asked for. If no look-up table is used, and our possible frame
buffer values map to 0, 0.1, 0.35 and 1, the CMS will tell the
application to use "10", which corresponds to 0.35. If the
graphics card LUT is in use, the CMS could tell the application to
use either "01" or "10", since they both result in the same output.

If the application asks for colour "2/3", there's only so much
that our display can do. The CMS will return the best colour match
that it can produce, which is a bit pattern that corresponds to
0.35 whether the LUT is in use or not (the LUT has done nothing
to improve matters).

If the application wants to display "1/6", there's a difference.
Without the look-up table, the best approximation to "1/6" that
the display can reproduce is 0.1; the CMS will return the bit
pattern that produces this (01). With the look-up table, we no
longer have a bit pattern which can produce 0.1, and our best
match to "1/6" is "0".

While the error in approximating "1/6" as 0 is less than the error
in trying to produce "2/3" and getting 0.35, the LUT still reduces
the ability of the display to reproduce colours accurately across
*some* of its gamut. While the LUT has not made the worst errors
in reproduction any worse in this case, it has still had a
detrimental effect on the display.


To extend the analogy, let's see what happens if our graphics
card LUT has an extra bit of output quality (as with the extra
two bits from a CRT being driven from a 10-bit DAC via an 8-bit
-per-channel frame buffer, or a high-bit-depth digital link
such as dual-link DVI, HDMI, or DisplayPort). Let's say the
eight possible colours from our three bits of output now map
to:

000 -> 0.0
001 -> 0.04
010 -> 0.1
011 -> 0.17
100 -> 0.25
101 -> 0.35
110 -> 0.6
111 -> 1.0

Before we update the look-up table, it contains:

00 -> 000 = 0.0
01 -> 010 = 0.1
10 -> 101 = 0.35
11 -> 111 = 1.0

In calibrating the monitor, we can set up the look-up table to
produce a better approximation to 0, 1/3, 2/3, 0:

00 -> 000 = 0.0
01 -> 101 = 0.35
10 -> 110 = 0.6
11 -> 111 = 1.0

In addition to making non-colour-managed applications produce
better colour, this *does* help with a colour-managed app. We've
lost the ability to display 0.1, but - rather than gaining a
duplicate value mapped to 0.35 - this time we've gained a new
colour, "0.6". While we'll lose a small amount of accuracy in
reproducing colour in the 0.05 to 0.225 (the range of colours
nearer to 0.1 than anything else available), the much larger
range from 0.475 to 0.8 is now more accurately represented
by the new colour. So setting the LUT on a CRT is a good thing,
but only (from the point of view of CMS-aware apps) because
previously-unavailable colours are added which are more useful
in filling "gaps" in the colour space than the unmodified range
of colours that we can reach.

Note that I'm assuming that a colour-managed app is capable of
asking for a colour such as "1/6", even though the frame buffer
has less accuracy than this. I don't see a problem with that:
firstly, Photoshop (et al.) can work with 16-bit internal
representations of documents. Secondly, in general the document
colour space won't have values which line up nicely to values
which the monitor can display (unless the document colour space
*is* the monitor colour space); even if the document only had
four shades of grey, there's every chance that one of them
could be best represented by "0.1".

I've over-simplified the job of the CMS here; in reality, it's
likely that an application would use the nearest colours that
the monitor can display, and dither between them to produce
a better approximation to the desired colour. Nonetheless, it
helps for as many of the monitor's available colours to be
available as possible. ATI's AVIVO cards can take a 10-bit
LUT and dither the output over DVI to approximate more than
the native 256 colours, but this dithering clashes with the
dithering performed in the CMS; it's better to maximise the
number of colours which can appear in any single pixel, and
for your average 8-bit-per-channel LCD and DVI connection,
that's best achieved by leaving the LUT alone. (Monitors with
internal look-up tables may or may not be able to do better,
depending on whether they also produce more colours through
spatial dithering.)

Obviously the deletion of a few closely-spaced colours is less
of a problem when 256 colours are reduced to (say) 248 than
when 4 are reduced to 3. Nonetheless, the argument holds that
the display has lost the ability to reproduce some colours
as accurately as it initially could. Additionally, although
the colours may be more accurately positioned along the 0..1
range, it's likely that any nonlinear arrangement will make
the spacing between nearby colours less even: there will be
jumps (most obviously, in our simplified example, the gap
from 01 to 10 is 0.0, since they map to the same colour,
whereas the gap from 10 to 11 is 0.65). This lack of smoothness
may be more disconcerting than the absolute accuracy of the
colour (which, without using a profile, is always going to
be hit-and-miss), for some applications.

Hence, I still claim, at least for a colour-managed application
and on a standard DVI display, doing anything but leaving the
LUT alone can only be harmful. I'm happy to have it explained
to me where the flaw in my logic is. Failing that, I don't
suppose there's a developer API available for the Spyder
colorimeters, is there? (I'm prepared to roll my own profile,
if I have to, but I still need the data...)

As you say, all of this is "only an on-screen thing" - but
since my needs of colour management don't extend to matching
two printers, or accurately reproducing scanned colour, my
sole concern is being able to edit an image on-screen and
have it look (reasonably) "right" after I print it out. I'm
quite keen that the display part of colour management work
correctly; otherwise I wouldn't have started my attempts at
colour management with a display colorimeter and the printer
manufacturer's profiles.

I realise I'm making a bit of a pain of myself with my first
appearance on this group; for that I apologise. My thanks
again to anyone who's got this far, and who can help me, and
to David for his previous help.

-- 
Fluppeteer

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.