您好,欢迎访问三七文档
0329/0311AWB学习笔记Leo黄小寒一、0309/0329/0311通用AWB寄存器二、0329新增AWB功能三、0311新增AWB功能四、调试经验总结目录AWB算法的三个步骤1.色温估计,找白点,估计出表达色温的特征量;2.增益计算,查表或迭代计算出R和B的增益,这里以G通道为参考来加大R和B的增益3.校正计算,AWB信道平衡模块中会调整R、B的增益,来和G比较达到平衡1.AWB_RGB_high_low:设定不作AWB的亮度阀值,高8位为high,亮度高于该值时不作AWB,低8位为low,亮度低于该值时不作AWB。注:0329/0311是分为AWB_RGB_high和AWB_RGB_low两个寄存器的。0309/0329/0311通用寄存器2.AWB_Y_to_C_diff2:判断白点的条件,Y-|Cb|-|Cr|β中β的值。理想白点的条件:Y=255|Cb|=0|Cr|=0实际情况:只要满足Y-|Cb|-|Cr|β就判定为白点,所以该寄存器的值越大,选择条件就越严格,反之越宽松。AWB_Y_to_C_diff2设定为不同值时debug比较Y2C=0x1cY2C=0x203.AWB_C_max:设定|Cr|+|Cb|的值,颜色小于该值的点会被选为白点。这个值会影响到颜色偏淡的色块是否会被选为白块。Cmax设置为0x10和0x20的debug比较:0x100x204.AWB_C_inter/inter2:控制在YCbCr色彩空间中白点选框的范围interinter25.AWB_number_limit:将画面分割成8x8块,在每一块中按照设定的skip_mode来寻找白点,当探测出的白点数量大于number_limit的设定值时,对该块做白平衡。Number_limit为0x10和0x20时的debug比较:0x100x206.AWB_skip_mode:统计白点的skip方式,比如4X4的意思就是:每调过4行4列判断一次白点。7.AWB_show_and_mode:Bit7:以pixel方式显示debugmodeBit6:以block方式显示debugmodeBit[5:0]:skin、edge、colorchange、big_c、dark模式的使能注:要使AWB_RGB_low生效,必须先使能darkmodePixelBlock8.AWB_adjust_speed/margin:speed:AWB调整的速度;margin:R_avg_use、G_avg_use、B_avg_use的收敛范围。如果这三个值的差小于margin,则AWB不再调节。9.AWB_every_N:AWB每n帧计算一次,同样会影响AWB的速度第一代:n=N第二代:n=2^(N+1)AWB计算渐变过程图解:A28toD65:(1)(2)(3)(4)10.色温曲线相关寄存器:P1:0X14~P1:0X1b,其中R_5K_gain、B_5K_gain指在5000K色温下R/G、B/G的值;sinT和cosT控制色温曲线斜率;X1_cut、X2_cut、Y1_cut、Y2_cut控制色温曲线范围,调AWB不同通道的Gain值开启色温曲线模式,则色温曲线起主要作用,可适当放大AWB_R/G/B_GAIN_Limit关闭后AWB_R/G/B_GAIN_Limit起主要作用色温曲线图解:R/GB/GB/G’R/G’X1X2Y2Y1黄蓝绿红11.AWB_RGB_gain_limit:限定AWB计算时RGB各通道的增益最大值。以上寄存器决定了AWB的选点条件,名称后缀加了big的(例如AWB_C_max_big)都是big_c_mode的条件,功能和普通模式一样,设定值相比普通模式要宽一些。1.move_TH:设定一个判定画面是否移动的threshold,当AWB选择的白块变动大于设定值的时候,sensor会判定当前为移动状态,AWB暂停。0329新增AWB功能2.AWB_outdoor_mode:AWB室外模式,在室外模式的时候,AWB_B_gain会被限制在一个较低的值,可避免出现以前0309在室外照绿叶导致背景偏蓝的问题。Bit7:两种判定ourdoormode的方式0:lumavalue当前亮度值1:expousuretime当前曝光时间目前我们一般用曝光时间来判定Bit[5:4]:进入和退出outdoormode的延迟时间P1:0X80~0X85控制室外模式下R/G/B的gain值注:室外模式可能会引起对着A光灯管的时候发生AWB震荡,原因是此时sensor进入了室外模式,B_gain受到限制导致无法准确的找到白点。3.外围色温曲线:在原有色温曲线的基础上,加了一条范围更大的色温曲线γ1γ20311最主要的改变就是在YCbCr色彩空间中的选点方式,从原先的用一个四边形确定选点改为通过自由组合一个六边形与两个四边形的集合关系来选点,类似于GT2005GC0309/GC0329:两组斜率为+⁄-1的平行线截取的矩形GC0311:以1组斜率为1的平行线与对角坐标确定的矩形所截的六边形&两个正方形0311新增AWB功能0311AWB_debug_Mode:六边形的确定方法:由一组斜率为1的平行线和对角坐标确定的矩形所截取1.AWB_C_inter:控制斜率为1的平行线在坐标轴上的截点坐标2.AWB_P1_x、AWB_P1_y、AWB_P2_x、AWB_P2_y:控制矩形的对角坐标。2.M1_x、M1_y、M1_radius:控制正方形M1中心点的坐标以及对角线的半长3.M2_x、M2_y、M2_radius:控制正方形M2中心点的坐标以及对角线的半长P1:0x90M_mode自由组合六边形与两个正方形的集合关系,选取或排除选定的颜色[6:4]Mmode000:off六边形区域单独作用001:M1&&Poly010:M1||Poly011:M1&&M2&&Poly100:(M1&&M2)||Poly101:M1||M2||Poly[3:0]Mselect[3]M2exclude[2]M2include[1]M1exclude[0]M1include注:&&为“与”,||为“或”include为“选入”,exclude为“排除”C_predict_mode:使能位:P1:0x72bit[0]区分肤色和A光C_predict的具体用法:先在各种A光或接近A光色温的环境中,读取AWB_Xn、AWB_Yn的值(P1:0x91、0x92),这两个值叫色温标记量然后根据读出来的这些值可以统计出一个A光的范围,根据这个范围来设置AWB_A_Xn_Low/High、AWB_A_Yn_Low/High、AWB_D_Xn_Low/High、AWB_D_Yn_Low/High这八个寄存器,可以将A光和D光区分开,从而达到区分A光和肤色的作用1.照人脸背景偏蓝,拉远后难以恢复,如图所示调试经验总结问题原因:出现这种情况的原因是,靠近人脸后进入big_c模式,但由于AWB选点条件限定得比较严格,导致从big_c出来的很慢甚至直接卡死。解决方案:适当放宽白平衡选点条件,其中加大inter/inter2的值效果最为明显。这种方法的副作用:因为加大了白点选框,那么会有更多的颜色被选入AWB计算。2.人脸漂白后背景太蓝,客户无法接受从上一张照片我们可以看到,背景确实是比较蓝,例一的解决方法只能让AWB快速恢复却没法解决偏蓝的问题。问题原因:人脸被漂白那么AWB_B_GAIN肯定会增加很多,读AWB_R_GAIN、AWB_G_GAIN、AWB_B_GAIN的值就知道了。解决方法:第一种是限定AWB_B_GAIN_limit的值,但要注意如果当前的AWB_B_GAIN。如果不过灯箱的话且是前camera的话可以压得低一点,后camera不建议限得太低以免在某些光源下(色温接近CWF/A)出现明显偏色。第二种方法是关闭big_c模式同时缩小AWB选点范围,让肤色不被选入,副作用是灯箱中A光可能会不准。3.灯箱中先调准了D光,再调准了CWF光,切回D光的时候发现偏蓝了,怎么办问题原因:CWF光下一般会选入一些黄绿色,如果框选得大了,就会导致D光下偏蓝解决方法:先保存一张D光下AWB调准了的debug图,然后再保存一张D光下偏蓝时的debug图,比较一下看看是因为哪个色块被选入了导致偏蓝的问题,然后通过修改选点条件把这个错误选入的色块去掉,同时保证CWF光不偏色。4.如何验证一套AWB参数是否合格这里以0329为例首先看灯箱中各个光源下色板的BLOCK21、BLOCK22的R/G、B/G的值是否达到标准要求;按D-CWF-A的顺序切一遍光源看AWB是否正常,反过来再看一遍,然后从D到A切换,看色温大跨度变化时AWB是否有问题,反过来再看一遍;将色板拿掉直接照灯箱侧壁,按上述做法再来一遍;将camera对着灯箱中的灯管,按上述做法做一遍;将灯箱切换到A光,关闭camera再打开,看直接进入A光源会不会有卡死的情况,CWF光、D光可以按此步骤重复回到室内环境,在不同光源条件下照各种景物看AWB是否正常(哪些情况下会偏色,恢复速度如何,会不会卡死)照室外环境,看outdoor模式是否正确按照代码所设置的那样起作用ThankYouEND
本文标题:AWB学习笔记分析
链接地址:https://www.777doc.com/doc-1278351 .html