ほしぞloveログ

天体観測始めました。

カテゴリ: 画像処理

一連のBXTによる再画像処理の4例目です。これまで以下のように3つの再処理例を記事にしてきました。





元々BXTで言われていた星雲部分の分解能、あまり話題になってなくて遥かに期待以上だった恒星の収差補正など、劇的な効果があります。

その一方、最近のM106の画像処理で分かったのは

  • BXTで銀河中心部の飽和が起きることがある。
  • BXTの恒星認識に引っかからない微恒星が小さくならなくて、恒星の明るさ位に対する大きさの逆転現象が起きる。
  • 光軸調整が不十分なことから起きる恒星の歪みはBXTで補正できなくてむしろ変な形を強調してしまうことがある。
  • BXTはリニア段階(ストレッチする前)で処理すべき(とBXTのマニュアルにも書いてあります)だが、LRGB合成はノンリニア(ストレッチしてから)処理すべきなので、リニアでできるRGB合成した後の段階ではBXTを使うことができるが、(額面通りに理解すると)LRGB合成した段階でBXTを使うことはできないということになる。
など、弊害や制限も少なからずあるということです。

M106も2度処理しているのである意味再処理なのですが、BXTを使っての「過去画像の」再処理という意味では、銀河を扱うのは今回初めてになります。これまで手をつけなかったことには実は明確な理由がありますが、そこらへんも記事に書いておきました。

そう言ったことも踏まえて、今回のBXTを使った処理では何が分かったのでしょうか?


子持ち銀河

ターゲットのM51: 子持ち銀河ですが、昨年4月に自宅でSCA260を使い、ASI294MM ProのRGB撮影で総露光時間4時間半で撮影したものです。

実はM51の再処理、かなり初期の頃に手掛けています。時期的は最初のBXTでの再処理の最初の記事の三日月星雲よりも前に試しています。銀河はBXTで分解能が上がることをかなり期待していました。でも改善がほとんど見られなかったのです。

BTX導入直後くらいに一度M51の再処理を試み、その後三日月星雲とかを処理してある程度技術的にも確立してきた後に、さらに再処理してみたM51です。
Image199_ABE_ABE_ABE_DBE_NTX_HT_CT_CT_NXT_CT2_cut1

同じ画角の元の画像を下に載せます。
64da897b_cut

再処理ではHαを載せていないので、派手さはないのは無視してください。2つを比較してみると、確かに少し分解能は上がったかもしれません。でも思ったほどの改善ではありませんし、むしろノイジーになるなど、悪くなっているところも見受けられます。なんでか色々考えたのですが、恐らくですが以前の処理はDeNoise AIを利用するなどかなり頑張っていて、すでにそこそこの解像度が出ていたということです。言い換えると、(今のところの結論ですが)いくらAIと言えど、画像に含まれていない情報を引き出すことは(例え処理エンジンは違っても)できないのではということです。逆に情報として含まれていないものを飛び抜けて出したとしたら、それは流石にフェイクということになります。

BTXとDeNoise AIを比べてみると、DeNoise AIの方が(天体に特化していないせいか)大きくパラメータを変えることができるので、おかしくなるように見えると思われがちですが、おかしくならない程度に適用する分には、BXTもDeNoise AIもそこまで差がないように思いました。DeNoise AIはノイズ除去と共にSharpen効果もあるのですが、BXTはノイズについてはいじることはないので、DeNoise AI = NoiseXTerminator + BlurXTerminatorという感じです。

それでは、DeNoise AIではなくBlurXTerminatorを使う利点はどこにあるのでしょうか?最も違うところは、恒星の扱いでしょう。DeNoise AIは恒星ありの画像は確実に恒星を劣化させるので、背景のみにしか適用できないと思っていいでしょう。その一方、BlurXTerminatorはAIと言っても流石にdeconvolutioinがベースなだけあります。星像を小さくする効果、歪みをかなりのレベルで補正してくれる効果は、BlurXTerminatorの独壇場です。恒星を分離した背景のみ、もしくは恒星をマスクした背景のみの構造出しならDeNosie AIでもよく、むしろノイズも同時に除去してくれるので時には便利ですが、やはり恒星をそのままに背景の処理をできるBXTとNXTの方が手間が少なく恒星のダメージも全然少ないため、天体写真の処理に関して言えばもうDeNoise AIを使うことはほとんどなくなるのかと思います。


L画像を追加してLRGBに

さて、上の結果を見るとこのままの状態でBXTを使ってもあまり旨味がありません。根本的なところでは、そもそもの元画像の解像度がをなんとかしない限り何をやってもそれほど結果は変わらないでしょう。

というわけで、RGBでの撮影だったものに、L画像を新たに撮影して、LRGB合成にしてみたいと思います。当時はまだ5枚用のフィルターホイールを使っていて、Lで撮影する準備もできていくてLRGBに挑戦する前でした。この後のまゆ星雲ではじめて8枚用のフィルターホイールを導入し、LRGB合成に挑戦しています。

撮影日はM106の撮影が終わった3月29日。この日は前半に月が出ているのでその間はナローでHα撮影です。月が沈む0時半頃からL画像の撮影に入ります。L画像だけで合計47枚、約4時間分を撮影することができました。

ポイントはASI294MM Proで普段とは違うbin1で撮影したことでしょうか。RGBの時もbin1で撮影していますが、これはM51本体が小さいために高解像度で撮影したいからです。bin2で2倍バローを用いた時と、bin1でバローなど無しで用いた時の比較は以前M104を撮影した時に議論しています。


解像度としてはどちらも差はあまりなかったが、バローをつける時にカメラを外すことで埃が入る可能性があるので、それならばbin1の方がマシというような結論でした。

以前RGBを撮影した時は1枚あたり10分露光でしたが、今回は5分露光なので、ダーク、フラット、フラットダークは全て撮り直しになります。


画像処理

画像処理は結構時間がかかってしまいました。問題はやはりLとRGBの合成です。前回のM106の撮影とその後の議論で、理屈上は何が正しいかはわかってきましたが、実際上は何が一番いいかはまだわかっていないので、今回も試行錯誤です。今回下記の6つの手順を試しました。Niwaさん蒼月城さんが指摘されているように、LinearでのLRGB合成で恒星の色がおかしくなる可能性があるのですが、今回は際立って明るい恒星がなかったので、LinearでのLRGB合成がダメかどうかきちんと判断することができなかったのが心残りです。
  1. RGBもL画像もLinear状態で、LRGB合成してからBXT
  2. RGBもL画像もLinear状態で、BXTをしてからLRGB合成
  3. RGBもL画像もLinear状態で、だいこもんさんがみつけたLinLRGBを使い、HSI変換のうちIとL画像を交換
  4. RGBとL画像とLinear状態でBXTまでしてから、フルストレッチしてNon Linear状態にしてからLRGB合成。
  5. RGBとL画像とLinear状態でBXTまでしてから、フルストレッチしてNon Linear状態にしてからLab変換して、aとbをconvolutionでStdDev=5でぼかしてからLab合成。
  6. RGBとL画像とLinear状態でBXTまでしてから、少しだけストレッチしてLinearに近いNon Linear状態にしてからLab変換して、aとbをconvolutionでStdDev=5でぼかしてからLab合成。
と試しました。赤は間違ったやり方、紫はまだ検証しきれていないやり方です。

ちなみに
  • BXTはリニアで使うべし。
  • LRGBはノンリニアで使うべし。
というルールがあるので、最も正しいと思われる順番は
  • WBPP -> ABE or DBE -> RGB合成 -> RGB画像にSPCC -> RGB画像、L画像それぞれにBXT -> ストレッチ -> LRGB合成
かと思われます。この手順は4番に相当します。RGBがノイジーな場合には5番もありでしょうか。

それぞれの場合にどうなったか、結果だけ書きます。赤はダメだったこと、青は良かったことです。
  1. 星雲の明るい部分に青飛びが見られた。(極端に明るい恒星はなかったので)恒星などの飛びは見られなかった。LRGB合成した後でBXTをかけるので、本来恒星が小さくなると期待したが、うまく小さくならず、変な形のものが残った
  2. 星雲の明るい部分に青飛びが見られた。(極端に明るい恒星はなかったので)恒星などの飛びは見られなかった。1に比べて恒星が明らかに小さくなった。
  3. 星雲の明るい部分に青飛びが見られた。(極端に明るい恒星はなかったので)恒星などの飛びは見られなかった。1に比べて恒星が明らかに小さくなった。ちなみに、LinLRGBはPixInsightに標準で組み込まれているものではなく、Hartmut Bornemann氏が作ったもので、ここにインストールの仕方の説明があります。
  4. 青飛びが少し改善した。1に比べて恒星が明らかに小さくなった。ただし最初にストレッチしすぎたせいか、解像度があまり出なかった。
  5. 青飛びが無くなった。1に比べて恒星が明らかに小さくなった。ただし最初にストレッチしすぎたせいか、解像度があまり出なかった。
  6. 青飛びが無くなった。1に比べて恒星が明らかに小さくなった。ストレッチしすぎてなかったせいか、一番解像度が出た

というわけで、正しいと思われる4番は悪くないですが、青飛びを完全に解決できなかったことと、ストレッチの度合いがRGBとLが別だとどこまでやっていいかの判断がつきにくく、結局6番を採用しました。でもストレッチをあまりかけずにLを合成することが正しい方法なのかどうか、いまだによくわかっていません。その一方、Lab変換でabをボカしたことが青飛びを完全に回避しているので、手段としては持っておいてもいいのかもしれません。


仕上げ

その後、Photoshopに渡して仕上げます。分解能を出すのにものすごく苦労しました。AstrtoBinでM51を検索するとわかりますが、形の豪華さの割に、大きさとしては小さい部類のM51の分解能を出すのはなかなか大変そうなのがわかります。物凄く分解能が出ている画像が何枚かあったので「おっ!」と思ったのですが、実際にはほとんどがHubble画像の再処理でした。1枚だけHubble以外でものすごい解像度のものがありましたが、望遠鏡の情報を見たら口径1メートルのものだったのでさすがに納得です。それよりもタカsiさんが最近出したM51の解像度が尋常でないです。口径17インチなので約43cm、これでAstroBinにあった口径1メートルの画像に勝るとも劣りません。43cmでここまででるのなら、自分の口径26cmでももう少し出てもおかしくないのかと思ってしまいます。今回私の拙い技術で出せたのはこれくらいです。クロップしてあります。

「M51:子持ち銀河」
masterLight_ABE_crop_BXT_BXT_Lab_conv5_Lab_CT_bg2_cut_tw

  • 撮影日: RGB: 2022年4月2日20時32分-4月3日3時50分、LとHa: 2023年3月29日20時17分-3月30日4時34分
  • 撮影場所: 富山県富山市自宅
  • 鏡筒: SHARP STAR製 SCA260(f1300mm)
  • フィルター: Baader RGB、Hα
  • 赤道儀: Celestron CGX-L
  • カメラ: ZWO ASI294MM Pro (-10℃)
  • ガイド:  f120mmガイド鏡 + ASI290MM、PHD2によるマルチスターガイドでディザリング
  • 撮影: NINA、Gain 240で露光時間10分がR: 7枚、G: 7枚、B: 10枚、Gain 240で露光時間5分がL: 47枚、Hα: 21枚の計27枚で総露光時間240+340 =580分 =9時間40分
  • Dark: Gain 240で露光時間10分が64枚、Gain 240で露光時間5分が128枚
  • Flat, Darkflat: Gain 240で露光時間 RGB: 0.03秒、L: 0.01秒、Hα: 0.2秒、 RGBがそれぞれ64枚、LとHαがそれぞれ128枚
  • 画像処理: PixInsight、Photoshop CC

元の大きさではこうなります。ただしbin1のままだと画素数が多すぎてブログにアップロードできないので、解像度を縦横半分のbin2相当にしてあります。

masterLight_ABE_crop_BXT_BXT_Lab_conv5_Lab_CT_bg2_lowreso

中心部を比較してみます。左が昨年のRGBだけのもの、右がL画像とHα画像を撮り増ししたものです。
comp

見比べると、明らかに今回のL画像が入った方が分解能が増していることがわかります。ただすでに画像処理がキツすぎる気もしています。今の機材でこれ以上の分解能を求めるにはどうしたらいいのでしょうか?

考えられる改良点は、
  • シーイングのいい時に撮影する。
  • Lがフィルター無しなので、UV/IRカットフィルターを入れて赤外のハロなどをなくす。
  • 振動が問題になる可能性があるので、三脚の足に防震シートなどを入れる。
  • 読み出しノイズに制限されているわけではなさそうなので、揺れ対策で1枚あたりの露光時間を3分ほどにしてみる。
  • Lの総露光時間をもっと増やす。
  • 暗い空で撮影する。
  • バローを入れて焦点距離を伸ばし、かつbin1で撮影する。
などでしょうか。小さな天体を撮影する際の今後の課題としたいと思います。


まとめ

BXTという観点からはあまり大したことは言えていません。分解能という観点からはDeNoise AIとそこまで能力は差がなさそうなことがわかりますが、恒星の収差補正などに利点があり、今後DeNoise AIを使うことはほぼなくなるでしょう。リニアなステージで使うことが正しそうで、RGBとLで別々に処理して合成しても問題なさそうなことがわかりました。BXTなしとありでは分解能に圧倒的に差が出て、今回もM51としてはそこそこの分解能になっていますが、まだ鏡筒の性能を引き出し切っているとは言い難いのかと思います。

RGBだけの場合と、Lがある場合では分解能にあからさまに差が出ることが改めてわかりました。でもなぜそこまで差が出るのか、自分自身本質的にはあまりよくわかっていません。単にLの露光時間が長いからなのか? R、G、Bとフィルターで光量が減るので、それに比べて全部の光子を拾うLが得なのか? それとも他に何か理由があるのか? 一度、R、G、B、Lを全て同じ時間撮影して、RGB合成したものからLを引き出して比較してみるのがいいのかもしれません。

とまあ色々議論したいことはありますが、庭撮りで着実に進歩はしてきていて、M51がここまで出たこと自身はある程度満足しています。でももう少し出るかと淡い期待を抱いていたことも事実です(笑)。


M106の再画像処理の記事を公開後、Twitter上でかなり熱い議論が交わされました。LRGB合成についてです。LRGBってもっと単純かと思っていたのですが、実際にはかなり複雑で、議論の過程でいろんなことがわかってきました。




M106での画像処理

詳しくは上の記事を見てもらえるといいのですが、今回の撮影ではRGBの露光時間がLに比べてかなり短くノイジーでした。そこで検証したのが、LRGBの際のLとRGBの比率をどうすればいいかという点です。 

M106の再画像処理のLRGB合成の過程で、Lの比率を上げると分解能は良くなっていく傾向でした。その一方、合成直後の彩度は落ちてしまいます。それでも色情報がなくなったわけではなく、たんにかくれているだけで、その後に彩度を上げていくと色が出てできます。ただし、色が出ると同時に短時間露光のせいかと思いますが、ノイジーになっていきました。

この時点でLとRGBの比率をどうすべきかわからなくなったので、LRGB合成の代わりにRGB画像をLab分解し、Lを入れ替えるという手段を取りました。この方法の利点は、RGBがノイジーな場合にabの分解能を落としてカラーノイズを減らすことが独立してできるということです。これは人間の目が色に対する分解能があまりないということを利用しています。

今回は上記のように試してみましたが、結局のところLRGBもLab変換も、まだ全然理解できていないことがよくわかりました。


Twitterでの議論

その後、TwitterでNIWAさんが反応してくれて、その後botchさん、だいこもんさんも交えてかなりの議論がなされました。

と言っても私は「わからない、わからない」と吠えていただけで、基本的にはNIWAがいろんな有用な情報を提供してくれたというのが実情なので、まずはNIWAさんに感謝です。botchさんはさすが長年この界隈にいる方なので、何が問題か本質的理解されているようでした。だいこもんさんはとてもわかりやすい説明をしてくれました。


PixInsight forumの解説、でもよくわからない

NIWAさんからの最初の有用な情報はPixInsight forumのJuanさんの発言(スレッドの#2,3,7)でした。



NIWAさんがこのページをもとに日本語でまとめてくれているので、英語が辛い場合はここを読むといいかと思います。



Juanさんの言う大事な主張は、
  • RGBはリニアでやっていいが、LRGBはノンリニアで処理しなければならない。
ということです。理由は
  • CIE L*a*b*とCIE L*c*h*はノンリニアカラースペースであり、それらがLRGB合成するために使われているから。
ということなのですが、最初この意味が全くわかりませんでした。そもそも私はLRGB合成はリニアのうちに処理してしまっていて、今のところ何か不具合のようなものは何ら感じていなかったからです。ここでいう「ノンリニア」というのはどうも「ストレッチ」というのと同義らしいので、このまま受け取ると
  • LRGB前に全てRもGもBも、当然Lもフルストレッチしきっていなければならない。
とも受け取れます。これはかなりきつい制限で、できるなら私は早いうちに合成してしまって、まとまった画像で色と解像度のバランスを見ながら処理したいのです。しかも、上記のように理由が挙げられていますが、この意味が全くよくわかりません。


ノンリニアとはLの輝度合わせ?

そもそも、PixInsightのLRGBCombinationが実際どんなアルゴリズムで実行されているのか、どこにも情報がありません。NIWAさんから
  • パラメータ調整無しの場合、LRGBCombinationとChannel CombinationのLabのL入れ替えは同じ。
  • RGBからのL画像とL画像を50%ずつブレンドしたLによるLRGBCombinationと、Weights 0.5のLRGBCombinationは同じ。
という説明があり、LRGB合成のなかみを推測する材料などが提供されたりしましたが、やはりリニアとかノンリニアに関することを含めてブラックボックスに近い状態です。

その後、Juanさんの発言の#11を読み込んでいくと、luminance transfer functionとchannel weightsが何を意味するのか、少しわかってきました。本来は適用するLと、適用されるRGB画像のLが同じ輝度とバックグラウンドというのを前提としているようです。

そこでbotchさんがTwitterで
  • 「ほとんどの場合で、使うRGB画像の質が相対的に悪いので、強い後処理を行うとアラがでます。そもそもLとabが一致していないので。RGB画像とそれをモノクロ化した画像を扱っているのではない点を考えてみてください。」という発言と
  • 「んー、LRGBって非可逆ですよね。」という意見を言ってくれたのですが、この時点でも私はまだほとんど理解できていませんでした。

私が返した
  • 「Lab変換して、L画像を置き換えてLab合成し、それをまたLab変換して元のL画像に置き換えたら、元の画像に戻ると思っていたのですが、何か間違ってますでしょうか?」に対して、
  • botchさんが「Lを置き換えて、もう一度Lを置き換えるだけでなら同じです。samさんの「それをまたLab変換」と言う部分はその前にRGBになどに変換している事になるので、そうなると元には戻りません」というところで、だんだん理解できて
  • 「違うLとLab合成した段階で、次にLab変換で分離したaとbには違うLの情報が混じり、最初のabとは違うものになるという理解でいいでしょうか?これが正しいなら確かに不可逆です。」と答えましたが、まだこのことがリニアな画像にLRGB合成を適用してはダメな理由には結びつきませんでした。
ここでだいこもさんがものすごくわかりやすい説明をしてくれました。
  • 「リニアのRGB画像から抽出したモノクロ画像をLc、Lフィルターで撮影したリニア画像をL、と呼ぶことにする。LcはRGBをストレッチして得られているのでノンリニア画像であるというのがまず前提です。それで、フィルターの性質上LcとLは輝度が違うので、そのままLRGB合成すると色が薄くなったりして良好な色が得られません。そこで例えばLinearFitをつかって輝度をそろえる必要がでますが、それをやってLcとLをそろえるとそれぞれノンリニアとリニアなので、うまく輝度がそろわない。そのような理由で、結局はLにノンリニアなストレッチを施して、Lcとヒストグラムを一致させてからLRGB合成すると上手く行くという話になるのだと思っています。」

素晴らしい説明で、これでやっとなぜJuanさんがノンリニアと言っているかが理解できてきました。要するに
  • LとLcの輝度を合わせることをノンリニアと言っているに過ぎないということです。
botchさんの最初の説明も本質的に同じことを言っているのだということがわかりました。だいこもさん、ありがとうございました。

でもこの考えも実際にはまだ不十分で、議論はさらに続き、下の「ノンリニアの本当の意味は?」でさらに明らかになります。


リニアでLRGB合成する時の問題点

だいこもんさんはさらに
  • 「ただし、画像依存はあってリニアなままLRGB合成しても破綻なく上手く行くこともありました。
と述べているのですが、こちらは私の経験とよく合います。最初から輝度がそこそこあっていればリニアなままでもいいかもですが、それは特殊なケースなのかと。

では、LRGB合成をリニアでやったら現実的には何が問題になるかというと、NIWAさんが
  • 「リニアでやると輝星に原色のノイズが出ることがよくあります。一番明るい部分が例えば階調なく原色で青く塗り潰されるような現象です。発生メカニズムは不明ですが『明るいLに対して対応できるRGBの組み合わせがなくて、破綻して原色になってしまった』と言うように見えます。」
と具体例を述べてくれています。さらにだいこもんさんがPIのメニューのSCRIPTS>Utilities>LinLRGBに今回の問題に対応するようなスクリプトを見つけてくれました。
  • 「単純にLRGB合成すると星が破綻する画像でも、これを使ったら破綻しませんでした」とのことなので、リニアで処理してもうまくいくのかもしれません。
  • 「スクリプトの中身見てみたら、カラー画像をHSI分解して、IをLと入れ替えているだけのようです。そうすると星の破綻も起きませんでした。」
とのことなので、リニアでもうまくLを入れ替えることができるのかもしれません。

リニアで色がおかしくなる事は私も前回のM106の処理中にありました。これはLがRGBより暗い部分で起こるようです。私の場合はLを少しストレッチしてRGBより明るくすると回避できました。

NIWAさんからもう一つJuanさんが発言されているスレッドの紹介がありました。ここでもあからさまにRGBはリニア、LRGBはノンリニアと言っています。



Juanさんが#5の最後で言っているのは、ここまで議論していた「入れ替えのLの輝度を合わせるストレッチをすることをノンリニアという」ということに近いかもしれません。でもまだ別の意味の気もします。

このことは次で明らかになったのかと思います。


ノンリニアの本当の意味は?

上の疑問に関して、
  • だいこもんさんの「LcはRGBをストレッチして得られているのでノンリニア画像であるというのがまず前提」という発言から、
  • NIWAさんが「つまりRGBからLを取り出した時点で、ストレッチされてしまうわけですね。」
と非常に重要な発言をされています。NIWAさんが調べたところによると、そのLを取り出すときにガンマ補正が入るようで、根拠は
だとのことです。要するに、
  • リニアなRGB画像だったとしても、そこからLを引き出しただけでノンリニアなL画像になってしまう
というのが本質のようであり、ある意味今回の結論になります。


まとめてみると

これまでの議論が正しいなら、
  1. RGB合成まではリニアなのでストレッチなどする必要はないが、LRGB合成はノンリニアになる。
  2. 具体的はRGBからLを引き出す際にノンリニア処理になるので、それ以降はリニアな処理はしない方がいいということが重要。
  3. 言い換えると、R、G、Bに関しては事前にストレッチしておく必要はない
  4. LRGB合成する際のL画像も事前に必ずしもストレッチしておく必要はないが、RGBから引き出したL画像と同じ輝度レベルにした方がいい。例えばL画像がリニアなままでは恒星の色が破綻することがある。
  5. LinLRGBなどでHSI分解してIとLを入れ替えると破綻しにくくなる(要検証)。
ということが、ある程度のまとめとして言えるのかと思います。

個人的に重要視したかった「ストレッチのタイミング」ですが、少なくとのR、G、Bに関してはストレッチは合成後でいいことがわかったので、最初に言っていた「LRGB合成前に全てRもGもBも、当然Lもフルストレッチしきっていなければならない」というかなりきつい制限は相当緩和されるという結論になったかと思います。

あと、この議論はあくまで原則論で、実際にどう運用するか、実際の画像処理に影響があるかどうかは程度問題の可能性も十分にあります。本当に正しいかどうかもさらなる検証が必要かと思います。天体写真に対する考え方は人それぞれで、科学の範囲と思ってストイックに考えている方もいれば、趣味として楽しんでいる方もいるのかと思います。たとえこの議論を読んだとしても何が正しいかは自分で判断すべきで、必要ならばこの議論も参考にしてみるというような考え方でいて頂ければありがたいです。

今回はLabのノンリニア性とか、まったく意識していなかったことがたくさんありました。まだまだ学ぶことが多いです。NIWAさんが参考ページを教えてくれました。

NIWAさんの情報初め、みなさんの議論におんぶに抱っこで、私は疑問を出しまくっているだけでした。本当に皆様に感謝です。こんなまとめをするのも越権かもしれませんが、私自身のメモという意味も兼ねていますので、どうかご容赦ください。でも、こうやってネット上で議論が進んで理解が深まるというのは、とても有意義で、とても楽しいことなのかと思います。皆様どうもありがとうございました。


先日、M106の記事をアップしましたが、記事を書き終えてから画像処理にアラがかなりあることに気づき、改めて再処理をしました。



でもこの再処理過程、苦労の連続で思ったより時間がかかりました。以下にまとめましたが、実際にはこんなにすんなりとはいっていなくて、いろんな回り道をしてある程度見通しがついたものだけを列挙しています。


問題点

問題点は以下の通りです。問題の大きさの順に、
  1. 周辺部のディスクの淡いところがノイジーで、解像度がイマイチです。改めて完成画像とマスターL画像と比べてみると、淡いところ、特に微恒星が相当欠落していることが判明しました。
  2. 明るい恒星がひしゃげていることに気づきました。
  3. 銀河中心が飛んでしまっていることに気づきました。
  4. 光条線が全然キリッとしていません。もしかしたら、微妙な画像の回転が影響しているのでしょうか?
などです。

色々調べていくと、ある程度原因と解決策が見えてきました。とりあえず簡単なところから順に行きます。


3. 銀河中心の飛び

問題3はBXTの弊害と結論づけました。

原因は、リニア画像の段階でBXTをかけていたため、銀河中心を強度に強調してしまい、その結果中心部のみ飛んでしまっていたようです。

解決策は、ストレッチ後の画像にBXTを適用することで解決しました。左がBXT->MaskedStrerchの順で、右がMaskedStrerch->BXTの順です。

comp

なんでこんなことに気づかなかったかというと、下がBXT適用後にPI上でSTFで見かけ上のオートストレッチをした画像なんですが、これだと周りも飽和気味で中心部だけ飛んでしまっているのは判別できないからです。
02_BXT_STF_Image05_ABE_DBE_SPCC_DBE_clone_Preview031

ちなみにオートストレッチしないとこんなふうです。左がBXTする前で、右がBXTをかけたあとです。これならすぐにわかるんですが、普段はSTFをかけた画像しか見ないので、気づくことができませんでした。
comp2


4. 光条線のシャープさ

問題4は撮影中にカメラが開店してしまった可能性があるので、L画像をプレートソルブにかけて調べてみました。プレートソルブは回転角まで出るので、ずれがあった場合に比較することでわかります。

L画像は1日目と4日目にのみ撮影しています。結果は、1日目のL画像がが90.50度で、4日目のL画像が86.13度と、なんと4度以上回転していました。1日目は29枚、4日目は51枚撮影していて、4日目の方が撮影枚数は多いので、少し惜しいですが1日目の分を丸々捨てるとことにしました。さらに4日目の人工衛星の軌跡がひどいものを5枚省いて、46枚でスタックしました。

まずは光条線の評価です。左が1日目と4日目を合わせた80枚、右が4日目だけの46枚です。そこまで大きくは変わりませんが、よく見ると確かに46枚だけの方が光条線は多少鋭くなっているように見えます。でも、正直もう少し鋭くなることを期待していました。-> (追記): 最後まで仕上げたら、明らかな違いになりました。1日目を捨てて正解でした。

comp_original

SCA260の分解能を少し疑ったのですが、例えばこの記事の画像を見る限り
  • 明るい星の光条線は十分に鋭く出ていていること、
  • 中途半端な明るさの星の光条線はそこまで鋭くないこと
などがわかるため、とりあえずは今回撮影した程度の鋭さが標準だと思うことにします。


もう少しL画像を評価

このL画像の枚数の違いですが、問題2に関しても議論することができそうなので、もう少し検証します。上の左右の画像をよく見比べると、微恒星に関してはやはり枚数の多い左側の方が明らかに暗い星まで写っていることがわかります。

ではこの画像にそれぞれBXTをかけてみます。同じく、左が1日目と4日目を合わせた80枚、右が4日目だけの46枚です。

comp_BXT


2つのことがわかります。
  1. 1日目に撮影した画像が加わると、明るい恒星の場合、中心部分が右に寄ってしまい、左にハロのようなものが残る結果になってしまいます。
  2. BXTによる恒星の縮小ですが、(微恒星がより出ていないはずの)右の方の画像の方が、左の画像と比べて、より多くの恒星に適用されていることがわかります。
まず1の原因ですが、元の1枚1枚の撮影画像を見てみると、明らかに星像が縦長になっていることに気づきました。1日目から4日目を全部比べてみると、日が変わっても出ていること、画像の中の位置によらず、常に縦が長くなるような方向に出ています。上の右の画像は問題ないように見えても所詮程度問題で、彩度を出すとかしていくと結局目立つようになります。撮影時の問題であることは明らかで、鏡筒の光軸ずれ、カメラ側のスケアリングのずれ、赤道儀での縦揺れなどが考えられます。前回撮影のM81の時の画像を見直してみても、こんな現象は出ていないようなので、おそらく1月から3月の間に光軸のずれが起こった可能性が高いのかと思います。ただし、波長によって出る出ないが違い、縦長がひどい順にG>L>R>B>>Aとなっているのは、まだ少し解せないところです。とりあえず今回はこの縦長星像、画像処理でなんとかごまかしますが、まずは次回鏡筒の光軸を見直すことにします。

次の2ですが、これは結構面白いです。BXTで恒星をdeconvolutionするためには、恒星をきちんと恒星として認識してもらわなくてはダメなのですが、左の画像は恒星であるのに恒星と認識されていないものが多いのです。何故かは元画像を見比べてみるとよくわかりました。 おそらくシンチレーションの違いで、1日目の画像は星像が大きく、4日目の画像は星像が明らかに小さいのです。動きの多い1日目の画像が混ざったことで点像とは見なされなくなってしまい、恒星と認識されなくなったのではと思われます。日が変わった場合の撮影では、このような違いにも気をつける必要があることがよくわかります。

いずれにせよ、BXTはかなり暗い最微恒星については恒星と認識するのは困難で、deconvolutionも適用できないようです。そうすると逆転現象が起きてしまうことも考えられ、より暗い星の方がそれより明るい星よりも(暗いけれど)大きくなってしまうなどの弊害も考えられます。

考えるべきは、この問題を許容するかどうかです。

この逆転現象とかはかなり拡大してみないとわからないこと、収差の補正や星雲部の分解出しや明るい恒星のシャープ化など現段階ではBXTを使う方のメリットがかなり大きいことから、今のところは私はこの問題を許容して、BXTを使う方向で進めたいと思います。シンチレーションの良い日を選ぶなどでもっとシャープに撮影できるならこの問題は緩和されるはずであること、将来はこういった問題もソフト的に解決される可能性があることなども含んでの判断です。


1. 淡い部分、特に微恒星が全然出ていない

問題1が1番の難問です。そもそも何故LRGB合成なのに、L画像相当の解像度が出ないのかという問題です。

これが撮影してスタックしたL画像: 
L

一方、これがRGB画像から引き出したL画像:
RGB_Lab_L

2枚を比較すると、当然撮影したL画像の方が圧倒的に情報量が多いわけです。

で、これが前回記事でアップした画像のPhotoshopに引き渡す前くらいの画像です。これが上の2枚のどちらに近かったというと、あからさまに後者のRGBから引き出したL画像の方に近いのです。
Image05_ABE_DBE_SPCC_DBE_BXT_MS

なんでこんなことが起きてしまったか、よく考えます。まず今回の撮影はRGBの撮影枚数がそれぞれ10枚程度と、L画像の(1日目、4日目合わせた)76枚と比べてかなり少ないです。こんな場合は、PixInsightでLRGB合成をする際に、LとRGBををどのような比率で合成するかをよく考えなくてはダメだったのです。

前回のLRGB合成でやったことは、L:R:G:Bを1:1:1:1の割合で混ぜたことでした。いや、これさえも本当に実現できているのかよく判りません。実施際にはLRGB合成の際に、L、R、G、Bそれぞれの画像を一度にチャンネルウェイトを0.25:0.25:0.25:0.25で合計1になるように合成しています。合計1にするのはサチるのを避けるためですが、どうもこのチャンネルウェイトは比だけを見るみたいで、絶対的な明るさは変わらないようです。例えば、R、G、Bを0.025:0.025:0.025として一桁落として合成しても、暗くなったりしません。絶対的な明るさは下のLightnessで決まるようです。1より小さくすると合成後が明るくなります。

さて、今回撮影したL画像のS/NはRGBに比べて遥かに高いので、Lの比率を大きくした方が得なはずです。試しにL:R:G:B=0.5:0.25:0.25:0.25で合成すると細部が表現され始め、L:R:G:B=1:0.25:0.25:0.25とするとさらに分解能が上がることがわかりました。その一方、Lの比率が大きくなるので、当然合成直後の画像は色がほとんど出ていなくて、かなりモノクロに近い画像になっていきます。それでも、その後に画像処理を進めていくと彩度を出すことはできるので、色情報がなくなっているわけではないようです。ただしRGBのS/Nが悪いので、色を出していくとどうしもノイジーになってしまうようです。

問題は数値の調整はできるものの、どのような比率でLとRGBを混ぜればいいのか結局のところよくわからないということです。そもそも、RGB画像をLab空間で考えると、単にLを取り替えることをすればいいはずです。それで彩度は保たれ、シャープさは良くなるはずなんです。

それならばいっそのこと、本当にRGBをLabに変換して、Lのみを入れ替えるという操作をしてやった方がいいのではと考えました。その結果が以下になります。
Image141_2

この方向は結構正しいようで、少なくとも細部は十分に出ています。また、Lab合成を使うという考えに基づくと、SPCCは合成前のRGBの時点でやった方がいいという考えに行き着きます。Lの明るさは調整可能なので、元のRGBとは彩度がずれる可能性があるからです。

さてこのLab分解とLab合成でLだけ変える方法、一見うまくいっているようですがまだ問題があって、試しに明るい恒星を見てやると以下のように緑や青が目立つようになってしまいます。

Image141_clone_Preview01_autostretch

これを回避するために色々試してみたのですが、どうやらL画像の明るさがab画像より暗い場合に起こるようです。そのためLab合成の時にL画像を少し明るくして合成します。すると以下のように、変な色が飛び出るようなこともなくなります。

Image230

一見モノクロに見えますが、色はきちんと隠れていて、試しにCurvesTransformationなどで彩度を上げると以下のように色が出てきます。
Image230_CTx5

ところが、ここでまた問題です。このように彩度を出していくと、再び緑飛びが出てきてしまうのです。
Image230_CTx5_cut

結局のところ、Lab合成でどうあがこうとしても、元の画像が悪い状態で彩度を出したら同じことの繰り返しで、変な色飛びはどうしても出てしまうということがやっと理解できました。

それで結局何をやったかというと、Lab合成する際に色情報であるaとbをぼかしてから合成することです。ここら辺はそーなのかーさんのこのページを参考にさせていただきました。


今回はConvolutionでStdDevを5として3回かけ、明るい恒星の色バランスの崩れがなくなるくらいまで、かなりぼかしました。少なくともこれで緑の形がおかしくなるようなことは避けることができました。ただし、ぼかしのバランスがaとbでどうしてもずれてしまい、恒星周りに均等にリング状の緑の輪がかかってしまったので、SCNRでProtction MethodをMinimumNeutralに、Amountを0.5にしてかけて緑を除きました。この時点でやっとBXTをかけます。結果は以下のようになりました。

Image249_a_conv5x3_bconv5x3_Lab_CTx3_SCNR_HT_SCNR_BXT

色情報を相当ぼかしたわけですが、人間の目の色情報の分解能はかなり弱いと指摘されていて、実際に色が出ていないように見えることはほとんどありません。

これでやっと満足です。この後はPhotoshopに引き渡しますが、Hαジェットを除き、もうすでにかなり仕上がり状態に近いです。


やっと仕上げまできたー!

Photoshopはもうノンリニア編集なので、好きなように仕上げます。主には彩度出しでしょうか。Hα合成も2度目なので、少し余裕が出てきました。結果が下の画像になります。まずはジェットがよく見えるように銀河をアップで。

Image249_a_conv5x3_bconv5x3_Lab_CTx3_SCNR_HT_SCNR_BXT_bg4_cut_s

次に全体像です。


「M106」
Image249_a_conv5x3_bconv5x3_Lab_CTx3_SCNR_HT_SCNR_BXT_bg4_cut

  • 撮影日: 2023年3月19日20時48分-20日4時9分、20日19時25分-23時19分、28日19時51分-29日4時38分、
  • 撮影場所: 富山県富山市自宅
  • 鏡筒: SHARP STAR製 SCA260(f1300mm)
  • フィルター: Baader RGBHα
  • 赤道儀: Celestron CGX-L
  • カメラ: ZWO ASI294MM Pro (-10℃)
  • ガイド:  f120mmガイド鏡 + ASI290MM、PHD2によるマルチスターガイドでディザリング
  • 撮影: NINA、Gain 120、露光時間5分、L:80枚、R:10枚、G:10枚、B:14枚、Hα:44枚の計158枚で総露光時間13時間10分
  • Dark: Gain 120、露光時間5分、温度-10℃、32枚
  • Flat, Darkflat: Gain120、露光時間 L:0.001秒、128枚、RGB:0.01秒、128枚、Hα:20秒、17枚(dark flatは32枚)
  • 画像処理: PixInsight、Photoshop CC


最初に挙げた問題点順に評価していくと、
  1. 銀河の淡いディスク部分の分解能はかなり出ました。
  2. 恒星のおかしな形もほぼ無くなっています。
  3. 銀河中心部の不自然さももうありません。
  4. 光条線も明らかに鋭くなりました。
と、こちらもほぼ満足です。

加えて、ジェットをもう少し派手にしてみました。自宅でここまで出れば上出来かと思います。というか、すでにちょっと炙り出し気味で、今の手持ちのHαだとこれくらいが限界かと思います。

最後は恒例のAnnotationです。
Image249_a_conv5x3_bconv5x3_Lab_CTx3_SCNR_HT_SCNR_BXT_bg2_cut_A

 

まとめ

時間はかかりましたが、再処理を突き詰めていってよかったです。あからさまに良くなったことと、じっくり付き合ったことで次回以降にどうすればいいか、かなり得るものがありました。自宅撮影の結果としては、ある程度情報を引き出しきれた気はしていて、かなり満足しています。

そもそも撮影に問題はありましたが、いつも完全ということは当然ないので、画像処理でのリカバリも含めていつもこれくらい時間をかけないとダメなんだということが、今回とても実感できました。実を言うと、特に恒星ですが、もう諦めようと何度思ったことか。

今回の方法は真っ当なものではないのは重々自覚していますが、撮影はいつもうまくいくとは限らなくて、せっかく時間をかけた画像をできるだけ使ってあげたいので、手持ちの手法としては持っておいてもいいかと思いました。というより、画像処理は一辺倒にはなかなかいかないもので、撮影画像に応じて臨機応変に対応することが大切なのではないかと、改めて感じました。


2022年の反省でも述べましたが、最近自分で考えることがあまりできてなかったので、今回の記事は久しぶりに計算です。内容は、撮影した画像にはどんなノイズが入っていて、それぞれどれくらいの割合になっているかを見積ってみたという話です。


動機

まずは動機です。1月に開田高原でM81を撮影した時に、M81本体に加えて背景のIFNが見えてきました。下は300秒露光を28枚撮影したL画像を強度にオートストレッチしています。
masterLight_BIN-2_4144x2822_EXPOSURE-300.00s_FILTER-L_mono

一方、2022年の5月にも自宅で同じM81を撮影しています。背景が埃とスカイノイズで淡いところがまってく出なかったので記事にしていないのですが、下は露光時間600秒を22枚撮影したL画像で、強度にオートストレッチして、かつできるだけ見やすいようにABEとDBEをかけてカブリを排除しています。開田高原の時よりもトータル露光時間は1.6倍ほど長く、被りを除去しても、淡い背景については上の画像には全く及びません。
masterLight_600_00s_FILTER_L_mono_integration_ABE_DBE3
明らかにスカイノイズの影響が大きいのですが、これを定量的に評価してみたくなったというものです。

もう一つの動機ですが、このブログでも電視観望について多くの記事を書いています。電視観望はリアルタイム性を求めることもあるので、露光時間を短くしてゲインを高く設定することが多いです。この設定が果たして理に適っているのかどうか、これも定量的に議論してみたいとずっと思っていました。


目的

これからする一連の議論の目的ですが、
  1. 画像に存在するどのノイズが支配的かを知ること。
  2. 信号がノイズと比較して、どの程度の割合で効くのかを示す。
  3. 電視観望で高いゲインが有利なことを示す。
を考えてたいと思っています。今回の記事はまずは1番です。こちらはスカイノイズをどう評価するかが鍵なのかと思っています。

2番は意外に難しそうです。信号である天体は恒星ならまだしも、広がっている天体の明るさの評価ってなかなか大変です。これは後回しにするかもしれません。

3番は長年の電視観望がなぜ短時間で天体を炙り出せるのかという疑問を、定量的に表す事ができたらと考えています。こちらは大体目処がついてきたので、近いうちに記事にするかと思います。


基本的なノイズ

天体画像撮影におけるノイズは5年くらい前にここで議論しています。SN比の式だけ抜き出してくると

S/N=ntSsigAnσ2+AntSsky+AntSdark+ntSsignS/N=ntSsigAnσ2+AntSsky+AntSdark+ntSsign
と書くことができます。ここで、
  • AA [pix] : 開口面積
  • nn : フレーム枚数
  • σσ [e-/pix] : 読み出しノイズ
  • tt [s] : 1フレームの積分(露光)時間
  • SskySsky  [e-/s/pix] : スカイバックグラウンド
  • SdarkSdark  [e-/s/pix] : 暗電流
  • SsigSsig  [e-/s] : 天体からの信号
となり、S/Nとしては何枚撮影したかのルートに比例する事がわかります。今回のノイズ源としては読み出しノイズ、スカイノイズ、ダークノイズを考えます。ショットノイズは天体などの信号があった場合に加わるノイズですが、今回は天体部分は無視し背景光のみを考えるため、天体からのショットノイズは無視することとします。

重要なことは、読み出しノイズは露光時間に関係なく出てくるために分母のルートの中にtがかかっていないことです。そのため、他のノイズは1枚あたりの露光時間を伸ばすとS/Nが上がりますが、読み出しノイズだけは1枚あたり露光時間を増やしてもS/Nが上がらないということを意識しておいた方がいいでしょう。その一方、撮影枚数を稼ぐことは全てのノイズに対してS/N改善につながり、読み出しノイズも含めて撮影枚数のルートでS/Nがよくなります。繰り返しになりますが、一枚あたりの露光時間を伸ばすのでは読み出しノイズだけは改善しないので、他のノイズに比べて効率が悪いということです。

分子にあたる天体信号の評価は意外に大変だったりするので、今回は分母のノイズのみを考えることにします。


パラメータ

上の式を元に、ここで考えるべきパラメータを固定しやすいもの順に書いておきます。
  1. カメラのゲイン(gain)
  2. 温度 (temperature)
  3. 1枚あたりの露光時間 (time)
  4. 空の明るさ
の4つで実際に撮影した画像の各種ノイズを推定できるはずです。少し詳しく書いておくと、
  • 1は撮影時のカメラの設定で決める値です。読み出しノイズ (read noise)を決定するパラメータです。
  • 2は撮影時のセンサーの温度で、冷却している場合はその冷却温度になります。単位は[℃]となります。この温度と次の露光時間からダークノイズを決定します。
  • 3は撮影時の画像1枚あたりの露光時間で、単位は秒 [s]。2の温度と共にダークノイズ (dark noise)を決定します。ダークノイズの単位は電荷/秒 [e/s]。これは[e/s/pixel]と書かれることもありますが、ここでは1ピクセルあたりのダークノイズを考えることにします。なお、ホットピクセルはダークノイズとは別と考え、今回は考慮しないこととします。ホットピクセルは一般的にはダーク補正で除去できる。
  • 4は撮影場所に大きく依存します。今回は実際に撮影した画像から明るさを測定することにします。単位は [ADU]で、ここからスカイノイズを推測します。ちなみに、3の露光時間も空の明るさに関係していて、長く撮影すれば明るく写り、スカイノイズも増えることになります。

実際のパラーメータですが、今回の記事ではまずはいつも使っている典型的な例で試しに見積もってみます。私はカメラは主にASI294MM Proを使っていて、最近の撮影ではほとんど以下の値を使っています。
  1. 120
  2. -10℃
  3. 300秒
これらの値と実際の画像から背景光を見積もり、各種ノイズを求めることにします。


読み出しノイズ

読み出しノイズはカメラのゲインから決まります。ZWOのASI294MM Proのページを見てみると、


真ん中の少し手前あたりにグラフがいくつか示してあります。各グラフの詳しい説明は、必要ならば以前の記事



をお読みください。上の記事でもあるように、カメラの各種特性はSharpCapを使うと自分で測定する事ができます。実測値はメーカーの値とかなり近いものが得られます。

グラフから読み出しノイズを読み取ります。gain 120の場合おおよそ

1.8 [e rms]

ということがわかります。rmsはroot mean sqareの意味で日本語だと実効値、時系列の波形の面積を積分したようなものになります。例えば片側振幅1のサイン波なら1/√2で約0.7になります。他のノイズも実効値と考えればいいはずなので、ここではrmsはあえて書かなくて

1.8 [e]

としていいでしょう。

読み出しノイズは、実際の測定では真っ暗にして最短露光時間で撮影したバイアスフレームのノイズの実測値に一致します。以前測定した結果があるので、興味のある方はこちらをご覧ください。



ダークノイズ

ダークノイズの元になる暗電流に関しては温度と1枚あたりの露光時間が決まってしまえば一意に決まってしまい、これもZWOのASI294MM Proのページから読み取ることができます。

私はこの値を実測したことはないのですが、そーなのかーさんなどがSV405CCですが同系のIMX294センサーで実測していて、メーカー値とほぼ同じような結果を得ています。

グラフから温度-10℃のところの値を読み取ると暗電流は

0.007 [e/s/pixel]

となるので、1枚あたりの露光時間300秒をかけると

2.1 [e/pix]

となります。/pixはピクセルあたりという意味なので、ここは略してしまって

2.1[e]

としてしまえばいいでしょう。単位[e]で考えた時に、暗電流のルートがダークノイズになるので、

sqrt(2.1)=1.5[e]

がダークノイズとなります。

(追記: 2023//4/19) ちょっと脱線ですが、だいこもんさんのブログを読んでいると、2019年末の記事に「dark currentはgain(dB)に依存しないのか?」という疑問が書かれています。答えだけ言うと、[e]で見ている限り横軸のゲインに依存しないというのが正しいです。もしダークカレント、もしくはダークノイズを[ADU]で見ると、元々あったノイズがアンプで増幅されると言うことなので、単純に考えて横軸のゲイン倍されたものになります。実際の画面でも横軸ゲインが高いほど多くのダークノイズが見られるでしょう。でも、コンバージョンファクターをかけて[ADU]から[e]に変換する際に、コンバージョンファクターが横軸のゲイン分の1に比例しているので、積はゲインによらずに一定になるということです。

ちなみに、ホットピクセルはダーク補正で取り除かれるべきもので、ここで議論しているダークノイズとは別物ということを補足しておきたいと思います。

(さらに追記:2023/10/15)
ダークファイルを撮影したので、実際のダークノイズを測定してみました。画像からのノイズの読み取り値は2.6 [ADU]でした。コンバージョンファクターで単位を[e]にすると、2.6x0.9 = 2.3 [e]。ここから読み出しノイズを引いてやると、2乗の差のルートであることにちゅいして、sqrt(2.3^2-1.8^2) = 1.5 [e] と見積り値に一致します。このように、見積もりと実測が、かなりの精度で一致することがわかります。


スカイノイズ

ここが今回の記事の最大のポイントです。読み出しノイズとダークノイズだけならグラフを使えばすぐに求まりますが、恐らくスカイノイズの評価が難しかったので、これまでほとんど実画像に対してノイズ源の評価がなされてこなかったのではないでしょうか?ここでは実画像の背景部の明るさからスカイノイズを推測することにします。

まず、明るさとノイズの関係ですが、ここではコンバージョンファクターを使います。コンバージョンファクターはカメラのデータとして載っています。例えばASI294MM Proでは先ほどのZWOのページにいくと縦軸「gain(e/ADC)」というところにあたります。コンバージョンファクターの詳しい説明は先ほど紹介した過去記事を読んでみてください。コンバージョンファクターは他に「ゲイン」とか「システムゲイン」などとも呼ばれたりするようです。名前はまあどうでもいいのですが、ここではこの値がどのようにして求められるかを理解すると、なぜスカイノイズに応用できるか理解してもらえるのかと思います。

コンバージョンファクターの求め方の証明は過去記事の最後に書いてあるので、そこに譲るとして、重要なことは、画像の明るさSとノイズNは次のような関係にあり、
(N[ADU])2=S[ADU]fc[e/ADU](N[ADU])2=S[ADU]fc[e/ADU]明るさとノイズの二つを結ぶのがコンバージョンファクターfcとなるということです。逆にいうと、このコンバージョンファクターを知っていれば、明るさからノイズの評価が共にADU単位で可能になります。

もっと具体的にいうと、コンバージョンファクターがわかっていると、スカイノイズが支配していると思われる背景部分の明るさを画像から読み取ることで、スカイノイズを直接計算できるということです。これは結構凄いことだと思いませんか?


実際のスカイノイズの見積もり

それでは実画像からスカイノイズを見積もってみましょう。最初に示した2枚のM81の画像のうち、上の開田高原で撮影した画像の元の1枚撮りのRAW画像を使ってみます。

上の画像は既にオートストレッチしてあるので明るく見えますが、ストレッチ前の実際のRAW画像はもっと暗く見えます。明るさ測定はPixInsight (PI)を使います。PIには画像を解析するツールが豊富で、今回はImageInspectionのうち「Statistics」を使います。まず画像の中の暗く背景と思われる部分(恒星なども含まれないように)をPreviewで選び、StatisticsでそのPreviewを選択します。その際注意することは、カメラのADCのbit深度に応じてStatisticsでの単位を正しく選ぶことです。今回使ったカメラはASI294MM Proなので14bitを選択します。輝度の値は「mean」を見ればいいでしょう。ここでは背景と思われる場所の明るさは約920 [ADU]と読み取ることができました。ついでに同じStatisticsツールのノイズの値avgDevをみると17.8 [ADU]と読み取ることが出来ました。

もっと簡単には、画像上でマウスを左クリックするとさまざまな値が出てきますので、その中のKの値を読み取っても構いません。ここでも同様に、単位を「Integer Renge」で手持ちのカメラに合わせて「14bit」などにすることに注意です。

いずれのツールを使っても、背景と思われる場所の明るさは約920[ADU]と読み取ることができました。

前節の式から、輝度をコンバージョンファクターで割ったものがノイズの2乗になることがわかります。gain120の時のコンバージョンファクターはグラフから読み取ると0.90程度となります。

これらのことから、背景に相当する部分のノイズは以下のように計算でき、

sqrt(920/0.90) = 32.0 [ADU] -> 28.8 [e]

となります。どうやら他の読み出しノイズやダークノイズより10倍程大きいことになります。あれ?でもこれだとちょっと大きすぎる気がします。しかも先ほどのStatisticsツールでの画面を直接見たノイズ17.8[ADU]をコンバージョンファクターを使って変換した

17.8 [ADU] x 0.90 [e/ADU] = 16.0 [e]

よりはるかに大きいです。これだと矛盾してしまうので何か見落としているようです。

計算をじっくり見直してみると、どうやら測定した輝度は「背景光」とオフセットの和になっているのに気づきました。撮影時のオフセットとして40を加えてありますが、この値に16をかけた640がADUで数えたオフセット量として加わっているはずです。実際のマスターバイアス画像を測定してみると、輝度として平均で約640 [ADU]のオフセットがあることがわかったので、これは撮影時に設定したものとぴったりです。この値をを920 [ADU]から引いて、280 [ADU]を背景光の貢献分とします。その背景光からのスカイノイズ成分は

sqrt(280/0.90) = 17.6 [ADU]


これを[ADU]から[e]に変換するためにさらにコンバージョンファクター[e/ADU]をかけて

17.6 [ADU] x 0.90 [e/ADU] = 15.9 [e]

となります。これだと画面からの実測値16.0[e]と少なくとも矛盾はしませんが、既に実測のトータルノイズにかなり近い値が出てしまっています。果たしてこれでいいのでしょうか?


各ノイズの貢献度合い

次にこれまで結果から、各ノイズの貢献度を見ていき、トータルノイズがどれくらいになるのかを計算します。

画像1枚あたりの背景に当たる部分の各ノイズの貢献度は多い順に
  1. スカイノイズ: 15.9[e]
  2. 読み出しノイズ: 1.8 [e]
  3. ダークノイズ: 1.5[e]
となります。Statisticsツールで測定した実際の1枚画像の背景のノイズの実測値は14.9[e]程度だったので、上の3つのノイズがランダムだとして2乗和のルートをとると、

sqrt(15.9^2+1.8^2+1.5^2) = 16.0 [e]

となり、実測の16.0[e]になる事がわかります。スカイノイズに比べてトータルノイズがほとんど増えていないので、読み出しノイズとダークノイズがほとんど影響していないじゃないかと思う方もいるかもしれません。ですが、互いに無相関なノイズは統計上は2乗和のルートになるので本当にこの程度しか貢献せず、実際にはスカイノイズが支配的な成分となっています。

ここまでの結果で、今回のスカイノイズ成分の推定は、定量的にも実画像からの測定結果とほぼ矛盾ないことがわかります。この評価は結構衝撃的で、暗いと思われた開田高原でさえスカイノイズが圧倒的だという事がわかります。


富山の明るい空

ちなみに、最初の2枚の画像のうち、下のものは自宅で撮影したM81です。富山の明るい北の空ということもあり、そのRAW画像のうちの最も暗い1枚(2022/5/31/22:48)でさえ、背景の明るさの読み取り値はなんと3200[ADU]程度にもなります。バイアス640を引くと2560[ADU]で、開田高原の背景光の値240に比べ約10倍明るく、ノイズは

sqrt(2560/0.90) = 53.3 [ADU] -> 48.0 [e]

となります。実際の画像からPIのStatisticsで読み取ったトータルノイズの値が53.4[ADU]->48.1[e]でした。

スカイノイズ48.0[e]に、読み出しノイズ1.8 [e] 、ダークノイズ1.5[e]を2乗和のルートで考えるとトータルノイズは

sqrt(45.0^2+1.8^2+1.5^2) = 48.1 [e]

となり、明るい画像でも背景光の輝度から推測したノイズをもとに計算したトータルノイズ値と、画面から実測したノイズ値が見事に一致します。

開田高原の暗い画像でさえスカイノイズが支配的でしたが、富山の明るい空ではスカイノイズが読み出しノイズ、ダークノイズに比べて遥かに支配的な状況になります。淡いところが出なかったことも納得の結果です。

うーん、でもこんなスカイノイズが大きい状況なら
  • もっと露光時間を短くして読み出しノイズを大きくしても影響ないはずだし、
  • 冷却温度ももっと上げてダークノイズが大きくなっても全然いいのでは
と思ってしまいます。でもそこはちょっと冷静になって考えます。早急な結論は禁物です。次回の記事では、そこらへんのパラメータをいじったらどうなるかなどに言及してみたいと思います。


まとめ

背景の明るさとコンバージョンファクターから、スカイノイズを見積もるという手法を考えてみました。実際の撮影画像のノイズ成分をなかなか個別に考えられなかったのは、スカイノイズの評価が難しいからだったのではないかと思います。

今回の手法は背景の明るさが支配的と思われる部分がある限り(天体写真のほとんどのケースは該当すると思われます)スカイノイズを見積もる事ができ、状況が一変するのではと思います。また手法も輝度を測るだけと簡単なので、応用範囲も広いかと思われます。

今回の手法を適用してみた結果、実際に遠征した開田高原のそこそこ暗い空で撮影した画像でさえもスカイノイズが支配的になる事がわかりました。もっと暗い状況を求めるべきなのか?それとも露光時間を短くしたり、温度を上げてしまってもいいのか?今後議論していきたいと思います。

とりあえず思いつくアイデアをばっとまとめてみましたが、もしかしたら何か大きな勘違いなどあるかもしれません。何か気づいたことがありましたらコメントなどいただけるとありがたいです。


この記事の続き



になります。露光時間と温度について、実際の撮影においてどの程度にすればいいか評価しています。









BlurXTerminator (BXT)を使った、過去画像の再処理の第3弾です。

第1弾は三日月星雲、第2弾は青い馬星雲でした。



三日月星雲は主に星雲本体、青い馬星雲は主に恒星の収差の改善でしたが、今回もすごいです。


トールの兜星雲

今回のターゲットは、NGC2359: トールの兜星雲です。昨年1月に撮影しているので、1年ちょっと前になります。


SCA260で撮影していますが、この時はまだ、今使っている大型赤道儀のCGX-Lではなくて、もう一つ小さいCGEM IIに重いSCA260を載せています。そのため、今見ると3分露光でも揺れの影響が残ってしまっているようで、恒星像が今一ピシッとしていません。これがBXTでどこまで改善できるかがまずはポイントになります。


再処理の途中で

処理をしている途中で、BXTで明るい恒星が崩れる現象が見られました。
Image07_ABE1_DBE_SPCC_BXTbad_NXT_stretch_cut

原因は、元画像の恒星自身が何か歪んでいたことで、よく見ると以前の画像でもその兆候が見られますが、気づいていませんでした。BXTでその歪みが助長されて気づくことができました。BXTといえど全然万能ではなく、元画像がダメな時はどうしようもないです。

ではその恒星の乱れはなんだったかというと、Integrationの時に起こっていて今回はrejectionにWinsorized Sgma Clippingを選んでいたことが原因でした。High側で恒星中心付近がいくつかrejectされていて、非連続になっていたというわけです。今まで気づいたことがなかったので、恒星がおかしい時はrejectionにちょっと気をつけた方がいいかもしれません。

masterLight_BIN-2_4144x2822_EXPOSURE-180.00s_FILTER-HA_mono_cut
明るい恒星の右側がrejectionで不連続になってしまっています。

結局、WBPPでのIntegrationのRejection algorithmをAutoにして解決したのですが、マニュアルでのPreprocdessing からのIntegrationとWBPPのIntegrationでは少し振る舞いが違うようです。マニュアル操作ではそもそもWinsorized Sgma Clippingでも(WBPPのときと同じパラメータにしても)rejectonの度合いはもっと緩やかで、問題が露呈しないレベルで抑えられます。WBPPのWinsorized Sgma Clippingのパラメータをどういじっても解決はできなかったので、諦めてAutoにしたらあっさり解決しました。

それ以外はBXT、NXT合わせて特に困ったことはありませんでした。しかも青い馬星雲の背景出しで相当な時間をかけたので、それがいい練習になっていて、今回の再処理は短時間で終わりました。


結果の比較

結果ですが、以前のものと比べます。まずは以前のもの。背景が暗いので、今回の再処理でもう少し淡いところが出るかもしれないという目論見です。あとはやはりSCA2660とCGEM IIの組み合わせでの揺れのせいでしょう、今見ると恒星の締まりがないのが気になります。
Image07_DBE_PCC_DBE_AS_HTx3_reducestar2_3_crop_mod

次に、今回再処理した結果の画像です。一皮どころか、二皮も三皮もむけた感じです。ちょっとやり過ぎの感もあります。
Image07_ABE1_DBE_SPCC_BXTbad_NXT_stretch2_cut

まず、兜本体の分解能が尋常でないです。これはひとえにBXTのおかげです。また、恒星の大きさですが、不自然でない程度にとどめておきましたが、かなりシャープに絞ることができています。微恒星もより暗いものまではっきりと出ています。

comp1

あと、背景も積極的に炙り出せました。前回の青い馬星雲で練習した成果になるでしょうか。ただ、背景についてはは自宅の明るい場所での撮影なのでこれくらいが限界です。すでにノイズの荒々しさが残ってしまっています。本当はもっと広い範囲で淡い青いところが広がっているはずなのですが、これ以上出したかったら、露光時間をさらに増やすか、もしくはもっと暗い所へ行くべきです。それでもまあ、今回の再処理でとりあえずここまで出たのでよしとしましょう。


まとめ

これまで何度か試したBlurXTerminatorですが、これは天体写真の解像度向上に革命を起こすくらいのツールと言えそうです。その一方、今のAI技術はまだまだ発展途中、もしくは遠い将来から見たら出始めのかなりあやふやな技術だと評価されるかもしれないので、疑似的な画像を作り上げる可能性も否定はできません。中身がほとんどブラックボックスという心配もあります。

そうは言ってもこの素晴らしいツール、手間の軽減、時間の短縮、星像のシャープさ、分解能の向上などメリットの方が遥かに遥かに大きいです。私個人としては新しいツールにかなり寛容なので、DeNoise AIの時もそうでしたが、趣味の範囲では見た目でよさそうなら積極的に使っていきたいと思っています。DeNoiseの時もフェイクになる可能性があるという批判はありましたが、大きな目で見れば今回のBXTはそのアップグレードと考えることもでき、順当な進化なのかと思います。

AIと画像処理は研究ベースでも親和性がとてもいいようなので、今後もアマチュア天文を対象にAIを利用したソフトがさらに出てくることと思います。個人的には拒否反応など示すことなく、冷静にいいところを見つけて、積極的に使っていきたいと思っています。

BlurXTerminator (BXT)を使った、過去画像の再処理の第二弾です。

第一弾は三日月星雲でした。


この時は主に背景の改善が特徴でしたが、今回は特に恒星の改善がすごいです。

BXTの収差補正能力

昨年ゴールデンウィークに、近くの牛岳においてFS-60CBにASI2400MC Proを取り付けて撮影した青い馬星雲。



当時出来上がった画像はASI2400MCの能力が思う存分発揮されたもので、背景の淡い部分が十分に表現され、遠目で見る限り素晴らしいものです。自分的にも十分満足していました。その一方、遠征先で撮影時に接眼側の延長筒の長さが手持ちで合わず、バックフォーカスがずれてしまい、四隅が思いっきり流れてしまいました。
mosaic1

これはさすがに救いようがないとずっと思っていたのですが、BXTはこのレベルでも大幅に改善してくれます。しかも今回使ったのは「Collect only」だけで、恒星を小さくしたりハロを押さえたりする機能は使っていません。
mosaic3

左上だけまだ少し流れていますが、他の8枚は完全に許容範囲です。これだけでもBXTの収差改善は圧倒的にすごいです。

しかもFS-60CBには、昔から指摘されている弱点の一つとして、撮影の際に赤と青とでピント位置がどうしてもずれてしまうという問題があります。現場において赤に合わせるか、青に合わせるか、もしくはその中間に合わせるかいつも大問題です。どうするかは場合によるのですが、今回は青い領域なので青にピントを合わせたために、全ての恒星周りに赤いハロが出てしまっています。ところが、これらの赤ハロも今回のBXTはものの見事に綺麗に除去してくれています。これはFS-60ユーザーにとっては大きな福音となるのではないでしょうか。


背景と仕上げ

この四隅で仕上げた画像です。今回はNXTも使いノイズをある程度除去しています。また、青い馬付近は意外に赤い領域もあり、前回はこの特徴をあまり出せなかったので、今回は少し強調してあります。

masterLight_180_00s_RGB_integration_ABE_SPCC_ABE3_cut

下はこれまでの画像ですが、今回のと比べると、やはり少し緑に寄っている気がしますし、赤が弱いと思います。
masterLight_180s_ABE_PCC_ASx4_SCNR_bg2_cut_s

これまでと、今回の再処理の2枚を比較して検討してみます。まず恒星ですが、明らかに分解能が増しています。特に首元にある青い明るい2つの星の下の方のものは、2つの星がかなり近接しています。前回のものでは明るすぎて分離できていませんでしたが、今回のでは余裕で分離しています。また、微恒星に関しても、拡大して比べるとよくわかりますが、より暗い星までかなりはっきりと写っています。恒星に関してはほとんどの処理がPixInsightで閉じるようになったのでずいぶん楽になったのと、その恩恵でしょうか仕上がりも大分良くなったと思います。BXTのおかげですね。

その一方、分子雲に関しては今回かなり苦労しました。前回のレベルまで全然持っていけないのです。前回の時点ですでにかなりのレベルで淡いところを引き出し切っていて、しかも最後のところをPhotoshopでやっていたので、肝心要の最淡の部分でどうやったか記録が全く残っていません。元々の素材が良かったので、画像処理はかなりシンプルだったはずです。色々試しても、ごくわずかのところでどうしても前回のレベルまで持っていけません。結局今回は第9バージョンまで処理し直して、やっとそこそこ満足しました。ポイントはマスクの使い方だったのですが、前回シンプルにやっていたのを、今回凝りすぎていたというのが原因でした。本当にシンプルに星マスクをうまく適用することで、背景の分子雲モクモクを再現することができました。

あと今回はNXTも使ったので、背景が全体的にノイジーだったのが改善されています。ある程度拡大して比較するとよくわかります。


まとめ

BXTを使い再処理すると、やはり有意に違いがわかるレベルで改善します。今回に関しては主に恒星です。その一方、今回実感できたことは、BXTは恒星や星雲部の分解能は向上させることはあっても、諧調に関してはほぼ何も貢献しないということです。前回の三日月星雲の再処理では背景の階調が改善しているように見えますが、あくまで副次的な効果で、基本的にはこれまで通り丁寧に階調のある部分をうまく拡大させることが必要となるということがよくわかりました。


BXTによる再処理シリーズの第三弾はトールの兜星雲です。
 

このページのトップヘ