[argyllcms] Re: Specifying an algorithm type override for display profiles

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 06 Feb 2013 22:37:37 +1100

Richard Hughes wrote:
> Maybe a really stupid question, but why don't we just use a LUT for
> displays? My gut instinct is that the profiles would be larger (and
> thus take more processing power to use), and that the RGB display
> would match really well to a matrix. Except when is doesn't, and the
> user has to specify a LUT type for a screen that doesn't work well
> with a -aS profile.

Assuming by "LUT" you mean cLUT (3D LUT), then there are tradeoffs.
Putting aside the size issue, the main issue is smoothness and
accuracy. A cLUT is a piecewise linear function, so it isn't smooth
at the fine level, whereas a power or 1DLUT + matrix is very much
smoother. This can be of more subjective significance than it appears,
if the device is highly non-linear, or you need to deal with a large
dynamic range (although the per channel curves of a cLUT profile
can ameliorate this to some degree.)

If the underlying device response is additive then a 1D curves + matrix
function will be more accurate in regions of the response that are not
close to points in the measurement sample set. If on the other hand the
device response is not additive, then a cLUT has the potential to have lower
gross errors in those areas, but it will only be more accurate if there
is sufficient density of measurement samples.

I guess it may be possible to assess after the fact which profile
is "better" (for a given weighting of quality metrics), but I'm not
aware that anyone has done much work on this. Maybe something
could be done before profiling by evaluating how additive the
sample set is, and using some heuristic threshold. An evaluation
of the sample distribution would (ideally) also feed into
the decision.

In practice I think the predominance of matrix display profiles
is due to their small size, easy & fast evaluation, the additive
nature of good quality displays, and the lack of support amongst
some CMM's for cLUT type profiles.

One quandary is that in the ICC way of doing things, you can
only have the (baked in) gamut mapping with cLUT type profiles.
Use of matrix profiles tends to imply gamut per component clipping,
which is not very elegant.

Graeme Gill.

Other related posts: