黒天リフさんが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. 下駄を履かせるか、履かせないかで差が出るかを見てみる。具体的にはバイアスファイルをマスターバイアスファイルで補正する過程を細かく見てみる。
などです。