2024年4月8日の皆既日食にて、タイムラプスで2つのことを撮りたいと思いました。
・昼の明るい景色から、皆既で「夜」になり、また昼の景色に戻る様子
・太陽の形が欠けて行き、また満ちてゆく様子
ただ、「昼の景色」と「太陽の形」には露出差がありすぎます。下の写真は太陽を写野内に含む景色を露出を少しづつ変えて撮ったもの。左上の写真と右下の写真を同時に表現することは通常のHDRでは不可能。
そこで、
・通常露出で昼間の景色(太陽付近は露出オーバーで白飛びする)
・太陽撮影用のNDフィルタを通して太陽の形
の二つを別々に撮影し、それらを合成して HDRのようにするロジックを考案しました。
いろいろ試行錯誤の結果、太陽の形をなるべく自然に表現する方法として、各ピクセルについて、
1)太陽の形の画像をグレースケール G(0~255) にする。
グレースケールの計算方法は G=0.298912*R + 0.586611*G + 0.114478*B
2)風景写真の減衰率を決める。例えば減衰率 d = 0.8 とする
3)風景写真のR,G,Bそれぞれについて、
変更後の数値 V’ = (d + (1-d) * (G/256) ) * V
という変換を適用して、保存する。
コンセプトは以下の図のようになります。
太陽の形は若干露出を上げて形をくっきり写せば、太陽の箇所だけそのままで、それ以外のピクセルの明るさは指定した減衰率まで下がることによって、相対的に太陽の形を浮かび上がらせます。
アプリ EclipseMixer を作成
この処理を一括して行う為のこのためのアプリを作ったので、Githubに公開しました。
ノーサポートですが、ご自由にお使いください。言語はC#、開発環境はVisualStudio2019です。
使い方
最初にCSVファイルを作り、処理をするファイル名を登録します。
各行に、カンマ区切りで
昼間の風景のファイルパス, 太陽の形のファイルパス, 出力ファイルパス
のセットを登録します。パスはフルパスが良いです。
(CSVの例)
C:\sample\DSC03290.JPG, C:\sample\DSC03291.JPG, C:\sample\OUT_03290.JPG
C:\sample\DSC03269.JPG, C:\sample\DSC03270.JPG, C:\sample\OUT_03269.JPG
CSVで指定することで、大量のファイルを連続処理できます。
Instruction File に作成したCSVファイルを指定します。
Max Ratio は風景ファイルをどのくらい明るさを落とすかを規定します。0.8以下だと太陽が割とくっきり浮かびあがります。0.9だと太陽の形は見えにくいですが、より自然です。
出力ファイルが存在するとき、処理をスキップするか、上書きするか選べます。
実戦投入
(a) ISO100, f3.5, 1/250(s),ND100,000 →太陽の形取得用
(b) ISO6400, f1.4, 2(s), ND100,000 →昼間風景用
を10秒おきに撮った画像のタイムラプスです。合成時の透過率は85%
残念ながらほぼ曇りでしたが、0:11~0:13のあたりで数コマだけ欠けた太陽が写っていました。