ICM profile hacker.
Version 1.11 released 21-Nov-2002
Project started around April 2002
Project continued at http://nerdipedia.com/tiki-index.php?page=colour+management
Do you dream in color? After the two weeks of my "spare" time spent writing a ICM color profile editing program I dream in color a lot.
There are rubix cubes on steroids with letters L A B on the sides.
And some with RGB and others XYZ.
Seriously now what is this craziness about � it is about making my printer print colors I like when using a third party archival ink.
We can't do much about the first three points but we can try to manage the available colors set to produce nice prints.
Now before I get into the nitty gritty I'm going to have a little whine and I'm sure I'm not alone here.
I want to whine about three things
The sad thing is espon make really good printers -
but unless they stop this non-sense my next printer will probably be a
Being a hacker (not cracker) type with the motto "They're only numbers � how hard can it be" - I dived in to writing my own.
If you at all serious about this you need to look at http://www.color.org/ where you can find the specs for the ICM files. There is also some handy stuff athttp://www.littlecms.com/. At http://www.logicol.net/color_calc.html you can find a color space calculator and code examples to swap between color spaces.
I won't explain ICM in any great
detail but the gist is to have a universal way for programs to
communicate color information and this is not RGB and a way to
translate the colors. The common or PCS (profile connected space) is
usually CIE LAB. The profile usually contain a number of CLUTs (color
look up tables) but my program only deals with two with the main aim of
modifying one of them. This CLUT is called B2A0 (or BtoA0) it has the
data for converting from PCS to the device � ie the printer. There can
be multiple B2A cluts but I ignore them. I can also look at the A2B
CLUT but this is mainly educational. In the beginning I thought the A2B
clut may be used to convert the input to PCS but this does not appear
to be the case.
I will only discuss the later table.
The previous image is from one the CLUTs generated by my program this one is from a standard epson profile. Note there are 2 missing cells. The colors are less saturated because the OEM inks are brighter. By modifying the table we can get fairly good colors from pigment inks until we reach the limitations of the ink. I also warm up the cold yellows by adding some red to the "yellow" cells.
Individual saturation � no prizes for guessing this lets us control the brightness of individual colors.
Gamma � This is hard to explain, it affects darkness and contrast � play with it.
Trim neutral lets you make the grays gray. If your prints are blue you adjust these controls to make the patch yellower � we could reverse this in future versions.
Load and Save setting let us save and reload the numbers in the spin-boxes as text based ini files.
Lum only adjusts the sample color strip luminance on the screen it has no affect on the generated CLUT.
Color shift is the used to compensate for impure ink color. The generations ink has a very cold yellow, (tend towards green) while the OEM ink is very warm (tends towards orange). If we put a positive number in the left hand 'shift' spin box the CLUT will have some red added to the yellow bits.
This program fills the gap between the inadequate standard colors controls that can be used with the epson driver and commercial profile generators � many of which use scanners and custom targets to attempt automatic calibration. It is really just for epsons because although they use CYMK inks they behave as RGB devices. I wrote it for my own use and it is not really finished. I have many other projects I want to work on so this is it. If someone (delphi guru) wants to take it further talk to me. There are a few areas that need work (apart from commenting the code). The program can not generate a profile from scratch - every epson owner should have ICM profiles they can hack but it would be nice to not need them. Currently the white point is hard coded and the profile white-point is not used. It would also be good to make the CLUT ini files a bit fancier - mainly to make future expansion easier. I have found the controls adequate but extra controls may be required for some printers. For example we might want to control the luminance on individual colors.
You can download the zipped for free. All the standard disclaimers apply. It doesn't contain trojans or spy-ware but it probably has bugs, it will not be able the edit all profiles but the few I've tried have worked. If you find a bug let know, if its simple I'll fix it but no promises.
October 2008 - Project continued at http://nerdipedia.com/tiki-index.php?page=colour+management
Have fun, Eddie,
Was this Interesting? If so.
Check out the rest of the site here.
Or the photography section here.