align_frames — ASTROSTACK align op

• 資料種類:images → images

• 呼叫: import fullseye as fs; fs.ledger.align_frames(frames, reference=0, order=3, **align_kw)(要直接呼叫實作,import astrostack; astrostack.align_frames(frames, reference=0, order=3, **align_kw);從台帳取用則 opsastrostack.get("align_frames"))

• 經台帳呼叫的回傳值: fullseye.ledger.align_frames(...) 只回傳宣告的 out 型別 images 的值(底層函式還會回傳輔助資訊)。需要被捨棄的部分時,請用 fullseye.ledger.align_frames.raw(...),或直接呼叫 astrostack.align_frames。

• 底層回傳: (aligned, matrices) -> images

用法

把一串影格對齊到一張基準影格上。

對每一幀以 frame_align 估計變換,

以 scipy.ndimage.affine_transform 做逆映射並重新取樣。

坦白的提醒:內插不保持影像。將無雜訊的 64x64 / 12 顆星平移 (0.5, 0.5) px 再移回的實測::

order=1 (雙線性) 總通量 -0.016 % 星峰值 -11.437 %

order=3 (樣條) 總通量 -0.016 % 星峰值 -0.312 %

總通量兩者都幾乎保持,但雙線性時星的峰值下降 1 成以上 —— 0.5 px 平移對雙線性是最壞的相位,會變成相鄰 4 像素的簡單平均。預設設為 order=3 正是基於這一實測(order=3 會在星周圍產生極小的負邊緣,但在上面的量測中最小值為 -0.0000,不是肉眼可見的量)。

若要嚴格保持通量與峰值,就不要內插,而是交給 drizzle_resample —— 不內插正是 drizzle 存在的理由。不過

不能直接傳入估計的平移:這裡回傳的 matrices 的平移是「拉回基準」的方向,與 drizzle 需要的方向符號相反。

請經過 drizzle_shifts::

aligned, mats = align_frames(frames)

sci, wht = drizzle_resample(frames, drizzle_shifts(mats), scale=2.0)

Returns (aligned, matrices):

• aligned —— 長度 N 的 list,每個為 (H, W) float64(images 詞彙)。基準幀不經變換原樣回傳(即使是恆等變換,內插也會使像變鈍,所以沒有理由經過變換)。

• matrices —— 長度 N 的 list,每個為 (3, 3)。基準為單位矩陣。

Raises ValueError:*frames* 不是 list / tuple / 幀數少於 2 / *reference* 超出範圍 / *order* 不在 0〜5 內 / frame_align 在任意 1 幀上失敗時(不把失敗默默降級為恆等變換)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• astro_stacking — py -3.11 examples/astro_stacking.py

型別可銜接的下一個運算子(可接受 images 作為輸入)

lucky_select · sigma_clip_stack · drizzle_resample · cosmic_ray_reject_stack

同類別(align)

frame_align


*Provenance: astrostack.py — ASTROSTACK 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.