上の写真は、先日3x2=6枚のモザイクでそーなのかーさんが撮影し、私が処理しましたイータカリーナ星雲です。モノクロカメラのASI294mmを使用して、LRGB合成で得られたカラー画像を、さらにモザイク合成しています。
モザイク合成は有料ソフトのAstropixelProcesscor(APP)を使用しています。APPは優秀なソフトですが、うえのように継ぎ目の目立たない結果を得るためには、APPに落とし込む前の、事前の下準備がいくつか必要でした。
今回はその下準備についてまとめておきたいと思います。
LRGB合成画像のモザイクの難しさ
本題に入る前に、ちょっと前置きを:LRGB合成画像をさらにモザイクで合成するのは、カラーカメラの画像のモザイク合成に比較して難しい、と顧問は常々思っていました。
たとえば以下の画像は、同じイータカリーナ星雲のモザイク合成です。特に下準備を工夫せず、EZSoftStrechスクリプトをとかって簡単な強調をおこなってからAstropixel Processcorでモザイク合成した結果です。
一見、継ぎ目なくつながっているようには見えます。しかしよく見ると場所ごとに星の色がズレていたり、背景の輝度が違っているのが分かると思います。いぜんから丹羽さんやそーなのかーさんが、チリリモートで撮影した画像のモザイク合成に苦労されているのを見てきました。ほぼ無光害のチリの撮影環境ですらモザイク合成は難しいのです。
難しさの原因はおそらく次の2点だと思っています
- LRGB合成では、RGBのカラー情報を取得する撮影時間帯が異なるため、モザイクの各フレームにバラツキが生じやすい
- LRGB合成前に行うノンリニアのストレッチの強度を、フレームごとに統一するのが難しい。
カラーカメラならRGBを一気に取得するのでバラツキは発生しにくいです。またモザイク合成でもリニア画像のまま行ってしまえばよいので、ストレッチ強度の悩みもありません。
1.は撮影の問題でどうにもなりませんが、2.は処理で解決できそうです。LRGB合成でモザイクをきれいに繋げられるのか?顧問なりに工夫した点を以下にまとめてみました
全体のフロー
まず全体の概要は以下の通りです。6枚のパネルについて、あらかじめ前処理を済ませたライト画像とカラー画像をPanel1~Panel6としています。
下段の緑色の四角がAPPによるモザイク合成で、それまでの下準備はすべてPixinsightで行いました。6枚の画像それぞれについて、Light画像にはBXTを、RGB画像にはSPCCをを施しています。ABEやDBEを用いた傾斜の補正は行っていません。この点はチリの空のすばらしさを反映してます。日本での撮影でもABE/DBEを行ったうえで以下の工夫をすればより良い結果が期待できるだろうと思っています。
モザイク合成前の各画像の調整
SPCCでのBackground Reference
まずすべてのRGB画像に対して、SPCCで色合わせを行いました。ここで重要なのはBackground Reference(BR)の指定です。SPCCは指定するBRの位置によって結果が大きく変わります。そこで、BRの指定位置をなるべく隣り合うパネルの「のりしろ」の位置に置くように工夫しました。下の写真は、そのようにして実施したSPCC後の各フレームをScreen Transfer Functionで仮ストレッチした結果です
小さな緑色の枠がBRとして採用したプレビューの位置を表しています。上の例では、(写真A)でとくに色が合わなかった、上段右と中段右および上段左と中段左フレームのあいだでBR共通になるようにBRの位置を指定しています。
ベースの輝度の調整
これで色はだいたい合いましたので、次は輝度を調整していきます。
前処理を終えた画像のヒストグラムを比較してみると、不思議と各フレームの輝度がずれています。露光時間をそろえているのになぜそうなるのか?それは以下の二つが原因だろうと思っています
- 各フレームごとの空の条件や月齢の違い
- 事前に行ったSPCCでのBR指定位置の違い
1.は「まあ、そうだよね」と皆様お感じだと思います。2.のほうが気を付けるべきポイントだと思っています。SPCCが色合わせ後に行うBackground Neutrization(BN)は、RGBの各チャンネルに一定値を足し引きすることで行われているために、その時に指定したBRの位置によってはヒストグラムのピーク値がズレのです。BNの働きについては丹羽さんの記事をご覧下さい
下の写真は、SPCC直後の異なるパネルのヒストグラムです。露光条件が同じでもピークの値がだいぶん異なっています。(SPCCを行う前はこんなにズレていませんでした)
これが、モザイク合成後に各フレームが合わない原因の一つだと考えています。このあと各フレームにノンリニアなストレッチを施すときに、上記のようにヒストグラムのピークが異なっていると、同じ強さのストレッチを行ったとしても、各フレームの輝度が合わなくなってしまいます。それでストレッチの強さを調整して無理やりヒストグラムのピークを合わせこもうとすると、今度は各フレームのコントラスト(ヒストグラムの幅)が合わなくなってしまうのです。
ですのでリニア画像の段階でヒストグラムのピーク位置を一致させておく必要があります。そのためにPixel Mathを使います。Histogram Transformationをつかって、各フレームのヒストグラムにピーク値の差をよみとったあとで、一番ピーク輝度の高いフレームを基準として、残りのフレームのピーク輝度が一致するようにします。具体的には以下の式を調整するフレームに適用していきます
0.0032という値は、読み取ったフレーム間のヒストグラムのピーク値の差です。各フレームごとにこの値を調整します。こうすることで、すべてのパネルについて、ヒストグラムのピークを合わせました。下の写真は6つのRGB画像のパネルについてPixelMathでの調整を行った後のヒストグラムです。
L画像の処理
L画像については比較的輝度が揃っていることが多いようで、とくに工夫はしていません。お好みでBXTを施した後、上と同様にPixelMathでのピーク位置の調整を行い、ピークの位置をRGB画像に合わせています。下の画像はヒストグラムの調整を行った後のL画像の各フレームです
一様なコントラスト強調
次に各フレームのL画像とRGB画像に程よい強さのストレッチを行います。リニアのままLRGB合成を行うといろいろなエラーが発生するからです。
ここでどのようなストレッチをどのくらい行うべきかが難しいところですが、各フレームに一様な強さのストレッチを行うことが肝要なので、顧問はPixelMathでの対数ストレッチを、パラメータを固定して使っています
PixelMathでの対数ストレッチは以下の数式になります
iif( a*($T-m)+1 > 0, ln(a*($T-m)+1)/ln(a*(1-m)+1),0)
aの値がストレッチの強さを表しますが、200~300程度にして弱いストレッチをかけました。
面倒だという方は、asinhstretchやSTFのストレッチ、あるいはadamBlock氏のEZSoftStretchなどを使っても良いかもしれません。(PixinsightのEZ prosessing SuiteスクリプトはAdam Block氏の開発ではないそうです。訂正します)
LRGB合成
ストレッチを行った後、各フレームをLRGB合成します。ここではとくに注意すべきことはありません。PixinsightのLRGBCombinationをデフォルトのまま適用しました。下の画像はLRGB合成後の各フレームを並べたものです
この時点で各フレームに大きなズレは見えません。各フレームを32bitのfitsで保存します。
モザイク合成
うえで保存したfitsファイルをAPPに読み込んで、モザイク合成を行います。モザイク合成についてはそーなのかーさんのブログをご覧ください:
この記事に従ってモザイク合成を実施して、次のような結果になりました。画像はSTFでの仮ストレッチをしていますが、フレーム間の色ずれ輝度ずれもなく、きれいにつながっていると思います。
あとはじっくり処理するだけです。
黒天リフ氏の以下のツイート通り、モザイク合成は画像処理が大変ですけど、上手く行けば何時も素晴らしい結果が得られます。ぜひ挑戦してみてください
ガチ天がリザルトの質を上げたいと思ったら2つの大正義がある。一つは露光時間。もう一つはモザイク合成。露光時間はほぼ労力とリニアだが先を目指すほど所要時間が半端ない。モザイク合成は画像処理が鬼しんどいけどリザルトを目にすれば必ず報われる^^
— 黒・天リフ (@black_tenref) 2023年5月30日