This work is dedicated to the public domain under CC0 1.0 Universal.
TransientTracker は, 同一視野で撮影した時系列天体画像から移動天体候補を検出, 追跡するための Proof of Concept(PoC) です.
xtensorの学習を目的として作成した PoC です.
このプロジェクト・リポジトリは,未完成であり,動作に制約があります 作業中の記録として残している状態です
現在は, 次の 2 つのコマンドで構成されています.
transient_tracker_generate合成データセットを生成します.transient_tracker_analyze生成済みデータセットを解析し, 軌跡を抽出します.
基本的な概要書を用意してCodexと会話して仕様作成 あまり欲張るとトークンが消費されるのでPoC程度のレベルとした 最後にClaudeにレビューさせて仕様書を固めた Codex,Claudeの相互レビューは3回行った レビューの際には,自分自身のレビューも追加し,Codex,Claude,人間というで実施した
C++のコードは仕様を見ながら自分で書いてCodexにレビュー・修正を頼んだという今のAI活用としては面倒な手法を選択 コーディングレビューではかなりの指摘をされた
AIとコーディングする時のスタイルとしては
- お任せコース
- 仕様書をガッチリ書く
というスタイルがあるが, コード作成を始めてから手戻りがないのは仕様書ガッチリがベターであるという感触を持っている
解析器は, おおむね次の流れで処理します.
- フレーム画像列を読み込みます.
- フレーム間の位置ずれを推定し, 位置合わせします.
- 基準画像と残差画像を生成します.
- 残差から候補点を抽出します.
- 候補点をフレーム間で連結し, 軌跡を構成します.
- 軌跡 CSV, 要約 JSON, 可視化画像を出力します.
現時点の標準シナリオは次のとおりです.
S-01: 3 個の移動天体を含む標準シナリオS-06: 2 個の移動天体を含む複数天体シナリオ
- CMake 3.16 以上
- C++20 対応コンパイラ
- OpenCV
- xtensor
Homebrew を使う場合の導入例:
brew install cmake opencv xtensorプロジェクトルートで次を実行します.
cd /Users/mitsuruk/devs/@Projects/TransientTracker
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
ctest --test-dir build --output-on-failureS-01 を生成する例です.
./build/transient_tracker_generate \
--scenario S-01 \
--output ./output/S-01 \
--seed 20260413 \
--write-all-preview主な引数:
--scenario <name>--output <dir>--seed <value>--width <value>--height <value>--num-frames <value>--num-stars <value>--object-flux <value>--object-velocity-x <value>--object-velocity-y <value>--write-all-preview
./build/transient_tracker_analyze \
--dataset ./output/S-01 \
--output ./analysis/S-01-track \
--threshold-scale 3.5 \
--tolerance-radius 1 \
--area-min 1 \
--area-max 64 \
--max-velocity 3.0 \
--min-track-length 3 \
--truth-match-distance 2.0 \
--write-debug-images主な引数:
--dataset <dir>--output <dir>--tolerance-radius <value>--threshold-scale <value>--area-min <value>--area-max <value>--max-velocity <value>--min-track-length <value>--truth-match-distance <value>--write-debug-images--disable-registration
TransientTracker/
├── apps/
├── build/
├── design-docs/
├── include/
├── output/
├── src/
└── tests/
生成後のデータセット例:
output/S-01/
├── frames/
├── labels.csv
├── metadata.json
└── preview/
解析後の出力例:
analysis/S-01-track/
├── detections.csv
├── evaluation.json
├── summary.json
├── tracks.csv
├── results/
└── debug/
データセット全体の基本情報です. 最初に次を確認します.
scenario_namenum_framesnum_objectsseed
合成データの真値です. 主に次を確認します.
frame_indexobject_idobject_xobject_yobject_visible
目視確認用のプレビュー画像です. 合成した移動天体位置の確認に使います.
解析全体の要約です. 主に次を確認します.
num_tracksnum_matched_objectsstatus
検出された軌跡一覧です. 主に次を確認します.
track_idframe_indexmatched_object_idtrack_scorefit_error
合成データに対する真値照合結果です. 主に次を確認します.
num_visible_objectsnum_matched_tracksnum_matched_objectsmatched_objects
先頭星図上に検出軌跡を重ねた要約画像です. まず最初に見る画像として有効です.
各フレーム上に軌跡を重ねた結果画像です. フレームごとの追跡状況を確認できます.
中間生成物です. 次の画像で処理の切り分けができます.
reference/相当の基準画像aligned/の位置合わせ後画像residual/の残差画像mask/の候補抽出マスクoverlay/の候補重畳画像
S-01 を解析した場合は, まず次を見ると全体像を把握しやすくなります.
output/S-01/metadata.jsonanalysis/S-01-track/summary.jsonanalysis/S-01-track/evaluation.jsonanalysis/S-01-track/results/trajectory_result.png
設計文書は design-docs/ 配下にあります. 主な参照先は次です.
- 010-moving-object-detection-poc.md
- 020-requirements-definition.md
- 090-moving-object-analyzer-development-specification.md
- 110-analyzer-autonomous-track-detection.md
- 生成器は, 真値付き PoC データセットを作るためのプログラムです.
- 解析器は, 現状では真値付きデータセットでの評価に対応しています.
- 次の段階として, 真値
labels.csvやnum_objectsに依存しない自律的な軌跡数判定機能を実装予定です.