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を無人作業機として活用する方法を検討してもいいかも?

2017-11-10

【技術系/Photoshop】大量比較明合成スクリプト(Photoshop用JSX)

三脚に据えてひたすら30分とか1時間とか連射した写真を比較明合成して作る星の軌跡。
1枚撮りでは星なんかまったく見えない都市夜景の写真でも、試しに合成すると結構な数の星が浮かび上がったりするものです。

ISO100, F8, 10秒露光を150枚撮影、Lightroomで全画像に同じ補正パラメータを適用した後、このページで紹介するJSXスクリプトで比較明合成しました。
これをなるべく高速に作るスクリプトを公開します。

【概要】

別記事で公開した加算平均合成のスクリプトと似たような原理です。
処理順路は次のようになっています。
  1. RAWファイルを1枚開く
  2. レイヤーの種類を比較(明)に変更
  3. 次の画像を開きレイヤーとしてインポート
  4. インポートしたレイヤーの種類を比較(明)に変更してレイヤー統合
  5. すべての画像を処理するまで手順3,4を繰り返し
1枚開いて合成、レイヤーを統合して次の画像を開く…という手順を繰り返すのでどれだけ膨大な画像を合成してもメモリ使用量が変わりません。
LigtroomでRAWを100枚選んで右クリック→Photoshopでレイヤーとして開くなんてやったらレイヤー開くだけで大変な時間がかかります。いったんtiff化してPs側で処理するにしてもtiffを吐く時間も相当なものです。Lr調整を適用したRAWをPsで読み込んで一枚ずつ処理するのが一番理想的と思うので、それをスクリプトで自動化しました。

【使い方】

スクリプト本体はこちら:加算平均.jsx
Google Docsで開くと思いますがダウンロードして保存してください。
  1. Lightroomで合成したい画像に基本補正を適用。Lrの操作はここまで。
  2. Psを起動し、[ファイル]-[スクリプト]-[参照]からダウンロードしたスクリプトを読み込む
  3. ファイル選択ダイアログが表示されるので合成したい複数の画像を選択(tiffやpsdではなく各社のrawを選択出来ます)
  4. 合成が始まります。1枚処理したところで進捗状況と残り時間(予想)がダイアログに表示されます。

【注意事項:XMPファイルが必要】

このスクリプトはLightroomの調整結果をRAWと同じフォルダにあるXMPファイルから読み取っています。
したがってPhotoshop上でLr調整を再現するには、XMPファイルが作成済でなければなりません。
Lightroomのカタログ設定で「変更点をXMPに自動的に書き込む」をONにしておくか、XMPの出力を手動で実行してください。XMPファイルがないとLr調整結果が反映されないまま合成されてしまいます。

2017-10-15

【技術系/Photoshop】大量の写真を省メモリに加算平均合成するJSXスクリプト

滝や夜景の超スローシャッター撮影やノイズリダクション的な用途で使える加算平均合成を効率化するスクリプト。

【前説】

Lr+Psで普通に加算平均合成を実行する場合、多分一番メジャーなのは次の手順でしょう。

  1. Lrで1枚の写真を補正
  2. 補正内容を、同じ内容が写った複数の写真に同期
  3. 合成したいRAWを複数選択して「Photoshopでレイヤーとして開く」(かなり遅い処理)
  4. Psが起動するので全レイヤーを選択して「スマートオブジェクトに変換」(これも遅い処理)
  5. [レイヤー]-[スマートオブジェクト]-[画像のスタック]-[平均値]実行(これも遅い処理)

ただこの方法は合成対象画像を全部一気に開くため大量コンポジットに向きません。またRAWをPsで読み込む手順3、スマートオブジェクト化する手順4、平均を計算する手順5のすべての操作がいちいち遅いため、ちょっと手作業をしたら休憩、処理が終わってたら次とダラダラした作業が必須になります。

【解決方法】

スマートオブジェクトの平均と近い結果を得る方法としてレイヤーの不透明度を変更する方法があります。
例えば4レイヤーの加算平均だと下層から順に不透明度を100%, 75%, 50%, 25%とすることで加算平均合成になります。
不透明度方式の場合、レイヤー1を100%、レイヤー2を75%としてそこでレイヤーを統合し、その後でレイヤー3を読み込んで50%としても同じ結果になるはず。この手順をスクリプトで自動的にやらせてしまえばメモリはRAW2枚分で済み、一連の処理を全自動で出来ます。

【スクリプトの説明】

処理の流れは次のとおり。

  1. 画像を1枚レイヤーとして取り込む
  2. 取り込んだレイヤーの不透明度を(100 - (100 ÷ 全入力画像数 × n))パーセントに設定(nは何枚目の画像かを示す値)
  3. レイヤーを統合
  4. 手順1に戻り次の画像を処理
1枚ずつ画像の不透明度を調整し、処理した画像は次々とマスター画像に統合されるため10枚処理しても100枚処理してもPsのメモリ使用量は一定です。

【使い方】

まずスクリプト本体はこちら:加算平均.jsx
  1. Lightroomで合成したい画像に基本補正を適用。Lrの操作はここまで。
  2. Psを起動し、[ファイル]-[スクリプト]-[参照]からダウンロードしたスクリプトを読み込む
  3. ファイル選択ダイアログが表示されるので合成したい複数の画像を選択(tiffやpsdではなく各社のrawを選択出来ます)
  4. 合成が始まります。2枚処理したところで進捗状況と残り時間(予想)がダイアログに表示されます。あと何分かかりそうか分かるわけですね~。

【注意事項①:XMPファイルが必要】

このスクリプトはLightroomの調整結果をRAWと同じフォルダにあるXMPファイルから読み取っています。
したがってPhotoshop上でLr調整を再現するには、XMPファイルが作成済でなければなりません。
Lightroomのカタログ設定で「変更点をXMPに自動的に書き込む」をONにしておくか、XMPの出力を手動で実行してください。XMPファイルがないとLr調整結果が反映されないまま合成されてしまいます。

【注意事項②:合成結果のクオリティ】

Psのレイヤー不透明度は小数点を含む値を設定することが、画面上ではできなくなっています(スクリプト上では設定できますが画面には整数値で表示されます)。
このため不透明度が小数点を含む条件(=合成対象画像の枚数が2枚, 4枚, 5枚, 10枚, 20枚, 25枚, 50枚, 100枚以外)だとPhotoshopが小数点以下を丸めて処理している可能性があり、結果的にスマートオブジェクト経由ほど正確な平均合成とはならない恐れがあります。

【注意事項③:三脚はがっちり】

Photoshopにはレイヤーの自動整列なる機能があって、合成ネタ画像が微妙にずれていても位置合わせを行うことができますが、このスクリプトで処理を行う場合は自動整列の助けを借りることはできません。
自動整列の結果は結構アバウトなもので手動で微調整してから合成しないと合成結果の画像がモヤっとなることが多々あります。
大量の画像を合成するのに一枚一枚を丁寧に位置合わせしていたら無理ですから、入力画像は非常に精密に三脚に固定されてることを前提としました。
強固な三脚を使い、いつもより強固にねじを締めてなるべく振動が少ない設定(ミラーアップとかサイレントシャッター)で撮影するのがいいと思います。

2017-10-05

【技術系/Photoshop】写真に正方形の縁取りを付けるJSXスクリプトV2

前回の投稿で公開していたPhotoshop用スクリプト「正方形化して保存.jsx」の改良版です。かなりどうでもいい改善かもしれませんが・・・
写真をこのスクリプトで処理すると、こんな感じの正方形画像になりますよというやつです。

ちょっと見えにくいけど画像の下に撮影者、撮影日時、カメラ/レンズが表示されています(打ち出す文字は設定で変えられます)。
ところがサードパーティーのレンズを使用した写真でレンズ名が正しくないケースがありました。この写真だとMACRO 100mm F2.8と出ていますが使ったレンズはTAMRONのフィルム時代の90mmです。
Exifデータに記録されている名称をそのまま転記しているため、自動的に正しいレンズ名を入れられるようにするのは苦しい。そこで文字入れした状態のPSDファイルをJPEG出力と同じフォルダに保存する機能を追加しました。
PSDだと文字データがテキストレイヤーとして保存されているためあとから手動で書き換えられます。だから自動的に作ったテキストが正しくない場合は手で書き換えることができますよと・・・(ビミョーに不便だよなぁ)



【動作環境】

Photoshop CC (Windows版)、多分Macでも動きますし、古いバージョンのPhotoshopでも多分動くかな?テスト環境がないので分かりません。

【機能】

次の作業を全自動で実行します。
  1. 編集中のドキュメントのキャンバスサイズを、ドキュメントの長辺より3%だけ広い正方形に変換
  2. 設定画面で指定したテキストを白塗りエリアに出力
  3. 2048x2048ピクセル(カスタマイズ可)に縮小
  4. 所定のフォルダにJPEG形式で保存。
  5. オプションで縮小&文字入れ済みのPSDファイルを保存することができます

【インストール】

適当なフォルダに次のファイルを保存してください。
正方形化して保存v2.jsx

【初期設定】

初回起動した時に次の設定ダイアログが表示されます。また再設定したい場合は何のドキュメントも開いていないPsからスクリプトを起動させるとこの画面が再び現れます。


【使い方】

初代と基本的に同じですので初代のページを参照ください。
【技術系/Photoshop】写真に正方形の縁取りを付けるJSXスクリプト:「正方形化して保存.jsx」

2017-09-02

【技術系/Photoshop】写真に正方形の縁取りを付けるJSXスクリプト:「正方形化して保存.jsx」

半年以上放置した当ブログを久々に更新しておりまする。
Twitter等で写真を投稿する時、たまに3:2縦横比の画像が1:1で勝手にトリミングされた状態でTLに表示されたりします。
せっかく構図とか考えたのに勝手に切られたら何の絵なのか分からないことがあるわけです。
対策として写真を正方形の白い枠の中央に配置するようにしてみたら結構うまくいきました。
こんな具合です。

でも毎回手作業でこれを作るのは面倒です。
というわけで縦長でも横長でもこんな具合で一発正方形化出来るJSXスクリプトを作ってみました。

【動作環境】

Photoshop CC (Windows版)、多分Macでも動きますし、古いバージョンのPhotoshopでも多分動くかな?テスト環境がないので分かりません。

【機能】

次の作業を全自動で実行します。
  1. 編集中のドキュメントのキャンバスサイズを、ドキュメントの長辺より3%だけ広い正方形に変換(元画像は拡大されず、拡大されてできたエリアは白塗りです)
  2. 設定ファイルで指定したテキストを白塗りエリアに出力
  3. 2048x2048ピクセル(カスタマイズ可)に縮小
  4. 所定のフォルダにJPEG形式で保存。

【インストール】

適当なフォルダに次のファイルを保存してください。(Google Drive経由で一般公開しています)
正方形化して保存.jsx


【初期設定】

初回起動した時に次の設定ダイアログが表示されます。また再設定したい場合は何のドキュメントも開いていないPsからスクリプトを起動させるとこの画面が再び現れます。


設定できる項目はJPEGの出力フォルダ、解像度、フォント+文字色、出力する文字の内容です。出力テキストにはExif情報から撮影日時や機材情報を書き出すことが出来ます。
設定した内容はJSXファイルの保管フォルダ内に「正方形化して保存.json」という名前のファイルを作って記録しています。
このファイルを消して再実行すると最初から設定をやり直すことが出来ます。

【使い方】

まず処理したい画像を開きます。



そしてスクリプトを読み込み・・・




こうなります(初回実行時はこの前に初期設定ダイアログが表示されます)。

縁取りが出来て画像左下にテキストが追加されました(見えないかな??)。またこの時点で自動的に、JPEGに変換された画像が初期設定で決めたフォルダに自動保存されています。

ついでにPhotoshopのドロップレットを使えば、アクティブなドキュメントにこのスクリプトを適用するまでの手順を自動化することが出来ます。
更にドロップレットはLightroomの保管アクションから起動することも出来るため、これらを組み合わせるとLightroom出力~正方形画像生成までの手順を自動化することが出来ます。
尚Lightroom出力からの全作業を自動化する場合、初期設定画面の「出力後、Psドキュメントを自動で閉じる」をONにしてください。

2017-02-19

北松浦郡佐々町の河津桜

早咲きで有名な河津桜。佐々町の大きな川沿いにに1km位ありそうな長い河津桜の並木道があります。

とりあえずどアップ。
全体の状況はこういう感じ。

ほんの少ししか咲いていない状況なのでこんな具合ですがとにかくたくさんの桜があります。まだこれは並木道の一部でこんな感じのがもっと長く広がっていました。
撮影場所(北東方向を撮影しています):Map

2017-02-01

長崎ランタンフェスティバル 眼鏡橋周辺

眼鏡橋周辺は特に催し物はアリませんがライトアップされていて風情のある街並みが見られます。
撮影場所の地図:Google Map

水面に波が無いと水鏡の上に反射した橋がメガネのように見えます。今の時期は水面に光るオブジェがあるのでこのような感じ。(2017/01/26撮影)


本日日没後間もない時間帯。川の畔で水面スレスレから撮りました。(2017/02/01)

眼鏡橋を近くにある別の橋の上から。

橋の周辺の通りには干支の動物他のオブジェが置かれています。
 

2017-01-29

長崎ランタンフェスティバル 孔子廟会場

長崎ランタンフェスティバル。土曜の夜に行った孔子廟の様子です。
撮影場所の地図はこちら

ライトアップされた入り口。

中国変面ショー。なにそれ?と思って見たらかなり面白かったですよ。踊りながらマジックショーをやる感じ。



変面ショー終了後の会場。人たくさん

2017-01-21

西山神社の寒桜

長崎市西山本町にある西山神社には正月桜と呼ばれる超超早咲きの桜があります。
旧正月の頃に咲くためこのように言われているようですが今年はすでに散り始め。
ソメイヨシノほどゴージャスな咲き方はしませんが、ほのかにピンク色をした花は晴天によく似合いますね。







Picture123
Location長崎市西山本町(Map)
Date2017:01:21 10:23:2610:26:4110:31:54
CameraSONY α7RM2
LensFE 70-300mm F4.5-5.6 G OSS
Focal Length300.0 mm

2017-01-10

のもざき水仙まつり

野母崎の軍艦島がよく見える公園。丘一面に水仙が咲いています。
期間中に指定のお店で食事すると温泉の割引券がもらえるそうですよ。
フォトコンテストも例年通り開催されています。




Picture12
Locationスイセンの里公園(Map)(Map)
Date2017:01:07 09:37:4310:31:39
CameraSONY α7RM2
LensFE 70-300mm F4.5-5.6 G OSSMINOLTA AF MACRO 100mm F2.8
Focal Length300.0 mm100.0 mm
※1枚目の位置情報について、植え込みに立ち入って撮ったかのような座標になっていますが測位誤差によるものです。実際には歩道から撮影しています。