ASI294MC Proのコンバージョンファクターを求める一環であぷらなーとさんからのコメントがあり、debayerせずにRGGBの画素ごとに分離してみたらという助言がありましたので試してみました。
RGB分離したファイルからS-N^2分布をプロットするpythonコードを、fitsから直接CFA (Color Filter Array)のRGGBの4つ分に分離するようなものに改良して再度プロット。画像数は縦横2分の1、面積では4分の1になります。結果が以下のようになります。
ところがグラフを見てもわかるように、全然メーカー値(コンバージョンファクター: 4程度、ユニティーゲイン:120程度)を再現できていません。要するに各画素の画像ファイルのノイズが大きい、すなわち輝度のばらつきが大きすぎるのです。 自分で書いたルーチンが何かおかしいのかと疑い、PixInsightを使ってマニュアルでも解析してみました。
PixInsightにはPreprocessingのところにSplitCFAというコマンドがあります。これを画像に適用してやると、画素ごとに分離された画像が自動的に出来上がります。この画像を使って、これもPixInsight上のImageInspection -> Statisticsで統計的な値をみてやりましたが、pythonで解析したのと同様の傾向でした。また、CosmeticCorrectionでのホットピクセルとクールピクセルの除去は結果にほとんど影響を与えませんでした。これは中心付近だけをみてもほとんどホットピクセルとクールピクセルが入っていないからかと思われます。
わかりやすいところで、輝度10000付近になるところを例として、結果を示しておきます。
上がCFAで分離した場合、下がdebayerした場合になります。赤いところを見比べればいいのですが、全く同じ画像から作り出したにも関わらず、明らかにCFA分離の方が平均偏差(avgDev)が大きく出てしまっています。あまり大きな差に見えないかもしれませんが、分布図を作るときにこの値を2乗してプロットするので、ざっくり(52/46)^2で1.28、約3割の増加です。1次グラフの傾きも3割くらい変わってきて、コンバージョンファクターも、ユニティーゲインも3割くらい(ZWOカメラのゲインにして40程度)変化があります。
どうもPixInsightでdebayerをするときにばらつきが減るような効果があるようなのですが、なぜそうなるのかはまだよく理解できていません。ただ、SharpCapでもただちにRGBにdebayerして測定していると思われるので、とりあえずはdebayerを正しいと思って進めることにします。
まとめですが、今回の過程でまだ2つのしっくりこない部分が残りました。
debayerの時に周りの(同じカラーの)ピクセルの値を一部情報として輝度を決めるはずなので、確かに少しばらつきがなくなるというのも一理あるのですが、はたしてそれを性能評価として使っていいものなのか?科学的には間違っている気がしてなりません。
ではなぜメーカー値もSharpCapも同じ値を出せるのか?やはりまだ何か自分が根本的に間違っているのでしょうか?
続きの記事。
RGB分離したファイルからS-N^2分布をプロットするpythonコードを、fitsから直接CFA (Color Filter Array)のRGGBの4つ分に分離するようなものに改良して再度プロット。画像数は縦横2分の1、面積では4分の1になります。結果が以下のようになります。
ところがグラフを見てもわかるように、全然メーカー値(コンバージョンファクター: 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も同じ値を出せるのか?やはりまだ何か自分が根本的に間違っているのでしょうか?
続きの記事。


コメント
コメント一覧 (2)
「ディベイヤーの前後で輝度データの揺らぎが異なる」
件について。直感的にはイメージできるのですが、気になったので簡単なモンテカルロシミュレーションをしてみました。
Samさんの実測データをお借りして、平均輝度9800・標準偏差66を有する正規乱数を使い、有効画素64×64のマトリクスを想定してシミュレーションしてみると、G素子で
ディベイヤー前:標準偏差66
ディベイヤー後:標準偏差53
との結果を得ました。
やはり、この差異はシステマチックに発生するみたいですね。
https://apranat.exblog.jp/30446332/
あぷらなーとさん、早速の検証ありがとうございます。
やはりdebayerでばらつきが減るというので正しそうだということがわかりました。
今度は6Dかなと思っています。またいろいろ検証を進めたいと思います。