Pages: [1]   Go Down

Author Topic: Know of any ICC Profiles that output XYZ?  (Read 1341 times)

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Know of any ICC Profiles that output XYZ?
« on: July 27, 2016, 01:58:16 pm »

Czornyj brought up an interesting subject, Additivity Failure, which occurs for various reasons but is poorly quantified as it it exceedingly complex, non-linear, and worse, varies a great deal from one person to the next.

As a consequence of this unpleasantness, it's largely ignored and it would seem for practical purposes, ignoring it works sufficiently well and life goes on.

I'd like to examine this more closely and one thing that would facilitate this is being able to specify X,Y,Z values directly in Photoshop where RGB values would normally be entered.

One approach is to use an ICC matrix profile that converts from ICC working space to XYZ. Since the working space is also XYZ this should be the zenith of simplicity but I haven't run across a profile that does this.

There are a few issues.
  • XYZ are absolutes that are linearly scaled to an arbitrary luminance.
  • The actual XYZ values on a monitor are color adapted to the monitor profile's white point. The working space XYZ values are adapted to D50

Since I normally, especially in repro mode,  work with the monitor set at D50 and 100 nits neither of these issues is a problem. For others there would need to be some of additional work. Possibly a set of profiles at different nit and monitor CCTs levels.

So, ideally, I would like to create color patches, or use standard patch sets like X-Rite's Colorchecker. Then place my cursor over the patch in PS, read the X,Y, and Z values, and then be able to do the same with an I1 monitor patch reader which directly reads these.

This would make exploring additivity failure in areas where I suspect it may be occurring much simpler.

Has someone run across anything like this:
Logged

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: Know of any ICC Profiles that output XYZ?
« Reply #1 on: July 27, 2016, 08:59:01 pm »

One approach is to use an ICC matrix profile that converts from ICC working space to XYZ. Since the working space is also XYZ this should be the zenith of simplicity but I haven't run across a profile that does this.
ICC profiles are generally a bad way of examining absolute (i.e. measured) display behavior, as the ICC have gone out of their way to bollocks this up. With ICCV4 they did a thorough job, and most CMM's can't give you absolute colorimetric, never mind measurement values.

If you were to stick to a profiling system with known behavior in the regard (i.e. ArgyllCMS), then you could with some effort use ICC profiles for this sort of thing. But it's still not push-button, and certainly not something you can do in Photoshop.

Using ArgyllCMS, you would make a display matrix the normal way (i.e. DispCal is fine as a front end), but to get the measurement values back you would have to first lookup the absolute luminance value from the 'lumi' tag (i.e. using "iccdump -t lumi -v3 profile.icm"), and then manually scale the XYZ value you get out of "icclu -px -ia profile.icm".

I've added an option to xicclu to do a display "measurement value" absolute lookup in one operation, that will be released with the next version of ArgyllCMS.
« Last Edit: July 28, 2016, 08:23:37 pm by GWGill »
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: Know of any ICC Profiles that output XYZ?
« Reply #2 on: July 28, 2016, 01:08:18 am »

ICC profiles are generally a bad way of examining absolute (i.e. measured) display behavior, as the ICC have gone out of their way to bollocks this up. With ICCV4 they did a thorough job, and most CMM's can't't give you absolute colorimetric, never mind measurement values.

If you were to stick to a profiling system with known behavior in the regard (i.e. ArgyllCMS), then you could with some effort use ICC profiles for this sort of thing. But it's still not push-button, and certainly not something you can do in Photoshop.

Using ArgyllCMS, you would make a display matrix the normal way (i.e. DispCal is fine as a front end), but to get the measurement values back you would have to first lookup the absolute luminance value from the 'lumi' tag (i.e. using "iccdump -t lumi -v3 profile.icm"), and then manually scale the XYZ value you get out of "icclu -px -ia profile.icm".

I will consider adding an option to xicclu to do a display "measurement value" absolute lookup in one operation.

Normally, I set up the monitor to 100 Nits and D50. Then, just reading the RGB values in the working color space using Lab for display values and 32 bit gives high precision (not accuracy of course) Lab. These correspond reasonably well with when the patches are read with patchtool. Errors do get larger at lower luminance for several reasons. Glare and instrument noise/drift. The I1 Pro 2 spectro is pretty noisy at low luminance.  Another reason is that the monitor profile rolls off at the monitors set black point and what exactly the monitor is doing internally is unknown. However, these effects are stationary and mostly problematic at low luminance. Further complicating this is that, to get a good visual diff I need to illuminate the screen with a light source to view the half that is a print with patches side by side with monitor patches with as XYZ values (as measured with the I1) that match. Additivity failure should result in color shift due to the spectrum reflected from the illuminated paper being different from the spectrum of the monitor's patches even while they measure the same (or as close as I can get them) XYZ values.

Ultimately, I'll use the measured XYZ values then use Matlab to calculate and create printable patches that yield the desired XYZ values for my illuminant. I may have to iterate on both the printer side and monitor side to get the patches as close as possible. I'd like to get them matching below .5 DeltaE. May have to settle for a bit more.

Probably easier to just iterate on the monitor's side. Much quicker to measure and tweak.

So I'll just use Lab values to get in the ball park then measure XYZ with the I1 and tweak as necessary to match the printed patches.
Logged
Pages: [1]   Go Up