4. iso_base 为什么必须标定
iso_base是"增益 1x 时相机等效的 ISO"。它不是设计值,由硬件决定:
iso_base ∝ 满阱容量 / (QE × 读出链路增益 × 像素面积相关常数)不同 sensor 满阱容量差数倍,所以同一增益下等效 ISO 完全不同。标定方法:
- 用标准光源以已知照度 E 照射反射率 R 的灰板
- 固定增益 1x(ag=dg=1024),调曝光使灰板输出达到目标码值(如 50% 满阱)
- 记下此时的 (N, T),算出标准 ISO100 体系下该曝光对应的 ISO 值,即为 iso_base
标定误差的影响:iso_base 偏 1 档(×2),所有 LV 系统性偏 1 EV,Lux 换算也偏 1 档——但 AE 收敛本身不受影响(AE 目标灰度是独立的),只影响"LV→Lux"映射和跨机型一致性。
5. LV → Lux 换算的推导(12.5% 与 18% 灰板两种基准)
5.1 先澄清两个标定常数(ISO 272 / ANSI PH3.101)
| 常数 | 适用仪表 | 方程 | 标准值 |
|---|---|---|---|
| K | 反射式测光表(对被摄物测光) | N²/T = L·S/K | K ≈ 12.5(允许 10.6~13.4;Canon/Nikon 实机多用 K=14) |
| C | 入射式测光表(对入射光测光) | N²/T = E·S/C | C ≈ 250(允许 240~400) |
前文"反射式 C≈250"的说法不准确:250 是入射式常数,反射式对应的是 K≈12.5。
两者通过"多亮反射率的场景下两表读数一致"关联(见 5.4)。
5.2 从物理链路严格推导 Lux = 系数 × 2^LV
链路共三步:
① 灰板亮度(朗伯面):照度 E(lux)照射反射率 R 的灰板:
L = E × R / π (L 单位 cd/m²)② 反射式测光表方程(K 为反射式标定常数,S 为 ISO):
N²/T = L × S / K③ 代入 LV 定义(S = 100 时 EV100 即 LV):
LV = log2(N²/T) = log2(L × 100 / K) → L = K × 2^LV / 100 (cd/m²)④ 回代到照度(由①反解 E):
E = π × L / R = (π × K) / (100 × R) × 2^LV最终公式:
Lux = (π·K / (100·R)) × 2^LV系数完全由 (K, R) 两个标定选择决定:
| 标定体系 | K | 灰板 R | 系数 π·K/(100·R) |
|---|---|---|---|
| ANSI 反射式基准 | 12.5 | 12.5% | π·12.5/12.5 =3.14 |
| ANSI 反射式 + 18% 灰板 | 12.5 | 18% | π·12.5/18 =2.18 |
| 实机反射式(Canon/Nikon)+ 18% 灰板 | 14 | 18% | π·14/18 =2.44 |
| 入射式基准(C=250) | — | — | 250/100 =2.50(精确) |
5.3 18% 灰板下的重新推理(本题所求)
若测光标定针对18% 灰板(摄影界标准灰卡,如 Kodak Q-13):
Lux = π × 12.5 / (100 × 0.18) × 2^LV ≈ 2.18 × 2^LV (K=12.5) Lux = π × 14 / (100 × 0.18) × 2^LV ≈ 2.44 × 2^LV (K=14, 实机常用)与 12.5% 基准的本质差异:
log2(18% / 12.5%) = log2(1.44) = 0.526 EV ≈ 半档这就是摄影史上著名的“12.5% vs 18% 灰板半档之争”:两种约定下同一场景的 LV 差约 0.5 EV,
根源是朗伯体转换中 π 因子的归属约定不同(K 的定义里含不含 π)。
自洽性验证——入射式 C=250 与反射式 K 在什么反射率下一致?
两表给出相同曝光: E·R/π × S/K = E·S/C → R_一致 = π·K/C = π×12.5/250 = 0.157 ≈ 15.7%即 ANSI 体系下两表对平均反射率约 16% 的场景一致——介于 12.5% 与 18% 之间,
这正是两派约定长期并存的数学原因。
若坚持"18% 灰板 + 入射式 C=250"配套,等效反射式常数为:
K_等效 = C × R / π = 250 × 0.18 / π = 14.3 → Lux = π × 14.3 / (100 × 0.18) × 2^LV = 2.50 × 2^LV (与入射式精确一致)结论:系数 2.5 本质上对应"入射式标定 + 18% 灰板"的组合;
纯反射式 K=12.5 配 18% 灰板则为 2.18。
5.4 工程结论
- LV 本身不受灰板选择影响:LV 只依赖 AE 收敛和 iso_base 标定,12.5% 还是 18%
只改变"LV→Lux"这一个换算系数,不改变 AE 行为。 - iso_base 标定必须与灰板配套:用 18% 灰卡标定 iso_base 时,
Lux ≈ 2.2~2.4 × 2^LV;用 12.5% 体系则 ≈ 3.14 × 2^LV。
混用体系(如 18% 灰卡标定却套 2.5 系数)会引入约 0.1~0.5 EV 的系统性 Lux 偏差。 - 最稳妥做法:不依赖理论系数,直接用标准照度计在 2~3 个照度点标定
“Lux = A × 2^LV” 中的 A,一次覆盖所有体系差异(含镜头透光率、CRA 等二阶因素)。
修正注:前文实例中 Lux ≈ 2.5 × 2^LV 沿用入射式 C=250 体系;
若按 18% 灰板 + 反射式 K=12.5 体系,实例 2 表中所有 Lux 值应除以 2.5/2.18 ≈ 1.15
(约 0.2 EV 偏移),LV 阈值分类逻辑不受影响。
5.5 直接标定法:Lux = A × 2^LV(产线推荐,绕开所有理论常数)
5.5.1 动机:理论系数链太长,每一环都有误差
5.2~5.3 节的换算系数 2.18/2.44/2.50 是"理论值",要真正落到实机上,隐含假设一长串:
Lux = (π·K/(100·R)) × 2^LV ↑K 标定常数 ↑灰板反射率 依赖: K 取 12.5 还是 14 (体系选择) 依赖: 灰板 R 的检定精度 依赖: 镜头透光率 T_lens (公式里假设 =1, 实际 0.85~0.95, 差 0.2~0.25 EV) 依赖: CRA/微透镜边缘效率 (边缘像素感光下降, 影响 AE 统计) 依赖: AE 目标灰度与 18% 的实际关系 (AE target 不一定精确对应灰板反射率) 依赖: 光源光谱与 V(λ) 的失配这些二阶因素无法逐项精确测量,但它们全部是乘性常数——在对数域全部是加性常数,
可以被打包进一个系数 A 一次性标定掉:
Lux = A × 2^LV (A 为本机实测的系统常数)这就是直接标定法:不问理论系数是多少,直接用照度计把 A 量出来。
5.5.2 标定原理与推导
LV 与 Lux 之间在对数域是线性关系(LV 本身就是亮度的 log2 刻度):
log2(Lux) = log2(A) + LV所以只要在 ≥2 个已知照度点测出 LV_report,log2(A) 就是两点连线的截距:
log2(A) = mean( log2(E_i) − LV_report_i ) (i = 1..n, n ≥ 2)为什么 LV_report 与 E 之间必然是斜率 1 的直线:AE 收敛后 LV 是场景亮度的
不动点(第 3 节证明),场景照度变 2 倍 → LV 恰好 +1,与相机设置无关。
所以 (LV_report, log2(E)) 散点必然落在斜率 1 的直线上,唯一自由度就是截距 log2(A)。
斜率偏离 1 本身就是一个强诊断信号(见 5.5.5)。
5.5.3 标定步骤
设备: 照度计 + 灰板(任意反射率, 不需要检定值!) + 可调均匀光源 (灰板反射率不需要已知 —— 它的影响全部被吸收进 A) 第1步: 布置 3 个照度点, 覆盖常用工作区间, 例如 E1 = 500 lux (室内), E2 = 5000 lux (明亮室内), E3 = 50000 lux (阴天室外) 每点: 灰板充满视场, 照度计探头贴灰板表面读 E_i 第2步: 每点让 AE 自由收敛 (判据: 连续 30 帧 (T,gs,gd) 不变), 记录 LV_report_i (驱动上报的 LV, Q8 定点则除以 256) 第3步: 拟合 log2(A) = mean( log2(E_i) − LV_report_i ) 同时检查各点 (log2(E_i) − LV_report_i) 的离散度 σ < 0.05 EV 第4步: 固化 A (Q8 定点存 log2(A)×256, 或直接存 A×256 视实现而定), 运行时 Lux = A × 2^LV_report5.5.4 完整数值例子
实验设置:某模组,iso_base 已标定准确,LV_report 为 EV100 口径。
镜头透光率实测 0.90(传感器接收的有效亮度打 9 折,使 LV_report 偏低
log2(1/0.90) ≈ 0.15 EV),AE 目标灰度对应等效反射率 17%(灰板 R=0.18
比 target 亮 18/17 倍,AE 压曝光 → 曝光量减小 → EV 升高,
LV_report 反而偏高 0.08 EV)。
理论系数按 5.3 节为 2.44(K=14 体系),实机 A 待测。
预测: log2(A) = log2(2.44) + 0.15 − 0.08 ≈ 1.29 + 0.07 = 1.36
(透光率使 A 增大 1/0.90, 目标偏暗使 A 减小 17/18, 两因素方向相反)
三个照度点的实测数据(AE 收敛设置按 iso_base=50 折算):
| 点 | E (lux) | log2(E) | AE 收敛设置 | LV_report | log2(E) − LV |
|---|---|---|---|---|---|
| 1 | 500 | 8.97 | F2.0, 1/49s, gain 2x | 7.61 | 1.36 |
| 2 | 5000 | 12.29 | F2.0, 1/490s, gain 2x | 10.93 | 1.36 |
| 3 | 50000 | 15.61 | F2.8, 1/1200s, gain 1x | 14.25 | 1.36 |
AE 设置自洽性检查 (以点 1 为例): gain 2x → iso_speed=100 → EV=LV=7.61, N²/T = 2^7.61 ≈ 194, F2.0 → T = 4/194 ≈ 1/49s ✓ 离散度: 1.36, 1.36, 1.36 → σ ≈ 0.005 EV < 0.05 EV ✓ (斜率恰为 1 的体现: E ×10 → log2(E) +3.32, LV_report 也恰好 +3.32) log2(A) = 1.36 A = 2^1.36 ≈ 2.57结果解读:
理论值 (K=14, R=18%, 透光率=1, target=18%): A_theory = π×14/18 = 2.44 实测值: A_meas = 2.57 比值: 2.57 / 2.44 ≈ 1.05 ≈ (1/0.90) × (17/18) ✓实测 A 与理论系数的比值,恰好等于两个二阶因素之积——
透光率 0.90 贡献 1/0.90 ≈ 1.11(使 A 增大),AE target 17% 贡献 17/18 ≈ 0.94(使 A 减小),
1.11 × 0.94 ≈ 1.05,与实测比值吻合。
结论:A 的绝对值没有唯一"理论值",它是本机全链路的实测常数——
理论值只给出量级(2.2~2.5),二阶因素使它偏离 ±0.2 EV 左右。
唯一的质量判据是 5.5.3 第 3 步的离散度 σ。
5.5.5 诊断价值:斜率与离散度
多点标定的副产品是两条强诊断判据:
判据1 (斜率): E_i ×2 → LV_report_i 应 +1 斜率 ≠ 1 的可能原因: - 高照度点积分时间撞下限 (t 已最小, AE 改用增益补 → 增益非线性进入) - 低照度点撞增益上限或长曝上限 - dgain 高段非线性 (gd 读数与实际增益不符) → 剔除撞限的点, 或换工作区间重标 判据2 (离散度): 各点 log2(E)−LV 的 σ σ < 0.05 EV → 标定合格 σ 0.1~0.3 EV → 增益非线性 / BLC 残差 / AE 未完全收敛, 查 7.1 节误差表 σ > 0.5 EV → 标定流程有系统性问题 (口径混用/灰板未充满视场/光源不均)5.5.6 A 与 iso_base 的联动:一条不读曝光参数的 ISO 标定路径
为什么可以不读 (T, gs, gd)——原理链
传统 iso_base 标定(第 4 节)必须从寄存器读出曝光三元组 (T, gs, gd) 代入闭合方程。
直接标定法绕开这一步,依赖三条事实:
事实1: LV_report 的计算链是 LV_report = AV + TV − SV = AV + TV − log2(gain_total × ISO_used/3.125) 其中 ISO_used 是脚本/驱动里写的值, 真值是 ISO_true。 ISO_used 偏 Δ 倍 → LV_report 整体平移一个固定常数 (对数域加性误差)。 事实2: A 的标定过程 (5.5.3) 只用两个外部量: 照度计读数 E 和 LV_report。 LV_report 里的任何加性误差都会原封不动落进 log2(A) —— A 是 LV_report 全部系统误差的"总账本"。 事实3: 总账本里最大、最确定的一项就是 iso_base 偏差。 其他项 (透光率、AE target、灰板体系) 要么可单独测, 要么很小。 把它们扣除后, 剩余部分与 iso_base 偏差一一对应。合起来:iso_base 偏差 → LV_report 平移 → A 等比例缩放,三步都是确定性
代数关系,没有任何环节需要知道相机当时用了什么 (T, gs, gd)。这就是
"不读曝光参数也能标 ISO_BASE"的原理——用照度计当外部锚点,让 A 替代
闭合方程里 (T, gs, gd) 的角色。
换算关系推导
A 吸收的最大一项是 iso_base 的标定偏差。若 LV_report 因 iso_base 偏 Δ 倍而
整体偏移,则 A 会等比例缩放,两者有确定的换算关系:
推导 (以入射式 C=250 为 Lux 基准, LV_report 为 EV100 口径): LV = EV − log2(iso_speed/100), iso_speed = ISO × gain_total 设 ISO_used (脚本值) 比真值偏小, Δ = ISO_true / ISO_used > 1: log2(iso_speed_used) 偏小 → LV_report 偏高 log2(Δ) → LV_true = LV_report − log2(Δ) Lux_true = 2.5 × 2^LV_true = 2.5 × 2^(LV_report − log2(Δ)) = (2.5 / Δ) × 2^LV_report = (2.5 × ISO_used / ISO_true) × 2^LV_report 对照 Lux = A × 2^LV_report: → A = 2.5 × ISO_used / ISO_true 反解 (标定 ISO_BASE 的第二条路径): ISO_true = 2.5 × ISO_used / A数值例子:脚本中 ISO_BASE_used = 50,事后发现该 sensor 真实等效 ISO 为 65
(偏 1.3 倍 = 0.38 EV),其余二阶因素(透光率等)暂设理想:
预测: LV_report 整体偏高 log2(1.3) = 0.38 EV 预测: A = 2.5 × 50 / 65 ≈ 1.92 (log2(A) ≈ 0.94) 实测 3 个照度点 (500 / 5000 / 50000 lux): log2(E_i) − LV_report_i = 0.94, 0.95, 0.94 → σ ≈ 0.005 EV ✓ A = 2^0.943 ≈ 1.92 反解: ISO_true = 2.5 × 50 / 1.92 ≈ 65 ✓ 交叉验证: LV_report − LV_true = 0.38 EV = log2(65/50) ✓端到端完整例子(产线场景:新模组快速标 ISO_BASE)
背景:某型号新模组量产,脚本里 ISO_BASE_used = 50 是 datasheet 标称值,
怀疑不准。产线只有照度计和灰板,希望 10 分钟内标出真实 ISO_BASE。
第 1 步:测 A(不读任何曝光寄存器)
3 个照度点, 灰板充满视场, AE 自由收敛, 只记录照度计读数和 LV_report: E = 500 lux, LV_report = 9.31 → log2(500) − 9.31 = 8.97 − 9.31 = −0.34 E = 5000 lux, LV_report = 12.63 → log2(5000) − 12.63 = 12.29 − 12.63 = −0.34 E = 50000 lux, LV_report = 15.95 → log2(50000) − 15.95 = 15.61 − 15.95 = −0.34 离散度 σ ≈ 0 → 斜率 1 ✓ log2(A) = −0.34 → A = 2^(−0.34) ≈ 0.79第 2 步:反解 ISO_BASE
ISO_true = 2.5 × ISO_used / A (前提: 透光率等二阶因素已单独标定或可忽略) = 2.5 × 50 / 0.79 ≈ 158第 3 步:物理解读与交叉验证
ISO_BASE 真值 158 vs 标称 50 → 偏 3.16 倍 = 1.66 EV 含义: 这颗 sensor 在增益 1.0x 时实际等效 ISO 158 (比标称敏感 1.66 档) → 脚本里写 50 导致全表 BV 轴偏低 1.66 EV, 查表曝光恒偏亮 1.66 档 交叉验证 (读一次曝光参数, 仅作验证不作标定): 500 lux 点 AE 收敛于 F2.0, T=1/25s (40000us), gs=1024, gd=1024 (gain 1x) TV = log2(25) = 4.64, AV = log2(4) = 2.00 EV = 2.00 + 4.64 = 6.64 EV100 口径: LV_true = EV − log2(iso_speed/100) = 6.64 − log2(50/100) = 6.64 + 1 = 7.64 = log2(500/2.5) ✓ 与照度计读数吻合 LV_report = 9.31, 偏高 9.31 − 7.64 = 1.67 EV = log2(158/50) ✓ → 正是 ISO_used=50 比真值 158 偏小造成的固定平移, 闭环验证通过 (注: 若用工程 APEX 口径 SV = log2(158/3.125) = 5.66, 则 BV_sys = 6.64 − 5.66 = 0.98, 与 EV100 的 LV 差 5 + log2(50/100) = 4 EV 的体系常数——两种口径都能自洽, 关键是全程统一)第 4 步:修正后的联动效果
ISO_BASE 改为 158, 重新生成 P-line 表, calcoef 置 0: - 同一场景 LV_report 从 9.31 变为 9.31 − 1.66 = 7.65 ≈ LV_true (7.64) ✓ - A 重测: log2(A) = 8.97 − 7.65 = 1.32 → A ≈ 2.5 ✓ (回到入射式理论值, 说明 iso_base 偏差是 A 偏离理论值的唯一主导因素, 闭环自洽) - 之后 Lux = 2.5 × 2^LV_report 直接可用这个例子展示了完整闭环:A 偏离理论系数的量 = iso_base 偏差的镜像,
标定 ISO_BASE 后 A 自动回归理论值,两者互为验证。
注意 A 中混有非 ISO 因素:若镜头透光率 0.90、AE target 等效反射率 17%,
这些因素同样等比例进入 A:
A_实测 = 2.5 × (ISO_used/ISO_true) × (1/0.90) × (17/18) × ... = 1.92 × 1.11 × 0.94 ≈ 2.01此时直接用 A 反解 ISO 会把透光率等因素误算进 ISO(得 2.5×50/2.01 ≈ 62,
而真实 ISO 偏差是 65,误差仅 0.08 EV——两个二阶因素方向相反、部分抵消)。
所以这条反解路径只在"其他二阶因素可忽略或已单独标定"
时成立;工程上更稳妥的用法是反向的:先用第 4 节的方法标准 iso_base,
再用 A 做 Lux 上报的最终校准——A 把剩余全部二阶误差一网打尽,
这正是它"产线推荐"的价值。
5.5.7 与理论系数法的关系总结
| 理论系数法 (5.2~5.3) | 直接标定法 (本节) | |
|---|---|---|
| 系数来源 | π·K/(100·R) 推导 | 照度计实测 |
| 依赖 | K/R 体系选择 + 透光率等假设 | 只依赖照度计与灰板充满视场 |
| 精度 | ±0.2~0.5 EV(二阶因素不受控) | ±0.05~0.1 EV(受限于标定重复性) |
| 灰板要求 | 反射率 R 需检定 | 任意漫反射板即可 |
| 适用 | 设计阶段估算、跨机型理论对齐 | 量产标定、Lux 上报、与 lux 计对账 |
工程建议:设计阶段用理论系数法确定量级与阈值框架;量产阶段用直接标定法
固化每台/每型号的 A;两者差异超过 1 EV 时,优先怀疑口径混用
(如工程 APEX BV 与 EV100 差 5 EV 的体系常数、iso_base 偏差)而不是仪器误差。