PRNU 让某些像素无法饱和
复制本地路径 | 在线编辑
问题
PRNU 我的理解是所有列统一乘以一个系数,那我就好奇了,有些列响应程度比较高,所以做PRNU会乘以小于1的数字,那这些列岂不是永远不会过曝了?
回答
大致可以这么理解,但要分清两阶段:
- 模拟 / 光电转换阶段:像素该饱和还是会饱和,PRNU 校正改不了物理上的溢出。
- 读出并做完 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 最好,虽然降低了动态范围。