ISP HDR Tuning Guide


1. HDR 调适参考

关于HDR:

HDR (High Dynamic Range),透过合成两张不同曝光条件的影像,从而得到一张动态范围较传统单一曝光条件(Linear mode) 更高的影像。

HDR on / HDR off

HDR的调整首要着重在画面亮度的分配,如何在8-bit 0~255的范围里挤入最多想要的信息。所以首先我们会从AE的设定开始讲起,接着切入与亮度分配有关的HDR/WDR调整,最后再到NR/Edge的搭配以及一些常见问题的处理方式。


1.1. AE 设置

HDR mode透过长短曝光两张合成的方式,让原本单张容易过曝的区域用短曝光的影像来合成,进而获取到长曝原本过曝区的信息,所以长、短两张的曝光比例 (HDR Ratio) 便直接关系到了HDR的动态范围大小。

然而HDR Ratio却并非越大越好,短曝的影像必须乘上HDR Ratio的比例后才能在线性上和长曝的影像匹配,所以HDR Ratio的比例越大,乘上的gain也就越多,影像noise的问题也就越大。

在AE的环节我们主要需要决定三个参数:

  1. Max Short Shutter

  2. HDR Ratio

  3. AE Target

Max Short Shutter 与sensor运作的fps及频率有关,可由sensor specification中推算出此项的最大限制,建议就设为最大值。

HDR Ratio 需视场景的动态范围需要来决定,但必须要注意的是HDR ratio决定的是HDR效果的 ”最大” 动态范围,而实际画面的动态范围还会受后面WDR内的Global Dark Tone Enhance设定所影响,所以建议不一定要追求很高的HDR ratio,而过小的Ratio又会限制到长曝的曝光时间导致长曝张提早拉gain而带来noise问题,一般我们建议设为10x (= 10240),亦可支持16x (= 16384)。

AE Target 控制画面的整体亮度,通常设成和单张Linear mode相同即可。如果WDR等都调过后觉得最终HDR效果暗区noise有些不好控制,可以适当调高一些target让AE协助将画面拉亮,noise效果会比用WDR拉亮的小。

  1. 依照sensor specification及fps计算出短曝的最长、最短曝光时间后分别填入短曝的曝光表中。然后将欲使用的HDR ratio填入HDR ratio的字段中,横轴为by BV可设定不同的HDR ratio。

  2. 依照HDR Ratio,将短曝曝光表中的Shutter乘上HDR Ratio后填入长曝曝光表中 (ex: 短曝2100μs、长曝21000μs)。


1.2. HDR 设置

HDR API中包含各项基本的HDR参数设定,其中SensorExpRatio需参照前项AE章节中的HDR ratio进行设置,其余参数功能介绍如下:

NrEn 针对短曝张的额外2DNR
开启可让短曝影像变干净,但需注意是否有模糊问题
YwtTh1及YwtTh2 HDR合成中长短曝选用的上下界

th1以下的亮度会选用长曝影像数据,th2以上则选用短曝,th1与th2之间则会采用长、短曝blending 的方式。
调整上可先将th2设0,然后改变th1直到尽量高,可是画面中没有因长曝饱和而颜色偏差的位置 (注1)。
th1决定后th2建议设为th1 + (50~100) 之间的数值,如th2设得很大则对亮区的noise表现会有帮助,但同时也代表着细节会流失 (blending到已过曝无细节的长曝)。
NoiseLevel Noise level,用于判断动静
横轴为亮度,值越大越容易判断为静。
只用默认值即可,如果需要可依据默认值来微调。
MotionTh 动静阀值
长短曝对齐后的差值,减去NoiseLevel,若大于MotionTh,则判断为动区,依据动的程度来混合长短曝,若小于MotionTh,则判断为静区,依据亮度来混合。
MotionAdjLut 动区长曝比例表纵轴
横轴为静到动。
纵轴为混合长曝比例,值越大,使用长曝越多,值越小,使用短曝越多,越脏但可以减轻鬼影。通常偏静区使用长曝较多,偏动区使用短曝较多,所以会是一个递减的曲线。
SensorExpRatio 长短曝frame的亮度比
正常状况下需填与AE章节中的HDR Ratio相同之数值。
DynRatioEn 动态长短曝亮度补偿
如果sensor长、短曝的实际亮度差与SensorExpRatio设定的数值有差异,则开启动态补偿功能可在一定程度内消平这个差异 (ex:长、短曝shutter计算因精度问题无法刚好是指定倍数时,开启此功能可消弥这个误差)
DynRatioSrcSel 动态长短曝亮度补偿的参考张选择
0:长曝、1:短曝
YSrcSel 静区亮度来源
静区会依据当前亮度(Yin)和YwtTh1, YwtTh2来决定长短曝的比例。当前亮度可以透过4种方式获得。
0:长曝周围平均值、1:长曝周围最大值、2:短曝周围平均值、3:短曝周围最大值。
预设为1,不建议调整。
NoiseLevelSrcSel NosieLevel的横轴,亮度来源
Noise level会依据亮度来查表,亮度可以透过4种方式获得。
0:长曝、1:短曝、2:长短曝较小值、3:长短曝较大值。
预设为3,不建议调整。
MotionMaxVal 动区上限值
长短曝对齐后的差值,减去NoiseLevel,会再卡此上限值,值越小,上限值越小,则小差异会被判断成较大的移动,所以越容易把噪声当动区,进而使用较多短曝,导致较脏。
预设为3,不建议调整。
MotionLumaTh 动区全短曝亮度阀值
若判断为动区,且亮度大于此值,则全部使用短曝。
预设为1000,不建议调整。
MotionAdjSft 动区长曝比例表横轴
横轴为长短曝差异,减去NoiseLevel,也就是静到动。
不建议调整。

注1: 因为AWB gain apply的位置在HDR合成前,故长曝影像饱和的位置常会出现各种异常色彩但不一定是白色的状况,共同的特色是会细节丢失,故需要向下调整th1来避免过曝的长曝区段出现在最终的影像中。


1.3. WDR 调整

长、短曝两张影像经过HDR在16-bit的空间里合成之后,会再经过WDR的Global Dark Tone Enhance来重新进行亮度分配并下降为12-bit,一般我们需透过Global Dark Tone Enhance来将画面中原本属于长曝的暗区数据拉亮或是还原到正常单张应有的亮度,仅中高亮或过曝区透过曲线把短曝张的信息整合进来。

Global Dark Tone Enhance预设有16条curve可供选择,0是维持线性不做亮度提升的曲线,随着数字上升拉亮的程度会逐渐增加,但第7条之后的第8条开始亮度增加的幅度会下降一次,然后再重新上升;0~7与8 ~15可以视为是用了两种不同型态的曲线来达成亮度的提升。可以两种都分别使用看看再选一个效果较喜欢的。如果调整Global Dark Tone Enhance后仍有暗区不够亮的情形,此时可尝试再搭配调整主Gamma来将暗区提亮。

透过Global Dark Tone Enhance将画面亮度整体拉亮后,通常会出现对比度差、通透性不足的问题,此时可适当增加一点WDR strength在曲线之外额外加一些LTM (Local Tone Mapping)的效果来提升层次感。其余细部的调整参数列表说明如下:

BoxNum 改变Local Tone Mapping中local分析的尺度
数字愈大分析的尺度愈小,可关注愈小范围的亮度优化;而尺度设大整体画面较自然。
建议可先设最大最小比较看看再朝某一个方向调整。
不建议by iso切换不同的曲线,因会导致闪烁问题。
PreEnhance 亮区动态区间比例
值越大,亮区分配到的动态区间越大,值域16,2为默认值。另外新增1115,依据2做调整,值越大暗处越亮,但整体越蒙。其他值皆无效。
不建议by iso切换不同的曲线,因会导致闪烁问题。
若开启GammaSyncEn,则PreEnhance会失效。
AutoDetailEnhance 自动细节补强
如开启则在拉亮拉暗的过程中,系统会自动做对应的锐度补强
ManualDetailEnhance 手动细节补强
当自动细节补偿的勾选取消后,随WDR gain而增减的锐度补强控制会改参考Manual Detail Enhance。
128为一倍gain、小于128影像会变模糊、大于128影像会变锐利。
GlobalDarkToneEnhance 全局的暗处增亮曲线
共16条默认的曲线可供选择,详情可再参考本章节前半段的说明
不建议by iso切换不同的曲线,因会导致闪烁问题。
如需要by iso设定不同的拉亮程度,可用WDRStrByY搭配Strength来达到效果。
若开启WDRCurve,则GlobalDarkToneEnhance会失效。
WDRStrByY WDR强度控制by Y
可依照画面中不同的亮度位置来控制WDR作用的强度,表格由左至右分别对应由暗至亮的区块,建议在预设的基础上视需要微调即可
Strength Local Tone Mapping 的强度
可在调整完GlobalDarkToneEnhance后用来提升画面的对比与层次感
DarkLimit 暗区拉亮强度限制
当调整完WDR其他参数后,如果有暗区拉亮导致的不良反应出现如色彩异常、noise 过大等可尝试调整DarkLimit设定,透过限制暗区拉亮的程度来减轻不良反应的问题
BrightLimit 亮区拉暗强度限制
同上方DarkLimit的用法,惟改为限制亮区
GammaSyncEn WDR与Gamma连动的开关。
当WDR与Gamma连动设为enable可达到最佳效果,但如果Gamma有切换时,此连动会导致画面闪烁。
举例:当Gamma有by iso切换时,此时建议将GammaSyncEn关闭 (设disable)。
WDRCurve 全局的暗处增亮曲线
功能同GlobalDarkToneEnhance,提供手动控制整条曲线。

2. 常见问题

  1. Flicker

    HDR模式下由于短曝shutter往往受限无法达到de-flicker的最短物理限制,故短曝区在阴极射线管光源下常无可避免会出现Flicker问题,此时建议只能调整fps到与电源频率成倍数的fps张数来让banding问题定住而不滚动(ex: 60hz/30fps, 50hz/25fps),目前尚无法根除这个问题。

  2. 长短曝融合区破碎状的闪动

    此问题多由长、短曝张亮度不匹配所导致,建议可先check AE中的HDR Ratio与HDR API中的SensorExpRatio两边设定是否一致,或关闭Dynamic Ratio的动态补偿机制让长、短曝合成完全只参考YwtTh1及YwtTh2的设定,并观察长、短曝交界处是否存在明显的边界,从而厘清是否确实有两张亮度不匹配的问题。

  3. 融合鬼影

    尽量参考短曝影像为主,就可以让鬼影现象减弱。

    1. 可尝试降低MotionTh,儘量判斷为动区,但如果调太小,则平坦区也会被判斷成动区,进而使用短曝,会使画面较脏。

    2. 可尝试降低MotionAdjLut,让动区使用短曝的比例增加,但也会使画面较脏。

    3. 如果有需要依据亮度调整,再微调NosieLevel即可。

  4. 中高亮度局部色彩异常且细节丟失

    尝试调低HDR API中YwtTh1的值

  5. 室内/室外/背光人脸过暗

    可尝试以下建议,依序调整

    1. 将PreEnhance调至11~15,值越大暗處越亮,但整體越濛。

    2. 调整WDRcruve,将暗处拉亮。

    3. 拉高AE target,但可能会牺牲室外过曝区细节。

    4. BoxNum不要设太多,虽然设大会让整体对比感较好,但相对暗的人脸会更暗。

    5. WDRStrByY暗处不要调太小,如果有需要限制暗区拉亮程度,可以调整DarkLimit。