Skip to content

PRNU 让某些像素无法饱和

复制本地路径 | 在线编辑

问题

PRNU 我的理解是所有列统一乘以一个系数,那我就好奇了,有些列响应程度比较高,所以做PRNU会乘以小于1的数字,那这些列岂不是永远不会过曝了?

回答

大致可以这么理解,但要分清两阶段:

  1. 模拟 / 光电转换阶段:像素该饱和还是会饱和,PRNU 校正改不了物理上的溢出。
  2. 读出并做完 PRNU 之后:数值可能被乘小,原先「应该很亮、甚至该过曝」的列,在 数字 Raw / ISP 侧 看起来就不再饱和。

导致的后果:灯光打的很足,此时按理应该是过曝的,但是现在有些列就不是过曝的了,图像反而不均匀。

工业上常见做法

在得到 Raw 之后,对 PRNU 增益 gain 做乘法时,常见几种限制方式:

方法 1:设置不做 PRNU 的阈值

if Raw > threshold:
    Corrected = Raw      # 不再乘 gain
else:
    Corrected = Raw × gain

方法 2:设置新的全局最大值

if Raw > threshold:
    Corrected = threshold     # 类似方法一,但是这里是 Raw
else:
    Corrected = Raw × gain

方法 3:限制 gain 的取值范围

例如令 gain ∈ [0.9, 1.1],避免个别列校正过猛。


个人感觉方法 2 最好,虽然降低了动态范围。

Comments