stack op• 데이터 종류: images → image2d
• 호출: import fullseye as fs; fs.ledger.sigma_clip_stack(frames, mode='sigma_clip', kappa=3.0, iters=5, center='median', scale='mad')(구현을 직접 호출하려면 import astrostack; astrostack.sigma_clip_stack(frames, mode='sigma_clip', kappa=3.0, iters=5, center='median', scale='mad'), 원장에서 가져오려면 opsastrostack.get("sigma_clip_stack"))
• 원장 경유의 반환값: fullseye.ledger.sigma_clip_stack(...) 는 선언된 out 형 image2d 의 값만 반환합니다(실제 함수는 보조 정보도 반환). 버려진 쪽이 필요하면 fullseye.ledger.sigma_clip_stack.raw(...) 를 쓰거나 astrostack.sigma_clip_stack 를 직접 호출하세요.
• 실제 반환: (stack, accepted) -> image2d
프레임 열을 합성합니다(평균 / 중앙값 / κ-σ 클리핑). 채택 마스크 포함.
*mode*:
• "mean" —— 단순 평균. 잡음은 sqrt(N)으로 내려가지만, 이상값(우주선· 인공위성의 항적)은 1/N밖에 옅어지지 않아 반드시 남는다.
• "median" —— 중앙값. 이상값에 강한 대신, 정규 분포일 때 잡음은평균의 sqrt(pi/2) = 1.2533배밖에 내려가지 않는다(= 실효적으로 36 % 장수를버리고 있다).
• "sigma_clip" —— 중앙값을 중심, scale을 척도로 하여 |x - center| > kappa * scale을 떨어뜨리고, 나머지로 평균을 낸다. 이것을 iters회. 이상값에 강하고, 게다가 살아남은 화소는 평균되므로 잡음도 sqrt(N_accepted)로 내려간다 —— 실용의 기본값.
붕괴점은 50 %. 중심을 중앙값, 척도를 MAD로 취하는 이상, 오염 프레임이절반을 넘은 화소에서는 중앙값 자체가 오염 쪽에 올라타고, 클립은 올바른 쪽을버린다. 이것은 이 구현의 결함이 아니라 중앙값의 정의 그 자체이며, center="mean"으로 하면 더 빨리(오염 1장이라도) 무너진다. 테스트는 0〜60 %의 오염률로 오차를 재고, 무너지는 쪽도 그대로 남겨 두었다.
scale의 기본값이 "mad"인 것은 실측의 결과. scale="std"는 "이상값을 찾기 위한 척도를 그 이상값 자신이 부풀린다"므로, 오염이늘면 오히려 아무것도 떨어뜨리지 않게 된다 —— 24x24의 평탄 필드(참값 100, σ=2) 20장 중 4장(20 %)에 +500의 오염을 넣은 실측에서는, scale="std"는 기각률 0.0 %로 오차 +99.9975(= 단순 평균과소수점 이하까지 완전히 같다), scale="mad"는 기각률 22.0 %로 오차 -0.019. 붕괴점은 std가 10〜20 % 사이, mad가 딱 50 %로, 5배 가까이 다르다.
Returns (stack, accepted):
• stack —— (H, W) float64.
• accepted —— (N, H, W) bool, True = 채택한 화소. mode="mean" / "median"에서는 전부 True(둘 다 클립하지않으므로, "채택 여부"의 개념이 없다는 것을 False가 하나도 없는 것으로 나타낸다).
Raises ValueError: *frames*가 list / tuple이 아니다 / 장수가 2 미만 / 형태가 맞지 않는다 / *mode*가 STACK_MODES에 없다 / *kappa*가 양수가 아니다 / *center*가 "median" / "mean" 이외 / *scale*이 "std" / "mad" 이외인 경우.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• astro_stacking — py -3.11 examples/astro_stacking.py
• poc_astro_photometry — py -3.11 examples/poc_astro_photometry.py
• poc_exoplanet_transit — py -3.11 examples/poc_exoplanet_transit.py
• poc_river_surface_velocity — py -3.11 examples/poc_river_surface_velocity.py
image2d 를 입력으로 받는 것)frame_quality · noise_sigma · cosmic_ray_reject · star_detect · psf_fit · aperture_photometry · frame_align
stack)*Provenance: astrostack.py — ASTROSTACK 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.