私は画像処理にPixInsightを使っています。
ステライメージを使っている方が大半の中でPixInsightを使っているのは、天体写真を始めたときにチリの皆既日食観測で知り合ったチリ人の友人が「PixInsightというソフトを使うんだよ」と教えてくれたのがきっかけです。
PixInsightは一言でいうとドラえもんの四次元ポケット。めっちゃ道具が多く、かつ用途がかなりかぶってます。しかし同じ移動するにも直接行くならどこでもドア、人を探すならタケコプターというように、ちょっとだけコンセプトが違っているし、どの機能をチョイスするかはその人の嗜好もあります。そのため人それぞれの処理手順ができてくるのです。
私は最初に蒼月城さんの画像処理入門を何度も読み返して始めました。上手いくプロセスも行かないプロセスもあり、国内外のサイトや書籍を参考にしながら自分なりの改良を続けています。今回はいま採用している処理フローや使い方をご紹介します。
- WeightedBatchPreprocessing (WBPP) – 前処理
- リニアステージとノンリニアステージ – 後処理
- AutomaticBackgroundExtrator (ABE) – バックグラウンドモデル作成)
- STF Auto Stretch (boosted)で画像の確認
- DynamicCrop – 画像の切り出し
- Deconvolutionによる画像復元
- PhotometricColorCalibration – 色あわせ
- MultiscaleLinearTransform (MLT) – ノイズリダクション
- HistogramTransformation (HT) – ストレッチ
- HDRMultiscaleTransform – 詳細部分の強調
- RangeSelection (マスクの設定)
- CurvesTransformation (CT) – 銀河の色彩の調整
- TGVDenoise (TGVD) – ノイズの削減
- SCNR – 緑色ノイズの削除
- HistogramTransformation (HT) – 画像の最終調整
- YouTube版公開!
WeightedBatchPreprocessing (WBPP) – 前処理
PixInsightの処理は前処理と後処理に分かれます。WBPPはその前処理であるノイズ除去、各種補正、画像の重み付け、画像の重ね合わせなどををボタン一つで終わらせるという優れもの。メニューのScript – Batch Processingの下にWeightedBatchPreprocressingはひょっこり隠れています。こんなに大事なプロセスがそんなところに密かにいるのが謎ですが、なにはともあれ起動しましょう。
下にあるAddボタンを使って、Bias、Dark、フラット用のDark、Flat、Lightフレームの追加をして出力先であるOutput Directoryの設定をしてRunするだけです。優れものなのは、露出時間やフィルター有無などを自動で振り分けてくれる点。ほとんどの設定は規定値のままでOKです。規定値がわからなくなった場合は画面したのResetボタンを押して規定値に戻してください。
使用は簡単ですが、いくつか注意点を記載します。
(1) Output Directoryの設定
WBPPは多くの中間ファイルと最終成果物のMasterファイルを出力します。右下のOutput Directoryで出力先を設定ください。
(2) 露出時間の近い画像をまとめないようにする
Flat Darkの撮影では、2秒と5秒など露出時間の近い画像ができることがあります。また多段階露出をするときにも近い露出の画像はできるでしょう。Exposure toleranceは数値より露出の差が少ない画像は一つとしてまとめる、という設定ですので、たとえば3秒の露出差のある画像を別々にしたい場合は、Calibration exposure toleranceを2以下に設定します。
(3) カラー画像の場合はCFA設定する
カラー画像の場合は、まず上部のタブでCalibrationを選択します。現れた画面で対象となるLightを選択し、CFA imagesにチェックをいれます。
(4) Flat Darkの指定
Flat用のDarkであるFlat Darkは通常のDarkと同じようにDarkに登録してください。WBPPがFlatの露光時間にあわせてFlat Darkを自動で選択します。
リニアステージとノンリニアステージ – 後処理
ではいよいよ後処理の開始です(・・というか前処理ほとんど何もやっていません。WBPPやBPPのおかげです)。まず対象となる画像を見てみましょう。WBPPで指定したOutput Directoryの下のMastersの下にlight-BINNING_1.xisfというファイルができていますので、それをダブルクリックしてPixInsightで開きます。
するとなんと・・何にも見えません。デジカメで撮ったばかりの写真はこのように暗くて何も写っていないような写真なのです。これを後述のストレッチ処理をして明るい部分を拡大して見えるようにします。デジカメのJPEGデータなどはデジカメ本体でストレッチ処理をしています。それではなぜストレッチ処理を最初からしておかないかというと、ストレッチ前の段階でしかできない処理が多数あるからです。PixInsightの後処理はストレッチの前後で大きく分けられます。前をリニアステージ、後をノンリニアステージと言います。
リニアステージでは暗いままなので、処理した結果がうまくいっているかわかりません。PixInsightでは優れもののScreenTransferFunction(STF)という機能があります。左の歯車ボタンを押して表示されるProcess ExplorerからSTFを起動してください。STFはリニアステージでは何度もお世話になります。
左の黄色と黒のボタンを押すと、自動でストレッチ処理が走り画像を見ることができます。ここで重要なのは「見た目でストレッチしているだけで、元の画像に処理はしていない」ということです。これによりストレッチしている画像をみながらノンリニアステージの処理をすすめられます。
AutomaticBackgroundExtrator (ABE) – バックグラウンドモデル作成)
これは前処理でIntegrationしたLight MasterにStretchTransferFunction (STF)でAuto Stretchした状態です(Auto Stretchは黄色と黒の丸いマークです)。青いのはまだColor Calibrationをしていないからです。STFのリンクを外すことで、RGBをバラバラにストレッチしますので、見やすくなります。実行してみましょう。
左上が明るいですね。こちらの方向は北の地上方向です。三浦半島の先の城ヶ島海岸近辺で撮影したので、東京・横浜の空の明かりがはいっています。総露出も30分で短いのでノイズが多いのも否めません。こういう画像の方がPixInsightの使い方がわかるから・・とつまらない言い訳をしながらいろいろ問題ある画像を使って処理を初めて見ましょう。ちなみにこの画像はここで紹介した私が初めて望遠鏡で撮った天体です。
まずバックグラウンドの補正です。ネットの情報をみるとDynamicBackgroundExtractor (DBE)を使っている方が多いようですが、私はAutomaticBackgroundExtractor (ABE)を最初に試し、ABEがいかなかったときDBEをトライしています。DBEの使い方はこちらにまとめました。
主に設定するのはTarget Image Correctionです。
- Subtraction/Division… 今回の様に光害除去はSubtraction(引き算)、周辺減光補正はDivision(割り算)と言われています。でも両方試してみて効く方を使っています。感覚的にはSubtractionの方が派手に処理する感じです。
- Discard background model… チェックを外すとバックグラウンドモデルのデータを削除しますが、見た方が良いので通常チェックを入れません。
- Replace target image… 新しいモデルを作らず、元のターゲットを置き換えます。何度か試したい私はチェックを外しています。
またFunction degreeの値を下げると明るい天体に隠れてしまった暗い天体を目立たせることができます。繊細な表現をしたい場合はデフォルトは4ですが2を試す価値があります。今回は光害の影響が大きいので4のままにしました。バックグラウンドモデルをSTFをかけてみると、効果がよくわかります。また最近の経験で、光害の影響が大きいとき、Function degreeを1にするのもとても有効であるとわかってきました。
結果がこれです。まだ左上の明かりが残っていますね。そこで、おかわり。ABEは2度がけOKです!また最初にDivisionを実行し2回目にSubtractionを実行するというテクニックを使っている方もいらっしゃるようです。
かなり綺麗になりました。バックグラウンドモデルも見てみましょう。
なんじゃこりゃ〜。ひ〜。ABEさん。ご苦労おかけしています。おかげですっぴんになりました。
STF Auto Stretch (boosted)で画像の確認
画像は通常はSTFのAuto Stretchで確認しますが、Auto Stretch (boosted)も便利です。画像のは視の方が重ね合わせの関係で縞々になっていたり、いらないノイズをチェックしたり、その後の加工のプランをつくることができます。今回のもバックグラウンドに盛大なかすみがありますね。ちょっと気にしつつ、つぎにすすみます。
DynamicCrop – 画像の切り出し
私の使っているビクセン R130Sfは650mmでそれほど長焦点ではありません。もともと月や土星、木星を見るために買った経緯台に載っていた望遠鏡です。まだ長焦点の望遠鏡を使いこなす技術もありませんからしばらくこのビクセン君に活躍してもらう予定です。そこで切り出し!です。切り出しにはDynamicCropを使います。
実はもう一つ問題がございまして、画像が北を向いていないのです・・・意図が無い限り普通は北を上にするそうです。その方が他の方の写真と比べやすいしなにより落ち着かない。なのでここで回転もしちゃいましょう。
画像のチェックをしているとM51の下に小さなかわいい銀河が二つあるのに気付きました。せっかくなので、これも入れて切り出しします。
Deconvolutionによる画像復元
次に大気の影響や機材の光学性能によりソフトになってしまった画像をもとのシャープな画像に近づけるDeconvolution処理です。ただDeconvolutionは非常に複雑なので、慣れるまではスキップしてください。慣れてきたらこちらを参照しDeconvolutionにチャレンジしてみてください。
PhotometricColorCalibration – 色あわせ
(注意) 2022年11月に最新の色合わせツールSPCCが登場しました。SPCCの方がより正確に色合わせが可能です。SPCCの使い方はこちらの「4.5. Spectrophotometric Color Calibration (SPCC)の使い⽅」を参考にしてください。
次は色合わせです。今の画像はSTFのUnlinked Stretchを使ってなんとかそれらしい色になっていますが、Linkすると青。まだ色の調整ができていません。色合わせにはBackgroundNeutralizationしてからColorCalibrationする方法もありますが、調べて見ると世界中の皆さんはPhotometricColorCalibration(PCC)を使うのが主流のようです。PCCの原理はPixInsightのTutorialに記載されています。この文章はえらく鼻息の荒い、気合いの入った文章で、「我々の哲学は自然の色を保つためにドキュメンタリー化された一定の基準をもつことで、きままに処理する余地を持たせないこと」だの「日光に適応させた人類の視覚の特徴を基本とした自然な色」だの書いてあり、PCCに入れる想いの深さを感じます。このチュートリアルを読み解いたPCCの解説もぜひ参照ください。
PCCが何をやっているかというとAAVSOというアメリカの団体のAll Sky Survey(APPAS)のデータを基準に統計処理をして色を決定しています。
それではPCCを起動してみましょう。
- Right ascension(赤経)、Declination(赤緯)の入力… 撮影した天体の赤経、赤緯を入力します。Search Coordinatesが機能で、天体名を入力してGetを押すと自動入力してくれます。今回はM51で入力しました。
- Observation date… 撮影時間。これもAcquire from Imageが簡単です。
- Focal length… レンズの焦点距離を入力します。
- Pixel size... 撮像素子のピクセルサイズを入力します。
Pixel sizeの計算
カメラのPixel sizeは簡単に計算することができます。まずネットなどで、カメラの撮像素子のサイズを調べます。私のカメラFujifilm X-T30の撮像素子のサイズは、横23.5mm、縦15.6mmです次に撮像素子の画素数を調べます。同じく横6240、縦4160個並んでいます。
するとピッチは次のように計算できます。
横: 23.5(mm)÷6240×1000=3.77(μm)
縦: 15.6(mm)÷4160×1000=3.75(μm)
今回は縦の3.75を採用しました。星をマッチングするときの画像の大きさを計算するためと想定されますので、だいたいあっていれば判定してくれるようです。
位置合わせに使う星を増やす場合はAdvanced Plate Solving ParametersのLogの値を減らします。スライドバーを左に移動すると値を減らすことができます。またノイズリダクションをかけることもできます。
Logについて記載しましたものの、実は私はLogを変更したことはありません・・・。Plate Solvingに失敗したときに私がとっている方法は、DynamicCropをする、です。経験則ですがDynamicCropして画像サイズを変更すると大概の場合Plate Solvingはうまくいっています。
設定の最後はBackgroundNeutralizationです。これは背景をニュートラルにします。ニュートラルというのは赤っぽくも青っぽくも無く無色のグレーにするということです。
星や星間物質が写っていない背景を選んで小さなPreviewを作ります。その後にFrom Previewボタンを押していま作ったPreviewを設定します。
これで設定は完了。それでは■を押して実行してみましょう。
無事に処理が終わりました。STFのリンクをしていても正しい色で表示されます。ここでカラーバランスが正しくなっているので今後はSTFのリンクはオンにしてください。またPCCでエラーが出ることも割とあります。この画像もCropする前の大きな画像ではPCCはエラーになりました。今回の様にCropしてみる、位置入力の際に他の天体を指定する、などでエラーが消えることもあります。どうしても消えないときは私は仕方ないのでマニュアルでColorCalibrationしています。
MultiscaleLinearTransform (MLT) – ノイズリダクション
このあとのノンリニアフェーズの処理をしやすくするために、このタイミングでノイズ削減処理をします。最後にTGVDenoiseもしますので、やらなくても大丈夫です。慣れてきたら実践してみてください。MultiscaleLinearTransformの使い方はこちらを参照ください。
HistogramTransformation (HT) – ストレッチ
さて、いよいよノンリニアのフェーズに突入です。これまでのリニア処理はPixInsightにある程度お任せの一本道でしたが、ノンリニアでは処理方法が無限にありその人のスキルや趣味がもろに出てきます。つまり・・・
- やっているうちにハイになってきて、気がついたらケバケバの画像に・・
- だんだん何が正解かわからなくなってきて、ふと見ると処理前の方が綺麗・・
- できたと思って画像をスマホで見てみたら、イメージが違う・・
という感じで道に迷ってしまう恐ろしい工程です。それでも勇気をもってGo!
最初にSTFの情報をストレッチツールであるHistogramTransformation (HT)に移しましょう。PixInsightでは▲マークに設定情報が詰まっています。BPPでも▲をデスクトップにおいて保存しましたね。今回はSTFの▲をHTの下の部分に放り込みます。このとき色合わせが済んでいるので、リンクボタンを押しておくことを忘れないでください。
写し終わったら、STFの右下の○に十字のリセットボタンをおしてAuto Stretchをオフにし、HTの■ボタンをおして処理を実行します。ここでも▲を画像に放り込んでもOKです。最初は謎の▲操作もだんだん身体になじんでくるから不思議です。これでストレッチが終わりました。
HDRMultiscaleTransform – 詳細部分の強調
次はマジカルツールと言われているHDRMultiscaleTransformです。チュートリアルによれば明るい場所に隠されてしまった詳細部分を浮かび上がらせるとあります。例えばオリオン大星雲などに適用すると効果がてきめんのようです。
PixInsightはトライ&エラーで実験的に処理をすすめます。今回の処理も、何度も設定を変えて試すことになります。そのときにPreviewを利用するのが便利です。Previewを使うことで元画像に影響を与えず処理を試せますし、全体ではなく一部をPreviewすることで処理時間の短縮にも役立ち、何度も試行錯誤が可能になります。Previewを作るには上部のPreview作成ボタンを押します。
今回は設定を変えて比較しながらトライをするので、対象の銀河を拡大したPreviewを7つ作りました。後で分からなくなると行けないのとPreviewを作る領域が無くなるので、Previewにl3〜l9という短い名前をつけました。lはLayerのlです。
ここではLayer数を変更して比較するのと、Lightness mask にチェックをいれました。Lightness maskは背景には処理をかけず銀河だけ処理するためです。
設定したら例のごとく▲マークをそれぞれのPreviewにドロップします。こんな結果が得られました。
7レイヤーが良さそうです。ちなみにPreviewで効果のあり/なしを確認するには、Control+Shift+Z(私はMacなのでShift+⌘+Z)を押すと、PreviewのみUndo/Redoができます。決定した7レイヤーをHDRMultiscaleTransformで設定し、元の画像に▲マークをドロップして実行します。またPreviewは不要なのでメニューのPreview – Delete Allを設定してPreviewを削除します。
HDRMultiscaseTransformについては、オプションの解説もしています。あわせてご覧ください。
RangeSelection (マスクの設定)
この後の処理は、銀河のみ、背景のみに効かせるためにRangeSelectionを使ってマスクを設定します。RangeSelectionでは赤い○を選択してRealtime Previewを見ながら値を設定します。
- Lower Limit…マスクの最低値なので通常0のままです。
- Upper Limit… どの明るさまでマスクするか決めます。プレビュー画面を見ながら設定ください。
- Fuzziness, Smoothness… マスクをマイルドにします。
今回はUpper limitを0.33に、Fuzzinessを0.05に、Smoothnessを1.50に設定しました。たぶんに感覚的なものと思います。設定できたら■ボタンを押すか▲を画像にドロップしてマスクができます。マスクを設定するには、対象画像のウィンドウを選択して、メニューのMaskからSelect Maskを選択します。次は銀河に処理をかけるのでMaskからInvert Maskを選択してマスクを反転させます。
CurvesTransformation (CT) – 銀河の色彩の調整
次はマスクをかけた状態でトーンカーブを使って銀河を処理します。CurvesTransformationを起動します。すでにPCCを使って調整が終わっているので、ここではSaturationを調整する(S)を押して彩度を変更します。
恐らくこれが一番PixInsightの難しいプロセスと思います。ついつい派手にしちゃうのですよ。やり過ぎはいけないことはわかってはいるのですが、ついついマウスを持つ手が・・・。そんなとき私が使うテクニック(?)は(RGB/K)ボタンを押す、です。
本来このボタンはRGBおよびモノクログレースケールを調整するものですが、今回は正気に戻る補助線として活用します。RGB/Kを押すと一本線が出ますので、どれくらいSaturationをかけているかわかり失ってしまった自制心を取り戻すことができます。
こんな感じにしました。言うほど自制心が効いていないかも・・。露出時間が短いせいかざらついていますね。これは次のノイズリダクションで処理してきましょう。
TGVDenoise (TGVD) – ノイズの削減
PixInsightのノイズリダクションはこれまでACDNRがよく使われていましたが、TGVDが登場してからは、これが最強と言われています。TGVDのより高度な設定も記事にしました。慣れてきたら試してください。高度といってもそんなに実は煩雑な処理ではないので、最初から試しても良いかもしれません!
TGVDは試行錯誤で実施することになるのでPreviewをたくさん作っておきます。Previewの作り方はHDRMultiscaleTransformの項で説明したとおりです。TGVDを起動すると次のウィンドウが立ち上がります。
L*a*b*とは色の数値化の方法の一つで、Lは明度をa*b*は色相と彩度を表します。ノンリニアの処理段階ではL*a*b*のモードを選択します。ちなみに実行時は画像がいったんRGBからL*a*b*色空間に変換され処理が始まります。処理が終了すると、またRGBに戻ります。
- RGB/K mode… リニア画像に適用
- CIE L*a*b* mode... ノンリニア画像に適用
CIE L*a*b*を選択するとLightnessとChrominanceのタブが現れます。通常は両方をApplyしておけば良いです。
- Lightness… L* つまり明度への適用
- Chrominance… a*b* つまり色相、彩度への適用
StrengthとEdge protectionは効果の強さとエッジの保護です。スライドバーで値を変更します。また右端の数字を1増やすと10倍に、1減らすと1/10倍になります。マイナス値設定も可能です。-1を設定すると0.1をかけることになります。
- Strength… 効果の強さ。通常デフォルトの1/10〜10倍程度に設定
- Edge protection… エッジ保護。値が小さいほど保護される
またAutomatic convergenceは必要処理が終わるとiterationの回数に達しなくても終了するので処理が早くなります。チェックをしておくことが推奨です。
今回は背景のノイズを取るのが主目的なので銀河にマスクをかけます。MaskメニューのInvert Maskをオフにし銀河にマスクがかかった状態にします。また見やすいようにShow Maskをオフにします。背景のノイズが強いので、Lightness、ChorominanceのStrengthを10倍にしてそれぞれ50、70にしました。これらはPreviewウィンドウで何度も試した結果決めています。
また銀河部分もノイズがあるので軽くかけることにしました。MaskメニューのInvert Maskを今度はオンにしてマスクを銀河から背景に変えます。銀河のディテールを失わないようにLightness、ChorominanceのStrengthを5に戻して実行する方が良さそうですが、今回は両方試した結果、ノイズが多いため50、70のほうが良い状態でした。結果がこちらです。
SCNR – 緑色ノイズの削除
宇宙には緑色はありません。一番近いOIII輝線も青緑色です。そのため画像に緑色が入っていた場合、なんらかのノイズと考えられます。SCNRは選択的に色のノイズを除去するツールで、通常はグリーンのノイズを削除します。綺麗なのでちょっと残念な気がしますが…
HistogramTransformation (HT) – 画像の最終調整
最後に仕上げをするために、HTを起動します。またMaskメニューからEnable Maskをオフにして、マスクを外します。ここでは背景の色を決定します。
グラフの左下のシャドウのポイントを右に寄せます。右にするほど背景は暗くなります。私は以前は背景を真っ黒にしていました。アポロの月面写真(Full Moonという写真集は超お勧め!)でも、ISSの写真も、ハッブル宇宙望遠鏡の写真も宇宙空間は真っ黒だからです。しかしチリに旅行したときみた素晴らしい星空の背景は真っ黒ではありませんでした。空気があるからでしょう。そのため空気の層の底から見ている我々の写真は少しグレーを残した方が良い気がします。悩んだ末、こんな感じに仕上げました。
以上、PixInsightの概要フローでした!!
YouTube版公開!
いつでも使う基本処理フローがYouTubeになりました。あわせてご覧ください!