複天一流:どんな手を使ってでも問題解決を図るブログ

宮本武蔵の五輪書の教えに従い、どんな手を使ってでも問題解決を図るブログです(特に、科学、数学、工学の問題についてですが)

変光星の光度測定にチャレンジ part-3: バックグランド(雑音)の除去

前回のあらすじ

くじら座変光星ミラの光度曲線を作るのが今回のプロジェクトの目標である。画像処理プログラミングを応用し、階調データを扱うことができるようなったので、手始めにRGB成分別に「色レベル」のヒストグラムを描いてみた。今回はこのヒストグラムの情報を基に、恒星の「明るさ」を計算するための準備を行う。

低階調成分の確認

いわゆる「ダークフレーム」調整に相当するものであるが、ダークフレーム自体の画像処理はちょっと退屈なので、まずは適当に「低階調成分の除去」をおこなってみる。ヒストグラムを見ると、階調値が10前後にピークを持ち、32の付近のところまで広がっているガウス型分布があるので、これを「CMOS光量子検出器の熱電流」つまり「雑音」とみなして、除去してみる。本来は「黒闇」となるべきものが、熱電流によって「誤認知」されていると考えるわけである。実際のダークフレーム調整では、望遠鏡に蓋をして光が入らない状態で写真を撮り、そのヒストグラムを見ることによって、熱電流の有無や程度を知ってから、その成分を削除する手順を踏む。今回は画像処理の練習なので、そのダークフレーム処理の結果が32以下の成分に相当すると仮定してみようというわけである。

ミラの観測画像はすでにbmpReadで読み取って、その階調データをmira.txtにテキストデータとして保存してあるので、awkによって処理することができる(ちょっと時間がかかるが)。まずはmira.txtのフォーマットを確認する。

0 0 0 11 
1 0 0 8 
2 0 0 10 
0 1 0 13 
1 1 0 10 
2 1 0 12 
0 2 0 15 
1 2 0 12 
2 2 0 14 
0 3 0 18 
1 3 0 15 
.....

こんな感じである。最初の列にある数字がRGBを意味する(BMPの場合はBGRの順番だが)。次の2つの列がx座標とy座標に相当する。そして最後の列が階調値である。つまり(rgb, x, y, M)という並び方である。したがって、4つめの数字が32を下回るもの($M<32$)に対して、(x,y)を出力する処理となる。RGB分解は、最初の数字を利用すればできる。たとえば、Bチャネルの場合は、

{
   if($1 == 0 && $4 <32) print $2,$3;
}

で、32以下のB成分を抜き出すことができる。やってみると、

% wc -l mira-B.txt

5937268 mira-B.txt

となった。Miraの観測写真のサイズは2880x2160なので、この低階調成分の割合は

% echo "5937268 / (2880*2160)" | bc -ql

.95442193930041152263

なんと、画像ピクセル中の95%以上が低階調成分になっている。しかし、よく考えるとこれは当たり前で、オリジナルの観測写真を見ると、夜空の中に恒星がパラパラと写っているだけの写真である。「黒い成分」が多いのは当然である。全部で600万点近くあるので、これをgnuplotで表示するのは結構大変で10秒以上の時間がかかる(Apple M1チップで15秒程度)。がやってみると、次のようになった。

Bチャネルで32より小さな階調成分

オリジナルの画像と比較してみると、Bチャネルだけでみると消えてしまった恒星が10個程度あることがわかる。下の図でa1, a2,..というラベルを付けた恒星である。一方で、Bチャネルだけでみた方がよく見える恒星も数個存在する(b1, b2, ...というラベルをつけた)。

オリジナル画像とBチャネルの低階調成分を抜いた画像の比較

Bチャネルの画像に映らないということは、青色成分を持たない赤色巨星のような天体かもしれない。ということで、Rチャネルで同じ処理をやってみる必要がある。果たしてどうか?(つづく)