前言

概述

本文为使用ISP开发的程序员而写,目的是为您在开发过程中遇到的问题提供解决办法和帮助。

说明: 本文以SS928V100描述为例,未有特殊说明,SS927V100与SS928V100内容一致。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

SS928

V100

SS927

V100

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师

  • 软件开发工程师

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2025-09-15

第1次临时版本发布。

FAQ

ISP

如何解决整体锐度不足

【现象】

图像边缘细节不清,与失焦效果类似。或者对比标杆,大边和纹理的锐度不如标杆。

【分析】

影响图像锐度的维度有整体图像亮度和对比度(AE、WB、GAMMA和DCI)、锐化强度(sharpen)、Demosaic、去噪强度(2DNR和3DNR)和编码码率等。所以当图像的整体清晰度风格跟客户的需求偏差较大时,优先考虑调整GAMMA等影响图像全局亮度和局部对比度的模块,然后再调整Demosaic和sharpen。

【解决】

需要逐步排除定位图像锐度不足的原因:

  • 查看sensor表面,镜头表面是否整洁,是否贴膜没有去掉,是否单边模糊,确认镜头光圈开到最大,对焦清晰。

  • 检查图像亮度是否合理,通过ae_compensation参数调整亮度到满意。

  • 校正WB,使得图像的白平衡正常。

  • 调整GAMMA,让图像整体的风格和对比度达到客户需求。

  • 设置编码码率为高码率,观察是否有效果改善。

  • 调整Demosaic的相关参数,避免Demosaic插值的图像过于模糊和边缘不清晰。

  • 通过PQtools读取当前的sharpen强度信息,或手动设置sharpen强度到最大,观察是否有改善。

    • 首先将texture_str和edge_strength都调到最大;

    • 其次将over_shoot和under_shoot调到最大;

    • 再次将detail_ctrl设置为128,同时,将luma_wgt都设置为127;

    • 最后根据图像的黑边白边的情况适当的调整under_shoot和over_shoot以及shoot_sup_strength。如果图像的锐度太高,再适当降低texture_str和edge_strength,重复上述三步即可调到客户想要的清晰度风格。

  • 关闭或者减弱2DNR/3DNR去噪模块,观察是否有改善。

如何解决图像发蒙问题,提高通透性

【现象】

图像发蒙,通透性不好。

【分析】

通透性由两大因素决定:清晰度和对比度。

  • 若清晰度不够,或对比度不高,会让人感觉通透性比较差。

  • 若出现通透性不好,应检查是否有漏光现象。

【解决】

  • 遮住漏光的地方,注意sensor板背面也有可能漏光。

  • 提高对比度,通过设置更高对比度的Gamma实现。

  • 调整LDCI,进一步提升图像的对比度。

  • 如果是有雾的场景,或者是类似于有雾的场景,可以尝试调试Dehaze来减弱图像发蒙的问题。

  • 提高清晰度,请参见如何解决整体锐度不足和如何解决低照度清晰度差。

如何解决低照度清晰度差

【现象】

低照度时清晰度比较差。

【分析】

  • 原因1:清晰度与镜头关系最大。焦距与物距均影响景深(焦距小,景深大;物距远,景深大),导致整体清晰度差异。

  • 原因2:ISP软件内部有默认的联动机制。噪声大时,自动降低锐化强度,并加强去噪强度。该策略会导致低照度时,画面清晰度下降。

【解决】

  • 针对原因1,选用同样的镜头(同一个厂家,同一个型号)进行对比。

  • 针对原因2,联动机制已开放参数,用户可以按照自己的喜好,在清晰度和去噪之间平衡。在低照度时,可以增加2DNR/3DNR去噪的强度,以减小噪声。可以适当提高sharpen的锐化,以增强大边的锐度。还可以调整一下Demosaic的参数,防止图像插值出来的边缘过于模糊。

如何解决图像清晰度与物体边缘白边和黑边问题

【现象】

图像清晰度不足或物体边缘(如字体或树叶或者楼宇大边缘)有白边黑边。

【分析】

在图像已经聚焦的情况下,图像清晰度是由两方面决定:

  • 去噪强度越大,图像越模糊;

  • sharpen锐化强度,锐化强度越大,图像越清晰,反之越模糊。

物体边缘的黑边白边一般是由于锐化强度过大造成。然而,锐化后产生的黑边白边,是Sharpen锐化不可避免的副作用,尤其在sharpen锐化很强的情况下,黑边白边尤为明显,适当的黑边和白边能让人眼感觉锐度更高。

【解决】

图像清晰度和黑边白边的控制主要通过两种途径进行调节,包括去噪和图像锐化。

  • 如果图像的清晰度不足,可以适当降低2DNR的强度,适当提高sharpen的锐化强度。

  • 在图像的清晰度达到要求的情况下:

    • 首先,通过调大shoot_sup_strength来减弱图像的黑白边。调大shoot_sup_strength,可以在不明显降低图像的清晰度的前提下,收窄黑边白边的宽度、压低黑边白边的幅度,但是shoot_sup_strength调的过大,也会导致图像的清晰度降低,并会导致图像出现微弱的油画副作用,以及加重锯齿的副作用。

    • 其次,如果调节shoot_sup_strength也不能将图像的黑边白边调到满意,则可以单独调小overshoot来减弱白边,或者单独调小undershoot来减弱黑边,但是,调小overshoot或者undershoot都会明显的降低图像的清晰度。

如何解决图像的锯齿严重的问题

【现象】

锐化后的图像在小角度倾斜的高对比度的大边缘会产生锯齿。

【分析】

图像中的小角度倾斜的高对比度的大边缘,在sharpen锐化前一般都会有锯齿,只是不太明显。sharpen锐化后,原本不太明显的锯齿也被增强,导致锯齿变得明显。锯齿的产生跟高对比度的大边缘的倾斜角度有很强的关联,不同的倾斜角度,锯齿的严重程度也差别很大。

【解决】

需要逐步排除定位图像产生锯齿的原因:

  • 确认产生锯齿的边缘的视角和倾斜的角度跟标杆一致。跟标杆对比锯齿问题,需要两者在同样的视角和边缘倾斜度的情况下对比。

  • 关闭sharpen后,看图像是否已经有了明显的锯齿。

    • 如果关闭sharpen后,图像的大边缘就有明显锯齿,那就需要调整demosaic和2DNR。一般情况下,适当的调大demosaic的detail_smooth_str参数,就可以明显的减弱边缘锯齿,但是,demosaic的参数不能调的太极端,否则,边缘会变的过于模糊。

    • 如果关闭sharpen后,图像的锯齿不明显。开启sharpen后,图像的锯齿变得明显或者加重。那就需要调整sharpen参数,在保持清晰度不明显的降低的前提下减弱锯齿。

      适当的调节edge_str可以明显的减弱锯齿,而不明显的降低图像清晰度。edge_str参数是一个长度为32的数组,通过减小坐标最大的一段的edge_str的值,可以明显的减弱锯齿。比如,减弱edge_str [20]、edge_str [21]、edge_str [22]到edge_str [31]这12个下坐标最大的一段的edge_str的值,而同时保持剩下下坐标较小的一段(0~19)的edge_str的值不变,则可以在不明显降低图像清晰度的前提下减弱锯齿。同时,edge_str强度曲线的调节要尽量平滑。此外,如果shoot_sup_strength过大,也会导致边缘锯齿加重,此时,可以在黑白边可以接受的前提下,调小shot_sup_strength,以减弱边缘锯齿。最后,适当的调大edge_filt_str,也可以减弱边缘锯齿。

如何解决图像暗角格子问题

【现象】

图像四个暗角随机出现规则横线或者竖线。

【分析】

当采用镜头CRA角度跟sensor不匹配时,光线通过镜头入射会导致Gr/Gb不平衡从而产生crosstalk现象,由于demosaic模块处理会随机进行水平方向或垂直方向插值,因此产生格子现象。

【解决】

首先确认采用的sensor跟镜头CRA角度是否匹配,如果不匹配的话建议按照sensor厂家提供的文档更换CRA角度匹配的sensor或者镜头;

如何解决AE工作异常,如严重过曝或曝光不足

【现象】

AE严重过曝或曝光不足,调整目标亮度参数无改善。

【分析】

通过ot_mpi_isp_query_inner_state_info接口获取当前状态下的曝光时间和增益信息。

说明: ot_mpi_isp_query_inner_state_info接口请参考《ISP开发参考》文档。

【解决】

基于查询到的当前状态下的曝光时间和增益信息,可做如下处理。

  • 如果曝光信息与当前亮度不一致(曝光时间和增益已达到较大值,图像仍然曝光不足或者曝光时间和增益偏小,图像仍然过曝),需要确认硬件电路。

  • 如果曝光信息与当前亮度一致,查询AE的直方图统计信息,如果出现灰阶分布过于密集,某些段统计数据为0,请确认图像宽高设置是否合理,VI掩码是否与硬件相符。

  • 如果曝光信息与当前亮度不一致,确认AE计算的相关sensor寄存器是否正确配置生效,可以通过I2C/SPI直接读取sensor的shutter、gain相关的寄存器是否正确。

如何解决红外场景亮度和对比度差的问题

【现象】

低照度下,打开红外灯,画面四周亮度偏暗,画面中间亮度过高,出现过曝导致细节损失,并且,高亮区域的对比度差,画面发蒙。

【分析】

红外灯一般照射在画面的中间位置,灯光照射的地方亮度很高,容易出现过曝情况和对比度差的情况,四周缺乏灯光照射,亮度偏暗。

【解决】

  • 确保IR-Cut切换为夜模式。

  • AE收光,AE的Compensation适当调小,ae_strategy_mode设置为AE_EXP_HIGHTLIGHT_PRIOR模式,hist_ratio_slope和max_hist_offset都设大,就可以实现AE无过曝。

  • 因为AE收光,画面亮度降低,需要提升亮度。使能DRC,调节DRC的强度和DRC曲线,使得画面亮度提升,但是亮度提升会引入对比度差的问题,所以需要联调去雾和DCI模块。

  • 使能去雾模块,调整去雾自定义曲线,根据亮度局部调整去雾的强度。可以不把暗区拉黑的同时把高亮区域的区域对比度提升,从而细节增加。同时调试DCI,调整画面的对比度。

  • 画面还是会有四周暗的问题,这个时候可以利用shading来实现把四周亮度提升。可以不改变或者轻微改变中间区域,把四周围区域的亮度提起来。

如何调整红外模式AE,AWB和CCM参数

【现象】

红外模式下,AE统计信息不稳定,经常跳变。或者红外下AE收敛会收敛成不同亮度,比如用手捂一下,再拿开亮度就变了。

【分析】

这些现象和AE,AWB的配置有关系。开了AWB后,RB分量异常,导致AE大面积单色判断错误,引起震荡。

【解决】

  • 红外场景下,使用SDK提供的AE库需要把大面积单色功能(hist_stat_adjust)使能关闭。如果在红外场景下使能wb_gain,会导致图像亮度偏亮,这时建议根据sensor bayer pattern类型配置跳点方式(hist_config),同时统计R与G分量,使得图像亮度更合理。

  • 红外模式推荐关闭AWB,并把饱和度调成0,这种情况下,G通道和R通道占比较大的值,CCM矩阵的配置应该为R,G通道的权重大一些比较合理。

  • 红外灯应用时如果需要使能AWB,建议设置zone_sel=0,也就是使用全局的AWB统计信息。这种情况下,AWB会把R,B通道乘比较大的系数,R,B通道相对噪声比较大,建议CCM矩阵设置为只用G通道权重大,R,B通道权重小比较合理。

如何解决低照度情况下图像出现竖条纹的问题

【现象】

部分sensor低照度时,图像出现竖条纹。

【分析】

竖条纹是sensor的FPN(Fixed Pattern Noise),它会随sensor数字增益变大,而变得更明显。目前,软件对sensor的数字增益没有做限制,低照度时数字增益比较大,因此竖条纹严重。

【解决】

使用FPN算法模块,对FPN进行去除或减弱。

如何实现背光补偿

【现象】

在背光场景下,目标物体比较暗。

【分析】

背光场景下,可以通过提高图像整体的曝光亮度来进行背光补偿。

【解决】

加强指定区域的AE权重;

SS919V100自动曝光的静态统计信息分为15x17个区域,可通过设定权重表改变每个区域的权重,使最终的亮度相应改变。

可通过MPI接口增加指定区域的权重,使最终曝光按照指定区域的亮度曝光,达到背光补偿的效果。当把目标物体权重加的很大时,这种方式可能导致周围亮的区域过曝。

如何实现手动曝光时间,增益自动控制,或者手动增益,曝光时间自动控制

【实现】

如果有需求实现手动曝光时间,增益自动控制,或者手动增益,曝光时间自动控制的功能。

这种功能,最方便的是仍使用AE模式,把曝光时间上、下限设置为相同值,即可实现手动控制曝光的功能。此时如果设置ae_mode为AE_MODE_SLOW_SHUTTER,曝光时间超出一帧上限后,会自动降帧。增益同理,设置sys_gain上下限相同即可。

如何正确设置最大增益

【现象】

低照度时,有时需要限制最大增益获得更好的图像效果。但限制dgain、isp_dgain后,出现AE闪烁问题。

【分析】

大部分sensor的Again精度比较低,如果限制了高精度的dgain、isp_dgain,亮度无法按AE要求精确控制,出现闪烁。

【解决】

不分别限制again、dgain、isp_dgain最大值,而是限制system_gain_max,系统增益最大值。即again*dgain*isp_dgain的最大值。不用关心AE如何分配增益。

如何解决AWB易受干扰问题

【现象】

手在镜头前挥过时或占视野面积大的车开过时,AWB易受干扰而变色。

【分析】

肤色或部分车的颜色对AWB影响比较大,会使AWB出现误差。

【解决】

  • 设置AWB属性speed,降低收敛速度会使这个现象明显改善。

  • 设置AWB算法为高级算法,会对这种现象有改善。如果环境光源不会出现渐变,即不受到阳光影响。只有室内光源,提高AWB高级算法属性tolerance,也会对AWB易受干扰问题有好处。

如何解决高温下黑电平漂移对颜色的影响

【现象】

在过高或过低温度下,AWB校正后图像仍然偏色。

【分析】

在过高或过低温度下,sensor采集图像的稳定性会受影响。在高温下,sensor的黑电平会产生漂移,真实的黑电平可能是正常温度下的几倍。这时,AWB校正后图像偏色。理想情况下,sensor对不同亮度的灰色点颜色表现是相同的,R = K * G。常温下sensor的offset是F0,高温下sensor的offset是F1,F0<F1。

  • 常温下计算R通道增益为:Normal_R/G = (K * G + F0 – F0) /(G + F0 – F0) = K

  • 高温下计算R通道增益为:High_ R/G = (K * G + F1– F0) /(G + F1 – F0)

    F0 < F1(高温下黑电平漂移);

从sensor的光谱图可以看到,多数sensor的绿色感光强于RB两个颜色,K<1;High_ R/G - Normal_ R/G= (1 - K) * (F1 – F0) /(G + F1 – F0)>0, High_ R/G > Normal_ R/G。红色通道增益Rgain =G/R= 1/(R/G),因此High_Rgain < Normal_Rgain,红色通道增益偏小。同样可推出高温下蓝色通道增益偏小,因此高温下图像偏绿是必然的。

【解决】

High_R/G - Normal_ R/G= (1 - K) * (F1 – F0) /(G + F1 – F0),G体现了亮度信息,G越大,High_R/G与Normal_R/G的偏差越小。物理含义是:亮度越高,对黑电平的偏移越不敏感。因此,推荐增大AWB参数的black_level(前默认值为0x40),降低黑电平漂移对增益的干扰。

如何解决低照度亮度、对比度偏低

【现象】

低照度时,发现亮度、对比度不如对比标杆。

【分析】

  • 原因1:镜头光圈不同。F值越小,光圈越大,到达sensor的光通量更多。

  • 原因2:sensor不同。sensor的光电转换效率不同,决定了低照度表现。

  • 原因3:整体亮度不同。因为图像亮度值比较低,一些产品通过修改亮度、对比度的方式,提高人眼可见度。

  • 原因4:一些产品在低照度时,会降帧率,曝光时间会加大,因此画面显得更亮些。

  • 原因5:低照度下经过降噪算法处理之后,可能降低对比度。低照度环境下,椒盐噪声较多,当降噪算法过多处理了椒噪声之后留下盐噪声,这样会使整体图像发白现象。

【解决】

  • 针对原因1:选用同样的镜头(同一个厂家,同一个型号)进行对比。

  • 针对原因2:尽量采用同样的sensor进行对比。

  • 针对原因3:通过调整AE相关参数,使其整体亮度与标杆相当。

  • 针对原因4:在demo中,可以手动降低帧率,但产品实际应用中并不推荐这样做。

  • 针对原因5:可以调整降噪策略,或调整Gamma、LDCI算法模块参数,增加其整体对比度。

如何解决光源字体附近出现方向性的毛刺

【现象】

正常照度下,光源字体附近出现方向性的毛刺。如图1所示:

图 1 光源字体附近出现方向性的毛刺效果图

【分析】

原因:光源字体出现方向性的毛刺,该问题主要是由于Global CAC模块中的参数标定不合理而导致。

【解决】

针对该问题,首先检查Global CAC标定的静态系数是否合理,如果不合理进行重新标定;如果不想标定Global CAC的静态系数,默认需要将Global CAC的使能关闭。图2所示为Global CAC静态系数不合理,开关Global CAC对比图。

图 2 Global CAC静态系数不合理情况下,开关Global CAC对比图

如何解决AE无法控制Piris光圈

【现象】

Piris光圈接好后,驱动对接成功,可以通过手动的方式配置光圈开关,但用AE无法控制。

【分析】

AE没有配置正确相关的光圈参数。

【解决】

  • 需要配置AE route,否则默认曝光时间到最小值才会动光圈,但实际使用中很难达到最小值。所以需要通过配置AE route,使光圈在曝光时间未到最小值时就动作。

  • 在xxx_cmos.c文件中,没有配置ae_sns_dft->max_iris_fno和ae_sns_dft->min_iris_fno。请注意不是min_iris_fno_target。有Target的参数是指通过MPI接口配置的最大最小值。没有Target的是光圈实际支持的最大最小值。如果未设置,会导致AE认为Piris光圈最大最小值都为0,就不调了。可以将这两个参数直接设置为最小和最大。

DCIris光圈手动控制可以开关,但自动模式不会关闭原因

【分析】

  • DCIris光圈手动控制可以开关,说明硬件连接没有问题。

  • DCIris一般用于规避工频闪的问题。AE抗闪需要曝光时间为电源能量周期的倍数。比如50Hz为10ms倍数。在高亮环境下,最大光圈时曝光时间小于10ms,想要实现抗闪,要用到DCIris,关小光圈来实现。

  • SDK提供的AE DCIris算法,当曝光时间到最小值以后才会关闭光圈。但默认最小值一般为2行,相当于几十微秒,实际场景几乎无法达到这么小的曝光时间,所以看不到光圈关闭。可以手动设置曝光时间最小值为10ms来实现抗闪。或者不设置曝光时间最小值,设置抗闪模式为Normal模式,曝光时间降到抗闪最小曝光时间后,会维持曝光时间不变。此时相当于已达到曝光时间最小值,也会关闭光圈。

如何解决AE闪烁

【现象】

同步问题:具体表现为某一帧或两帧突然比其他帧亮很多或暗很多,然后恢复正常。精度问题:具体表现为画面亮度持续变化,变化程度或小或大;或AE偶尔出现震荡。

【分析】

AE闪烁问题最常见的为两类:同步问题和精度问题。

【解决】

  • 同步问题:是因为很多sensor,配置增益,会在下一帧生效,配置曝光时间,会在下下帧生效。isp_dgain同样是当前帧配置,下一帧生效。这样如果同步设置不正确,在增益曝光时间相对变化大时,就会出现闪烁。常见于高亮场景和开启抗闪时。

    xxx_cmos.c中有同步配置cmos_get_sns_regs_info ,其中有sensor 寄存器的同步配置。cfg2_valid_delay_max控制isp_dgain同步。可以尝试修改曝光时间、增益、isp_dgain同步配置来解决该问题。

  • 精度问题:AE算法计算的亮度值,具体配置到sensor的时候,因为可控制的增益精度有限,不能够完全达到AE算出的亮度值。

    如果精度低,亮度就有可能在相邻的两个可以达到的亮度间来回跳变,始终无法收敛到正确的亮度。表现为震荡、闪烁。因为isp_dgain精度很高,保留至少2倍的isp_dgain可以很好的解决精度问题。

    限制增益不建议分别限制again、dgain、isp_dgain的增益,这样容易带来精度问题,可以通过限制system gain来实现,AE会自动分配3个增益。

如何解决鱼眼校正放在VI模块引起的边缘噪声大的问题

【现象】

当前鱼眼校正放在VI模块时,也就是在3DNR之前,由于鱼眼校正会引起边缘噪声大,中间噪声小的问题。从而造成画面的噪声和位置相关。

【分析】

鱼眼校正引起的噪声不均匀,且和位置强相关,当前只能通过BayerNR+NrLsc使能进行优化,当前只有SS813V100/SS812V100 Shading模块单独针对BayerNR的降噪有bnr_lsc_gain_lut.r_gain/ bnr_lsc_gain_lut.gr_gain/ bnr_lsc_gain_lut.gb_gain/ bnr_lsc_gain_lut.b_gain,bnr_lsc_gain_lut表的调试与Shading的亮度校正解耦。

【解决】

调试BayerNR中的NrLsc模块,使能nr_lsc_enable,并调试Mesh-shading的中bnr_lsc_gain_lut. r_gain/bnr_lsc_gain_lut.gr_gain/bnr_lsc_gain_lut.gb_gain/bnr_lsc_gain_lut.b_gain。

注意bnr_lsc_gain_lut.r_gain表4096表示一倍,8192表示2倍,可以将画面的边缘处的Gain调试大一点,这样BayerNR使能NrLsc,可以针对边缘处去噪强一些。将画面中心出的Gain调试小一点,BayerNR针对中心区去噪弱一些。此时BayerNR去噪强度需要调试coarse_str而不是fine_str。

如何解决开启抗闪后较亮场景仍然闪烁的问题

【现象】

在自适应中,设置了默认的AE route,此时再设置对应频率的抗闪,当环境光较亮,但是所需曝光量已经大于抗闪的最小曝光量时,仍然有闪烁现象。

【分析】

自动抗闪功能受到了AE route的限制,如果AE route设置了优先分配增益,那么会导致总的曝光量大于最小抗闪曝光量时,曝光时间仍然小于最小抗闪曝光时间,那么此时如果设置的是自动抗闪模式,那么此时达不到抗闪效果。

【解决】

设置AE route为曝光时间优先分配,即增益在1倍,或者最小期望值之后,优先让曝光时间达到最小抗闪时间,此时开启自动抗闪才能起到抗闪效果。

如何解决软光敏方案频繁切换IR_cut的问题与使用建议

【现象】

在实验室全黑场景(没有或少量可见光),红外灯开启,当红外光的反射距离在4m以内,软光敏方案(ir_auto sample)频繁切换IR_cut的问题。

【标定条件】

  • 红外灯打开,设备切换到IR模式,并切换滤光片到全通。

  • Raw的亮度合适,大约到最高亮度的70%~80%,如12bit对应像素值4095, 80%是像素值3276。

  • 执行sample的标定程序,获取IR模式下的最大和最小阈值用于场景判断条件。

【使用建议】

  • 需要满足场景亮度适宜,不过曝或过暗,否则不宜使用软光敏功能。

  • 设备与物体IR反射距离不宜太近或太远,否则导致标定参数不适用的问题。

  • 红外切换可见光时,如果红外光太强,比如ISO100,此时需要关闭ISO联动判断条件。

DynamicBLC使用注意事项

要先确保mipi数据中包含OB区,才能打开DynamicBLC模式对OB区进行统计。数据处理流程如图1所示。

图 1 数据处理流程

因此若要使用Dynamic BLC模块基于OB区统计得到合理的黑电平值,整个数据处理通路的配置说明如下:

  • sensor驱动配置:在驱动中添加可以读出ob区的sensor序列。若启动Dynamic BLC模块一定要关闭sensor中的BLC校正功能。

  • mipi配置:确保mipi的裁剪区域包含OB区。若OB区的datatype与可见光区域图像的datatype不一样,则需要修改mipi的datatype配置,可通过调用OT_MIPI_SET_EXT_DATA_TYPE接口实现,接口的具体信息请参见《MIPI 使用指南》,使得mipi输出的数据包含OB区。若Dynamic BLC模块异常要检查mipi检测到的分辨率是否为包含OB区的分辨率。

  • VI dev配置:宽高与mipi输出宽高保持一致。

  • pub attr配置:配置wnd_rect中的起始坐标和宽高信息,使用ISP裁剪功能裁剪掉OB区,保证ISP FE和BE处理的数据为不带OB区的raw数据。

VI pipe attr和chn info中的宽高配置为ISP裁剪后的宽高。

由于sensor gain值较大时,动态黑电平会严重飘移,所以calibration_black_level的标定值不够准确。但是不会影响开关灯这种极限场景的图像效果。

采集FE raw数据送到BE时黑电平配置注意事项

采集FE的raw数据送到BE时,并且FE使用了动态黑电平,这时候建议FE使能user_black_level,使run BE的时候不用考虑黑电平的同步。使用user_black_level要注意保证sensor黑电平要小于user_black_level。如果sensor的黑电平超过user_black_level,需要关闭sensor_dgain减小sensor的黑电平,或者增大user_black_level。BE所在pipe,需要设manual_black_level的值和user_black_level一样。

AE增益分开配置使用说明

【说明】

sensor支持长短帧增益分开配置,需要在sensor驱动中做相应的适配。

  1. 驱动需要适配相应的增益和曝光时间配置函数,需要交替配置长短帧,AE算法会回调这个函数对sensor进行曝光参数配置。

  2. 驱动需要通过cmos_get_ae_default接口传递相应的参数到AE算法内部。

    • ae_gain_sep_cfg: 需要设置为True,使能增益分开配置模式。

    • diff_gain_support:用于长短帧配置不同的增益,需将该模式打开。

    • lhcg_support: 如果是单快门双增益的sensor,需要将该配置打开。

    • lhcg_ratio: 单快门双增益sensor,需要将sensor内部的长短帧增益比例的配置给AE。AE在配置曝光比的时候会将lhcg_ratio考虑进去,即长帧曝光量/短帧曝光量*lhcg_ratio等于最终的曝光比。

【注意事项】

当前单快门双增益模式,只支持长帧优先,非扩展的AE Route。

【案例】

cmos_get_ae_comm_default() {
    ae_sns_dft->diff_gain_support = TRUE;
    ae_sns_dft->lhcg_support = TRUE;
    ae_sns_dft->sns_lhcg_exp_ratio = 64; / 6bit 精度/
    ...
}
cmos_gains_regs_set(gain)
{
    static bool first_gain = 1;
    if (first_gain == TRUE) {
        deploy_long_gain_to_sensor(gain);
        first_gain = FALSE;
    } else {
        deploy_short_gain_to_sensor(gain);
        first_gain = TRUE;
    }
    return;
}
cmos_inttime_update(int_time)
{
    static bool first_time = 1;
    if (first_time == TRUE) {
        deploy_long_time_to_sensor(int_time);
        first_time = FALSE;
    } else {
        deploy_short_time_to_sensor(int_time);
        first_time = TRUE;
    }
    return;
}

Sensor相关

如何解决对接sensor时,环境亮度变化引起图像出现裂屏

【现象】

SS919V100对接sensor,环境亮度变化时,AE刷新sensor的曝光时间和增益,图像上出现亮线或图像裂屏。

【分析】

Slave模式sensor的模拟增益寄存器生效机制是实时生效的,当环境亮度变化时,AE刷新相关sensor寄存器,并对相关寄存器进行配置,当在图像数据的有效区(非消隐区)对其模拟增益进行配置时,模拟增益实时生效不在垂直消隐区,将会出现亮线或裂屏问题。

多数slave模式的sensor都存在模拟增益实时生效的问题,这就要求配置模拟增益的时间需要满足一定在垂直消隐区内完成。如保证了寄存器在消隐区生效,不会出现坏帧。

【解决】

使用ISP的寄存器配置机制(或客户设计相关配置机制),通过中断对寄存器进行配置,使其满足模拟增益实际生效在垂直消隐区内。而当客户应用程序业务量比较大时,可能导致中断响应不及时,从而导致配置不满足消隐区内,可能还是会导致上述问题,此时需要优化中断处理业务,尽量确保中断处理的及时性。

如何解决不同的sensor器件实现50Hz/60Hz抗闪

【现象】

采用发布SDK的默认参数,打开抗闪,该功能不生效。

【分析】

交流电波形如图1所示。

图 1 交流电波形

sensor不同行的曝光起始时间不同,如果曝光时间较短,就会有的像素行处在比较亮的时候曝光,有的处在比较暗的时候曝光,可见sensor各行即使保持相同的曝光时间,累积的能量是有明显差异的,导致了图像前后帧的同一行,同一帧内的不同行亮暗差异,从而出现了闪烁。

如果控制曝光时间为频闪周期的整数倍,则每一帧图像的整体亮度基本一致。如下:

  • 在50Hz环境下,要求曝光时间为1/100s的整数倍;

  • 在60Hz环境,要求曝光时间为1/120s的整数倍。

【解决】

SS919V100 ISP内部实现了抗闪,sensor的曝光时间以行为单位,不同sensor行与秒之间的转换比不同,用户需要根据自己的硬件环境,合理配置lines_per_500ms参数以实现抗闪。lines_per_500ms是行频的1/2,计算公式如下:

lines_per_500ms = 像素时钟频率/(图像宽度+水平消隐区宽度)/2。

如何解决sensor输出图像中间有黄圈问题

【现象】

图像中间出现同心圆状的偏色,一般表现为黄圈。

【分析】

sensor的CRA与采用的镜头不匹配,导致偏色。

【解决】

  • 通过ISP中镜头阴影校正模块解决。默认的参数不能完美匹配每一款镜头,还需要用自己的镜头重新校正。在镜头的参数中,后焦长度与光圈大小影响最大。

  • 当照度较低时,正常照度下正常的校正参数,会导致四周有较大的噪声,亮度也更高一些。所以在低照度时,可以换用限制最高增益的校正表,或关闭镜头阴影校正功能。

如何规避Sensor Built-in模式亮暗区域出现黄绿色彩问题

【现象】

Built-in sensor图像亮暗区域出现黄绿色彩、以及运动区域紫边明显。

【分析】

长短帧数据在sensor内部合成后(sensor内部做合成并分段压缩),其结果在拐点处会出现颜色不够线性,这是raw数据带来的问题。

【规避措施】

  • 考虑采用帧合成WDR模式。

  • 降低图像亮度,使颜色异常区域不落在关注区域。

如何实现图像裁剪

【说明】

图 1 可裁剪模块的图示说明

【实现】

  • Sensor内部一般可以做裁剪,但切换裁剪大小速度较慢。

  • MIPI Rx模块,MIPI和LVDS均可以裁剪,并配置起始点。

  • VI PIPE上可以裁剪。

  • ISP模块可以裁剪。图像到这个位置,裁剪后必须只剩有效图像,否则会有一些不是正常图像的数据进入ISP,影响图像处理。

  • VI CHN模块也可以裁剪,一般不会在此处裁剪。

如何理解接入性能

【说明】

  1. 串行(MIPI/LVDS/SLVS-EC)接入性能主要有两点限制:(1)单lane速率;(2)VI/ISP工作频率。

    芯片MIPI单lane速率(bps)可以通过手册查询,sensor单lane速率(bps)可以在sensor序列里直接获取到。

    VI/ISP频率可以等效为并口时的Pclk,单位为Pixel/s。因为sensor序列一般只提供单lane速率,可以通过单lane速率换算。假设一个sensor单lane为1.14Gbps,共4lane,数据为12bit数据。

    总数据量为1.14Gbps * 4 = 4.56Gbps

    总像素频率为4.56 * 1000 Mbps / 12 bit/Pixel = 380 M Pixel/s

  2. 并行接口(DC)请参考芯片手册。