<緊急企画>レナード彗星接近記念 〜 PixInsightによる彗星の画像処理

レナード彗星

レナード彗星が輝きを増しています。ネットでも彗星画像の花盛り。私も12月6日に撮影しました。彗星の画像処理で難しいのは、彗星の移動速度と星の速度が異なることです。まずはこちらをご覧ください。

これは90分の撮影データを5秒にした動画です。速いですね。90分でこれくらい動くのです。天体写真は複数の写真をインテグレーションして一枚にしますが、彗星を基準にすると星が流れてしまい、恒星を基準にすると彗星が流れてしまいます。

彗星核基準と恒星基準
彗星核基準と恒星基準

それを避けるために彗星だけの画像、星だけの画像を作り合成することで一枚に仕上げます。この手法には是非があるものの、それは別での議論として、ここではPixInsightを使って彗星と星を合成する手法を解説します。

ちなみに右の画像を見ると彗星は真っ直ぐ進んでいるのではなくて、尾に対して並行移動していることがわかりますね。これはこれで面白い!

準備

Calibration, Registration(恒星基準による位置合わせ)まで済ませた画像を用意してください。WBPPを使っている方は、Integrationをオフにすることで簡単に準備ができます。

WBPPでRegistrationまで実行
WBPPでRegistrationまで実行

(追記 2023.2.6) 星消し画像の作成

2023.2.6に「彗星画像から星を消す方法」という記事を作成しました。この段階で、星を消しておくとこの後の処理が楽になります。ご参照ください。

Comet Alignmentによる彗星の核基準での位置合わせ

Process – ImageRegistrationメニューからCometRegistrationを起動します。Add Filesボタンを押して位置合わせを済ませた画像を読み込みます。規定値の場合、ファイル名が_rで終わっているファイルが位置合わせ済みのデータです。

また、Outputのフォルダを指定します。

Registration済みのファイルの読み込みとOutputの指定

次に最初の画像をダブルクリックし画像を表示させます。

最初の画像をダブルクリック

STF(Screen Transfer Function)で明るくし、彗星の核部分を拡大表示します。ここで核の中心部分をクリックして、彗星の核を認識させます。

彗星の核をダブルクリック

すると核の座標が画面に転記されます。

彗星の核座標が転記される
彗星の核座標が転記される

同じことを最後の画像を選んで実行します。

最後の画像の彗星の核位置を認識させる

最初と最後の画像の彗星の核座標位置が転記されたことを確認します。

最初と最後の彗星の核の位置
最初と最後の彗星の核の位置

●ボタンを押すと指定したOutputフォルダに彗星の核基準で位置合わせされたデータが出力されます。

彗星のみ画像の作成

*上記で「星消し画像の作成」を実行している場合はすでに星消し画像ができているので、下記の記載で星消しの部分は無視してください。

作成した画像をIntegrationします。Process – ImageIntegrationメニューからImageIntegrationを起動します。Add Filesボタンを押して、先ほど作成したファイル名の最後に_caとついている彗星核基準のファイルを読み込みます。

彗星画像の読み込み

Image IntegrationのCombinationをAverageからMedianに変更します。これが今回の肝でした。Averageでは消えなかった線状の星の消し残りがMedianにすることで激減します!

Medianに変更

Pixel Rejection(1)からRejection Algorithmを選択します。アルゴリズムはとくに指定はありませんが、15枚以上ならLinearFit、15枚未満ならSigma Clipを選択すれば良いと思います。

Pixel Rejection(2)で、Linear fit high(LinearFitの場合)もしくはSigma high(Sigma Clippingの場合)の値を変更します。この値を試行錯誤することで、彗星の星なし画像の品質が決まります。値を小さくするとより綺麗に星が消えますが彗星の尾なども消えてしまいます。値を大きくすると星の消し残しの線状のノイズが残ります。1.5くらいから初めて、0.25刻みで小さくして実験することをお勧めします。

Linear fit / Sigma highの設定
Linear fit / Sigma highの設定

●ボタンを押して、実行します。結果を確認してLinear fit highもしくはSigma highの値を変更してを繰り返して、最も良い値を見つけます。この試行錯誤プロセスは時間がかかりますが、後々の画像品質に大きな影響を与えるので、時間をかけて試すことがお勧めです。

いくつか試したところ、私の画像の場合はLinear fit highが0.750〜1.000あたりが良さそうでした。

Linear fit highの比較(右を採用)
Linear fit highの比較(右を採用)

Linear fit highが0.750の場合は恒星の線状のノイズがほぼ消えます。一方で彗星の情報もカットされて彗星が淡くなってしまいます。1.000では彗星はしっかりしているものの線状のノイズが残ります。ぱっと考えると涙を飲んで0.750にしそうですが(そして最初は私も0.750を採用していました)、最終的に採用したのは右の1.000です。線状のノイズは良いのでしょうか? それはこの後のお楽しみです。

採用した画像をのタブで、comet_dataと名前を変更します。FileメニューのSave As…でXISF形式で保存します。

再びComet Alignment。彗星なし画像の生成

今度は彗星なし画像を生成します。再びProcess – ImageRegistrationメニューからCometRegistrationを起動し、もう一度、最初に準備した位置合わせ済みの画像を読み込み、出力先を設定します。また前回と同じように、最初と最後の彗星の核位置を認識させます。

Comet Alignmentの起動
Comet Alignmentの起動

次に差し引く彗星の画像を設定します。SubtractのOperand imageに、先ほど作った彗星のみ画像を設定します。

Operand imageに彗星画像を設定
Operand imageに彗星画像を設定

Enable LinearFitをチェックします。次にReject lowとReject highを設定します。Read outモードをオンにし、彗星近くのバックグラウンドの明るさを測定します。マウスを長押しすると測定ができます。

彗星近くの背景の明るさ測定

Reject lowには彗星近くの背景の明るさより少し大きな値を設定します。今回はRが0.0031なので、0.0032を設定します。次に彗星の核の明るさを測定します。

彗星の核の明るさ測定

カーソルを少し動かして一番明るい値を測定します。ここではRが0.0650なので、Reject highに0.066を設定しました。

Reject low, Reject highの設定
Reject low, Reject highの設定

マウスを長押ししても、Readoutのポップアップ画面が出てこない場合は、EditメニューのReadout optionsで、Show readout previewがチェックされているか確認ください。

Readoutポップアップの設定
Readoutポップアップの設定

これで設定は終わりです。●ボタンを押して実行します。

彗星なし画像の検証

出力された彗星なし画像をBlinkを使って検証します。Process – ImageInspectionからBlinkを起動し、さきほど出力された彗星なし画像を読み込みます。

Blinkで画像を読み込む

画像を選択して彗星が消えているかチェックします。

彗星が消えている画像

多くの画像は彗星が消えていると思いますが、一部に消えていない画像があります。消えていない画像は処理対象から除外します。

彗星が消えていない画像は除外する
彗星が消えていない画像は除外する

除外するには、移動ボタンで別のフォルダに移動させると便利です。画像の選定が終わったらIntegrationです。

このとき、多くの画像を除去することになった場合はやり直した方がよいため、上のComet Alignmentを再度起動し彗星の核の位置を少し変更してください。自動での核座標認識では変更しにくいので、何ピクセルくらいずらすべきか確認してParametersの値を手で入力します。実際、試してみると少しのズレで彗星なし画像の結果がかわりました。私はComet Alignmentを何度も実験するために、私は最初と最後のファイルだけを読み込んで、彗星の核認識を何度も試しました。そうすることで処理時間を短縮できます。

彗星なし画像のIntegration

Process – ImageIntegrationメニューからImageIntegrationを起動します。Add Filesボタンを押して、選定した彗星なし画像を読み込みます。またImage IntegrationのCombinationをAverageに戻します。

彗星なし画像のIntegration

Pixel RejectionのRejection Algorithmは適宜設定ください。15枚以上ならLinear fit clippingなどを選択します。アルゴリズムの設定はこちらも参照ください。●を押して実行します。

黒い筋と彗星の跡がある
黒い筋と彗星の跡がある

生成された画像には黒い筋がついており、彗星の跡も残っています。しかしここはいったん気にせず次に進みます。タブをダブルクリックして、comet_lessと名前をつけます。

彗星と星の合成

いよいよ合成です。Process – PixelMathメニューからPixelMathを起動します。彗星画像と彗星なし画像を足し合わせるために、”comet_data + comet_less”と記述します。またcreate new imageを選択します。

Pixel Mathの実行
Pixel Mathの実行

■ボタンを押して実行すると二つの画像が合成されます。

画像の合成

ここで注目したいのが、彗星画像にあった星の消し残しの線状のノイズが消え、また彗星なし画像にあった黒い筋も消えています。これは彗星なし画像は、オリジナル画像から彗星画像を引き算して作っているので、二つの画像を足すことで彗星画像の消し残しと、彗星なし画像の黒い筋が補完して綺麗になるのでしょう。

もう少し顕著な例を見てみます。

激しいノイズの跡も合成すると消える
激しいノイズの跡も合成すると消える

左の画像は激しく星の跡が残っています。この画像を使って手順通りすすめると右の様にノイズがほぼ消えています。背景は引いて足すので、プラスマイナスゼロで何も変わらないのですね。なんだか魔法の様です。彗星画像をつくるときは、ある程度の星の消し忘れは気にせず、彗星のクオリティを重視すべきと考えました。

彗星の跡の除去

この後は、通常のPixInsightのリニアフェーズ処理を進めます。彗星の核の上に赤っぽい痕跡が残っていましたので、最後に痕跡を除去する方法を解説します。

赤いノイズ

赤いノイズはストレッチ後のノンリニアフェーズで除去しました。それにはGAMEスクリプトでマスクを作成します。Script – UtilitiesからGAMEを起動します。GAMEのインストール方法や使い方はこちらの記事を参照ください。

今回はGAMEスクリプトで楕円のマスクを作りました。

ノイズ除去用のマスク
ノイズ除去用のマスク

このマスクを画像に設定します。

ノイズ除去用のマスクをかける

赤いノイズを除去したいので、Histogram TransformationでRチャネルを選択し、ミッドトーンを少しずつ右に移動させます。一回でやらずに何度かに分けて処理するのがコツです。

赤いノイズを除去

目立たなくなりました。

赤いノイズが目立たなくなった

・・・と、こんな感じです。彗星の画像処理はまだまだテクニックがありそうです。また彗星がやってきたら研究したいと思います!

(追記) 線状のノイズの補完について

彗星のみ画像と彗星なし画像を足し合わせた時、線状のノイズが補完関係にあるので相殺されて消える点について、ひとつだけ疑問点が残っていました。彗星の位置は変わるので、彗星なし画像の黒い筋の部分の位置が変わり、完全に消せないのではないか、という点です。追加検証したので記載します。

実験のためにこんな画像を用意しました。

テスト用の彗星のみ画像

目印として白い丸をつけています。この画像を使って彗星なし画像を作ると、白い丸の部分が引かれて黒い丸になるはずです。その黒い丸がどんな動きをするか確認してみました。

黒い点の位置が変わっている

予想通り、黒い点の位置が彗星の移動に伴って移動しています。そのため彗星あり画像の白い筋と、彗星なし画像の黒い筋は厳密には同等ではなく、完全には消せないことになります。白い筋より黒い筋の方が長くなり、また黒い筋は中央部が暗い筋になると予想できます。しかし位置は同じであり、彗星の移動方向に伸びた筋なので、大部分は修正できるのかと考えます。

そう考えると彗星あり画像、彗星なし画像各々のクオリティを高める工夫はまだまだ余地がありそうです。

(追記 その2) 彗星が消せない場合の対処

記事の手順に従って処理をしたところ、彗星なし画像の作成で彗星が消えないというお話がmaverickさんからありました。

調べてみたところ「彗星のみ画像」の明るさが元の画像の10倍くらいあります。そのためComet Alignmentの際のReject low、Reject highの値も10倍くらいになっていました。元画像より10倍近く明るい領域を消しに行くので結果として消えなかったのです。

問題は、彗星あり画像をImage Integrationしてできた彗星のみ画像の明るさが元画像の10倍近くあること。対処として「彗星のみ画像」のImage Integrationにおいて、Normalizationパラメータを”No normalization”にすることで、元の画像と同じ明るさの彗星のみ画像を作成できました。

Normalizationパラメータを”No normalization”にする

彗星は太陽の近くに来た時に尾が出るため夕方もしくは明け方近くに見られ、撮影最初と最後で明るさが大きく異なることがあります。そのため明るさを調整するNormalizationが正しく機能しなかったことと考えています。

無事に彗星の画像ができたようです。サンタさんが来ましたね。よかった。

YouTube公開しました。

YouTube版も公開しました。合わせてご覧ください!

タイトルとURLをコピーしました