BlurXTerminator version 2.0 and AI version 4がリリースされました。
以下BXT2とかAI4とか呼ぶことにします。以前のものはBXT1とか単にBXTでしょうか。BXTというのはバージョンに限らずBlurXTerminatorの略語の場合もあるので、ここでは文脈によって使い分けたいと思います。
まず、恒星についてはこれまでのBXT1に比べて明らかに大きな改善です。以前もこの恒星の収差を改善するCorrect onlyがかなりすごいと思って評価しましたが、その当時は星雲の細かい模様出しが第一の話題の中心で、恒星を小さくすることが次くらいの話題でした。収差などを直すCorrect onlyはあまり話題になっていなかったのが残念でした。でも今回はむしろ、この収差補正の方が話題の中心になっていて、しかもその精度が格段に上がっているようなので、より精度の高いツールとして使うことができそうです。
今回のBXT2で修正できるものは:
では実際に比較してみましょう。全て前回のクワガタ星雲の処理途中のリニアな段階での比較です。
1. オリジナル画像
まずはオリジナルの画像です。
ε130Dは、スポットダイアグラムを見る限り非常に優秀な光学系です。同系列のε160EDやTOA-130N+TOA-645フラットナーといったスーパーな鏡筒には流石に負けますが、FSQ-130EDとコンパラくらいでしょうか。反射型なので光軸調整さえ安定してできれば、間違いなく最強の部類の鏡筒と言えると思います。上の画像は四隅でもかなり星像は小さくなっていますが、まだ少し流れが残っています。
2. BXT1相当 (BXT AI2)
ここにまずは、BXT1相当の、BXT2に従来のAI Ver.2を適用します。ここではCorrect onlyでの比較です。
四隅の星の流れは明らかに改善されていることがわかりますが、星の大きさなどは大きく変わることがなく、これだけ見てもε130Dの光学性能の優秀さが伺えるかと思います。
3. BXT2 AI4
では上の画像で十分で、高性能鏡筒に今回のAI4をかけても意味がないかというと、そんなことはありません。BXT1では微恒星を救いきれていない場合が多々ありました。このページの「もう少しL画像を評価」の2のところ以降に、
「BXTはかなり暗い最微恒星については恒星と認識するのは困難で、deconvolutionも適用できないようです。そうすると逆転現象が起きてしまうことも考えられ、より暗い星の方がそれより明るい星よりも(暗いけれど)大きくなってしまうなどの弊害も考えられます。」
と当時書いていました。そして暫定的な結論として
「この逆転現象とかはかなり拡大してみないとわからないこと、収差の補正や星雲部の分解能出しや明るい恒星のシャープ化など、現段階ではBXTを使う方のメリットがかなり大きいことから、今のところは私はこの問題を許容してBXTを使う方向で進めたいと思います。シンチレーションの良い日を選ぶなどでもっとシャープに撮影できるならこの問題は緩和されるはずであること、将来はこういった問題もソフト的に解決される可能性があることなども含んでの判断です。」
と書いていますが、今回は実際にソフト的に改善されたと考えて良さそうです。
実際に見てみましょう。BXT2 AI4を適用したものです。
一見BXT1との違いがわからないと思うかもしれませんが、少しぼやけて写っているような最微恒星に注目してみてください。BXT1では取りこぼしてぼやけたままに写っているものがBXT2ではきちんと取りこぼされずに星像が改善されています。
このことはリリース次のアナウンスの「Direct linear image processing」に詳しく書いてあります。
要約すると、
BXT2では直にリニアデータを処理することができるようになった。BXT1ではニューラルネットワークの処理過程の制限から、一旦ストレッチした上で処理し、その後リニアデータに戻していた。そのため恒星の光量が変わってしまったり、特に淡い恒星では広いダイナミックレンジを扱うことが難しかった。BXT2ではこのような妥協を排除し、その結果より正確に光量を保つことができ、大きなダイナミックレンジを扱うことができるようになった。
というようなことが書かれています。これは大きな進化で、実際に自分の画像でも微恒星に関しては違いが確認できたことになります。
Niwaさんが恒星の締まり具合から判断して、PSFを測定してその値を入れた方がいいという動画を配信していました。その後訂正され、PSFの設定はオートでいいとなりましたが、一方、私はこのPSFの設定は星雲部分の解像度をどれだけ出すかの自由度くらいにしか思っていないので、測定なんていう手間のかかることをしたことがなかったです。
BXTのパネルは上が「Steller Adjustments」となっていて、「Sharpen Stars」とか「Adjust Star Halos」とかあるので、こちらは恒星のためのパラメータで、恒星の評価はこちらを変えて判断すべきかと思います。とすると真ん中の「Nonsteller Adjustments」は恒星でない星雲部などのパラメータで、星雲部を見て判断すべきかと思われます。このPSFが星雲部にどう働くかはユーザーにとっては結構なブラックボックスですが、必ずしも測定値を入れなくても、星雲部の出具合を見て好きな値を入れればいいのかと思っていました(BXT2ではここが大きく変わっています)。
というわけで、いくつかのパラメータを入れてどう変わるかを見てみましたが、これまた興味深い結果になりました。
1. まずはオリジナルのBXTをかける前の画像です。こちらも前回のクワガタ星雲の画像の中のバブル星雲部分拡大していて、リニア処理時の画像になります。まだ、バブル星雲もかなりボケてますね。
2. 次は右下のリセットボタンを押して、すべてデフォルトの状態でどうなるかです。
恒星は上で書いた収差補正などが入り、さらに星を小さくする効果(0.5)で実際に星が小さくなっているのがわかります。そして確かに星雲部の分解能が上がっているのがわかります。今回の画像は全てBin2で撮影しDrizzle x2をかけてあることに注意で、これにBXTをかけたことになるので、相当な解像度になっています。
3. さてここで、PSFの効果を見てみます。パラメータはSharpen Stars: 0.70, Adjust Star Halos: 0.00, Sharpen Nonsteller: 1.00で、PSF Diameterだけ変えてみます。極端な場合のみ比べます。まずはPSFが最小の0の場合です。
次にPSFが最大の8の場合です。
あれ?恒星は確かに少し変わっていますが、星雲部が全く同じに見えます。このことは、PSFを1から7まで変えて比較しても確認しました。
4. BXT1時代にはPSFを変えたら星雲部が大きく変わっていたはずです。念のためAI2にして確認しました。
PSFが4.0の場合。
PSFが8.0の場合です。
他のパラメータは全て同じなので、やっぱり明らかにPSF Diameterだけで星雲部が大きく変わっています。
5. ここで、再びAI4に戻りもうひとつのパラメータ「Sharpen Nonsteller」をいじってみました。1.0からから0.5に変えています。
これまでのSharpen Nonstellerが1.0の時と比べて、明らかに星雲部の分解能は出にくくなっています。
今回のリリースノートでは星雲部の記述がほとんどありません。ということはPSFに関しては大きな仕様変更?それともバグ?なのでしょうか。ちょっと不思議な振る舞いです。でもBXT1の時のように星雲部の解像度を出すパラメータがPSF DiameterとSharpen Nonstellerの2つあるのもおかしな気もするので、BXT2の方がまともな設計の気もします。いずれにせよ、今回のAI4ではすでに星雲部に関しては最初から最大限で分解能を出してしまっていて、これ以上の分解能は出せないようです。BXT1の時には星雲部の解像度出しが大きく扱われていたので、これを期待して購入すると、もしかしたら期待はずれになってしまうかもしれません。
でもちょっと待った、もう少しリリースノートを読んでみると、BXTの2度掛けについての記述が最後の方にあることに気づきます。
Correct Firstとnonstellar then stellarはAI4では使えなくしたとのことで、その代わりに一度Correct Onlyをかけて、その後にCorrect Onlyを外して好きな効果をかければいいとのことです。
実際に試してみましたが、いくつか注意点が必要そうです。下の画像は、上で使ったオリジナルの画像から
BXTですが、まだまだブラックボックスなところはたくさんあります。ここからはあくまで個人的にですが、どんなことが行われているのか色々推測してみようと思います。
最初に、AIと言っていますがどこに使っているのか?です。自分だったらここに使うとだろうという意味も込めて推測しています。
まずは「恒星とその他の天体の区別」にAIを使っているのではないかと思います。これはStarXterminatorで既に実装されているのでおそらく確実でしょう。画像の中にはものすごい数の星があります。全てまともな形をしていればいいのですが、収差などで崩れた形の(元)恒星もきちんと恒星と認識しなければいけません。ここはAIの得意とする分野だと思います。でも、恒星の認識率も100%にするのはかなり難しいと思います。リリースノートで示されているような種類の収差を膨大な画像から学習しているものと思われ、逆にそうでないものは恒星でないと判断すると思います。ハッブルの画像などから学習したと書いていますが、ハッブルの画像は逆に収差は比較的小さいと思いますので、これと収差があるアマチュアクラスの画像を比べたりしたのでしょうか。それでも現段階でのAIなので、学習も判別も当然完璧では中々ないはずなのですが、例えば銀河などはかなりの精度で見分けているのかと思います。
個別に恒星が認識できたら、恒星にのみdeconvoutionを適用することが可能になるはずです。上での検討のように、BXT1では超微恒星は星像改善がなかったものが、BXT2では無事に恒星として認識できて星像改善されているので、このことは認識できた恒星にのみdeconvoutionを適用していることを示唆しているのかと思います。従来のdeconvolutionは効果を画面全体に一度に適用せざるを得ないので、恒星部と星雲部に同様にかかってしまいます。恒星が星雲を含む背景から分離でき、そこにのみdeconvolutionをかけられるなら、個別に効果を調整できるので、従来に比べてかなり有利になるでしょう。
ただし、恒星が小さくなった後に残る空白の部分は、従来のdeconvolutionでは黒いリング状になりがちなのですが、BXTはかなりうまく処理しているようです。説明を読んでも「リンギングなしでうまく持ち上げる」くらいしか書いていないのでわからないのですが、ここでもAIを使っているのかもしれません。例えば、簡単には周りの模様に合わせるとかですが、もう少し考えて、恒星の周りの中心よりは暗くなっているところの「背景天体の形による輝度差」をうまく使うとかも考えられます。輝度を周りに合わせるようにオフセット値を除いてやり、模様を出しやすくしてから、それを恒星が小さくなったところの背景にするなどです。S/Nは当然不利なのですが、そこをAIをつかってうまくノイズ処理するとかです。本当にこんな処理がされているかどうかは別にして、アイデアはいろいろ出てくるのかと思います。
あとBXTの優れているところが、画像を分割して処理しているところでしょう。512x512ピクセルを1つのタイルと処理しているとのことで、その1タイルごとにPSFを決めているとのことです。収差処理もおそらく1タイルごとにしているのでしょう。現在のAI処理はそれほど大きなピクセル数の画像を扱っていないので、どうしても一回の処理のための画像の大きさに制限が出るはずです。でもこのことは画像の各部分の個々の収差を、それぞれ別々のパラメータで扱うことにつながります。四隅の全然別の収差がどれも改善され、恒星が真円になっていくのは、見事というしかありません。これをマニュアルでやろうとしたら、もしくは何かスクリプトを書いて個々のタイルにdeconvolutionをかけようとしたら、それこそものすごい手間になります。画面全体に同じ処理をする従来のdeconvolutionなどとは、原理が同じだけで、もう全く違う処理といってもいいかもしれません。
もう一つ、極々小さい微恒星がさらにdeconvolutionされたらどうなるか考えてみましょう。
もともと時間で変動する1次元の波形の周波数解析によく用いられるFFTでは、サンプリング周波数の半分の周波数以下でしか解析できません。この半分の周波数をナイキスト周波数と言います。要するに2サンプル以上ないと波として認識できず、周波数が決まらないということです。ではこの2サンプルのみに存在するインパルス的な波を、無理矢理時間軸で縮めるような処理をしてみたらどうなるでしょうか?元々あった2サンプルで表現されていた波が2サンプル以下で表現され、より高周波成分が存在するようになります。
これと同じことを2次元の画像で考えます。上のFFTの時間が、画像のドットに置き換わり、縦と横で2次元になったと考えます。周波数と言っているのは画面の細かさになり、「空間周波数」という言葉に置き換わります。細かい模様ほど空間周波数が高く、荒い模様ほど空間周波数が低いと言ったりします。
1ドットのみの恒星は、本当に恒星なのか単なるノイズなのか区別のしようがありません。少なくとも各辺2ドット、すなわち4ドットあって初めて広がりのある恒星だと認識できます。この各辺2ドットがナイキスト周波数に相当します。超微恒星に対するdeconvolution処理はこの4ドットで表されている恒星を、4ドット以下で表現しようとすることになります。その結果、この画像はナイキスト周波数以上の高周波成分を含むことになります。
deconvotionはもともと点像であった恒星と、その点像が光学機器によって広がりを持った場合の差を測定し、その広がりを戻すような処理です。その広がり方がPSFという関数で表されます。広がりは理想的には口径で決まるような回折限界で表されますが、現実的にはさら収差などの影響があり広がります。BXTはあくまでdeconvolutionと言っているので、ここに変なAIでの処理はしていないのかもしれませんし、もしくはAIを利用したdeconvolution「相当」なのかもしれません。
BXT1からBXT2へのバージョンアップで、処理できる収差の種類が増えていて明確に何ができるのか言っているのは注目すべきことかと思います。単なるdeconvolutionなら、どの収差を補正できるのか明確には言えないはずです。でもAIで収差の補正の学習の際、どの収差か区別して学習したとしたら、deconvolution相当でどのような収差に対応したかが言えるのかと思います。そういった意味では、やはりBXTのdeconvolutionは後者の「相当」で、AIで置き換えられたものかと思った方が自然かもしれません。
ここまで書いたことは多分に私自身の推測も入っているので、全く間違っているかもしれません。BXTの中身の実際はユーザーには全部はわからないでしょう。でも中身はどうあれ、実際の効果はもう革命的と言っていいほどのものです。
個人的には「個々のタイルでバラバラな収差をそれぞれのPSFで補正をして、画像の全面に渡って同等な真円に近い星像を結果として出しているところ」が、マニュアルでは絶対にやれそうもないところなのでイチオシです。もちろん今のBXTでは完璧な処理は難しいと思いますが、現在でも相当の精度で処理されていて、BXT1からBXT2のように、今後もさらなる進化で精度が上がることも期待できそうです。
では、このBXTが完璧ではないからと言って、科学的な目的では使えないというような批判は野暮というものでしょう。そもそもBXTは科学的に使うことは目的とはしていないはずです。
それでもBXTを科学的な側面で絶対使えないかというと、使い方次第だと思います。例えば、新星を探すという目的で、BXTでより分解能を増した上で何か見つかったとしましょう。それが本物かフェイクかの「判断」は他のツールも使うなどして今の段階では「人間が」すべきでしょう。判断した上で、偽物ということもあるでしょうし、もし本物だったとしたら、例え判断はBXTだけでできなかったとしても、そのきっかけにBXTが使われたいうことだけで、BXTの相当大きな科学的な貢献になるかと思います。
要するに「ツールをどう使うか」ということだと思います。今の天文研究でもAIが盛んに使われようとしていますが、主流は人間がやるにはあまりに手間がかかる大量のデータを大まかに振り分けるのを得意としているようです。ある程度振り分けたら、最終的な判断はAIに任せるようなことはせず、やはり人の目を入れているのが現実なのかと思います。AIは完璧ではないことはよくわかっているのだと思います。
BXTはどんどんすごいことになっていますね。今後はBXT以外にもさらに優れたツールも出てくるでしょう。将来が楽しみでなりません。
何年か前にDenoise AIが出た時も否定する意見はありましたし、今回のBXT2も推測含みで否定するケースも少なからずあったようです。デジカメが出た時も否定した人が当時一定数いたことも聞いていますし、おそらく惑星撮影でWavelet変換を利用した時も同じように否定した人はいたのかと思います。新しいものが出た時の人の反応としてはごく自然なのかもしれませんが、私は個人的にはこのような新しいツールは大歓迎です。新しいものが出たときに否定だけするような人から、新しい革新的なツール作られるようなことなどほぼあり得ないでしょう。新しいツールはその時点では未熟でも、将来に発展する可能性が大きく、その可能性にかけるのが正しい方向かなと思っています。
実際私も、電視観望をしていて頭ごなしに否定されたことが何度がありました。でも今では電視観望は、眼視と撮影の間の手法として確立してきているはずです。当時否定された方達に、改めて今電視観望についてどう思っているのかお聞きしてみたかったりします(笑)。
BXT素晴らしいです!!!
以下BXT2とかAI4とか呼ぶことにします。以前のものはBXT1とか単にBXTでしょうか。BXTというのはバージョンに限らずBlurXTerminatorの略語の場合もあるので、ここでは文脈によって使い分けたいと思います。
Correct only
まず、恒星についてはこれまでのBXT1に比べて明らかに大きな改善です。以前もこの恒星の収差を改善するCorrect onlyがかなりすごいと思って評価しましたが、その当時は星雲の細かい模様出しが第一の話題の中心で、恒星を小さくすることが次くらいの話題でした。収差などを直すCorrect onlyはあまり話題になっていなかったのが残念でした。でも今回はむしろ、この収差補正の方が話題の中心になっていて、しかもその精度が格段に上がっているようなので、より精度の高いツールとして使うことができそうです。
今回のBXT2で修正できるものは:
- First- and second-order coma and astigmatism: 1次と2次のコマと非点収差
- Trefoil (common with pinched optics and in image corners with some camera lenses): トレフォイル(矢状収差?) (歪んだ光学系や、いくつかのカメラレンズで出る画面四隅において一般的)
- Defocus (poor focus and/or field curvature): デフォーカス: (焦点ズレや、もしくは像面歪曲)
- Longitudinal and lateral chromatic aberration: (縦方向、横方向の色収差)
- Motion blur (guiding errors): 動きのブレ(ガイドエラー)
- Seeing/scatter variation per color channel: 各色ごとのシーイング/散乱の違い
- Drizzle upsampling artifacts (2x only): ドリズルのアップサンプリング時の偽模様(2倍時のみ)
とのことです。
ちなみに、BXT1の時に修正できたのは以下のようなものなので、BXT2では圧倒的に進化しています。
なので、まずは星雲部分を補正する前に、一度Correct Olnyをチェックして収差などによって歪んで写った恒星がどれだけ改善されるのかを、十分に味わうべきでしょう!星雲部の模様出しとかは他のツールでも似たようなことはできますが、上に挙げたような収差補正をここまでやってくれるツールはBXTだけです。画面全体を見ている限りは一見このありがたさに気づかないかもしれませんが、拡大すればするほど、こんなに違うのか!というのを実感することと思います。
ちなみに、BXT1の時に修正できたのは以下のようなものなので、BXT2では圧倒的に進化しています。
- limited amounts of motion blur (guiding errors): ある一定量までの動きのブレ(ガイドエラー)
- astigmatism: 非点収差
- primary and secondary coma: 1、2次のコマ収差
- unequal FWHM in color channels: 各色のFWHM (星像の大きさ) の違い
- slight chromatic aberration: 多少の色収差
- asymmetric star halos: 非対称なハロ
なので、まずは星雲部分を補正する前に、一度Correct Olnyをチェックして収差などによって歪んで写った恒星がどれだけ改善されるのかを、十分に味わうべきでしょう!星雲部の模様出しとかは他のツールでも似たようなことはできますが、上に挙げたような収差補正をここまでやってくれるツールはBXTだけです。画面全体を見ている限りは一見このありがたさに気づかないかもしれませんが、拡大すればするほど、こんなに違うのか!というのを実感することと思います。
では実際に比較してみましょう。全て前回のクワガタ星雲の処理途中のリニアな段階での比較です。
1. オリジナル画像
まずはオリジナルの画像です。
ε130Dは、スポットダイアグラムを見る限り非常に優秀な光学系です。同系列のε160EDやTOA-130N+TOA-645フラットナーといったスーパーな鏡筒には流石に負けますが、FSQ-130EDとコンパラくらいでしょうか。反射型なので光軸調整さえ安定してできれば、間違いなく最強の部類の鏡筒と言えると思います。上の画像は四隅でもかなり星像は小さくなっていますが、まだ少し流れが残っています。
2. BXT1相当 (BXT AI2)
ここにまずは、BXT1相当の、BXT2に従来のAI Ver.2を適用します。ここではCorrect onlyでの比較です。
四隅の星の流れは明らかに改善されていることがわかりますが、星の大きさなどは大きく変わることがなく、これだけ見てもε130Dの光学性能の優秀さが伺えるかと思います。
3. BXT2 AI4
では上の画像で十分で、高性能鏡筒に今回のAI4をかけても意味がないかというと、そんなことはありません。BXT1では微恒星を救いきれていない場合が多々ありました。このページの「もう少しL画像を評価」の2のところ以降に、
「BXTはかなり暗い最微恒星については恒星と認識するのは困難で、deconvolutionも適用できないようです。そうすると逆転現象が起きてしまうことも考えられ、より暗い星の方がそれより明るい星よりも(暗いけれど)大きくなってしまうなどの弊害も考えられます。」
と当時書いていました。そして暫定的な結論として
「この逆転現象とかはかなり拡大してみないとわからないこと、収差の補正や星雲部の分解能出しや明るい恒星のシャープ化など、現段階ではBXTを使う方のメリットがかなり大きいことから、今のところは私はこの問題を許容してBXTを使う方向で進めたいと思います。シンチレーションの良い日を選ぶなどでもっとシャープに撮影できるならこの問題は緩和されるはずであること、将来はこういった問題もソフト的に解決される可能性があることなども含んでの判断です。」
と書いていますが、今回は実際にソフト的に改善されたと考えて良さそうです。
実際に見てみましょう。BXT2 AI4を適用したものです。
一見BXT1との違いがわからないと思うかもしれませんが、少しぼやけて写っているような最微恒星に注目してみてください。BXT1では取りこぼしてぼやけたままに写っているものがBXT2ではきちんと取りこぼされずに星像が改善されています。
このことはリリース次のアナウンスの「Direct linear image processing」に詳しく書いてあります。
One of the most significant “under the hood” features of AI4 is that it processes linear images directly. Earlier versions performed an intermediate stretch prior to neural network processing, then precisely reversed this stretch afterwards to restore the image to a linear state. This was done because neural networks tend to perform best when their input values lie within a well-controlled statistical distribution.
While this worked well for most images, it introduced distortions that compromised performance. Flux was not well conserved, particularly for faint stars, and the network could not handle certain very high dynamic range objects (e.g., M42, Cat Eye nebula). These compromises have been eliminated with AI4, resulting in much more accurate flux conservation and extreme dynamic range handling.
要約すると、
BXT2では直にリニアデータを処理することができるようになった。BXT1ではニューラルネットワークの処理過程の制限から、一旦ストレッチした上で処理し、その後リニアデータに戻していた。そのため恒星の光量が変わってしまったり、特に淡い恒星では広いダイナミックレンジを扱うことが難しかった。BXT2ではこのような妥協を排除し、その結果より正確に光量を保つことができ、大きなダイナミックレンジを扱うことができるようになった。
というようなことが書かれています。これは大きな進化で、実際に自分の画像でも微恒星に関しては違いが確認できたことになります。
Nonsteller
Niwaさんが恒星の締まり具合から判断して、PSFを測定してその値を入れた方がいいという動画を配信していました。その後訂正され、PSFの設定はオートでいいとなりましたが、一方、私はこのPSFの設定は星雲部分の解像度をどれだけ出すかの自由度くらいにしか思っていないので、測定なんていう手間のかかることをしたことがなかったです。
BXTのパネルは上が「Steller Adjustments」となっていて、「Sharpen Stars」とか「Adjust Star Halos」とかあるので、こちらは恒星のためのパラメータで、恒星の評価はこちらを変えて判断すべきかと思います。とすると真ん中の「Nonsteller Adjustments」は恒星でない星雲部などのパラメータで、星雲部を見て判断すべきかと思われます。このPSFが星雲部にどう働くかはユーザーにとっては結構なブラックボックスですが、必ずしも測定値を入れなくても、星雲部の出具合を見て好きな値を入れればいいのかと思っていました(BXT2ではここが大きく変わっています)。
というわけで、いくつかのパラメータを入れてどう変わるかを見てみましたが、これまた興味深い結果になりました。
1. まずはオリジナルのBXTをかける前の画像です。こちらも前回のクワガタ星雲の画像の中のバブル星雲部分拡大していて、リニア処理時の画像になります。まだ、バブル星雲もかなりボケてますね。
2. 次は右下のリセットボタンを押して、すべてデフォルトの状態でどうなるかです。
恒星は上で書いた収差補正などが入り、さらに星を小さくする効果(0.5)で実際に星が小さくなっているのがわかります。そして確かに星雲部の分解能が上がっているのがわかります。今回の画像は全てBin2で撮影しDrizzle x2をかけてあることに注意で、これにBXTをかけたことになるので、相当な解像度になっています。
3. さてここで、PSFの効果を見てみます。パラメータはSharpen Stars: 0.70, Adjust Star Halos: 0.00, Sharpen Nonsteller: 1.00で、PSF Diameterだけ変えてみます。極端な場合のみ比べます。まずはPSFが最小の0の場合です。
次にPSFが最大の8の場合です。
あれ?恒星は確かに少し変わっていますが、星雲部が全く同じに見えます。このことは、PSFを1から7まで変えて比較しても確認しました。
4. BXT1時代にはPSFを変えたら星雲部が大きく変わっていたはずです。念のためAI2にして確認しました。
PSFが4.0の場合。
PSFが8.0の場合です。
他のパラメータは全て同じなので、やっぱり明らかにPSF Diameterだけで星雲部が大きく変わっています。
5. ここで、再びAI4に戻りもうひとつのパラメータ「Sharpen Nonsteller」をいじってみました。1.0からから0.5に変えています。
これまでのSharpen Nonstellerが1.0の時と比べて、明らかに星雲部の分解能は出にくくなっています。
今回のリリースノートでは星雲部の記述がほとんどありません。ということはPSFに関しては大きな仕様変更?それともバグ?なのでしょうか。ちょっと不思議な振る舞いです。でもBXT1の時のように星雲部の解像度を出すパラメータがPSF DiameterとSharpen Nonstellerの2つあるのもおかしな気もするので、BXT2の方がまともな設計の気もします。いずれにせよ、今回のAI4ではすでに星雲部に関しては最初から最大限で分解能を出してしまっていて、これ以上の分解能は出せないようです。BXT1の時には星雲部の解像度出しが大きく扱われていたので、これを期待して購入すると、もしかしたら期待はずれになってしまうかもしれません。
でもちょっと待った、もう少しリリースノートを読んでみると、BXTの2度掛けについての記述が最後の方にあることに気づきます。
The “Correct First” convenience option is disabled for AI4 due to the new way it processes image data. It is also generally no longer necessary. If desired, the same effect can still be accomplished by applying BlurXTerminator twice: once in the Correct Only mode, and then again with the desired sharpening settings. The same is true for the “nonstellar then stellar” option: it is generally not needed anymore with AI4, but can be accomplished manually if desired.
Correct Firstとnonstellar then stellarはAI4では使えなくしたとのことで、その代わりに一度Correct Onlyをかけて、その後にCorrect Onlyを外して好きな効果をかければいいとのことです。
実際に試してみましたが、いくつか注意点が必要そうです。下の画像は、上で使ったオリジナルの画像から
- Correct Only
- Sharpen Stars: 0.70, Adjust Star Halos: 0.00, Automatic PSF: on, Sharpen Nonsteller: 1.00
- Sharpen Stars: 0.00, Adjust Star Halos: 0.00, Automatic PSF: on, Sharpen Nonsteller: 1.00
- Sharpen Stars: 0.00, Adjust Star Halos: 0.00, Automatic PSF: on, Sharpen Nonsteller: 1.00
と4回かけています。
まず、星雲部の解像度出しを後ろ3回でかけていることになりますが、その効果は回数分きちんと出ていて、複数掛けで効果を増すことができるのがわかります。その一方、Sharpen Starsは2回目のみにかけ、それ以降はかけていません。これは繰り返しかけると恒星がどんどん小さくなっていき、すぐに破綻するからです。3回目のみにかけるとか、4回目のみにかける、もしくは小さい値で複数回かけてもいいかと思いますが、恒星が破綻しないように注意してチェックする必要があると思います。
最も重要なのが、PSFの設定です。BXT1時代にはここをマニュアルで数値を入れてやることで、星雲部の解像度が調整できましたが、ここまでの検証でBXT2ではその効果は無くなってしまっています。しかも、ここで試しているようなBXT2の複数回掛けで固定PSFにすると、小さくなっていく恒星に対して間違った値のPSFが適用されてしまい明らかに恒星が破綻していくので、Automatic PSFを必ずオンにしておく必要がありそうです。
というわけで、ここまでの検証でまとめておくと、
まず、星雲部の解像度出しを後ろ3回でかけていることになりますが、その効果は回数分きちんと出ていて、複数掛けで効果を増すことができるのがわかります。その一方、Sharpen Starsは2回目のみにかけ、それ以降はかけていません。これは繰り返しかけると恒星がどんどん小さくなっていき、すぐに破綻するからです。3回目のみにかけるとか、4回目のみにかける、もしくは小さい値で複数回かけてもいいかと思いますが、恒星が破綻しないように注意してチェックする必要があると思います。
最も重要なのが、PSFの設定です。BXT1時代にはここをマニュアルで数値を入れてやることで、星雲部の解像度が調整できましたが、ここまでの検証でBXT2ではその効果は無くなってしまっています。しかも、ここで試しているようなBXT2の複数回掛けで固定PSFにすると、小さくなっていく恒星に対して間違った値のPSFが適用されてしまい明らかに恒星が破綻していくので、Automatic PSFを必ずオンにしておく必要がありそうです。
というわけで、ここまでの検証でまとめておくと、
- BXT2は星雲部の解像度出しの効果が弱いので、複数回がけで効果を強くすることができる。
- 複数掛けは作者がOKを出している。
- Sharpen Stars(と、今回は検証してませんが多分Adjust Star Halosも)は無理をしない。
- PSFはオートにしておいた方が楽で変なことが起きないのでいい。
BXTの中身について推測
BXTですが、まだまだブラックボックスなところはたくさんあります。ここからはあくまで個人的にですが、どんなことが行われているのか色々推測してみようと思います。
最初に、AIと言っていますがどこに使っているのか?です。自分だったらここに使うとだろうという意味も込めて推測しています。
まずは「恒星とその他の天体の区別」にAIを使っているのではないかと思います。これはStarXterminatorで既に実装されているのでおそらく確実でしょう。画像の中にはものすごい数の星があります。全てまともな形をしていればいいのですが、収差などで崩れた形の(元)恒星もきちんと恒星と認識しなければいけません。ここはAIの得意とする分野だと思います。でも、恒星の認識率も100%にするのはかなり難しいと思います。リリースノートで示されているような種類の収差を膨大な画像から学習しているものと思われ、逆にそうでないものは恒星でないと判断すると思います。ハッブルの画像などから学習したと書いていますが、ハッブルの画像は逆に収差は比較的小さいと思いますので、これと収差があるアマチュアクラスの画像を比べたりしたのでしょうか。それでも現段階でのAIなので、学習も判別も当然完璧では中々ないはずなのですが、例えば銀河などはかなりの精度で見分けているのかと思います。
個別に恒星が認識できたら、恒星にのみdeconvoutionを適用することが可能になるはずです。上での検討のように、BXT1では超微恒星は星像改善がなかったものが、BXT2では無事に恒星として認識できて星像改善されているので、このことは認識できた恒星にのみdeconvoutionを適用していることを示唆しているのかと思います。従来のdeconvolutionは効果を画面全体に一度に適用せざるを得ないので、恒星部と星雲部に同様にかかってしまいます。恒星が星雲を含む背景から分離でき、そこにのみdeconvolutionをかけられるなら、個別に効果を調整できるので、従来に比べてかなり有利になるでしょう。
ただし、恒星が小さくなった後に残る空白の部分は、従来のdeconvolutionでは黒いリング状になりがちなのですが、BXTはかなりうまく処理しているようです。説明を読んでも「リンギングなしでうまく持ち上げる」くらいしか書いていないのでわからないのですが、ここでもAIを使っているのかもしれません。例えば、簡単には周りの模様に合わせるとかですが、もう少し考えて、恒星の周りの中心よりは暗くなっているところの「背景天体の形による輝度差」をうまく使うとかも考えられます。輝度を周りに合わせるようにオフセット値を除いてやり、模様を出しやすくしてから、それを恒星が小さくなったところの背景にするなどです。S/Nは当然不利なのですが、そこをAIをつかってうまくノイズ処理するとかです。本当にこんな処理がされているかどうかは別にして、アイデアはいろいろ出てくるのかと思います。
あとBXTの優れているところが、画像を分割して処理しているところでしょう。512x512ピクセルを1つのタイルと処理しているとのことで、その1タイルごとにPSFを決めているとのことです。収差処理もおそらく1タイルごとにしているのでしょう。現在のAI処理はそれほど大きなピクセル数の画像を扱っていないので、どうしても一回の処理のための画像の大きさに制限が出るはずです。でもこのことは画像の各部分の個々の収差を、それぞれ別々のパラメータで扱うことにつながります。四隅の全然別の収差がどれも改善され、恒星が真円になっていくのは、見事というしかありません。これをマニュアルでやろうとしたら、もしくは何かスクリプトを書いて個々のタイルにdeconvolutionをかけようとしたら、それこそものすごい手間になります。画面全体に同じ処理をする従来のdeconvolutionなどとは、原理が同じだけで、もう全く違う処理といってもいいかもしれません。
微恒星の補正について
もう一つ、極々小さい微恒星がさらにdeconvolutionされたらどうなるか考えてみましょう。
もともと時間で変動する1次元の波形の周波数解析によく用いられるFFTでは、サンプリング周波数の半分の周波数以下でしか解析できません。この半分の周波数をナイキスト周波数と言います。要するに2サンプル以上ないと波として認識できず、周波数が決まらないということです。ではこの2サンプルのみに存在するインパルス的な波を、無理矢理時間軸で縮めるような処理をしてみたらどうなるでしょうか?元々あった2サンプルで表現されていた波が2サンプル以下で表現され、より高周波成分が存在するようになります。
これと同じことを2次元の画像で考えます。上のFFTの時間が、画像のドットに置き換わり、縦と横で2次元になったと考えます。周波数と言っているのは画面の細かさになり、「空間周波数」という言葉に置き換わります。細かい模様ほど空間周波数が高く、荒い模様ほど空間周波数が低いと言ったりします。
1ドットのみの恒星は、本当に恒星なのか単なるノイズなのか区別のしようがありません。少なくとも各辺2ドット、すなわち4ドットあって初めて広がりのある恒星だと認識できます。この各辺2ドットがナイキスト周波数に相当します。超微恒星に対するdeconvolution処理はこの4ドットで表されている恒星を、4ドット以下で表現しようとすることになります。その結果、この画像はナイキスト周波数以上の高周波成分を含むことになります。
deconvotionはもともと点像であった恒星と、その点像が光学機器によって広がりを持った場合の差を測定し、その広がりを戻すような処理です。その広がり方がPSFという関数で表されます。広がりは理想的には口径で決まるような回折限界で表されますが、現実的にはさら収差などの影響があり広がります。BXTはあくまでdeconvolutionと言っているので、ここに変なAIでの処理はしていないのかもしれませんし、もしくはAIを利用したdeconvolution「相当」なのかもしれません。
BXT1からBXT2へのバージョンアップで、処理できる収差の種類が増えていて明確に何ができるのか言っているのは注目すべきことかと思います。単なるdeconvolutionなら、どの収差を補正できるのか明確には言えないはずです。でもAIで収差の補正の学習の際、どの収差か区別して学習したとしたら、deconvolution相当でどのような収差に対応したかが言えるのかと思います。そういった意味では、やはりBXTのdeconvolutionは後者の「相当」で、AIで置き換えられたものかと思った方が自然かもしれません。
BXTの利用目的
ここまで書いたことは多分に私自身の推測も入っているので、全く間違っているかもしれません。BXTの中身の実際はユーザーには全部はわからないでしょう。でも中身はどうあれ、実際の効果はもう革命的と言っていいほどのものです。
個人的には「個々のタイルでバラバラな収差をそれぞれのPSFで補正をして、画像の全面に渡って同等な真円に近い星像を結果として出しているところ」が、マニュアルでは絶対にやれそうもないところなのでイチオシです。もちろん今のBXTでは完璧な処理は難しいと思いますが、現在でも相当の精度で処理されていて、BXT1からBXT2のように、今後もさらなる進化で精度が上がることも期待できそうです。
では、このBXTが完璧ではないからと言って、科学的な目的では使えないというような批判は野暮というものでしょう。そもそもBXTは科学的に使うことは目的とはしていないはずです。
それでもBXTを科学的な側面で絶対使えないかというと、使い方次第だと思います。例えば、新星を探すという目的で、BXTでより分解能を増した上で何か見つかったとしましょう。それが本物かフェイクかの「判断」は他のツールも使うなどして今の段階では「人間が」すべきでしょう。判断した上で、偽物ということもあるでしょうし、もし本物だったとしたら、例え判断はBXTだけでできなかったとしても、そのきっかけにBXTが使われたいうことだけで、BXTの相当大きな科学的な貢献になるかと思います。
要するに「ツールをどう使うか」ということだと思います。今の天文研究でもAIが盛んに使われようとしていますが、主流は人間がやるにはあまりに手間がかかる大量のデータを大まかに振り分けるのを得意としているようです。ある程度振り分けたら、最終的な判断はAIに任せるようなことはせず、やはり人の目を入れているのが現実なのかと思います。AIは完璧ではないことはよくわかっているのだと思います。
まとめ
BXTはどんどんすごいことになっていますね。今後はBXT以外にもさらに優れたツールも出てくるでしょう。将来が楽しみでなりません。
何年か前にDenoise AIが出た時も否定する意見はありましたし、今回のBXT2も推測含みで否定するケースも少なからずあったようです。デジカメが出た時も否定した人が当時一定数いたことも聞いていますし、おそらく惑星撮影でWavelet変換を利用した時も同じように否定した人はいたのかと思います。新しいものが出た時の人の反応としてはごく自然なのかもしれませんが、私は個人的にはこのような新しいツールは大歓迎です。新しいものが出たときに否定だけするような人から、新しい革新的なツール作られるようなことなどほぼあり得ないでしょう。新しいツールはその時点では未熟でも、将来に発展する可能性が大きく、その可能性にかけるのが正しい方向かなと思っています。
実際私も、電視観望をしていて頭ごなしに否定されたことが何度がありました。でも今では電視観望は、眼視と撮影の間の手法として確立してきているはずです。当時否定された方達に、改めて今電視観望についてどう思っているのかお聞きしてみたかったりします(笑)。
BXT素晴らしいです!!!