ほしぞloveログ

天体観測始めました。

タグ:ダークノイズ

少し間が空いてしまいましたが、SWAgTiで撮影したパックマン星雲について補足です。


実は上の記事にする前に、画像処理ははるか以前に終わっていたんです。でもダーク補正の有り無しで比較した時のノイズの大きさが、理論と全然合わなくて、ずっと検証していました。その結果、かなり面白い考察となったので、その経緯を書いておきます。


ダーク補正ありなしの、数値的な比較

前回示した記事の繰り返しですが見た目ではダーク補正の有り無しは差がわからないようです。

comp_dark

ちなみに左がダーク補正無し、右がダーク補正ありですが、差はあったとしても本当にごくわずかでしょう。でも、ノイズを実際に測定しても同じくらいなのでしょうか?数値で見てみましょう。

ノイズの測定には、いつものようにPixInsightのImageInspectionのStatisticsを使います。各画像で「プレビュー」で
  1. 恒星が入っていない
  2. 背景に近い一番暗い部分
を、小さな領域でいいので選びます。そのプレビュー画面をStatistics上で選択肢、「stdDev」を見ます。stdDevなど、見たい情報の項目が出ていない場合は、スパナマークのアイコンを押して必要な項目を選択してください。その際、左上の単位がきちんとカメラと合っているか確認してください。今回の場合、カメラが14bitなので、「14bit [0,16383]」を選びます。単位は [ct] すなわち、ADCのカウントになります。コンバージョンファクターがわかっていれば、これを電荷の[e]に変換することができます。

上のエリアを選ぶ二つのことは、ノイズを正確に、安定に測定するために必要な条件です。

恒星が入っていると、恒星は飛び抜けて明るいので、バラツキ(=ノイズそのもの)が大きくなり、本来より大きなノイズの値が出てしまいます。

一番暗い部分を選ばないということは、何らかの天体などの明るさを測定していることになります。明るさがあると、そのバラツキからくるショットノイズが大きくなり、本来見たいダークノイズや読み出しノイズが隠れてしまう可能性があります。

これらのことは基本なのですが、その他にも注意すべきことがあります。今回の測定中にやらかした失敗も含めて、反省の意味も込めて今後の測定のために細かく書いておきます。


撮影と画像処理の条件

前の記事の繰り返しになりますが、一応撮影と画像処理の条件も書いておきます。

撮影はRedCat51+DBPでカメラはUranus-C Proで-10℃に冷やしています。架台はSWAgTi (SWAT350 V-SPEC PremiumにAZ-GTiを載せたもの)で、撮影ソフトはNINA。ガイドは無しで、NINAの特殊機能のガイド無しディザーで最初のうちだけ1枚に一回、途中から3枚に1回ディザリングしています。

ライトフレームは露光時間が1枚当たり3分で、カメラのゲインは100、オフセットは40で撮影しています。94枚画像処理に回したので、合計282分 = 4時間42分ぶんです。この間、NINAでも順調に動いて、特にSWAgTiの長時間撮影で縞ノイズを避けるために必須であるディザリングも問題なく動いていました。ライトフレームは10月9日に合計139枚撮影しそのうち94枚を使い、ダーク補正比較のためのダークフレームは後日77枚撮影して使いました。
がそう処理は、SWAgTiの簡単撮影の特徴を活かすために、バイアス補正、フラット補正などは無しです。解像度を上げたいので、drizzle x2を選択しておきます。

というような条件で、この記事ではダーク補正の有り無しを比較します。


測定失敗1

「Bayer配列画像はノイズ測定に用いるべきではない。」

  1. まず正しくスタックされているかどうか確かめるために、ライトフレームのRAW画像1枚のノイズを測定します。結果は12.5 [ct]でした。
  2. 次に、スタック後のダーク補正なしのマスターライト画像のノイズを測定します。予測だと94枚スタックした場合、ノイズが1/√94 = 0.103倍に近い値の12.5 x 0.103 = 1.29程度になるはずです。でも実際測定してみると、1.08 [ct]と予想よりかなり小さい値になってしまいます。
でもこれはすぐに気づきました。1枚画像はBayer配列のままなので、RGGBでそれぞれ平均値が違ってしまっているために、その平均値のばらつきでノイズが大きいと勘違いしてしまっているのです。解決策としては、Debayerしてからノイズを測ります。PIでDebayerして、再度Statisticで恒星のない部分のノイズを測定すると、6.44[ct]となり、これを0.103倍すると0.663[ct]となります。でもまだマスターライトファイルのノイズ1.08[ct]とはかけ離れています。


測定失敗2

「Drizzle画像はノイズ測定に用いるべきではない。」

Debayer同士で比べているのに、なぜスタック後のノイズが予想より大きすぎるのか?これも少し考えてすぐにわかりました。Drizzleした画像は微妙にずらして重ねたりして解像度を増やしているので、そもそもノイズがどうなっているのかよくわかりません。ここはDrizzle前の画像で評価すべきでしょう。Drizzleはオプションなので、Drizzle前のマスターファイルもきちんと保存されています。Drizzle前のマスターファイルのノイズを測定すると、0.620[ct]で、今度は予測値の0.663[ct]とほぼ一致しました。

これで少なくともダーク補正なしで1枚画像を94枚スタックした場合、ノイズが理論通りの1/√94 = 0.103倍に近い値になることがわかりました。


ダーク補正でノイズは数値でどうなるか

さて、いよいよ別途77枚のダークファイルで作ったマスターダークファイルを使って、各ライトフレームをダーク補正して、WBPPでスタックまでしてマスターライトファイルのノイズを測定します。今回は最初からDrizzleされていない方を選び、Preview機能で恒星がない部分のノイズを測定します。結果は、目で見て比べた時と同様に、ノイズの値はダーク補正がない時の0.620[ct]と比べて、ダーク補正ありだと0.625[ct]となり、ほとんど同じなのでものの見事に一致したと言っていいでしょう。

結論としては、ダーク補正ありでも無しでも、ノイズはほとんど変わらないというのが今回の結果から言えることです。

見た目でダーク有無でほとんど差がないのが、数値でも同様に、ほとんど差がないと示されたわけです。


本当にダーク補正の影響はないの?
.
.
.
え???
.
.
.
でも、

なんでここまで同じなの?ダーク補正の影響は全くないの?

ランダムノイズであるダークノイズを持つ画像で補正しているわけです。ランダムなので引こうが足そうが、補正すればノイズは必ず2乗和のルートで「増える」はずでは?何も増えないのは少なくともおかしいのでは?

とここから長い迷走が始まりました。


スカイノイズが大きいのでダーク補正のノイズ増加が無視できる?

パッと考えられることは、明るい環境で撮っているので、スカイノイズが大きすぎてダークノイズが無視でき、たとえダーク補正してもほとんど影響がないというシナリオです。でも今回はサイトロンのDBPを使っているので、光害はかなり軽減されているはずで、スカイショットのいずの影響は少ないはずです。もしかして、DBPを入れていてもスカイノイズが大きすぎるくらい明るい環境なのでしょうか?

こちらも定量的にきちんと比較してみましょう。そのためにはライトフレームの背景領域の全ノイズに比べて、ダークノイズがどれくらい貢献しているかを比較すればわかるはずです。簡単のために、1枚撮影したファイルで比較します。

まずはダークフレームのノイズですが、今回もきちんとDebayerすることを忘れずに、これまでと同様にPreviewで領域を選択して、Statisticで測定します。結果は5.30[ct]でした。ここにはダークノイズと、バイスノイズ(読み出しノイズ)が含まれていることに注意です。

一方、ライトフレームの1枚画像のノイズは上の測定でわかっていて、6.44[ct] 程度です。

5.30[ct] と6.44[ct] なので、少なくともダークノイズと読み出しノイズが含まれたものは、ライトフレームに含まれるスカイノイズ(+ダークノイズ+読み出しノイズ)に比べて、無視できるくらい小さなものではないことがわかります。

ライトフレームは94枚、ダークノイズは77枚でスタックするので、予測では
  1. ダーク補正無しだと6.44 x1/√94 = 6.44 x 0.103 = 0.663[ct]というノイズと、
  2. ダークフレームの5.30 x 1/√77= 5.30 x 0.114 = 0.60のノイズが2乗和のルートで加わるため、
  3. sqrt(0.663^2 + 0.60^2) = 0.90[ct]
程度になるはずです。でも実測は0.625[ct]と、予想の0.90[ct]1.5分の1くらいで、これは有意に小さすぎます。この矛盾を見つけるのに、相当な時間がかかってしまいました。


なぜダークノイズは増加しない?

1週間以上考えていたでしょうか。答えがわかったあとは、まあ当たり前のことでしたが、これまであまり考えたことはありませんでした。いや、概念としてはおそらく考えていましたが、どう適用するとか、数値で確かめるというようなことは全くしてきませんでした。他に同じようなことを考えた例はないかと思って検索しましたが、定量的な評価はおろか、それに関する記述も見つけることができませんでした。

さてここでクイズです。

今回、なぜダーク補正しても
背景のノイズが増えなかったのでしょうか?

一見不思議ですが、きちんと説明することができます。答えは下の方に書いていますので、自分で考えてみたい方は、ここでスクロールするのを一旦止めてください。答えに必要な条件は上の「撮影と画像処理の条件」のところに全て書いてあります。

答えがまとまった、もしくは答えを見てみたい場合は、下に進んでください。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
と、答えに行く前に、一つヒントを出します。ヒントはディザリングです。これで答えに辿り着きますでしょうか?

答えがまとまったら、さらにスクロールしてみてください。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

はい、もうわかりましたでしょうか?答えは「マスターダークファイルも、ディザリングでノイズが散らされる」からですよね。

まだ、ちょっと言葉足らずかもしれません。そもそも今回はPIのWBPP処理に則っているので、先にマスターダークファイルを作って、それを各1枚1枚のライトフレームにおいてそれぞれダーク補正しています。マスターダークファイルを使っての補正の効果は、個々のライトフレームで補正してから重ね合わせても、ライトフレームを(位置がズレることなく)重ね合わせてからマスターダークファイルで補正しても、数学的には同じことです。証明はここ


「ダーク補正の定量的な扱い」あたりから読んでもらえるとわかるかと思います。

ところが実際の撮影では、それぞれのライトフレームは、ディザーをしてライトフレーム時に画面を少し散らして撮影しているので、画像処理の際に「星の位置が合うように」重ね合わると、当然背景はディザーの分だけ散らして重ね合わせられます。個々に補正したマスターダークファイルが、全く位置をずらさずに重ね合わせられるなら、先ほどいった数学的な証明の通り、マスターダークファイルのノイズが2乗和のルートで増えます。ところが、マスターダークファイルがディザーの効果でずれて重ねあってしまうと、個々のライトフレームで補正されたマスターダークファイルのノイズはコヒーレントに重なることはなく、ランダムに重なってしまうことになります。そのため、個々のライトフレームに対して、マスターダークファイル1枚(元のダークノイズの)のノイズ分増加したものが、ライトフレームの枚数のルート分軽減されてしまうのと同じことにになるので、今回の場合さらに1/√94 = 0.103倍となり、ほぼ無視できてしまうというわけです。

実際に、マスターダークファイルで補正した個々のライトフレームを、星の位置合わせをせずに、重ねただけの画像を示します。
integration

小さな揺れが見えることからディザーはされているのはわかりますが、7時間にわたる長時間露光なので、一方向にドリフトしていっている様子も伺えます。この画像の恒星の無いところの背景ノイズを測定してみると、0.938 [ct]となり、見事に予測値の0.90[ct]とかなり近い値で一致します。


結論

というわけで、「ディザーをしているために、マスターダークファイルを使ったダーク補正では、マスターダークファイルの相関のある部分が散らされすために、補正後のダークノイズが増えることはない」というのが今回の結論です。

また、そもそものダーク補正の目的であるホットピクセルですが、
  • Uranus-C ProはDPS (Dead Pixel Suppression)機能のために元々ホットピクセルが緩和されていること
  • PixInsightでCosmeticCorrectionでホット/クールピクセルが緩和されること
と2つの効果で、実際の画像比較でもダーク補正の本来のホットピクセルの緩和の効果がほとんどわからないのかと思われます。


少し見直し

以前の解析で、ライトフレームに対して、ダークフレームは何枚くらい撮影したらいいかを検討していますが、


ディザリングの効果を考慮考えるとこのダークフレームの必要枚数の条件は遥かに緩和されることになります。これを数学的にどう表せばいいのか?ディザリングでどれくらい散らされるかに依るので、統計的な表現が必要になりそうです。かなり複雑になりそうなので、ここではこれ以上の計算はちょっと諦めます。

ただし、このディザリングがあればダークフレームの枚数を減らすことができるというのも、ある程度の制限があるはずで、例えばライトフレームの背景のノイズが、ダークノイズが支配的な場合は、少ない枚数のダークフレームで補正すると、今回考えたようなディザリングによる散らしの効果はあまり聞かなくなるはずです。

極端な例を示します。非常に暗い空で超長時間露光などして、ライトフレームがダークノイズに比べて読み出しノイズも背景のスカイノイズも無視できるとします。ダークフレームは1枚だけ撮影し、それでライトフレームを補正します。個々のライトフレームのダークノイズは√2~1.4倍になります。ライトフレームをスタックする際に、ディザリング効果でどう散らそうが、ダーク補正によって加えられたダークノイズはスタック枚数のルートで軽減されるだけで、ライトフレームに元々あったダークノイズのスタックによる軽減と同じ効果なので、結局のところダーク補正をした場合はダーク補正しない場合に比べて1.4倍程度ノイジーになります。

もしディザーしなかった場合は、ダーク補正によって加えられたダークノイズは、スタックによって軽減されないので、スタック枚数のルート倍大きくまります。例えば、100枚ライトフレームをスタックすると、ダーク補正しない場合に比べて10倍ダークノイズが大きくなります。

極端な場合の比較ですが、ディザーの有り無しで、1.4倍の悪化から10倍の悪化までと、非常に大きな差が出ます。必要ダークフレームの枚数に対して、ディザリングの効果が相当影響すると思っていいでしょう。

ネットを検索すると、ディザリングでホットピクセルが散らされて軽減されるというような記述はたくさん見つかりましたが、調べた限り、ディザリングがマスターダークフレームを散らすので、ダークフレームの枚数を減らすことができるというような記述を見つけることはできませんでした。定性的に考えたら至極当たり前だと直感的にもわかるのですが、定量的な話はおろか、定性的な話もこれまでほとんど言及されてこなかったようです。今後興味があるのは、これをどう定量的に示すかです。言い換えると、ディザリングの効果をどう数学的に記述するかです。また機会があれば考えてみたいと思います。


ダークノイズについて

天文関連の画像処理のページを検索すると、所々に、ダークノイズ = ホットピクセルとか、ダークノイズにはホットピクセルやクールピクセルのような固定ノイズと、ランダムなノイズがあるというような表現を見かけます。私も後者のような表現を使ってきました。でも、ダークノイズというのは本来はダークカレント(暗電流)の揺らぎが起因のノイズのはずです。ダークカレントも、ホットピクセルも、温度の増加とともに増えてくるものですが、ホットピクセル自身がダークノイズというのは、やはり少し強引な気がします。

「ダークフレームを撮影すると、(ランダムに振る舞う) ダークノイズとともに、ホットピクセルも顕著に見えるようになり、そのダークフレームを使うことで固定ノイズであるホットピクセルをライトフレームから除去することができるが、ダークノイズはランダムに揺らぐ(インコヒーレントな、コヒーレントでない、相関の無い) 「ノイズ、揺らぎ」なので、引くことはできずに、必ず2乗和のルートで増える。」

というのがある程度正確な記述かと思います。ホットピクセルはダークカレント起因ではないはずなので、やはりダークノイズとははっきり区別した方がいいのではないでしょうか?


まとめと日記

ここしばらく悩んでいたことが、やっと解決して、ブログ記事にまでまとめることができました。つうじょうに撮影していて、ディザリングもしていて、ダーク補正されている方は、ダークフレームの枚数がより少なくてもいいという話なので、これまで特に問題がないようならば、今回の話は特に気にする必要はないです。でもこういった解析はやはりしておくべきだと思います。しかも、できるだけ定量的に評価できるようにというのが重要だと思います。こういった積み重ねが、どんなノイズが支配的で、どこを改善すればより良くなるかなどに、効率的につながっていくのかと思います。ディザリングの数学的な表現をどうすればいいのか、今後の課題です。

ついでに日記です。今日11月8日(金)から小海において星フェスが開催されています。例年だと諸手を挙げて参加なのですが、今年は体調があまり良くなく、全然予定が立っていませんでした。ここしばらく調子は良かったのですが、先週の長野の泊まりで少し疲れてしまって、今週はあまり調子が良くありません。明日の朝起きて、調子が良ければあまり長居しない程度で行こうと思っています。天気はすごくいいみたいなので、できれば行きたいのですが...。


彗星の画像処理が残っていますが、彗星前にSWAgTiで NINAを使って長時間撮影したパックマン星雲が仕上がったので、先に記事にしておきます。




撮影

詳しくは前回記事を見て頂ければいいのですが、撮影時間は7時間に及びました。朝起きて画像を確認してみたら途中から雲が出たようで、使えたのは94枚で、1枚当たり3分露光なので合計282分 = 4時間42分です。この間、NINAでも順調に動いて、特にSWAgTiの長時間撮影で縞ノイズを避けるために必須であるディザリングも問題なく動いていました。SharpCapではこれまで最長でも2時間程度しか試していなかったので、NINAという新しい撮影ソフトの選択肢が増えたことに加えて、さらに長時間露光できたということは大きな前進です。

パックマン星雲は電視観望で見たことはあっても撮影は初めてで、私的には新規天体なので、またギャラリーページに載せるネタが増えることになります。




冷却時のダーク補正の有り無し

SWAgTiシリーズでは以前、冷却を(忘れて)してなくて、センサー温度が高い状態で撮影した場合の、ダーク補正有り無しの比較をしましたが、結果は大きな違いが出ました。


さすがに夏場で温度が高いと、ホットピクセルの影響が大きくなり、何も補正しないと相当ノイジーになります。冷却がなくても、ダーク補正することで、なんとか見える画像になるということがわかりました。

その一方、冷却さえしてしまえば、たとえダーク補正なしで十分見える画像になるということも示しました。


その時の天リフさんのピックアップ配信で、冷却した場合の、ダーク補正した場合としない場合でどう違いが出るかを知りたいとか言われていたので、今回その比較をしてみます。


SWAgTiでのダーク補正の効果

セットアップですが、鏡筒がRedCat51で、カメラはUranus-C Proを−10℃に冷却しています。1枚あたりの露光時間は180秒で、カメラのゲインは本当はHCGがオンになる220にすべきを間違えて100としてしまいました。NINAでのカメラのオフセット設定は40です。ライトフレームは10月9日に合計139枚撮影しそのうち94枚を使い、ダーク補正比較のためのダークフレームは後日77枚撮影して使いました。

SWAgTiの簡単撮影の特徴を活かすために、バイアス補正、フラット補正などは無しで処理します。解像度を上げたいので、drizzle x2を選択しておきます。今回はダーク補正の有り無しだけを比較します。

PixInsightのWBPPで出来上がったdrizzle x2のマスターライトファイル画像を、ダーク補正有り無しで比較してみます。

comp_dark
左がダーク補正無し、右がダーク補正ありです。ダーク補正なしの方がクールピクセルっぽい落ち込みが少しきついくらいでしょうか。でも見ている限りダーク補正の有り無しはわずかの差のようで、細かくこだわらなければ、ほとんど問題になることはないでしょう。これ以降はSWAgTiの簡単撮影の特徴をキープするために、少なくともUranus-C Proを冷却した場合ではダーク無しで進めることにします。


結果

画像処理は至ってシンプルです。今回のセットアップでは周辺減光もほとんどないのですが、念の為ABEの2次だけをかけました。その後SPCCをかけましたが、使った光害防止フィルターがDBPとそこそこきついので、色の諧調がどうしても乏しくなってしまいます。そのため、Photoshopの段階で色バランス、特に青系を少し強調しています。また、WBPPの際にDrizzleを2倍で適用しているので、BXTを使い相乗で解像度の向上効果を狙っています。

画像処理としてはこれくらいでしょうか。PixInsightでの処理もPhotoshopの過程も、私的にはかなりシンプルです。SWAgTiのシンプル撮影には、あまり時間をかけないシンプルな画像処理がいいのかと思います。

結果です。

「NGC281: パックマン星雲」
180_00s_RGB_drizzle_2x_ABE2_SPCC_BXT02_0_10_MS_HT_2_5s
  • 撮影日: 2024年10月9日21時3分-10日2時48分
  • 撮影場所: 富山県富山市自宅
  • 鏡筒: William Optics RedCat51(f250mm、F4.9)
  • フィルター: サイトロンDBP
  • 赤道儀: SWAgTi (SWAT-350V-spec Premium + AZ-GTi)
  • カメラ: PlayerOne Uranus-C Pro (-10℃)
  • ガイド:  なし
  • 撮影: NINA、bin1、Gain 100、露光時間3分 x 94枚 = 282分 = 4時間42分
  • Dark, Flat: なし
  • 画像処理: PixInsight、Photoshop CC

さすがSWAgTiのお気楽撮影、画像の説明も情報が少なくていいので楽です(笑)。出来上がった画像を見る限り、星雲本体も十分な解像度も出ていますし、微恒星まで綺麗に出ていて、そこそこ満足です。

恒例のアノテーションです。ちょっと斜めになってしまいました。カメラの回転角の調整を忘れてしまっていたようです。
180_00s_RGB_drizzle_2x_ABE2_SPCC_BXT02_0_10_MS_HT_2_5s_An


まとめ

これまでSWAgTiでいろいろ工夫してきたのが、やっと実を結んできています。ポタ赤クラスなので普通の赤道儀よりもコンパクトで軽いです。それでいてプレートソルブなども含めて今時の機能は全て使え、かつ追尾精度は大型赤道儀にも負けないくらいいいので、ガイドも必要ないです。パッと出して、実際の撮影時の設置も、撮影中の手間もかなり楽です。カメラを選べばダーク撮影もフラット撮影もしなくてもいいので、画像処理も短時間で済み、それでこれだけの画像が得られるなら、かなり楽しいと言わざるを得ません。彗星の時もそうだったのですが、カメラレンズや軽量鏡筒の場合は、ここ最近はSWAgTi一択になっています。

あと、今回試したダーク補正有り無しの比較を、定量的に数値で示そうと思っています。かなり面白い結果になりそうなので、またまとまったら記事にします。


黒天リフさんがX上でバイアス補正について迷っている投稿がありました。


詳しいことはリンク先を読んでもらうとして、ここで上がっている疑問は大きく2つに収束して、
  1. 元々暗いダークファイルからマスターバイアスを引く際に、引きすぎになって0以下の値になり、真っ暗なピクセルが多数出てくるのではないか?
  2. ダークファイルにバイアスが含まれているなら、ライトファイルをダーク補正するだけで良さそうだが、本当にそれでいのか?それではいったいバイアス補正とはなんなのか?
というものかと思います。フラットおよび、フラットダークについては今回の範疇でないので、ここでは考えないことにします。

今回の記事は、これら2つの疑問が動機です。ちょうど今やっているノイズ解析でバイアスを考えるいい機会となりました。前回の記事のダーク補正をもう少し発展させ、バイアス補正を通して、ライトファイルを補正する場合まで考えます。



バイアス補正とは

ここではバイアスファイルとは、センサーに光が入らないようにして、露光時間を設定できる最小の値にして撮影した画像のこととします。ある意味実現しうる最小の輝度値を記録したファイルとなります。

ただし、実際のバイアスファイルの「輝度値」は注意が必要です。なぜなら、撮影時にSharpCapなどのアプリ側で設定できるオフセットを含んだ輝度値になるので、下駄をはかされた状態で記録されます。例えばASI294MM Proなら、設定したオフセットの値の16倍の値がADCの値となって輝度としてカウントされます。私はSharpCapでもNINAでも、大抵オフセット値を40として撮影いるので、撮影画像には60x16=640の値がオフセットとして記録されています。

「バイアス」の元の意味では、この定数のオフセットの意味が強いですね。

バイアスファイルの輝度値にも当然ばらつきがあります。このばらつきは「読み出しノイズ」と一致すると考えて差し支えないでしょう。極端に短い露光時間で撮影するためにセンサーからの信号は何も出てこないので、読み出し回路などから来る「読み出しノイズ」が支配的になります。また、極端に短い露光時間で撮影するということで、(時間に比例するダークカレント起因の)ダークノイズは無視できます。

バイアス補正によくある誤解で「バイアス補正はオフセットのみを引く」と捉えられがちですが、これはノイズのことを何も考えていないので、十分ではありません。オフセットに加えて、ノイズというばらつきを引く(実際には2乗和で足されるのですが)ことになるので、ばらつきの幅によっては補正した後の値が0以下になる可能性があります。特に極端に暗いファイルを補正する場合、例えばダークフレームからバイアスを引いた場合などです。最初の疑問そのものですね。

バイアスファイルを重ねてマスターバイアスを作ると、そこに含まれる「読み出しノイズ」も小さくなります。ばらつきの幅が小さくなるというイメージです。それでもマスターバイアスファイルにはばらつきが残っています。マスターバイアスに含まれる読み出しノイズはランダムで無相関なので、当然のことながら、バイアス補正をする際にはその読み出しノイズを「増やして」しまいます。一方オフセットは実際に引かれるので、平均輝度は下がります。元々暗いファイルなら、平均輝度は0付近になってしまうでしょう。そこにノイズが増えることになるので、補正後に輝度を0以下にする可能性が残ります。

注意: 今ここで、ノイズが増えるなら0以下にならないのではと思った方いませんか?もしそう思われたかがいるなら、まだノイズのイメージが正しくないです。ノイズが増えるということは、ばらつきが増えるということなので、平均輝度からのズレがより大きくなり、0以下になるピクセルが出てくる可能性がより多くなります。ヒストグラムで表すと、山の幅が大きくなるイメージです。

ちなみに、バイアスファイルの撮影は短時間で済むので、ライトファイルに比べて十分多数枚を容易に撮影することができ、読み出しノイズの増加をほとんど影響がない範囲に抑えることができるでしょう。例えば私の場合、バイアスファイルは512枚とか、1024枚撮影します。ライトファイルに比べてバイアスフレームの枚数が例えば10倍ならば、補正による読み出しノイズの増加は2乗和のルートで効くので、\(\sqrt{1^2+0.1^2} = \sqrt{1.01} \sim 1.005\)倍とほとんど無視できます。3倍の枚数のバイアスファイルでも\(\sqrt{1^2+(1/3)^2} = \sqrt{1.11} \sim 1.05\)倍と、これでも十分無視できます。ライトファイルと同枚数のバイアスファイルだと読み出しノイズは1.41倍となるので、無視できなくなってきます。

でもバイアス補正で読み出しノイズを増やしてしまうのならば、そもそもバイアスファイルを引くことのメリットってなんなのでしょうか?単純には、もし複数枚のバイアスファイルに(ホットピクセルやアンプグローのような固定ノイズ的な)コヒーレントな成分があるならば、それをさっ引くことができるのですが、そもそも本当にコヒーレントな成分なんてあるのでしょうか?

バイアスファイルはよく横縞や縦縞になって見えますが、これらがコヒーレントで決まったパターンになるならば、バイアス補正は有効です。逆にこれらの縞がランダムでどこに現れるかわからないならば、そもそもバイアス補正の意味なんて無くなってしまいます。

さらに、撮影時にディザーを適用すれば、恒星による位置合わせでバイアスのコヒーレントの部分は散らされる可能性もあります。それでも事前に取り除いて、パターンを小さくしておいた方が有利という考えでバイアス補正をしているのかと思われます。今回は試しませんが、いずれバイアスファイルにコヒーレント成分があるかどうかはきちんと検証してみたいと思います。


マスターバイアスファイル

まずは1枚のバイアスファイルを考えてみます。

1枚のバイアスファイルを

Bias:
\[B+\sigma_\text{B}\]
のように表すことができるとします。\(B\)は輝度の平均値、\(\sigma_\text{B}\)は輝度のStandard deviationで読み出しノイズそのものです。

\(N_\text{b}\)枚のバイアスファイルでスタックして、同枚数で割ったマスターバイアスのランダムノイズは、枚数のルート分の1になります。輝度の平均値は足し合わせたバイアスファイルを同じ枚数で割るので、同じ\(B\)のままです。マスターバイアスは以下のように書けます。平均輝度は同じですが、ばらつきは\(\sqrt{N_\text{b}}\)分の1に小さくなっています。

Master bias:
\[B + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}}\]


バイアスファイルをマスターバイアスファイルで補正してみる

ここで、各バイアスファイルからマスターバイアスを引くこと考えてみるのは面白いでしょう。今後の見通しがよくなるはずです。

Bias - Master bias:
\[\sqrt{\sigma_\text{B}^2+\frac{\sigma_\text{B}^2}{N_\text{b}}} = \sqrt{1+\frac{1}{N_\text{b}}} \sigma_\text{B} \]
で\(N_\text{b}\)が多数の枚数だとすると、元々1だったノイズが\( \sqrt{1+1/N_\text{b}} \)とごく僅か増えて、平均輝度値の\(B\)は消えてしまいます。

これを2枚スタックする場合、バイアスフレームの中の読み出しノイズは無相関ですが、マスターバイアスに含まれる読み出しノイズは正の相関を持つので、
\[ \sqrt{ \left( \sqrt{\sigma_\text{B}^2 + \sigma_\text{B}^2} \right)^2 +\left(\frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}}\right)^2} = \sqrt{2 + \frac{2^2}{N_\text{b}}} \sigma_\text{B}  \]
となります。前回の記事の、ダーク補正したライトフレームをスタックするときと同じ考え方ですね。大外のルートの中の、1項目が無相関で2乗和のルートで足し合わさるノイズ。2項目が正の相関を持ってそのまま足し合わさるノイズ。それぞれがさらに2乗和となり大外でルートになるというわけです。

3枚スタックしたら、
\[ \sqrt{ \left( \sqrt{\sigma_\text{B}^2 + \sigma_\text{B}^2 + \sigma_\text{B}^2} \right)^2 +\left(\frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} \right)^2} = \sqrt{3 + \frac{3^2}{N_\text{b}}} \sigma_\text{B}  \]
となります。同じようにして、\( N_\text{a} \)枚スタックしたら
\[ \sqrt{N_\text{a} + \frac{N_\text{a}^2}{N_\text{b}}} \sigma_\text{B}  \]
となります。ここまでは足し合わせを考えていただけなので、輝度をスタックする前の画像に合わせるように\( N_\text{a} \)枚で規格化すると、
\[ \frac{\sqrt{N_\text{a} + \frac{N_\text{a}^2}{N_\text{b}}}\sigma_\text{B}  }{N_\text{a}} =  \sqrt{\frac{1}{N_\text{a}} + \frac{1}{N_\text{b}}} \sigma_\text{B} \]
となります。
 
ここまでわかったので、例えば具体例として\(N_\text{a} = N_\text{b}\)として、マスターバイアスを作った時と同じ枚数の\( N_\text{b} \)枚スタックしたら
\[ \sqrt{N_\text{b} + \frac{N_\text{b}^2}{N_\text{b}}} \sigma_\text{B} =  \sqrt{N_\text{b} + N_\text{b}} \sigma_\text{B} = \sqrt{2 N_\text{b}} \sigma_\text{B} \]
となることがわかり、読み出しノイズは\( \sqrt{2 N_\text{b}} \)倍になります。これも輝度をスタックする前の画像に合わせるように\( N_\text{b} \)枚で規格化すると、 
\[ \frac{\sqrt{2 N_\text{b}}}{N_\text{b}} \sigma_\text{B} = \sqrt{\frac{2}{N_\text{b}}} \sigma_\text{B} \]
となり、読み出しノイズの貢献度は\( \sqrt{2/N_\text{b}} \)倍、すなわち\( \sqrt{N_\text{b}} \)分の1の2回分となることがわかり、直感的かと思います。


0以下の値の存在

さてここで、最初の疑問の1について少し考えてみましょう。1枚の バイアスファイルをマスターバイアスで補正した段階で、すでに輝度の平均値は0になっています。そこに正負に広がりのあるノイズが存在するので、当然0以下の値が存在してしまうことになります。ファイルのフォーマットとしては0以下の値はとることができないので、丸め込んで0となってしまいます。これはまずいです。そのため、通常は計算過程で適当なオフセットを加えて、値を0以上に保ったまま補正などすることが必要となってきます。ここではバイアス補正を見ていますが、ダーク補正の際にもマスターダークファイルの輝度の平均値でさっ引くので、暗いライトファイルを補正する時には同じように輝度が0以下になる可能性が十分にあります。

例えばPixInsightのWBPPでは明示的にPedestal(下駄)という値を設定することができて、ここを適した値に設定することで負の値にならないように0以上にしているため、おかしな結果にはならないです。ただし、全ての計算過程で0以上が保たれて以下どうかは不明です。ここも検証ポイントなので、いつか検証したいと思います。

いずれにせよ、補正の際に何も手当をしなければ0以下の値になることは明白で、そもそもバイアスファイルを撮影する際に適したオフセットを設定すること、ダークファイルや極端に暗いライトフファイルを、バイアス補正やダーク補正する際には適当なペデスタルを加算して処理することが必須でしょう。これが最初の疑問1の答えになるかと思います。


バイアス補正は意味があるのか?

ここまではバイアスファイルを補正した話でしたが、次は実際の画像処理に相当するライトファイルの補正を考えてみましょう。

1枚のライトファイルを撮影すると、自動的にバイアス相当とダーク(バイアスを除いたもの)相当が含まれていると考えることができます。そのためライトファイルは
\[L + D + B + \sqrt{\sigma_\text{L}^2+ \sigma_\text{D}^2 +\sigma_\text{B}^2} \]
のように書くことができるとします。ここで、\( L \)、\( D \)、\( B \)はそれぞれ1枚のライト単体、ダーク単体、バイアス単体の平均輝度、\( \sigma_\text{L} \) はスカイノイズを含む、輝度のばらつきからくるショットノイズ、\( \sigma_\text{D} \)はダークノイズ、\( \sigma_\text{B} \)は読み出しノイズとします。各ノイズは無相関と考えられるので、これらは2乗和のルートの貢献となります。

ここで2つのバイアス処理を考えます。黒天リフさんの疑問の2に相当しますが、比較すべきものは
  1. ライトとダークからそれぞれマスターバイアスを引いて、できたライトからマスターダークを引く。
  2. ライトから(バイアスを引いていない)マスターダークを引く -> バイアスはダークに含まれているので、ダーク補正のみでバイアス補正も自動的にされる。
になります。例えば旧来のPixInsightでは1の方法が主にとられていて、バイアスファイルは必須とされてきました。他の画像処理も1を推奨しているのかと思われます。いつの頃からでしょうか、最近のPixInsightではあからさまに1はダメだと言い、2を推奨しています。なぜ2が明らかにいいというのか、ここではそれを検証してみたいと思います。

1と2の共通項目として、個々のバイアスファイルとマスターバイアスは以下のように表されるとします。

Bias:
\[B+\sigma_\text{B}\]

Master bias:
\[B + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}}\]
\(N_\text{b}\)はバイアスフレームの枚数です。


1のダークファイルのバイアス補正

1. 旧来の方法です。まず、1枚のダークライフからマスターバイアスを引く事を考えます。前回の記事と違い、ダークライフの平均輝度と、ダークノイズをあらわに考えていることに注意です。マスターバイアスの平均輝度分だけライトファイルの平均輝度が下がり、マスターバイアスに含まれる(スタックされ多分の小さな)読み出しノイズが増えます。1枚のダークファイルは以下のように表すことができます。

Dark:
\[(D + B) + \sqrt{\sigma_\text{D}^2 +\sigma_\text{B}^2} \]
これを、マスターバイアス

Master bias:
\[B + \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}}\]
で補正します。

ダークノイズも、ダークファイル中に含まれるバイアスノイズも、マスターバイアスに含まれるノイズも、全て無相関として2乗和のルートになり、

Dark - Master bias:
\[D+\sqrt{ \sigma_\text{D}^2+\sigma_\text{B}^2 + \left( \frac{\sigma_\text{B}}{ \sqrt{N_\text{b}} } \right) ^2 } = D+ \sqrt{\sigma_\text{D}^2+\sigma_\text{B}^2 + \frac{\sigma_\text{B}^2}{N_\text{b}} }\]
となります。

ここからスタックしていきます。まずバイアス補正したダークファイルを2枚足し合わせて、明るさを合わせるために2で割ると、マスターバイアス起因のノイズは正の相関を持つことに注意して、
\[ D+ \left( \sqrt{ \left( \sqrt{2 \sigma_\text{D}^2 + 2 \sigma_\text{B}^2} \right)^2 + \left( 2 \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} \right)^2 } \right)/2 \] \[ \begin{eqnarray} &=& D+ \left(\sqrt{ \left(2 \sigma_\text{D}^2 + 2 \sigma_\text{B}^2 \right) + 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} } \right) /2\\  &=& D+ \left(\sqrt{ \left(\sigma_\text{D}^2 + \sigma_\text{B}^2 \right) + 2 \frac{\sigma_\text{B}^2}{N_\text{b}} } \right) /\sqrt{2} \end{eqnarray}\]

3枚足し合わせて、明るさを合わせるために3で割ると、
\[ D+ \left( \sqrt{ \left( \sqrt{3 \sigma_\text{D}^2 + 3 \sigma_\text{B}^2} \right)^2 + \left( 3 \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} \right)^2 } \right)/3 \] \[ \begin{eqnarray} &=& D+ \left(\sqrt{ \left(3\sigma_\text{D}^2 + 3 \sigma_\text{B}^2 \right) + 3^2 \frac{\sigma_\text{B}^2}{N_\text{b}} } \right) /3\\  &=& D+ \left(\sqrt{ \left(\sigma_\text{D}^2 + \sigma_\text{B}^2 \right) + 3 \frac{\sigma_\text{B}^2}{N_\text{b}} } \right) /\sqrt{3} \end{eqnarray}\]


\( N_\text{d} \)枚足し合わせて、明るさを合わせるために\( N_\text{d} \)で割ると、
\[ D+ \left(\sqrt{ (\left(\sigma_\text{D}^2 + \sigma_\text{B}^2 \right) + N_\text{d} \frac{\sigma_\text{B}^2}{N_\text{b}} } \right) /\sqrt{N_\text{d}} = D+ \sqrt{ \frac{\sigma_\text{D}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{b}} } \]
となります。3項目が\(N_\text{d}\)ではなく\(N_\text{b}\)で割られていることに注意です。

ここで、例えば\(N_\text{d} = N_\text{b}\)としてバイアスとダークのスタック枚数を合わせてやると簡単になって、
\[ D+ \sqrt{ \frac{\sigma_\text{D}^2}{N_\text{b}} + \frac{\sigma_\text{B}^2}{N_\text{b}} + \frac{\sigma_\text{B}^2}{N_\text{b}} } = D+ \sqrt{ \frac{\sigma_\text{D}^2}{N_\text{b}} + 2 \frac{\sigma_\text{B}^2}{N_\text{b}} } \]

となり、ダークノイズの2乗と「2倍」のバイアスノイズの2乗の和のルートが、スタック枚数分のルートで小さくなったことわかり、直感的にもわかりやすくなるかと思います。ここで、2倍のバイアスノイズが貢献することは重要です。ダークファイルをバイアス補正した段階で、バイアスノイズが増えてしまっています。

結局、マスターダークはダークのスタック枚数\(N_\text{d}\)とバイアスのスタック枚数\(N_\text{b}\)を用いて

Master dark:
\[D+ \sqrt{ \frac{\sigma_\text{D}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{b}} } \]
のように書けることがわかりました。


1のライトファイルのバイアス補正

次に1枚のライトファイルからマスターバイアスを引く事を考えます。マスターバイアスの平均輝度分だけライトファイルの平均輝度が下がり、マスターバイアスに含まれる(スタックされた分の小さな)読み出しノイズが増えます。上と同様の計算をして

Light - Master dark:
\[L+ D+ \sqrt{\sigma_\text{L}^2+\sigma_\text{D}^2+\sigma_\text{B}^2 + \frac{\sigma_\text{B}^2}{N_\text{b}} }\]
となります。


1のバイアス補正したライトファイルを、バイアス補正したダークファイルで補正する

次に、ここからバイアス補正済みのダークを引きます。ここでダークの平均輝度Dは無くなります。

(Light - Master bias) - bias compensated Master Dark:
\[ L+\sqrt{ \left( \sqrt{ \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 + \frac{\sigma_\text{D}^2}{ N_\text{d}} + \frac{\sigma_\text{B}^2}{ N_\text{b}} }\right)^2 + \left( 2 \frac{\sigma_\text{B}}{ \sqrt{N_\text{b}} } \right) ^2 }\]
\[= L+\sqrt{ \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 + \frac{\sigma_\text{D}^2}{ N_\text{d}} + \frac{\sigma_\text{B}^2}{ N_\text{b}} + 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} }\]

これを2枚スタックして2で割ると
\[ L+\left( \sqrt{ \left( \sqrt{ 2 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) } \right) ^2  + \left( 2 \frac{\sigma_\text{D}}{ \sqrt{N_\text{d}}} \right)^2 + \left( 2 \frac{\sigma_\text{B}}{ \sqrt{N_\text{b}}} \right)^2 + \left( 2 \left( 2 \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} \right) \right)^2} \right) /2 \]
\[ = L+\left( \sqrt{ 2 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 2^2 \frac{\sigma_\text{D}^2}{ N_\text{d}} + 2^2 \frac{\sigma_\text{B}^2}{ N_\text{b}} + 2^2 \left( 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} \right)} \right) /2 \]
\[ = L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 2\frac{\sigma_\text{D}^2}{ N_\text{d}} + 2 \frac{\sigma_\text{B}^2}{ N_\text{b}} + 2 \left( 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} \right)} \right) /\sqrt{2} \]

3枚スタックして3で割ると
\[ L+\left( \sqrt{ \left( \sqrt{ 3 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) } \right) ^2  + \left( 3 \frac{\sigma_\text{D}}{ \sqrt{N_\text{d}}} \right)^2 + \left( 3 \frac{\sigma_\text{B}}{ \sqrt{N_\text{b}}} \right)^2 + \left( 3 \left( 2 \frac{\sigma_\text{B}}{\sqrt{N_\text{b}}} \right) \right)^2} \right) /3 \]
\[ = L+\left( \sqrt{ 3 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 3^2 \frac{\sigma_\text{D}^2}{ N_\text{d}} + 3^2 \frac{\sigma_\text{B}^2}{ N_\text{b}} + 3^2 \left( 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} \right)} \right) /3 \]
\[ = L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 3\frac{\sigma_\text{D}^2}{ N_\text{d}} + 3 \frac{\sigma_\text{B}^2}{ N_\text{b}} + 3 \left( 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} \right)} \right) /\sqrt{3} \]

\(N_\text{l}\)枚スタックして同数枚で割るとマスターライトとなり、

Master light:
\[ L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + N_\text{l} \frac{\sigma_\text{D}^2}{ N_\text{d}} + N_\text{l} \frac{\sigma_\text{B}^2}{ N_\text{b}} + N_\text{l} \left( 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} \right)} \right) /\sqrt{N_\text{l}} \]
となります。

2項目分母の\(\sqrt{N_\text{l}}\)を分子のルートの中に入れたほうがわかりやすいでしょうか、

\[ L+\sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) /N_\text{l}  + \frac{\sigma_\text{D}^2}{ N_\text{d}} + \frac{\sigma_\text{B}^2}{ N_\text{b}} + 2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} } \]

簡単のため、\(N_\text{l}=N_\text{d}=N_\text{b}\)としてライトとバイアスとダークのスタック枚数を合わせてやると少し見やすくなって

\[ L+\sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) /N_\text{l}  + \frac{\sigma_\text{D}^2}{ N_\text{l}} + \frac{\sigma_\text{B}^2}{ N_\text{l}} + 2^2 \frac{\sigma_\text{B}^2}{N_\text{l}} } \] \[ \begin{eqnarray} &=& L+\sqrt{ \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 + \sigma_\text{D}^2 + \sigma_\text{B}^2 + 2^2 \sigma_\text{B}^2  \right) /N_\text{l} }\\ &=& L+\sqrt{ \left( \sigma_\text{L}^2 + 2 \sigma_\text{D}^2 + 6 \sigma_\text{B}^2 \right) /N_\text{l} }\end{eqnarray} \]

となります。6倍の\(\sigma_\text{B}\)と2倍の\(\sigma_\text{D}\)の貢献あることがわかります。6倍の\(\sigma_\text{B}\)はマスターダークを作る際のバイアス補正で2倍、マスターライトを作る際のバイアス補正で2倍、ダークにもとからあるバイアスノイズが1倍、ライトに元からあるバイアスノイズが1倍で、計6倍となるわけです。\(\sigma_\text{D}\)はマスターライトを作る際の、ダークに元からあるものとライトに元からあるもので、2倍となります。


2の最近の手法の場合

こちらは1の計算に比べ、ずいぶんシンプルになります。ダークはバイアスを含んだままなので、マスターダークは、ダークとバイアスの輝度とダークノイズとバイアスノイズがダークの枚数のルート分小さくなった項が加わり、

Master Dark:
\[ D+B+ \sqrt{ \frac{\sigma_\text{D}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{d}} }\]
となり、これを1枚のライト
\[L + D + B + \sqrt{\sigma_\text{L}^2+ \sigma_\text{D}^2 +\sigma_\text{B}^2} \]
から引くと

Light - Master dark:
\[ L+ \sqrt{\sigma_\text{L}^2+\sigma_\text{D}^2+\sigma_\text{B}^2 + \frac{\sigma_\text{D}^2}{N_\text{d}} + \frac{\sigma_\text{B}^2}{N_\text{d}}}\]
となります。これを2枚スタックして、2枚で割ると
\[ L+\left( \sqrt{ \left( \sqrt{ 2 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) } \right) ^2  + \left( 2 \frac{\sigma_\text{D}}{ \sqrt{N_\text{d}}} \right)^2 + \left( 2 \frac{\sigma_\text{B}}{ \sqrt{N_\text{d}}} \right)^2} \right) /2 \]
\[ = L+\left( \sqrt{ 2 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 2^2 \frac{\sigma_\text{D}^2}{ N_\text{d}} + 2^2 \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) /2 \]
\[ = L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 2\frac{\sigma_\text{D}^2}{ N_\text{d}} + 2 \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) /\sqrt{2} \]

3枚の場合
\[ L+\left( \sqrt{ \left( \sqrt{ 3 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) } \right) ^2  + \left( 3 \frac{\sigma_\text{D}}{ \sqrt{N_\text{d}}} \right)^2 + \left( 3 \frac{\sigma_\text{B}}{ \sqrt{N_\text{d}}} \right)^2} \right) /3 \]
\[ = L+\left( \sqrt{ 3 \left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 3^2 \frac{\sigma_\text{D}^2}{ N_\text{d}} + 3^2 \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) /3 \]
\[ = L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + 3 \frac{\sigma_\text{D}^2}{ N_\text{d}} + 3 \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) /\sqrt{3} \]

\(N_\text{l}\)枚の場合

Master light:
\[L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right)  + N_\text{l} \frac{\sigma_\text{D}^2}{ N_\text{d}} + N_\text{l} \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) /\sqrt{N_\text{l}} \]
\[=L+\left( \sqrt{\left( \sigma_\text{L}^2 + \sigma_\text{D}^2+\sigma_\text{B}^2 \right) /N_\text{l} + \frac{\sigma_\text{D}^2}{ N_\text{d}} + \frac{\sigma_\text{B}^2}{ N_\text{d}}} \right) \]
となります。

やっと全ての計算が終わりました。最後の式は直接1の結果と比較することができます。


何が違うのか?

ここで振り返って、1と2の違いを比べてみましょう。

バイアス補正を個別にした1の方式ではルートの中に
\[2^2 \frac{\sigma_\text{B}^2}{N_\text{b}} = 4 \frac{\sigma_\text{B}^2}{N_\text{b}}\]
が余分に加わっています。バイアス補正の回数が1の方が2回多いので、最初にルート2倍、次にルート2倍でルート4倍損をしてしまっているというわけです。

ここで、黒天リフさんの疑問への回答をあらわに書くとすると、
  1. 個別のバイアス補正をすると、4つ分の読み出しノイズ\(\sigma_\text{B}/\sqrt{N_\text{b}}\) のだけの「余分な」ノイズが加わる。バイアス補正なしのライトフレームとダークフレームで補正した方が、バイアス補正の回数が少ないため、明らかに得をすることがわかる。
  2. それに加え、ダークファイルにバイアス補正を加える際に、元々暗い可能性があるダークファイルなので、補正によって輝度の値が0以下になる可能性がある。
以上の2つの理由から、単体のバイアス補正は原理的に不利で、ダークフレームに含まれるバイアスで自動的にライトフレームを補正する方が得するという結論です。

PixInsightでは以前は単体のバイアス補正が必須に近かったのですが、現在はDark frameに含まれるバイアスを考慮し、Dark補正のみで処理をするのが標準となっていますが、その根拠も今回の計算ではっきりしたことになります。

また、ライトフレームの補正まで考えているのでかなり実用的になり、今後の計算に具体的に使えそうです。ただし、フラットに関しては十分明るいと考えたので、無視できるとしています。

かなり長い記事と長い計算になってしまいましたが、そうはいってもこれも他のノイズとの比較で決定すべきで、例えば明るい空の撮影でスカイノイズが大きいなら、読み出しノイズの補正などはしてもしなくても誤差の範囲となるはずです。


まとめと、今後したいこと

今回のバイアス補正の計算はかなり大変でした。計算ミスが繰り返しみつかって、何度記事を書き直したことか。前回のダーク補正はまだまだ布石で、今回の計算でやっと、スタックを含めたノイズ評価ができるようになったのかと思います。式もTeX化したので、見やすくなったかと思います。前回の記事も余裕があったらTeX化しておきます。

今回の計算でやっとスタックを含めていろいろ計算できる準備ができたと言っていいので、今後スタック済みの画像のノイズと信号を、色々パラメータをいじることで、どんな状況が有利になるのかなど、具体的に考えていきたいと思います。

それとは別に、前回と今回の考察から、いくつか検証したいことが出てきました。そもそもバイアス補正というものが本当に意味があるかということです。ダーク補正はいずれにせよするので、バイアス補正必ずはされるのですが、バイアスにコヒーレント成分がなければ、補正そのものが意味がない気がします。なので、以下のようなことで検証したいと思っています。
  1. 100枚のバイアスファイルで作ったマスターバイアスを複数作る。複数のマスターバイアスで、模様が一緒になるかを見る。
  2. 下駄を履かせるか、履かせないかで差が出るかを見てみる。具体的にはバイアスファイルをマスターバイアスファイルで補正する過程を細かく見てみる。
などです。











この記事は「実画像のノイズ評価(その3): 信号について」の続きになります。



久しぶりのブログ更新になってしまいました。実は小海の星フェスからコロナになってしまいました。4−5日で平熱に戻ったのですが、その後体力が全然戻らず、仕事から帰っても疲れ果ててすぐに寝てしまうことをずっと続けていました。新月期で晴れた平日もあったのですが、全く機材を出す気力がありませんでした。細々と今回の計算だけは続けていて、発症から3週間たってやっとブログを新たに書くくらいの気力がもどってきました。

というわけで前回の記事から結構経ってしまいましたが、今回の記事ではこれまでのノイズ評価がどこまで通用するか、具体例を検証してみたいと思います。だいこもんさんと、Niwaさんの協力もありましたので、いくつかの撮影条件を比べてノイズ評価が正しいかどうか検証してみることにします。


開田高原で撮影したファイルの検証

まずはこれまで通り、開田高原のものから。使っているカメラはASI294MM Proです。


1. Read noise


最初はRead noiseを検証してみましょう。比較すべきは、
  1. ASI294MM ProのRead noiseのグラフから読み取ったノイズ
  2. 自分で撮影したBiasファイルから実測したノイズ
の2つです。

  1. 今回の撮影ではゲインを120としたので、その時のRead noiseの値をグラフから読み取ると、1.8 [e]程度でしょうか。
  2. その一方、Baisファイルはゲインを120として、最初露光時間(0.032ms)で撮影し、RAW16のfits形式で保存します。実測はPixInsightのStatisticsツールをつかいました。撮影されたファイルは実際には14bit階調なので、Statisticsツールで「14bit [0,16383]」を選びます。その時のavgDevの値を読むと2 [ADU]となります。この場合単位はADUなので、比較できるようにeに変換するため、コンバージョンファクターを使います。コンバージョンファクターはグラフの縦軸「Gain(e/ADU)」から読み取ります。横軸の「Gain(0.1dB)」の120のところでは0.95 [e/ADU] 程度となります。これを使うと、Baisファイルのノイズは1.9 [e]となり、グラフから読み取った値にほぼ一致します。
結論としては、Read noiseに関しては、メーカーの示すグラフから読み取った値と、実測の値が10%以下の精度でかなり一致していると言えます。実はこのことは、2019年に既に確認していて、その時もよく一致していることがわかっています。


2. Dark noise

次にDark noiseを検証します。こちらも比較すべきは、
  1. ASI294MM Proの Dark currentのグラフから読み取った暗電流値から計算したdark noise
  2. 自分で撮影したDarkファイルから実測したノイズ
の2つです。

  1. 今回の撮影時の温度は-10℃、1枚あたりの露光時間は300秒です。グラフから安電流は0.006 [e/s/pix]程度、露光時間の300 [s]をかけて1.86 [e/pix]。単位がeなので、ノイズはそのルートをとればよく、ピクセルあたりでは1.3 [e]となります。
  2. 一方、自分で撮影したダークファイルから、Biasファイルの時と同様にノイズをPixInsightで実測すると2.5 [ADU]となりました。これをコンバージョンファクター0.95[e/ADU]で単位をeに変換してやり、2.38 [e]となります。ここからRead noise 1.8 [e]を引いたものが実測のDark noiseとなります。ただし引く際には、互いに相関のないランダムなノイズなので、実測値の2乗とRead noiseの2乗の差を取り、ルートを取ることになります。出てきた値は1.4 [e]となりました。
結果としては、Dark noiseに関してもメーカーのグラフから求めた値と、実測の値が10%以下の精度で一致していることがわかります。


3. トータルノイズ

さらに、開田高原で撮影したライトフレームの輝度から推測したノイズと、ライトフレームのノイズの実測値を視覚します。
  1. 天体や分子雲が支配的でない暗い部分の輝度をPixInsightのStatisticsで実測すると、920 [ADU]程度となりました。ここから撮影時のオフセット40x16=640を引き、実際の輝度が280[ADU]であることがわかります。これをコンバージョンファクターで[e]にすると266 [e]。単位が[e]なので、ノイズは輝度のルートをとると直接出てきて、16.3 [e]となります。
  2. その一方、ライトフレームからPixInsightのStatisticsでノイズを直接測定すると、16.9 [e]となりました。
撮影したライトフレームの輝度から計算したノイズと、実測のノイズが10%以下の精度でかなり一致していることがわかります。


4. Sky noise

輝度から推測したノイズと直接測ったノイズから、トータルノイズがかなり一致することがわかったということと、Read noiseもDark noiseも推測値と実測値がかなり一致していることがわかるので、残り(今は天体が写っていない部分を考えているので、天体からのショットノイズはないと考える)のSky noiseもそこそこ一致すると推測できます。Sky  noiseは、トータルノイズからRead noiseとDark noiseを引いたものと考えることができます。ただしこの場合も、それぞれのノイズを2乗して、トータルからRead noiseとDark noiseを引く必要があることに注意です。その結果、Sky noiseは16.2[e]程度となりました。トータルノイズが16.3 [e]なので、Read noiseとDark noiseはほとんど効いていなくて、ほぼSky  noiseに支配されていることがわかります。


開田高原撮影のまとめ


まとめると、

グラフから読み取ったRead noise1.8 [e]
実測のRead noise1.9 [e]

グラフから読み取ったDark noise
1.3 [e]
実測のDark noise [e]1.4 [e]

背景光の輝度から推測したトータルノイズ

16.3 

[e]
実測のトータルノイズ [e]16.9 [e]

Sky noise
16.2 [e]

となります。

開田高原の暗い空であっても、L画像であること、口径260mmでF5のかなり光を集める鏡筒であることなどから、Sky noiseが支配的になってしまうのかと思われます。これが小さい口径で暗い鏡筒を使った場合や、明るい鏡筒でもナローバンドフィルターを使い入射する光を小さくした場合には、Read noiseとDark noiseが効いてくる可能性が高くなることに注意です。


条件を変えた場合

少なくとも、これまで検証してきた開田高原で撮影したライトフレームでは、メーカーグラフからの読み取り値と実測などがかなり一致することがわかりました。他の例とも比べてみましょう。

ここでは4つを比較します。鏡筒、カメラ、露光時間、ゲイン、温度、背景光の明るさなどがそれぞれ違います。
  1. 開田高原: SCA260 (d260mm、f1300mm)、ASI294MM Pro、露光時間300秒、gain120、-10℃
  2. 自宅: SCA260 (d260mm、f1300mm)、ASI294MM Pro、露光時間300秒、gain120、-10℃
  3. チリ1: RS200SS (d200mm、f760mm)、ASI294MM Pro、露光時間120秒、gain120、-20℃
  4. チリ2: FSQ106N (d200mm、f760mm)、ASI1600MM Pro、露光時間300秒、gain0、-20℃
協力: だいこもんさん(チリ1)、Niwaさん(チリ2)

個々の計算過程は省略しますが、結果は

1. 開田高原2. 自宅3. チリ14. チリ2
グラフからのRead noise [e]1.8 1.8 1.8 3.6 
実測のRead noise [e]1.9 1.9 1.9 3.6 

グラフからのDark noise [e]
1.3 1.3 0.9 1.4 
実測のDark noise [e]1.4 1.4 0.9 1.3 

背景光輝度からのトータルノイズ [e]
16.3 49.3 12.0 7.0 
実測のトータルノイズ [e]16.9 51.3 12.5 8.3 

Sky noise [e]
16.2 49.3 11.8 5.8 

となりました。各種条件はかなり違っていますが、どれも推測値と実測値がかなりの精度で一致しています。これまでの検証が大きく間違ってはいないことがわかるのかと思います。言い換えると、グラフからの推測値だけである程度正しいことがわかるので、今後の計算では実測値を用いなくともグラフから計算した値を用いて話を進めても、ほぼ問題ないと言えるのかと思います。

「背景光輝度からのトータルノイズ」と「Sky noise」を比較すると、やはりSky noiseが支配的なのがよくわかり、それでもチリ2のように暗いところで小口径の場合は、Sky  noiseの貢献度が小さくなり、Read noiseやdark noiseの貢献度があるていど大きくなることがわかります。

逆に言うと、Read noiseやdark noiseが効かない範囲でうまく撮影されているとも言えます。Read noiseやdark noiseが支配的と言うことはある意味暗すぎるわけです。暗い鏡筒を使っていたり、1枚あたりの露光時間が足りなかったり、ゲインが小さすぎるなどの状況や、ナローバンドフィルターやかなりきつい光害防止フィルターを使った場合などは暗すぎる状況になることがあります。

Read noiseやdark noiseが効かない状態の撮影ができているなら、あとはどこまで淡いところが出るかは背景がどこまで暗くできるかに依ります。より暗い空が有利となってきます。この状態ではもう1枚あたりの露光時間を伸ばしても意味はなくなり、トータルの露光時間を伸ばすことでSky noiseの影響を小さくしていくしか手はありません。

今回の記事でははまだ1枚撮影のみをこと議論しているのですが、本当は多数枚撮影してスタックした時のことを考えて判断するべきですね。次回以降に議論できればと思います。


撮影時の背景光の輝度推測

実は、鏡筒とカメラのパラメータがわかっている(口径、焦点距離、量子効率、ピクセルサイズ、コンバージョンファクターなど)ので、画像から撮影時の背景光の輝度が推測できるはずです。それぞれの場所でのSQMがわかっていれば、推測値と比較して画像として得られた背景光がある程度正しいのかどうか検証できるはずです。

結果としては、開田高原とだいこもんさんが撮影したチリの画像は、1.4倍くらい開田高原の方が明るかったです。開田高原はPolution Mapで見た場合、SQM21.8程度、チリはだいこもんさんによるとSQM22.1程度のことなので、10^((22.1-21.8)/2.5)=1.32倍なので、比較ではそこそこ正しいです。ただ、開田高原の当日の現地でiPhoneのアプリで簡易測定したSQMだと20.9が最高だったので、開田高原の実際はもっと(2.5倍くらい)明るかった可能性もあります。

でもNiwaさんが撮影したチリの画像からの推測値の輝度はだいこもんさんが撮影したものより1.8倍くらい明るく出てしまい、どうしても合いません。新月期ではないのではと思いましたが、撮影日から調べてみると新月期です。方向など何か別の明るい理由があったのか、まだ計算がどこかおかしいのかよくかっていません。Niwaさんのだけカメラが違うので、何か取り込めていないパラメータがある可能性もあります。

また、富山の自宅での撮影では開田高原より10倍以上明るく、Polution Mapで見たSQM20.6とかけ離れています。一つの可能性は、北の空なので街明かりが効いていたというのはあり得るかもしれません。と考えると、チリも方向によって明るさが結構違うのか?昔方個別の光害マップ「ふくろう」というのがあったのですが、残念ながらもう稼働していないようです。

いずれにせよ、画像ファイルからの背景光の輝度の測定はまだあまり正確ではないようなので、具体的な値は割愛します。だいこもんさんにも言われましたが、輝度は既知の恒星の明るさから求めるべきなのかもしれません。でも今回の範囲は越えるので、輝度の推測は諦めることにします。 


まとめ

これまでのノイズの検証が正しいかどうか、簡単にですが検証してみました。条件を変えてもそこそこ正確に見積もれているのかと思います。

といっても、メーカーが示しているグラフからの計算値との比較なので、ある意味そのグラフが実際の測定と正しいかどうかの検証とも言えます。少なくともメーカーが示しているグラフは、今回の測定で自己矛盾のような現象は見られず、実際にユーザーが手にしているカメラでの実測とかなり近い値となっていると思われます。

これ以降の記事では「グラフから推測したノイズはそこそこ正しい」と考えて進めていけばいいと言うことが言えるのかと思います。








 

この記事は、実画像のノイズ評価(その1): 各ノイズの貢献度合


の続きになります。


前回の復習

かなり前の記事になってしまうので、私自身忘れてしまったことも多くて記事を読み返しながら今回の記事を書いています。前回の記事で何がポイントだったのか、復習がてら少しまとめ直してみます。

前回の記事では読み出しノイズ、ダークノイズ、スカイノイズの3つについて、実際に撮影した画像を元に数値的に具体的な値を見積もりました。特にこれまでスカイモイズをどう見積もるかが難しかったこともあり、あまりきちんと評価されてこなかったようです。前回の記事では画像の明るさからコンバージョンファクターを使いスカイノイズを見積もるという手法を提案し、実際のスカイノイズを数値で出すという試みをしています。

その結果、撮影地で有名な暗いと言われる開田高原の空でさえ、スカイノイズが支配的で、15.9[e] 程度ありました。読み出しノイズ、ダークノイズがそれぞれ1.8[e] と1.5[e] で10分の1程度です。実際の効きは2乗して比較すべきなので、それぞれスカイノイズに対して(15.9/1.8)^2 = 1/78、(15.9/1.5)^2 = 1/112と78分の1とか、112分の1とかしか影響していないことがわかります。

これが富山の街中の自宅になると、スカイノイズがさらにひどいことになり48.0[e] となり、3倍近くの大きさです。開田高原と同じクオリティーにしようとしたら、(48/15.9)^2 = 9.1で9.1倍ほどの露光時間を必要とします。開田高原で5時間45分かけているので、自宅だと52時間20分かけて撮影すると同じになるというわけです。自宅だと平日も撮影して放って置けるのですが、北陸で冬に1週間も連続で晴れることはほぼありえないので、実質不可能です。こうやって具体的な数値を入れてみると、大きな違いになることがわかります。

このように、スカイノイズが支配的な場合は読み出しノイズやダークノイズはほとんど効いていないので、露光時間をもっと増やしてもいいのではないかと疑問を投げかけた形で前回の記事を終えています。今回はその疑問に応えるような形で、撮影条件やパラメータを変えながら、検討してみます


どこまで露光時間を縮めることができるか?

簡単のため、L画像のみを考えます。カラー画像も原理は同じですが、ディベイヤーなど計算が複雑になるので、とりあえずここではモノクロとします。

読み出しノイズ:
まずは露光時間を短くして、スカイノイズを小さくして、読み出しノイズと同程度になるような状況を考えてみましょう。露光時間をどこまで短くできるかを求めてみます。

今回使った開田高原で撮影したM81の画像では、露光時間300秒の時に、スカイノイズと読み出しノイズの比が

15.9[e] : 1.8[e] = 8.8 : 1

で約9倍の差があります、スカイノイズを約9分の1にすればいいので、明るさで考えると2乗で81分の1にしてやればいいことになります。露光時間で考えると300秒を81分の1にしてやればいいので、300[s] / 81= 4.8 [s]と、露光時間をわずか3.7秒にまで短くするとやっとスカイノイズが読み出しノイズと同等になります。こんなに短くていいんですね!?

ダークノイズ:
次に、スカイノイズがダークノイズと同程度になる温度を求めてみます。まずは300秒露光だとすると、スカイノイズとダークノイズの比は前回記事の計算から

15.9[e] : 1.5[e] = 10.6: 1

と10.6倍程度の余裕があるので、−10℃で撮影した時のダークノイズが10.6倍程度になるには、暗電流で考えると2乗になるので、−10℃での暗電流が10.6^2 = 112倍程度になるところの温度を暗電流のグラフ(縦軸が2倍ごとの対数グラフであることに注意)から読み取ってやればいいはずです。−10℃での暗電流が0.007程度なので、112倍だと0.79とかなってしまい、もう30℃超えとかの温度になってしまいます。今回くらいスカイノイズが支配的ならばもう冷却に関しては全然気にしなくていいと言うことになってしまいます。


本当にそんなに余裕はあるのか?

開田高原の暗い空でさえ、露光時間は3.7秒以上ならOK、温度は30℃以下ならOKと、にわかには信じ難い数字が出てきました。さらに(今回撮影した日の)開田高原より明るい空ではこの条件は緩和され、さらに短い露光時間でも、高い温度でもよくなります。これまでおまじないのように露光時間を伸ばし冷却をしてきたのですが、実際にはほとんど効いていなくて、1枚あたりの露光時間を減らしていいし、センサー温度ももっと高くてもいいということになります。

でも、ここまでの検証、本当に正しいでしょうか?

答えは原理的にはYesですが、実用上はNoでしょう。まず、暗い空に行けば行くほどこのパラメータの余裕は少なくなっていきます。また光害防止フィルターを使うと、実質的に暗くなるのでスカイノイズは小さくなり、上記露光時間と温度の余裕は少なくなっていきます。これらの場合1枚あたりの露光時間を増やした方が有利になるし、センサー温度も低い方が余裕が出ます。

例えばHαのようなナローバンド撮影の場合を考えます。典型的な7nmのナローバンドフィルターを使うとしましょう。7nmというのはフィルターを透過する光の波長の(多分ですが)FWHM(Full Width Half Maximum、半値全幅、縦軸のピークの半分の値をとる時の横軸の全部の幅、他にも半値半幅などがある)が7nmということなので、仮にASI294MMが可視である波長のFWHMを380nmから800nmの420nmとしましょう。420nmが7nmとなるので、単純に考えると明るさは60分の1になります。スカイノイズにするとルートで効くので8分の1程度でしょうか。

今回の計算ではスカイノイズと読み出しノイズの比が8.8分の1、スカイノイズとダークノイズの比が10.6分の1と見積もっていたので、大きく余裕あると思っていました。でもナローバンド撮影の場合スカイノイズが8分の1になるいうことは、この余裕を全て取り去ってしまいます。ナローバンド撮影だと300秒露光と−10℃での撮影で、スカイノイズと、読み出しノイズと、ダークノイズが大体一緒くらいになるということになります。


現実的な露光時間と温度

ナローバンドでは300秒という露光時間も、−10℃というセンサーの温度も妥当だということは分かったのですが、明るいL画像ではやはりこれまでの検証に特におかしなところはなく、露光時間も温度も全然余裕があるということは(私が大きな勘違いをしていなければですが)事実です。

でも、途中の複雑な機器設定の変更で撮影が失敗するリスクなどを考え、同じようなセッティングで全ての光学フィルターに対して対応しようとするのは戦略として全然おかしくはなく、その場合、一番厳しいところにセッティングを合わせることは十分妥当でしょう。
 
このように全部一緒のセッティングにするということも一理ありますが、明るい場合にはパラメータに余裕があることを理解した上で、フィルターによっては露光時間を変える、ゲインを変えるという戦略を立てることは次の可能性につながるのかと思います。例えばHαをRGBに混ぜる赤ポチ画像を作るのに、StarNetなんかで背景と恒星を分離するときなんかは特にそうです。この場合、恒星は大きさも色情報も使えなかったりもするので、背景のみにダイナミックレンジを振ることができ、余裕ができるはずです。

ただし、露光時間やゲインを変えてパラメータ数を闇雲に増やすと、その後の画像処理に対して必要なダークファイル、フラットファイル、フラットダークファイル、バイアスファイルなどの種類も増えていく羽目になります。少しまとめておきます。

露光時間とゲインという観点では:
  • 露光時間もゲインも変えたくないもの: ダークファイル
  • ゲインを変えたくないもの: フラットファイル、フラットダークファイル、バイアスファイル
光学フィルターごとという観点では:
  • それぞれのフィルターに対して撮影するもの: フラットファイル
  • 共通で撮影できるもの: ダークファイル、フラットダークファイル、バイアスファイル
くらいになりますでしょうか。

特にダークファイルは撮影に時間がかかるので、できるだけ種類を少なくしておきたいです。明るい時と暗い時の2パターンくらいに決めておけるなら、ダークだけ設定ごとに一度撮ってしまって使いまわすことで、後の手間はそれほど変わらないと思います。あらかじめダークライブラリーを作っておくと気にしないでよくなるかもしれません。バイアスもゲインごとのライブラリを作ることができますね。

フラットはホコリなどの状況でかわってしまうので、その都度撮影した方がいいかもしれませんが、センサー面やフィルター面を暴露しないようにしてホコリなどの混入があまりない状況を作れるのなら、使い回しが効くと思います。

多分大丈夫だとは思うのですが、フラットとフラットダークはできれば同時に取ったほうがいい気がしています(温度が変わると縞ノイズに影響があるかも、でも未検証)。


まとめと今後

今回は露光時間とセンサー温度について、本当に理屈通りでいいのか、実際の撮影などのことも含めて少し検証してみました。実用上はフィルターなどの変更もあるので、これまで通りの露光時間やセンサー温度でも構わないかもしれませんが、これらのパラメータを変更する場合にどれくらい余裕があるかを知っておくことは、今後の方針を立てる上で有利になるのかと思います。

まだまだ検証したいことはたくさんあって、ゴールまではかなり遠いです。これまではノイズのみの議論で、ノイズ同士がどうなるかだけを問題にしていて、信号についてはまだ何も議論していません。ノイズに対して、撮影目標の天体が信号ということになるのですが、信号SとノイズNの比S/N (SN比)が重要になります。また、スタックすることでS/Nを稼ぐことができます。でも真面目に信号部分を考えるのって結構大変なんですよね。またゆっくり考えてみます。


この記事の続き



になります。実際に信号を考えてS/Nを求めています。








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のページから読み取ることができます。

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

グラフから温度-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]

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

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

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


まとめ

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

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

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

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


この記事の続き



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








このページのトップヘ