IQ调试相关
1. AE¶
1.1. Slow shutter机制说明¶
修改曝光表成功设定下去需要注意的事项:
-
操作方面
AE item 取消勾选auto write Read page 修改曝光表(除曝光表外不要改动其他AE Attr中的项目)
Write page
Read page
此时read page回来可以看到AE Attr中的min/max gain,shutter,ISP gain会根据设定的曝光表被更新。
-
驱动方面
如果驱动中最大gain和最大shutter被限制住了,曝光表会修改不成功,需要在驱动中放开限制,否则整组table表都会set不进去。
-
曝光表的跑法说明
就拿set 20fps,曝光表设置如下:
区间0~1:帧率 20fps,增益1x,曝光时间150us ->50ms
区间1~2:帧率 20fps,增益1x~30x,曝光时间50ms
区间2~3:帧率 20fps->10fps,增益30x,曝光时间50->100ms 慢快门开启
区间3~4:帧率 10fps,增益30x~256x,曝光时间100ms 慢快门开启
如果没有通过api去设置AE Attr中的值,则直接minshutter=150usec maxshutter=100000usec minsensorgain=1024 minISPgain=1024 maxSensorgian=30720 maxISPgain=262144/30720,此时20fps对应的shutter是50ms,而曝光表中的max shutter是100ms,则默认slow shutter完全按照曝光表运行。
如果有通过设置AE Attr中的max shutter来控制,当max shutter设置10000,则帧率还是20fps,shutter最大只能到10ms;
当max shutter设置50ms,没有slow shutter,类似与3,4,5行的100000换成50000这样的曝光表来跑。
当max shutter设置80ms或者120ms时,会先行跑满曝光表的shutter,然后按照max shutter来跑。
假如max shutter设置120ms,曝光表的跑法:
Sensor gain 为1倍ISP gain为1倍的时候,先涨shutter,涨满shutter 50ms 之后,gain从1倍gain开始涨,涨到30倍gain,然后gain不涨,shutter开始从50ms 开始涨到100ms ,gain会从30倍涨到256倍,然后再涨shutter从100ms涨到max shutter=120ms。
1.2. shutter很低的时候,补ISPgain¶
ISP gain补的是shutter精度的部分,就是一条Line的时间那个,flicker是用sensor gain补。
如果shutter 很小的時候,比如一个step 是30,那下一个是60,这样亮度会调两倍,为了避免它跳两倍,中间就补gain,比如30+1.5x gain,那就只会跳1.5x,上图是一个最刚好的状况,他准备要跳60,但是又不满60,所以这个时候gain就会来到最高点,接近2x但是不到2x,基本上这个补isp gain的行为不会出现超过2x的情况。
另外,Step会从sensor driver中拿GetShutterInfo,注意shutter step是否准确。
1.3. AE Converge¶
Con speed:
例:从curY=10 到target =50的过程:
-
10对应的收敛速度是900,下一个到的亮度值NextY=10+(50-10)*(900/1024)=NextY=45
-
接下来算出NextY=45对应的一个SpeedY_45的值,然后按照(1)再次计算一个Next Y的值,NextY=45+(50-45)*((SpeedY_45)/1024)
-
依次类推,进入收敛区即稳定区。nSpeedX值是target值,10可以理解为暗环境,47可以理解为正常环境,200可以理解为亮环境。
nSpeedY值越大收敛速度越快。所有的场景都是一次到位,收敛速度最快的时候,如下图所示:
例:要加大从暗环境到正常环境的收敛速度,按照上图的方向去改,如下示意图所示:
从示意图来看,把47对应的speedy加大,这样10到47区间的亮度对应的收敛速度都往上提高了。
Con TH:
nInthd:
是从非收敛区进到收敛区来的一个threshold,值的大小在上图中体现在inStable x CondRation离TargetY的一个大小,对于非收敛区进入收敛区来讲,inStable x CondRation到TargetY之间的部分是稳定的,所以nInthd的值越大,就越容易从not stable区进入stable区,也就是更容易收敛。
nOutthd:
是收敛区到非收敛区的一个threhold,值的大小在上图体现在outStable x CondRatio离TargetY的一个大小,同样对于收敛区进入非收敛区来讲,OutStable x CondRation和TargetY之间都是收敛区,同样值越大越容易收敛。
收敛越容易,越不准确,这样会导致每次收敛的时候亮度差异过大。nOutthd的值需要大于等于nInthd的值,否则会出现AEC震荡。因为如果nOutthd的值小于nInthd的值时,进入收敛区(Stable),其中进去Stable区中包含了部分out的Not Stable区,这样既处于In的Stable区又处于Out的Not Stable区的场景就会出现不停的In-Out的过程,即AEC震荡现象。如下示意图所示:
1.4. AE 亮度闪¶
AE log 驱动中 gain和shutter的计算 驱动中gain和shutter是否同步,如果有开defliker,关掉defliker看是否就不闪了,如果是需要考虑gain和shutter是否同步生效。 可以把sensor gain,isp gain 跟shutter 乘起来,看AE 曝光能量控制是否合理 如果AE是控制平滑的,但是亮度闪,多半是driver的问题。
2. AWB¶
2.1. 白点数太少¶
当白点的count数小于20的时候,AWB不会重新收敛来计算,补的WBgain是上一次收敛的,知道count数超过20,就会重新收敛计算。
2.2. AWB analyzer中算出来的R gain 和b gain 和tool 中AWB info中的有什么不一样?¶
两种算的地方不一样,AWB info是AWB algo中算出来的(包括一些策略)AWB analayer单纯的是,根据落入色温框中的白点计算出来。
2.3. 两边算出来的WB gain 以及CT 不一样?¶
因为开了bWpWeightEnable,AWB行为会变,会选边站做AWB,那个是AWB algo算出来的。AWB anlayer那个show出来的是单落点到色温框算出来的。
2.4. AWB statistics 划分¶
ISP statistics data为128x90,然后进行subsample,演算法取样成32x18,每个block包含4x5个statistics data。
2.5. 关于AWB模块中tolerance参数的理解¶
-
当前环境算出的awb gain1 - target awb gain \< tolerance,则将当前环境算出的awb gain1作用于整个画面;
当算出来的current wb gain处在上图红色标出来的区间,就说明已经收敛好了,此时的current wb gain就会最终WB 需要补的gain
-
当前环境算出的awb gain1 - target awb gain > tolerance,则awb算法基于awb gain1再重新算出一组awb gain2,如果awb gain2 - target awb gain \< tolerance,则将当前环境算出的awb gain2作用于整个画面;这个过程就是收敛的过程。
2.6. 如何确定当前环境的target awb gain是多少?在工具哪里可以查看?¶
这个是在算法算出来的,然后上一次收敛稳定的wb gain去追它。
2.7. 关于Rgain、Bgain的差异¶
-
AWB Analyzer中算出来的Rgain、Bgain是根据白区落点算出来的,那么AE Info中的Rgain、Bgain与AWB Analyzer中算出来的Rgain、Bgain有差异的原因只因为u2WpWeight、LvWeight、PreferR/Bratio、tolerance这4个参数影响的吗?
是的,但不会完全一致。
-
如果bWpWeightEnable参数设为0,LvWeight的值全部为100,PreferR/Bratio的值全部为100,然后tolerance设为1,那么AE Info中的Rgain、Bgain与AWB Analyzer中算出来的Rgain、Bgain是不是应该一致?
是的,趋于一致
2.8. log中参数的具体说明¶
对图中log每个参数的具体作用说明,比如进制,在AWB哪一步生效,对下一步有何影响以及哪些参数是和工具中有关系的。
-
Wpen =01
开启wpweight功能;
-
Wp =03
说明当前最多的白点在3色温框中,即6500k;
-
LT[00-09]的count /weight
亮度环境LV=84的时候,1000k到20000k的白点count数以及weight,此weight是count和lvweight以及过wpweight的结果;
-
Wpwt[00-09] wpweight /ChkWpWeight
1000k到20000K的weight 以及过wpweight 之后重新分配的weigh;
-
DynWt[00-09]
algo内自建的dynamic weight,一个当前的,一个是目标的。主要是为了smooth过去;
-
NoFound:00000
多余,没有实际作用;
-
Total
总的count 数;
-
Speed
收敛速度;
-
Conv
30;
-
Convout
62;
-
Rg1; Bg1
AWB_GAIN_NORMAL时的wb gain,如果不考虑以下条件,此时的wb gain和AWB_GAIN_MIX_2时的WB gain一样。
if( handle->sLightCount[handle->uLightSecond].u4Weight > 0 && handle->uLightFirst > 0 && handle->uLightFirst < (handle->uLightNum - 1) &&
( ( handle->uLightThird == (handle->uLightFirst + 1) && handle->uLightSecond == (handle->uLightFirst - 1) ) ||
( handle->uLightThird == (handle->uLightFirst - 1) && handle->uLightSecond == (handle->uLightFirst + 1) ) ) )
以上是考虑取前三大,前第一大的在中间位置,且色温框是连续的。比如:色温框 4 ,5,6,5必须是落点数最大的一个。且4,5,6是连续的色温框。满足条件都的WB gain 就是前三大色温框算出来的wb gain.
-
Rg2; Bg2
没有在用,当初设计是色温框的比较,然后保存第几大的wb gain;
-
Rg3; Bg3
额外框的WB gain;
-
Rg4; Bg4
AWB_GAIN_MIX_2,只考虑前两大色温框的WB gain;
-
CurrRg; CurrBg
当前收敛的wb gain;
-
ApplyRg; ApplyBg
收敛稳定后的wb gain;
-
TRg; TBg
重新收敛要追的wb gain;
-
1st
第一大落点;
-
2nd
第二大落点;
-
3rd
第三大落点;
2.9. DynamicWeightCurve是怎么影响gain的计算?是在统计落点加权吗?¶
双色温的计算:
如果wpweightEnable开启来,会根据wpweight重新算出每个色温框的白点count数,然后sorting,找到count数最大的色温框,以它为中心自建出一个dynamic weight 且这个色温框的权重比其它色温框大很多,权重大,自然拿这个框的点来算WB gain就多,来达到选边站的效果。
3. 图像问题¶
3.1. 横条纹(power noise)¶
细横杠纹。电源系统滤波不彻底。电源系统由各个负载距离及功率不同,造成电网内的电压及电位波动。变压器滤波不稳定,极容易造成设备端的图像画面中出现细的横纹移动。
较宽细横纹组成的横带,属于谐波干扰。
较宽横杠产生图像扭曲,此类横杠可为黑色或白色,为地环路电流影响,造成图像中出现黑白色横杠,严重的会导致图像扭曲直至消失。
3.2. 竖条纹(FPN)¶
CMOS每个感光二极体旁都搭配一个ADC 放大器, 每个像素结构中的光电二极管的尺寸、掺杂浓度、生产过程中的沾污以及MOS场效应管的参数的偏差等都会造成像素输出信号的变化。
3.3. Smear¶
拍摄强烈光源照射下的景物时出现光散射形成条状光线影像的现象,一般称为漏光(感光器件中电子势阱的电子溢出)。
3.4. Bloom¶
它是传感器像素在受到强光照射时,亮点区域像元获得的光照过强,像元光电二极管在强光下产生的光电子数超过电荷存储区可以存储的最大电子数而溢出,溢出的电子将沿行或列方向进入相邻像素,“污染” 相邻图像区域 (使相邻区域也饱和),图像出现Blooming “开花”(光晕)现象。
3.5. 紫边¶
一般出现在亮暗反差较大的交接处,与lens的色散 ,pixel size 都有关系。
处理上:有PFC 模块就用PFC模块,没有就用HSV降紫色区块的saturation。
3.6. Defect pixel¶
坏点与细节权衡。
By diff: diff越大,DPC 强度越强,diff小DPC要设小,对平坦区坏点的就会去的越干净,细节区的保留更多细节。
B有Y:暗处的白点会比较突兀,所以越暗,DPC要越强。
3.7. 平坦区迷宫格,高频十字架¶
需要用crosstalk 去掉
3.8. 高频摩尔纹/伪彩¶
Demosaic 模块方向性判断错误导致插值出新的false color。
3.9. 暗阶偏色/global 偏色¶
切黑四角偏色,需要bypass 看看是否shading引起切黑暗阶偏色,需要看看ob 是否正确,sensor 线性都是否正常。
Global awb偏色,落点是否在框内,ircut是否没打开,ob是否扣对。
3.10. Y降噪¶
NE: MDth跟MD gain 调到noise 大致安静。
M2S: 如果出现谍影很重,需要调缓一点,如果运动后出现很多蠕动的noise则调抖一些。
Blend2dnr/blendsharp: 调节运动后noise/清晰度,如果出现很多noise 说明2d没上到,应该调缓blend2dnr,如果运动后模糊消失比较慢则调抖一点blendnr,blendsharp亦然。
3.11. Color降噪¶
Colornr: C3DNR 要加强到没有彩拖,2DNRChroma 可以把noise 抹开摸淡。
当NR已经处理不过来了,就要降饱和度,CCMbyISO, WDRColorSatByY,SatbySat,SatByY。
3.12. 色彩还原/色彩喜好¶
色彩还原:bypass HSV,看看CCM 还原是否正确,否则就要重新correct。
色彩喜好:在色彩还原正确的基础,可以通过HSV 调整色彩。
3.13. 透彻度/暗部亮度¶
a. Gamma
b. WDR global , wdr local
c. colortrans(RGB2YUV)
3.14. 清晰度不够¶
-
确认下lens是否对好焦;
-
是否有开wdr,check下Manual Detail enhance 是否设小;
-
Bypass 2DNR 看看是否清晰度会出来;
-
Check下sharpness coring,detailTh是否设的过大;
-
调大sharpness gain/ UD/SCL 以及killLut拉出细节。
3.15. HDR¶
短曝闪黑: HDR sensorRatio 没设对,或者sensor 吐出来的长短曝与实际的亮度比例差异比较大。
融合残影: 如果有motion detect 就开。
短曝太蒙:WDR 选择的dark tone曲线可以选小一点。