GaMapICC

SUMMARY

GaMapICC is a Mac OS X droplet that offers an advantageous alternative to the "Convert to Profile" command in Photoshop, or similar image processing software.

The droplet accepts one or more TIFF images as input, derives an optimized gamut mapping for the selected output device, and applies this gamut mapping to the images. Technically speaking, the droplet computes an optimized device-link profile from the gamuts of the images and the output device and applies it. As of the time of writing, Photoshop (CS4) offers only rudimentary device-link support and can not calculate dynamic gamut mappings.

EXTENDED DESCRIPTION

Most ICC conformant image processing tools and printing packages apply a fixed color compression – called gamut mapping – to images. In contrast GaMapICC calculates an optimized gamut mapping for a given output device on the fly instead of using the pre-calculated, generic gamut mapping tables of the profiles involved. You can choose whether the gamut compression should be calculated on basis of the whole source color space, the actual gamut of each individual image or the gamut union of a group of images. This makes sure that there is exactly as much gamut compression as necessary to avoid both clipping and needless desaturation.

ACKNOWLEDGEMENT AND COPYRIGHT

GaMapICC is an Applescript GUI wrapper authored by Klaus Karcher. It contains and applies Argyll's command line tools tiffgamut, cctiff and collink as well as growlnotify, a command-line tool to post Growl notifications. All of these tools are the copyright of their respective authors.

Argyll is an open source, ICC compatible color management system by Graeme Gill.

Growl is a notification system for Mac OS X.

Argyll as well as GaMapICC are licensed under the terms of the GNU Affero General Public License (see Licenses/agpl.txt).

Growl and growlnotify are licensed under the terms of BSD (see Licenses/Growl-license.txt).

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

GaMapICC's aim is to gain a wider group of users access to Graeme Gill's excellent color management system and to improve productivity.

GaMapICC contains the above-named command-line tools in binary form. The source code of ArgyllCMS as well as comprehensive documentation is included with this distribution in the ZIP archive "Source_Code/Argyll_V1.1.0_src.zip" and can be download from Graeme Gill's webpage http://argyllcms.com/.

While GaMapICC also works without Growl, it is recommended to install Growl and activate it using its Preference Pane in order to get detailed progress notifications. Growl can be downloaded from http://growl.info/.

As GaMapICC is written in AppleScript, it's easy to access or modify its source code: Simply open the Application in Apple's Script Editor. Please note that any preferences (like viewing condition assignments or output profile settings) will be lost when you save the script.

INSTALLATION

Download the Disk ImageGaMapICC_v0.5.dmg and open it.

To install GaMapICC, just copy the droplet to your hard disk.

It is recommended that you also install the Growl notification system so that you can be notified of image conversion operations in progress. To do so, download the Growl disk image appropriate for your system from http://growl.info/, open it and double-click the Installer Package. To start or stop Growl, open its Preference Pane in "System Preferences", and click the Start/Stop button in the "General" tab. Mark the checkbox "Start Growl at login" if you want to use it permanently (I wouldn't want to do without Growl as it can also display e-mail or download notifications).

GaMapICC creates a cache folder in ~/Library/Caches/ and a log file in ~/Library/Logs/. The name of the cache folder and log file equals the name of the application. When you rename GaMapICC, it will create a new cache folder and log file.

USAGE

Drop TIFF images or folders containing TIFF images onto GaMapICC's application icon. When you use GaMapICC for the first time, it will prompt for an output profile. It will also prompt for viewing conditions for every new input- or output profile. They allow the conversion to take account of how colors will be seen under the typical viewing conditions for the particular medium. There are 10 predefined viewing conditions available:

Viewing Condition

Surround

Luminance of adapting field

Scene or device white luminance

Ambient illuminance

Flare

pp

Practical Reflection Print

average

32 cd/m²

< 160 cd/m²

500 lx

1 %

pe

Print evaluation environment

average

64 cd/m²

< 320 cd/m²

1000 lx

1 %

mt

Monitor in typical work environment

average

22 cd/m²

< 110 cd/m²

350 lx

2 %

mb

Bright monitor in bright work environment

average

42 cd/m²

< 210 cd/m²

660 lx

2 %

md

Monitor in darkened work environment

dim

4 cd/m²

≥ 20 cd/m²

≤ 60 lx

1 %

jm

Projector in dim environment

dim

10 cd/m²

≥ 50 cd/m²

≤ 160 lx

1 %

jd

Projector in dark environment

dark

10 cd/m²

50 cd/m²

~ 0 lx

1 %

pcd

Photo CD, original scene outdoors

average

320 cd/m²

< 1600 cd/m²

5020 lx

0 %

ob

Original scene, Bright Outdoors

average

2000 cd/m²

< 10000 cd/m²

31400 lx

0 %

cx

Cut Sheet Transparencies on a viewing box

cut sheet

53 cd/m²

265 cd/m²

~ 0 lx

1 %

GaMapICC remembers your decisions and you can review and delete them when necessary (see below).

Next you will be prompted for a gamut mapping strategy. There are 3 options:

"Source Profile specific" compresses the gamut as much as necessary to fit the whole source color space into the destination. GaMapICC calculates a device link profile for every new combination of source and destination profiles and stores them in a cache folder to speed up recurring conversions. Source profile specific gamut mapping can cause unnecessary gamut compression (desaturation or contrast reduction) when the destination gamut is significantly smaller than the gamut of the source profile and the image does not utilize the whole source profile gamut.

"Image specific" calculates the gamut mapping based on the effective gamut of every single image. It is generally the most advisable gamut mapping strategy for single images as it avoids unnecessary compression.

"Sequence specific" calculates the gamut union of all images you drop onto GaMapICC at once. This assures that you get consistent results, i.e. the same gamut mapping for all images. It is generally the most advisable method for series or sequences of images, e.g. photos of different objects in front of the same background. Please note that all TIFF files of a sequence must be in the same color space. Calculating the gamut union can take a long time.

GaMapICC can filter out little used colors before calculating sequence specific and image specific gamuts. This means it doesn't attempt to compress the gamut in order to reproduce those little used colors. Therefore it asks for the percentage of colors to be used to constitute the gamut surface in these cases.

GaMapICC calculates device link profiles based on your decisions, converts all images with these device link profiles and embeds the output profile.

GaMapICC stores converted images in the same folder as the originals and appends a suffix to their names.

The naming scheme is:

Image specific profiles and gamut files will be deleted immediately after the conversion, source profile specific profiles will be kept in the cache and sequence profiles and gamuts will be stored in the same folder as the last image of the sequence. They can be used with Argyll from the command line. The naming scheme for Sequence profiles and gamuts is seqProf<date+time>(<percentage>).<gam|icc>.

Please note that existing files with the same name will be overwritten without warning.

To review viewing condition assignments or to change other preferences, simply run GaMapICC (i.e. double-click the application icon).

LIMITATIONS

GaMapICC expects RGB or CMYK source TIFFs with embedded ICC v2 profiles. It currently can't handle ICC v4 Profiles, ZIP-compressed TIFs, TIFs without embedded profiles or any other image formats.

Processing large images and sequences of images can take a long time and take up a lot of resources. Especially when GaMapICC/tiffgamut calculates the gamut union of an image sequence, it might look like GaMapICC is frozen and the system might work to full capacity for several minutes. Performance improvements and enhanced progress feedback are scheduled for future versions.

GaMapICC identifies profiles only by their internal name. When you have multiple profiles with the same internal name, GaMapICC can't distinguish them. Assuming you want to convert a TIF to your printer's color space, the TIF contains a profile named "sRGB" and GaMapICC finds a device link profile with a matching name, it will use it regardless of whether the source profiles are actually identical.

As GaMapICC is in an early development stage, it may contain bugs. Please use it with caution and report bugs or suggestions to ga@mapicc@digitalproof.fake@invalid.cominfo.

FAQ

Q: What does "GaMapICC" stand for?

A: hmm... a kind of automatic gearbox for ICC gamut mapping? Using ICC profiles with pre-calculated gamut mappings is similar to driving vehicles with only one gear. The transmission ratio has been determined when the parts of the vehicle have been built. Even worse: The mechanic who set the gear ratio did not know the specifications of the other parts or the terrain the vehicle has to cope with. This means: it's impossible to get the ideal torque in every situation with this vehicle. Argyll adds the missing parts to the engine: a multi-speed transmission, gear stick, power coupler, and so on – but it's difficult to drive a stick shift car when you are unaccustomed to it. GaMapICC's aim is to provide Argyll's great technology with a user-friendly interface. However, using GaMapICC is no guaranty for "perfect" results. Transferring an image from one medium to another can be considered as a creative act that incorporates looking into the way the artist handled the capabilities of the primary medium and finding a new way to translate this artistic process to the new medium. GaMapICC can provide an unbiased starting point, but cannot supersede the creative act.

Q: How much does GaMapICC cost?

A: It's free (mainly free as in freedom, but also free as in free beer). See Licenses/agpl.txt for details.

Q: Will future releases be free?

A: Yes.

Q: Why is it free? Is it worthless?

A: See http://www.gnu.org/philosophy/free-sw.html/. And make your own choice about GaMapICC's worth for you.

Q: Can you afford to give GaMapICC away for free? Don't you need any money?

A: As yet, the amount of time and money I spent developing GaMapICC is absolutely manageable. Of course I could always use money for textbooks and papers, conference fees, traveling expenses, equipment and so on. So if you use GaMapICC for commercial purposes and would like to sponsor or make a donation towards the project, feel free to contact me. If you like to support the development of ArgyllCMS, you can make a donation using PayPal by selecting the DONATE button on Graeme Gill's homepage.

Q: I found a bug / typo / have a suggestion for improvement. What's next?

A: As GaMapICC is in an early development stage and English is not my first language, situations like this might be common. I'm looking forward to any feedback. Please send e-mail to ga@mapicc@digitalproof.fake@invalid.cominfo.

Q: Will there be a Linux or Windows version of GaMapICC?

A: Certainly not. Although Argyll is available for all major platforms, GaMapICC is tied to MacOS. This allows for rapid, simple programming. Making a cross-platform project means a multiple of complexity and porting GaMapICC to Linux or Windows currently means rewriting it from scratch. Nevertheless I'd be happy for anyone to pick up the ideas or concepts of GaMapICC and use it in other open source projects. There are already other front-ends for Argyll. First and foremost Alastair M. Robinson's ImgTarget should be mentioned. AFAIK Graeme is also working on a cross-platform GUI.

Q: I use GaMapICC for camera-to-printer transformations, but don't see many advantages. I still get clipping, banding and color shifts in the transformed photos on my monitor. What's going wrong?

A: What you see is most likely not what you get when you actually print the image. Monitor gamuts are typically much smaller than printer- or input gamuts in several regions. Your image viewer typically transfers the image from the embedded printer profile to your monitor profile using the colorimetric intent to display it and this is what causes the artifacts.

Q: Can I use device independent (editing space) profiles as output profiles in GaMapICC?

A: Yes, but what do you want to achieve by that? Image- and device-depended gamut mapping doesn't go with device independent concepts very well. I didn't check what happens when you use GaMapICC to transform e.g. photos from a camera- to an editing space. I guess it won't hurt them as long as the editing space is big enough – but the same applies to the "usual" way of using just the colorimetric intent. When the editing space is smaller than the image gamut, GaMapICC might improve the results as it applies advanced gamut mapping instead of simple clipping, but I wonder if it's advisable to use such an editing space?

Q: Can I use GaMapICC in a device independent workflow?

A: You can. There are some things to consider. As a rule of thumb I'd try to avoid editing images in device-dependent spaces for several reasons: they are often not very well-behaved, in the case of CMYK devices one can easily mix up the separation and exceed important device limits (e.g. the total ink limit). Also any corrections related to the image will be lost when you have to revert to the source image in order to output it to a different device. So a useable strategy in an RGB workflow might be to perform corrections related to the image itself (and not its representation in the device space) in the source (editing) space and device-related corrections in the output space. When the output space is CMYK, I prefer to carry out also device-specific corrections in the editing space (on separate layers) or to add a terminal colorimetric output-space-to-output space transformation in order to harmonize the separation.

Q: Can I use GaMapICC/Argyll device link profiles to soft-proof my device independent image in Photoshop?

A: No. Unfortunately Photoshop (CS4) offers only very limited device-link support. This might change when enough users ask for it. So ask Adobe! As a workaround for soft-proofs, you can create ordinary device profiles with the same gamut mapping with Argyll's colprof, but creating these profiles with GaMapICC is currently not supported.

Q: Does GaMapICC preserve the separation of the source image when transforming from one CMYK space to another?

A: No, as I can't find many scenarios where this might be of use.

Q: Does GaMapICC preserve pure black in CMYK-to-CMYK transformations?

A: Yes. GaMapICC uses collink's "-fk" and "-ke" options when creatig CMYK-to-CMYK profiles. See http://argyllcms.com/doc/collink.html/ for details.

Q: Can GaMapICC's separation parameters or rendering intent options be changed?

A: There is currently no user interface to change them, but of course you can change anything you like in the source code.

Q: Are there localized versions of GaMapICC?

A: No. GaMapICC is currently only available in English (or rather in what I consider as English ;-). Future versions might be localized, provided that there is adequate demand and someone who translates it (easy to handle as there is not much text).

Q: Why is GaMapICC written in AppleScript?

A: Because I underestimated the possible features when I conceived the project as a simple droplet: New features and ideas emerged while I wrote the droplet and Graeme implemented the "hard stuff" faster than I was able to adapt my code. It's certainly possible that future releases will be written in another programming language or will at least use a decent IDE like Xcode.

Q: Does AppleScript compromise GaMapICC's performance?

A: No. Every performance-critical task runs in the background and is written in C. AppleScript only limits the capabilities of the User Interface and the maintainability of the code. On the other hand it's very simple to learn and use and makes GaMapICC easily customizable to one's own needs.

Q: I accidently started GaMapICC with a huge collection of images. Even though I forced GaMapICC to quit, my computer still seems to be very busy. What can I do to calm it down?

A: GaMapICC launches tiffgamut, cctiff and collink as background processes. They might continue running even when you forced GaMapICC to quit and they are not visible in the "force quit" window. You can either wait until they are done, restart your system, or stop the background processes using Apple's "Activity Monitor" or "Terminal" utility.

The Terminal command

ps -axo 'pid comm' | grep -E '(tiffgamut|cctiff|collink)' | awk '{ print $1; }' | xargs kill

will stop all Argyll backgroud processes immediately.

Q: I got this error message: "GaMapICC got an error. A bug report has been copied to the clipboard." What's going on?

A: Typically this means that something went wrong in the background. You can paste the bug report into a new e-mail window and send it to the e-mail address mentioned in the report if you like to help debugging.

Q: What are your plans for the future of GaMapICC?

A: there are already several items on my list: performance improvements, better progress feedback, "real" preferences (stored as a plist) and a better user interface for them, more user-definable properties, more robust profile recognition, hotfolder-based operation modes, multiprocessing, better error handling, documentation, usage examples and a webpage for GaMapICC – just to name some of them. But what I'm looking forward to most and want to be surprised by is YOUR feedback :-)

VERSION HISTORY

Version

Date

Summary

based on Argyll version

Details

0.1

Oct 2008

first public release

1.0.3

0.2 —
0.4

Dec 2008 —
Nov 2009

internal versions an beta tests

1.0.3 —
1.1.0 RC1

  • bugfixes, performance tuning
  • gamut mapping improvements
  • Snow Leopard compatibility
  • PPC and Intel versions combined in one bundle
  • license change from GPL to AGPL

0.5

Jan 2010

second public release

1.1.0

Copyright (C) 2008—2010 Klaus Karcher, Eichenallee 18, 26203 Wardenburg, Germany,
mail to:ga@mapicc@digitalproof.fake@invalid.cominfo.
Klaus Karcher · Eichenallee 18 · 26203 Wardenburg · Germany · Tel: +49 441 8859770 · E-Mail: k@archer@digitalproof.fake@invalid.cominfo

Inhaltlich Verantwortlicher gemäß § 55 Abs. 2 RStV: Klaus Karcher (Anschrift wie oben)

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.