Mac上のSiril 1.4.1でのLRGBスタッキング処理

はじめに

3ヶ月前リコリモで撮影したLRGB画像をカラー合成する記事を書いた。NGC1566を対象に、LRGB各フィルターで露光した複数の画像を合成(スタッキング)処理を行った。自身の備忘も兼ね、処理内容をここにまとめる。

関連情報

  1. リコリモ - オーストラリア サイディング・スプリングの50cmの望遠鏡を使った。リコリモの画像は、rawデータだけでなく、ダーク補正・フラット補正済みのキャリブレーション済みのデータもダウンロードできる。キャリブレーション済みのデータを使っている。
  2. Siril - 今回使用した天体画像処理ソフトウェア。MacBook Air上で動作する、Siril 1.4.1を使ってスタッキングする。先程、ホームページを見ると、2/18に1.4.2がリリースされているようだ!
  3. ChatGPT - これを使って観測計画を立てた。
  4. Claude - これを使って、画像処理を進めて、まとめた。シェルプロをサクッと作ることができ、スピードアップ。

画像処理

スタッキング手順

前提

対象・撮影時間
  • 対象 NGC1566

  • L画像 2026/1/21 22:10:44-22:49:26 各180秒・10枚

  • R画像 2026/1/21 22:49:57-22:59:37 各120秒・4枚

  • G画像 2026/1/21 23:00:07-23:09:50 各120秒・4枚

  • B画像 2026/1/21 23:10:20-23:20:01 各120秒・4枚 ※不良画像1枚除外してスタッキング処理

ディレクトリ構成
NGC1566/
  └── lights/
      ├── calibrated-...-Luminance-...-001.fit
      ├── calibrated-...-Luminance-...-002.fit
      ├── calibrated-...-Red-...-001.fit
      ├── calibrated-...-Green-...-001.fit
      └── calibrated-...-Blue-...-001.fit
処理後の目標構成
NGC1566/
  ├── L_stacked.fit
  ├── R_stacked.fit
  ├── G_stacked.fit
  ├── B_stacked.fit
  ├── lights/
  ├── L/
  ├── R/
  ├── G/
  └── B/

ステップ1: ファイル名の一括変更とディレクトリ分類

1-1. シェルスクリプトの作成

ターミナルで以下を実行:

cd ~/workspace/astro-image/NGC1566
nano rename_move_lrgb.sh
1-2. スクリプト内容

以下の内容を貼り付け:

#!/bin/bash

# 作業ディレクトリの確認
if [ ! -d "lights" ]; then
    echo "Error: 'lights' directory not found!"
    exit 1
fi

# 必要なディレクトリを作成
echo "Checking and creating directories..."
for dir in L R G B; do
    if [ ! -d "$dir" ]; then
        mkdir "$dir"
        echo "Created directory: $dir"
    else
        echo "Directory already exists: $dir"
    fi
done

# lightsディレクトリに移動
cd lights

echo ""
echo "Starting LRGB file renaming and moving..."

# 関数:リネームと移動
rename_and_move() {
    local filter=$1
    local prefix=$2
    local count=0
    
    for file in calibrated-*-${filter}-*.fit; do
        if [ -f "$file" ]; then
            # ファイル名から番号を抽出(macOS対応)
            number=$(echo "$file" | sed -E 's/.*-([0-9]{3})\.fit$/\1/')
            newname="${prefix}_${number}.fit"
            
            # リネームして親ディレクトリの該当フォルダに移動
            mv "$file" "../${prefix}/${newname}"
            echo "Moved: $file -> ${prefix}/${newname}"
            ((count++))
        fi
    done
    
    if [ $count -eq 0 ]; then
        echo "Warning: No ${filter} files found"
    else
        echo "Processed ${count} ${filter} files"
    fi
    echo ""
}

# 各フィルターを処理
rename_and_move "Luminance" "L"
rename_and_move "Red" "R"
rename_and_move "Green" "G"
rename_and_move "Blue" "B"

# 元のディレクトリに戻る
cd ..

echo "============================="
echo "All LRGB files processed successfully!"
echo ""
echo "File distribution:"
echo "  L/ : $(ls -1 L/*.fit 2>/dev/null | wc -l | tr -d ' ') files"
echo "  R/ : $(ls -1 R/*.fit 2>/dev/null | wc -l | tr -d ' ') files"
echo "  G/ : $(ls -1 G/*.fit 2>/dev/null | wc -l | tr -d ' ') files"
echo "  B/ : $(ls -1 B/*.fit 2>/dev/null | wc -l | tr -d ' ') files"
echo "============================="

保存方法: (nanoの場合)

  • Ctrl + O で保存
  • Ctrl + X で終了
パラメータ説明
  • sed -E 's/.*-([0-9]{3})\.fit$/\1/'
    • -E: 拡張正規表現を使用
    • .*-([0-9]{3})\.fit$: ファイル名末尾の3桁数字を抽出
    • \1: マッチした数字部分を出力
1-3. スクリプトの実行
# 実行権限を付与
chmod +x rename_move_lrgb.sh

# 実行
./rename_move_lrgb.sh

ステップ2: Sirilでの位置合わせとスタッキング

2-1. Lチャンネル(Luminance)の処理
(1) Sirilを起動し、コマンドラインで以下を実行:
# Lディレクトリに移動
cd ~/workspace/astro-image/NGC1566/L

パラメータ説明:

  • cd: Change Directory - 作業ディレクトリを変更
(2) 位置合わせ(Registration)
register L_ -prefix=r_

パラメータ説明:

  • L_: 処理対象ファイルのパターン(L_001.fit, L_002.fit…を自動検出)
  • -prefix=r_: 出力ファイルのプレフィックス(r_L_001.fit, r_L_002.fit…が作成される)

処理内容:

  • デフォルトで Global Star Alignment (deep-sky) 法を使用
  • 各画像から星を検出し、位置を合わせる
  • 変換方法: Shift + Rotation(平行移動と回転)
  • すべてのファイルが基準画像(通常は最初の画像)に合わせて位置調整される
(3) スタッキング(Stacking)
stack r_L_ rej 3 3 -norm=additive -out=../L_stacked

パラメータ説明:

  • r_L_: スタック対象ファイルのパターン(位置合わせ済みファイル)
  • rej 3 3: ピクセル除去方法
    • rej: Winsorized Sigma Clipping を使用
    • 最初の 3: 下側のシグマ値(低い値を除去する閾値)
    • 2番目の 3: 上側のシグマ値(高い値を除去する閾値)
    • 3σを超える異常値(ホットピクセル、宇宙線など)を除去
  • -norm=additive: 正規化方法
    • additive: 加算的正規化(各画像の明るさを揃える)
    • 他のオプション: mul(乗算), none(正規化なし)
  • -out=../L_stacked: 出力ファイル名
    • ../: 親ディレクトリに出力
    • 拡張子 .fit は自動付加される

処理内容:

  • 平均スタック(Average stacking)がデフォルト
  • ノイズを低減し、信号対雑音比(SNR)を向上
  • 異常値を除去してクリーンな画像を生成
2-2. Rチャンネル(Red)の処理
# Rディレクトリに移動
cd ../R

# 位置合わせ
register R_ -prefix=r_

# スタッキング
stack r_R_ rej 3 3 -norm=additive -out=../R_stacked
2-3. Gチャンネル(Green)の処理
# Gディレクトリに移動
cd ../G

# 位置合わせ
register G_ -prefix=r_

# スタッキング
stack r_G_ rej 3 3 -norm=additive -out=../G_stacked
2-4. Bチャンネル(Blue)の処理
# Bディレクトリに移動
cd ../B

# 位置合わせ
register B_ -prefix=r_

# スタッキング
stack r_B_ rej 3 3 -norm=additive -out=../B_stacked

ステップ3: 結果の確認

3-1. 出力ファイルの確認

親ディレクトリ(NGC1566/)に以下のファイルが作成されているか確認:

cd ~/workspace/astro-image/NGC1566
ls -lh *.fit

期待される出力:

L_stacked.fit
R_stacked.fit
G_stacked.fit
B_stacked.fit
3-2. スタッキング結果の品質確認

Sirilでログを確認:

  • ピクセル除去率が 0.5% - 2% 程度であれば正常
  • 除去率が高すぎる場合(>5%)は、sigma値の調整が必要な場合あり

LRGB合成

この記事の「画像処理」手順の各フィルター画像に、先程出力された、[LRGB]_stacked.fitを使う。 この部分についても、コマンドラインで実施できるようになったら、別途まとめていきたい。


まとめ

上記の手順で得られた画像:

NGC1566

次の対象は、暗黒帯を持つ銀河、更にSNレムナントを撮ってみたい。



も参照してください