星景写真に特化したMacネイティブの画像スタッキング・コンポジットアプリケーションです。 Windows用ソフトウェア「Sequator」のように、星の日周運動を追尾しながら地上の風景を固定して合成する「空と地上の分離」スタッキングを実現します。
macOS 14 (Sonoma) 以降に対応しています(macOS 15.7でビルド・検証)。 配布DMGはUniversal版(Apple Silicon / Intel のどちらでもネイティブ動作)です。
macOS 10.13 (High Sierra) 以降に対応した版は
macos10.13ブランチで開発しています。
📘 使い方ガイド: docs/MacStarStacker使い方ガイド.pdf(画面の写真付きで、はじめての方向けに説明しています。配布DMGにも同梱)
- 各社RAW画像・多彩なフォーマットに対応:
- Sony (
.arw), Canon (.cr2,.cr3), Nikon (.nef), Fujifilm (.raf), OM System/Olympus (.orf), Panasonic (.rw2), Pentax (.pef), Adobe (.dng), TIFF, FITS, JPEG, PNG
- Sony (
- 3つの合成方式とRAWのままの合成:
- 平均(ノイズ低減)・中央値・比較明(スタートレイル)で合成。
- 平均では「シグマクリッピング」を選べます。画素ごとに中央値とばらつき(MAD)を基準に外れ値を除き、残りの平均とばらつきで除き直す(最大3回)ことで、飛行機・人工衛星の光跡やホットピクセルを除いてから平均します。暗い側・明るい側の κ(既定は3)を別々に指定できます。3枚以上で有効です。流れる雲や明滅する灯りなど、時間とともに変わる所では、画素ごとに残る値が変わるため、なだらかに平均した結果とは見え方が変わることがあります。
- 全フレームがベイヤー配列のRAWなら、現像せずにセンサーデータのまま合成し、RAW (DNG) で書き出せます(ほかに16bit TIFF・32bit FITS・JPEG)。
- 星だけを使った位置合わせ(アライメント):
- 点光源(星)だけを検出し、星どうしの対応からホモグラフィを求めて位置合わせします。岩肌・木々・灯りなど地上の模様には合わせないため、固定撮影でも追尾撮影でも星が正しく重なります。
- 比較明合成で空・地上マスクを描いた場合は、空の中の星だけで位置合わせします。
- 比較明合成でも選べます(比較明合成の既定はOFF。ONにすると星は軌跡ではなく点になります)。
- 新星景モード(空と地上の分離スタッキング):
- 平均・中央値で「新星景モード」をONにすると、空は星に、地上は地上に合わせてそれぞれ合成し、1枚にまとめます。固定撮影(星が動く)でも追尾撮影(地上が動く)でも使えます。
- 空と地上の境界は自動で判定します(星は空に合わせると重なり、地上は地上に合わせると重なる、というフレーム間の違いと、色・輪郭を利用)。地平線付近の光害は空、模様の無い海は地上として扱います。
- 継ぎ目は手作業の新星景合成と同じ考え方で仕上げます: 地上はくっきりした境界で重ね、空には地上との境界からなだらかに弱まる強さで「光害フレーム」(地上に合わせた星のない空)に星を重ねたものを比較明で合わせます。地平線付近が暗く沈んだり星が薄くなったりしません。
- 使い方の流れ:
- 「新星景モード」をONにして「解析開始」を押すと、全フレームを位置合わせして空と地上を自動で判定し、基準画像の上に半透明のマスク(空=青、地上=緑)で表示します(Light・基準画像・キャリブレーション画像を変えたら、もう一度「解析開始」を押します)。
- 違う所だけブラシで塗り直します。塗った所は自動判定より優先されます(はみ出して塗っても、縁は本当の輪郭に合わせます。縁として扱う幅は塗った太さの1/3までなので、狭い所を塗り直しても塗った側になります)。
- スタッキングを開始します。1の解析結果を使い回すので、位置合わせはやり直しません。
- 結果を見て、必要ならプレビューを「元画像を表示」に切り替えて塗り直し、もう一度スタッキングします。
- 地上固定フレーム: 同じ三脚で追尾撮影の直前か直後に、同じ位置で続けて撮った地上の写真を「地上固定フレーム登録…」で登録すると、地上はその写真にし、その構図で空と地上を判定・合成します(登録したフレームはファイルリストの Light タブの一番上に表示されます)。
- 複数枚登録した場合は、フレームどうしの位置合わせはせずに、画素ごとの中央値で1枚にします(2枚なら平均)。追尾の前と後に分けて撮ったフレームを混ぜると地上が二重になるため、どちらか一方だけを登録してください。露出の違うフレーム(AEBなど)は、撮影情報(露出時間・ISO・F値)で明るさを Light に揃え、白飛びした値は使いません。
- 空は基準画像の星に合わせた合成を、地上固定フレームの構図に移して重ねます。空の奥までつながる光害は、Light を地上に合わせた合成から取ります。
- ダークは露出時間が違うため地上固定フレームには使いません(バイアス・フラットは使います)。RAW の Light には、同じカメラの RAW を登録してください。
- 地上固定フレームを登録・解除すると、マスクの構図が変わるためマスクは消えます。「解析開始」でもう一度判定してください。
- 地上の明るい灯り(漁火・街の灯り)の周りは、空の背景を地上に合わせた合成から取り、灯りのにじみが星の動きの向きに流れて伸びないようにします(星は空の合成から重ねます)。
- 境界ぼかし(既定 0 px、0〜300 px)を指定すると、自動で決めた境界をさらにぼかして空と地上をなじませます。地上固定フレームを使うときは地上側にだけ広げ、境界の近くの地上を Light から合成した地上(ノイズが少ない)から地上固定フレームへなだらかに移します(空の星は変えません)。地上固定フレームとのノイズや色味の段差で継ぎ目が見えるときに使ってください。
- 動く光(飛行機・人工衛星・船の灯りなど)は外れ値として取り除かれます。中央値を選んだ場合も、外れ値を除いた平均で合成します(外れ値を除く κ はシグマクリッピングの設定を使います)。
- 空と地上を分ける必要が無い(星と地上の動きがほぼ同じ)・分けられない場合は、通常の合成にして理由を表示します。
- 比較明合成では、ブラシで塗ったマスクで空(比較明)と地上(平均)を分けます。境界ぼかしを0〜100 pxで調整できます(0 pxで無効)。
- ブラシは円が画像に掛かっていれば塗れるので、画像の端まで塗れます。マスクは境界ぼかしの分だけなだらかに薄く表示されます。
- 比較明合成における飛行機・人工衛星の光跡自動除去 & 流星保護レビュー:
- 比較明スタック時に、空を横切る飛行機(点滅ストロボ・航跡灯)や人工衛星(直線)を、時間方向の中央値/MAD・画像別ノイズ床・直線支持率・線方向の輝度積算などで検出して除去します。
- 流星の救出レビュー: 候補を一覧で確認し、流星など残したい光跡を保護できます。
- キャリブレーションフレーム減算:
- ダーク・フラット・バイアスフレームのマスター生成と自動減算。
- レンズプロファイルの自動抽出 & DNG埋め込み:
- 基準RAWのレンズ型番・メーカー・焦点距離・F値・カラーマトリクスを解析し、DNG書き出し時にAdobe Camera Raw向けのXMPメタデータ(
crs:LensProfileEnable="1")を埋め込みます。
- 基準RAWのレンズ型番・メーカー・焦点距離・F値・カラーマトリクスを解析し、DNG書き出し時にAdobe Camera Raw向けのXMPメタデータ(
- タイムラプス動画エクスポート(H.264 / HEVC):
- 位置合わせを「なし/地上に合わせる(揺れ補正)/星に合わせる(星を固定)」から選択。どちらも最初のフレームに揃えます。
- フリッカー除去・オートストレッチ・解像度(オリジナル/4K/1080p/720p)。
- 再生速度はFPS指定・秒数指定のどちらでも、スライダーか数値の直接入力で指定できます。
- 画像をドラッグしてつかんで動かします(マスク編集中は Space か Option を押しながらドラッグ)。
- ズームは −/+ ボタン、Cmd+スクロール、トラックパッドのピンチ(0.25〜10倍)。1:1 で元に戻します。
- Auto Stretch(表示用の明るさ持ち上げ)は既定でOFF。
- プレビューに表示中のファイルは、左のファイルリストで選択表示(太字・左端の帯)になります。
MacStarStacker/
├── dist/ # 配布用バイナリ成果物 (.app, .dmg)
│ ├── MacStarStacker.app
│ └── MacStarStacker.dmg
├── docs/
│ ├── MacStarStacker使い方ガイド.pdf # 使い方ガイド(docs/manual から作る)
│ ├── manual/ # 使い方ガイドの LaTeX ソース・スクリーンショット・build.sh
│ └── assets/ # アイコン・画像素材
├── scripts/ # 補助スクリプト
│ ├── build_deps.sh # OpenCV・LibRawをUniversal静的ライブラリとしてビルド
│ └── かんたんインストーラ.applescript # DMGに入れるインストーラ(build_app.sh が .scpt にする)
├── MacStarStacker.swiftpm/ # Swift/C++ ソースコード & ビルド設定
│ ├── Package.swift
│ ├── build_app.sh # dist/ にビルド・パッケージングするスクリプト
│ ├── Vendor/ # build_deps.sh の出力先(Git管理外)
│ └── Sources/
│ ├── MacSequator/ # AppKit UI, コントローラ, 画像処理エンジン
│ ├── OpenCVWrapper/ # OpenCV C++ ラッパー(星の位置合わせ・タイムラプスの揺れ補正・光跡除去)
│ └── LibRawBridge/ # LibRaw C ブリッジ(RAWのセンサーデータ読み込み・デモザイク)
├── CLAUDE.md # 開発手順(main と macos10.13 の両ブランチへの反映方法など)
├── .gitignore
└── README.md
- macOS 14 以降
- Xcode 16 以降(
xcode-selectでXcode本体を選択しておく) - CMake・Ninja(依存ライブラリのビルド用):
brew install cmake ninja - ExifTool (推奨):
brew install exiftool
OpenCV 4.13.0 と LibRaw 0.22.2 は、scripts/build_deps.sh が公式GitHubからソースを取得し、
Universal(x86_64 + arm64)の静的ライブラリとして MacStarStacker.swiftpm/Vendor/ にビルドします
(初回のみ数分〜十数分。以降はビルド済みのものを再利用)。Homebrew版のOpenCV・LibRawは使いません。
scripts/build_deps.sh 14.0
swift test --package-path MacStarStacker.swiftpmcd MacStarStacker.swiftpm
bash build_app.shビルドが完了すると、dist/ 配下に MacStarStacker.app および MacStarStacker.dmg が自動生成されます。
docs/MacStarStacker使い方ガイド.pdf があれば、DMGに同梱します。
# スクリーンショットを撮る(RAWのフォルダを指定。release で十数分かかる)
DOC_SCREENSHOTS_DIR="$PWD/docs/manual/figures" DOC_SAMPLE_DIR=<RAWのフォルダ> \
swift test -c release --package-path MacStarStacker.swiftpm --filter DocumentationScreenshotTests
# LaTeX で PDF にする(TeX Live の lualatex・latexmk が必要)
docs/manual/build.shスクリーンショットはアプリの画面を部品ごとに描いて撮り、説明の矢印の位置(figures/*.coords.tex)も一緒に書き出します。
インストールの章の画面(figures/install_*)は、Finder・スクリプトエディタ・システム設定を手で撮ったものです。
Copyright © 2026 MacStarStacker. All rights reserved.