
目录一、问题二、 分析三、总结一、问题今天遇到一个看似AE收敛实则不是AE收敛的问题。主要表现为;多目设备快起得到给稳定的AE参数在快起切换到正常模式时会有一个正常亮度-较低亮度-收敛到正常亮度的表现。具体视频可以参考https://live.csdn.net/v/517074二、 分析夜视模式下看到亮度变化任何一位有经验的工程师应该都会优先怀疑自动曝光是否有问题。因此需要查看整个过程自动曝光调整中是否存在AE参数的突变添加打印打印AE参数快起以及切到正常模式下的AE参数和亮度信息打印出来一看AE参数和亮度信息基本没有变化。AE参数没有变化怎么图像亮度有变化呢在此检查红外灯、ircu等硬件是否有问题。硬件检查没有问题。如果存在问题AE参数和亮度上应该可以反映出来相关信息之前也没有遇到AE参数和红外、ircut都没有变化而图像存在亮度变化的情况。此时思路有点蒙了。再次咨询客户同样的场景白天不存在类似的问题。那么我们可以把白天的参数替换掉对应的夜视参数并把颜色置于灰看看是否还存在类似的问题。结果令人惊讶。替换白天的参数后并没复现类似的问题。想到一个最笨的方法。把原本夜视ISP参数中一个一个模块替换为白天相应的模块参数。或者如果是亮度相关优先考虑整体替换到亮度相关的模块比如EXP、rgbgamma、contrast、hdr、lce、lsc等亮度相关模块结果替换参数后依旧存在问题。继续替换非亮度相关的模块awb/CCM/Saturation/DPC/GB等模块。发现第九步之后就没有响应的亮度变化问题了。进行到这一步的时候就需要考虑AE参数不变相应使用对应ISO 下的ISP参数不会被改变。重点需要查看存在参数过渡的模块。这样可以排除掉saturation、DPC、GB。只是剩下AWB、CCM模块这个时候在原始参数上逐一替换AWB/CCM模块。结果发现只有把夜视模式AWB模块替换为白天AWB模块之后就不再有亮度突变问题了。而白天参数和夜视参数 AWB模块最大的差异只是自动和手动的差异。继续做实验。把原始夜视参数中的白平衡从手动模式改为自动模式验证结果亮度图像现象消失了。为什么白平衡模式从手动改为自动模式后就没有亮度突变了呢继续在ISP驱动中添加白平衡增益的打印信息。发现快起和正常模式下白平衡自动模式和手动模式下白平衡增益都没有变得很小都在最小范围内。此时只能继续更加ISP驱动块内部的代码逻辑。查看自动白平衡模式和手动白平衡模式下存在哪些差异可能导致这个问题。最终发现在快起阶段启用了fast_awb接口。而该接口中需要白平衡统计计算色温和设置白平衡增益并根据色温设置CCM参数。通过对比发下fast_awb接口中手动和自动模式下CCM的设置存在一些差异。由于CCM会根据色温的变化进行过渡处理而手动模式下的CCM过渡处理中并没有给过渡处理值进行初始化。导致CCM参数从比较小的一个值慢慢过渡到目标值从而出现亮度突变的情况。修复后图像无之前明显亮度变化。视频效果为亮度正常收敛三、总结由于AE参数和Raw域统计的亮度信息都没有变化。此时就应该排除掉AE模块的问题。应该从Raw统计数据后的模块开始定位由于亮度不是总是全黑有一个逐渐变化的过程。优先查看ISP驱动库中Raw统计后的处理模块有渐变过程的操作模块且凡对像素做一个类似增益放大的功能都需要重点查看。诸如CCM、Contrast、HDR、LCE、DRC等模块一般来说图像亮度的变化一般为AE模块带来的。但是AE带来的亮度主要是源头上的。如果源头上比如Raw数据或者Raw域直方图没有问题就需要考虑ISP Pipeline中rgb或者yuv域的数据是否存在亮度变化的现象。可以通过RGB域或者YUV域相对应的直方图定位查看直方图的变化情况从而定位究竟是哪个域中导致的问题。如果图像亮度突变过程中在变暗的时候RGB直方图绝大部分像素都集中在较暗区域那么基本可以重点查看ISP PipelineRGB域的相关模块从而 定位问题。