Pages: [1]   Go Down

Author Topic: i1profiler: Loading patch sets with L*ab values instead of RGB  (Read 1519 times)

maximilian59

  • Newbie
  • *
  • Offline Offline
  • Posts: 27
i1profiler: Loading patch sets with L*ab values instead of RGB
« on: October 13, 2018, 03:08:05 pm »

Hello,
for a special project I want to use Lab values for creating patches in i1profiler. This is necessary as I don't get RGB values. As I have to make a lot of test charts converting one by one with online tools I am looking for a more easy solution, if it is existing.
Trying to load file with Lab values results in a patch set with white/empty patches.
My input data, just a short example, look like this in a file as plain text made with textedit:
CGATS.17

ORIGINATOR   "i1Profiler - X-Rite, Inc."
INSTRUMENTATION   "i1Pro 2 ; Serial number xxx"
DESCRIPTOR   "Reihe 1"
FILTER   ""
KEYWORD   "DEVCALSTD"
DEVCALSTD   "XRGA"
CREATED      "2018-10-12T22:04:34"

NUMBER_OF_FIELDS   8
BEGIN_DATA_FORMAT
SAMPLE_ID   SAMPLE_NAME   XYZ_X   XYZ_Y   XYZ_Z   LAB_L   LAB_A   LAB_B   
END_DATA_FORMAT

NUMBER_OF_SETS   4
BEGIN_DATA
1   A1     0.35418    0.23957    0.07144      56.04      47.55      35.74   
2   B1     0.47978    0.38588    0.28840      68.45      32.19       4.73   
3   C1     0.58376    0.52812    0.48518      77.76      18.83      -5.89   
4   D1     0.64510    0.62022    0.62379      82.93      10.91     -11.63   
END_DATA
What am I doing wrong, or do I need a conversion tool to get RGB values?

Thanks in advance
Maximilian
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #1 on: October 13, 2018, 03:51:03 pm »

You CGATs file needs to have RGB_R, RGB_B, and RGB_G instead of the XYZ and LAB entries to make a printable file. Even after you do that you will need to assign the RGB colorspace you are using after you save the printable target image.

I do this all the time as a way to check printer profile accuracy with a set of known Lab values. However, I use a Matlab function to do this. There are a few other issues as well. While you can create a printable patch file in I1Profiler it uses only 8 RGB bit values so it's best to round the RGB values as well. This porduces, on average, about a .3 dE00 variation in the Lab values.

It's that's OK and you have a one time need I'd be happy to convert a list of Lab values for you into your colorspace of choice (ProPhoto, Adobe RGB, etc) and attach a CGATs file. It's about a 30 second job for me. Just post the list of Lab values like so or add a text file. Here's the format which is just rows of the 3 Lab values

50 -10 30
62 12 -20
20 0 0
etc.

Graeme's Argyll may have a command line program that does this as well but I haven't looked into it. He also posts here from time to time and maybe he will chime in.
Logged

GWGill

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 608
  • Author of ArgyllCMS & ArgyllPRO ColorMeter
    • ArgyllCMS
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #2 on: October 13, 2018, 07:31:49 pm »

for a special project I want to use Lab values for creating patches in i1profiler. This is necessary as I don't get RGB values. As I have to make a lot of test charts converting one by one with online tools I am looking for a more easy solution, if it is existing.

You don't really say what your ultimate intention is, so it's hard to make any suggestions.

Are you looking for an interactive/GUI test chart creation program that allows you to set patch values in L*a*b* ?
But then you mention converting test charts - what do you mean by that ? Converted using what color profile(s) ?

Why do you need L*a*b* charts ? - to actually print such a chart, it is going to have to be converted to
a device space at some point. What's doing that conversion ? What do you then want to do with the chart ?

(Typical color profilers are all about creating a mapping from device values like RGB to CIE values like L*a*b*, so it
 simply doesn't make any sense to talk about a device profile from CIE to CIE. That would be regarded as an
 abstract profile, used for making color corrections or applying "looks".)

« Last Edit: October 14, 2018, 10:14:24 pm by GWGill »
Logged

maximilian59

  • Newbie
  • *
  • Offline Offline
  • Posts: 27
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #3 on: October 14, 2018, 01:48:01 pm »

Hello,
thanks for the answers.
I try to explain, what am I doing.
For my project I make fading test on a window with four different printers/inks on different papers. This is only a comparative testing and no predictive testing as it is done by Aardenburg imaging. I am also not looking at the professional printers. I want to do more for the consumer and area. As reference printer I take my Pro-1000 with OEM inks which is also used in every test sequence.
I thought that it is the easy way.
1. Creation of two test charts with 30 fields by manual input in 11profiler.
2. Saving as Tiff files
3. Importing in Lightroom and printing the stripes on one sheet of paper.
4. After drying period first measuring of patterns with i1Pro 2 and i1profiler and saving the results as user defined CGATS file.
5. The step I am struggling with: Take the measuring results to make a new target stripe.
6. Would be: Make a new target with new input. Print to TIFF. Import again in Lightroom.
7. Crop old and new stripe so there is no white border anymore.
8. Place them side by side with no margin and compare visually.
9. Start testing on windoe and do a measuring every week.
10 Repeat steps 5 to 9 several times. The criterion for stopping the test has to be evaluated by exoierience.
That is the goal.
Of course these steps may not be "correct" in terms of scientific testing. But doing it allways the same way it should be good enough for comparative field tests. First results show already cheap plus cheap inks start visible fading after one day (delta e over 6).

I did some searchings on the internet and found quite a lot of information.
On easyrgb.com I found the following formula:
//X, Y and Z input refer to a D65/2° standard illuminant.
//aR, aG and aB (RGB Adobe 1998) output range = 0 ÷ 255

var_X = X / 100
var_Y = Y / 100
var_Z = Z / 100

var_R = var_X *  2.04159 + var_Y * -0.56501 + var_Z * -0.34473
var_G = var_X * -0.96924 + var_Y *  1.87597 + var_Z *  0.03342
var_B = var_X *  0.01344 + var_Y * -0.11836 + var_Z *  1.34926

var_R = var_R ^ ( 1 / 2.19921875 )
var_G = var_G ^ ( 1 / 2.19921875 )
var_B = var_B ^ ( 1 / 2.19921875 )

aR = var_R * 255
aG = var_G * 255
aB = var_B * 255

My first calculations showed that D65/2° is the wrong matrix. On brucelindbloom.com I found a conversion matrix for D50 and the calculated values are much better in the range of +- 1 R, G or B value making the calculation forward and backwords. I think for my purpose quite good. It seems taking M0 measurement data give the "best" result.

I will do some additional testing ont the formula with additional measurement values to see whether this is a good way for me.

Hope this helps to understand what I am doing.

Maximilian
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #4 on: October 14, 2018, 04:47:17 pm »

Hello,
thanks for the answers.
I try to explain, what am I doing.
For my project I make fading test on a window with four different printers/inks on different papers. This is only a comparative testing and no predictive testing as it is done by Aardenburg imaging. I am also not looking at the professional printers. I want to do more for the consumer and area. As reference printer I take my Pro-1000 with OEM inks which is also used in every test sequence.
I thought that it is the easy way.
1. Creation of two test charts with 30 fields by manual input in 11profiler.
2. Saving as Tiff files
3. Importing in Lightroom and printing the stripes on one sheet of paper.
4. After drying period first measuring of patterns with i1Pro 2 and i1profiler and saving the results as user defined CGATS file.
5. The step I am struggling with: Take the measuring results to make a new target stripe.
6. Would be: Make a new target with new input. Print to TIFF. Import again in Lightroom.
7. Crop old and new stripe so there is no white border anymore.
8. Place them side by side with no margin and compare visually.
9. Start testing on windoe and do a measuring every week.
10 Repeat steps 5 to 9 several times. The criterion for stopping the test has to be evaluated by exoierience.
That is the goal.
Of course these steps may not be "correct" in terms of scientific testing. But doing it allways the same way it should be good enough for comparative field tests. First results show already cheap plus cheap inks start visible fading after one day (delta e over 6).

I did some searchings on the internet and found quite a lot of information.
On easyrgb.com I found the following formula:
//X, Y and Z input refer to a D65/2° standard illuminant.
//aR, aG and aB (RGB Adobe 1998) output range = 0 ÷ 255

var_X = X / 100
var_Y = Y / 100
var_Z = Z / 100

var_R = var_X *  2.04159 + var_Y * -0.56501 + var_Z * -0.34473
var_G = var_X * -0.96924 + var_Y *  1.87597 + var_Z *  0.03342
var_B = var_X *  0.01344 + var_Y * -0.11836 + var_Z *  1.34926

var_R = var_R ^ ( 1 / 2.19921875 )
var_G = var_G ^ ( 1 / 2.19921875 )
var_B = var_B ^ ( 1 / 2.19921875 )

aR = var_R * 255
aG = var_G * 255
aB = var_B * 255

My first calculations showed that D65/2° is the wrong matrix. On brucelindbloom.com I found a conversion matrix for D50 and the calculated values are much better in the range of +- 1 R, G or B value making the calculation forward and backwords. I think for my purpose quite good. It seems taking M0 measurement data give the "best" result.

I will do some additional testing ont the formula with additional measurement values to see whether this is a good way for me.

Hope this helps to understand what I am doing.

Maximilian

So I presume you goal is to print patches with known colors that will start off the same for the 4 printers. Then observe the changes over time for the 4 printers. This requires printing a patch set readable by an I1. So you need to create patch sets in an RGB space that, when printed, yield the same colors on each printer.

There are ways to do this with varying degrees of consistency. If you have profiles for each printer the best approach is to transform the LAB values into the printer's device RGB space and use those in I1Profiler and print directly from I1Profiler.

A somewhat less consistent way to do this is to use Lightroom and print using Relative Colorimetric after assigning the I1Profiler generated tiff image to the colorspace you used to make the RGB values from the LAB values. These patches will read somewhat lower L* and slightly lower saturation but should be fairly consistent between the printers. At least if they are in gamut. Ideally you should print using Absolute Colorimetric as that would get your patches quite close to the original LAB values. This would require Photoshop since Lightroom cannot print Absolute Colorimetric.
Logged

JRSmit

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 922
    • Jan R. Smit Fine Art Printing Specialist
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #5 on: October 15, 2018, 02:53:46 am »

Why not use the patch files of colorcheck-online.com, or even better their functionality as well, to compared measurements?

Logged
Fine art photography: janrsmit.com
Fine Art Printing Specialist: www.fineartprintingspecialist.nl


Jan R. Smit

maximilian59

  • Newbie
  • *
  • Offline Offline
  • Posts: 27
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #6 on: October 15, 2018, 03:37:31 pm »

@Dough
As I will not compare the printers to each others, just how paper ink combinations fade, I think your last suggestion is the best way to go.
I will only print one sheet of the different papers on the really different printers (Pro-1000 with OEM inks, Pro-100s with OEM and Precision Colors inks, tiny little HP Photo Envy 6230 and a Brother MFC-5890NC with third party refill inks). My personal goal is to convince more people, that printing is fun with the right tools: good printer, good paper and good inks. Here in Germany most people are only talking about how to get cheapest print not how to get a good print. :(

@JRSmit
I have all the tools I need for my project and I want to learn more by doing things by myself. As an engineer in a development department, I can't let the fingers from testing and learning. :)
Logged

maximilian59

  • Newbie
  • *
  • Offline Offline
  • Posts: 27
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #7 on: October 18, 2018, 03:10:04 pm »

What is determining in which order the patches are printed  with i1profiler?
I made a set with 60 patches by manual input. When I want to save TIFF,  with 30 patches in a row, there are 1 to 15 and 31 to 45 in the first row. 16 to 30 and 46 to 60 in the second row. I want 1 to 30 and 31 to 60 in a row.
Any suggestions?
Logged

Doug Gray

  • Sr. Member
  • ****
  • Offline Offline
  • Posts: 2197
Re: i1profiler: Loading patch sets with L*ab values instead of RGB
« Reply #8 on: October 18, 2018, 05:18:28 pm »

What is determining in which order the patches are printed  with i1profiler?
I made a set with 60 patches by manual input. When I want to save TIFF,  with 30 patches in a row, there are 1 to 15 and 31 to 45 in the first row. 16 to 30 and 46 to 60 in the second row. I want 1 to 30 and 31 to 60 in a row.
Any suggestions?

I1Profiler puts patches in column major format. That is, for a 2x30 grid, the first patch goes in R1C1, second in R2C1, third in R1C2, etc. The columns are populated from top to bottom left to right.
Logged
Pages: [1]   Go Up