[Openicc] ALL YOU NEED IS A PROFILE, THE MYTH. (WAS CC Profiles In X Specification and dispwin)
Robert Krawitz
rlk at alum.mit.edu
Wed Jan 16 16:52:39 PST 2008
Date: Thu, 17 Jan 2008 01:13:30 +0100
From: Gerhard Fuernkranz <nospam456 at gmx.de>
But I also would not renounce profiles! Actually I find the way how
gimp-print performs color conversion/correction too
complicated. There are a bunch of controls, but the effect of the
controls to the resulting colors, and the side-effects are not
really clear and hard to predict. IMHO, for instance the color
workflow for a CMYK printer driver can be fairly simple, if it is
based on color profiles:
The "high accuracy" mode is indeed quote complicated, and we don't
recommend that people use that mode as the basis for color management.
It's the default because we want people to get good results in a
non-CM environment, but anyone doing color management should use one
of the simpler color correction modes (uncorrected -- which really
means gamma corrected -- or density -- which is density-adjusted but
not linearized).
* driver's CMYK input -> four 1D-curves which do the linearization
and the per channel ink limiting -> halftoning engine -> raster
data -> done
(the 1D curves should IMO support at least 10 or 12 bits/channel
on input, and 16 bits on output. The halftoning engine should work
with 16 bits/channel)
Gutenprint supports 8 and 16 bit inputs and does halftoning on 16 bit
quantities.
and if the driver also wants to offer inputs for other color spaces,
then the flow in the driver could look like
* CIELAB input (is already PCS) -> CMYK profile for the printer ->
feed to driver's CMYK input
* sRGB input -> sRGB profile -> PCS -> CMYK profile for the printer
-> feed to CMYK input
(this could even be optimized by using a sRGB -> printer CMYK
device link profile)
* SWOP emulation input (CMYK) -> SWOP profile -> PCS -> CMYK profile
for the printer -> feed to CMYK input
* etc.
This way there are no hand-crafted color conversions are required.
For CcMmYKk printers we would basically just need to extend the
above CMYK model by three additional 1D curves, such that the Cyan,
Magenta an Black channel of the CMYK input can be split into the
corresponding light and dark ink components. For multicolor
printers (with orange, green, red or blue inks in addition to
CMYK), I admit that the model will become a bit more complicated...
Yes, but we need to handle these cases. The simple channel splitting
model for light channels has some limitations; I suspect, for example,
that the hue and saturation doesn't perfectly match. Then there's the
whole issue of ink limiting. For black ink, sometimes the light inks
have a significant hue and the darkest black is neutral. You also
missed the drop size issue.
The way we do CMYKRB (it extends to additional inks) is to convert to
HSL, and pick the right combination of color inks from the hue (we
don't use the auxiliary inks in gray/black generation). It's not all
that scientific; it kindasorta works, but I'd like to do better.
I don't want to go deeper into details now. However, the important
issue is IMHO that driver models like above should be well-defined,
well-documented and fixed, i.e. the behaviour should not change
incompatibly from version to version. Also the halftoning algorithm
should not change, since this would have an effect on the color
reproduction (new halftoning algorithms could of course be
introduced additionally in new versions, but the old ones should be
retained too).
Actually, that's pretty much the rule for Gutenprint within a stable
version (e. g. all the 4.2 releases used the same color correction and
same tunings for printers, and likewise within 5.0). I agree with
this rule.
Stable driver models would IMHO be a prerequisite in order that a
repository of calibration curves and ICC profiles for various
printer/ink/paper combinations could be established by the
community. The driver would just implement the bare model(s), and
the parametrization of the model(s) would come from the repository.
Additionally there should be tools, which aid in the establisment
of the calibration curves for the different driver models (CMYK,
CcMmYKk, multicolor,...) from measurements. Tools to create ICC
profiles are already available, e.g. Argyll and commercial ones.
Well, OK, but the question of handling the different physical printer
setups is very important for modern printers...
--
Robert Krawitz <rlk at alum.mit.edu>
Tall Clubs International -- http://www.tall.org/ or 1-888-IM-TALL-2
Member of the League for Programming Freedom -- mail lpf at uunet.uu.net
Project lead for Gutenprint -- http://gimp-print.sourceforge.net
"Linux doesn't dictate how I work, I dictate how Linux works."
--Eric Crampton
More information about the openicc
mailing list