[argyllcms] Re: CC Profiles In X Specification and dispwin

  • From: Leonard Evens <len@xxxxxxxxxxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Sat, 12 Jan 2008 17:14:57 -0600

On Sat, 2008-01-12 at 22:29 +0100, Frédéric Crozat wrote:
> On Jan 12, 2008 9:50 PM, Leonard Evens <len@xxxxxxxxxxxxxxxxxxxxx> wrote:
> > I clearly still don't understand some things, so please be patient with
> > me.  Just what is the distinction between the calibration" and
> > "profile".   I looked at my profile with iccdump, and it contains a
> > whole lot of information with the last three tags being rTRC, gTRC, and
> > bTRC.  I've been assuming these are loaded in the Xserver as look up
> > tables.  I even tried to decipher the code in xcalib and other programs,
> > so I think I understand how it is done.   Which part of the profile
> > would be loaded with xicc?
> 
> xTRC tags are part of the calibration "section" of the color profile.
> They are loaded into X server using dispwin (or xcalib). And they can
> be computed using dispcal.
> 
> Those informations could be incorrectly reset by gnome-screensaver if
> they were loaded after gnome-screensaver startup.

My problems with the screensaver seem to have disappeared. There may
have been some intervening gnome upgrade, but if so, it was not the
gnome-screensaver.  It is possible it was power savings that did it, and
I just confused the two. But I'm not really concerned about that right
now.

>  
> The other part of a profile is characterization (or profiling). The
> idea is that color requested (from a file, an application) might not
> be displayable on a calibrated monitor. So, an color engine will try,
> based on characterization data (obtained with dispread, for instance)
> to translate colors requested to color displayable (I'm not sure I'm
> very clear but I'm sure people will correct me).

So this might concern gamut, rendering intent, whitepoint or blackpoint
if I understand correctly.  I am going to attach the output of iccdump
for my profile---verbosity 2, and perhaps someone can tell me just which
tags in my case would be used for that additional information and
perhaps even how they would be used by the application.

> 
> xicc purpose is just to store in a "standard" location the
> characterization data of a profile, so color-aware applications (like
> gimp, eog) will use those data without any additional user
> intervention.
> 
> > I thought calibration referred to changes made to the monitor using the
> > monitor controls.  Is that wrong?
> 
> Yes but don't worry, I've only started to understand this some weeks ago ;)
> 
> You can check 
> http://www.normankoren.com/color_management_2A.html#Monitor_viewing
> for a quite verbose schematic (I recommend reading
> http://www.normankoren.com/color_management.html for a introduction of
> color management).

I've studied Norman Koren's web page several times.  I've also read Real
World Color Management from cover to cover---at least I looked at every
page---and I've reread relevant sections several times.  My current
problems don't seem to be that I haven't studied the subject.  If
anything I've studied it too much.  Unfortunately, there is so much
there that it is hard to pull out what is relevant for your particular
situation.  In my case, some of the nitty gritty about how things are
coded might be helpful, provided it doesn't drown me in detail.

I must say that I've been mastering very complex subjects for some 50
years---I've even performed as a Linux system administrator.  Color
managment seems to rank near the top for it capacity to confuse people.
Or, perhaps I'm just getting too old. ;-)

> 
> > I am also still very confused about how an application like eog or gimp
> > 2.4 is supposed to make use of this information.  For example, in the
> > gimp preferences, I have several choices.  I can specify a display
> > profile, but I don't understand whether or not I should be using it if I
> > use xcalib.  Would the luts be used twice in that case?  I've been
> > trying to resolve these issues by experimentation, but that hasn't yet
> > been very helpful since the changes with different arrangements are not
> > very large.
> 
> you must use xcalib (or dispwin) to "calibrate" your display. And
> then, either specify manually the same color profile in gimp for the
> characterization part or use xicc and gimp will use those data when
> you choose "try to use system monitor profile".

I think I understand that.  From my somewhat rudimentary understanding
of the code, the luts are loaded by standard functions in X11 VidMode
extensions.  There is a structure and the programs just copy the
information into it and X then takes care of the rest.  I presume under
these circumstance that if you load one set of numbers and then with
another application load some other set of numbers, the second loading
just writes over what was there previously.   So at least for the
monitor, you don't have to worry about composing curves when you only
want one to be operative.  I hope that is correct.

> 
icc:
Header:
  size         = 3788 bytes
  CMM          = 'argl'
  Version      = 2.2.0
  Device Class = Display
  Color Space  = RGB
  Conn. Space  = XYZ
  Date, Time   = 17 Dec 2007, 9:54:53
  Platform     = Unrecognized - '*nix'
  Flags        = Not Embedded Profile, Use anywhere
  Dev. Mnfctr. = '????'
  Dev. Model   = '????'
  Dev. Attrbts = Reflective, Glossy
  Rndrng Intnt = Relative Colorimetric
  Illuminant   = 0.964203, 1.000000, 0.824905    [Lab 100.000000, 0.000498, 
-0.000436]
  Creator      = 'argl'

tag 0:
  sig      'desc'
  type     'desc'
  offset   276
  size     105
TextDescription:
  ASCII data, length 15 chars:
    0x0000: DisplayC 12-16
  No Unicode data
  No ScriptCode data

tag 1:
  sig      'cprt'
  type     'text'
  offset   384
  size     47
Text:
  No. chars = 39
    0x0000: Copyright, the creator of this profile

tag 2:
  sig      'wtpt'
  type     'XYZ '
  offset   432
  size     20
XYZArray:
  No. elements = 1

tag 3:
  sig      'bkpt'
  type     'XYZ '
  offset   452
  size     20
XYZArray:
  No. elements = 1

tag 4:
  sig      'clrt'
  type     'clrt'
  offset   472
  size     126
ColorantTable:
  No. colorants  = 3

tag 5:
  sig      'vcgt'
  type     'vcgt'
  offset   600
  size     1554
VideoCardGammaTable:
  channels  = 3
  entries   = 256
  entrysize = 2

tag 6:
  sig      'rXYZ'
  type     'XYZ '
  offset   2156
  size     20
XYZArray:
  No. elements = 1

tag 7:
  sig      'gXYZ'
  type     'XYZ '
  offset   2176
  size     20
XYZArray:
  No. elements = 1

tag 8:
  sig      'bXYZ'
  type     'XYZ '
  offset   2196
  size     20
XYZArray:
  No. elements = 1

tag 9:
  sig      'rTRC'
  type     'curv'
  offset   2216
  size     524
Curve:
  No. elements = 256

tag 10:
  sig      'gTRC'
  type     'curv'
  offset   2740
  size     524
Curve:
  No. elements = 256

tag 11:
  sig      'bTRC'
  type     'curv'
  offset   3264
  size     524
Curve:
  No. elements = 256

Other related posts: