align op• Data kinds: images → images
• Call: import fullseye as fs; fs.ledger.align_frames(frames, reference=0, order=3, **align_kw) (implementation को सीधे call करना हो तो import astrostack; astrostack.align_frames(frames, reference=0, order=3, **align_kw), registry से लेना हो तो opsastrostack.get("align_frames"))
• Ledger के ज़रिए return value: fullseye.ledger.align_frames(...) केवल घोषित out type images का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.align_frames.raw(...) का उपयोग करें, या astrostack.align_frames को सीधे call करें।
• मूल function का return: (aligned, matrices) -> images
frame की श्रृंखला को 1 reference पर register करता है।
हर frame के लिए transform frame_align से estimate किया जाता है, और scipy.ndimage.affine_transform inverse mapping और resampling करता है।
एक ईमानदार चेतावनी: interpolation image को सुरक्षित नहीं रखता। Noise-free 64x64 / 12 stars, (0.5, 0.5) px खिसकाकर वापस खिसकाया, measured::
order=1 (bilinear) total flux -0.016 % star peak -11.437 %
order=3 (spline) total flux -0.016 % star peak -0.312 %
Total flux दोनों तरह लगभग सुरक्षित रहता है, फिर भी bilinear में star peak दसवें हिस्से से ज़्यादा गिर जाता है —— 0.5 px shift bilinear के लिए सबसे बुरा phase है, क्योंकि यह 4 पड़ोसी pixels का सीधा mean बन जाता है। Default order=3 इसी measurement की वजह से है (order=3 stars के चारों ओर एक छोटा ऋणात्मक rim बनाता है, लेकिन ऊपर के measurement में minimum -0.0000 था, दिखने लायक मात्रा नहीं)।
अगर flux और peak दोनों बिल्कुल सुरक्षित रखने हैं, तो interpolate न करें: drizzle_resample को दें —— interpolate न करना ही drizzle के होने का कारण है। हालाँकि, estimate किए गए shifts को जैसे के तैसे न दें: यहाँ लौटाए गए matrices का translation "reference की ओर वापस" इशारा करता है, जो drizzle की ज़रूरत से उल्टा sign है।
उन्हें drizzle_shifts से गुज़ारें::
aligned, mats = align_frames(frames)
sci, wht = drizzle_resample(frames, drizzle_shifts(mats), scale=2.0)
(aligned, matrices) लौटाता है:
• aligned —— लंबाई N की list, हर एक (H, W) float64 (images vocabulary)। Reference frame बिना transformation के जैसा का तैसा लौटाया जाता है (identity transform भी interpolation से image को धुंधला करता है, इसलिए उसे गुज़ारने का कोई कारण नहीं)।
• matrices —— लंबाई N की list, हर एक (3, 3)। Reference को identity matrix मिलता है।
Raises ValueError: अगर *frames* list / tuple नहीं है / 2 से कम frames हैं / *reference* range से बाहर है / *order* 0 से 5 के बाहर है / frame_align किसी भी 1 frame पर विफल होता है (विफलता को चुपचाप identity में नहीं बदला जाता)।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• astro_stacking — py -3.11 examples/astro_stacking.py
images को input के रूप में लेते हैं)lucky_select · sigma_clip_stack · drizzle_resample · cosmic_ray_reject_stack
align)*Provenance: astrostack.py — ASTROSTACK operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.