Now loading "Argyll CMS" page

from ..... please wait.

Argyll Color Management System:

Argyll CMS is an open source, ICC compatible color management system. It was developed and it is being maintained and well supported by Graeme Gill. Besides other neat functions, it supports accurate ICC profile creation for scanners and printers and handles very well calibration and profiling of displays. There is also a lots of smaller utilities for gamut visualization, icc profile inspection, and file format conversion. Argyll CMS has its own mailing list where development, bugs, and usage of Argyll modules are discussed .

While Argyll source code has been written to compile under different operating systems, I have only run the compiled version under Window XP (SP2). All Argyll's modules are command line utilities executed from the DOS shell. Under Windows XP, go to Start → Run and type "cmd" (without the quotes) into the "Open" field. Argyll has a pretty exhaustive documentation that also includes examples for the most common tasks. It is definitely worth to visit and print out the Online Documentation before you delve any deeper into Argyll's usage options.

If you prefer a graphical user interface over the command line mode, see the Argyll CMS links at Digital Outback Photo Forum maintained by Herman Teeuwen.

Supported Measurement Devices : as of July 2007, Argyll v0.6 supports X-Rite DTP-41(T), DTP51, DTP-92, and DTP-94 devices. Gretag-Macbeth (X-rite) line of supported devices include Spectrolino and SpectroScan(T), Eye-One Pro, Eye One Display 1/2/LT, Huey. Spyder 2 and 3 are now also supported. Package can be downloaded from here (use link). The latest version 1.9.2 was released on 2016/10/17 and Win executable can be downloaded from the Argyll web page (zip file). Details on supported instruments are summarized here.

Argyll CMS Installation :

Detailed description of the Argyll CMS installation is provided in the online Documents (Installing the Software). I will only illustrate how I set it up on my Windows XP-SP2 machine. For this setup, I use the following directory: C:\CMS.

Here are the steps :

  • Download the latest Argyll CMS package for Windows (free)
  • Create a directory, e.g. C:\CMS and unzip the package into it (you should see five folders "bin, doc, usblibw, ref", and "diag")
  • Install USB drivers (read the following)

At this point, things can get a bit tricky. Since you have probably used your color measuring device(s) with other applications (i1Match3, ColorEyes Display, ProfileMaker, BabelColor CT&A), USB drivers were setup at the time when you first plugged the USB connector in. Unfortunately, these drivers won't work with Argyll modules. Online Documents suggest two solutions. We will get to them later.

Now the important part: Backup your Registry & settings !!!

Here is how (remember, we are on the XP machine):

  • Go to Start → Accessories → System Tools → System Restore and follow the option "Create a Restore Point"
  • Name your restore point and continue as instructed
  • You can always come back here and use "Restore Computer to an Earlier Time" to get back where you started from

Having Registry backed up, plug your measurement device into a USB port. At this point, nothing should happen as the device has been previously setup. If "Found new hardware" message pops out, follow the instructions in the Online document. Otherwise, open the Device Manager to see your device listed.

To open the Device Manager:

Right-mouse-click on the My Computer → Properties → Hardware → Device Manager. Other option is to open a DOS shell and type devmgmt.msc followed by the Enter.

c:\any directory\>devmgmt.msc
Figure 1: Device Manager
devmng devmng

At this point, you should see something similar to the pictures on the left (Fig. 1). In one example, I have the Eye1Pro device listed under the section of X-Rite devices. Alternatively, you can see the same device listed under "Eye-One display" (not shown), but not both at the same time. Ideally, all your devices should be listed under LibUSB-Win32 header as they are accessed via the system independent drivers from the libusb project (see later). Now, double-click the i1 Pro icon (or an icon next to your listed device) and choose the tab "Driver". Next step is to click on "Update Driver" window. "Welcome to the Hardware Update Wizard" window will appear. Check the option as shown below and continue by clicking Next.


Now, make sure that "automatic" install is NOT selected


navigate to the corresponding directory where Argyll usb drivers are stored (C:\CMS\usblibw) and check the options as shown below.


Finish by clicking Next - driver will be (re)installed. When you want to use your color measuring device in the original application, do the same steps and select the path to your original drivers (usually on application CD or application directory). Also, selecting "Don't search ..." in the last snapshot, menu of available drivers is provided when clicking the Next button. Listed are all installed drivers with Argyll drivers being marked as (Argyll), so the original drivers are the other ones in the list.

Should a message "Cannot find any newer drivers than are already installed" appear, leave your device in the USB port and Uninstall the driver. In Fig. 1 right-mouse click the "old" device, go to the Drivers tab and choose Uninstall. Unplug your device, reconnect it again a follow the installation instructions above. In the last window (shown just above), always choose the right location of your usb drivers. Most of the applications (including Argyll, PatchTool, ProfileMaker) have the necessary drivers in their installation directory (usually called "drivers").

Unfortunately, I did not have much luck with installation of the Eye1Pro drivers until I installed the so called filter drivers. You can download the "filter drivers" from (you will want the libusb-win32-filter-bin-x.x.x.x.exe). Installation is quite easy - just double-click it and follow instructions on the screen and the download site. This solved all the problems and I could access both the DTP94 and Eye1Pro devices from any application (note: you may need to unplug and reconnect USB device between changing applications).

Successful installation of the driver (in this case DTP-94) is indicated by the following output (here highlighted in cyan). Just type dispread -? on the command prompt and watch for the detected devices (there is a space between the dispread and the dash). In this specific case, two displays were identified. Display 1 is my primary display.

C:\CMS\bin>dispread -?
Read a Display, Version 1.0.1
Author: Graeme W. Gill, licensed under the GPL Version 3
Diagnostic: Usage requested
usage: dispread [options] outfile
 -v              Verbose mode
 -d n                 Choose the display from the following list (default 1)
    1 = 'DISPLAY1, at 0, 0, width 1280, height 1024 (Primary Display)'
    2 = 'DISPLAY2, at 1280, 0, width 1920, height 1200'
 -c listno            Set communication port from the following list (default 1)
    1 = 'usb:/bus0/dev1 (Xrite DTP94)'
    2 = 'COM1'
    3 = 'COM2'

USB Drivers - if something goes wrong : on a computer system with multiple USB hubs and connectors, chances are rather high that drivers will get messed up after an update, roll-back, or new driver installation. To be on the safe side, keep your system backed-up or even better - create a full disk image of your system. When your devices (any, not just the measurement ones) will not be recognized by the application, try to re-install the corresponding driver as shown above. If that does not solve the problem, restore Registry to an earlier "well-working" point. In case that simple registry restoration won't work or your system won't even boot, go to the system restore page or simply restore the disk image if you have one.

This concludes the installation part. As far as I could tell, it is mostly the Windows/USB part that may create some problems. Installation of the Argyll modules is actually very straightforward.

(top)↑Monitor Calibration and Profiling:

This section describes the process of monitor calibration followed by the profiling of that calibrated state. In this example, I use the X-rite DTP-94 colorimeter and the Argyll ver 1.0.0. Primary monitor is LCD Eizo CG-19.

  • Connect the colorimeter via its USB cable to the computer
  • Verify successful communication between the Argyll and the colorimeter by issuing command dispread -?. If successful, continue with the following
  • Ensure that monitor is turned on for about 30-60 min before measurements
  • Clear the video card LUT either using the CalibrationLUT tester or by typing the following command:
    C:\CMS\bin>dispwin -c
  • Make sure that no other LUT loader is present in your Startup folder (Start -> AllPrograms-> Startup)
  • To proceed with calibration, type in the following command string and then Enter:
    C:\CMS\bin>dispcal -v -K -yl -t 6500 -qh -gs -f 1 data\yourcalibfile
    • -v is a verbose mode
    • -K performs colorimeter/spectrophotometer calibration
    • -yl identifies the monitor as an LCD type
    • -t 6500 targets monitor temperature to D65
    • -qh sets calibration quality to high
    • -gs targets response curve of the sRGB color space that has a straight segment at the dark end and the overall gamma of 2.2.
    • -f offsets and scales the input or output values to match the ideal tone response curve. This is to account for a non-zero radiant output of the monitor. The ideal response curve is defined by the flag -g. Default is -f 0, which works on the input values. The value should be set between 0-1. Default settings (-f 0) result in more details in the shadows while -f 1 gave me better results when characterizing the monitor calibration.
    • yourcalibfile (entered without any extension) will be created in subdirectory \data as *.cal file
    • [note 1] - should you use multiple displays, add the switch -d 1 or -d 2 to the above command string to indicate which display is to be calibrated. Default is display 1.
    • [note 2] - you may as well omit the -t flag completely. In that case, the calibration will default to the so called "native white point" (for LCD ~ 6,000-6,500 K). A few downsides to setting the white point temperature: by constraining the 8-bit calibration table (in video LUT) the smoothness of the gray tones may suffer. Also you may not be able to achieve the maximum brightness of the monitor while keeping other parameters (RGB gains, gamma) at the required values.
    • [note 3] - in case that OSD (on-screen display) panel cannot be moved around the screen, use the -p flag to position the test patch on your monitor. The following example moves the test patch left of the center; -p 0.15,0.4,1

The "dispcal" module first sets up the measuring device, then asks for its calibration (optional) and then reports preset parameters. Here is the output from my pre-calibration run.

Setting up the instrument
 Instrument Type:  DTP94
 Serial Number:    103920
 Boot version:     D929
 Software version: DB06
 Place cap on the instrument, or place in on a dark surface,
or place on the white calibration reference,
 and then hit any key to continue,
 or hit Esc, ^C or Q to abort:                  <<<--- Colorimeter calibration
Calibration complete
Setting up the instrument
 Instrument Type:  DTP94
 Serial Number:    103920
 Boot version:     D929
 Software version: DB06
Place instrument on test window.     <<<--- Now position colorimeter on the screen
Hit Esc, ^C or Q to give up, any other key to continue:
Display type is LCD
Target white = 6500.000000 degrees kelvin Daylight spectrum
Target white brightness = native brightness   <<<--- Brightness will be set manually
Target black brightness = native brightness
Target gamma = sRGB curve 
Display adjustment menu:
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)    <<<--- choose option 2)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration                          <<<--- then choose option 7)
8) Exit
Doing some initial measurements   <<<--- R,G,B,W patches are displayed and measured
Adjust R,G & B gain to get target x,y. Press space when done.
   Target B 122.42, x 0.3128, y 0.3291   <<<--- Try to get Brightness to 120 cd/m2
\ Current B 122.28, x 0.3157, y 0.3320  DE  1.6  R-  G-  B++ >
<<<--- adjust RGB gains to minimize DE --->>

In the "Display adjustment menu" choose the option (2), try to minimize the DE value (1.6) while changing the Gain values of the RGB channels (-- next to the channel letter means to lower the gain for this channel). Adjust the R,G,B Gain controls (not the Hue / Saturation). The gamma is set to sRGB, but you can set other gamma types (L*, REC 709 video standard and others). Typical optimization values are shown at the bottom of the pre-calibration snapshot (above). The monitor brightness (B) can be set manually by using the Brightness button on the OSD screen. Just watch the Target B / Current B numbers and adjust accordingly. Process of setting color temperature and contrast/brightness is often called a pre-calibration.

Once the monitor hardware was adjusted to minimize DE error between the measured and desired white point values (t = D65), press the space bar and choose option 7) to run the full calibration ("Continue on to calibration"). Multiple measurements of the gray patches and RGB ramps are run 4-5 times to minimize errors between the desired gamma and the white point values. Total time of this run is about 20-25 min. Here is the main part of my output report from the calibration run:

Display adjustment menu:
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration                    <<<--- run full calibration
8) Exit
Commencing device calibration
patch 6 of 6                          <<<--- Blk,R,G,B,W,Blk patches are run
Black = XYZ   0.33   0.32   0.48
Red   = XYZ  57.65  30.09   1.69
Green = XYZ  37.13  79.20  11.65
Blue  = XYZ  22.42  13.86 118.12
White = XYZ 116.28 122.27 129.82
patch 80 of 80                     <<<--- gray patches and RGB ramps are run
Initial native brightness target = 119.300000 cd/m^2
Had to scale brightness from 119.300000 to 118.686181 to fit within gamut,
corresponding to RGB 1.000000 0.995112 0.997472
Target white value is XYZ 112.808644 118.686181 129.177072
Adjusted target black XYZ 0.34 0.33 0.47, Lab 2.51 0.91 -1.34
Target black after min adjust: XYZ 0.34 0.33 0.47, Lab 2.51 0.91 -1.34
Gamma curve input offset = 0.035923, output offset = 0.000000, power = 0.000000
Total Iteration 4, Final Samples = 96 Final Repeat threshold = 0.400000
Creating initial calibration curves...
Doing iteration 1 with 12 sample points and repeat threshold of 1.131371 DE
patch 12 of 12
Brightness error = -0.236181 cd/m^2
White point error = 0.462697 deltaE
Maximum neutral error (@ 0.858562) = 0.920341 deltaE
Average neutral error = 0.548430 deltaE
Number of measurements taken = 21
Computing update to calibration curves...
Doing iteration 2 with 24 sample points and repeat threshold of 0.800000 DE
patch 24 of 24
Brightness error = 0.213819 cd/m^2
White point error = 0.331869 deltaE
Maximum neutral error (@ 0.038426) = 0.783172 deltaE
Average neutral error = 0.468951 deltaE
Number of measurements taken = 32
Computing update to calibration curves...
Doing iteration 3 with 48 sample points and repeat threshold of 0.565685 DE
patch 48 of 48
Brightness error = 0.183819 cd/m^2
White point error = 0.346988 deltaE
Maximum neutral error (@ 0.387794) = 0.562814 deltaE
Average neutral error = 0.377419 deltaE
Number of measurements taken = 107
Computing update to calibration curves...
Doing iteration 4 with 96 sample points and repeat threshold of 0.400000 DE
patch 96 of 96
Brightness error = -0.386181 cd/m^2
White point error = 0.336375 deltaE
Maximum neutral error (@ 0.211703) = 0.761253 deltaE
Average neutral error = 0.355821 deltaE
Failed to meet target 0.400000 delta E, got worst case 0.578048
Number of measurements taken = 507
The instrument can be removed from the screen.
Written calibration file 'data\'<<<--- file 
                                                        is created

Note the error values at the bottom of the report (in yellow). Re-run the calibration if values are greater than 2. Calibration file is created in the subdirectory \data. Data stored in this calibration file can be loaded into the video card by running the following batch file:

@echo  off

cd ..            <<<--- Go to the root of the c: drive
cd ..                   in case that your \bin is not in PATH 
cd  C:\CMS\bin                  
dispwin  data\  <<<--- load calibration data into video card

I recommend saving these few lines above into a text file, say, loadcal.bat (using the Notepad), placing the file on your desktop and running it every time you reboot your computer (by double-clicking it). Download it here and edit the file before use by a right-mouse clicking and selecting "edit" (remove .txt before launching it). Fresh calibration data will be loaded (manually) into the video card LUT and your monitor set to a calibrated state. Do not forget that this data is only a correction to the factory/hardware pre-set of you display. As such, this data do not characterize the monitor and they always have to be used with the corresponding values set on OSD panel during pre-calibration.

At this point, your monitor is calibrated and it should be able to adequately display photographs even in applications that are not color managed (Internet Explorer, Firefox 2.x, Windows Paint or Picture Viewer).

A nice feature of the dispcal module is the -u flag that updates the existing calibration file by running a smaller number of refinement passes. This improves accuracy of the calibration file as the monitor parameters may have drifted over the time. To run the update routine, clear the LUT (using the CalibrationLUT tester) and issue the following commands:

C:\CMS\bin>dispcal -v -K -u data\yourcalibfile


Let's continue with the profiling. The first step includes creating a set of test patches that evenly sample the monitor RGB color space. In this example, we will create two such sets, small and large. The small set will not assume any prior knowledge of monitor color pace, while the large set will use previously created monitor profile. If you do not have any previous profile just use the profile that came with your monitor (on installation CD).

To generate the small set, issue the following command:

C:\CMS\bin>targen -v -d3 -g33 -f200 data\small200
  • -v is a verbose mode
  • -d3 chooses RGB colorant combination
  • -g33 creates 33 gray patches that are equally spaced
  • -f200 generates full spread test patches of total number equal to 200
  • data\small200 file small200.ti1 will be created in the subdirectory \data

Resulting *.ti1 file contains 4 white patches, 33 patches of gray (0-100), 6 patches of primary and secondary colors (RGBCMY), and remaining 157 random color patches.

To create the large set, issue the following command:

C:\CMS\bin>targen -v -d3 -g33 -f933 -A.5 -c data\my_monitor.icc data\large933
    • -v is a verbose mode
    • -d3 chooses RGB colorant combination
    • -g33 creates 33 gray patches that are equally spaces
    • -f933 generates full spread test patches of total number equal to 933
    • -A.5 sets the degree of adaptation (0.5) to the known monitor characteristics as described by the following monitor icc profile
    • -c specifies the previous icc profile of the monitor
    • data\large933 file large933.ti1 will be created in subdirectory \data

Structure of the larger set is similar to the smaller one.

We now proceed to measurements. Let's reconnect the X-rite DTP-94 colorimeter and make sure that previously created small200.ti1 file is in the \data directory. If you have just finished the calibration and your colorimeter is still attached to the computer there is no need to calibrate it again, so just omit the -K tag in the next command string. Also, load the created calibration into the video card LUT (use the batch file created earlier). To start the process, type:

 C:\CMS\bin>dispread -v -yl -K data\small200

With the -K flag present, we will be asked to place the instrument on a dark surface and then hit the "Enter" to start the measurement. Measurement file small200.ti3 will be created in the \data directory. We will use the same command with the large933 file at the end. Readings of the corresponding patches will be taken off the screen and the corresponding *.ti3 files will be created. For the larger target file it will take about 30 min depending on the instrument used.

Now, having both measurement data files, we can approach the final stage of making the monitor profile. In this example, we will create two profiles - smaller shaper/matrix profile and large LUT based profile.

To create the shaper/matrix profile, enter the following command string:

C:\CMS\bin>colprof -v -D"sm_6500_g22_DTP94" -qm -as data\small200
    • -v is a verbose mode
    • -D writes the profile description tag (as seen by Photoshop)
    • -qm quality is medium
    • -as algorithm is shaper+matrix
    • data\small200 profile small200.icm will be created in subdirectory \data

In less than a minute, optimization finishes and the profile is created. Check the information provided in the output. The matrix is the XYZ to RGB transformation matrix that transforms the input RGB values into the device-independent XYZ values. Note the magnitude of the errors at the end - watch for large average errors of delta E > 3-4.

Find white & black points
Initial white point = 0.947594 0.993433 1.077535
Initial black point = 0.004377 0.004403 0.005448
Display Luminance = 119.897729
White point XYZ = 0.947594 0.993433 1.077535
Black point XYZ = 0.004377 0.004403 0.005448
Fixup matrix for white point
After white point adjust:
Matrix = 0.492682 0.324698 0.146820
         0.253023 0.646698 0.100279
         0.008245 0.077641 0.739015
Done gamma/shaper and matrix creation
Profile done
profile check complete, peak err = 2.968931, avg err = 0.595621<--- check errors here

On Windows XP system, copy the file to the c:\Windows\system32\spool\drivers\color, right-mouse click on it and choose "install". Profile will now become available to all color-managed applications such as Photoshop.

To create the large and probably more accurate profile based on lookup tables (LUT), enter the following command string:

C:\CMS\bin>colprof -v -D"lut_6500_g22" -qh -bh -S data\SPR2400PremGlsyBstPhoto.icc 
           -cpp -dmt data\large933
    • -v is a verbose mode
    • -D writes the profile description tag (as seen by Photoshop)
    • -qh quality is high (and size of about 1 Mb)
    • -bh quality of a PCS-to-device B2A table (and size of about 1 Mb)
    • -S *.icc creates perceptual and saturation gamut mapping to B2A tags of icc profile. Important for soft-proofing. Typically, a printer profile is used in this tag.
    • -cpp sets viewing conditions for gamut mapping to the printing direction
    • -dmt sets viewing conditions for gamut mapping back to monitor
    • data\large933 profile large933.icm will be created in subdirectory \data

In about 10 min, optimization finishes and the large profile is created. Note the magnitude of the errors at the end - watch for large average errors of delta E > 3-4.

profile check complete, peak err = 1.421518, avg err = 0.394217   <--- check errors here

Copy and install the profile to the same directory as the small shaper/matrix one.

This concludes the calibration and profiling examples. In summary, we have calibrated our monitor by setting it to a defined state by using hardware controls and the corresponding correction data in a form of .cal file. This file can be manually loaded into the video LUT when computer is re-started. The same values later become the "vcgt" tag of our profile. We have created two different profiles for our calibration. Remember that profile is valid only for the corresponding calibration. If you plan to work in non-color managed applications (web browsers), good calibration is sufficient. When working in Photoshop, both profile and calibration have to be used together.

Validation and characterization of the calibration data is discussed in other section of these web pages.

(top)↑Checking the Content of icc/icm profiles:

To inspect content of created profiles, use Argyll's utility iccdump. For example, to retrieve XYZ values for the monitor RGB primaries along with the white point, type the following:

C:\CMS\bin>iccdump -v3 -t wtpt -t rXYZ -t gXYZ -t bXYZ data\small200.icm 
   > data\small200_dump.txt

Output of this command is conveniently directed to a text file small200_dump.txt. The tristimulus values (XYZ) of the "white point" are in the "monitor white" source (~ D65) while the corresponding L*a*b* data use the D50 source (standard PCS source/illuminant). That is why the large negative value of the b* suggests a bluish tint. Three remaining data lines of the XYZArray (red, green, and blue) are first transformed to D50 source (D65->D50 Bradford transformation) and then the corresponding L*a*b* data is calculated (D50).

  No. elements = 1
    0:  0.947601, 0.993439, 1.077530    [Lab 99.745740, -1.789839, -19.066491] white
  No. elements = 1
    0:  0.492676, 0.253021, 0.008240    [Lab 57.368614, 83.487160, 83.425035]  red
  No. elements = 1
    0:  0.324692, 0.646698, 0.077637    [Lab 84.313295, -84.524706, 81.979678] green
  No. elements = 1
    0:  0.146820, 0.100281, 0.739014    [Lab 37.892773, 34.702442, -99.884395] blue

This data is very useful when one wants to create the RGB to XYZ [D50] matrix:

|X|   | 0.492676 0.324692 0.146820 |
|Y| = | 0.253021 0.646698 0.100281 | * [R G B ]T
|Z|   | 0.008240 0.077637 0.739014 |

To get the correlated color temperature (CCT) for your calibrated monitor, use Bruce Lindbloom's CIE Color Calculator and enter the XYZ values (0.947601, 0.993439, 1.077530) into the first field named "XYZ". Check "Scale XYZ " box and click the corresponding XYZ button on the left. Temperature of your monitor will appear lower in the field "Color Temp". In this particular case, the CCT of this calibration was 6,437 K (close to the requested 6,500K).

Another useful place to look at is the '*Trc' tag that contains monitor gamma for each channel. Open the output data and paste them into the Excel sheet (download here) to visualize gamma curves for each channel. This spreadsheet will also calculate gamma for each RGB channel.

C:\CMS\bin>iccdump -v3 -t rTRC -t gTRC -t bTRC data\small200.icm > data\small200_gamma.out

Lookup RGB values through an ICC profile:

Sometimes, one may wish to obtain L*a*b* or XYZ tristimulus values that would result from conversion of RGB values through an icc/icm profile. For LUT-based profiles, one has the option to use specific tags for the device-to-PCS direction or the opposite PCS-to-device direction with up to four rendering intents. For matrix based profiles, TRC tags are used to transform RGB data into desired output values. Batch of the RGB values can be fed in and the output data redirected to a text file. One typical command string is following:

C:\CMS\bin>icclu -v -ff -ir -pl -s 255 data\srgb.icm < data\gray_52_in.txt 
  > data\srgb_grayLab.out
    • -v is a verbose mode
    • -ff forward function (device-to-PCS, A2B)
    • -ir relative colorimetric intent (uses A2B1 table if present)
    • -pl force Lab_PCS output, -px gives the XYZ D50 values
    • -s scale of the RGB input data (default 0-1)
    • - *.icc/*.icm profile used for value lookup
    • - *_in.txt text file containing input RGB values (one line per color)
    • - *.out output file containing converted data (open and process in Excel)

For simple extraction of measurement data from any LOGO or CGATS formatted file, use scripts at this web page. Such files are typically created by ProfileMaker 5, Argyll CMS (ti1, ti3), and BabelColor PatchTool applications.

(top)↑Scanner Profiling:

Since scanners (and cameras) are input devices, the corresponding input profiles are created as a result of profiling. Scanner profiles are relatively easy to make since profiling is done in a well-controlled environment (controlled lightning, fixed image position). As discussed in the section "Scanning", profiling involves scanning a test chart (IT8.7, HCT, Eye-One Scan Target 1.4, or other) and applying the corresponding reference file to the obtained image in profile generation software.

The same applies to Argyll CMS. Two modules are required, i) scanin, and ii) colprof. The former utility reads in the raw (device) RGB values from the scanned image (saved as tiff format file). In order to do that, a chart recognition template file (with extension .cht) is required to ensure proper reading and alignment of color patches. Argyll supports about six test charts (targets) including the popular IT8.7 targets [it8.cht], GretagMacbeth ColorChecker (24 patch, DC, SG) [ColorChecker.cht, ColorCheckerDC.cht, ColorCheckerSG.cht, GretagMacbeth Eye-One Pro Scan Target 1.4 [i1_RGB_Scan_1.4.cht], and HutchColor HCT [Hutchcolor.cht]. The process is finished by creating a .ti3 file which contains RGB and CIEXYZ values for each measured patch. CIE values are typically coming from the reference file supplied by target manufacturer (.txt format). To extract reference and measurement data (XYZRGB) from this .ti3 file, use link to the following page and upload file which you obtained after scanner measurement.

SCANIN: as an example, we will create SFg190_HCT.ti3 file from reflective Hutchcolor HCT target and 16-bit image SFg190_HCT.tif.

C:\CMS\bin>scanin -v data\SFg190_HCT.tif ref\Hutchcolor.cht data\HCT.txt
    • -v is a verbose mode
    • data\SFg190_HCT.tif scanned image containing raw RGB data
    • ref\Hutchcolor.cht path to the target template (supplied by Argyll CMS)
    • data\HCT.txt reference target file with CIE data (supplied by manufacturer)
    • [note 1] -o flag will format the output .ti3 file as generic CGATS format with .val extension. This format is useful when using PatchTool or ColorThink software later.
    • [note 2] -G flag may improve recognition of images scanned in linear mode (-G 1.0). For typical gamma corrected images (1.8-2.5), use of -G flag is not necessary and may confuse the patch recognition algorithm.

For diagnostic purposes, use the following flags: -dipn or -dipna and data/diag.tif to review accuracy of the image reading. Open the file diag.tif after scanin is finished.

C:\CMS\bin>scanin -v -dipna data\SFg190_HCT.tif ref\Hutchcolor.cht data\HCT.txt

Name of the .ti3 file is passed from the scanned .tif image file.

COLPROF: now with the .ti3 file in hand, we will proceed to profiling. Name of created icc/icm profile is still the same as the original .tif image (SFg190_HCT.icm). In this case we will create a LUT based profile that contains only A2B0 table (RGB -> PCS).

C:\CMS\bin>colprof -v -D"SF4990_g190_ARG_LUTqm_HTC" -qm -bn data/SFg190_HCT
    • -v is a verbose mode
    • -D writes the profile description tag (as seen by Photoshop)
    • -qm medium quality (size about 80 Kb)
    • -bn do not create BtoA (PCS to device) LUT table - scanner input profile does not need it
    • data/SFg190_HCT name of the .ti3 file from the preceding section (without extension)

Check the delta E output at the end of the output. While peak error may be occasionally high (10-20), average error should be low (1-2).

To run both steps at once, copy/paste the following command line string into the DOS shell window (after C:\CMS\bin>):

cls && "scanin.exe" -v2 -dipna "data/SFg190_HCT.tif" "data/Hutchcolor.cht" "data/HCT.txt" "data/diag.tif" && "colprof.exe" -v -D "SF4990_g190_ARG_LUTqm_HTC" -qm -bn "data/SFg190_HCT" > data/scanner_out.txt && echo. && echo. && echo -------------------- END PROCCESS -------------------- && echo. && echo.

Modify text in red with your specific files and names. I added a command that creates a text output report (scanner_out.txt) which summarizes output messages (depending on value of -v tag). This command string was adopted from Gorazd Krumpak's JavaScript web page. If you followed installation of Argyll and have the same folder structure as described here, you can conveniently use the scan script link to customize your Argyll script.

Install the created icm profile by right-mouse clicking on it ->Install (Windows).

(top)↑Printer Profiling:

For now, some useful links to other sites:


This section is reserved for comments and tips from other users.

Links to other sites:



Back to TOP