ASI294MC Proのコンバージョンファクターを求める一環であぷらなーとさんからのコメントがあり、debayerせずにRGGBの画素ごとに分離してみたらという助言がありましたので試してみました。 

RGB分離したファイルからS-N^2分布をプロットするpythonコードを、fitsから直接CFA (Color Filter Array)のRGGBの4つ分に分離するようなものに改良して再度プロット。画像数は縦横2分の1、面積では4分の1になります。結果が以下のようになります。

20190304_02_Conversion_Factor_CFA



ところがグラフを見てもわかるように、全然メーカー値(コンバージョンファクター: 4程度、ユニティーゲイン:120程度)を再現できていません。要するに各画素の画像ファイルのノイズが大きい、すなわち輝度のばらつきが大きすぎるのです。 自分で書いたルーチンが何かおかしいのかと疑い、PixInsightを使ってマニュアルでも解析してみました。

PixInsightにはPreprocessingのところにSplitCFAというコマンドがあります。これを画像に適用してやると、画素ごとに分離された画像が自動的に出来上がります。この画像を使って、これもPixInsight上のImageInspection -> Statisticsで統計的な値をみてやりましたが、pythonで解析したのと同様の傾向でした。また、CosmeticCorrectionでのホットピクセルとクールピクセルの除去は結果にほとんど影響を与えませんでした。これは中心付近だけをみてもほとんどホットピクセルとクールピクセルが入っていないからかと思われます。

わかりやすいところで、輝度10000付近になるところを例として、結果を示しておきます。

Capture_00_16_30_00010_00_20_06_cc_CFA0->Preview01
CFA0 CFA1 CFA2 CFA3
count (px) 15544 12540 15120 14868
mean 10205.3 9805.5 9803.4 9209.9
median 10205.5 9806.6 9803.6 9209.6
stdDev 65.7 67.0 65.3 61.1
avgDev 52.6 53.2 51.9 48.9
MAD 44.0 44.0 44.0 42.0
minimum        9912.5 9528.6 9543.6 8977.6
maximum        10444.5 10049.5 10084.5 9475.6


Capture_00_16_30_00010_00_20_06_cc_RGB_VNG->Preview01
R G B
count (px) 14950 14950 14950
mean 10229.3 9798.6 9206.1
median 10229.5 9798.8 9206.9
stdDev 59.566 56.9 57.6
avgDev 47.138 44.4 45.6
MAD 39.040 36.2 38.0
minimum 10003.5 9551.6 8941.1
maximum 10484.4 10049.5 9445.2


上がCFAで分離した場合、下がdebayerした場合になります。赤いところを見比べればいいのですが、全く同じ画像から作り出したにも関わらず、明らかにCFA分離の方が平均偏差(avgDev)が大きく出てしまっています。あまり大きな差に見えないかもしれませんが、分布図を作るときにこの値を2乗してプロットするので、ざっくり(52/46)^2で1.28、約3割の増加です。1次グラフの傾きも3割くらい変わってきて、コンバージョンファクターも、ユニティーゲインも3割くらい(ZWOカメラのゲインにして40程度)変化があります。

どうもPixInsightでdebayerをするときにばらつきが減るような効果があるようなのですが、なぜそうなるのかはまだよく理解できていません。ただ、SharpCapでもただちにRGBにdebayerして測定していると思われるので、とりあえずはdebayerを正しいと思って進めることにします。

まとめですが、今回の過程でまだ2つのしっくりこない部分が残りました。
  • ばらつき具合を評価するのに標準偏差よりも平均偏差を使ったこと。
  • debayerとCFA分離でノイズに明らかに差が出る。debayerの方がノイズが少ない。
ということが判明したのですが、特に後者のわかりやすい説明があれば知りたいです。

debayerの時に周りの(同じカラーの)ピクセルの値を一部情報として輝度を決めるはずなので、確かに少しばらつきがなくなるというのも一理あるのですが、はたしてそれを性能評価として使っていいものなのか?科学的には間違っている気がしてなりません。

ではなぜメーカー値もSharpCapも同じ値を出せるのか?やはりまだ何か自分が根本的に間違っているのでしょうか?