お手軽HDRI計画(2) EV値を求めてみよう

今回はメタデータについて。Raw(DNG)にもjpegにもEXIF情報が入っていて、撮影したときの情報を得ることができる。実際に出ている色のみで処理するのもいいけど、こういうメタデータをもとに明るさ情報を取り出してどうのこうのする、というのもアリだと思います。

EXIF情報を眺めると、ブラケット撮影で変更しながら撮影された明るさの情報が入っているのは、ExposureBiasValueという部分です。EV値(意味はわかりませんが高いほど明るい画像になるようです)の差分が入っている。これは…分数型かなぁ。

もともとのEV値は直接は入っていなくて、計算しなくてはならないようだ。BrightnessValue+log2(ISOSpeedRatings/3.125)+ExposureBiasValueの値がEV値、という情報をWebのどこか(URL忘れました)で仕入れて計算。

私のカメラでは、DNGでもJPEGでもこのスクリプトで食えています。

 

#! /usr/bin/python

import os,sys
import math
import EXIF

def calcev(f):
    try:
        tags=EXIF.process_file(f)
        bv=tags['EXIF BrightnessValue']
        iso=tags['EXIF ISOSpeedRatings']
        evbias=tags['EXIF ExposureBiasValue']
    except KeyError,detail:
        return None
    sv=math.log(float(str(iso))/3.125, 2)
    ev=eval("1.0*"+str(bv))+sv+eval("1.0*"+str(evbias))
    return ev

for i in sys.argv[1:]:
    print i, calcev(file(i))

WLW のソースコードの挿入プラグインを入れて試してみているけど、ものすごい状態になってますね。ただソースをちょっと入れたいだけなので、スタイル情報も何もなしで、<pre>タグにちょっと色をつけたいといった程度なんだけど、そういう単純な方法はWindowsの流儀ではないらしいですね。preタグプラグインみたいなのを探したけど、見つかりませんでした。

まあこのEVの値をもとに色を組み合わせて、±0.5の範囲でデータにできる色を1つのOpenEXR画像なり何なりにできれば、あと一歩で終了、という感じに持って行けそうな気がしますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です