[argyllcms] Re: optimizing target generation, linearization, etc.

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Sat, 27 May 2006 19:33:38 +1000


Oh! this printer had already been "linearized" by BestColor (v4.x) by densities.

Do you know if the "linearized" stops at maximum density ? Or does it continue to device input maximum ?

So, how does one work around this? if we want to represent such
curvature it's not enough to add more and more patches to the target.
We also need to address the grid resolution problem, and as we can't
have a variable-resolution grid in the pcs->device table, the only way
I can see is by proper linearization.

Actually you do have a sort of variable grid resolution, that's part of the effect that the per-device curves have on the profile. It's not terribly specific though.

But, would it be enough to linearize the primaries? ideally we would
want to linearize secondaries too!
So maybe a combination of two profiles, one abstract one (or more
properly said, device link)  to perform such multicolor linearization,
plus another one created from a target printed through the
linearization, would work?
Or maybe it boils down to how linearization is performed?

It's hard to say without specific information. If the linearisation has poor targets, or isn't smart enough to stop at the maximum density (minimum L) for the channel, then maybe better per-channel linearisation would improve things. Certainly we rarely came across devices that we couldn't get a handle on using the calibration system I created for the Colorbus product.

I'm not sure how an abstract profile would help. Perhaps you
mean device to device link, so that it can be applied to the
device values going into the profile, but then it would
have the same grid indexing issues that the profile
itself has :-)

I've seen RIPs linearize by density; I find it gross given that
density is related to a constant-hue colorant, which is not true for
current inkjet and even less when they combine Lc and C (or Lm and M)
together in one value.

Density is quite appropriate in many ways. Density measurements are intended specifically for process control, and this is exactly that, a process control issue. Most colorants have broad enough filter characteristics that something like status T will hit it somewhere where it's sensitive. The most critical alignment is in the Yellow (which is where the different status's vary the most), and you don't have a Light Yellow problem. You probably don't want a linear density curve as a target, but I can assure you that a fine calibration system can be implemented using density measurements.

Other RIPs linearize by L* value; and what the heck do they do with
yellow, whose lightness changes are so small that they could be
confounded by instrument error?

It's always puzzled me. If I were implementing a calibration system using a colorimeter or spectrometer, then I'd figure out the vector in Lab space that has the greatest length for each colorant, and use that as my direction to measure the colorant response (ie. maximize the signal to noise ratio).

I would find it more appropiate to linearize by first derivative; a
constant dE between each step, regardless of whether it's caused by a
change of lightness, hue, chroma, or any combination of them. But that
would fail to properly follow the curves and hooks, where it won't
place points closer as it should. So what, second derivative?
I've seen one or two RIPs claiming "spectral linearization"; what do
they mean, I don't know.

A more sophisticated version of my "vector of maximum response" would be to try and bend it with the colorant response. I'm not sure if that would actually result in a useful improvement though, after all, it's not the colorant we're interested in, it's the resulting visual response. I would guess that "spectral linearisation" (from the name) is using a spectrometer as a variable densitometer, ie. locating the spectral band where the colorant has most effect, and using that to evaluate it's response (I could be wrong though).

> I tried to find ink coverage by adding and
substracting spectra (kind of
sample_spectrum=paper_spectrum*paper_area+solid_spectrum*ink_area
where paper_area+ink_area=1); I even tried adding a third area,
"fringe area". No way. Nothing fits. I guess the measurement errors by
individual spectral bands are potentially unmanageable.

I guess one solution is to forgo the typical profile, and just use
icclink -G ; that would at least take care of the grid resolution
problem.

Ah - I wasn't sure if you were talking about the grid in the A2B table or the B2A table. If you were talking about the B2A table, then substitute "per PCS channel curves" for the above comment about variable grid resolutions. Certainly directly inverting the A2B improves accuracy and reduces artefacts to a quite noticeable degree.

> But the issue of how to properly sample highly curved areas
of the perceptual space remains at large.
If I still had the math skills I used to have when in college (I'm
only 40, but unexercised in math) I would dream of a space
transformation (Jacobian?) to make device space fit more regularly
into perceptual space.

Part of the idea of the ICC profile format (particularly the V4 format) is to add some extra machinery to improve the accuracy of the profiles. There is a matrix mechanism, and in ICCV4 there is another set of per device curves between the matrix and the CLUT. What you can do with this mechanism, is not something I've explored at all, although I know other people have begun to do so (HP).

Graeme Gill.

Other related posts: