<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Argyll Usage Scenarios</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head> <body> <h2><u>Typical usage Scenarios and Examples</u></h2> Choose a task from the list below. For more details on alternative options, follow the links to the individual utilities being used.<br> <br> Note that by default it is assumed that ICC profile have the file extension <span style="font-weight: bold;">.icm</span>, but that on Apple OS X and Unix/Linux platforms, the <span style="font-weight: bold;">.icc</span> extension is expected and should be used.<br> <h4><a href="#PM1">Profiling Displays</a></h4> <h4> <a href="#PM1a">Adjusting and Calibrating a displays</a></h4> <h4> <a href="#PM1b">Adjusting, calibrating and profiling in one step<br> </a><span style="font-weight: bold;"></span><span style="font-weight: bold;"></span><span style="text-decoration: underline;"></span></h4> <h4> <a href="#PM2">Creating display test values</a></h4> <h4> <a href="#PM3">Taking readings from a display</a></h4> <h4> <a href="#PM4">Creating a display profile</a></h4> <h4> <span style="text-decoration: underline;"></span><a href="#PM5">Installing a display profile</a></h4> <h4><br> <a href="#PS1">Profiling Scanners</a></h4> <h4> <a href="#PS2">Types of test charts</a></h4> <h4> <a href="#PS3">Taking readings from a scanner</a></h4> <h4> <a href="#PS4">Creating a scanner profile</a></h4> <h4><br> <a href="#PP1">Profiling Printers</a></h4> <h4> <a href="#PP2">Creating a print test chart</a></h4> <h4> <a href="#PP3">Reading a print test chart using an instrument</a></h4> <h4> <a href="#PP4">Reading a print test chart using a scanner</a></h4> <h4> </h4> <h4> <a href="#PP5">Creating a printer profile<br> </a></h4> <h4> <a href="#PP6">Choosing a black generation curve</a></h4> <h4><br> <a href="#LP1">Linking Profiles</a></h4> <h4><br> <a href="#TR1">Transforming colorspaces of raster files</a></h4> <br> <hr style="width: 100%; height: 2px;"> <h3><a name="PM1"></a>Profiling Displays</h3> Argyll supports adjusting, calibrating and profiling of displays using one of a number of instruments - see <a href="instruments.html">instruments</a> for a current list. Adjustment and calibration are prior steps to profiling, in which the display is adjusted using it's screen controls, and then per channel lookup tables are created to make it meet a well behaved response of the desired type. The process for creating a display profile is then similar to that of all other output devices. First a set of device colorspace test values needs to be created to exercise the display, then these values need to be displayed, while taking measurements of the resulting colors using the instrument. Finally, the device value/measured color values need to be converted into an ICC profile.<br> <br> <h3><a name="PM1a"></a>Adjusting and Calibrating Displays</h3> The first step is to decide what the target should be for adjustment and calibration. This boils down to three things: The desired brightness, the desired white point, and the desired response curve. The native brightness and white points of a display may be different to the desired characteristics for some purposes. For instance, for graphic arts use, it might be desirable to run with a warmer white point of about 5000 degrees Kelvin, rather than the default display white point of 6500 to 9000 Kelvin. Some LCD displays are too bright to compare to printed material under available lighting, so it might be desirable to reduce the maximum brightness.<br> <br> You can run <a href="dispcal.html#r">dispcal -r</a> to check on how your display is currently set up. (you may have to run this as <span style="text-decoration: underline; color: rgb(204, 51, 204);">dispcal -yl -r</span> for an LCD display, or <span style="text-decoration: underline; color: rgb(204, 51, 204);">dispcal -yc -r</span> for a CRT display with most of the colorimeter instruments. If so, this will apply to all of the following examples.)<br> <br> Once this is done, <a href="dispcal.html">dispcal</a> can be run to guide you through the display adjustments, and then calibrate it. By default, the brightness and white point will be kept the same as the devices natural brightness and white point. The default response curve is a gamma of 2.2 on MSWindows and X11 systems, and 1.8 on Apple OSX systems. 2.2 is close to that of many monitors, and close to that of the sRGB colorspace. <br> <br> A typical calibration that leaves the brightness and white point alone, might be:<br> <br> <a href="dispcal.html">dispcal</a> -v TargetA<br> <br> which will result in a "TargetA.cal" calibration file, that can then be used during the profiling stage.<br> <br> If the absolutely native response of the display is desired during profiling, then calibration should be skipped, and the linear.cal file from the "ref" directory used instead as the argument to the -k flag of <span style="font-weight: bold;">dispread</span>.<br> <br> <b>Dispcal</b> will display a test window in the middle of the screen, and issue a series of instructions about placing the instrument on the display. You may need to make sure that the display cursor is not in the test window, and it may also be necessary to disable any screensaver and powersavers before starting the process, although both <span style="font-weight: bold;">dispcal</span> and <span style="font-weight: bold;">dispread</span> will attempt to do this for you. It's also highly desirable on CRT's, to clear your screen of any white or bright background images or windows (running your shell window with white text on a black background helps a lot here.), or at least keep any bright areas away from the test window, and be careful not to change anything on the display while the readings are taken. Lots of bright images or windows can affect the ability to measure the black point accurately, and changing images on the display can cause inconsistency in the readings, and leading to poor results.<span style="font-weight: bold;"></span> LCD displays seem to be less influenced by what else is on the screen.<br> <br> If <span style="font-weight: bold;">dispcal</span> is run without arguments, it will provide a usage screen. The <span style="font-weight: bold;">-c</span> parameter allows selecting a communication port for an instrument, or selecting the instrument you want to use, and the <span style="font-weight: bold;">-d</span> option allows selecting a target display on a multi-display system. On some multi-monitor systems, it may not be possible to independently calibrate and profile each display if they appear as one single screen to the operating system, or if it is not possible to set separate video lookup tables for each display. You can change the position and size of the test window using the <span style="font-weight: bold;">-p</span> parameter. You can determine how best to arrange the test window, as well as whether each display has separate video lookup capability, by experimenting with the <a href="dispwin.html">dispwin</a> utility. <br> <br> For a more detailed discussion on interactively adjusting the display controls using <span style="font-weight: bold;">dispcal</span>, see <a href="dispcal.html#Adjustment">dispcal-adjustment</a>. Once you have adjusted and calibrated your display, you can move on to the next step.<br> <br> Once you have calibrated and profiled your display, you can keep it calibrated using the <a href="dispcal.html#u">dispcal -u</a> option.<br> <br> <h4><a name="PM1b"></a>Adjusting, calibrating and profiling in one step.</h4> For more flexibility in creating a display profile, the separate steps of creating characterization test values using <span style="font-weight: bold;">targen</span>, reading them from the display using <span style="font-weight: bold;">dispread</span>, and then creating a profile using <span style="font-weight: bold;">profile</span> are used. If however, a simple matrix/shaper display profile is all that is desired, <span style="font-weight: bold;">dispcal</span> can be used to do this, permitting display adjustment, calibration and profiling all in one operation. This is done by using the <span style="font-weight: bold;"><span style="font-weight: bold;">dispcal </span>-o</span> flag:<br> <br> <a href="dispcal.html">dispcal</a> <a href="dispcal.html#v">-v</a> <a href="dispcal.html#o">-o</a> <a href="dispcal.html#p1">TargetA</a><br> <br> This will create both a TargetA.cal file, but also a TargetA.icm file. See <a href="dispcal.html#o">-o</a> and <a href="dispcal.html#O">-O</a> for other variations.<br> <br> <h4><a name="PM2"></a>Creating display test values</h4> If the <span style="font-weight: bold;">dispcal</span> has not been used to create a display profile at the same time as adjustment and calibration, then the first step in profiling any output device, is to create a set of device colorspace test values. The important parameters needed are: <br> <ul> <li>What colorspace does the device use ?</li> <li>How many test patches do I want to use ?</li> <li>What information do I already have about how the device behaves ?</li> </ul> For a display device, the colorspace will be RGB. The number of test patches will depend somewhat on what quality profile you want to make, what type of profile you want to make, and how long you are prepared to wait when testing the display.<br> At a minimum, a few hundred values are needed. A matrix/shaper type of profile can get by with fewer test values, while a LUT based profile will give better results if more test values are used. A typical number might be 200-600 or so values, while 1000-2000 is not an unreasonable number for a high quality characterization of a display.<br> <br> To assist the choice of test patch values, it can help to have a rough idea of how the device behaves. This could be in the form of an ICC profile of a similar device, or a lower quality, or previous profile for that particular device. If one were going to make a very high quality LUT based profile, then it might be worthwhile to make up a smaller, preliminary shaper/matrix profile using a few hundred test points, before embarking on testing the device with several thousand.<br> <br> Lets say that we ultimately want to make a profile for the device "DisplayA", the simplest approach is to make a set of test values that is independent of the characteristics of the particular device:<br> <br> <a href="targen.html">targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d3</a> <a href="targen.html#f">-f500</a> <a href="targen.html#p1">DisplayA</a><br> <br> If there is a preliminary or previous profile called "OldDisplay" available, and we want to try creating a "pre-conditioned" set of test values that will more efficiently sample the device response, then the following would achieve this:<br> <u><br> </u><a href="targen.html"> targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d3</a> <a href="targen.html#f">-f500</a> <a href="targen.html#A">-A.8</a> <a href="targen.html#c">-cOldDisplay.icm</a> <a href="targen.html#p1">DisplayA</a><br> <br> The output of <b>targen</b> will be the file DisplayA.ti1, containing the device space test values, as well as expected CIE values used for chart recognition purposes.<br> <br> <h4><a name="PM3"></a>Taking readings from a display</h4> First it is necessary to connect your measurement instrument to your computer, and check which communication port it is connected to. In the following example, it is assumed that the instrument is connected to the default port 1, which is either the first USB instrument found, or serial port found. Invoking dispread so as to display the usage information (by using a flag -? or --) will list the identified serial and USB ports, and their labels. If we created a calibration for the display using <a href="dispcal.html">dispcal</a>, then we will want to use this when we take the display readings (e.g. TargetA.cal from the calibration example)..<br> <br> <a href="dispread.html">dispread</a> <a href="dispread.html#v">-v</a> <a href="dispread.html#k">-k TargetA.cal</a> <a href="dispread.html#p1">DisplayA</a><br> <br> <b>dispread</b> will display a test window in the middle of the screen, and issue a series of instructions about placing the instrument on the display. You may need to make sure that the display cursor is not in the test window, and it may also be necessary to disable any screensaver before starting the process. Exactly the same facilities are provided to select alternate displays using the <span style="font-weight: bold;">-d</span> parameter, and an alternate location and size for the test window using the <span style="font-weight: bold;">-p</span> parameter as with <span style="font-weight: bold;">dispcal</span>.<br> <h4><a name="PM4"></a>Creating a display profile</h4> There are two basic choices of profile type for a display, a shaper/matrix profile, or a LUT based profile. They have different tradeoffs. A shaper/matrix profile will work well on a well behaved display, that is one that behaves in an additive color manner, will give very smooth looking results, and needs fewer test points to create. A LUT based profile on the other hand, will model any display behaviour more accurately, and can accommodate gamut mapping and different intent tables. Often it can show some unevenness and contouring in the results though.<br> <br> To create a matrix/shaper profile, the following suffices:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Display A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#a">-as</a> <a href="profile.html#p1">DisplayA</a><br> <br> For a LUT based profile, where gamut mapping is desired, then a source profile will need to be provided to define the source gamut. For instance, if the display profile was likely to be linked to a CMYK printing source profile, say "swop.icm", then the following would suffice:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Display A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#S">-S</a><a href="profile.html#S"> swop.icm</a> <a href="profile.html#c">-cpp</a> <a href="profile.html#d">-dmt</a> <a href="profile.html#p1">DisplayA</a><br> <br> Make sure you check the delta E report at the end of the profile creation, to see if the profile is behaving reasonably.<br> If a calibration file was used with <a href="dispread.html">dispread</a>, then it will be converted to a vcgt tag in the profile, so that the operating system or other system color utilities load the lookup curves into the display hardware, when the profile is used.<br> <h4><a name="PM5"></a>Installing a display profile</h4> Installing a display profile for your monitor is very operating system dependent. On some systems it is not the operating system itself that supports display profiles, but individual applications, or helper programs.<br> <br> <br> On <span style="font-weight: bold;">Microsoft Windows</span>, display profiles are typically in one of the following directories:<br> <p> Windows Me and 98: C:\Windows\System\Color<br> </p> <p> Windows NT: C:\Winnt\system32\spool\drivers\color </p> <p> Window 2000 and XP: C:\Windows\system32\spool\drivers\color</p> <p>The profile can be associated with your display by using the Display Property dialog, advanced settings, Color management tab. This in itself does not cause the profile to be made use of anywhere in your system.<br> </p> <p>If you are using Adobe Photoshop on your system, then you can tell it to use your monitor profile by editing the appropriate registry key, typically "My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Color\Monitor\Monitor0", to contain the name of the display profile, and then restart Photoshop This is the simplest way of ensuring that the Adobe calibration loader utility Adobe Gamma loads the video hardware lookup tables from the vcgt tag, and uses the profile as its display profile.<br> </p> <p>The adobe gamma utility can be told to use your profile, but the procedure is slightly tricky: Open adobe gamma from photoshop (in the Help->Color Management... menu item), select "Open Adobe Gamma", and select the "Load.." button. Select your profile and "Open". Select "OK" in the Adobe Gamma, it will then ask you to save it's modified version of your profile under a different name. Chose a name for the modified profile, and save it. Exit from Photoshop. Copy the profile you want to use, over the modified profile that you saved in Adobe Gamma. (If you don't do the last step, the profile Photoshop will be using will have been modified in strange ways from what you intended.)<br> </p> <p>Other Microsoft Windows applications may come with "Gamma/VCGT/RAMDAC/Video LUT" loader utilities, consult their documentation and check your Start Menu Startup folders. If you don't want to use any of these 3rd party utilities, you can also use the <a href="dispwin.html">dispwin</a> utility to do this for you, as it takes either a <a href="cal_format.html">.cal</a> or ICC file as an argument. The <a href="http://freshmeat.net/projects/xcalib/">xcalib</a> utility could also be used.<br> </p> Newer version of Microsoft Windows (XP) have better ways of handling this. For instance, try right clicking on the profiles icon, and see if there is an "install profile" option, and there is a Color Control Panel Applet for Windows XP available for download from Microsoft, which handles loading the profile vcgt tag into displays.<br> <br> <p>On <span style="font-weight: bold;">Apple OSX</span>, the display profile are in one of the following locations:<br> </p> /Network/Library/ColorSync/Profiles<br> /System/Library/Colorsync/Profiles<br> /Library/ColorSync/Profiles<br> ~/Library/ColorSync/Profiles<br> <br> Generally you should only copy new profiles to either of the last two locations, the former for profile you want to be available to all users of a machine, and the latter, user specific location if you want the profile to only be available to that user. You can then launch the "System Preferences->Displays->Color" utility, to select the profile as the one to use for your display. Note that the contents of the description tag (the argument to the <span style="font-weight: bold;"><span style="font-weight: bold;">-D</span></span> flag used with the <span style="font-weight: bold;">profile</span> utility) will be used to identify the profile.<br> <br> <br> On <span style="font-weight: bold;">Linux</span> and other <span style="font-weight: bold;">Unix</span> style systems, there is no universally agreed location for ICC profiles yet, although the following locations have been suggested at various times:<br> <br> /usr/share/color/icc<br> ~/.color/icc<br> /usr/local/share/Scribus/profiles<br> <br> and other programs may use other locations.<br> <br> If you want the display calibration to be loaded, you should consider installing a utility to do so at startup, such as <a href="dispwin.html">dispwin</a> or <a href="http://freshmeat.net/projects/xcalib/">xcalib</a>.<br> <br> Alternatively, the display profile can be installed following <a href="http://www.burtonini.com/computing/x-icc-profiles-spec-0.2.html">this convention</a>, by using a utility such as <a href="http://packages.ubuntu.com/dapper/x11/xicc">xicc</a>, or using Argyll's dispwin utility:<br> <br> dispwin -S <span style="font-style: italic;">profile.icc<br> <br> </span>to install the profile into the <span style="font-weight: bold;"></span>root window _ICC_PROFILE property, and <br> <br> dispwin -L<br> <br> to use the property to set the display's Video LUTs to the contained calibration curves.<br> You can use the dispwin -d parameter in the usual way to select other displays to store or load the calibration using the _ICC_PROFILE property.<br> <br> <hr size="2" width="100%"> <h3><a name="PS1"></a>Profiling Scanners</h3> Because a scanner is an input device, it is necessary to go about profiling it in quite a different way to an output device. To profile it, a test chart is needed to exercise the scanner response, to which the CIE values for each test patch is known. Generally standard reflection test charts are used for this purpose.<br> <h4><a name="PS2"></a>Types of test charts</h4> The most common and popular test chart for scanner profiling is the IT8.7/2 chart. This is a standard format chart generally reproduced on photographic film, containing about 264 test patches. The Kodak Q-60 Color Input Target is a typical example:<br> <br> <img src="Q60.jpg" alt="Kodak Q60 chart image" height="141" width="200"> <br> <br> Other popular charts are the GretagMacbeth ColorChecker DC and ColorChecker SG charts:<br> <br> <img src="DC.jpg" alt="GretagMacbeth ColorChecker DC chart" height="122" width="200"> <img alt="ColorChecker SG" src="SG.jpg" style="width: 174px; height: 122px;"><br> <br> The GretagMacbeth Eye-One Pro Scan Target 1.4 can also be used:<br> <br> <img alt="Eye-One Scan Target 1.4" src="i1scan14.jpg" style="border: 2px solid ; width: 200px; height: 140px;"><br> <br> Also supported is the <a href="http://www.hutchcolor.com/hct.htm">HutchColor HCT</a> :<br> <br> <img alt="HutchColor HCT" src="HCT.jpg" style="width: 182px; height: 140px;"><br> <br> <h4><a name="PS3"></a>Taking readings from a scanner</h4> The test chart you are using needs to be placed on the scanner, and the scanner needs to be configured to a suitable state, and restored to that same state when used subsequently with the resulting profile. The chart should be scanned, and saved to a TIFF format file. I will assume the resulting file is called scanner.tif. The raster file need only be roughly cropped so as to contain the test chart (including the charts edges).<br> <br> The second step is to extract the RGB values from the scanner.tif file, and match then to the reference CIE values. To locate the patch values in the scan, the <b>scanin</b> utility needs to be given a template <a href="File_Formats.html#.cht">.cht</a> file that describes the features of the chart, and how the test patches are labelled. Also needed is a file containing the CIE values for each of the patches in the chart.<br> <br> <div style="margin-left: 40px;">For an IT8.7/2 chart, this is the <span style="font-weight: bold;">ref/</span><b>it8.ch</b> file supplied with Argyll, and the manufacturer will will supply an individual or batch average file long with the chart containing this information, or downloadable from their web site.<br> <br> For the ColorChecker DC chart, the <span style="font-weight: bold;">ref/ColorCheckerDC.cht</span> file should be used, and there will be a ColorCheckerDC reference file supplied by GretagMacbeth with the chart.<br> <br> For the ColorCheckerSG chart, the <span style="font-weight: bold;"><span style="font-weight: bold;">ref/</span>ColorCheckerSG.cht</span> file should be used, and there will be a <span style="font-weight: bold;">ColorCheckerSG.txt</span> supplied with the chart that contains the spectral reference information. To convert this to a <span style="font-weight: bold;">ColorCheckerSG.cie</span> reference file, follow the following steps:<br> <a href="logo2cgats.html">logo2cgats</a> ColorCheckerSG.txt ColorCheckerSG.ti3<br> <a href="spec2cie.html">spec2cie</a> ColorCheckerSG.ti3 ColorCheckerSG.cie<br> <br> For the Eye-One Pro Scan Target 1.4 chart, the <span style="font-weight: bold;"><span style="font-weight: bold;">ref/</span>i1_RGB_Scan_1.4.cht</span> file should be used, and as there is no reference file accompanying this chart, the chart needs to be read with an instrument (usually the Eye-One Pro). This can be done using chartread, making use of the chart reference file <span style="font-weight: bold;">ref/i1_RGB_Scan_1.4.ti2</span>:<br> <a href="chartread.html">chartread</a> -n -a i1_RGB_Scan_1.4<br> and then rename the resulting <span style="font-weight: bold;">i1_RGB_Scan_1.4.ti3</span> file to <span style="font-weight: bold;">i1_RGB_Scan_1.4.cie</span><br> <span style="font-weight: bold;"></span><br> For the HutchColor HCT chart, the <span style="font-weight: bold;"><span style="font-weight: bold;">ref/</span>Hutchcolor.cht</span> file should be used, and the reference <span style="font-weight: bold;">.txt</span> file downloaded from the website.<br> </div> <br> For any other type of chart, a chart recognition template file will need to be created (this is beyond the scope of the current documentation).<br> <br> To create the scanner .ti3 file, run the <b>scanin</b> utility as follows (assuming an IT8 chart is being used):<br> <br> <a href="scanin.html"> scanin</a> -v scanner.tif It8.cht It8ref.txt<br> <br> "It8ref.txt" is assumed to be the name of the CIE reference file supplied by the chart manufacturer. The resulting file will be named "<b>scanner.ti3</b>".<br> <br> <span style="font-weight: bold;">scanin</span> will process 16 bit per component .tiff files, which (if the scanner is capable of creating such files), may improve the quality of the profile. <br> <br> If you have any doubts about the correctness of the chart recognition, or the subsequent profile's delta E report is unusual, then use the scanin diagnostic flags <a href="scanin.html#d">-dipn</a> and examine the <span style="font-weight: bold;">diag.tif</span> diagnostic file.<br> <h4><a name="PS4"></a>Creating a scanner profile</h4> Similar to a display profile, a scanner profile can be either a shaper/matrix or LUT based profile. Well behaved scanners will probably give the best results with a shaper/matrix profile, but if the fit is poor, consider using a LUT type profile.<br> <br> If the purpose of the scanner profile is to use it as a substitute for a colorimeter, then the <b>-u</b> flag should be used to avoid clipping values above the white point. Unless the shaper/matrix type profile is a very good fit, it is probably advisable to use a LUT type profile in this situation.<br> <br> To create a matrix/shaper profile, the following suffices:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Scanner</a> <a href="profile.html#E">A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#a">-as</a> <a href="profile.html#p1">scanner</a><br> <br> For a LUT based profile then the following would be used:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Scanner A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#p1">scanner</a><br> <br> For the purposes of a poor mans colorimeter, the following would generally be used:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Scanner A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#u">-u</a> <a href="profile.html#p1">scanner</a><br> <br> Make sure you check the delta E report at the end of the profile creation, to see if the profile is behaving reasonably.<br> <br> <hr size="2" width="100%"> <h3><a name="PP1"></a>Profiling Printers<br> </h3> The overall process is to create a set of device measurement target values, print them out, measure them, and then create an ICC profile from the measurements. If the printer is an RGB based printer, then the process is only slightly more complicated than profiling a display. If the printer is CMYK based, then some additional parameters are required to set the total ink limit (TAC) and black generation curve.<br> <h4><a name="PP2"></a>Creating a print test chart</h4> The first step in profiling any output device, is to create a set of device colorspace test values. The important parameters needed are:<br> <ul> <li>What colorspace does the device use ?</li> <li>How many test patches do I want to use/what paper size do I want to use ?</li> <li>What instrument am I going to use to read the patches ?<br> </li> <li>If it is a CMYK device, what is the total ink limit ?<br> </li> <li>What information do I already have about how the device behaves ?</li> </ul> Most printers running through simple drivers will appear as if they are RGB devices. Other drivers will drive a printer more directly, and will expect a CMYK profile. [Currently Argyll is not capable of creating an ICC profile for devices with more colorants than CMYK. When this capability is introduced, it will by creating an additional separation profile which then allows the printer to be treated as a CMY or CMYK printer.] One way of telling what sort of profile is expected for your device is to examine an existing profile for that device using <a href="iccdump.html">iccdump</a>.<br> <br> The number of test patches will depend somewhat on what quality profile you want to make, as well as the effort needed to read the number of test values. Generally it is convenient to fill a certain paper size with the maximum number of test values that will fit.<br> <br> At a minimum, for an RGB device, a few hundred values are needed. For high quality CMYK profiles, 1000-3000 is not an unreasonable number of patches.<br> <br> To assist the determination of test patch values, it can help to have a rough idea of how the device behaves. This could be in the form of an ICC profile of a similar device, or a lower quality, or previous profile for that particular device. If one were going to make a very high quality Lut based profile, then it might be worthwhile to make up a smaller, preliminary shaper/matrix profile using a few hundred test points, before embarking on testing the device with several thousand.<br> <br> The documentation for the <a href="targen.html">targen</a> utility lists a <a href="targen.html#Table">table</a> of paper sizes and number of patches for typical situations.<br> <br> For a CMYK device, a total ink limit usually needs to be specified. Sometimes a device will have a maximum total ink limit set by its manufacturer or operator, and some CMYK systems (such as chemical proofing systems) don't have any limit. Typical printing devices such as Xerographic printers, inkjet printers and printing presses will have a limit. The exact procedure for determining an ink limit is outside the scope of this document, but one way of going about this might be to generate some small (say a few hundred patches) with targen & pritntarg with different total ink limits, and printing them out, making the ink limit as large as possible without striking problems that are caused by too much ink.<br> <br> Generally one wants to use the maximum possible amount of ink to maximize the gamut available on the device. For most CMYK devices, an ink limit between 200 and 400 is usual, but and ink limit of 250% or over is generally desirable for reasonably dense blacks and dark saturated colors. And ink limit of less than 200% will begin to compromise the fully saturated gamut, as secondary colors (ie combinations of any two primary colorants) will not be able to reach full strength.<br> <br> Once an ink limit is used in printing the characterization test chart for a device, it becomes a critical parameter<br> in knowing what the characterized gamut of the device is. If after printing the test chart, a greater ink limit<br> were to be used, the the software would effectively be extrapolating the device behaviour at total ink levels<br> beyond that used in the test chart, leading to inaccuracies.<br> <br> Generally in Argyll, the ink limit is established when creating the test chart values, and then carried through the<br> profile making process automatically. Once the profile has been made however, the ink limit is no longer recorded, and you, the user, will have to keep track of it if the ICC profile is used in any program than needs to know the usable gamut of the device.<br> <br> <br> Lets consider two devices in our examples, "PrinterA" which is an RGB device, and "PrinterB" which is CMYK, and has a target ink limit of 250%. <br> <br> The simplest approach is to make a set of test values that is independent of the characteristics of the particular device:<br> <br> <a href="targen.html">targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d3</a> <a href="targen.html#f">-f1053</a> <a href="targen.html#p1">PrinterA</a><br> <br> <a href="targen.html">targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d4</a> <a href="targen.html#l">-l260</a> <a href="targen.html#f">-f1053</a> <a href="targen.html#p1">PrinterB</a><br> <br> The number of patches chosen here happens to be right for an A4 paper size being read using a Spectroscan instrument. See the <a href="targen.html#Table">table</a> in the <a href="targen.html">targen</a> documentation for some other suggested numbers.<br> <br> If there is a preliminary or previous profile called "OldPrinterA" available, and we want to try creating a "pre-conditioned" set of test values that will more efficiently sample the device response, then the following would achieve this:<u><br> </u><br> <a href="targen.html">targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d3</a> <a href="targen.html#f">-f1053</a> <a href="targen.html#c">-c OldPrinterA</a> <a href="targen.html#A">-A.8</a> <a href="targen.html#p1">PrinterA</a><br> <br> <a href="targen.html">targen</a> <a href="targen.html#v">-v</a> <a href="targen.html#d">-d4</a> <a href="targen.html#l">-l260</a> <a href="targen.html#f">-f1053</a> <a href="targen.html#c">-c OldPrinterB</a> <a href="targen.html#A">-A.8</a> <a href="targen.html#p1">PrinterB</a><br> <a href="targen.html#p1"></a><br> <br> The output of <b>targen</b> will be the file PrinterA.ti1 and PrinterB.ti1 respectively, containing the device space test values, as well as expected CIE values used for chart recognition purposes.<br> <br> <br> The next step is turn the test values in to a PostScript test file that can printed on the device. The basic information that needs to be supplied is the type of instrument that will be used to read the patches, as well as the paper size it is to be formatted for.<br> <br> For an X-Rite DTP41, the following would be typical:<br> <br> <a href="printtarg.html">printtarg</a> <a href="printtarg.html#v">-v</a> <a href="printtarg.html#i">-i41</a> <a href="printtarg.html#p">-pA4</a> <a href="printtarg.html#p1">PrinterA</a><br> <br> For a Gretag Eye-One Pro, the following would be typical:<br> <br> <a href="printtarg.html">printtarg</a> <a href="printtarg.html#v">-v</a> <a href="printtarg.html#i">-ii1</a> <a href="printtarg.html#p">-pA4</a> <a href="printtarg.html#p1">PrinterA</a><br> <br> For using with a scanner as a colorimeter, the Gretag Spectroscan layout is suitable, but the <a href="printtarg.html#s">-s</a> flag should be used so as to generate a layout suitable for scan recognition, as well as generating the scan recognition template files. (You probably want to use less patches with <span style="font-weight: bold;">targen</span>, when using the <span style="font-weight: bold;">printtarg -s</span> flag, e.g. 1026 patches for an A4R page, etc.) The following would be typical:<br> <br> <a href="printtarg.html">printtarg</a> <a href="printtarg.html#v">-v</a> <a href="printtarg.html#s">-s</a> <a href="printtarg.html#i">-iSS</a> <a href="printtarg.html#p">-pA4R</a> <a href="printtarg.html#p1">PrinterA</a><br> <span style="font-weight: bold;"><br> printtarg</span> reads the PrinterA.ti1 file, creates a PrinterA.ti2 file containing the layout information as well as the device values and expected CIE values, as well as a PrinterA.ps file containing the test chart. If the <span style="font-weight: bold;">-s</span> flag is used, one or more PrinterA.cht files is created to allow the <a href="scanin.html">scanin</a> program to recognize the chart.<br> <br> <span style="font-weight: bold;">GSview</span> is a good program to use to check what the PostScript file will look like, without actually printing it out. You could also use <span style="font-weight: bold;">Photoshop</span> or <span style="font-weight: bold;">ImageMagick</span> for this purpose.<br> <br> <br> The last step is to print the chart out.<br> <br> Using a suitable PostScript downloader, print the chart out via a PostScript interpreter. Alternately, an interpreter like GhostScript or even Photoshop could be used to rasterize the file into something that can be printed. Note that it is important that the PostScript interpreter is setup for a device profiling run, and that any sort of color conversion of color correction be turned off. If the device has a calibration system, then it would be usual to have setup and calibrated the device before starting the profiling run. If Photoshop was to be used, then either the chart needs to be a single page, or separate .eps files for each page should be used, so that they can be converted to raster files one at a time (see the <a href="printtarg#e">-e</a> flag).<br> <br> <h4><a name="PP3"></a>Reading a print test chart using an instrument</h4> Once the test chart has been printed, the color of the patches needs to be read using a suitable instrument.<br> <br> Several different instruments are currently supported, some that need to be used patch by patch, some read a strip at a time, and some read a sheet at a time. See <a href="instruments.html">instruments</a> for a current list.<br> <br> The instrument needs to be connected to your computer before running the <a href="chartread.html">chartread</a> command. Both serial port and USB connected Instruments are supported. A serial port to USB adapter might have to be used if your computer doesn't have any serial ports, and you have a serial interface connected instrument.<br> <br> If you run <a href="chartread.html">chartread</a> so as to print out its usage message (ie. by using a <span style="font-weight: bold;">-?</span> or <span style="font-weight: bold;">--</span> flags), then it will list any identified serial ports or USB connected instruments, and their corresponding number for the <a href="chartread.html#c">-c</a> option. By default, <a href="chartread.html">chartread</a> will try to connect to the first available USB instrument, or an instrument on the first serial port.<br> <br> The only arguments required is to specify the basename of the .ti2 file. If a non-default serial port is to be used, then the <span style="font-weight: bold;">-c</span> option would also be specified.<br> <br> e.g. for a Spectroscan on the second port:<br> <br> <a href="chartread.html">chartread</a> <a href="chartread.html#c">-c2</a> <a href="chartread.html#p1">PrinterA</a><br> <br> For a DTP41 to the default serial port:<br> <br> <a href="chartread.html">chartread</a><a href="chartread.html#i"></a> <a href="chartread.html#p1">PrinterA</a><br> <br> <span style="font-weight: bold;">chartread</span> will interactively prompt you through the process of reading each sheet or strip. See <a href="chartread.html">chartread</a> for more details on the responses for each type of instrument. Continue with <a href="Scenarios.html#PP5">Creating a printer profile</a>.<br> <h4><a name="PP4"></a>Reading a print test chart using a scanner</h4> <br> Argyll supports using a scanner as a substitute for a colorimeter. While a scanner is no replacement for a color measurement instrument, it may give acceptable results in some situations, and may give better results than a generic profile for a printing device.<br> <br> The main limitation of the scanner-as-colorimeter approach are:<br> <br> * The scanner dynamic range and/or precision may not match the printers or what is required for a good profile.<br> * The spectral interaction of the scanner test chart and printer test chart with the scanner spectral response can cause color errors.<br> * Spectral differences caused by different black amounts in the print test chart can cause color errors. <br> * The IT8 chart gamut may be so much smaller than the printers that the scanner profile is too inaccurate. <br> <br> The end result is often a profile that has a slight color cast to, compared to a profile created using a colorimeter or spectrometer..<br> <br> It is assumed that you have created a scanner profile following the <a href="#PS1">procedure</a> outline above. For best possible results it is advisable to both profile the scanner, and use it in scanning the printed test chart, in as "raw" mode as possible (i.e. using 16 bits per component scans, if the scanner is capable of doing so; not setting white or black points). It is generally advisable to create a LUT type scanner profile, and use the <a href="profile.html#u">-u</a> flag to avoid clipping scanned value whiter than the scanner calibration chart.<br> <br> Scan your printer chart (or charts) on the scanner previously profiled. <big><span style="font-weight: bold;">The scanner must be configured and used exactly the same as it was when it was profiled.</span></big><br> <br> I will assume the resulting scan file is called <span style="font-weight: bold;">PrinterB.tif</span> (or <span style="font-weight: bold;">PrinterB1.tif</span>, <span style="font-weight: bold;">PrinterB2.tif</span> etc. in the case of multiple charts). As with profiling the scanner, the raster file need only be roughly cropped so as to contain the test chart.<br> <br> The scanner recognition files created when <span style="font-weight: bold;">printtarg</span> was run is assumed to be called <span style="font-weight: bold;">PrinterB.cht</span>. Using the scanner profile created previously (assumed to be called <span style="font-weight: bold;">scanner.icm</span>), the printer test chart scan patches are converted to CIE values using the <span style="font-weight: bold;">scanin</span> utility:<br> <br> <a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a href="scanin.html#c">-c</a> <a href="scanin.html#cp1">PrinterB.tif</a> <a href="scanin.html#cp2">PrinterB.cht</a> <a href="scanin.html#cp3">scanner.icm</a> <a href="scanin.html#cp4">PrinterB</a><br> <br> If there were multiple test chart pages, the results would be accumulated page by page using the <a href="scanin.html#ca">-ca</a> option, ie., if there were 3 pages:<br> <br> <a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a href="scanin.html#c">-c</a> <a href="scanin.html#cp1">PrinterB1.tif</a> <a href="scanin.html#cp2">PrinterB1.cht</a> <a href="scanin.html#cp3">scanner.icm</a> <a href="scanin.html#cp4">PrinterB</a><br> <a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a href="scanin.html#ca">-ca</a> <a href="scanin.html#cp1">PrinterB2.tif</a> <a href="scanin.html#cp2">PrinterB2.cht</a> <a href="scanin.html#cp3">scanner.icm</a> <a href="scanin.html#cp4">PrinterB</a><br> <a href="scanin.html">scanin</a> <a href="scanin.html#v">-v</a> <a href="scanin.html#ca">-ca</a> <a href="scanin.html#cp1">PrinterB3.tif</a> <a href="scanin.html#cp2">PrinterB3.cht</a> <a href="scanin.html#cp3">scanner.icm</a> <a href="scanin.html#cp4">PrinterB</a><br> <br> Now that the <span style="font-weight: bold;">PrinterB.ti3</span> data has been obtained, the profile continue in the next section with <span style="font-weight: bold;">Creating a printer profile</span>.<br> <br> If you have any doubts about the correctness of the chart recognition, or the subsequent profile's delta E report is unusual, then use the scanin diagnostic flags <a href="scanin.html#d">-dipn</a> and examine the <span style="font-weight: bold;">diag.tif</span> diagnostic file.<br> <h4><a name="PP5"></a>Creating a printer profile<br> </h4> Creating an RGB based printing profile is very similar to creating a display device profile. For a CMYK printer, some additional information is needed to set the black generation.<br> <br> Where the resulting profile will be used conventionally (ie. using <a href="icclink.html">icclink</a> <a href="icclink.html#s">-s</a>, or <a href="cctiff.html">cctiff</a> <a href="cctiff.html#l">-l</a> or most other "dumb" CMMs) it is important to specify that gamut mapping should be computed for the output (B2A) perceptual and saturation tables. This is done by specifying a device profile as the parameter to the <a href="profile.html">profile</a> <a href="profile.html#S">-S</a> flag. When you intend to create a "general use" profile, it can be a good technique to specify the source gamut as the opposite type of profile to that being created, i.e. if a printer profile is being created, specify a display profile (e.g. sRGB) as the source gamut. If a display profile is being created, then specify a printer profile as the source (e.g. SWOP). When linking to the profile you have created this way as the output profile, then use perceptual intent if the source is the opposite type, and relative colorimetric if it is the same type.<br> <br> "Opposite type of profile" refers to the native gamut of the device, and what its fundamental nature is, additive or subtractive. An emissive display will have additive primaries (R, G & B), while a reflective print, will have subtractive primaries (C, M, Y & possibly others), irrespective of what colorspace the printer is driven in (a printer might present an RGB interface, but internally this will be converted to CMY, and it will have a CMY type of gamut). Because of the complimentary nature of additive and subtractive device primary colorants, these types of devices have the most different gamuts, and hence need the most gamut mapping to convert from one colorspace to the other.<br> <br> If you are creating a profile for a specific purpose, intending to link it to a specific input profile, then you will get the best results by specifying that source profile as the source gamut.<br> <br> If a profile is only going to be used as an input profile, or is going to be used with a "smart" CMM (e.g. <a href="icclink.html">icclink</a> <a href="icclink.html#g">-g</a> or <a href="icclink.html#G">-G</a>), then it can save considerable processing time and space if the -b flag is used, and the -S flag not used.<br> <br> For an RGB printer intended to print RGB originals, the following might be a typical profile usage:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Printer A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#S">-S</a><a href="profile.html#S"> sRGB.icm</a> <a href="profile.html#c">-cmt</a> <a href="profile.html#d">-dpp</a> <a href="profile.html#p1">PrinterA</a><br> <br> or if you intent to print from SWOP style CMYK originals:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Printer A"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#S">-S</a><a href="profile.html#S"> swop.icm</a> <a href="profile.html#c">-cmt</a> <a href="profile.html#d">-dpp</a> <a href="profile.html#p1">PrinterA</a><br> <br> <h4><a name="PP6"></a>Choosing a black generation curve (and other CMYK printer options)<br> </h4> For a CMYK printer, it would be normal to specify the type of black generation, either as something simple, or as a specific curve. The documentation in <a href="profile.html#k">profile</a> for the details of the options. If you want to experiment with the various black generation parameters,<br> then it might be a good idea to create a preliminary profile (using <a href="profile.html#q">-ql</a> <a href="profile.html#b">-b</a> <a href="profile.html#ni">-no</a>, <a href="profile.html#no">-ni</a> and no <a href="profile.html#S">-S</a>), and then used <a href="xicclu.html#g">xicclu</a> to explore the effect of the parameters.<br> <br> For instance, say we have our CMYK .ti3 file <span style="font-weight: bold;">PrinterB.ti3</span>. First we make a preliminary profile called <span style="font-weight: bold;">PrinterBt</span>:<br> <br> copy PrinterB.ti3 PrinterBt.ti3 (Use "cp" on Linux or OSX of course.)<br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#q">-ql</a> <a href="profile.html#b">-b</a> <a href="profile.html#ni">-no</a> <a href="profile.html#no">-ni</a> <a href="profile.html#p1">PrinterBt</a><br> <br> Then see what the minimum black level down the neutral axis can be:<br> <br> <a href="xicclu.html">xicclu</a> <a href="xicclu.html#g">-g</a> <a href="xicclu.html#k">-kz</a> <a href="xicclu.html#f">-fif</a> <a href="xicclu.html#i">-ir</a> <a href="xicclu.html#p1">PrinterBt.icm</a><br> <br> Which might be a graph something like this:<br> <br> <img alt="Graph of CMYK neutral axis with minimum K" src="Kgraph1.jpg" style="width: 250px; height: 250px;"><br> <br> Note how the minimum black is zero up to about L* value 20 (= 80% of the curve), and then jumps up to 70%. This is because we've reached the total ink limit, and K then has to be substituted for CMY, to keep the total under the total ink limit.<br> <br> Then let's see what the maximum black level down the neutral axis can be:<br> <br> <a href="xicclu.html">xicclu</a> <a href="xicclu.html#g">-g</a> <a href="xicclu.html#k">-kx</a> <a href="xicclu.html#f">-fif</a> <a href="xicclu.html#i">-ir</a><a href="xicclu.html#l"></a> <a href="xicclu.html#p1">PrinterBt.icm</a><br> <br> Which might be a graph something like this:<br> <br> <img alt="Graph of CMYK neutral axis with maximum K" src="Kgraph2.jpg" style="width: 250px; height: 250px;"><br> <br> Note how the CMY values are fairly low up to an L* value of about 15 (the low levels are setting the neutral color), and then they jump up. This is because we've reach the point where black on it's own, isn't as dark as the color that can be achieved using CMY and K. Because the K has a dominant effect on the hue of the black, the levels of CMY are often fairly volatile in this region.<br> <br> Any K curve we specify must lie between the black curves of the above two graphs.<br> <br> Let's say we'd like to chose a moderate black curve, one that aims for about equal levels of CMY and K. We should also aim for it to be fairly smooth, since this will minimize visual artefacts caused by the limited fidelity that profile LUT tables are able to represent inside the profile.<br> <br> We need our curve to at least reach 70% at an L* value of 20 (80% of the curve.) Lets also start at 0 at L* == 100 (0% of the curve).<br> <br> So for a first try:<br> <br> <a href="xicclu.html">xicclu</a> <a href="xicclu.html#g">-g</a> <a href="xicclu.html#k">-kp 0 0 .8 .7 1</a> <a href="xicclu.html#f">-fif</a> <a href="xicclu.html#i">-ir</a> <a href="xicclu.html#p1">PrinterBt.icm</a><br> <br> <img alt="Graph of CMYK neutral axis with -kp 0 0 .8 .7 1" src="Kgraph3.jpg" style="width: 250px; height: 250px;"><br> <br> We've matched the curve at 80% quite well, but the transition isn't very smooth, and the black level is higher than the CMY for most of the curve. Let's try making the black curve somewhat concave, and also adjust the other parameters slightly:<br> <br> <a href="xicclu.html">xicclu</a> <a href="xicclu.html#g">-g</a> <a href="xicclu.html#k">-kp 0 0 .83 .75 .5</a> <a href="xicclu.html#f">-fif</a> <a href="xicclu.html#i">-ir</a> <a href="xicclu.html#p1">PrinterBt.icm</a><br> <br> <img alt="Graph of CMYK neutral axis with -kp 0 0 .83 .75 .5" src="Kgraph4.jpg" style="width: 250px; height: 250px;"><br> <br> This is looking pretty good now, but the L* = 100 point has the black curving up rather suddenly at the start. Lets adjust the black curve so the black will only start coming in at the 10% mark:<br> <br> <a href="xicclu.html">xicclu</a> <a href="xicclu.html#g">-g</a> <a href="xicclu.html#k">-kp 0 .1 .83 .83 .6</a> <a href="xicclu.html#f">-fif</a> <a href="xicclu.html#i">-ir</a> <a href="xicclu.html#p1">PrinterBt.icm</a><br> <br> <img alt="Graph of CMYK neutral axis with -kp 0 .1 .83 .83 .6" src="Kgraph5.jpg" style="width: 250px; height: 250px;"><br> <br> <br> The curve parameters can now be used to generate our real profile:<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Printer B"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#k">-kp 0 .1 .83 .83 .6</a> <a href="profile.html#S">-S</a><a href="profile.html#S"> sRGB.icm</a> <a href="profile.html#c">-cmt</a> <a href="profile.html#d">-dpp</a> <a href="profile.html#p1">PrinterB</a><br> <br> <h4>Overriding the ink limit<br> </h4> Normally the total ink limit will be read from the <span style="font-weight: bold;">PrinterB.ti3</span> file, and will be set at a level 10% lower than the number used in creating the test chart values using <a href="targen.html#l">targen -l</a>. If you want to override this with a lower limit, then use the <a href="profile.html#l">-l flag</a>.<br> <br> <a href="profile.html">profile</a> <a href="profile.html#v">-v</a> <a href="profile.html#E">-D"Printer B"</a> <a href="profile.html#q">-qm</a> <a href="profile.html#S">-S</a><a href="profile.html#S"> sRGB.icm</a> <a href="profile.html#c">-cmt</a> <a href="profile.html#d">-dpp</a> <a href="profile.html#k">-kr</a> <a href="profile.html#p1">PrinterB</a><br> <br> Make sure you check the delta E report at the end of the profile creation, to see if the profile is behaving reasonably.<br> <br> <hr size="2" width="100%"> <h3><a name="LP1"></a>Linking Profiles</h3> Two device profiles can be linked together to create a device link profile, than encapsulates a particular device to device transform. Often this step is not necessary, as many systems and utilities will link two device profiles "on the fly", but creating a device link profile gives you the option of using "smart CMM" techniques, such as true gamut mapping, improved inverse transform accuracy, tailored black generation and ink limiting.<br> <br> The overall process is to link the input space and output space profiles using <a href="icclink.html">icclink</a>, creating a device to device link profile. The device to device link profile can then be used by cctiff (or other ICC device profile capable utilities), to color correct a raster files.<br> <br> Three examples will be given here, showing the three different modes than <span style="font-weight: bold;">icclink</span> supports.<br> <br> In <a href="icclink.html#s">simple mode</a>, the two profiles are linked together in a similar fashion to other <span style="font-weight: bold;">CMMs</span> simply using the forward and backwards color transforms defined by the profiles. Any gamut mapping is determined by the content of the tables within the two profiles, together with the particular intent chosen. Typically the same intent will be used for both the source and destination profile:<br> <br> <a href="icclink.html">icclink</a> <a href="icclink.html#v">-v</a> <a href="icclink.html#q">-qm</a> <a href="icclink.html#s">-s</a> <a href="icclink.html#si">-ip</a> <a href="icclink.html#so">-op</a> <a href="icclink.html#p1">SouceProfile.icm</a> <a href="icclink.html#p2">DestinationProfile.icm</a> <a href="icclink.html#p3">Source2Destination.icm</a><br> <br> <br> In <a href="icclink.html#g">gamut mapping mode</a>, the pre-computed intent mappings inside the profiles are not used, but instead the gamut mapping between source and destination is tailored to the specific gamuts of the two profiles, and the intent parameter supplied to <span style="font-weight: bold;">icclink</span>. Additionally, source and destination viewing conditions should be provided, to allow the color appearance space conversion to work as intended:<br> <br> <a href="icclink.html">icclink</a> <a href="icclink.html#v">-v</a> <a href="icclink.html#q">-qm</a> <a href="icclink.html#g">-g</a> <a href="icclink.html#si">-ip</a> <a href="icclink.html#c">-cmt</a> <a href="icclink.html#d">-dpp</a> <a href="icclink.html#p1">MonitorSouceProfile.icm</a> <a href="icclink.html#p2">DestinationProfile.icm</a> <a href="icclink.html#p3">Source2Destination.icm</a><br> <br> <br> In <a href="icclink.html#G">inverse output table gamut mapping mode</a>, the pre-computed intent mappings inside the profiles are not used, but instead the gamut mapping between source and destination is tailored to the specific gamuts of the two profiles, and the intent parameter supplied to <span style="font-weight: bold;">icclink</span>. In addition, the B2A table is not used in the destination profile, but the A2B table is instead inverted, leading to improved transform accuracy, and in CMYK devices, allowing the ink limiting and black generation parameters to be set.<br> <br> For a CLUT table based RGB printer destination profile, the following would be appropriate:<br> <br> <a href="icclink.html">icclink</a> <a href="icclink.html#v">-v</a> <a href="icclink.html#q">-qm</a> <a href="icclink.html#G">-G</a> <a href="icclink.html#si">-ip</a> <a href="icclink.html#c">-cmt</a> <a href="icclink.html#d">-dpp</a> <a href="icclink.html#p1">MonitorSouceProfile.icm</a> <a href="icclink.html#p2">RGBDestinationProfile.icm</a> <a href="icclink.html#p3">Source2Destination.icm</a><br> <br> For a CMYK profile, the total ink limit needs to be specified (a typical value being 10% less than the value used in creating the device test chart), and the type of black generation also needs to be specified:<br> <br> <a href="icclink.html">icclink</a> <a href="icclink.html#v">-v</a> <a href="icclink.html#q">-qm</a> <a href="icclink.html#G">-G</a> <a href="icclink.html#si">-ip</a> <a href="icclink.html#c">-cmt</a> <a href="icclink.html#d">-dpp</a> <a href="icclink.html#l">-l250</a> <a href="icclink.html#k">-kr</a> <a href="icclink.html#p1">MonitorSouceProfile.icm</a> <a href="icclink.html#p2">CMYKDestinationProfile.icm</a> <a href="icclink.html#p3">Source2Destination.icm</a><br> <br> Note that you should adjust the source (<a href="icclink.html#c">-c</a>) and destination (<a href="icclink.html#d">-d</a>) viewing conditions for the type of device the profile represents, and the conditions under which it will be viewed.<br> <br> <hr size="2" width="100%"><br> <h3><a name="TR1"></a>Transforming colorspaces of raster files</h3> Although a device profile or device link profile may be useful with other programs and systems, Argyll provides the utility <a href="cctiff.html">cctiff</a> for directly applying a device to device transform to a <a href="File_Formats.html#TIFF">TIFF</a> raster file. The cctiff utility is capable of linking an arbitrary sequence of device profiles, device links and abstract profiles. Each device profile can be preceded by the <span style="font-weight: bold;">-i</span> option to indicate the intent that should be used. Both 8 and 16 bit per component files can be handled, and up to 8 color channels. The color transform is optimized to perform the transformation rapidly.<br> <br> If a device link is to be used, the following is a typical example:<br> <br> <a href="cctiff.html">cctiff</a> <a href="cctiff.html#p1">Source2Destination.icm</a> <a href="cctiff.html#p2">infile.tif</a> <a href="cctiff.html#p3">outfile.tif</a><br> <br> <i><br> </i>If a source and destination profile are to be used, the following would be a typical example:<br> <br> <a href="cctiff.html"> cctiff</a> <a href="cctiff.html#i">-ip</a> <a href="cctiff.html#p1i">SourceProfile.icm</a> <a href="cctiff.html#i">-ip</a> <a href="cctiff.html#p1o">DestinationProfile.icm</a> <a href="cctiff.html#p2">infile.tif</a> <a href="cctiff.html#p3">outfile.tif</a><br> <br> <br> <br> <hr size="2" width="100%"><br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> </body> </html>