ほしぞloveログ

天体観測始めました。

タグ:ノイズ


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











ここしばらくは別の記事でしたが、再び実画像のノイズ解析です。前回の記事はこちらになります。


ここまでで、画像1枚の中にある各ノイズの貢献度が定量的にわかるようになりました。


また天体部分の信号にあたる大きさも定量的に評価でき、S/Nが評価できるようになりました。


S/Nは1枚画像では評価しきれなかったので、スタック画像で評価しましたが、あくまで簡易的な評価にすぎません。簡易的という意味は、ダーク補正はフラット補正でノイズの貢献度がどうなるかをまだ評価できていないということです。

今回の記事では、ダーク補正やフラット補正で画像の中にあるノイズがどうなるかを評価し、他数枚をインテグレートしたときに信号やノイズがどうなるのかを議論してみたいと思います。


スタック(インテグレーション)

そもそも、天体写真の画像処理で言うスタック(PixInsightではインテグレーションですね)とはどういったことなのでしょうか?

基本的には以下のように、重ね合わせる枚数に応じて、信号SとノイズNで、それぞれ個別に考えることができます。
  1. 画像の天体などの「信号部分」Sに関しては、多数枚の画像同士で相関がある(コヒーレントである)ので、そのまま足し合わされるために、信号Sは枚数に比例して増えます。
  2. 画像の天体以外の「ノイズ部分」Nに関しては多数枚の画像同士で相関がない(インコヒーレントである、コヒーレンスが無い)ので、統計的には2乗和のルートで重なっていきます。例えば5枚のノイズNがあるなら、sqrt(N^2 + N^2 + N^2 + N^2 + N^2) = sqrt(5) x Nとなるので、√5倍となるわけです。
そのSとNの比(S/N、SN比、SNR (Signal to Noise ratio))を取ることで、スタックされた画像がどれくらいの質かを評価することができます。S/N等は技術用語ですが、ある特殊分野の技術単語というわけではなく、かなり一般的な単語と言っていいかと思います。

n枚の画像をスタックすると、1の信号Sのn倍と、2のノイズNの√n倍の比を取ると、
  • S/N = n/sqrt(n) = sqrt(n)
と√n倍改善されるということです。

よくある誤解で、スタックすることでノイズが小さくなるという記述を見かけることがあります。ですが上の議論からもわかるように、ノイズが小さくなっているわけではなく、実際には大きくなっています。ノイズの増加以上に信号が増えるのでS/Nがよくなるということです。また、スタックするという言葉の中には、足し合わせた輝度をスタックした枚数で割るという意味も含まれていることが多いです。S/Nが良くなった画像をスタックした枚数で割ることで1枚画像と同じ輝度にした結果、1枚画像と比較してノイズが小さい画像が得られたということです。

もちろん、こういったことをきちんと理解して「スタックすることでノイズが小さくなる」と略して言うことは全く構わないと思います。ただ、定性的にでもいいので、どういった過程でスタックが効いてくるのかは、理解していた方が得することが多いと思います。


ダーク補正

天体写真の画像処理でも一般的な「ダーク補正」。一番の目的はホットピクセルやアンプグローなど固定ノイズの除去です。ホットピクセルは、センサーがある温度の時に撮影すると、いつも決まった位置に飽和状態に近い輝度のピクセルが現れることです。ホットピクセルの数は温度とともに多くなると思われます。アンプグローはセンサーの回路の配置に依存するようです。これが温度とどう関係があるかはほとんど記述がなく、よくわかっていません。ホットピクセルやアンプグローなどは、どのような過程、どのような頻度で出るのかなど、カメラに依存するところも多くあり、私自身あまりよくわかっていないので、今回は詳しくは扱いません。いつか温度とホットピクセルの関係は実測してみたいと思います。

ダーク補正でダークノイズは「増える」:
これまたよくある誤解が、ダーク補正をするとダークノイズが小さくなると思われていることです。ここで言うダークノイズとは、ダークカレント(暗電流)がばらつくことが起因で出てくるノイズのことです。ダークカレントとは、センサーに蓋をするなどしていくら真っ暗にしても出てくる一定の電流からの信号のことで、センサーの温度によって単位時間あたりの大きさが決まります。この信号のバラツキがダークノイズとなります。最近はメーカのカメラのところにデータが掲載されているので、そこからダークカレントを読み取ることができ、これまでもその値からダークノイズを計算し、実測のダークノイズと比較して正しいかどうか検証してきました。

何が言いたいかというと、ダーク補正をするとホットピクセルは除去できるが、ダーク補正ではどうやってもダークフレームが持っているダークノイズ(ホットピクセルでないラインダムなノイズの方)は消すことができなくてむしろ必ず増えるということです。

さらにいうと、個々のダークファイルには当然読み出しノイズ(Read noise)も含まれているので、ダーク補正時に読み出しノイズも増やしてしまうことにも注意です。読み出しノイズの増加については、次回以降「バイアスノイズ」という記事で、独立して説明します。

コヒーレンス(相関)があるかないか:
ホットピクセルは、個々のダークファイルに全て(ほぼ)同じ位置、(ほぼ)同じ明るさで出てくる、輝度が飽和しかけているピクセルのことです。アンプグローもカメラが決まれば同じ位置が光ます。どのファイルにも同じように明るく出てくるので、ばらつき具合は(中間輝度を基準とすると)全て正の方向で、互いに正の相関があり ( =「相関がある」、「コヒーレンスがある」、「コヒーレント」などとも言う)、全て足し合わされます。

一方、ダークカレンと起因のダークノイズはランダムなノイズです。個々のダークファイルのある一つのピクセルに注目して、全てのファイルの同じ位置のピクセルの値を見てみると、全ファイルのそのピクセルの輝度の平均値を基準として、個々のファイルの輝度の値は正負がバラバラになります。このことを相関がない ( =「無相関」、「コヒーレンスがない」、「インコヒーレント」などとも言う)といい、それらの値を全て足し合わせると正負なのである程度打ち消しすことになります。

ノイズの数学的な定義:
個々のダークファイルの画像のある面積を考えてみましょう。その面積の中の輝度も、平均値を中心に正負がバラバラで、その大きさも「ばらつき」があります。この「ばらつき具合」がノイズそのものです。数学的には面積内の各ピクセルの値から平均値を引いて、2乗して足し合わせたものを統計用語として「分散」と呼び、そのルートを「標準偏差」と呼びます。この標準偏差をここではノイズと呼ぶことにしましょう。

ここで注意ですが、ある面積を選ぶ時にはホットピクセルやアンプグローを含めてはいけません。ホットピクセルやアンプグローは背景のダークに比べて格段に明るく、特にホットピクセルは飽和気味の場合も多いのでで、そもそもここで考えている統計に従いません。ホットピクセルやアンプグローなどの明るい固定ノイズを除いた領域でダークノイズを測定する必要があります。ちなみに、飽和気味のホットピクセルを含んで測定してしまうと、とんでもなくばらついているようなものなので、結果はノイズがとんでもなく大きく出てしまうということは、言うまでもありませんね。

ノイズの重ね合わせの直感的なイメージ:
あるダーク画像1枚のある面積のノイズがNだったとします。他のダーク画像も同様にノイズNがあるとします。このダーク画像を例えば2枚足し合わせると、個々のピクセルは正負バラバラなのである程度打ち消します。その打ち消し具合は統計的には無相関の場合は「2乗和のルート」で合わさることになります。この場合2枚なので、
  • sqrt(N^2+N^2) = √2 x N
とルート2倍になります。正負で打ち消すということで、2倍にはならずに、元から減ることもなく1倍以下にもならなくて、結局その中間くらいということは直感的にイメージできるかと思います。

負の相関について:
あと、負の相関も考えておきましょう。ある画像で特徴的な形で明るい部分があるとします。もう一枚の画像では同じ形ですが、1枚目の明るさを打ち消すようにちょうど逆の暗い輝度を持っているとします。2枚の画像を足し合わせると、正負で、しかも明るさの絶対値は同じなので、ちょうど打ち消すことができます。このようなことを互いに「負の相関がある」と言います。でも天体写真の画像処理の範疇ではあまりない現象なのかと思います。


ダーク補正の定量的な扱い:
実際の画像処理では、ダーク補正というのはライト画像からマスターダーク画像引くことです。マスターダークファイルとは、個々のダークファイルを複数枚重ねて、輝度を元と同じになるように枚数で割ったものですから、 個々のダークノイズをNとして、n枚重ねて、輝度を枚数nで割ったとすると、マスターダークファイルのダークノイズ
  • N_ masterはsqrt(n x N^2) / n = 1/√n x N
となり、元のノイズのルートn分の1になります。

各ライトフレームにも当然ダークノイズは含まれています。ダーク補正をする際に、各ライトフレームのダークノイズと、マスターダークファイルに含まれるダークノイズは、ここまでの議論から2乗和のルートで「増える」ことになります。

1枚のライトフレームのダーク補正:
個々のライトフレームがマスターダークファイルで補正されると、補正後のダークノイズは
  • sqrt(N^2+N_ master^2) = sqrt(N^2+(1/√n x N)^2) = N x sqrt(1+1/n)
となり、sqrt(1+1/n) 倍にごく僅か増えます。

ダーク補正されたライトフレームのスタック:
これらのダーク補正されたライトフレームをスタックします。スタックの際、ライトフレームに元々あったダークノイズは個々の補正されたライトフレームでランダムに(無相関に)存在するので2乗和のルートで合わさり、輝度を揃えるために最後にライトフレームの枚数で割るとします。

マスターダークファイルで足された(ルートn分の1の小さい)ダークノイズは、スタックされる際に「(同じマスターダークファイルを使い続けるために)正の相関を持っている」ことに注意です。

2枚のスタック:
  • sqrt([sqrt(N^2+N^2)]^2 + [N/sqrt(n)+N/sqrt(n)]^2) = N sqrt(sqrt(2)^2 + [(2/sqrt(n)]^2) = N sqrt(2 + (2^2)/n) 
大外のsqrtの中の、1項目が無相関で2乗和のルートで足し合わさるノイズ。2項目が正の相関を持ってそのまま足し合わさるノイズ。それぞれがさらに2乗和となり大外のsqrtでルートになるというわけです。

3枚のスタック:
  • sqrt([sqrt(N^2+N^2+N^2)]^2 + [N/sqrt(n)+N/sqrt(n)+N/sqrt(n)]^2) = N sqrt([sqrt(3)^2 + (3/sqrt(n)]^2) = N sqrt(3 + (3^2)/n)

ライトフレームの枚数をnl枚として、
nl枚をスタックすると:
  • N sqrt([sqrt(nl)^2 + (3/sqrt(nl)]^2) = N sqrt(nl + (nl ^2)/n)

スタックされたライトフレームの輝度を、1枚の時の輝度と合わせるためにnlで割ると、上の式は少し簡単になって:
  • N sqrt(nl + (nl ^2)/n) /nl = N sqrt(1/nl + 1/n)
と ライトフレームの枚数nl分の1とダークフレームの枚数n分の1の和のルートで書ける、直感的にもわかりやすい形となります。

簡単のため、個々のライトフレームの枚数と、個々のダークフレームの枚数は同じnとしてみましょう。
n枚のスタックは:
  • N sqrt([sqrt(n)^2 + (n/sqrt(n)]^2) = N sqrt(n + (n^2)/n) = N sqrt(n + n) = N sqrt(2n)

となり、結局は「1枚当たりのライトフレームのダークノイズNがn枚」と「1枚当たりのダークフレームのダークノイズNがn枚」合わさったものと同じで、√2n倍のノイズとなります。

マスターダークを考えずに、ダーク補正をまとめて考える:
これは直接「n枚のライトフレーム」と「n枚のダークフレーム」のダークノイズを全て足し合わせたものを考えることと同等で、実際に計算してみると
  • sqrt(n x N^2 + n x N^2) =  N sqrt(2n)
と、1枚1枚処理した場合と同じなります。数学的には
  1. 事前にマスターダークを作ってから個々のライトフレームに適用しても、
  2. 全てのダークノイズをライトフレーム分とダークフレーム分を一度に足しても
同じ結果になるということです。これは直感的にわかりやすい結果ですね。

重要なことは、たとえ頑張ってライトフレームと同じ枚数のダークフレームを撮影して補正しても、補正しない場合に比べてノイズは1.4倍くらい増えてしまっているということです。もっと言うと、補正しない半分の数のライトフレームで処理したものと同等のダークノイズになってしまういうことです。ホットピクセルを減らすためだけに、かなりの犠牲を伴っていますね。

枚数が違うダークフレームでの補正:
例えばある枚数のライトフレームを枚数が違うダークフレームで補正する場合を具体的に考えてみます。

例えば10枚のライトフレームと、同じ露光時間とゲインのダークフレームが10倍の100枚あるとするとします。ダークノイズ起因のS/Nはライトフレームは1/√10=0.316となり、ダークフレームでは1/√100 =1/10となります。ダーク補正したライトフレームは
  • sqrt(1/10+1/100)=sqrt(11/100)=√10/10=0.332
となり、ダーク補正する前の0.316よりほんの少し悪くなる程度に抑えることができます。同様の計算で、2倍のダークフレームだと約4分の1のノイズ増加、3倍のダークフレームがあれば約10分の1のノイズ増加に抑えられます。

では闇雲にダークフレームの数を増やせばいいかというと、それだけでは意味がなくて、他のノイズとの兼ね合いになります。画面のノイズがダークノイズで制限されていいればどの通りなのですが、例えば明るい空で撮影した場合にはノイズ全体がスカイノイズに支配されていることも多く、こんな場合にはダークフレームの枚数は少なくても、それによるノイズの増加は無視できるということです。


フラット補正

フラットフレームは一般的にライトフレームと同じゲインですが、露光時間は異なることが普通です。そのためフラット補正を真面目に計算すると、ダーク補正よりもさらに複雑になります。

ただし、ライトフレームの輝度はライトフレームの背景よりもはるかに明るいことが条件として挙げられるので、補正の際にフラットフレームの輝度を、ライトフレームの背景の輝度に合わせるように規格化する(割る)ので、ノイズに関してもその分割られて効きが小さくなると考えられます。

その比はざっくりフラットフレームの露光時間とライトフレームの露光時間の比くらいになると考えていいでしょう。最近の私の撮影ではライトフレームが300秒露光、フラットフレームが最も長くても10秒露光程度で、通常は1秒以下です。ノイズ比が30分の1以下の場合、2乗和のルートとなると1000分の1以下となるので、実際にはほとんど効いてきません。さらにフラットファイルも多数枚をスタックするので、スタックされたライトフレームと比べても、効きは十分小さく、無視できると考えてしまっていいでしょう。

ただし、暗い中でフラットフレームを作る場合はその限りではなく、ノイジーなフラットフレームで補正をすることと同義になるので、注意が必要です。ここでは、フラットフレームは十分明るい状態で撮影し、フラット補正で加わるノイズは無視できるとします。


まとめ

スタックとダーク補正でノイズがどうなるか計算してみました。理屈に特に目新しいところはないですが、式で確かめておくと後から楽になるはずです。

今回は計算だけの記事で、しかもスタックを1枚づつ追って計算しているので、無駄に長く見えるような記事になってしまいました。でもこの計算が次のバイアス補正のところで効いてきます。ちょっと前にX上で黒天リフさんがバイスについて疑問を呈していましたが、そこらへんに答えることができればと思っています。










この記事は「実画像のノイズ評価(その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とかけ離れています。一つの可能性は、北の空なので街明かりが効いていたというのはあり得るかもしれません。と考えると、チリも方向によって明るさが結構違うのか?昔方個別の光害マップ「ふくろう」というのがあったのですが、残念ながらもう稼働していないようです。

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


まとめ

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

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

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








 

前回の記事では、ノイズだけ考えたら露光時間を短くしてもいいという結論でしたが、一つ重要なことを言い忘れてました。今回の記事につながることなのですが、露光時間を短くしすぎると、天体自身が暗くなりすぎる場合があります。これまで考えてきたノイズNに対して、目的の天体である信号Sが小さすぎて、S/N(Signal to Noise ratio, SN比)が悪くなってしまうということです。

露光時間を伸ばしたり縮めたりすることで、ADC(Analog to Digital Converter)のダイナミックレンジ内に、適した大きさの信号を入れるということです。露光時間を伸ばすと、ダークノイズもスカイノイズも大きくなるので、単に暗いからといって闇雲に長くすればいいというわけでもないです。

露光時間もそうですが、カメラのゲイン(一眼レフカメラならISO)も同じような状況で、こちらも信号をADCのダイナミックレンジ内に持ってくるという重要な役割があります。同時に、ゲインを変えると読み出しノイズの効きも変わってくるので、こちらも単純な話ではありません。




ゲインの調整

まず簡単なゲインの方から片付けましょう。最近のCMOSカメラのゲインの選択については、天体写真撮影の場合、ほぼ2択のみだと考えています。具体的には、ゲイン0か、HCG (High Conversion Gain)モードが起動するところです。HCGが起動するゲインはカメラによりますが、典型的にはゲイン100とか120とかです。少しピックアップしてみると
  • ZWO ASI294MC, MC Pro, MM Pro (IMX294): gain 120
  • Player One Artemis-C Pro (IMX294): gain 120 
  • ZWO ASI533 MC Pro, MM Pro (IMX533): gain 100
  • Player One Saturn-C (IMX533): gain ~125
  • ZWO ASI2600 MC Pro, MM Pro (IMX571): gain ~100
  • Player One Poseidon-C Pro, M Pro (IMX571): gain ~120
  • ZWO ASI2400 MC Pro (IMX410): gain ~140
と、100から140、典型的には120ですかね。センサーが同じでもHCG発動ゲインはメーカーによって違うので、これはセンサー自身で決まるのではなく、カメラメーカーの組み込みの際のアナログ回路のゲイン調整で決まるものかと推測されます。

どのカメラも、グラフを見てもらうとわかりますが、ゲインが0かHCGのところでダイナミックレンジが大きいです。このダイナミックレンジが大きいというのが有利なところになるので、ゲインは2択となるわけです。明るい対象ならゲイン0、暗い対象ならHCGということです。

ラッキーイメージや電視観望など、露光時間が極端に短く、ダイナミックレンジを犠牲にしても明るく撮りたい場合は、ゲインをもっと上げて信号をADCの適正範囲内に持ってくるということは、戦略として正しいかと思います。私はラッキーイメージはあまりやりませんが、電視観望の場合はゲインを400とかそれ以上にします。

さて、典型的なHCGのゲイン120ですが、ゲイン0とどれくらい明るさが違うのでしょうか?ゲインの単位は0.1dBなので、12dBの違いがあることになります。では12dBとはどれくらいの倍率なのでしょうか?

定義式は20 x log10(gain)なので、0dBで1倍、20dBで10倍、40dBで100倍、−20dBで0.1倍、-40dBで0.01倍、6dBで2倍、−6dbで1/2倍、10dBで約3倍、−10dbで約1/3倍とかなるので、12dbだと6+6dBで、2x2=4倍になります。実測でもほぼ4倍になります。そう、高々4倍なのですよね。

高々これくらいの違いなので、淡い天体写真の場合にはゲインを上げて明るく撮ったほうが有利なので、実質的にはゲインはHCGのところ一択だと思っていて、私はゲイン0dBで撮影したことは未だありません。

というわけで、ゲインはHCGのところで固定としましょう。これ以降の明るさ調整は、露光時間のみで行うことにするとします。


露光時間の調整

ゲインが固定なら、露光時間は目標天体が十分な明るさになるように設定すればいいだけです。でも、この「十分な明るさ」というのが、ものすごく難しいのです。

ある露光時間で撮影した天体の明るさと、前回までで求めたノイズからS/Nが決まります。当然S/Nは高いほどいいので、露光時間を伸ばせば伸ばすほどS/Nは上がり、星雲などの淡い天体はよく見えるでしょう。でも撮影しているのは星雲とかの淡い天体ばかりではなく、恒星など狭い範囲ですが非常に明るくなる天体も含まれています。露光時間を長くすると、当然このような明るい恒星などは飽和してしまいます。そのため、露光時間に上限ができます。それでも画角内に3等星や2等星以上の明るい恒星があると、飽和を避けて淡い天体を写すことは難しくなってきて、その場合は飽和を許容し、明るい恒星のためにあえて露光時間を短くして暗くして別撮りし、HDR(High Dynamic Range)合成などという手を取ることもあり得ます。

露光時間の上限は飽和のみで決まるというわけではなく、赤道儀などの性能でも決まり、星像が流れない範囲で露光時間の上限が決まるということもあるでしょう。突発的な車のライトの映り込みなどもあり得ることを考えると、露光時間を例えば1時間とすることはあまり現実的ではありません。


S/Nの見積もりかた

これまでの検証で、具体例として開田高原で撮影したM81の1枚画像では、背景光の部分は14.9 [e]くらいのノイズがあって、その中でスカイノイズが支配的だということがわかっています。

でも1枚撮りの画像を見ているだけだと、どこが分子雲でどこが背景なのか、なかなかわからないと思います。例え分子雲がある場所だとしても、この1枚画像だけでは分子雲としての信号に相当するSが小さいため、S/Nが相当低くなってしまっていて、おそらく1以下とかになっているということです。

ではここでクイズです。そもそも、S/Nが「1」ということはどういうことなのでしょうか?単純にはノイズNに対して、同じ大きさの信号Sがあるということです。でも、Nと同じ大きさのSというのも、よく考えるとあまり単純なことではありません。例えば、ノイズとして背景光が支配的で、背景光の量が100、そのノイズがルートをとってN=10と仮定します。この時、天体が写っている領域の輝度を測定したとして、一体幾つならば、S/Nが1となるでしょうか?単位は面倒なのでノイズも信号も [ADU] (ADCのカウント数)とします。

ノイズが10 [ADU]なので、測定された輝度が10 [ADU] となる所がS/Nが1となるのでしょうか?でも、一番暗いはずの背景光自身が100もあるので、(ある領域の輝度を平均した場合)輝度が10の所なんて、そもそも無いですよね。なので、ここでは測定された(平均)輝度から背景光を引いたものと比較するとしましょう。色々考えたのですが、こう考えるのが一番自然かと思います。この場合、輝度が110と測定されたところが110-100=10でSが10となり、S/Nが1となる所です。例えば、輝度が200ならば、200-100=100でS/Nが10になりますね。

でも実はこれだけではまだ不十分で、まず撮影された画像には底上げされたオフセットがある可能性があります。SharpCapやNINAで「輝度」とか「オフセット」とかいう値です。ASI294MM Proではこの値に16をかけたものが画面全部に加わっています。 この値をあらかじめ輝度から引いてやらなければならないことに注意です。私は撮影時はいつも40という値を使っているので、40x16=640を、測定した輝度から引いた値が正しい輝度になります。

さらにややこしいのが、天体部分の明るさからくるショットノイズがノイズとして加わります。分母のノイズ部分に、明るさのルートからくるショットノイズを2乗和のルートを取る形で加えてやり、それがノイズNとなります。淡い天体部分ではあまり効きませんが、明るい天体部分では無視できないでしょう。 

さらに忘れてはいけないのは、背景ではスカイノイズが 支配的として考えましたが、ダークノイズや読み出しノイズが支配的な状況では、これらのノイズも2乗和のルートを取る形で加えてやる必要があります。

こうしてNが決まるので、多少ややこしいですが、Sの値としては、測定した輝度値から背景光量とオフセット量を引くということに注意すればいいのかと思います。


実際の画像でのS/Nの見積もり
 
では、実際の撮影画像でどれくらい信号があるのか見積もってみましょう。評価したいのはこれまでと同じ、開田高原で撮影したM81のL画像の1枚撮りです。1枚撮りのRAW画像をストレッチしたものが下になります。

2023-01-21_22-52-45_M 81_L_-10.50C_300.00s_0000_HT
 
今回は背景と分子雲のところの違いを見たいのですが、1枚撮り画像だと背景と分子雲の見分けがつきません。そのためまずはスタック済みでS/Nを上げたものを使います。

ただし、通常のWBPPなどのプロセスでスタックしたものは、ダーク補正やフラット補正、さらにIntegration時に背景の規格化などをしていて、背景の値が変わってしまうため、今回はこれらの補正や規格化を一切しないでスタックした画像を、別途用意しました。スタック済み画像で評価して、スタックの効果を取り除いて1枚画像でのS/Nを評価しようという算段です。

下が、スタック済み未処理画像をjpegにしたものです。リニア画像なので、実際の見た目は真っ暗で、所々に恒星が見えるだけです。
just_integration1_HT_normal

わかりやすくするためにマニュアルでストレッチしたものを下に載せておきますが、測定はあくまで上の真っ暗な画像を使います。フラット補正や、ABE、DBEなどをしていないため、周辺減光もそのまま残ってしまっています。それでも銀河本体の周りに分子雲があるところなどがわかると思います。

just_integration1_HT

その中で、右下部分で、下の画像のように三点を抜き出して評価します。
previews

  • Preview01が「背景」に近いかなり暗いところ
  • Preview02が少なくとも「分子雲」とはっきりわかるところ
  • Preview03が「銀河の腕」の部分
の3箇所で進めます。一点での測定ではノイズのため輝度にばらつきが出てしまうので、PixInsightのプレビュー機能を使い、ある程度の面積の平均輝度を測定しました。実際の測定は暗いリニア画像を用いています。
    結果は
    • 背景: 940.8 [ADU]
    • 分子雲: 943.2 [ADU]
    • 銀河の腕: 974.9 [ADU]
    となりました。今回、背景と言っても本当の背景かどうかはわからないのですが、周辺減光の影響があまりなさそうな所でかなり暗いところを選んだので、ここの輝度を背景光の平均輝度とします。このシリーズのその1で測定した920と20程度の差がありますが、あの時は比較的暗い画像を選んだので、スタックして平均をとるとこのくらいになるのかと思います。場所は同じようなところを選んでいます。

    これらの値から、オフセット分の40x16 = 640を引くと
    • 背景: 300.8 [ADU]
    • 分子雲: 303.2 [ADU]
    • 銀河の腕: 334.9 [ADU]
    となります。これが実測の輝度となります。

    さらに、天体部分の後ろ2つから、背景光分の輝度300.8を引くと
    • 分子雲: 3.2 [ADU]
    • 銀河の腕: 34.9 [ADU]
    となりますが、これが信号のSに相当します。単位は[ADU]なので、コンバージョンファクターを使って[ADU]から[e]に変換します。コンバージョンファクターは測定値の[ADU]から、比較に便利な共通単位の[e]に変換できる、重要な値でしたね。ここでは横軸gainが120の所の、0.9 [e/ADU]を上の値に掛けてやります。その結果
    • 分子雲: 2.9 [e]
    • 銀河の腕: 31.4 [e]
    となります。

    一方ノイズですが、同じ場所の実測値を使います。これまで見積もり値を使ってきましたが、実測値とよく一致していることがもうわかっているので、そのまま実測値を使ってしまっていいでしょう。なぜ実測値を使いたいかというと、天体の明るさが起因のショットノイズも含んでいるからです。そのため、より現実的なS/Nを得ることができるからです。ノイズの実測値は、単位を[e]にするところまで求めて、
    • 背景: 3.07 [ADU] -> 2.76 [e]
    • 分子雲: 3.16 [ADU] -> 2.84 [e]
    • 銀河の腕: 3.73 [ADU] -> 3.36 [e]
    となります。

    SとNが単位[e]で出たので、S/Nが計算でき、
    • 分子雲部分のS/N: 2.9/2.76 =  1.04
    • 銀河の腕部分のS/N: 31.4/3.36 = 11.0
    となりました。

    ヒョエー!?
    分子雲のところ、何とS/Nがわずか1程度です!
    しかもこれ28枚の画像をスタックした後の値ですよ...。

    S/N=1ということは、背景に比べた明るさの持ち上がり具合が、そこでの輝度のばらつき具合と同じくらいということです。実際、スタックされた画像を見る限り、やはりそれくらいかと思います。

    さらに1枚画像で考えると、S/Nはルート28 = 5.3分の1に減るので、1.04 / 5.3 = 0.196となります。やはり1枚画像ではS/Nが1よりかなり下で、分子雲がノイズの中に埋もれてしまい、見分けがつかなかったということに納得できます。

    その一方、銀河の部分はかなり明るくS/Nも10以上と高いです。スタックの効果を無くした1枚画像でも、同様の計算で11.0 / 5.3 = 2.08となり、S/Nが2を超えていて十分に大きく、撮影直後でもストレッチさえしてしまえば腕の形も認識できることがわかります。
     

    まとめ

    今回は信号を考えてみて、実際の画像の特に淡いところを見積もってみました。S/Nの具体的な評価方法がかなり見通しよくなったかと思いますし、実際の画像を見た直感的な印象ともかなり一致すると思います。

    今回の計算中に、前の記事での細かい計算ミスが見つかり、直しておきました。もしかしたらまだ大きな勘違いがあるかもしれないので、もし何か気づいた方がいましたら、コメントなどお願いします。







    この記事は、実画像のノイズ評価(その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を求めています。








    CMOSカメラの理解に

    2022年4月にCQ出版から発行された、米本和也著の「CCD/CMOSイメージセンサの性能と測定評価」という本を最近購入しました。

    4C41CA05-0464-4FFA-9C72-34FC9FAC6783

    ここしばらくASI2400MC ProというフルサイズのCMOSカメラを使っていたのですが、その性能の良さにびっくりしています。フルサイズというと徐々にハイエンドに近いセンサーになりつつあり、最先端の技術も注ぎ込まれていると想像します。この本を読むと、天文カメラメーカーから出ている仕様説明はごく僅かで、他に多くの技術やパラメータが絡む仕様があることがわかります。


    アマチュア天文という観点から中身を見てみると

    著者は1980年代からソニーでCCDに関わっていて、2001年以降各社で経験を積み、2016年から再びソニーセミコンダクタソリューションズの研究部門に戻っているとのことで、完全にプロの開発者視点での解説書になります。

    1章は概要や単位などの解説。

    2章の原理説明はCCDが基本で、CMOSも追加で説明という感じで、両方の原理を理解する必要がありますが、ここら辺は基本なので理解しておいた方がいいでしょう。ただし、初読でここだけを読んで理解するのは大変かと思います。

    その場合、同著者の2003年発行の前作、CQ出版の「CCD/CMOSイメージ・センサの基礎と応用」を読むといいでしょう。

    49687E36-6E28-4B38-AF11-1BA228DE3B9B

    こちらの方はもっと原理から解説していますので、アマチュア天文という観点からは今回の新しく出た方が身近に感じるのかと思います。

    今回は前作から20年近く経っているためでしょう、CMOSカメラの解説が多くなってきていて、タイトルにあるように「測定」にも言及するなど、CMOSカメラでの撮影が主流になったアマチュア天文民にも役に立つことも多いです。それでも今回も原理的な説明もかなり多いためか、参考文献を見ても1960年代や70年代のものがあります。随時2000年代、2010年代の参考文献が入ってくるので、新しい話も貪欲に取り込んでくれているのかと思われます。

    3章以降が具体的な信号ノイズの例や、測定についてです。アマチュア天文ユースという観点で読み込んでいくうちの、いくつかポイントを書いておきます。

    3章は感度についてです。基本的に暗い天体を撮影することが多いため、これまでノイズのことはこのブログでも色々言及してきましたが、その一方、明るい信号側に相当する感度のことはせいぜい量子効率くらいで、私自身あまり考えてこなかったことを痛感させられました。裏面照射の構造とマイクロレンズの関係、周辺減光と瞳補正など、これまで知らなかったことも多いです。

    4章は飽和に関してです。ここもかなり原理的に説明してくれています。これまでほとんど知識がないところでした。ダイナミックレンジの話や、飽和電指数の測定の話は、私はまだ馴染み深かったです。

    天体写真という観点で一番関連するとことは、やはり5章のノイズでしょうか。P93の図5−1はEMVA1288規格でもよく出てくる図で、理解しておいた方がいいかもしれません。

    特に固定ノイズの説明が詳しいです。天体写真関連ではバイアスノイズ(バイアスフレームに出る縞々のノイズのこと)とかが関係するのかと思います。今までなんでこんなノイズが出るのかあまり知らなかったのですが、ここを読むとよく理解できます。ただし読んでいる限り、ユーザーでどうこうできるわけではないことがわかるので、これは今後のメーカーの開発に期待するしかないですね。

    ランダムノイズに関しては、天体写真をやられる方は普段から身近につきあっていると思いますので、比較的読みやすいかと思います。

    3章の信号測定の方はあまり考えたことがなくて読んでいてもなかなか想像がつきにくかったですが、5章のノイズの測定のほうはまだ馴染み深いです。それでもかなり原理的な測定の説明も多く、実際これだけ読んで自分で測定するというのはなかなか難しいかと思います。むしろ、天体写真の画像処理はノイズ測定に近い様なことをやっているようなものです。実際にこの本を元に測定するにはもう一段階、具体的な説明が欲しいとことです。

    6章で面白いのはフレアパターンでしょうか。これは天文愛好家の間ではサッポロポテト現象とよばれているものかと思います。その発生メカニズムが書かれているので、理解が進みます。これまであまりきちんと書かれているのを見たことがなかったので新鮮でした。ただし、これもユーザーでどうこうできるわけではないようです。また、あぷらなーとさんが理解している、Quad配列のASI294シリーズでなぜサッポロポテト現象が出なくなるかは、この本を読んだだけではまだ理解できません。もっと考えるとわかるのかもしれませんが、まだ私は理解できていないです。

    ところで、最後まで読んでもコンバージョンファクターなどの話が全く出てきませんでした。センサーの仕様を理解するためには重要な情報かと思っていたのですが、開発者から見たら当たり前すぎることなのかもしれません。そういえば、以前コンバージョンファクターのことを聞いたとき「論文になっているような専門的なことではないし、かといって教科書に出る様な基礎的なことでもない」とか聞いたことがあります。


    まとめ

    アマチュア天文の範疇でこの本がどこまで役に立つかは、かなり専門的なところもあるので、なかなか判断が難しいです。多くのことは開発者目線での解説になっています。ユーザーの視点でどうこうできるかは、タイトルにもなっている「測定評価」という点においても、なかなか具体的な手法というと難しいかと思います。アマチュア天文ということを考えても、この本は具体的な方法を学ぶというよりは、原理を学ぶという観点で読んだ方がいいのかと思います。

    特にCMOSカメラで疑問がある方には、かなりの原理的なところまで立ち返って、相当のレベルで答えてくれる書籍であることは間違い無いでしょう。¥3300円と専門書としては比較的安価な部類です。天体写真に真面目に取り組んでいるアマチュアならば、持っていても損はないかと思います。


    このページのトップヘ