cosmic op• 資料種類:images → images
• 呼叫: import fullseye as fs; fs.ledger.cosmic_ray_reject_stack(frames, kappa=5.0, min_frames=3, read_sigma=None, gain=1.0)(要直接呼叫實作,import astrostack; astrostack.cosmic_ray_reject_stack(frames, kappa=5.0, min_frames=3, read_sigma=None, gain=1.0);從台帳取用則 opsastrostack.get("cosmic_ray_reject_stack"))
• 經台帳呼叫的回傳值: fullseye.ledger.cosmic_ray_reject_stack(...) 只回傳宣告的 out 型別 images 的值(底層函式還會回傳輔助資訊)。需要被捨棄的部分時,請用 fullseye.ledger.cosmic_ray_reject_stack.raw(...),或直接呼叫 astrostack.cosmic_ray_reject_stack。
• 底層回傳: (cleaned, masks) -> images
透過影格間比較剔除宇宙線 —— 同一處不會被擊中兩次。
宇宙射線在單幀偵測中之所以困難,是因為「星也是尖的」,但只要有多幀已對位的幀,事情就簡單了:星每次都在同一像素,宇宙射線只來一次。因此逐像素沿幀方向取中位數與 MAD,只剔除 value > median + kappa * sigma 的幀,並以中位數填補(下側不剔除 —— 宇宙射線必定是增加方向的離群值,剔除下側會連缺損像素也一併抹去)。
少於 min_frames 幀時中位數與 MAD 都沒有意義,因此拒絕(3 幀是最低限度:2 幀時無法決定哪一幀是離群值)。幀必須已經對位 —— 若未對位就傳入,星就成了「只來一次」,消失的反而是星。
幀數少時 MAD 本身不可靠 —— 這是實測。 在 8 幀的背景上,MAD 估計對真實 σ 9.22 給出 7.89(-14.5 %),而且逐像素離散很大,於是本意為 kappa=5 實際相當於 4.3,偽陽性是真陽性的 2.4 倍(546 對 227 像素)。而且偽陽性不在星上,而在背景上 (偽陽性像素真值的中位數為 60 = sky 本身),所以「因為星是尖的」解釋不了 —— 原因是小樣本的 MAD 逐像素離散很大。疊加了 2 項對策:
1. 施加 _mad_correction(Croux & Rousseeuw 1992)的小樣本校正。
2. 傳入 *read_sigma* 時,把本模組擁有的唯一雜訊模型 sigma = sqrt(median/gain + read_sigma^2) 作為尺度的下限。
這與 synth_starfield 所用的
「Poisson(訊號) + Gauss(讀出)」相同,並非第二種理論。
加入下限後,因樣本起伏而 MAD 偶然偏小的像素
不再被誤判為宇宙射線。
效果實測(128x128 / 25 顆星 / 每幀 10 個宇宙射線 / 8 幀,真實宇宙射線 227 像素,kappa=5)::
read_sigma=None -> 偵測 594 像素,偽陽性 367,精確率 0.382
read_sigma=5.0 -> 偵測 228 像素,偽陽性 1,精確率 0.996
召回率兩者都是 1.000(一個像素也沒漏)。下限不會朝漏掉宇宙射線的方向起作用 —— 宇宙射線是雜訊的幾十倍,即使下限升高幾個 e- 也照樣越過。
Returns (cleaned, masks):
• cleaned —— 長度 N 的 list,每個為 (H, W) float64(images 詞彙)。
• masks —— (N, H, W) bool,True = 判定為宇宙射線的像素。
Raises ValueError:*frames* 不是 list / tuple / 幀數少於 *min_frames* / 形狀不一致 / *kappa* 非正 / *gain* 非正 / *read_sigma* 為負時。
• 範例資料目錄(下載 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 · align_frames
cosmic)*Provenance: astrostack.py — ASTROSTACK 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.