透過幅の小さいナローバンドフィルターを使っているときに発生しやすい現象に、前処理後の干渉縞があります。これまで何人かの方から相談をいただいています。私もBaaderの7nmのHαフィルターでは一度も発生しなかった干渉縞が、CHROMAの3nmで発生してしまいました。根本的な解決方法は、露光時間を増やしてSN比をあげることですが、今回、画像処理で回避する方法が見つかりました。
私の画像で発生した干渉縞がこちらです。
AG Optiral 10″ iDK
ASI6200MM Pro
CHROMA Hα 3nmフィルター
300秒露光
STFをBoostして実行するとよりよくわかります。
テレビの出演者が縞模様の服を着ているときに出てくることのある縞模様です。アッコにおまかせで、若いタレントさんが和田アキ子に叱られていました。規則性のある画像を一定周期でサンプリングすると起きる現象で、モアレとも呼ばれます。モアレだけでなくて、全体がノイズだらけになってしまう問題も起きています。
撮影した画像ではこの縞は発生していませんでした。一つずつ追っかけていくと・・・Star Alignment(位置合わせ)で発生してました。
Star Alignmentでは画像を移動や回転させます。透過幅の狭いナローバンドフィルターはノイズが大きいため、背景全体に細かいノイズが広がっています。Star Alignmentにより少量の回転をさせたときに、画素の配列との干渉が起きてしまったようなのです。
Drizzleが効く
根本的な対処方法はシグナルを強くしてSN比をあげることですので、1コマの露光時間をあげることです。GainやISOを大きくしても効果的かもしれません。しかし「もう撮影しちゃったよ」という画像もなんとかしたいですよね。そんなとき良い方法がありました。Drizzleです。
DrizzleはStar Alignmentの画像補間をしません。それでうまくいくのでは、ということです。
なんと! うまくいきすぎてびっくりです。Drizzleなしとありを比較してみましょう。
干渉縞だけでなく絶望的な気分であったざらざらのノイズも綺麗にとれています。
このDrizzleを使うアイデアは私のオリジナルではなく、PixInsightのフォーラムで見つけました。ありがたいことです。
最後に Drizzleの方法を記載しておきます。
Drizzleの実行の仕方
WBPPをデフォルトパラメータで実行すると、Registeredフォルダに末尾がxdrzで終わるファイルができています。それがDrizzle用のファイルです。(WBPPを使わずマニュアルで前処理をする場合は、StarAlignmentで”generate drizzle data”にチェックを入れてください。そのあとImage Integrationまで処理をすすめます。)
ProcessメニューのImage IntegrationからDrizzle Integrationを実行します。
Add Filesを押して、さきほどのxdrzファイルを読み込みます。Local Normalizationを実行していた場合は、Add L.Norm. Filesボタンを押してxnmlファイルを読み込みます。
Scaleを2に設定します。これは解像度を縦横2倍にすると言う意味です。
設定が終了したら●ボタンを押して実行です。実行が終わるとDrizzleされた画像が表示されます。
いかがでしょうか。同じ悩みを抱えているかたも多いと思います。ぜひお試しください!
なぜDrizzleで干渉縞が発生しないのか
ここで一件落着とおもったのですが、それでは許してもらえないのが星沼会。「Drizzle Integrationでできるなら、ピクセルリジェクションと補間(Pixel interpolation)をうまく使えば、Image Integrationでもできるのでは?」というようなツッコミがありました。星沼会で議論をすすめつつ、もう少し調べてみるとDrizzleが2014年に公開されたときのリリースノートに詳しい記載がありました。こちらです。
読むべきは最初のJuanさんのDrizzleのリリースノートと、#18のIanさんのコメントです。Ianさんの書き込みについてはJuanさんが絶賛していましたので正確な記載と思います。そこから得られた情報から今回のことを考えてみました。
干渉縞はStar Alignmentの位置合わせで少量の回転をしたときに発生します。回転をしたときに、Interpolationと呼ぶピクセルの補間処理をします。このInterpolationは周りのピクセルから新しいピクセルを新たに生み出す処理で、原理的にArtifactsと呼ぶ人工的なエラーが発生します。
一方でDrizzleはInterpolationをしていません。Drizzleはアンダーサンプリングでかつディザリングにより少し位置がずれた大量なデータを解析し、もとのデータを計算します。
Interpolationが計算よりデータを「予想して生み出す」のに対して、Drizzleは「実際に存在するデータを復元」しているような処理です。そのため干渉縞のようなArtifactsが発生しないとのことです。そのためStar AlignmentでのInterpolationはリファレンス画像に対して一枚のデータで実行できますが、Drizzleは大量のデータを必要とします。
処理プロセスも通常のImage IntegrationとDrizzle Integrationは異なります。通常のImage Integratonは、キャリブレーション→位置合わせ→インテグレーションと順に処理を進めるのに対して、Drizzle Integrationはキャリブレーション→Drizzle処理と進みます。 Drizzle処理の中で位置合わせとインテグレーションの両方を一気に行います。
PixInsightの処理では、通常のImage Integration処理は、Image Calibration後にStar Aligmentで位置合わせし、Image Integrationでスタックします。
一方でDrizzle Integrationでは、Image Calibrationで出力されたデータに対して、Drizzle Integrationにより位置合わせとスタックを同時に実行します。その際にStar AlignmentとImage Integrationで生成されたデータを参照しますが、あくまでも参照だけでDrizzle Integrationは、Calibrationデータを直接処理しています。参照データ作成のためにStar AlignmentとImage Integrationの処理は依然として必要です。
このようにStar AlignmentのInterpolation(補間)とDrizzleは似ている処理でありながら、メカニズムはまったく異なります。この違いにより干渉縞が出たり出なかったりしているのです。まだざっくりとした理解のため、もう少し調査を進めて、また報告しますね。
Twitterで・・・
記事を公開してから、マルさんからTwitterでコメントをいただきました。
なんと3年前にすでにこの問題に対処されていたのですね。ちなみに記事を書かれた日は私の誕生日ですw
マルさんのアプローチはStar AlignmentでInterpolationのアルゴリズムをデフォルトのLanczosからCubic B-Splineに変更するもの。うまく干渉縞がなくなったそうです。マルさんもブログに書かれているようにCubic B-Splineの場合は補間の質が下がりますが、画像によっては十分なのですね。より理解が深まりました。ありがとうございます!