JPL 公式由来

张开发
2026/4/15 16:05:55 15 分钟阅读

分享文章

JPL 公式由来
目录一、JPL 公式的历史背景二、数学基础三、单系数C^≈Mm/4JPL 原始版1. 数学最优与工程折衷2. 误差分析JPL 当年的验证四、两段式JPL 改进版Mm/8 与 Mm/2五、 变体六、JPL 公式的本质七、可直接用的定点 C 代码JPL 最早提出、工业界沿用至今的经典近似C≈Mm/4​或C≈Mm​/8一、JPL 公式的历史背景时代1960–1970 年代NASA / JPL 做深空探测水手号、维京号硬件没有 FPU、没有硬件开方、没有通用除法只有整数 ALU、移位器、极慢的软件除法需求彩色图像处理RGB → YUV / IQ 后要算色度幅值 C √(U²V²)用于饱和度、自动白平衡、色彩校正、边缘检测必须每像素 1–2 周期、纯整数、无除法 / 开方JPL 为航天器实时图像处理发明了这套极简近似后来成为ISP / 嵌入式 / 计算机视觉工业标准。二、数学基础三、单系数C^≈Mm/4JPL 原始版1. 数学最优与工程折衷前面推导全局 MMSE 最优 k ≈ 0.30JPL 选k1/4​0.25为什么是 1/41数学上极接近最优误差极小最优0.301/4 0.25偏差仅0.05相对误差 2%全角度2工程上唯一完美选择1/4 1 21 次右移即可无浮点、无除法、单周期完成其他值0.3、0.3006都需要乘法 多次移位 舍入复杂、慢、占门数2. 误差分析JPL 当年的验证角度 θ ∈ [0°, 45°]设 Mcosθ,msinθθMmC1Mm/4绝对误差相对误差0°101100%15°0.9660.25911.0650.0656.5%30°0.8660.511.0160.0161.6%45°0.7070.70710.884-0.116-11.6%关键观察0°、30° 附近误差极小45° 误差偏大≈-11.6%→ 所以 JPL 后来加第二段四、两段式JPL 改进版Mm/8 与 Mm/2为压低 45° 误差JPL 用两段固定 k1. 分段规则标准 JPL2. 为什么选k₁1/80.125小角度M≫m最优区间0.10~0.151/8 完美落在中间实现1 3k₂1/20.545° 附近最优0.45~0.501/2 是数学上最优点实现1 1分段点 M4m4 是2 的幂比较只需整数减法 / 移位刚好是误差曲线的拐点3. 两段式误差极大改善表格θM≥4m?近似式估计值真实 C误差0°是Mm/8110%15°否Mm/21.09619.6%30°否Mm/21.11611.6%45°否Mm/21.06016.0%最大误差 ±6%远好于单段人眼完全不可察觉饱和度误差 5% 无感五、 变体很多用M≥3m而非 4m为什么改成 3m3m 比 4m 更 “晚切”覆盖更多小角度用 m/8第二段7/8 M 1/2 m等价C^M−8M​2m​依然纯移位、无除法45° 误差进一步压到 3%六、JPL 公式的本质数学在 M≤C≤Mm 之间用线性组合 M k・m拟合圆最优 k单段≈0.30两段≈0.125、0.5工程只选1/8、1/4、1/2→ 因为只有它们是2 的幂倒数纯移位实现历史JPL 1970 年代为深空探测发明全行业沿用成标准七、可直接用的定点 C 代码// 输入U, Vint16_t // 输出C ≈ √(U²V²)uint16_t uint16_t jpl_chroma(int16_t U, int16_t V) { int16_t a (U 0) ? U : -U; int16_t b (V 0) ? V : -V; int16_t M (a b) ? a : b; int16_t m (a b) ? a : b; int16_t C; if (M (m 2)) { // M 4*m C M (m 3); // M m/8 } else { C M (m 1); // M m/2 } return (uint16_t)C; }

更多文章