So, late last week I broke the piggy bank to get myself a shiny new 24" iMac. I'm quite happy with the computer, but I'll be damned if I can't seem to make a decent profile for the display! First, a bit of explanation. I've tried all sorts of things, including tweaking every knob I'm aware of in Argyll, using different test images, different (ICC-aware) applications to view the test images, etc. What follows is simply an illustrative sample. For the easiest-to-use test image to illustrate my troubles I created in Photoshop a Lab file the same pixel dimensions as the display and used the gradient tool to fill from L=0, a=0, b=0 to L=100, a=100, b=100. (I get the same results in RGB, grayscale, etc., and the problems are visible in everything from other test images to movies in VLC.) No matter what I do, the dark shadows, from about L=2 to L=16, have a greenish, maybe slightly blue, cast to them. (Sometimes they're yellowish instead of bluish.) The worst is usually at about L=6. The exact area and peak have varied with the particular profile. However, if I select a color space profile -- such as AdobeRGB or sRGB -- in the Displays Preferences, the entire gray ramp is very neutral and even. Here's the most recent attempt, complete with files: First, I check the native response of the display with dispcal. It tells me: $ dispcal -v -y l -R [. . .] Uncalibrated response: Black level = 0.35 cd/m^2 White level = 266.20 cd/m^2 Aprox. gamma = 2.19 Contrast ratio = 759:1 White chromaticity coordinates 0.3128, 0.3281 White Correlated Color Temperature = 6507K, DE to locus = 3.9 White Correlated Daylight Temperature = 6507K, DE to locus = 0.8 White Visual Color Temperature = 6367K, DE to locus = 3.8 White Visual Daylight Temperature = 6535K, DE to locus = 0.8 The instrument can be removed from the screen. That's close enough to gamma = 2.2 and temperature = D65 that that's what I'll use for everything from here on out. Next, I use dispcal to create the .cal file: $ dispcal -v -y l -g 2.2 -e -H iMac\ 2007-09-13 [. . .] Commencing device calibration patch 6 of 6 Black = XYZ 0.41 0.39 0.74 Red = XYZ 119.42 63.48 3.16 Green = XYZ 87.68 179.75 24.81 Blue = XYZ 49.90 25.60 268.25 White = XYZ 255.43 267.28 293.63 patch 64 of 64 Initial native brightness target = 267.277738 cd/m^2 Target white value is XYZ 255.431672 267.277738 293.627647 Target black point = 0.415598 0.392467 0.713159 Current gamma curve offset = 0.068389, Gamma curve power = 2.432115 Total Iteration 3, Final Samples = 64 Final Repeat threshold = 0.800000 Creating initial calibration curves...Doing iteration 1 with 16 sample points and repeat threshold of 3.200000 DE
patch 16 of 16 Brightness error = 0.000000 cd/m^2 White point error = 0.000000 deltaE Maximum neutral error (@ 0.157165) = 1.594979 deltaE Average neutral error = 0.687945 deltaE Computing update to calibration curves...Doing iteration 2 with 32 sample points and repeat threshold of 1.600000 DE
patch 32 of 32 Brightness error = 0.000000 cd/m^2 White point error = 0.000000 deltaE Maximum neutral error (@ 0.077741) = 0.915395 deltaE Average neutral error = 0.305202 deltaE Computing update to calibration curves...Doing iteration 3 with 64 sample points and repeat threshold of 0.800000 DE
patch 64 of 64 Brightness error = 0.000000 cd/m^2 White point error = 0.000000 deltaE Maximum neutral error (@ 0.007987) = 0.758240 deltaE Average neutral error = 0.249896 deltaE Computing update to calibration curves... Doing verify pass with 100 sample points patch 100 of 100 Verification results: Brightness error = 0.000000 cd/m^2 White point error = 0.000000 deltaE Maximum neutral error (@ 0.000000) = 1.585869 deltaE Average neutral error = 0.341614 deltaE The instrument can be removed from the screen. Here's the .cal file:
Next, I create a small test chart to use to pre-condition the ``real'' one later: $ targen -v -d 3 -f 50 iMac\ 2007-09-13\ small Then, I read it: $ dispread -v -y l -k iMac\ 2007-09-13.cal -s -H iMac\ 2007-09-13\ small The .ti3 file:
And, of course, create the profile:$ profile -v -A Apple -M iMac -D "iMac 2007-09-13 small" -C "Copyright (c) 2007 by Ben Goren" -i D65 -o Shaw iMac\ 2007-09-13\ small
No of test patches = 50 Estimating white pointApproximate White point XYZ = 2.416478 2.608524 2.769155, Lab = 143.682114 -9.120046 -24.150496
Creating optimised per channel curves About to optimise temporary matrix ................... About to optimise input curves and matrix ................... About to optimise output curves and matrix........................ About to optimise input curves and matrix again. About to optimise input, matrix and output together............... About to adjust a and b output curves for white point Creating fast inverse input lookups Compensate scattered data for input curves Compensate scattered data for output curve Create clut from scattered data ****************************************************************** Find white & black pointsWhite point XYZ = 2.431605 2.622663 2.770560, Lab = 143.970110 -8.947177 -23.704592 Black point XYZ = 0.004504 0.004745 0.007474, Lab = 4.286515 -0.288699 -6.717227
Fixup clut for white pointCheck White point XYZ = 2.431605 2.622664 2.770560, Lab = 143.970113 -8.947177 -23.704592
Done A to B table creation Creating B to A tables100% Done B to A tables profile check complete, peak err = 4.885327, avg err = 1.800126 Exectution time = 11.130000 seconds Here's that profile:
I then feed that to targen for the ``real'' profile: $ targen -v -d 3 -f 1000 -c iMac\ 2007-09-13\ small.icc iMac\ 2007-09-13 Here's the resulting .ti1 file:
Reading the chart: $ dispread -v -y l -k iMac\ 2007-09-13.cal -s -H iMac\ 2007-09-13 Creates this .ti3 file:
Now, at this point...it really doesn't matter what I do. If I create a shaper profile:$ profile -v -A Apple -M iMac -D "iMac 2007-09-13" -C "Copyright (c) 2007 by Ben Goren" -a s -i D65 -o Shaw iMac\ 2007-09-13
then ``pure'' black is really a dark green, and all the single-digit LAB values show a green to yellow color cast. A LUT profile doesn't show as much of a color cast, but ``black'' still is noticeably lighter than it should be, there's not much variation up to about L=5 -- at which point there's a sharp transition to a lighter yellowish-greenish cast that gets yellower up to about L=15, when it becomes more neutral up to about L=20. The worst part about this is that, the more I do, the worse it gets. This latest LUT profile is actually one of the better ones of the lot. A tens-of-thousands of patches profile I did (letting it run overnight) was unusable, and adding in thousands more neutral patches (in device space, reading them, and manually adding them back into the original .ti3 file) only made slight improvements. If I use -q u, it's a bit smoother (there's banding in all the profiles, including the color spaces ones like sRGB), and the exact location and hue of the color casts might change...but nothing has made it go away. A shaper profile from 4000 patches I did this afternoon is so far off it's not even funny, and the LUT version was worse than this 1000-patch one here. I've even used displin from the start instead of dispcal, again with no luck. Help! Cheers, b&