天体画像処理 : Siril 1.4 + GraXpert 3.1.0rc2

Siril

これは、Siril 1.4系 + GraXpert 3.1.0 rc2 の天体画像処理のメモです。
処理について、使い方や、気づいた事を記載しています。

随時、追記、編集をしています。

使い方などの概要は、次の投稿にあります。

以下にある画像処理の全てを、行わないこともあります。

前処理 : OSC, Drizzle

スクリプトを指定のディレクトリへ保存します。フラット補正を含ませます。

Drizzle について

標本化定理 (sampling theorem)またはサンプリング定理は、連続的な信号(アナログ信号)を離散的な信号(デジタル信号)へと変換する際に元の信号に忠実であるにはどの程度の間隔で標本化(サンプリング)すればよいかを示す、情報理論の定理である。
https://ja.wikipedia.org/wiki/標本化定理

標本化定理(sampling theorem)とは、アナログ信号をデジタル信号に正確に変換するには、元の信号の最大周波数の2倍のサンプリング周波数で標本化すればよいことを示した定理
https://e-words.jp/w/標本化定理.html

波長の半分よりも短い間隔でサンプリングする → オーバーサンプリング
分解能の半分よりも短い間隔でサンプリングする → 天体像の波形を完全に再構成出来る。
ピクセルサイズを分解能の半分にする倍率

d: エアリーディスク半径、レイリーの分解能
λ: 波長は550nm → 0.55μm
TS-160 F6.3 の場合は、

d = 1.22 x λ x F
d = 1.22 x 0.55 x 6.3 = 4.22
ピクセルサイズを分解能の半分にする倍率 → 4.22 / 2 = 2.11μm

CMOSセンサーのピクセルサイズ
IMX294 → 4.63μm / 2.11μm = 約2.2倍
IMX533 → 3.76μm / 2.11μm = 約1.8倍
大気の揺らぎやOSCのディベイヤーなど、他の要因が多くあり、もっとぼけている。

# Script for Siril 1.4
# December 2024
# (C) Cyril Richard
# OSC_Preprocessing_WBayerDrizzle v1.1
#途中省略
#
# Calibrate Light Frames
calibrate light -dark=../masters/dark_stacked -flat=../masters/pp_flat_stacked -cc=dark -cfa -equalize_cfa

# Align lights with Drizzle
register pp_light -drizzle -scale=1.0 -pixfrac=1.0 -kernel=square -flat=../masters/pp_flat_stacked

# Stack calibrated lights to result.fit
stack r_pp_light rej 3 3 -norm=addscale -output_norm -rgb_equal -32b -out=result

-scale=1.0 を 2.2や1.8 若しくは、任意の数値に変更して別名(IMX294_scale2.2、IMX533_scale1.8)にてスクリプトを保存や、-pixfrac=1.0 も変更かと思ったのですが、
SirilマニュアルのCFA Scale項目に、

「scale = 1.0 および pixfrac = 1.0 で CFA ドリズルを適用することを推奨します。」
「scale > 1.0 を使用して画像もアップサンプリングしたい場合は、各チャンネルで利用可能なピクセルがさらに疎になり、適切なカバレッジを確保し、許容レベルまでノイズを抑制するためには、さらに多くのデータが必要になることに注意してください。」
https://siril.readthedocs.io/en/latest/preprocessing/drizzle.html

IMX294MCの画像に、-scale=2.2 にて処理を行うと、”process”ディレクトリは中間ファイルが10Gbyte作成され、1ファイル容量が600Mbyteに成りました。処理に時間がかかりました。
画像に大きな違いが見られないので、推奨の様に、scale = 1.0 および pixfrac = 1.0 で CFA ドリズルを適用が実用的と思いました。

-kernel=square
gaussian に変更すると解像度が改善されるかもしれません。

Gaussian. This models the droplet as a Gaussian centered on the center of the input pixel. This may provide improved resolution recovery, and will limit the pixel fraction to ensure all output pixels receive some droplet coverage, but it is not flux preserving.
https://siril.readthedocs.io/en/latest/preprocessing/drizzle.html

OSC (ワンショットカラーカメラ)の場合は、
カラーフィルター配列(Color Filter Array : CFA)によるRGGBの各フィルター画素が抜けている状態を、位置をずらして重ねて、他のフィルター部分に因り抜けている部分を埋める処理を行わせる。

勾配補正 : BE

  • GraXpert
  • Sirilでは、
    background sample には、なるべく星を入れない様に打点する。[samples per line → 生成] では、打点上に星の有無を確認する。前処理でフラット補正をしないならば、その替わりに、割り算、[division]を選択します。

色補正 SPCC : Spectro Photometric Color Calibration

Sirilでは、Gaiaデータを事前にダウンロードしなくても、SPCCを行えます。
Siril は該当箇所のデータを、その都度ダウンロードします。GNU/Linuxの場合、~/.config/siril/download_cache/ fit及びcsvファイル
再度、SPCCを行うときは同じデータを使用しているようです。

“Siril Catalog Installer” スクリプトを使うと、特定の範囲、例えば撮影地から見られる範囲のGaiaデータを、ローカルディスクへ入れられます。

Sirilにフィルターデータを追加

フィルターのデータが無い場合は、公開されているフィルターの波長と透過率のグラフから、PlotDigitizer グラフから数値を読み取るツールを使い、その数値をファイルにします。

フィルターデータファイルは、以下のディレクトリへ置きます。
GNU/Linuxは、/home/ユーザーディレクトリ/.local/share/siril-spcc-database/osc_filters/
WindowsOSは、C:\ユーザーディレクトリ\AppData\Local\siril-spcc-database\osc_filters\

フィルターデータファイルは、次の様なCSVファイルです。

[
  {
    "model": "IDAS HEUIB II UV/IR Cut",
    "name": "IDAS HEUIB II",
    "type": "OSC_FILTER",
    "dataQualityMarker": 2,
    "dataSource": "Scanned from Transmission Chart",
    "manufacturer": "IDAS",
    "version": 1,
    "wavelength": { 
       "value":  [389,途中省略,718],
       "units": "nm"
    },
    "values": {
      "value": [0.003,途中省略,0.005],
      "range": 1
    }
  }
]

“wavelength”: {  ”value”: [ ] これが波長、単位はnm
“values”: { ”value”: [ ] これが波長に対応する透過率

縞模様を処理 :Banding Reduction

In some cases, images may suffer from a banding defect. This is usually caused by the sensor and calibration by darks, bias and flats do not improve the images.
https://siril.readthedocs.io/en/latest/processing/banding.html

Siril の説明文では、「縞模様はセンサーに原因がある」との事です。

  • Amount : “補正の強さを指定します。値が高いほど、補正は強くなります。”
  • Protect from Highlights : “このオプションがオンになっている場合、明るいピクセルを無視します。”
  • 1/Sigma Factor : “このオプションは、ハイライト保護を調整します。値が大きいほど、より良い保護効果が得られます。”
  • Vertical banding : “垂直方向の縞模様を修正します。”

勾配補正、色補正、縞模様補正を行った画像を保存する :

勾配補正、色補正、縞模様処理を行った画像を保存します。
この画像を元に、恒星部分と星雲部分の処理を別々に行います。

恒星の飽和を補正する : Desaturate Stars

このツールは、リニア画像で行います。ストレッチ前の画像に行います。

  • FWHWを求めるために、Dynamic PSF を使います。[Profile type]には、”Moffat”を使います。

We recommend using a Moffat profile in the Dynamic PSF window to get better parameters.

  • スターファインダーボタン(ファインドスター)を押して、恒星の検出を行います。
  • 円が恒星の周りに表示されます。その円が紫色ならば、その恒星は飽和しています。
  • Star Processing → Desaturate Stars
    • 飽和している星がある場合は、 findstar で行った調整結果を考慮して星のプロファイルを再構築するアルゴリズムを用います。
  • 飽和補正を確認する為に、もう一度Dynamic PSF を使います。

PSF: Point Spread Function : 点光源がどの様に広がっているかを表す。
星の点光源は、観測や撮影時に必ずボケる。撮影する天体像は判っているのでPSFが正確に解れば、元画像に戻せる。これが Desaturate や 逆畳み込みの発想です。
 でも、処理に用いる数式は近似です。光学系F値や、エアリーディスク、追尾誤差、シンチレーションが含まれる天体画像に対して、Desaturate や 逆畳み込みを行うと、画像が部分で壊れるかもしれない。

恒星を処理 : グリーンノイズを除く :SCNR

Because green is not naturally present in deep sky images (except for comets and some planetary nebulae), if the image has already been calibrated, its colors are well balanced and the image is free of any gradient, we can assume that if the image contains green, it belongs to the noise.

Other Color Tools — Siril 1.4.0-beta3 documentation

“緑は深宇宙画像(彗星や一部の惑星状星雲を除く)に自然には存在しないため、画像が既に校正され、色バランスが良好でグラデーションが無く、画像に緑が含まれている場合には、それはノイズに属すると仮定できます。”

  • 場合により、このSCNRは行わないことがあります。
  • SCNRを行う。
    • Remove Green Noise

恒星を処理 : グリーンノイズを除く、マゼンタ補正 :SCNR

  • 場合により、このマゼンタ補正は行わないことがあります。
  • SCNR処理後に、ニュートラルグレーにした背景が、マゼンタに偏ってしまうので、マゼンタの補色がグリーンの関係を使い、明暗反転させた画像に、再度 SCNRを行う。
    ただし、赤色星雲画像には行えません。
    • Negative Transform : グリーンノイズを除いた画像を明暗反転させます。
    • Remove Green Noise : 明暗反転画像にグリーンノイズを除く処理を行います。
    • Negative Transform : 明暗反転させます。

恒星を処理 : 桃色星 “Pink Star” 対応 ; 補色関係を用いる

ビットレートいっぱいまで情報が入った14bitの画像を、16bitへ変換する時に、
14bit画像情報を3倍し、16bitにした後に、”1″に正規化する場合は、それ以上の増幅ができない。
14bit画像情報に空の14bitを3つ付け足して、16bitにした後に、”1″に正規化する場合は、増幅できる。

14bit情報を4倍にして16bit情報にする場合     → 16384+16384+16384+16384 = 65536
0から1までに正規化した情報を4倍にする場合    →  0.25+ 0.25+ 0.25+ 0.25 =     1
0から1までに正規化した情報に空の3倍を足した場合 →  0.25+    0+    0+    0 =     0.25

飽和星は、R,G,B 全てが同じ値になっている。
ワンショットカラーカメラなどのRGGB画像に対して、RチャンネルとBチャンネルを増幅すると、RBのピンクや桃色、紫色になってしまう。

  • 明暗反転
  • 明暗反転させた画像にSCNR [グリーンノイズを除く]
  • 再度、カラー反転させて元画像にする。

恒星を処理 : Deconvolution

恒星画像 (starmask) を処理します
BE, SPCC, Desaturate Stars, SCNR, 明暗反転画像にSCNR, 逆畳み込み → 画像を分離

Cosmic Clarity Suiteで恒星画像のみに逆畳み込み
  • Cosmic Clarity Sharpen
GraxPartで星画像のみに逆畳み込み
  • Siril Dynamic PSFウィンドウで Moffat プロファイルを使用する。
  • Profile type:は、[Moffat]を用いる。
    読み込み中の画像の星を検出し、点像分布関数が計算される → consoleコンソール上に表示された、FWHMの数値を、GraXpart “image FWHM (in pixels)に入れる。
  • [Stars-only], [Deconvolve Image]
Sirilで星画像のみに逆畳み込み
  • 分離前の画像から、Dynamic PSFウィンドウで Moffat プロファイルを用いて全ての恒星
  • 逆畳み込みの値を決める
    [PSF form stars]を選び、[PSF size]を “15” 以上に変えてみる
    [Generate PSF]を押して、PSF値を求める。
  • 星画像を読み込む
  • 必要に応じて、星画像に Deconvoution を行う :逆畳み込み
    Iterations: 1前後 ??
    Gradient descent step size: 0.0003
  • 場合により、arcsinh transform を行う。星画像はClipさせる。リスケールは場合に拠る。
  • わかり易いファイル名で保存する

恒星画像処理に GHS, Modified arcsinh transform を用いる場合もあります

恒星画像 (starmask) と星雲画像 (starless) に分離 : StarNet2

恒星と星雲部分に別々の画像処理を行うので、恒星と星雲を分離します。

  • StarNet Star Removal
    星画像が必要なので、[Generate star mask]にチェック
  • Upsample x2 : “StarNetを実行する前に画像を2倍にアップサンプリングします。これにより、非常に小さな星の処理性能が向上しますが、処理時間が4倍になり、非常に大きな星の処理性能が低下する可能性があります。処理完了後、画像は元のサイズに再スケーリングされます。”
    • 星雲や恒星が複雑に重なり合っている部分が多い画像には、Upsample x2 を使用しないと良い結果が得られる事があります。

前処理画像を表示する : 前処理画像の読み込み : Siril

星雲画像 (starless) を処理します
BE, SPCC, 画像を分離 → 逆畳み込み, Wavelet, GraXpert-denoise, GHS, Color Saturation

星雲部分を処理 : Deconvoution (逆畳み込み)

元の天体画像中、星雲などの部分に画像処理を行います。

GraXpertを使う場合
  • FWHWを求めるために、SirilのDynamic PSFを使います。
  • スターファインダーボタン(ファインドスター)を押して恒星の検出を行います。
  • コンソールに “Found 7160 Moffat profile stars in image, channel #1 (FWHM 3.914131)”などと表示されます
  • この”FWHW”の数値を GraXpert → deconvolution → image FWHM (in pixels)に入れます。この場合は、[3.9]を入れます
  • Deconvolution Strengthを適宜に決めます。恒星画像とは違う数値も試してみましょう。
  • 分かりやすいファイル名で保存します。
Sirilを使う場合
  • 逆畳み込み処理に時間がかかる様ならば、画像の一部に処理を行い、deconvolutionの効果を確認し、後に画像全体に同じ処理を行います。
    • 画像の一部を選択します → [選択範囲で切り抜き]
  • 分離前の画像から、Dynamic PSFウィンドウで Moffat プロファイルを用いて全ての恒星、若しくは、[Amplitude range]を用い0.01〜0.7の範囲を使用する。
  • 逆畳み込みを行う
    [PSF form stars]を選び、[PSF size]を “15” 以上に変えてみる
    [Generate PSF]を押して、PSF値を求める。「下向き矢印」を押してその値を保存できます。
    Iterations: 2024 〜
    Gradient descent step size: 0.0003 若しくは、 0.000?
  • 切り抜き画像で上記のそれぞれの値を試した後に、[Undo]を押して元画像に対して、逆畳み込みを行います。
  • 処理には時間が要るので、珈琲、紅茶、お茶を用意して、おやつを楽しみましょう。
  • わかり易いファイル名で保存する。

星雲画像に分離 : StarNet Star Removal : Siril

星雲部分に以降の処理を行うので、Deconvolution, Object-onlyを終えた画像を分けます。

  • Upsample x2 : “StarNetを実行する前に画像を2倍にアップサンプリングします。これにより、非常に小さな星の処理性能が向上しますが、処理時間が4倍になり、非常に大きな星の処理性能が低下する可能性があります。処理完了後、画像は元のサイズに再スケーリングされます。”
  • 星雲や恒星が複雑に重なり合っている部分が多い画像には、Upsample x2 を使用しないと良い結果が得られる事があります。

星雲画像に : Wavelet

星雲画像のノイズを減らす : Denoising

星雲画像の彩度を調整する : Color Saturation

星雲画像をストレッチ : ヒストグラム変換HT, GHS

[symmetry point]を換え、複数回、変換を行うと、より良いコントラストを得られる場合があります。

Colour stretch model について

R,G,B全てのチャンネルに対して同じ変換を行う
ArcsinhStretchと同様に、色を変えずにストレッチを行う。
変換したピクセル値が1を超える場合の処理は、[Clip mode]で選ぶ。

GHS [Colour stretch model]

Set the stretch model for colour stretches.
The options are:
“カラーストレッチのストレッチモデルを設定します。”
“オプションは以下の通り:”

  • evenly weighted luminance, (記載ミスかな→ Even?? weighted luminance)
    which calculates the stretch based on a luminance value weighting the R,G and B channels equally;
    “均等に重み付けされた輝度”
    “R、G、Bチャンネルを均等に重み付けした輝度値に基づいてストレッチを計算する。”
  • human weighted luminance,
    which stretches based on a luminance value weighting the R, G and B channels according to the relative sensitvity of the human eye;
    “人間が重み付けした輝度”
    “人間の目の相対的な感度にしたがってR、G、Bチャンネルに重み付けをした輝度値に基づいて伸縮する。”
  • independent channel values,
    which applies the stretch independently to each channel of the pixel.
    “独立したチャンネルの値”
    “ピクセルの各チャンネルに独立してストレッチを適用します。”
  • saturation stretch,
    which applies the stretch to the S component in HSL space. In saturarion mode the saturation histogram curve is show in yellw.
    “飽和ストレッチ”
    “HSL空間のS成分にストレッチを適用します。彩度ヒストグラムカーブは黄色で表示されます。”

Note: human-weighted luminance is not allowed if less than 3 colour channeles are selected as it doesn’t make sense.
“カラーチャンネルが3つ以下の場合、ヒューマンウェイト輝度は意味をなさないので使用できません。”

HSL色空間
Hue(色相)、
Saturation(彩度)と、
Lightness若しくは、Luminance(輝度)の3つの成分からなる色空間

GHS [Clip mode:]
  • Clip
    clips values to the range 0.0 -1.0. Default
    “0.0 – 1.0の範囲でクリップします。使い始めは、Clipになります。”
    → 輝星やその周りの明るい色が変わる。(変換したピクセル値が 1を超える場合には、1に変換する。)
  • Rescale
    rescales RGB values of clipped pixels to not exeed 1.0 per pixel.
    “クリッピングされたピクセルのRGB値を、ピクセルあたり1.0を超えないように再スケーリングします。”
    → 輝星などは、それだけ暗くなる。(変換したピクセル値が “1”を超える場合には、”1″を超えたピクセルのみ、割り算を行う。)
  • RGB blend
    applies a blending function for smooth reconstructed highlight colors.
    “ハイライトカラーを滑らかに再構成するためのブレンド機能を適用します。”
    → 輝星は、白っぽくなる。(変換したピクセル値が “1”を超える場合には、RGBモードで変換した値とブレンドする。)
  • Global rescale
    Same as Rescale, but rescales to the global maximum component value.
    “Rescaleと同じですが、グローバルな最大成分値にリスケールします。”
    → 輝星などの色は保たれるが、画像全体に割り算が行われるので、画像全体が暗くなる場合がある。(変換したピクセル値が “1”を超える場合には、その最大値を調べて、全ピクセルの値をその最大値で割る。)

Π Theory
https://siril.readthedocs.io/en/latest/processing/stretching.html#clipping-modes
This RGB blend clipping algorithm is also available for the Generalised Hyperbolic Stretch transforms described below.
“このRGBブレンドクリッピングアルゴリズムは、以下で説明する一般化双曲線ストレッチ変換でも利用可能です。”

Clip – this clipping mode just allows any colour components that clip to clip, but restricts them to values in the range 0.0 to 1.0. This may suffer from coloured artefacts such as fringes around nearly-saturated stars, but it is extremely quick to calculate.
“クリップ – このクリッピングモードは、クリップする色成分を全てクリップしますが、0.0から1.0の範囲内に制限します。これにより、ほぼ飽和した星の周りの色収差のようなアーティファクトが現れるかもしれませんが、計算が非常に高速です。”

Rescale – this clipping mode checks the R, G and B components of each pixel and if any are > 1.0 it rescales the pixel so that no components are clipped. This method is prone to artefacts and is mainly included for feature equivalence with the GHSastro plugin. It is quick to compute.
“Rescale – このクリッピングモードは、各ピクセルのR、G、B成分を検査し、いずれかの成分が1.0を超える場合は、ピクセルを再スケーリングして、どの成分もクリップされないようにします。この方法はアーティファクトが発生しやすいので、主にGHSastroプラグインとの機能互換性を確保するために含まれています。計算は迅速です。”

Global Rescale – this clipping mode behaves similarly to Rescale except that the scaling is computed globally instead of per-pixel. This avoids the kind of artefacts that Rescale can produce, but has a bigger impact on overall image brightness. This is faster than RGB blending to compute but slower than Clip or Rescale.
“Global Rescale –
このクリッピングモードはRescaleと同様の動作をしますが、スケーリングがピクセル単位ではなくグローバルに計算されます。これにより、Rescaleが作るアーティファクトを避けることができますが、画像全体の明るさに大きな影響を与えます。このモードはRGBブレンドよりも計算が速いですが、ClipやRescaleよりも低速です。”

ブラックポイントについて : 背景の暗さ

Clip (%) が、0.01%前後
この数値は、R,G,B各チャンネルの合算値です。

恒星画像 と 星雲画像 を再合成 : Star Recomposition

別々に処理した、恒星画像と星雲画像を重ねます

恒星画像 (starmask)
BE, SPCC, Desaturate Stars, SCNR, 反転画像にSCNR, 逆畳み込み, 画像を分離 → 再合成, GHSで調整

星雲画像 (starless)
BE, SPCC, 画像を分離 → 逆畳み込み, Wavelet, GraXpert-denoise, GHS, Color Saturation → 再合成

  • Star Recomposition

Cosmetic Correction

Contrast-Limited Adaptive Histogram Equalization (CLAHE)

FITSフォーマットで保存


BE:
SPCC:
SCNR:
HT:
GHS
Satu:
graxpert:

コメント