MTK AE Histogram Stretch学习理解(与君共勉)

HS主要是把基础原理:根据需要,给整个画面乘上一个 gain 值(可以小于 1 也可以大于 1),将整体的亮度可以往小或往大拉,为主要的亮度调整机制。

计算公式:HS_Target=CWV*HS_THD/HS_Y

6765平台是主要是关注Histogram Stretch的亮部区域,讲Histogram Stretch的高亮区域来打一个合适的亮度,主要包含AOE和COE,按照场景亮度与实际要求来使用相对应的机制(下图为HS的流程图)

6765的HS主要是通过查表,EVdiff(对比度)BVRatio的双重插值,得出BV2THD,在AEtuningtool里标红的位置即为当前的THDEVdiff以及BVRatio的对应表格。为了防止冲突场景,如果两个场景EV相同,那么在不同的BVRatio下查到的THD的值不一样,就可以通过BVRatio的值定位THD的区间,反之亦然。此处的BV为统计信息得到的,与前面的main targetBV一致。

1、EVdiff等于亮度统计直方图内,亮处部分区域的Y的值减去暗处部分区域的Y的值,120为当前设置的EVdiff的计算区域大小,1000为基数,当前为12%,即为亮处12%区域和暗处12%区域的Y的值相减为EVdiff的值。

2、HS_Y的值:PCNT12分别对应各个亮度区域所占的weightHS_Y的值会通过BV的值,通过查表,得到百分比(PCNT),然后将高亮区域的亮度乘以PCNT的值,30即为3%,得到HS_Y的值。通过高亮区域乘上一个gain值的方式,使得整体的亮度得到提升,当然也可以将整体亮度降低。计算出HS_Target之后,乘以一个权重,再参与其他模块target的混合。

6873平台与6765平台相比,6765主要是关注HS的一个高亮区的表现,6875(ISP6S)多参考了Dark Tone和Middle Tone的一个我们想要的Target,原来的Bright Tone还是存在,6873把整个HS分成三区域,每个区域都会计算他们的Y和对应的Target

HS的参数运转流程图:

HS中Dark Tone使用BV和DR_B2D去查表得到他的一个THD值,Middle Tone是通过BV和DR_B2M去查表得到THD,Bright Tone是通过BV和EVD去查表得到THD(和6765一致):

同时针对场景的一个区分6873的HS在BV和EV Diff的基础上增加了一个DR_MidRatio去区分一些BV和EV Diff比较相近的场景

DR_MidRatio主要是影响这些机制下在HS在占的一个权重大小,Dark Tone因为低亮区的一个亮度统计不稳定不可信所以一般都是关闭状态,只用Bright Tone和Middle Tone;DR_MidRatio越小(靠左)Middle Tone的权重越大,DR_MidRatio越大(靠右)Bright Tone的权重越大

HS权重分布参数:

Sky detect(天空检测机制):天空场景,和白纸一样histogram会比较平坦,对比度EV diff会比较小,所以THD的值会随之减小,亮度也会被压低因此引入了一个天空景的检测机制。在EV diff较小时使用BV去判定是否为天空场景,然后将该BV对应的THD的值拉高,通过提高THD的值拉高当前亮度,然后在通过BV查表得到天空场景的一个weight,BV越大越容易触发天空景机制,天空景的权重就越大,THD的提升也会越大,THD设定值为u4flatSKYThd的值。

参数     2,  //uSkyDetInThd :2%--越大越有可能检测为天空场景

参数     5,  //uSkyDetIOutThd :5%--越大越有可能不被检测为天空景

AOE机制:通过计算过度曝光区域(Y>255)pixel在总曝光区域上的一个在PECNT值,然后来查表得到一个OE_P值,同时参数上还有一个固定的Level值(20),再去在区分Low Bnd/High Bnd两种环境在这两种环境机制下在去通过各自的BV去查表的得出一个BV Ratio,然后这三个值相乘({OE_P*Level*LOW/High BV Ratio)/weight(1024)=OE_DeltaL/H Y})在除以一个权重就能得到一个会得到OE_Delta Y,HS_Y会去加上Delta Y提去提高这个HS_Y的值做出一个伪高光的数据,让算法以为我们的环境有这么亮,然后通过提高分母的方式去降低Target。

COE机制(中心过曝抑制):COE场景的判定,将画面分成5*5block群,第一行为M00M04,第二行为M10M14,以此类推。中心的blockM22,将这个block的亮度的值作为COE_Y的值,和四周block的亮度对比,中心越亮四周越暗,表示中心与四周的差异越大,越趋于中心过曝景。

计算公式:COE_target=CWV*u4COE_THD/COE_Y.

COE_THD的值在参数中写入,COE_Y的值,找到参数内u4pcent的值,当前为10即为 1%,表示histogram内,高亮区域1%范围内的平均亮度的值,即为COE_Y的值。

计算公式:HS_target_aft COE=(1024-COEP)*HS_target+COEP*COE_target.

最终算出的 target 的值一般是会小于HS_target的值。

同时AOE和COE一般是要结合在一起用的,两个机制weight的混合在一起就是AOE和COE的Target,具体混合方式是通过COE_Y Ratio和COE_Diff Ratio去插值查表得到:

COE_Y_ Pcnt(图像周围越暗中心过曝概率越大 Y Ratio越大Y_Pcnt越大)

COE_Diff_Pcnt(中心和四周的亮度差异越大画面中心过曝的概率越大,Diff Ratio越大Diff_Pcnt就越大)

两个值相乘得到P_COE(COE_Y_Pcnt*COE_Diff_Pcnt=P_COE),P_COE越大就会混更多的COE的值;

AOE和COE混合公式是:TargetOE=TargetAOE*(1-P_COE)+TargetCOE*P_COE

Green Suppress机制(绿色压抑)通过HS降低绿色场景的亮度计算blcok块的G/R G/B的值,如果block块为绿色,那么G gain的值会较大,因此G/RG/B的值会大于100%,如果block块计算出的GR GB的值满足要求,会给THD计算出一个ratiosup ratio)的值,乘上这个ratio的值,从而降低分子,降低target的值,降低亮度。同时,当前画面内绿色框越多,count越大,对应的ratio越大,同时BV值越大,hs压制越严重,因此影响的值为绿色块的count数值,BV的值。

计算方式所示:

G Sup THD=HS_THD*u Sup Ratio/100

G Sup THD=[HS_THD*(1024-GC_Ratio)+G Sup THD*GC_Ratio]/1024

HS_THD aft G SUP=HS_THD*(1024-GC_BV Ratio)+GC_BV Ratio*G Sup THD

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值