根据ISP各个ISO节点标定后的参数,如何插值生成当前增益下对应的ISP参数

张开发
2026/4/6 2:09:36 15 分钟阅读

分享文章

根据ISP各个ISO节点标定后的参数,如何插值生成当前增益下对应的ISP参数
目录一、为什么 2ⁿ 方便插值二. 为什么不在线性域插三. 转到 log₂ 域就完全均匀了四. 为什么方便查表LUT五. 为什么方便存储六、 工程现实七、思考我们知道一般调试图像的时候需要根据ISO100、ISO200、ISO300、ISO400........ISO3276800等增益节点下调试对应的ISP参数。标定的不是 “连续增益”而是离散关键点中间值全部靠插值算出来。那么为什么是按照2ⁿ 档位的增益进行调整呢结论因为2ⁿ 档位1、2、4、8、16…在工程上特别好插值、查表、存储而随便用 1.1、1.2、1.3 就很麻烦。一、为什么 2ⁿ 方便插值因为增益是指数等比分布1 → 2 → 4 → 8 → 16 → 32 → 64 → 128 → 256每一步都是×2在log₂ 域里是均匀间隔0 → 1 → 2 → 3 → 4 → 5 …好处2ⁿ 增益 → log₂ 后变成均匀整数点 → 方便做分段线性插值。在 log 域先把增益 / ISO 映射成均匀索引再用索引做线性插值结果最自然、最平滑如果用 1、1.5、2、3、5…log 后间隔乱七八糟 → 插值容易抖、曲线不平滑。二. 为什么不在线性域插比如增益1× → 2× → 4× → 8× → 16×在线性上看间隔是1、2、4、8越来越大。如果你直接在线性上插低增益段变化太密高增益段变化太稀插值出来的曲线会扭曲、跳变、不平滑三. 转到 log₂ 域就完全均匀了对 2ⁿ 增益取 log₂gain 1 → log₂ 0gain 2 → log₂ 1gain 4 → log₂ 2gain 8 → log₂ 3gain 16 → log₂ 4gain 32 → log₂ 5...变成了0 → 1 → 2 → 3 → 4 → 5 …均匀等间隔这时候再做线性插值就非常平滑、自然、符合物理规律。四. 为什么方便查表LUTISP 里大量表是按增益索引NR 噪声阈值表BLC 表晕光校正表动态降噪强度表色差补偿表用 2ⁿ 增益增益 64 → index 6增益 128 → index 7增益 256 → index 8index log₂(gain)查表直接用位运算就能算索引不用浮点不用除法不用复杂计举例标定点gain4 → index2标定点gain8 → index3当前 gain5index log₂(5) ≈ 2.32然后在 index2.03.0 之间做线性插值para para2 (para3 - para2) * (index - 2)这一步是普通线性插值不是 log 插值。如果是任意增益你还要排序二分查找浮点运算又慢又容易出问题。五. 为什么方便存储2ⁿ 有两个极强优势(1) 档位极少从 1× 到 256× 只要9 个点。中间全部插值足够平滑。如果用 0.1 步进要 2560 个点参数文件爆炸。(2) 可以用移位代替乘法很多硬件模块内部增益 1 → 不移位增益 2 → 左移 1bit增益 4 → 左移 2bit移位比乘法器省面积、省功耗、速度快、无精度损失。六、 工程现实AE 算法、ISO、EV、LV 全部基于log₂。你的增益表按 2ⁿ 设计整个链路完全对齐ISO 100 → 200 → 400 → 800EV ±1 对应 ×2LV 每级差 1 对应 ×2增益 1→2→4→8→16全部同一种尺度 → 算法最简单、最稳、最少 BUG。七、思考有些主控厂也有这么做的ISP参数也是按照增益倍数进行调试。但是会把几个增益合成一个ISO比如一倍增益称之为ISO1002-4倍增益称之为ISO2004-8倍增益称之为ISO400。sensor在不同增益倍数下的噪声表现本身就不一样如果按照这样的分类后可能出现顾此失彼的情况。兼顾了某一ISO前面几个增益效果但是后面几个增益效果不如意。由于这样分类之后有没有根据不同增益进行ISP参数的插值操作。导致有些场景可能存在参数不平滑的情况导致图像画质突变出现诸如色噪、颗粒噪声以及一些亮度过渡不平滑的各种影响图像质量的问题。

更多文章