Exifデータの編集
HDRを作成するとき、Exifに埋め込まれた絞りとISO感度、露光時間を参照している。実際には、jpeg2hdrgenというコマンドでExifデータを抜き出している。
$ jpeg2hdrgen *.JPG IMG_0634.JPG 1666.67 4.0 200 0 IMG_0635.JPG 833.333 4.0 200 0 IMG_0636.JPG 1666.67 4.0 200 0 IMG_0637.JPG 400 4.0 200 0 IMG_0638.JPG 1666.67 4.0 200 0 IMG_0639.JPG 200 4.0 200 0 IMG_0641.JPG 100 4.0 200 0 IMG_0643.JPG 50 4.0 200 0 IMG_0645.JPG 25 4.0 200 0
よく見て欲しい。1 EVステップでブラケット撮影したにも拘らず、露光時間が1/1600で頭打ちされている。実際の絵はきちんと暗くなって居るので、Exifデータが間違っている、もしくは、jpeg2hdrgenがしくじっている、ということだ。Exifデータを検証してみる。
$ exiftool -a IMG_0636.JPG | grep 'Exposure Time' Exposure Time : 1/1600 Target Exposure Time : 1/1614 Exposure Time : 1/3228
居た居た、こいつだ。一番上は所謂「呼び」の露光時間、一番下が実際の露光時間だ。この値でExifデータを書き換えてやれば良いはずだ。こんな感じで書き換えてやる。
$ for f in *.JPG; do \ > et=`exiftool -a ${f} | \ > grep '^Exposure Time' | \ > sed 's/.* //'`; \ > et=`echo $et | sed 's/.*\s//'`; \ > exiftool -EXIF:ExposureTime=$et -overwrite_original_in_place ${f}; \ > done $ jpeg2hdrgen *.JPG IMG_0634.JPG 1666.67 4.0 200 0 IMG_0635.JPG 833.333 4.0 200 0 IMG_0636.JPG 3333.33 4.0 200 0 IMG_0637.JPG 400 4.0 200 0 IMG_0638.JPG 5000 4.0 200 0 IMG_0639.JPG 200 4.0 200 0 IMG_0641.JPG 101.01 4.0 200 0 IMG_0643.JPG 50 4.0 200 0 IMG_0645.JPG 25 4.0 200 0 $ exiftool -a IMG_0636.JPG | grep 'Exposure Time' Exposure Time : 1/3228 Target Exposure Time : 1/1614 Exposure Time : 1/3228
おかしいなあ。jpeg2hdrgenとexiftoolで抜いた露光時間が食い違っている。ま、そもそも露光時間のタグが複数あって、しかも同じ名前のタグが存在し得るとかゆうExifの謎で糞な仕様が招いた混乱だ。これでやってみて具合が悪かったらまた考えよう。
ついでに言えば、光学というかカメラ界隈の用語は綺麗に統一されていないとか、不思議なものが多い。矢鱈と無次元化したがるのも困り者だ。恐らく、幾何光学という分野の歴史が古く、学者でない人たちの関わりも深かったため、現場用語と学術用語でゴタゴタしてるんだと思う。それを整理しないまま、そういう用語の上にソフトウェアを実装しちゃった感じがする。
ちなみに、私のカメラ、Canon S95で使用できる露光時間は1/1600秒までなのだが、ロシアンファームを使うともっと短い露光が出来る。