Skip to content

Phase2_Rejection

fujiaze edited this page Aug 10, 2026 · 1 revision

Phase2 Rejection Framework

1. 统一接口

所有算法输入同一pixel stack:

value[]
valid[]
support[]
weight[]
quality[]

rejection的首要输入是:

UPM-calibrated value[]

不是原始未统一数据。

输出:

accepted_mask[]
low_reject_count
high_reject_count
diagnostics

最终SNR weighted integration发生在rejection之后。

2. 必须实现

none
sigma_clipping
winsorized_sigma_clipping
averaged_sigma_clipping
linear_fit_clipping
generalized_esd
rcr

3. Sigma Clipping

定义:

  • iterative;
  • configurable center(mean/median);
  • low/high sigma;
  • max iterations;
  • convergence=本轮无新增reject。

首要Python Oracle:

astropy.stats.sigma_clip

4. Winsorized Sigma Clipping

先用winsorized robust estimator抑制极端值对location/scale的影响,再迭代判reject。

必须写出AstroCS精确定义。

可用:

  • SciPy winsorize 验证winsorization primitive;
  • Siril作为完整stacking外部Oracle。

不得声称逐位复刻PixInsight,除非找到并冻结其权威算法定义。

5. Averaged Sigma Clipping

名称存在不同实现传统。

Phase2 v1必须明确采用哪一数学定义。

优先基线:

IRAF AVSIGCLIP公开定义:估计sigma²与signal的比例关系, 再用该经验Poisson-like模型迭代reject。

必须:

  • 在Wiki写完整公式;
  • 用IRAF公开文档例子/独立Python实现对照;
  • 不把名字相同但语义不同的算法混在一起。

6. Linear Fit Clipping

按pixel stack排序/构造独立变量后拟合:

y = a x + b

基于fit residual做low/high clipping。

外部行为Oracle:

Siril

Siril公开文档明确该算法拟合pixel stack最佳直线并reject outliers。

Siril为GPL软件,因此:

EXTERNAL ORACLE ONLY

不得复制其生产源码。

7. Generalized ESD

严格按Rosner/NIST定义。

配置:

alpha
max_outlier_fraction / max_outliers

NIST指出该方法假设近似正态,并给出逐步R_i和critical lambda_i

首要硬Oracle:

NIST Rosner example

必须复现其示例的3个outliers结论。

8. Robust Chauvenet Rejection (RCR)

按Maples et al. 2018论文独立实现。

要求:

  • 不复制UNC官方RCR源码;
  • 官方代码许可仅允许非商业用途,作为Oracle/研究对照;
  • 生产实现从论文数学独立编写;
  • 支持weighted/unweighted行为时必须分别测试。

9. Sample count

每个算法声明:

minimum valid N
recommended N
fallback

若当前pixel有效样本不足:

  • 默认fallback=none
  • 不静默换成另一rejection算法;
  • 统计fallback pixel count。

10. Rejection与权重解耦

普通Sigma/Winsorized/ESD/Linear Fit:

rejection判断先基于已校准sample distribution。

最终SNR权重不应该偷偷改变算法定义。

只有明确标为weighted的算法模式(例如RCR weighted)才能使用权重进入reject数学。

Clone this wiki locally