[argyllcms] Re: A beginner's questions

  • From: Leonard Evens <len@xxxxxxxxxxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 30 Jan 2008 17:04:41 -0600

On Wed, 2008-01-30 at 22:32 +0100, Luud Heck wrote:


> 
> I don't understand the relation between xgamma and video card lut yet.
> I have to do some more reading and searching about this first.

I don't completely understand it myself, but let me try.

I think I understand abstractly what the difference is.  You can think
of the light level you see on the monitor in terms of a curve which
translates input voltages to brightness levels.  The rule has the form
input -> input raised to a power, and the power is called gamma, which
is 2.2 for a typical CRT.  (I'm not sure just how this works for LCDs.)
But you can also change the output by modifying the input in the video
card before it is sent to the monitor.   The simplest thing to do is to
make that change using a similar power rule.  So  gamma = 1 for that
would not change the monitor gamma,  gamma < 1 would bow it down
relative to where it was, and gamma > 1 would bow it up relative to
where it was.  xgamma makes a call to the video card to do that.

On the other hand, you can get more precise control by applying a curve
with a more complex shape.  For example it could be bowed down at one
end and bowed up at the other end, looking like an elongated S.   You do
this by introducing a look up table which tells you the modification to
make for selected values of the input and then interpolating in between.
That is what xcalib and dispwin do.  And they do it by a different call
to the video card from that used by xgamma.

Fortunately, under X, programmers don't have to worry about the details.
There are standard structures and function calls in X and its
extensions, which do the right thing when talking to the video card.

If I've gotten anything wrong, maybe someone will correct me.


> 
> Thanks for the feedback and pointers!
> 
> Regards,
> Luud


Other related posts: