PHD2の日本語マニュアルを公開しています。こちらからどうぞ。

個人サイト「Starry Urban Sky」もよろしく。

ステライメージのコンポジット時の挙動について

「それ」に気づいたのは、ほんのふとしたことからでした。


週末、いつものようにダーク画像を作成しようと思って、撮影しておいたダークフレーム8枚をステライメージで開き、「加算平均(σクリッピング)」、「しきい値:1.1」、「バイリニア」でコンポジットしました。いつもならエラい長い時間がかかるのですが……今回はなんとほぼ一瞬でコンポジットが完了したのです!


f:id:hp2:20190909223237j:plain

普段と何が違うのだろうかと考えてみたら、いつもはメニューから「バッチ」→「コンポジット」→「ファイルから追加」としてRAWファイル(.CR2)を読み込んでいたのに対し、今回はドラッグ&ドロップで先にRAWファイルをすべて読み込んだのち、「バッチ」→「コンポジット」としていたことに思い当たりました。


しかし、たかがファイルの開き方1つでそんなに速度差が出るものでしょうか……?




疑問が出たら「論より証拠」。とりあえず実験です。


f:id:hp2:20190909223353j:plain

対象は今回撮影したダークフレーム8枚。これを未現像のままコンポジットしてその速度を計測します。ちなみにダークフレーム1枚のサイズは21~28MB程度。フォルダ内には267個の.CR2ファイルが存在し、その総容量は4.99GBに達します。決して少なくないファイル量ですが、惑星状星雲などを相手に短時間露出を繰り返せばあり得ない数ではありません。


その前に、まずはデータディスク(WesternDigital WD80EFAX)の速度計測。参考までにCrystalDiskMarkでの計測結果を挙げておきます。


f:id:hp2:20190909223531j:plain

使い込んでいるので計測結果はイマイチふるいませんが、それでもシーケンシャルの読み書きで150MB/s近くは出ています。


実験に使用するPCは現在のメインPCで、CPUがRyzen7 2700X(常時4.0GHzで運用)、メモリがDDR4-3200/PC4-25600の32GBという構成です。




これでまずは、いつものようにメニューから「バッチ」→「コンポジット」→「ファイルから追加」としてRAWファイルを読み込んでみます。以降、計時は手動計測です。


f:id:hp2:20190909223624j:plain

するとフォルダを開いた段階でいきなり固まりました。最終的にファイルリストが現れるまで、実に41秒。撮影時刻や機種名が記録されたRAWファイルのヘッダ部分をいちいち読み込んでいるせいか非常に遅く、この時点ですでにイライラさせられます。


f:id:hp2:20190909223728j:plain

ここからファイルを選択してリストに読み込むまでが14秒。ここはまずまずの速度でしょうか。


そして「コンポジット実行」ボタンを押すと……ここからが実に長い!いつもフラストレーションがたまる部分です。今回はたっぷり13分もかかりました。


結局、この方法だと8枚のRAWファイルを開いてからコンポジットを完了するまで、最短でも14分ほどかかることになります。




一方、ドラッグ&ドロップでRAWファイルをすべて読み込んだのち、「バッチ」→「コンポジット」とする場合ですが、8枚のRAWファイルを開くのにかかった時間は24秒。ここで「バッチ」→「コンポジット」とすると、パネルには開いた8枚がすでにリストに登録された状態になっています。ここで「コンポジット実行」ボタンを押すと……コンポジットはほぼ一瞬で終了。かかった時間はわずか5秒ほどでした。


全工程合わせても正味30秒ほどで、前者の方法と比べると実に30倍近いスピードアップです。




f:id:hp2:20190909224059j:plain

この速度差の原因ですが、コンポジット中のフッターの表示を見ていると、RAWファイルが対象の場合、ステライメージはどうやら画像を100ピクセル幅ずつ読み込んでスキャンし、コンポジットすることを繰り返しているようです。


すでに展開済みの画像であればメモリ上で話は完結しますが、RAWファイルが相手の場合、いちいち各ファイルから100ピクセル幅ずつのデータをHDDから読み込んで展開→コンポジットという動作を繰り返すため、HDDからのデータ読み込みやデータ展開が占める時間が大きくなり、劇的な速度低下を招くのではないかと思います。


f:id:hp2:20190909224235j:plain

おそらくメモリの消費量を抑えるためにこうした動作になっているのだろうと思いますが、速度が極端に遅くなる上、各画像で100ピクセル幅を読み込むたびに「Canon CR2を読み込み中…」というダイアログが現れてフォーカスを持って行ってしまうため、コンポジット中は他の作業は一切できず、本当にイライラさせられます。そのくせ、タスクマネージャを見ているとRAWファイルからのデータ展開には1コアしか使っていないようで、実に非効率です。


こうした事情はステライメージ7、8ともに同様なので、もしステライメージでRAW画像のコンポジットを行う場合には、搭載メモリ量が許す限り、対象ファイルを先にすべて読み込んで展開した上でコンポジットすることをお勧めします。


なお、ステライメージ8の「自動処理モード」であれば、ドラッグ&ドロップで対象ファイルを登録できるので一見速くなりそうに思えますが、実際の処理としては前者の激遅の方法そのままなので、全く速くありません。多数枚処理への最適化を売りにしているのにこれはないだろう、という仕様で、アストロアーツには妙なUIの改変より基本的な性能アップに力を入れてほしいところです。



ちなみに、ここまで書いた速度差についてですが、現象が出るのは未現像のRAWファイルを対象にした場合だけで、fitsファイルが相手の場合にはファイルの開き方による差は全く見られません。RAWファイルからのデータの展開が大きく足を引っ張っている証拠です。