Now loading "Imatest and GamutVision" page

from ..... please wait.


Imatest is a capable software package for measuring the key image quality factors. Based on analysis of those images, characteristics of cameras, lenses, printers, and scanners can be assessed in a great detail. Imatest consists of several modules that specifically analyze images of standard targets such as GretagMacbeth ColorChecker, Kodak Q-14, IT8, and many more. Imatest runs in compiled Matlab under Windows (2000 - Vista) and on Mac systems under Virtual PC. It was developed and is being further improved by Norman Koren. There are two versions for photographers - Studio and Master. Imatest Studio has everything that serious photographer needs for testing cameras, lenses, display calibration, printers, print papers, icc profiles and other technical parameters of digital imaging devices. There is a plenty of options for gamut visualization, icc profile inspection, color space conversions, and data comparison. Imatest has its own forum where development, bugs, and usage of Imatest are discussed.

There is very detailed documentation on the Imatest web site with a multitude of examples included. This web page will only focuses on examples not described in the manual. These would be examples that I found useful for analysis of LCD displays, printers, scanners and icc profiles. I definitely recommend reading and printing the Manual as it contains lots of theory and interesting observations.


Gamutvision is yet another product of the Imatest LLC. It is a gamut viewer based on the same architecture as its big brother Imatest. It is a powerful tool for learning color management, exploring icc profiles, and proofing color workflows. One can view gamuts of color spaces, displays, scanners, and printer profiles with immediate simulation of gamut mapping and rendering intents. Gamutvision enables preview of printer, paper, and display performance using icc profiles provided either by a manufacturer or profiles generated by yourself. While there is some overlap in modules between Gamutvision and Imatest, the latter does not allow gamut preview and gamut mapping simulation. Gamutvision has also its own forum where development, bugs, and usage are discussed. Similarly to the Imatest, Gamutvision has lots of tutorials and examples worth of reading (go to the bottom of this link).


Display Calibration/Profile Validation:

In this example we will assess the quality of display calibration and the corresponding display profile which was created in other example at this site. While using the digital version of the GretagMatbeth ColorChecker, we will compare results obtained from the experimentally measured ColorChecker patches (Imatest-Multicharts) with the "theoretical" ColorChecker data.

Here is what we will need:

  • Digital ColorChecker in L*a*b* (TIF) file format (free, downloadable)
  • PatchTool from the same BabelColor web site ($)
  • Photoshop or any other color managed application
  • XYZ tristimulus or L*a*b* data of ColorChecker patches measured from the calibrated & profiled display
  • Excel or similar spreadsheet program

To begin this example, let's start with a flowchart that shows all the steps that we will go through:

Figure 1: Profile validation using digital ColorChecker

First we need to download the digital version of the ColorChecker. There are several types around usually in a form of a tiff file. They differ by L*a*b* or RGB values depending on what version or what source is considered the reference ColorChecker. The most comprehensive description of a wide variety of ColorCheckers is at Danny Pascale's web site. For my measurements I am using the "universal" L*a*b* version (free from the BabelColor web site). This particular version has L*a*b* D50, 2 degree standard observer values encoded and was made available by GretagMacbeth in 2005. The corresponding reference data is available from the same web site as part of the following document: "RGB coordinates of the Macbeth ColorChecker" (p.5 at the top). After a quick download, we should have both the digital image (1) and the reference data (5) available.

In the next step, we want to measure the tristimulus (XYZ) or L*a*b* values of all ColorChecker patches straight off the screen. This step will be described in details at some other place.

In general, the digital ColorChecker is opened in Photoshop and converted to the display profile (Edit -> Convert to Profile) with absolute colorimetric rendering intent. This creates the same profile for source and destination resulting in no transform. This effectively represents "no color management". Since the display profile will serve both as a source and destination, there will be no profile transform involved. If both the calibration and profile are valid, there should be zero error at the end. The real error will depend on quality of both the calibration and the profile. Would it not be easier to skip Photoshop and run the measurements from any color editing application? Not really. By converting the Lab image into the display profile, we establish the gamut boundaries and thus define the RGB coordinates. Applications that have no idea about our display, would not know what RGB values to use for this ColorChecker and would most probably use the sRGB color space. Each patch is displayed and measurement taken using a measuring device (2) and the appropriate software (e.g. BabelColor's CT&A or HCFR Colorimeter). Also, remember to measure the white patch (R=G=B=255) to define the display white point (important for XYZ normalization and Bradford CAT). Record your measurements directly into the Excel sheet that you can download here.



The following step (4) involves a little bit of processing. Since chances are rather high that our monitor CCT (or the white point) will not correspond to any defined CIE source (such as D50 or D65), chromatic adaptation transform (CAT) has to be performed on the obtained XYZ tristimulus data. Provided Excel sheet has the Dxx->D50 Bradford transform implemented. It changes dynamically depending on the measured XYZ coordinates of the display white. ColorChecher reference data (5) is already entered there (GretagMacbeth D50, 2 degree standard observer, 2005), so we only need to provide the XYZ data from the measurement. The last step at this point is to calculate the CIEDE2000 color difference values (just click on the corresponding macro button in the sheet). Average and maximum DE2000 is returned. Next tab in the workbook summarizes data for further analysis (optional). Tab called "logo_lab" converts the D50 L*a*b* values into the standard LOGO format that can be directly opened in PatchTool or ColorThink Pro software. Just press the macro button and the corresponding *_lab.txt file will be created in the same directory where your Excel workbook resides (download here). For more details on the use of this worksheet, read the step-by-step instructions in the HCFR section.


At this point (6), we have a pretty good idea about the quality of our display calibration/profile. Data provided in the Excel sheet came from the measurement of the Eizo CG19 monitor using X-rite DTP94 colorimeter. Measurements were done using the LUT based profile - large933.icm. Average DE2000 is 0.62 with maximum color difference of 1.44 (Figure 2). These are very good numbers, in average below a noticeable difference. Inspection of the data reveals that larger values of color differences come from the white and gray patches (No. 19, 20). This would indicate potential inaccuracies in grayscale images.

Figure 2: Results of CC characterization



Let's continue in the exercise and export the D50 L*a*b* values from the "logo_lab" tab. Our next task will be to generate a new tiff image - new digital version of the ColorChecker measured off our display. While there may be other small utilities for converting text values into the image file, I prefer using the PatchTool (fast and easy).

Figure 3: PT input file
Figure 4: PatchTool import
Figure 5: PatchTool export to tiff
  1. Launch the PatchTool (PT), choose "Open File" and select the LOGO formatted file created in the previous paragraph. Alternatively, you can also open a simple text file with D50 L*a*b* or XYZ data formatted as shown in Fig. 3 (the first row has to have coordinates identifier - L a b, R G B, X Y X, ...).
  2. When opening the file, message window "Missing info" will appear. Choose "Illuminant D50" and "Observer 2 degree". Click "Proceed".
  3. Window similar to Fig. 4 will appear. In the lower left part, choose "Row QTY:" and choose 6. Now what you see should match the Fig. 4. Continue by selecting "Turn 90o CW" (2.) (on the Re-map tab) followed by "Flip Horizontal" (3.) . You should now see the ColorChecker in its standard orientation.
  4. Click on the "Tabular data" tab, choose ProPhoto in the "RGB space" and then "Export". Choose "Image" and adjust numbers according to Fig. 5 (use 16-bit encoding).
  5. Click "Export" and the tiff file of your "screen" ColorChecker will be generated. Close the PatchTool.
  6. Note: The tiff image contains embedded ProPhoto RGB data that must be re-calculated for other RGB color spaces. To ensure consistency with the D50 Lab values, we use the ProPhoto RGB color space since it is defined for the D50 illuminant. Lab values calculated from the embeded RGB values will be the same as the ones in the input file.

For Flash movie of the described steps, click the image.

Patch Tool - GM


Now, let's analyze the data in the PatchTool. We will repeat the same steps as in the preceding paragraph (C: 1-3) and we will open the standard ColorChecker (D50, 2o observer, Fig. 3) together with the formatted *_lab.txt file of the just measured ColorChecker (for a reference, download it here). At this point it is worth mentioning that PatchTool can provide a complementary analysis to the Excel spreadsheet shown in section B: when "Compare" option is selected from the Tools menu. The Excel workbook mentioned above has also an option to export reference LOGO formatted D50 L*a*b* values of the ColorChecker. When you open both files in the PatchTool, "Compare" option will become active and your "display" ColorChecker can be compared with the standard reference ColorChecker. Additional statistics is returned in the corresponding tab.The next steps are following:

  1. Make sure that both files are opened in the PatchTool - the standard ColorChecker D50 and your new file *_lab.txt..
  2. Figure 6: PatchTool "Compare" module
  3. In the PatchTool (PT) main menu, choose "Tools" and then "Compare". Window similar to Figure 6 will appear. Just check the reference and sample files and make sure that D50 illuminant is selected. Click "Compare".
  4. Figure 7: PT Compare two ColorCheckers
    Figure 8: PatchTool import
  5. Window similar to Fig. 7 will appear. Choose E* in the "Delta" and CIEDE2000 in the "dE formula" as shown in the Figure 7. Also, change/set the color difference thresholds in the yellow and red rectangles. In this example, patches with DE00 > 1 are in yellow frame and patches in the red frame have DE00 > 2 (none). Make sure that D50 illuminant is selected.
  6. Click on the "Stats" tab to inspect the analysis results (Fig. 8). As in the Excel sheet, average DE00 value is 0.63 and the maximum value is 1.44. Standard deviation within the samples is 0.33 (sigma). The graph shows that 11 samples have their DE00 > 0.4 and < 0.6. Only two patches have DE00 greater than 1.4, but lower than 1.6.
  7. By clicking on the patches in the "Patch view" we learn that two worst patches are the whites (19,20). Closer inspection of the L*a*b* data reveals that the "White 9.5" patch (19) has a shift in the a* component although a negligible one. The patch 20 (Neutral 8) shows a shift in the b* component of a greater magnitude (1.46) - toward the yellowish hue. The same is true for the patch 22 (Neutral 5). Interestingly, the cyan patch (18) that is outside the sRGB gamut is still quite a good in the monitor. The main cause of its color difference (DE00 = 1.31) is the higher luminance (0.72). Overall, the monitor renders the ColorChecker quite well and we would see no troubles when editing digital images.


To manipulate/evaluate the tiff file in Photoshop, follow this procedure - valid for embedded D50 values:

  1. This part assumes that you have a digital ColorChecker with the embedded D50 Lab data. This would be accomplished by choosing the "Lab colorspace" in the Export tab of the PatchTool (section C:, Figure 5).
  2. In Photoshop, choose the "File-Open"and select the tiff file created in the previous section. It has embedded D50 Lab values and it should display correctly through the monitor profile.
  3. Choose 'Convert to Profile" option and select the ProPhoto RGB color space. In the "Intent", choose the "Relative Colorimetric" (Black point Compensation is irrelevant in this case since we deal with "ideal" profiles).
  4. After the conversion you can inspect the RGB and Lab values and compare them with published ones.
  5. Click "File->Save as ", choose the tiff file with no compression. Do not embed the profile to the file. Digital ColorChecker ready for the use in the Imatest (next paragraph) will be generated. Close the Photoshop.



And now - finally, we are getting into Multicharts module of the Imatest.

  1. Launch the Imatest (Studio) and choose the Multicharts module.
  2. Choose the options shown in Fig. 9 and click the "Read image file" button.
  3. Select the tiff file created in the section [C] and create the ROI area by dragging the mouse from the top-left to the bottom-right corners. Adjust the ROI area if necessary. Click "Yes" or "Yes continue" depending on whether you adjusted ROI or just used the previous settings.
  4. Explore different views and analyses of the ColorChecker. Fig. 10 shows the pseudocolor difference view for this particular example. We can confirm that patches 19 and 20 show higher color difference from the "ideal" values. Another useful view is the 2D a*b* which reveals some weaknesses in color patches (Fig. 11), particularly in red and blue area. Overall, the ΔE00 is quite low (0.61) indicating very good performance of the monitor together with the corresponding calibration and profile.
Figure 9: Import into Multicharts
Figure 10: Pseudocolor difference in ΔE94

As discussed below in the "Note on Imatest Color Space Selection", it is convenient to process your ColorChecker images in the ProPhoto color space. In brief, the reason is that, first, the Multicharts have the "standard" Gretag Macbeth ColorChecker 2005 D50 L*a*b* data hardcoded in it and second, the L*a*b* (XYZ) values in these exercises are transformed to D50 to comply with the ICC standards. For details, please read the Note below.

Figure 11: 2D a*b* representation of the "ideal" and "measured" CCs


Note on Imatest Color Space Selection: during my numerous measurements, I have observed mysterious inconsistencies in the color difference values when comparing the "reference" digital ColorChecker (the same L*a*b* tiff file used in this exercise) with the Imatest hardcoded reference values. I have contacted Norman Koren who has kindly sent me the relevant part of the code with some explanations. Here is what I learned (for more details read the Imatest manual - ColorChecker section).
Imatest uses three sets of "standard" L*a*b* values for the ColorChecker. One is the official GretagMacbeth set of D50 values released in 2005. This set is coming from spectral measurements at D50 illuminant (5,000 K) for 2o standard observer and it is identical to the reference set published by Danny Pascale in his "RGB coordinates .." document (Table 2, p. 5 at the top). In Imatest, it is referred to as "GretagMacbeth(default)". The second set was again provided by the GretagMacbeth and it contains D65 L*a*b* values obtained from the spectral measurements (6,500 K). In Imatest, it is also referred to as "GretagMacbeth(default)", but it is activated only when D65 color space is selected (sRGB, AdobeRGB, ..). The third set, referred to as "BabelColor" in the Imatest, has hardcoded D50 data acquired by Danny Pascale and published in his "RGB coordinates .." document (Table 2). Since no spectral D65 values were available for the D65 illuminant, Bradford transform is performed on the hardcoded D50 data when D65 color space is selected in Imatest (LabD50->LabD65). The "ideal" D65 RGB values are then calculated from the corresponding Lab D65 data and the information of the chosen color space (Lab->XYZ->RGB)D65. While Bradford transform is probably the best transform available, it is nevertheless only a CAT that will provide XYZ or L*a*b* values slightly different from those obtained from the spectral data (if these were available).
Now coming back to the observed inconsistencies. First, I am happy to say that all those inconsistencies were caused by myself by confusing the different reference data and the Photoshop transformations. The troubles came in when preparing tiff files with embedded D65 RGB values. If one uses Photoshop and tiff files with embedded L*a*b* data, the L*a*b* input data displayed in the Photoshop Info palette are assumed to be D50 values regardless of the actual source/illuminant. Thus a tiff file with embedded D65 Lab data is assumed to have D50 data. Upon conversion to a D65 color space, these input Lab data are transformed/adapted to D65 illuminant using the Bradford transform. As a result, the corresponding D65 RGB values are wrong. Another source of confusion was the reference GretagMacbeth L*a*b* D65 data. There are two reference sets available: one in the Imatest (the second set mentioned in preceding paragraph) and another set from the BabelColor web site - "RGB coordinates of the Macbeth ColorChecker" (p.7 at the top). Both sets differ slightly leading to quite significant color differences when measured values are compared to them. When working in Imatest, choose the D65 color space and "GretagMacbeth(default)". Yet another source of inconsistencies is the rounding error in Photoshop CS2 (only the whole numbers are returned). To avoid errors related to the Bradford transform (these errors are inherent to any chromatic adaptation transforms, although the Bradford transform is on of the best transforms available), one should use the L*a*b* D50 input data and convert them to D50 color space (such as ProPhoto RGB), Photoshop calculates just the Lab->RGB part without any Bradford transform (this method is used in the above example). Unfortunately, small rounding errors are still present. On the other hand, the PatchTool application lets you specify what type of the input data you have (e.g. D65, 20) and calculates the remaining data (Lab, XYZ, xy, ...) using the entered illuminant. Rounding is not a problem in the PatchTool application (decimals are rounded to the nearest thousandth). Thus it is my preferred tool to use.
In principle, we have two choices to supply the correct data to the Imatest. First, transform the collected ColorChecker data (off the screen) to D50 in the provided spreadsheet (yes, it uses one Bradford Transform Dxx->D50/D65). Use this D50 data from now on in the Photoshop and convert the digital ColorChecker into the ProPhoto RGB color space (method used in this exercise). Second possibility is to transform the collected ColorChecker data (off the screen) to D65 in the provided spreadsheet (yes, it also uses the Bradford Transform). Assuming that your monitor is calibrated closer to the D65 (CCT ~ 6,000 - 6,6000 K), the error caused by Bradford transform will be negligible. Use this D65 data from now on in the PatchTool application and process the digital ColorChecker using the D65 colorspace (sRGB, AdobeRGB). In Multicharts, use the option "GretagMacbeth(default)" together with the chosen D65 colorspace. In this case, the data will be compared to D65 L*a*b* values obtained from the spectral measurements by GretagMacbeth. However, since the D50 values are well reported and commonly used when sending data through the ICC profiles, I recommend the first method. The use of Photoshop and the D50 color space (ProPhoto) is shown here.
In summary, always match the data and the reference to the corresponding (and same) illuminant/source, e.g. D50 data is converted to ProPhoto RGB color space and compared with the Default set in the Imatest application when ProPhoto RGB color space has been selected (Fig. 9). When using sRGB or Adobe RGB data source, use again the Default set in Imatest together with the corresponding color space (sRGB , Adobe RGB, etc.).

Example of transformation of XYZ (Lab) values to R'G'B' triplet is shown in other part of these web pages.

(top)↑Imatest - Colorcheck :


Colorcheck is another module in the Imatest. As stated in the manual, Colorcheck analyzes images of the GretagMacbeth ColorChecker for color accuracy, tonal response, and noise. These images typically come from a digital camera. While analysis using Multicharts is more universal, the Colorcheck module has some unique features related to cameras not found anywhere else. In order to use the Colorcheck module, one needs to add a black frame to the ColorChecker (Imatest requires that). The following procedure outlines the process of preparing the digital ColorChecker for the use in the Imatest.

  1. Make sure that the RGB data in your tiff image have been assigned to a standard color space (sRGB, AdobeRGB, WideGamut, ProPhoto RGB, ...). This is important for the correct interpretation of all colors within the image. Usually, when processing raw data, software asks for a color space to use.
  2. Launch Photoshop and open the image of the ColorChecker acquired by digital camera.
  3. Open file "GMCC_grid_to_Imatest_ProPhoto.psd" (download here). On the profile mismatch warning, choose "Use the embedded profile". Convert this "frame" file into the color space that you ColorChecker has been assigned.
  4. With both files opened in the workspace, select the CC-image file and click on its thumbnail in the Layer window.
  5. Hold "Shift" key and drag the thumbnail onto the main frame psd file. Release the "Shift" key. ColorChecker image should be now part of the frame file, converted into ProPhoto space.
  6. Move the newly created Layer1 under the layer "Frame". At this point, you should see your ColorChecker with black borders.
  7. From the Layers palette choose "Flatten image" and save the file as tiff (with or without profile tag). Use "no compression" option when saving the file.
  8. You should now have the the digital version of ColorChecker properly framed and in a standard color space.

This concludes the exercise of the Display calibration/profile validation. We have used several tools to assess quality of the monitor calibration and profiling.

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, and BabelColor PatchTool applications.

Analysis using the Gamutvision:


Gamutvision can analyze an internal (simulated) GretagMacbeth ColorChecker that is derived from the spectral L*a*b* D65 data supplied by GretagMacbeth (set two as discussed in the box above). Analysis can be performed in different color spaces using different rendering intents.

Gamutvision can also analyze and compare different display and printer icc profiles. This way, it is well suited for a comparison of different calibration/profiling packages, measuring hardware devices, and monitors (gamut size, gamut characteristics). In the case of monitors, the calibration state should be kept constant to ensure that only the profile is evaluated. This is usually not that easy since most of the commercial calibration/profiling packages run calibration first. The only package that I am aware of that can generate a series of profiles while keeping the calibration unchanged is the Argyll CMS.

However, one can still successfully use the Gamutvision for assessment of the display profile volume and for general comparison with other standard color spaces (e.g., sRGB, AdobeRGB). Very informative is the "black point compensation" (BPC) feature that allows you to explore different combinations of the BPC and rendering intents.

Analysis of a measured ColorChecker (or any other digital image obtained from the display measurement) should be avoided as the Gamutvision processes only the icc profile and it is not considering the calibration data stored in your video card LUT (or in the vcgt tag of the icc profile). Again, a qualitative and relative comparison of the display profiles can be attempted providing that those profiles are built on the same calibration.

(top)↑Evaluating the display icc profiles :

This section describes the process of comparing two icc/icm display profiles created in the Argyll section. Specifically, we will compare gamuts of the LUT based profile "large933.icm", the shaper-matrix profile "small200.icm", and the standard color space as described by the "sRGB.icc" profile. To download both profiles, click here - large933 (774 kB) and here small200 (4 kB). The sRGB.icc is usually part of the computer system or it is coming with any imaging program.

On the left side (Fig. 12), the "large" meshed LUT gamut wraps around the sRGB gamut. First, one can make an obvious observation that the "large" gamut is larger than the sRGB one. The corresponding ratio of the gamut volumes is 1.15. We can see that the "large" gamut has a clear edge in the reds and slightly in the blues. On the right side (Fig. 13), the "large" LUT gamut is plotted together with the "small" one. The corresponding ratio of the gamut volumes is 1.10. It is clear that the "small" gamut is still larger that the sRGB gamut while slightly smaller than the "large" gamut.

Figure 12: 3D L*a*b* Gamuts large vs. sRGB
Figure 13: 3D L*a*b* Gamuts large vs. small

(top)↑Scanner - ICC profile Evaluation:

Coming soon.


(top)↑Printer Profiling:

(top)↑Links and References:

Imatest :

ColorChecker Data :



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


Last update : August 16, 2008


Back to TOP