付属ソフトウェアでキャリブレーションするでもいいんだけど、簡単すぎてボケっとしていても終わってしまう。キャリブレーションで何をやっているか多少は理解したいのと、OSS のキャリブレーションソフトウェアを使えるようになっておいたほうが嬉しい気がする。

ということで、まず dispcal による一発で .icc まで作る方法をメモ。dispcal は ArgyII CMS のツールをいろいろ使いつついい感じにやってくれるディスプレイキャリブレーションツール、という位置付けのようだ。

以下のように適当にパラメータを指定して dispcal を起動する。

sudo dispcal -v -d 1 -H -G 2.2 -b 80 -t 6500 -P 0.5,0,1.0 -o FooLCD
  • -v で進捗を多少わかりやすくする
  • -d はマルチディスプレイ環境でのディスプレイ番号。
    • --help するとどのディスプレイにどの番号が割り当てられているかはわかる
  • -H は高精度測光を有効に
  • -G はガンマ
  • -b はターゲットディスプレイ輝度 (cd/m^2)
  • -t は色温度
  • -P はキャリブレーション用ウィンドウの位置とサイズ
  • -o を指定すると .icc まで一気につくれる

最初はセンサーのキャリブレーション (-N をつけるとスキップできる)

Setting up the instrument
Instrument Type:   ColorMunki
Serial Number:     2055xxx
Firmware version:  288
Chip ID:           01-64a2131500005d
Version string:    'colormunki FW V1.32  Build Nr. 1303'
Calibration Ver.:  6
Production No.:    86471
Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:
Target white = 6500.000000 degrees kelvin Daylight spectrum
Target white brightness = 80.000000 cd/m^2
Target black brightness = native brightness
Target effective gamma = 2.200000

キャリブレーションポジションにして RET

Calibration complete

と出たあとすぐに以下のようになる

Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:

Display adjustment menu:
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration
8) Exit

言われた通り、センサーを下に設定して、カバーをつけてディスプレイに置く

5 を入力すると、一通り測定して、ターゲットとどれぐらい差があるか表示される。error が大きいものが小さくなるように、1~4 を選び、ディスプレイ側の設定を調整しておく。

7 を選ぶと実際に測定がはじまる。結構時間がかかるので待つ。

patch 6 of 6
Black = XYZ   0.05   0.04   0.07
Red   = XYZ  28.84  16.90   5.00
Green = XYZ  32.79  54.32  12.65
Blue  = XYZ  19.10  16.57  77.21
White = XYZ  82.51  88.85  93.32
Automatic black point hue correction level = 0.71
patch 96 of 96
Target white value is XYZ 76.038267 80.000000 87.071348
Adjusted target black XYZ 0.05 0.04 0.06, Lab 0.50 0.22 -0.18
Target black after min adjust: XYZ 0.066 0.063 0.082, Lab 0.707 0.309 -0.254
Gamma curve input offset = 0.000000, output offset = 0.000783, power = 2.200000
Total Iteration 2, Final Samples = 32 Final Repeat threshold = 0.900000
Creating initial calibration curves...
Doing iteration 1 with 16 sample points and repeat threshold of 1.272792 DE
patch 16 of 16   
Brightness error = 1.025640 cd/m^2 (is 81.025640, should be 80.000000)
White point error = 0.895632 deltaE
Maximum neutral error (@ 0.699752) = 1.270848 deltaE
Average neutral error = 0.795649 deltaE
Number of measurements taken = 35
Computing update to calibration curves...
Doing iteration 2 with 32 sample points and repeat threshold of 0.900000 DE
patch 32 of 32   
Brightness error = -0.424393 cd/m^2 (is 79.575607, should be 80.000000)
White point error = 0.674218 deltaE
Maximum neutral error (@ 0.023835) = 1.287983 deltaE
Average neutral error = 0.728424 deltaE
Number of measurements taken = 54
The instrument can be removed from the screen.
Written calibration file 'FooLCD.cal'
Luminance XYZ = 0.000000 83.164907 0.000000
White point XYZ = 0.932069 1.000000 1.070937
Black point XYZ = 0.000512 0.000495 0.000724
Created fast shaper/matrix profile 'FooLCD.icc'

FooLCD.cal と FooLCD.icc というのがでてきてるはず。

このままだとまだプロファイルが設定された状態にはなっていないので、以下のように dispwin を使ってシステムに適用する。

sudo dispwin -d 1 -v -I FooLCD.icc

About to open dispwin object on the display
About to install './MacBookAirLCD.icc' as display's default profile
Installed './MacBookAirLCD.icc' and made it the default
About to destroy dispwin object

-I を指定することで、~/Library/ColorSync/Profiles/ にコピーされ、プロファイルが設定される。

トラブル

以下のようなエラーがでた場合、カバーの蓋が開いてないので開ける……

dispcal: Error - Aprox. fwd matrix unexpectedly singular
dispcal: Error - dispcal: inverting Jacobian failed (1)