冷却CMOSカメラのノイズ解析ごっこ②

★MATLABで始めたノイズ解析遊び
ひょんなことから突然始めたMATLABによるノイズ解析ごっこですが、前回は「宇宙線二次粒子のヒットと思われるノイズ」の弁別とその特徴について考察ごっこしました。

今回はその続きです。

★標準偏差がゼロ・・・だと?
ダークファイル中の各ピクセルの輝度値は、大なり小なり揺らいでいるのが普通です。ところが、前回ダークファイルの解析をしていた際に奇妙なピクセルを発見しました。
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_02190436.jpg
これはASI1600MM-Proをー10℃ゲイン300で30秒露光したダークファイルを32コマ分解析したものですが、上記のように最低輝度側と最高輝度側に輝度揺らぎの標準偏差がゼロのデータが見られます。標準偏差がゼロということは、要するに常に一定輝度値を吐いているということになるのですが、本当にそうなのかを確かめるため、この『異常ピクセル』の座標を特定するためのコードをMATLABで書いて走らせてみました
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_02275671.jpg
やっていることは単純です。
まず、読み込んだFITSファイルから輝度値を読み込み、それぞれのピクセル毎に輝度メジアンと輝度揺らぎの標準偏差を演算します。
次に、標準偏差がゼロになるデータを弁別し、そのピクセル座標を特定します。
通常の言語なら、X座標やY座標でループを回して条件に合う座標値を収集しないといけないのですが、MATLABの場合は上記のように非常にシンプルなコードで演算が可能でした。(ある意味、RDBのクエリ処理に近いと言えるかもしれません)

得られた座標値をそれぞれ変数に格納したところでプログラムは終了。ここからが個人的にMATLABの好きなところで、MATLABはインタープリタなので、コードを走らせた後でもコード中の変数をコマンドラインから呼び出して中身を見たりグラフにしたりすることができるのですよー。
学生時代にFORTRANで観測データの解析をしていた時には(解析したデータを全部書き出しておかないと)後から「しまった。あの変数も考察に必要だった!!」などと再解析に陥りがちでした。特に解析演算に数日から数週間かかるようなデータの場合だと致命的で、学会前によく慌てたものです。その点、MATLABならコードを走らせた後でも変数の中身が見られます。
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03040099.jpg
たとえば、輝度メジアンが100未満で標準偏差がゼロのピクセルのX座標(行列変数のYインデックス)をJ2という変数に格納しておけば、後からコマンドラインで「L2」と打つだけで、上記のようにその中身が吐き出されます。うーん。素晴らし過ぎる。

さらに該当座標のピクセルについて、その輝度変化を撮影コマ毎に追ってみると、
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03082780.jpg
このように、常に最大輝度を出力しているピクセルと・・・・
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03090765.jpg
このように、常に最低輝度を出力しているピクセルがあることが分かりました。

つまり、標準偏差がゼロになっているピクセルは
 ①常に最高輝度値になっている『狭義のホットピクセル』
 ②常に最低輝度値になっている『狭義のクールピクセル』
の2群に分かれていると言えます。

★実際の画像と比較してみる
さて上記のように解析した結果、手元のASI1600MM-Proについて
『狭義のホットピクセル』は9個
『狭義のクールピクセル』は67個
あることが判明しました。

その位置を散布図にしてみると
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03222659.jpg
こんな感じです。
むう・・・・。ホットピクセルの分布は良いとして、クールピクセルの分布はちょっと気色悪い(中央に集まりすぎてる)なぁ・・・。まあ、でもこれは仕様でしょうから仕方ありません。

では、実際のライトフレーム中でどのように写っている物が上記に該当しているのかを見てみましょう。
今回は、SE120+Hα+ASI1600MMーProで撮影した30秒露光の画像120コマを位置合わせ無しで加算平均コンポジットしたものを題材にします。もちろん、ダークやフラットは補正していません。
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03333060.jpg

散布図からおよその位置にアタリをつけて画像を拡大し、ピクセル座標を追い込んでいきます。

すると・・・

ででん!!

冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03251366.jpg
冷却CMOSカメラのノイズ解析ごっこ②_f0346040_03252791.jpg
おお、ダークの解析から特定したホットピクセルとクールピクセルが、ライトフレーム中の白点と黒点に見事に一致しました。

いやまあ一致して当然と言えばそうなのですが、今回の収穫は「書いたコードにバグが無い事が確かめられた」ことに尽きます。
これらの「常に光りっぱなし」な狭義のホットピクセルと「常に消えっぱなし」な狭義のクールピクセル(むしろデッドピクセル)に関しては、ダーク補正やクールファイル補正、あるいは画像処理ソフトのフィルタ処理をするまでもなく「そもそも使い物にならない」ピクセルですから、ピクセルマッピング処理を施して常に除外したいなぁ・・・・。

という訳で、不良ピクセルの座標を特定に成功したことで、『ソフトウェアピクセルマッピング』の実現に向けて確実に一歩前進しましたよー♪


Commented by 是空 at 2020-02-11 14:02 x
面白かった。^^

今回の記事は、1回読んだだけでほぼ全てを理解できたと思う。
今後の展開が楽しみ。
Commented by noritos1047 at 2020-02-11 19:55 x
分かったふりをさせて頂くとクールピクセルの中央への集中はなんか嫌ですね。
しようでしようからしようがないのでしようか。
それともお手元の物に限ったことでしょうか。
Commented by supernova1987a at 2020-02-12 00:01
> 是空さん
ありがとうございます。
やはり、ブログの記事は小分けにした方が(端折らないで済むので)書きやすいかもですね。

さて、第三弾は「露光を延ばしたとき」「低エネルギー放射線の影響」「温度依存性」のどれに絞るか悩み中です♪
Commented by supernova1987a at 2020-02-12 00:06
> noritos1047さん
クールピクセル(デッドピクセル?)が中央に偏っていたのは意外でした。

幸いASI1600mmは三機あるので、個体差かどうかについても検証できると思います(三機とも個性豊かなので難儀しそうですが・・・)。他の機種やデジタル一眼についても解析を始める予定ですので、お楽しみに♪
名前
URL
削除用パスワード
by supernova1987a | 2020-02-11 06:55 | Comments(4)

あぷらなーとの写真ブログ


by あぷらなーと