I did some further testing. I copied the 3 bitmap screens that dispcal uses to calibrate the screen and put them in a directory where I could switch between them quickly using ACDSee. Then I ran 3 calibration checks (dispcal -r) using the bitmaps as displayed by ACDSee rather than the ones displayed by dispcal. To prevent dispcal from modifying the laptop display LUT I set my laptop screen up as a secondary monitor to my office LCD screen, and told dispcal to display on the office LCD - so dispcal modified the LUT for the office LCD and the laptop screen retained any LUT entries it had had while dispcal made the readings off the bitmaps as displayed by ACDSee on the laptop screen. :-)
If you're going to do that, you may as well check it manually. Use spot read (ie. spotread -e -yl), and measure black (0,0,0), grey 50% (128,128,128) and 100% patches (255,255,255), and compute gamma = log((White Y - Black Y)/(Grey Y - Black Y)) / log(0.5). (I've decided that I was mistaken, and that this will best approximate what's going on).
Below are 3 of these modified dispcal tests that I ran. The first is with no calibration or profile applied and matches what dispcal would report if run normally on the laptop screen. The second run is with the original dispcal-produced LUT loaded. The third is with the LUT loaded and the
and the profile applied the gamma is 2.24 again! This seems to indicate that dispcal is creating a calibration curve with a low gamma and then "profile" is compensating and setting the gamma higher again.
A profile doesn't (in itself) change anything - it's just a characterization of the device. Any change you see in applying a profile is the combination of two profiles, the source and destination profile. So a change in gamma will be the effect of the comparative gamma between the two profiles, and the source profile gamma may not be a simple power curve (ie. sRGB), and will have different black end aim points, the effect of which will depend on the linking intent etc. I think you are reading far too much into it all. It's called "Approximate Gamma" because it's approximate. The actual target curve that dispcal is aiming for is more complicated than the assumptions used for approximate gamma. Approximate gamma is just a single point measurement, and if you sampled more points along the curve, you'd get a range of gamma values, since the curve probably isn't a simple power law. The target curve takes into consideration the offset needed in the black point, to achieve the black point target chromaticity. For a CRT this usually isn't much, and the approximate gamma should match the aim curve reasonable well. For an LCD with -k1.0, this may be quite an offset, causing a noticeable discrepancy, and a loss of contrast. (If you calibrate with -v, the Gamma curve offset value is reported, so you could check how much it changes between -k1 and -k0) You could try calibrating with -k0.0, and see if the approximate gamma is now in better alignment with the target one, and your contrast ratio is better. I've made the -k0.0 behaviour the default for LCD's in future versions, since I suspect this is what will work best as a default. Graeme Gill.