TI1, TI2, CSV and printtarg target files for SpyderPrint Targets

knowing

Printing Apprentice
Joined
Oct 24, 2025
Messages
16
Reaction score
3
Points
10
Printer Model
HP CLJ5550, Brother MFC-9460
Just to let everyone know,
If you or anyone are interested in the color data for SpyderPrint targets, then I a script "read_image_patch_colors" that extracts color values from a rectangular grid of color patches in an image, computes colorimetric values (RGB percentages, XYZ, Lab), applies row/column labeling rules, and writes three output files:
  • ArgyllCMS .ti1 file
  • ArgyllCMS .ti2 file
  • CSV file (space-separated)
You can find the script here:
https://soul-traveller.github.io/read_image_patch_colors/

There is a folder "Example Targets Read" which contain most of the SpyderPrint targets, as well as the generated files. I have used it on the following targets:
  • Expert Target (3-pages, 729-patches)
  • Expert Target (large) (1-page, 729-patches)
  • Expert Target Plus Grays (4-pages, 967-patches)
  • EZ 729 Colors Plus Grays (9-pages, 996-patches)
  • High Quality Target (1-page, 225-patches)
  • High Quality Target Plus Grays (2-pages, 463-patches)
  • LaserSoft Advanced Target (864 patches)
I have also updated the release in the link with many printtarg targets based on .ti1 files made for SpyderPrint and LaserSoft Advanced Targets.

Hope this is useful for you or anyone in the forum.

I made this as one step in a plan to try using SpyderPrint measurements, and then use the output for ArgyllCMS to create profiles. I am not there yet an not sure I will ever finish that work.

Let me know if any bugs or problems are found.

Cheers,
K
 

knowing

Printing Apprentice
Joined
Oct 24, 2025
Messages
16
Reaction score
3
Points
10
Printer Model
HP CLJ5550, Brother MFC-9460
Just to let everyone know,
If you or anyone are interested in the color data for SpyderPrint targets, then I a script "read_image_patch_colors" that extracts color values from a rectangular grid of color patches in an image, computes colorimetric values (RGB percentages, XYZ, Lab), applies row/column labeling rules, and writes three output files:
  • ArgyllCMS .ti1 file
  • ArgyllCMS .ti2 file
  • CSV file (space-separated)
You can find the script here:
https://soul-traveller.github.io/read_image_patch_colors/

There is a folder "Example Targets Read" which contain most of the SpyderPrint targets, as well as the generated files. I have used it on the following targets:
  • Expert Target (3-pages, 729-patches)
  • Expert Target (large) (1-page, 729-patches)
  • Expert Target Plus Grays (4-pages, 967-patches)
  • EZ 729 Colors Plus Grays (9-pages, 996-patches)
  • High Quality Target (1-page, 225-patches)
  • High Quality Target Plus Grays (2-pages, 463-patches)
  • LaserSoft Advanced Target (864 patches)
I have also updated the release in the link with many printtarg targets based on .ti1 files made for SpyderPrint and LaserSoft Advanced Targets.

Hope this is useful for you or anyone in the forum.

I made this as one step in a plan to try using SpyderPrint measurements, and then use the output for ArgyllCMS to create profiles. I am not there yet an not sure I will ever finish that work.

Let me know if any bugs or problems are found.

Cheers,
K


Unfortunately, I found a big error in the code. I suspected something was up when I saw the dull colors from the LaserSoft Advanced printtarg targets.

Datacolor SpyderPrint documentation specifically instructs to print images with "Generic RGB Profile.icc" profile when intending to read back with the hand spectral scanner. This implies that the images have been created with "Generic RGB Profile.icc", which uses gamma 1.801 and a linear matrix
Xpcs | 1,047882. 0,022919. -0,050201 | Xsrc
Ypcs = | 0,029572. 0,990494 -0,017059 | Ysrc
Zpcs | -0,009232 0,015076 0,751648 | Zsrc

I have to reverse engineer the original RGB by inverse applying the matrix and removing the gamma. Currenty, the code assumed the output image was D65 sRGB with 2.2 gamma, which would also be very wrong for normal target images, such as those printtarg generate.


* Step 1: Inverse matrix (PCS adaptation), encoded RGB (approx. D65) → D50
* Step 2: Invert gamma (Encoded RGB (D50) → original (linear) RGB patch)
* Step 3: linear RGB (0..100) → XYZ (D50) output scaled Y=100
* Step 4: XYZ (D50) scaled Y=100 → L*A*B* (D50), L in ~[0..100], a,b roughly [-128..128].

Then use these three sets RGB, XYZ and LAB for generating ti1, ti2 and csv files.

So, I am working to fix this issue. I will notify when I have an update.

Please do comment on this, if I am wrong or need to do this differently, to get the correct reverse engineered RGB values from the SpyderPrint images.

Cheers,
K
 

pharmacist

Printer VIP
Platinum Printer Member
Joined
May 29, 2007
Messages
2,959
Reaction score
1,710
Points
313
Location
Ghent, Belgium
Printer Model
SC-900 ET-8550 WF-7840 TS705
Thanks for the update. I took some time to use PS to manipulate a bit in order to get a combined Spyderprint 729 patch Expert target with the 238 patch Extended patch target into 2 sheets of A4 for better scanning experience with the i1Pro1/2 spectro scanning table/ruler.

The extended grays target of Spyderprint should neutralise black and white printing even with printers that have no gray inks by measuring multiple color points of near neutrals/grays around the neutral axis and correcting for any color shifts in the grays (if your printer tends to print "neutral" grays with a color hue).
 

Attachments

  • ArgyllCMS combined Spyderprint Expert + Extended Grays target 2x A4.zip
    8.3 MB · Views: 6
Last edited:

knowing

Printing Apprentice
Joined
Oct 24, 2025
Messages
16
Reaction score
3
Points
10
Printer Model
HP CLJ5550, Brother MFC-9460
nice @pharmacist :)
I was not able to generate this with 975 patches using printtarg, so I had to add data (black and white) to fill in the missing patches, so the result was 1012 patches over two pages. These are in the latest update, but I can add yours to the github release also.

Questions on the problem I have with the output of the script:
Do you have any idea if the color values that are output from the script are correct? Or maybe anyone else has knowledge about this?

As mentioned above, the script makes some assumptions that image that is read is encoded with sRGB D65 with 2.2 gamma, but that might not true at all.

Firstly, the images from SpyderPrint are RGB images. When using pillow image method in python the mode comes back as RGB (Not CMYK, LAB, Grayscale or any other of the supported modes: see Pillow image supported modes). This is the same as for printtarg generated target images. They also are RGB images.

Secondly, since SpyderPrint requires that the targets to be printed WITH color management using the "Generic RGB Profile.icc" (also attached here, in case you don't have it) , then the question is: is correct to assume that the images also are encoded with this profile. Is this reasonable?

Currently the script does:
  1. Sample patches RGB values from image
  2. Convert RGB to CIEXYZ (D50, scaled so Y=100) using sRGB space
  3. Convert XYZ (D50) to Lab (D50), scaled so L in [0..100], a,b [-128..128]
  4. RGB scaled to [0..100]
  5. RGB written to ti1 file
  6. RGB, XYZ and LAB (if specified) written to ti2 and csv file.
The output values seem quite ok, and the whole issue may not matter at all, since I use printtarg to create targets from the values for printing.

Some sample of patches from the ti2 file for "EZ 729 Colors Plus Grays 1 of 9 (108-patches)", show that extreme values seem reasonable:
Full Black
1 "A1" 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
Full Blue
3 "C1" 0.000000 0.000000 100.000000 14.310141 6.062584 71.427844
Full Red
7 "G1" 100.000000 0.000000 0.000000 43.604040 22.248685 1.393110
Full Pink
9 "I1" 100.000000 0.000000 100.000000 57.914181 28.311269 72.820954
Full Green
19 "A3" 0.000000 100.000000 0.000000 38.506805 71.688445 9.710533
Full Cyan
21 "C3" 0.000000 100.000000 100.000000 52.816946 77.751029 81.138377
Full White
27 "I3" 100.000000 100.000000 100.000000 96.420986 99.999714 82.531487

Steps between extremes also seem reasonable.

Maybe everything is ok then, and I overreacted.

Appreciate any thoughts. Thanks.

Cheers,
K
 

Attachments

  • Generic RGB Profile.icc.zip
    1.2 KB · Views: 3
Top