★先日来、気になっていたこと
ASI294MC-Proの謎解きシリーズ第5弾ですが、今回は先日来気になっていたバイアスノイズ分布の「形」解明の糸口を探ってみます。
本来、バイアスノイズが正規分布に従っているとすると、その輝度分布グラフを片対数グラフで表すと、理論上は上に凸の放物線が描かれるハズです。
ところが実際のグラフは、下記のように放物線よりも裾野が広がってしまってます。

これはもう少し細かく『解析ごっこ』する必要がありそうです。
★2つの仮説
この一見奇妙な現象について、2つの仮説を立ててみました。
<仮説①>バイアズノイズの発生源が2種類ある
発生源というよりは発生タイミングと言う方が適切かも知れませんが、要するにゲインアップによる増幅が成される前後に2種類のノイズが発生しているのではないかという仮説です。これは、上記のノイズ輝度分布グラフにおいて、『裾野のピーク』が『全体のピーク』とズレていることから思いついたことです。
試みとして、平均値と標準偏差が異なる2種類の正規分布を仮定してシミュレーションしてみると、下記のようになかなか興味深い再現度を示します。
<仮説②>性質の異なる2種類の素子が混在している
これはピクセル毎にその特性が異なっており、いわばバイアスノイズが少ないピクセルと多いピクセルが混在しているという仮説です。これまでのバイアスノイズ推算に関しては、1コマのバイアスファイルに展開する全ピクセルごとの輝度がどのようにばらついているのかを統計したものであって、いわば『空間的ノイズ』と表現できます。しかし、これとは別に撮影フレームごとに輝度が変動する効果も存在しているべきで、こちらはいわば『時間的ノイズ』とでも言えましょうか。
前者の場合は他のピクセルよりも高輝度(あるいは低輝度)であるピクセルが展開していればバイアスノイズの標準偏差が大きくなるように寄与するはずですが、実はこれは『良性のノイズ』であって、十分にコンポジット枚数を稼いだバイアスファイルやダークファイルで殲滅できることが期待されます。
それに対して後者の場合は厄介で、バイアスやダークの減算では対処できません。
★個々のピクセルはどのような輝度変化をしているのか?
ここまでに行った『解析ごっこ』では1コマのバイアスフレームだけを扱っていましたが、個々のピクセルがどのように時間的変化をしているのかを調べて見ることにしました。
ゲイン120で撮影したバイアスフレーム128コマ分について、同じ場所のピクセルを各500個抽出し、それぞれのバイアス出力分布を拾ってみました。
横軸はピクセルNoで、縦軸がバイアス出力値(光電子数に変換済)です。
ここではNo340~500のピクセルについてプロットしましたが、それぞれのピクセルによって、その輝度平均値が異なるだけでは無く、輝度値の散らばり方も異なる事が分かります。
要するに、バイアスについては『明るすぎるピクセル』と『暗すぎるピクセル』と『明滅するピクセル』が混在していることが推測できますね。
では、その中でも「平均輝度が似ているにも関わらず、そのふらつきが異なる」例をお見せしましょう。
ででん!!
上のグラフはチップ上の座標が(39,1000)のピクセル、下のグラフは座標(19,1000)のピクセルについての時間変化(フレーム毎の出力変化)です。出力値はそれぞれ光電子数に変換済みです。
どちらのピクセルも平均出力が約122ですが、その標準偏差が約1.4と約9.8というようにまるで異なります。下の様な特性を持つピクセルに関しては原理上、単純なバイアスファイル減算だけではノイズ除去できそうにありませんね。そもそもバイアスファイル(やダークファイル)の減算で除去できるのは「ピクセル間の平均輝度差」であって、個々のピクセルの輝度値がふらつく影響は回避できないからです。こちらについてはコンポジットによってのみ軽減できると言えそうです。
★平均輝度と標準偏差の間に相関はあるか?
さて、冒頭のバイアス輝度分布図では『裾野が広がっている』という傾向が見られました。
これがピクセルごとの差異だと仮定すると平均輝度ごとに標準偏差が異なることが予想されます。
今度は、これについてチェックしてみましょう。

データ数が高々500ピクセル分ですから、統計的に有意かどうかは疑問ですが、ザックリとした傾向として、先ほど見たような『異質なピクセル』以外の群についても系統的に
バイアス輝度の平均値から外れたピクセルは(明るいピクセルも暗いピクセルも)その輝度変化(標準偏差)が大きい傾向にありそうだということは言えそうです。
★さて・・・・と
なんだか調べれば調べるほど色々と謎が深まりますが、これ以上立ち入るには(Delphiで書いた)現有の解析ツールでは少々力不足です。
今後、コンポジットした場合やバイアスファイル減算などをした効果も調べたいのですが、ステライメージで画像処理した後だと(データと同じ16bit整数型で保存しても)上手くロードできないのですね。ま、単に私が書いたコードがZWOのASIシリーズに特化されすぎていて汎用性が低いのが原因ではあるのですが、このままだとバグ取りだけで何ヶ月もかかってしまいそうです。それになにより、実行速度が遅すぎて、大量のファイルをさばくのには限界が・・・・。
・・・・というわけで・・・・
むう?今度は、ぱ・・・Pythonだと??