dcraw Tutorial (dcraw を用いた RAW 画像現像の手引き) を読み,同一条件で複数の対象を多数撮影するときの手順を考えてみた.pnmgamma および pamsumm は Netpbm に含まれる.ImageMagick には identify および convert が含まれる.
レンズキャップを付け,ダークフレームを撮影する.白色板を撮影する.18% グレー (例えば Munsell ColorChecker Gray Scale) を撮影する.その後,目標を撮影する.
dcraw -D -4 -t 0 -c darkframe.cr2 | identify -verbose -
を実行する.Channel Statistics
中の Gray
の Mean
値を見い出す.丸括弧の前の値 (0 から 65535) を darkness レベルとして,以後 -k
オプションで与える.
dcraw -D -4 -t 0 -c white.cr2 | identify -verbose -
を実行する.同様に Max
値を見い出して saturation レベルとする.以後この値を -S
オプションで与える.
identity
の代わりに pamsumm
を用いることもできる.
ホワイトバランス調整をする.
dcraw -t 0 -c white.cr2 | convert - white.png
を開いて,白色板の領域を知る.この値を次のコマンドに -A
オプションで与える.
dcraw -v -4 -H 0 -S saturation -k darkness -c -t 0 -A left top width height white.cr2 > /dev/null
の出力から multipliers 1.000000 1.002143 1.002924 1.000389
のような行を見い出す.この 4 値を -r
オプションで与えることによってホワイトバランス調整を行なう.
グレーバランスを調整する.
dcraw -t 0 -c gray.cr2 | convert - gray.png
を開いて,グレーチャートの領域を知る.
dcraw -v -4 -t 0 -o 0 -r mul0 mul1 mul2 mul3 -H 0 -S saturation -k darkness -c gray.cr2 | convert -crop widthxheight+left+top - - | identify -verbose -
を実行する.Channel Statistics
中の red
, green
, blue
それぞれの mean
値を見い出す.
丸括弧内の値 (0 から 1) をそれぞれ r, g, b としたとき,これを HSV に変換し,無彩色とするため S=0 とした後,RGB に再変換すると (v,v,v) となる.ここで v は r, g, b のうち最大の値である.これをガンマ値 G でガンマ補正すると,v1/G となる.r, g, b ともこの値に補正されるためのガンマ値はそれぞれ,G·log(r)/log(v), G·log(g)/log(v), G·log(b)/log(v) となる.これら 3 値を計算し,後で -gamma
オプションに与える.
各ショットについて dcraw -v -4 -t 0 -o 0 -r mul0 mul1 mul2 mul3 -H 0 -S saturation -k darkness -c sample.cr2 | convert -gamma red-gamma,green-gamma,blue-gamma -depth 8 - sample.png
を実行する.グレーバランス調整をしないのなら,convert
の代わりに pnmgamma
を使うこともできる.