Adobe Camera Raw: calibration and color accuracy

November 11, 2006

You are visitor # 27417

Introduction

Adobe CameraRaw has a calibration tab that is planned to obtain more accurate colors from our raw files adapting built-in profiles to the behavior of our specific combination camera/lens. Adobe doesn’t provide indication for sliders arrangement and tweaking them on normal images is very difficult. The first to take advantage of this feature was Bruce Fraser, that in his famous article described the method to find a new more pleasant and accurate placement of colors. He got it sampling by the eyedropper the RGB patches of a 24-patch GretagMacbeth’s Colorchecker capture and moving carefully the calibration sliders. Later, Thomas Fors automated Bruce’s manual process and created his famous “ACR Calibrator script”. Then, starting from the Fors’s one, two authors added their alternative, following new ways and various approaches. These authors are Rags Gardner and Simon Tindemans.

All scripts are based on the same procedure: they open many times a raw capture of a GretagMacbeth 24-patch ColorChecker with several sliders setting and, measuring the result on patches, they search an arrangement that gives the smallest error from the reference target value. The basic rule is that the target capture must be evenly lit and properly exposed. The whole process is divided principally in a phase of basis adjustment and a phase of calibration. In the first phase the script searches an arrangement for white balance and for the patches of the gray row and then, after a further check on white balance, it begins the second phase that is the real calibration process on the color patches. At the end a final status window reports the settings that give the shortest distance from the reference target. For details and information you have to visit the authors’ web sites.

In this article I report the accuracy reached with the above scripts in my calibration effort, some validations in different lightning condition and the impact on new color balance caused by the adjust sliders and the tonal curve movement. Choosing between my results, I preferred the calibrations that give up a little the average error for a better worst. Don’t expect the perfection: every pass inserts a small error in the pipeline.

My configuration and method are the following: Windows XP Sp2, Adobe Photoshop CS2, CameraRaw 3.4, Prophoto working space, Adobe ACE color engine, last available scripts version and workflow in 16 bit depth. The images were taken by a Canon EOS 350D Digital Rebel XT/Sigma 18-200mm F3.5-6.3 DC and by a Nikon Coolpix E5400, in a clear day of July, in direct midday solar light and an angle of incidence of 45° on target. This target was on a flat gray background and I used the exposure bracketing (1/3 stop) and the lowest ISO sensibility permitted by the camera. After that in ProfileMaker 5’s module MeasureTool I read the targets using a spectrophotometer (GretagMacbeth Eye-One Pro) and then I found LabD50 value. D50 is the illuminant nearer to my source light because my Eye-One doesn’t read strong light. In ColorPicker module I converted LabD50 value in Prophoto RGB value with Logosync CMM and with them I replaced the generic target values in the scripts where possible, and using directly LabD50 file where not permitted.

For the calibration intent the starting setup of CameraRaw proposes all fields of the all tabs at zero, except for brightness slider that remains on value 50. The tonal curve is always on linear mode, apart from in the specific final test. Once I opened the image, I defined and saved the Pen path in a duplicated image, then I tried the scripts playing with their options. The results were analyzed with the powerful freeware ColorLab di GretagMacbeth which uses GretagMacbeth ProfileMaker 5 math but can also manage Tiff format files. In fact, in Photoshop, an action duplicated and converted the images in Lab mode, then it also selected and averaged by the average filter the center of every patch; after that it picked up one pixel of these areas in sequence and created with them a new 6x4 pixel image in 16 bit in Lab mode which, once flattened, was saved in Tiff format without compression. This image, opened in ColorLab and converted in spot colors, was compared with the target Lab reference file for an average and maximum error evaluation using always the distance color formula CIE deltaE 2000. Here below I list the screen shots, the most significant parts of ColorLab reports and more details on gray row to analyze the scripts performances in basis phase.

The exposure of my images is such that if they are opened in CameraRaw in calibration setup and if the white patch is sampled by the eyedropper, they reach RGB 242 in Nikon image and RGB 248 in Canon image. The white balance fields show 5100-5200K in both cases.

  1. ACR Default
  2. ACR Calibrator Script
  3. ACR Calibrate Rags script
  4. ACR Calibrator L script
  5. Results validation along the White Balance range
  6. Results validation moving Adjust sliders and Tonal curve
  7. Download files
  8. Conclusions

ACR Default

Canon 350D_CR2_7409
Nikon E5400_NEF_2663



Canon 350D

DeltaE 2000 Error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,41
7,68
2,72
7,68
The average error in color patches is 2.72 and the worst is 7.68. The biggest errors are in the red patch and in its domain.



Nikon E5400

DeltaE 2000 Error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,53
5,20
2,80
5,20
The average error in color patches is 2.8 and the worst is 5.2. The biggest errors are in the red patch and in its domain.


ACR Calibrator script

Thomas Fors’s script is the origin of all that and it still remains the most famous script. Without any options, the script works moving one slider at a time, bases the error calculation on deltaE and samples only the RGB patches of the target. After three passes, a very essential final status window reports the best values found. The whole process is a little slow. The author’s development is essentially to assurance the compatibility with new versions of CameraRaw plug-in.



Canon 350D (ACR Calibrator)

Looking at the final status window, the script finds the 7409_CR2 image very overexposed and pushes hard on exposure and compensates with brightness slider. The gray axis arrangement penalizes the most luminous patches and the whole calibration. I tried unsuccessfully to feed it with a better adjust sliders setting before starting the script action but my parameters were overwritten.

Here below we can see that in gray patches there are high average and maximum error in deltaE and in deltaL column and some fluctuations between positive and negative values. Discreet deltaC and deltaH columns, except the peak.

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,41
7,68
2,72
7,68
7409_Fors
2,31
6,55
2,35
4,62
%_gain
-4
-15
-14
-40
Average errors don’t differ too much from before but the worst color comes down of forty percent and tends to halved.

Noting the overexposure, I tried to calibrate an image a bit underexposed from the same lot (white RGB 235):



Canon 350D_CR2_7406 (ACR Calibrator)

Adjust sliders now suggest that the script finds this image well exposed but the gray row analyze the reveals the same footprint: high error and fluctuations. The deltaC and deltaH columns are superimposable to the previous image.

The color calibration reports similar values in the tab: in hue fields only the green differs 1 point and all saturation sliders move 3 points.

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,41
7,68
2,72
7,68
7406_Fors
2,26
5,08
2,34
4,02
%_gain
-6
-34
-14
-48
The average error on colors doesn’t change. There is an improvement in the worst color that now is near to 4 and halved from starting point.



Nikon E5400 (ACR Calibrator)

The script finds Nikon image well exposed; the exposure and brightness sliders don’t move. In the gray row the deltaE are good, so that deltaC and deltaH, except the peak in the white. In deltaL column there are same fluctuations as in the previous images but with very low value.

There is a discreet shadow tint intervention.

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,53
5,20
2,80
5,20
2663_Fors
1,53
4,48
1,53
3,07
%_gain
-39
-13
-45
-41
The average and max error in colors are good, the first are about halved from starting point and the second is around 3 with an improvement of forty percent.


Fors’s script seem not to appreciate all images: in some cases it is in difficulty in other less. It seems that the offender is the exposure/brightness management that damages the next phase. Unfortunately there isn’t an option for automate gray setup exclusion because manual arrangement produces a better and faster work.



ACR Calibrate Rags script

ACR Calibrate Rags script is not only a script but a whole calibration system, made of the calibration engine and the excellent image analyzer “Read Macbeth Patches”. They work in synergy looking for optimal sliders setting and analyzing the results found with many information and statistics. The mass of author’s work is clear: a high number of options in scripts, rich status windows, guided workflow, exhaustive reader that includes uneven lightning and noise checking, and so on. There is also the possibility of the reference target reconstruction and overlap it on the image for a visual evaluation. The advice is to visit Rags web site where you can find explanations, articles, scripts, suggestions and much more.

With the last version of the script Rags dismisses RGB workflow and adopts the Lab space and CIE deltaE 2000 error calculation. In fact, not always to a low worst of brightness and saturation corresponds a low visual error. So the script accepts only custom target tables in Lab value and in GretagMachbeth format, which are converted in RGB values on the fly, using Adobe service. The script considers pure the gray patches of the custom targets.

The first phase is characterized with the white balance pass based on a single patch and with the static exposure slider. The calibration algorithm uses all patches divided in groups for dominant color. The script is always in evolution.

To reach these results all goals are being set at lowest value so that the best was found for every field and I could reach these results in short time. Suggestions on gray setting are nonsense and the script running is very fast at default but slows down with goals stressing. Sometimes the script works better using stdDev metric and sometimes Multi metric.

Running the script twice in sequence it can move the error further down but sometimes the gain is only in final status window and not in ColorLab report. But these rules are valid for all scripts.

One note.

In my test I have had the feeling that Lab and deltaE 2000 feature are not yet completely implemented. An example, open a 6x4 pixel Lab mode 16 bit Tiff file in ColorLab, convert the image in spot colors and save it as .txt in Photoshop scripts folder. In this way now you have a Tiff file and its reference file. Open the Tiff file in Photoshop, resize it to 600 pixel width with the nearest neighbor option, track the pen path and launch Read_Macbeth_Patches script with custom target and the reference Tiff file name. The deltaE 2000 columns should be all at zero, but this is not true: they look like those on the left side. The error is still present in reconstructed target.

In normal workflow the error on colors is not so distant from ColorLab report and max disagreement is around 0.50. If you want a side by side comparison, look at the Read Macbeth Reader report below that is the Tindemans CR2_7409 calibration result. This incongruence is a bad matter because for these intents Read Macbeth Patches could be a valid and faster alternative to ColorLab.

ColorPicker agrees instead with Rags LabtoRGB conversion instead: starting from the same Lab file the max difference in the RGB values is 0.25, obviously only on color patches: grays is not pure and there the differences overtake 5.

Here an example of the ReadMacbethPatches report..

One point of disagreement with other authors is on raw images exposure: Rags supports the exposure considering the fourth grays patch (middle gray 18%) as a normal image. Other people suggest looking at the white patch to get it to the highlights. Among these people, Bruce Fraser in his “Real World Camera Raw with Adobe Photoshop CS2” suggests: “Ideally, with no Exposure correction, the white patch should be around level 237-245”. From this experience I sustain the second opinion because it distributes luminosity much better, especially in high luminous patches and gives a less difficult calibration with the best results.


Curiosities.

First curiosity.
The first to take advantage from the choice to calibrate images exposed considering the white patch is the Rags’ script that reaches his best performances and lowest error.

Second curiosity.
I noted that Nikon raw satisfies both opinions, with a linear progression from black to white that almost overlaps the target at calibration setup default. Canon image instead tends to this linear behavior when the brightness slider is near to zero.

Third curiosity.
I tried a DCRaw conversion using specific command parameters (Gamma=1 TIFF output and White Balance disabled), looking for real sensor exposure.
So I discovered that in the resulting liner Tiff of the images exposed considering the fourth gray patch, the Nef white patch reaches RGB 230, while the Canon white patch doesn’t overtake RGB 110. I think that it is a little too low for color calibration intents. Canon Digital Photo Professional in linear mode confirms DCraw performances.

Looking at results:


Canon 350D (ACR Calibrate Rags)

The deltaE are quite good in particular in the center of the gray axis, as well as the deltaL. Not so good the deltaC and deltaH with higher errors at the extremity
DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,41
7,68
2,72
7,68
7409_Rags
1,31
2,64
1,27
2,60
%_gain
-46
-66
-53
-66
The gain is clear on all indexes. On color patches the average error is decreased to 1.27 and is beyond halved from starting point. The worst color is reduced to 2.60, becoming one third.



Nikon E5400 (ACR Calibrate Rags)

In this image I notice the particular grays management that privileges the central zone and omits the extremity. In that case the errors are low in central patches and very high in the extremity mostly towards the white, where they overtake the limit of six.

The single-patch white balance arranges perfectly the chosen patch and lets the error increasing when leaving it.

There is the shadow tint intervention but contrarily to the others it tends to negative values as if the script saw in the shadow a different tint (probably due to gray pure consideration).

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,53
5,20
2,80
5,20
2663_Rags
1,86
6,40
1,80
2,72
%_gain
-26
23
-35
-47
In the color patches the average error improves of one third and is 1.8. The max error is 2.72 and is halved from starting point.



ACR Calibrator L script

It’s the most original. The script uses the whole target and deltaE 2000 error calculation. The calibration is carried out in a single pass and setting all color sliders at a time. The script is rich in options and permits different calibration methods, patch weight or its exclusion, patch independent gray setting, fine tuning of deltaE 2000 error calculation and the management of the shadow tint, etc. The final status window is a little meager and the error report is not in agreement with ColorLab. The script running is fast enough and accepts suggestions very well.

In my case the best results were reached with CurveFit calibration method (the algorithm seems the same as useXMP method, changing only gray management), resetting all colors to one, disabling “ignore brightness difference”, enabling “calibrate shadow tint” with Nikon image and playing with gray setting.


Canon 350D (ACR Calibrator L )

All values in all columns are very good, with the error low and distributed along the axis.
DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,41
7,68
2,72
7,68
7409_Tindemans
1,10
2,39
1,10
1,93
%_gain
-54
-69
-60
-75
All indexes are excellent: even total average error is halved; color average error has lost sixty percent and is near to one. The worst color is one fourth from starting point. Everything, except the white patch, is below deltaE2000 two.



Nikon E5400 (ACR Calibrator L)

The average error is a bit high but the maximum error is low, probably for error distribution. Maybe, in this case, it would be interesting an option to exclude the white balance pass.

There is the shadow tint intervention.

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,53
5,20
2,80
5,20
2663_Tindemans
1,59
3,89
1,51
2,16
%_gain
-37
-25
-46
-58
The average error in color patches is halved from starting point. None of the colors overtakes 2.16. The worst error is well beyond halved.


Summarizing the results:


Reading the performances and thinking about my experience I can say that all scripts improve the chromatic accuracy, but with a different level and a different usability.

Nello specifico:

Once I reached the new chromatic balance at 5000K, which is more faithful and visibly more pleasant, I wanted to check if Camera Raw can maintain it in different lightning conditions and in which measure the chromatic equilibrium is altered by the sliders movement and by the regulation of the tonal curve during a normal workflow.



Results validation along the white balance range.

Camera Raw has two profiles for every supported camera. One is created under illuminant D65 (6500K) and the other under illuminant A (2856K). The origin image profile is created per interpolation or extrapolation starting from these profiles, depending on white balance setting. At the end the profile is corrected by the movement of the sliders in the Calibrate tab. I wanted to see how Camera Raw rendered the color in different lightning conditions using the same profile correction found at 5000K. Practically this test evaluates if we can use the same 5000K calibration setup in several different lightning conditions.

For this test I used my spectrophotometer with the ambient light head and the freeware GretagMacbeth Eye-One Share to measure the light quality that illuminated the targets. Then, with the spectral data of the target and the light source, I calculated in MeasureTool the real target Lab values in those conditions. In ColorPicker I found the RGB values and with them I replaced the generic target values in the Tindemans script and I launched it on my images. From the final status window I took only the white balance and the adjust tab arrangement. I applied them opening the image once with calibrate tab at zero and once with calibrate tab in Tindemans 5000K setup. In ColorLab I compared the two results with MeasureTool Lab file. I considered three steps, the first at 6800K by the Nikon E5400, the others by the Canon 350D at 10300K and at 2600K in tungsten lightning condition.


Nikon_E5400_6856K


ACR_default

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
3,11
7,12
3,32
7,12
The color average error is well beyond tree and the worst color reaches 7.12. The wrongest patches are still the red and its domain.

Tindemans_5000K

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
3,11
7,12
3,32
7,12
Tind_5000K
1,93
4,16
1,85
2,72
%_miglioramento
-38
-42
-44
-62
The average error on color patches is almost halved and is 1.85. The maximum error is reduced to one third and is lowed to 2.72.



Canon EOS 350D_10235K


ACR_default

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,83
8,40
3,27
8,40
As before the average error on color patches is around 3.3 and the worst color overtakes the 8. The bad patches are still the red and its domain.

Tindemans_5000K

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,83
8,40
3,27
8,40
Tind_5000K
1,69
3,98
1,73
2,81
%_gain
-40
-53
-47
-67
The average error on color patches is halved and the maximum is one third relating the default setup. None of the colors skews out from deltaE2000 three again.


Canon EOS 350D_2575K


ACR_default

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,89
8,40
3,37
8,40
The error report at default value is very similar to that at 10000K. The average color error reaches 3.37 and the worst color overtakes the 8 limit. The bad patches are still the red and its domain.

Tindemans_5000K

DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
ACR_default
2,89
8,40
3,37
8,40
Tung_T_5000K
2,21
3,43
2,46
3,43
%_gain
-24
-59
-27
-59
Even in tungsten lightning the Tindemans 5000K setup reduces the average color error of one third but more important it’s that it lowers the worst color to almost one third and now none of the colors reaches deltaE2000 at 3.5



Results validation moving Adjust sliders and Tonal curve

At last I verified the impact on the new color equilibrium caused by the adjust sliders and the tonal curve movement in the normal workflow. I used my calibrated Canon CR2_7409 image in 5000K calibration setup as starting point and as reference image. Then I opened the image in Camera Raw, I reset the adjust sliders and simulated a recovery intervention on highlights. In particular I rescued one stop and compensated this by the brightness slider moving it to hundred. At the end, moving the tonal curve, I compensated the recovery intervention taking back the luminosity of the gray patches to the starting point. Below, the result is compared with the reference image.

CR2_7409_5000K
CR2_7409_5000K_with changes
DeltaE 2000 error
Avg. total
Max total
Avg. color
Max color
7409_T_5000K /
7409_T_5000K+Adjust/ToneCurve
0,11
0,22
0,11
0,17
All patches are below deltaE 2000 0.22



Download files

_MG_7406.zip

_MG_7409.zip

CCvari.zip

DSCN2663.zip

DSCN3024.zip

IMG_0024.zip

IMG_0056.zip



Conclusions

The calibration of Adobe CameraRaw is possible, or better, very advisable because you may be surprised by the precision and coherence on the target obtained with the Adobe color management approach. The calibration sliders movement permits good color fidelity and the same calibration arrangement keeps good accuracy along the most used lightning conditions, even in tungsten situations. Moreover, if we add that the adjust sliders and tonal curve intervention don’t damage the color balance, it’s impossible not to recognize the goodness of the project. The only very unpleasant thing in this contest is the time consumed and the frustration caused by lack of information and support from Adobe. So, my gratitude goes to Bruce Fraser that gives the possibility to take advantage from this feature and also to the authors of the scripts that permit to reach a precision that is manually impossible.

I express my gratitude to Alberto Maccaferri for his kindness, competence and willingness and to the aunt of my wife Raffaella Fellin, without whom this translation should have been even less understood. I apologize for English but it is not our first language.

Here below you can see the CR2_7409 Canon image before and after the calibration with the reference target overlapped


ACR_default
Tindemans@5000K


You can talk about this article in Photoactivity FORUM

This article is protected under International rights of reproduction law