2017-12-19

【技術系/Photoshop】大量の星空画像から流れ星を探す系スクリプト

前説

流れ星を撮影する場合、バルブタイマーなどを使って大量の写真を自動的に撮影させておき、家に帰ってから無数の画像から流れ星の写っている絵を探すのが普通だろうと思います。
しかしほとんど全く同じ内容が写った無数の重たい画像を一枚ずつ確認するのは殆どの人にとって苦痛でしょう。
それをちょっとだけ楽にするスクリプトです。

仕組み

ほぼ休みなく連射された星空画像が100枚あったとします。画像①と画像②は星の位置がごくわずかに違うだけで他はほとんど全く同じ絵になっています。だからこの2つの絵を差の絶対値で合成すると、ほぼ真っ黒な画像が出てくるはず。
ところが仮に画像①か画像②のどちらかに流れ星のような動きの早い移動光源が写っていると、その流れ星の部分だけは画像1と2で大きな差が出ます。
このような場合差の絶対値合成の結果画像では、真っ黒な画像の中に流星だけが浮かび上がったような画像が出力されます。無数の星の中から流れ星を探すよりは、真っ黒な画像から光の筋を探す方が簡単で楽です。
そこで画像1と画像2の差をJPEG出力、画像2と画像3の差をJPEG出力・・・という手順を自動でやってくれるスクリプトを作りましたという話。説明長いっすね

スクリプト

スクリプト本体:差の絶対値.jsx
使い方

  1. ダウンロードしてPhotoshop上で実行するとファイル選択ダイアログが出てきます。(Camera RAW対応ファイル, DNG, TIFF, JPG等を開くことができます)
  2. ダイアログでファイルを指定すると、処理対象ファイルが格納されたフォルダに「diff」サブフォルダが生成され、その中に縮小されたJPEG形式で差の絶対値の合成結果が出力されていきます。出力画像は長辺1024ピクセル以内に収まるよう縮小されたかなり小さなファイルになります。
  3. 差分ファイルは「diff001-DSC00001.jpg」のような名前になります。ファイル名のハイフンより後ろの部分が元ファイル名なので流星を見つけたらこのファイル名から流星が写ったRAWを特定してください。


注意書き

合成処理はそれほど高速ではありません。特にRAWファイルから直接差分画像を吐き出させる場合、RAWをPhotoshopで読み込む処理に時間がかかります。
私の場合はスクリプトを起動したらPC立ち上げっぱなしのまま寝て、次の日に続きの作業を行いました。
Creative Cloudフォトプランでは1ライセンスで2台のPCにLightroom Classic CCとPhotoshopをインストールできたはずです。
パソコンが2台以上ある人はサブPCを無人作業機として活用する方法を検討してもいいかも?