[argyllcms] Simulating RGB profiles with "refine"

  • From: Cody Ranaldo <lessbones@xxxxxxxxx>
  • To: Argyllcms <argyllcms@xxxxxxxxxxxxx>
  • Date: Thu, 20 Feb 2020 13:39:35 -0500

Hey guys--

I'm working through something that I've been attempting for a long time
now, and I feel it should be possible, but I'm having issues with
implementation.

Basically, what I'm attempting to do is simulate the output of one printer,
through a (possibly old and outdated) ICC profile on another printer.

The gamuts of the two devices are very similar, and the paper is the same
paper, so there is not a ton of wiggle room here as there would be when
simulating a printing press on an inkjet printer.  I'm fairly certain that
i've got the initial profiling charts set up properly, but anyway, here's
the workflow thus far:

PrinterA (my printer)
PrinterB (printer to be simulated)

1. Print RGB color chart with PrinterA with color management turned off.
This is used to generate an ICC profile describing this printer.
2. Print same RGB color chart with PrinterB with profile to be simulated
assigned (no number conversion) and measured.
3. refine -v -c "measuredchartB.ti3" "measuredchartA.ti3" "iccprofileA.icc"
[output initial abstract profile]
4. rebuild iccprofileA incorporating abstract profile generated in step 3
with "-p" argument
5. print desired image through rebuilt iccprofileA converting with relative
colorimetric

Apparently i'm missing something in here, and for whatever reason it's been
difficult to juggle all the different transforms properly in my head.  At
one point when I went through this it seemed like the result helped shift
the neutrals towards where they should end up, but the saturation was all
kinds of messed up, with or without gamut limiting.

In an ideal world, I'd be able to use the abstract profile generated with
refine in photoshop as a layer loaded into the "Color Lookup" adjustment
layer, but I don't believe that this would be possible unless I were to
keep the file in the PrinterA output profile..

Correct me if I'm wrong, but in theory, isn't the idea here to compare two
sets of known values and make a fairly simple mathematical transformation
between the two?  Isn't this what a 3D LUT does?  I've tried so many
different methods to make this work over the years, but I can't seem to get
anything to work as it exists in my head--  I've tried solutions like using
the EFI RIP simulation profile and optimization also, but it doesn't get
visibly close enough, and there are so many bugs in their software that I'd
rather have a way to do it outside of a closed ecosystem.

It took me a lot of thinking about step 2 above to arrive at the need for
assigning the profile to be simulated, but I don't see any other method
that would work, as I'm trying to simulate where the printer is now, drift
and all.  I've also always been really confused as to how most people can
be certain of their result when sending a characterization chart to a
remote printing press-- if the color data is just based on CMYK values, I'm
always worried that someone on the other end is assigning a working space
profile or something generic like SWOP which doesn't match their press
condition.  Hell, I've had people send me profiling charts to output on a
lightjet before with no instructions as to what they're trying to do or how
they want it printed, and I usually end up just turning off color
management in under the assumption that they're trying to make their own
profiles, but if they're trying to evaluate mine, then this would be
wrong...

Another thought, it seems like this is more akin to something like making
an input profile from a colorchecker chart, where the LAB values are known
from the start and absolute instead of generated from raw RGB data.

Anyway, if anyone has done this before, or can point out my glaring errors
i'd appreciate it, otherwise I'll go back to banging my head against the
wall and hopefully figure it out eventually.

thanks!  apologies for the essay!

-Cody

Other related posts: