[argyllcms] Need help interpretating results of camera profiling

  • From: Bernard <bdebreil@xxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Wed, 04 Jun 2014 23:34:09 +0200

Hi to Everyone,

Willing to process RAW images from my Canon EOS 600 without having to use proprietary software under MSWIN, I have attempted to generate an icc profile. Indeed, the results that I had obtained using 'ufraw' with default settings did not satisfy me ; 'ufraw' is not pointed here as a mediocre tool, but as one that I have not been able to use satisfactorily. I therefore switched to 'darktable', and then purchased a 'CMP-DT3' target, which I shot with said camera using built-in flash, according to Pascal de Bruijn's recommandations (..../darktable-camera-color-profiling).

I wonder if the results that I obtained are appropriate, and I would appreciate a few advices and recommendations. I will attempt to describe here what I obtained.

At first: repeatability seems quite good. I carried dozens of tests, the target was shot many times at various camera settings (ISO 100 and 1/200s, 50 mm focus, shooting downwards from a tripod at a distance of about 1,75 meter, the target occupying about 60% of the shot space, room in full dark so as to avoid plural light sources. Only the aperture changed from f22 to f2.8 in small steps so as to have a large choice of images. I had several sessions of the same, over a few days span. After each session, I picked a properly exposed image (slightly overexposed), and adjusted the brightest white spot (R13 on the 'CMP-DT3' target) using the exposure module, so as to obtain a 'L' (Lab) value of about 97-98, (RGB values close to the range 245-250 as prescribed by the manufacturer's notice). This was being done in 'darktable', with all plugins disabled except for high lights reconstruction , White Balance being set spotting 012 grey patch (resulting tint=1.006, input T=5035, output 5000, Red=2.326, Green 1.000, Blue=1.358). Input profile was 'linear RGB', gamma correction OFF, no 'base curve', output profile set to 'absolute colorimetrics' and 'Linear RGB'.

This being achieved, and prior to export to a 16-bit TIFF file in above mentioned settngs and profiles, curiosity lead me to measure a few spots, using darktable tools, and compare results with the values found in the manufacturer's file and in the Argyll CMP-DT3.cht file. The results surprised me... but please bear in mind that I know next to nothing about color measurement and standards ; I only learnt whatever one can grab reading a few dozens of pages. So, besides the white spot R13, I tested Q19 (a red patch), C10 (a green patch), and E4 (a blue patch). RGB measurements were a good surprise, since differences were found minimal between measured values and values stated in reference files for the same patches. Indeed it was so close that I could hardly believe it:

R13 : Darktable measured RGB on the shot image: 233 243 252 (expected 235 246 255) Q19 : Darktable measured RGB on the shot image: 95 27 17 (expected 98 28 18) C10 : Darktable measured RGB on the shot image: 38 84 66 (expected 40 84 60) E04 : Darktable measured RGB on the shot image: 31 77 124 (expected 31 77 124)

Now, if I change the settings to Input profile = sRGB and output profile = perceptual sRGB, the changes in RGB darktable measured values is very small.

BUT: whenever considering the 'L a b' color space, Darktable measurements are very much different whether the Input and Output profiles are [absolute colorimetrics linear RGB and linear RGB] ... OR [perceptive - sRGB and sRGB]... and, in both cases they differ quite a bit from expected results stated in the reference files.

Now, going back to absolute and linear inprofile and outprofile, I export the image to a 16-bit tiff image ; I open the obtained image into 'darktable' and check it out. It does open with inprofile and outprofile perceptual and sRGB. White patch R13 is OK (similar to that in CR2 prior to export). Red Q19, Green C10 and Blue E4 roughly yield same RGB values as before, that is, pretty close to expected. BUT 'L a b' values are HUGELY different from what they were before as well as different from the expected values, as stated below:

Q19 (red) 'L a b' = 22.111 29.007 20.746 expected: 50.460 56.110 38.760 previous values: 47.015 28.600 22.828 C10 (Green) 'L a b' = 32.405 -19.296 4.758 expected: 57.300 -56.940 12.070 previous values: 59.560 -19.047 2.750 E04 (Blue) 'L a b' = 31.433 -2.268 -31.109 expected: 50.340 -15.520 -45.940 previous values: 58.844 -10.022 -24.510

Now, on the CR2 image with above mentioned settings and in/out profiles on 'perceptive' and 'sRGB', I try applying the 'input profile correction' module, that is, applying the gamma curve at 0.45 linear 0.1 as per darktable default values. I then change the exposure from E+0.23 to E +0.06 so as to get suitable values for white spot R13. The R, G and B values thus measured are closer (flatter) than previously found: 249 250 252. Then, Red, Green and Blue patches are as follow:

Q19: 155 44 28
C10: 62 138 110
E04: 51 136 201

which is much higher than expected.  And, for 'L a b' :

Q19: 36.901 45.081 35.201
C10: 52.413 -29.563 7.465
E04: 54.236 -8.994 -41.444

which is higher than previously, still quite apart from expected. But... what should the desirable results be ? Should they be as close as possible to the expected results stated in the charts and reference files ? In 'RGB', 'L a b' or both ? Or should they rather approach the results measured on JPG image files generated by the Canon camera (or the proprietary Canon MSWIN RAW treatment software) ? When shooting my target, I got automatically generated JPG that I darktable measured using the same parameters and profile, and the results are very different from the expected values in the chart reference files, and quite different from what I have been able to obtain so far with my CR2s whatever ways I tried. For reference, here is what I have on such JPG image:

R13: 242 246 251 and 96.696 -0.678 -2.902
Q19: 247 80 63 and  58.974 63.351 46.291
C10: 68 222 186 and 80.054 -47.818 5.434
E04: 86 189 250 and 72.587 -16.740 -39.602

Now, let's see whether adding the Base curve would change anything. It is a default basecurve that Darktable proposes for my kind of Canon camera, according to the exif data. This default curve is not available when one opens a tiff image ; the one that is then proposed is a flat curve with slope=1, that does not change anything. But let us see what the one available in raw treatment does. Let us first test it WITHOUT the inprofile correction module.

==> Surprise ! Replacing the 'inprofile correction module' (which applies the gamma correction) by the Darktable Canon mimicked Base Curve, seems to yield almost the same results. RGB results are pretty close in both treatments, and L a b measurements it is also practically similar, at least for red Q19 and green C10, a bit different in blue E4.

Base Curve OR inprofile gamma correction would do about the same thing ? Maybe the gamma correction is taken into account in the base curve ?

But let us try both together :

Well... I don't know what to think ! The results are different still... Nothing close to so called expected values, not close either to the Canon JPG images:

R13: 247 247 247 and 97.241 0.018 -0.017
Q19: 171 37 19 and 37.134 52.469 42.532
C10: 64 147 116 and 55.464 -31.839 8.395
E04: 47 140 200 and 55.278 -11.895 -39.261

Now it is time to talk about input profiles. So far, I have exposed my results when NOT using any profile. In four different tests, I used: sRGB (as when opening jpg or tiff images), without any gamma correction, then with gamma correction (0.45 b=0.1), then with just the Darktable Canon mimicked base curve, then with both base curve and gamma correction.

In the meantime, I have treated exported tiff files by the Argyllcms programs 'scanin' and 'colprof' according to the tutorials from Pascal de Bruijn

Now, Graeme Gill writes in his tutorial: 'Colprof: average errors of 5 or less and maximum errors of 15 would normally be expected'. My typical peak error is 29, and the average error of 8.53. Is this too much ? I ran several trials with various images of the target, with similar results ; yesterday I scanned said target with an Epson V500 scanner in 16-bit and tested the tiff image with 'colprof', with similar average errors and maximum errors. I thought that, maybe the pictures I took with my Canon EOS 600 were not uniformally lit with the unique built in flash, while Christophe M├ętairie recommends using two flashes at 45┬░ angle... but the same does not apply to a flat bed scanner...

Anyway, I got several home made icc profiles that should be pretty well alike, and I tested them one after the other. As expected, the results obtained were somewhat similar.

But, prior to test my home made input profiles, I tested Darktable built-in profiles: 'Standard Matrix' and 'Improved Matrix'. And,each time I have treated my raw images using either profile or a home made icc profile, I ended up with results not too apart from one another, but quite different than those discussed above, quite different, too, from either so called 'expected' values in refence files, or from the Canon generated JPG images... and I doubt if this is for the better... This most concerns RGB values, not so much 'L a b' values. 'L a b' values are most times getting closer to expected values when using home made icc profiles, even when using Standard Matrix profiles, while RGB values get completely out. For instance, let us consider the Q19 red patch. (expected 98 28 18, found in Canon generated JPG file: 247 80 63, in-between results found in above mentioned tests, 159 12 9 found when using an icc profile). with Green patch C10 and Blue patch E04, the 'R' value always gets to be '0', and it remains '0' whether I add the gamma correction input profile or the base curve or both.

Does the elaborated icc profile take gamma correction into account ? Base curve ? Should one add either one or both of these to the raw treatment of CR2s ?

Thanks in advance for your inputs


Other related posts: