YHistSA
YHistClampValue=YHistLowPctlLuma- [set param/tr:lux+lux]
YHistClampValue=Max(YHistClampValue,0.0)
YHistClampValue=Min(YHistClampValue,[setparam/tr:lux+lux])
HighPctlLumaTarget=Max(YHistHighPctlLuma,[setparam/tr:lux+lux])
HighPctlLumaRemoveOffset=YHistHighPctlLuma- YHistClampValue
YHistScaleValue=HighPctlLumaTarget/HighPctlLumaRemove
YHistScaleValue=Min(YHistScaleValue,1.25)
在YHistSA部分,我们主要对图像的亮度直方图进行动态调整,以适应不同的光照条件。具体步骤如下:
- 计算亮度钳制值:
YHistClampValue = YHistLowPctlLuma - [set param/tr:lux+lux]
YHistClampValue = Max(YHistClampValue, 0.0)
YHistClampValue = Min(YHistClampValue, [set param/tr:lux+lux])
这里,我们根据设定的光照参数调整亮度直方图的低阈值,并确保其值在合理范围内。 - 确定高亮目标值:
HighPctlLumaTarget = Max(YHistHighPctlLuma, [set param/tr:lux+lux])
设定高亮部分的目标亮度值,确保图像的高光部分不会过曝。 - 计算亮度缩放比例:
HighPctlLumaRemoveOffset = YHistHighPctlLuma - YHistClampValue
YHistScaleValue = HighPctlLumaTarget / HighPctlLumaRemoveOffset
YHistScaleValue = Min(YHistScaleValue, 1.25)
通过计算高亮部分的缩放比例,调整图像的亮度分布,同时限制最大缩放比例以防止失真。
BrightenImgSA:
BrightenImgSALuma=BrightenImgPCTLLuma
BrightenImgSATarget=[setparam/tr:lux+lux]
BrightenImgSAAdjRatioBright=BrightenImgSATarget/BrightenImgSALuma
BrightenImgSAAdjRatioSat=[setparam/tr:lux+lux]/BrightenImgSatPCTLLuma
BrightenImgSAAdjRatioMin=Min(BrightenImgSAAdjRatioBright,BrightenImgSAAdjRatioSat)
BrightenImgSAAdjRatioFSATgt=BrightenImgSAAdjRatioMin*FrameSALum/FrameSATarget
BrightenImgSAAdjInc=BrightenImgSAMinRatio*((BrightenImgSAAdjRatioFSATgt-1)*[setparam/tr:lux+CtrlLuma])+1
BrightenImgSAMinRatio=Min([setparam/tr:lux+BrightenImgStatsRoughness],[setparam/tr:lux+BrightenImgFlatRatio])
BrightenImgSAAdjRatioFSATgt=(BrightenImgSAAdjRatioFSATgt>1)?BrightenImgSAAdjInc:BrightenImgSAAdjRatioFSATgt
BrightenImgSAAdjRatio.Start=[setparam/tr:lux+BrightenImgSAAdjRatioFSATgt]*FrameSATarget/FrameSALum
BrightenImgSAAdjRatio.End=256
在BrightenImgSA部分,我们专注于根据光照条件动态调整图像的亮度和饱和度,以提升视觉质量。
初始化亮度和饱和度调整比例:
BrightenImgSALuma = BrightenImgPCTLLuma
BrightenImgSATarget = [set param/tr:lux+lux]
BrightenImgSAAdjRatioBright = BrightenImgSATarget / BrightenImgSALuma
BrightenImgSAAdjRatioSat = [set param/tr:lux+lux] / BrightenImgSatPCTLLuma
分别计算基于亮度和饱和度的调整比例。确定最小调整比例:
BrightenImgSAAdjRatioMin = Min(BrightenImgSAAdjRatioBright, BrightenImgSAAdjRatioSat)
取亮度和饱和度调整比例中的较小值,作为最终的调整基准。计算帧级别的调整目标和增量:
BrightenImgSAAdjRatioFSATgt = BrightenImgSAAdjRatioMin * FrameSALum / FrameSATarget
BrightenImgSAMinRatio = Min([set param/tr:lux+BrightenImgStatsRoughness], [set param/tr:lux+BrightenImgFlatRatio])
BrightenImgSAAdjInc = BrightenImgSAMinRatio * ((BrightenImgSAAdjRatioFSATgt - 1) * [set param/tr:lux+CtrlLuma]) + 1
根据帧级别的亮度和目标值,计算调整增量。应用调整比例:
BrightenImgSAAdjRatioFSATgt = (BrightenImgSAAdjRatioFSATgt > 1) ? BrightenImgSAAdjInc : BrightenImgSAAdjRatioFSATgt
BrightenImgSAAdjRatio.Start = [set param/tr:lux+BrightenImgSAAdjRatioFSATgt] * FrameSATarget / FrameSALum
BrightenImgSAAdjRatio.End = 256
如果调整后的目标比例大于1,则应用调整增量;否则保持原比例。最后,设置调整比例的起始和结束值。