PCC事故調査委員会報告 – PixInsightの緑かぶり問題の対策

この記事は最後に記載しているように、いまでは古い内容になっています。しかし私にとっては画像処理について真剣に考え、チームワークで解決するという意義深いものですので、記事として残しておきます。PCC/SPCCの緑かぶりのトラブルがある方は、こちらの記事をご参照ください。

これはネット時代における日本天文ファン界の勝利だと思っています・・・と大きく出ましたが、それくらい嬉しいできごとでした。

PCCの結果が緑色にかぶる現象は多くの方が経験しています。PixInsightの本家フォーラムやGoogleで海外サイトを検索してみても、問題は多く提示されていますが解決策は見つかりません。後から色を修正すれば良いのですが、それだとPCCをかけた意味がなくなる気もします。自己解決も行き詰まり、TwitterでPCC事故調査委員会を発足したところ、なんと数日で劇的に改善しました! データを使って検証したのは主にnagahiroさんとそーなのかーさんと私。と〜みんさん、M&Mさん、おののきももやすさん、nabeさんには議論に入っていただきました。

まだ新発見や改善の余地はありそうですが、実践的なテクニックに落とせたのでいったん報告します。楽しかった議論なのでいっぱい書いちゃいそうなのを抑え、最初に淡々と原因と対策を記載します。議論の経緯は後の方に記載しました。

PCCの処理の流れと緑かぶりの2つの原因

PCCは大きく2つの処理から構成されています。

(1) PCCの本体処理による色合わせ
(2) Backgroundによる背景のニュートラル化

(1)ではAPASSとよぶ星のデータカタログを使ってRGBそれぞれのチャネルのピークを変更しコントラストなどを調整します。(2)ではRGBのピークの位置を揃えカラーバランスを整えます。

今回の調査では(1)と(2)両方のプロセスで別々の問題が発生していました。それぞれ見ていきましょう。

原因1: 色収差により青、赤が暗くなる

色収差とは色によって焦点を結ぶ位置が異なることによっておきる現象です。たとえば青ハロは青だけがピンボケで星が大きくなりはみ出している状態です。たとえば簡単のため白い星を考えてみます。ここではRGBの値は一致しています。

白い星のRGBは一致している

ここで青ハロが出ている星は青だけがピンボケで肥大化します。そのため星の周りに青のリングができます。もとの星の光の量が変わるわけではないので、青は広がった分だけ暗くなります。

青ハロでは青が暗くなる

すると星の中央部分はRGBが一致した白ではなくなり、青が暗い色となります。PCCが色判定をミスするのは、この中央の色を測定しているからだと調査委員会は結論づけました。PCCの色の問題は反射望遠鏡ではあまりおきず、色収差が大きい屈折望遠鏡で発生する事実とも整合がとれます。

これに対する対策は2つで、(1)星の数を増やして色収差の影響を減らす(2)星の測定範囲を広げてハロも含めて光を回収です。

対策1: 星の数を増やして色収差の影響を減らす

色収差は主に明るい星に顕著に発生します。そのため暗い星も含めて測定すれば、色収差の影響を薄めることができるはずです。星の数はPCCのPhotometry ParametersのLimit magnitudeで設定できます。ここで設定した等級の星まで測定されます。早速試してみましょう。このアンドロメダ銀河は15−16等星まで写っていました。検証のためABE, DBEはかけておらずBPPを実施した直後の画像を使っています。

最初にLimit magnitudeが最大10の設定です。

Magnitude 10
10等星まで測定 – BORG72FL(屈折288mm), Fujifilm X-T30

かなりの緑かぶりです。続いてLimit magnitudeが12。

Magnitude 12
12等星まで測定 – BORG72FL(屈折288mm), Fujifilm X-T30

少し減りましたが相変わらず緑色。さらにLimit magnitudeが14。

Magnitude 14
14等星まで測定 – BORG72FL(屈折288mm), Fujifilm X-T30

かなり緩和されました。最後に思い切ってLimit magnitudeが15。

15等星まで測定 – BORG72FL(屈折288mm), Fujifilm X-T30

ほぼ緑被りがなくなっています。

同じく、そーなのかーさんが検証したデータを見てみます。最初がLimit magnitudeが11。

Magnitude 11設定(画像はそーなのかーさん提供)
11等星まで測定 – 画像はそーなのかーさん提供 Samyang 135mm F2.0 @F3.2, EOS Kiss X5

次にLimit magnitudeが13。

13等星まで測定 – 画像はそーなのかーさん提供 Samyang 135mm F2.0 @F3.2, EOS Kiss X5

最後にLimit magnitudeが15。

Magnitude 15設定(画像はそーなのかーさん提供)
15等星まで測定 – 画像はそーなのかーさん提供 Samyang 135mm F2.0 @F3.2, EOS Kiss X5

星の数を増やすとみごとに緑かぶりがとれていきます。色収差の影響が減ったためと考えられます。
さて、次は測定範囲です。

対策2: 星の測定範囲を広げてハロも含めて光を回収

上述の色収差の説明で解説したように、青ハロが出ている星は、中心部は青部分が暗くなるため、なるだけ広い範囲で光を回収する必要があります。

実際にはPCCではもっと複雑な測定をしているでしょうし、PCCの最大測定ピクセル数は30なのに対して、私の画像では明るい星が70ピクセルくらい、暗い星が20ピクセル程度ですので、上記のようなシンプルな話ではないでしょう。しかし極論すればこのようなことと考えて良いかと思います。

測定範囲はPhotometry parametersのApertureで設定できます。ではやってみましょう。

以下の画像は検証のため緑かぶりを出すために、星の数が少ないLimit magnitudeを11に固定しています。 まずはAperture=8ピクセルです。

Aperture 8ピクセル
Aperture 8ピクセル – BORG72FL(屈折288mm), Fujifilm X-T30

盛大にかぶっています。次にAperture 16ピクセル。

Aperture 16ピクセル
Aperture 16ピクセル – BORG72FL(屈折288mm), Fujifilm X-T30

少し改善してきました。最後にApertureが最大の30ピクセルです。30ピクセルはやりすぎかもしれませんが検証なのでやってみましょう。

Aperture 30ピクセル
Aperture 30ピクセル – BORG72FL(屈折288mm), Fujifilm X-T30

かなり改善しました。少し残っている緑かぶりは測定する星の数を増やすことで改善するでしょう。

そーなのかーさんのデータでもApertureを30とすることで緑かぶりがなくなっています。

Aperture 30 – 画像はそーなのかーさん提供 Samyang 135mm F2.0 @F3.2, EOS Kiss X5

これでほぼ問題解決に見えましたが、nagahiroさんのデータでは緑かぶりが改善されませんでした。これはもう一つの理由がありました。

原因2: Background Neutralizationの設定が適切でない

私の画像はPixInsightを使ってスタック処理をしていますが、nagahiroさんの画像はDeepSkyStacker(DSS)を使っています。PixInsightに比べてDSSのスタック後の画像は明るくなります。背景のLの値は私のM31は0.01程度でしたが、DSSを使ったnagahiroさんの背景のLの値は0.2程度。

PCCのBackground NeutralizationのUpper limitの初期値は0.1です。Upper limitの値以上のデータは使用しないため、背景のLが0.2の場合、初期値のままではほとんど採用されないことになります。

対策3: Background NeutralizationのUpper limitを背景より大きく

それではUpper Limitを画像を使って調整してみましょう。こちらが初期値のままです。

Upper limit 0.1 (画像はnagahiroさん提供)
Upper limit 0.1 – 画像はnagahiroさん提供(800mm, EOS60Da)

これで充分綺麗な気もしますが、Uper limitを0.3にあげると違いに気がつきます。

Upper limit 0.3 (画像はnagahiroさん提供)
Upper limit 0.3 – 画像はnagahiroさん提供(800mm, EOS60Da)

こちらを見ると、規定値のままの画像はやはり緑かぶりがあったことがわかります。

対策のまとめ

今回は3つのパラメータを変更して緑かぶりをなくしました。

色収差の対策 (Photometry Parameters)

  • Limit magnetude・・・大きくして測定する星の数を増やす
  • Aperture・・・大きくして星の測定領域を増やす

背景が明るい時のパラメータ調整 (Background Neutralization)

  • Upper limit・・・背景のLより大きく

背景のLの値は、一番したのステータスバーの▶︎ボタンを押し、Readout DataをRGB+Lに、Normalized Real Rangeを0.001にすることで確認できます。

Readout Dataの設定
Readout Dataの設定

私のアンドロメダ銀河は色収差対策で次のように改善しました。これはBPP直後にDBE処理などをせずにPCCを実行したデータです。左がデフォルト設定のままPCCを実行。右がLimit magnitude=15, Aperture=20です。

PCCのパラメータ設定による変化
PCCのパラメータ設定による変化 – BORG72FL(屈折288mm), Fujifilm X-T30

最後に改善したPCCプロセスが、実際に効果があるのかを確認したいと思います。左が前工程のあとにBackgroundNeutralizationのみを実行したデータ。右がBackgroundNeutralizationをオンにしてPCCを実行したデータです。比較をしやすくするため両者の差はPCCだけにしました。DBE, ABEは実行していません。

PCCの効果
PCCの効果 – BORG72FL(屈折288mm), Fujifilm X-T30

まだPCCの方が自然で、この後のノンリニアフェーズの処理をするためのベース画像としてはPCCは有効と思われます。

委員会での議論の流れ

・・・と、後から振り返るとスムーズに議論が展開されたが如くですが、実際のこの数日間は新しいアイデアと失敗を繰り返して改善策にたどり着きました。議論を通じて私が最も学んだのは「天体を扱っている事実」にフォーカスすること。私はどうしてもデータの画像処理と捉えがちです。しかし委員会メンバーは星の数、色、明るさなど、星・天体であることを忘れない議論をされました。そこにヒントがたくさん隠されていました。

最初はPCC本体の処理とBackground Neutralizationで何が起きているかヒストグラムで確認し、PCC本体が色の調整で、最終的なレベルあわせはBNが担当していることを確認しました。そのため私はBNに問題があるとの仮説を持ちましたが、これは原因ではありませんでした(実は一周回って、それも原因とわかるのですが・・・)。

1回目のブレイクスルーはnagahiroさんの「星の数が多すぎるのでは」とのアイデアです。そーなのかーさんが長焦点ではPCCがうまくいくと確認されており、その事実とも関連してノイズの多い暗い星が悪影響を与えているという考え方です。早速確認してみると、星の数を逆に多くすることで、緑かぶりが減ることが発見できました。星の数と画像品質に関連があることがわかったわけです。しかしこの時点では原因はわからず、実験的にそうなっているとわかったにすぎませんでした。

次にブレイクスルーとなったのは、「明るい星が問題を起こしているのは、色収差が関係しているはず」というそーなのかーさんの考えをもとに、nagahiroさん、nabeさんの3名で活発な議論がなされたことです。並行して私はネットで情報を探しており、PCCの品質をあげるためにApertureも変更しているコメントを見つけました。その二つをかけあわせ、ハロによって光が少なくなるというアイデアもあわせて、Apertureを変更することでPCC品質が良くなる事実が発見されました。ここで色収差が原因であり星を増やすと改善する事実とも整合をとることができました。

ああ、これで解決と思いきやnagahiroさんの画像ではLimit magnetude、Apertureでは改善されないことがわかりました。「もともと緑かぶりが少ないから」という言い訳をとともに諦めようとしたころ、nagahiroさんがBNのUpper limit設定により改善されたとの嬉しい知らせが届きました。これでいまのところ、全てのケースでうまくいっていることになったわけです。

PCCを使わないという選択

最後にPCCを使わない方法について記載します。PixInsightは大量にプロセスがあり、良い結果を得る方法も一つではないのが良いところです。

RGB分解してMaskedStretch

当委員会と兄弟プロジェクトである「PCC要らないかも委員会」メンバーである、おののきももやすさんは、RGB分解したあとにチャネルごとにMaskedStretchをかける手法をとっています。次のプロセスです。

  1. ABE
  2. RGB分解 (ChannelExtraction)
  3. RGB別にMaskedStretch
  4. RGB合成 (ChannelCombination)

おののきももやすさんによればMaskedStretchはL(輝度)によってマスクとストレッチをするので、RGBごとに実行すると背景レベルもピークレベルも綺麗にそろうため、Color CalibirationやBackground Neutralizationが不要になるとのことです。

PCCの代わりにCC(ColorCalibration)を使う

M&MさんはABEのあとにPCCのかわりにCC(ColorCalibration)を使い、HT(HistogramTransformation)によるPink Star対策と微調整からArcsinhStretchにすすむそうです。「いまのところは、じゃじゃ馬のPCCは使わない」とのこと。本家のPCCのチュートリアルでもPCCとCCはどちらが良いということはなく、何をゴールにするかによって使い分けて欲しいとあります。最初からCCを使ったり、PCCを使っていてもどうしても色が合わないときにCCに切り替えたりするのも有効のようです。

終わりに

PCC事故調査委員会の報告も終わりに近づいてきました。今回の調査は、お会いしたことのないネットの天体仲間同士で短期間で解決策を導いたという、私にとっては画期的なできごとで楽しく刺激的な数日間でした。とくに自分では出せないアイデアをいただいたり、他の方の意見を聞いているうちに自分もアイデアが出てくるという、経験ができました。興味のある方はTwitterのハッシュタグ「#PCC事故調査委員会」で検索してみてください!

やはり天文仲間はありがたいものです。終わるのがちょっと寂しい気もしていますが、それは大丈夫。PixInsightはわからないことだらけです。次回、Deconvolution対策委員会でお会いしたく思います。

2021年7月5日 追記

記事を記載してから9ヶ月後に気がついたことがありました。ここで説明したパラメータは常に有効ではありません。ぜひこちらの「PCCのパラメータと星の色の話」もご参照ください。

2023年10月21日 追記

この問題は、Drizzleをすることで根本的に解決することがわかりました。Debayerが色に影響を与えて緑被りをしていました。

タイトルとURLをコピーしました