ISP API Tuning SOP


REVISION HISTORY

Revision No.
Description
Date
1.0 (API Ver. 1.0)
  • Initial release
  • 12/10/2021
    1.1 (API Ver. 1.0)
  • Updated Infile description
  • 06/28/2022

    1. GAMMA FITTING & COLOR CORRECTION

    不同的gamma和color对noise会有不同的影响,而且调整denoise时先套入gamma和color设定会比较方便观察,因此通常会先做gamma和color的调整,即便它们在pipeline中是在denoise之后。

    1.1. Gamma Fitting

    Color fitting的结果容易受到亮度差异的影响,而亮度差异主要来自AE和gamma,因此在color fitting前务必先做gamma fitting。此步骤主要目的是将调整机台的gamma fit到与对比机的gamma接近。校正前请先确认dynamic range是full range,可以看histogram是否有到最大/最小值。

    1.1.1. 校正环境

    使用OECF chart,让光线均匀打在chart上,拍摄时让chart摆在画面中间,不要占满整个画面,否则容易受到shading的影响。

    Figure 1:拍摄画面范例

    1.1.2. 校正界面

    点选API tool上方Select Plugin,选择Gamma Fitting开启校正接口。

    Figure 2:Gamma Fitting界面

    1.1.3. 校正步骤

    1. 将环境架设好,首先拍摄调整机与对比机fitting所需的image。由于曝光会影响亮度,因此gamma fitting要在相同曝光的基准上会比较准确。要得到接近的曝光,最简单的方式就是拍摄时(调整机拍raw,对比机拍jpg)让OECF最亮色块尽量接近255但不要刚好255,因为我们不知道对比机gamma长什么样子,但通常gamma最亮点是不会变的,因此拿它来当基准会比拿其它点当基准要好。

      Figure 3:拍摄source及target画像示意图

    2. 读取source raw data的OECF patch值:

      点选界面工具栏的Options,填入正确的raw information及OB(WB不需要设定),完成后点选OK。

      补充:OB的单位是12bit,最大值只有255,后续会修正为单位是16bit,最大值是65535。

      Figure 4:Raw Setting设定接口

      拖曳鼠标来框选OECF,确认每一个patch都有正确落在patch内即完成。

      Figure 5:框选OECF patch范例

    3. 读取target image的OECF patch值:

      和上述步骤相同,差别只是target是读取image档,省略了设定raw information的动作。

    4. 选择fitting的相关设定,取值方式建议使用patch values,fitting的方式建议使用Exponenitial。

      Figure 6:Gamma fitting设定建议

    5. 选择好后点选Match GMA执行gamma fitting,观察fitting出来的curve是否有异常,没有的话点选Save GMA储存gamma curve。最后检查储存出来的gamma curve头尾是在0和1023,若不是,请手动作修改。

      Figure 7:理想gamma curve要smooth且递增

    1.2. Color Correction

    此步骤主要目的是使调整机与对比机的颜色接近,调整主要包含两个部分:第一个也是最主要的部份是color matrix的fitting;另一个为HSV微调的部分,可依需求做局部颜色饱和度与色相的调整。Color matrix与HSV最多可支持16组色温的设定,填参数时务必按照规则,Index0到Index15代表色温由低到高。

    1.2.1. HSV调整

    当CCM套入后仍有颜色希望微调,则可使用HSV来达成。HSV会将整个色域平均切成24等分,使用者可依需求调整个等分的色相及饱和度。HSV使用auto mode时,请务必确认Index是依据什么来切换,有些依据色温(这边的色温节点和CCM相同,由CCM来控制)来切换,也有些依据gain来切换。

    • 调整界面

      Figure 8:HSV调整界面

    • 参数说明

      HueLut:可依需求局部调整色相,值域-64 ~ 64,0代表不改变,参数切换是根据色温。

      Figure 9:Hue调整界面

      SatLut:可依需求局部调整饱和度,值域0 ~ 255,64代表不改变,参数切换是根据色温。

      Figure 10:Sat调整界面

      HueLut_ByIso:可依需求局部调整色相,值域-64 ~ 64,0代表不改变,参数切换是根据gain。

      SatLut_ByIso:可依需求局部调整饱和度,值域0 ~ 255,64代表不改变,参数切换是根据gain。

      HueLut_ForUnitCCM:搭配unit matrix的色相调整,值域-64 ~ 64,0代表不改变,参数切换是根据色温。

      SatLut_ForUnitCCM:搭配unit matrix的色相调整,值域0 ~ 255,64代表不改变,参数切换是根据色温。

      GlobalSat:调整整体颜色的饱和度,值域0 ~ 255,64代表不改变,参数切换是根据gain。建议降饱和度时利用这里来降对noise level降低较有效,提高饱和度时则利用Saturation API来升比较不会增加noise level。

      Figure 11:HSV流程

    1.3. Saturation调整

    根据亮度(Y)及饱和度(UV)做UV的调整,分为adjust uv by y及adjust uv by uv,主要是留一些颜色调整弹性在YUV domain上,且因为亮度与饱和度的独立性,可保持亮度恒定,又达到局部调整饱和度的效果。在传感器用到高曝光值的时候,也可适度降低暗处色躁。亦或根据使用者喜好调高或降低饱和度,使画面看起来更鲜艳或较柔和。

    1.3.1. 调整界面

    于左侧选单点选Saturation,接着在右侧主画面可找到Saturation界面。

    Figure 12:Saturation调整界面

    1.3.2. 参数说明

    Sat.AllStr:整体饱和度的可变强度数值,值域范围:0 ~ 127(32 = 1x)。

    Sat.ByYsft、Sat.BySsft:根据Y/UV调整UV的X轴间距可以透过此调整,但有特殊限制:节点为2的幂次方并向上相加,例:Sat.ByYsft[5] = {3, 3, 5, 7, 7},第一点为0,第二点为0+23,第三点为0+23+23,第四点为0+23+23+25,以此类推;则X轴间距点为:{0, 8, 16, 48, 176, 255},最后一点超过卡到255。特殊限制为:X轴前四点总和小于255,最后一点一定要大于等于256,例:Sat.ByYsft[5] = {8, 0, 0, 0, 0},第一点为0,第二点为0+2^8=256,则违反规则。

    Sat.ByYLut、Sat.BySYLut:节点的数值可以自由决定

    Sat.Coring:UV做同减的动作,建议使用Sat.BySYLut即可。

    特殊应用:HDR效果开启后,高亮度会过于饱和,以此可以透过Sat.ByYLut/Sat.BySLut将高亮度/高饱和度的UV向下压,让影像在HDR效果下更显自然。

    Figure 13:Sat.ByYsft[5] & Sat.ByYLut[6]

    Figure 14:Sat.BySsft[5] & Sat.BySLut[6]

    2. DENOISE & EDGE ENHANCEMENNT

    虽然板子连上API tool时会将iqfile中默认参数读回界面,但各IP开关与否并不会显示在接口上,若要完全从头开始调整一颗新sensor的画质,建议先去Enable Control界面bypass除了sharpness和之前调整完毕项目(OB、ALSC、Gamma、Color)以外的功能,了解一下这颗sensor尚未做任何denoise前的状况(若画面过于扰动,可以上一点3DNR),例如解像力极限、是否有crosstalk或false color等等,之后再依需求开启对应的功能来调整,避免多余的功能影响画质表现。理论上sharpness也要bypass,但为了方便观察现象,建议还是开着,先用默认值让画面不要太离谱即可(高倍gain可把OverShootGain和UnderShootGain设小一些)。

    当调整高倍gain时,没有denoise又开sharpness画面会很脏,脏到无法辨识调整参数的效果,建议可在调NR3D前将Y.TF.STR开强,让画面定住,方便调整NR3D前的一些function。调整建议照ISO index顺序调整,此外,为避免参数内插影响判断,建议将AE设为Manual的SV mode,直接给定各节点的gain值来做调整,完整调好一个再跳下一个增益。调整画质前请将镜头擦干净且确实对到焦,RGB sensor要确认IR cut有盖上。

    2.1. NR3D、NRLuma & NRChroma调整

    NR3D的功能强大,除了降低temporal noise之外,还能分别对于静态或动态区域调整NRLuma的强度,因此建议先从NR3D调起。

    2.1.1. NR3D ON

    主要用来降低temporal noise,包含Y & color noise,开强可以有效降低噪声,但side effect就是会出现残影,因此调整方向就是找出一个noise与残影都可接受的平衡点。

    • 调整界面

      于左侧选单点选Denoise_3DNR,接着在右侧主画面可找到NR3D界面。

      Figure 15:NR3D调整界面

      Figure 16:NR3D_EX调整界面

    • 参数说明

      < Spatial Domain Denoise、SF系列参数 >

      这边的控制,请参考NRLuma、NRLuma_Adv、NRChroma、NRChroma_Adv

      < Temporal Domain Denoise、MD、TF系列参数 >

      TF.LUT:主要利用difference与motion信息来决定temporal denoise的强度,difference与motion小很有机会是静态区,反之则很有机会是动态区,值域0 ~ 1023。

      Figure 17:TF.LUT

      MD.Thd_C:颜色的motion阀值控制,值域0 ~ 255。值越大NR3D越强,Motion低于阀值的地方将被判断为静止,建议不要设超过10。

      MD.Thd_Y:亮度的motion阀值控制,值域0 ~ 255。值越大NR3D越强,Motion低于阀值的地方将被判断为静止,建议不要设超过10。

      MD.Gain_C:颜色的motion scale控制,值域0 ~ 10230。值越大motion information越小,NR3D越强。

      MD.Gain_Y:亮度的motion scale控制,值域0 ~ 10230。值越大motion information越小,NR3D越强。

      MD.Thd_CbyY:颜色的motion阀值根据亮度控制,值域0 ~ 255。值越大NR3D越强。

      MD.Thd_YbyY:亮度的motion阀值根据亮度控制,值域0 ~ 255。值越大NR3D越强。

      MD.Gain_CbyY:颜色的motion scale根据亮度控制,值域0 ~ 255。值越大motion information越小,NR3D越强。可针对特定noise 较强的亮度作加强,或对拖影有疑虑的亮度作减弱。

      MD.Gain_YbyY:亮度的motion scale根据亮度控制,值域0 ~ 255。值越大motion information越小,NR3D越强。可针对特定noise较强的亮度作加强,或对拖影有疑虑的亮度作减弱。

      TF.Str_Y:亮度的NR3D强度,值域0 ~ 64。值越大NR3D越强。

      TF.Str_C:颜色的NR3D额外强度,值域0 ~ 64。值越大NR3D越强。

      M2S.LUT:动态区转静态区NR3D强度控制,值域0 ~ 31。值越大NR3D越弱,NRLuma越强。建议动到静曲线变化不要太陡,否则移动物体和静止区中间过渡区会不自然。

      < Denoise by motion系列参数 >

      Y.SF.BlendLUT:根据motion信息调整NRLuma的强度,值域0 ~ 16。由左至右代表动到静,值越大NRLuma强度越强。

      Y.SF.BlendOffset:决定写回3DNR参考帧,对于motion的部分,要补偿多少3DNR强度的控制,值域0 ~ 16。值越大,补偿的3DNR比例越多。此值效果比较不明显,效果主要由Y.SF.BlendLUT控制。

      MotHistDelayByDiff:Motion信息延迟时间,值域范围:0 ~ 7。只有在MotHistMapSel为1时有作用,横轴为当前帧和前一帧的motion信息差异,纵轴为motion信息往后级传的额外延迟时间,值越大则延迟越久,希望静态的motion信息有延迟,让运动过后的区域的motion信息持续久一些,在3DNR还未收敛前,让后级的2DNR能保持在较强的强度(动区通常强度较强)久一些。

      < Temporal Defect Removal 系列参数 >

      某些sensor有内建DPC,做不好可能会导致单点闪烁,进而影响3DNR动静判断,因此新增此功能。

      DeDotDiffOffset: 差值偏移量,值域范围:0 ~ 4095,值越大则移除比例越小,移除temporal defect的功能越弱,也较不容易影响动静判断。

      DeDotDiffShift:差值横移量,值域范围:0 ~ 7,值越大则移除比例越小,移除temporal defect的功能越弱,也较不容易影响动静判断。

      < NR3D基本系列参数 >

      DbgEn:Debug模式,值域范围:0 ~ 1。影像颜色越黑则代表越被判断成动区。使用前务必将AE停掉(也就是将AE State改为Pause)。

      WinSizeSel:用来判断动静的window size,值域范围:0 ~ 2,值越大则window越大,噪声估算越准确,但动区边缘越容易误判(该处为静止,但window过大导致周围动区也被计算进来)。

      MotHistMapSel:3DNR把motion信息向后级传的方式,值域范围:0 ~ 1,0代表直接依据当前帧和参考帧的差异,1代表多一个限制,在动到静的情况下,每帧motion信息至多变化1,也就是motion会变化的较慢。

      < NR3D Alpha Blending Refine 系列参数 >

      AREn:根据亮度与motion信息,限制NR3D强度,的开关,值域0 ~ 1。

      ARLumaTh:当Luma < LumaTh[0],则NR3D强度不变,当Luma > LumaTh[1]时,NR3D强度为0,值域0 ~ 255。

      ARMotTh:当motion < MotTh[0],则NR3D强度不变,当motion > MotTh[1]时,NR3D强度为0,值域0 ~ 255。

      < NR3D Purple False Color Compensation 系列参数 >

      当画面有做旋转时,开启此功能,来帮助NR3D判断紫边附近的motion,避免误判为动态而造成3dnr扰动。

      首先会以DiffTh、RatioConf、ContrastTh决定紫边的程度,若三种条件都认定为紫边,则可将紫边附近的motion,重新分配为较静止的状态。

      PREn:辅助NR3D判断紫边的motion开关。

      PRDiffTh:根据PFC补偿的结果,若该点PFC补偿 > PRDiffTh,则判断为紫边。值域0 ~ 4095,值越小,越容易判断为紫边。

      PRRatioConf:判断颜色是否与紫边相似。值域0 ~ 16,横轴为颜色相关性,越右边,越相似紫边,纵轴为紫边判断程度,值越大,越容易判断为紫边。

      PRContrastTh:判断对比程度,高对比度时,较有可能出现紫边。值域0 ~ 16,该区对比小于ContrastTh1,则不做处理,大于ContrastTh2,则判断为紫边。

      PRMotTh:若紫边程度高,会以下面设定,来重新决定motion信息,若不为紫边,则motion信息维持不变。设定MotTh1,将此程度以下的motion认为误判信息,所以motion会重新分配为0,代表静止,而大于MotTh2以上,代表正常的motion,则维持不动。

    • 调整步骤

      1. 首先针对静止画面调整NR3D强度,降低画面noise跳动的程度。

        调整NR3D强度,目标是让画面整体看起来安定。建议TF.Str设63,将MD.Gain_C与MD.Gain_Y增加至画面变安定即停止。若MD.Gain_C与MD.Gain_Y需要设很大才能让画面安定,可以适时增加MD.Thd_C与MD.Thd_Y,但建议不要超过10。

      2. 接着针对物体移动过后区域NR3D强度变化做调整。

        • 主要调整M2S.LUT。M2S.LUT曲线不要设太陡,否则物体移动过后区域由糊到清楚的转换边界会很明显且不自然。

        • 可以基于建议值来做微调,如果比较不希望看见残影则需要设大一点的值,此时物体移动过后区域的NRLuma会越强且维持越久,NR3D越弱,看起来比较扰动;相反的如果希望物体移动后区域清楚一些,能接受一些残影,则将值设小一些,扰动会比较小但可能会有颗粒noise跑出来。

        • 建议值:{24, 18, 11, 8, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4}

      3. 微调移动模糊与noise程度的平衡。

        • 调整Y.SF.BlendLUT,由左至右代表动态区到静态区域。将值慢慢加大至移动模糊与noise程度都能接受的程度。最后一个值建议固定在0才能维持静止画面的细节。建议同时搭配NRLuma的BlendRatio与FilterLevel做调整。

        • 针对移动过后的噪声,除了根据motion调整NR2D强度外,也可调整Y.SF.BlendOffset,针对motion来补偿一点NR3D,以降低噪声。且因为只会更新于NR3D的参考帧,所以不会影响到影像画面。

      4. 针对拖影严重的亮度,可利用MD.Gain_YbyY、MD.Gain_CbyY做微调。将对应亮度区域的值慢慢下降至拖影与noise都可接受的程度。

      5. 当gain越来越高,移动noise若都只靠NRLuma是不够的,此时可以修改TF.LUT,让曲线下降得更缓慢一些来增加移动区域NR3D的强度,但同时也须考虑拖影变严重的程度。最后一个值不用一定要设0,但若造成移动物体边缘出现粉红色拖影,可透过AREn的功能,限制较亮、较动的NR3D强度,以避免这种拖影发生。

    2.1.2. NR3D OFF

    由于有些IC为了节省成本没有DRAM,因此没有NR3D只能使用其他denoise,以下为建议调整方式。

    • 调整界面

      同2.1.1的调整界面

    • 参数说明

      同2.1.1的参数说明

    • 调整步骤

      1. 确认Iqfile是使用3dnr off的版本。

      2. NRLuma界面中,建议将Strength开到63(最大值),调整Kernel强度。

      3. Despike调整方法与3DNR on相同。

      4. 若还有需求,可以再调整剩下的denosie,调整方法与3DNR on相同。

    2.1.3. NRLuma_Adv

    • 调整界面

      于左侧选单点选Denoise_YNR,接着在右侧主画面可找到NRLuma_Adv界面。


      Figure 18:NRLuma_Adv调整界面

    • 参数说明

      DbgMode:Debug模式,值域范围:0 ~ 3,影像越亮代表越被判断成edge区,影像越暗则代表越被判断成non-edge区,这边只做Luma处理,影像颜色没有意义,1代表只有Level1 (L1),2代表只有Level2 (L2),3代表L1+L2。L2的debug模式有些不连续,属于正常现象,原因是Level2为区分显示会做down-sample处理,将缺少的点补0,再经过后级作用造成。

      EdegTh:Edge阀值,值域范围:0 ~ 8191,横轴为亮度,越右边越偏亮,前八格属于L1,后八格属于L2。可以搭配DbgMode调整,观察edge分布是否合理。

      SmoDeltaSft:Edge区去躁参数,与中心点差异的横移量,值域范围:0 ~ 9,值越大则去躁效果越强。与中心点差异会先经过SmoDeltaSft和SmoDeltaTh调整,再去查SmoDeltaLut。

      SmoDeltaTh:Edge区去躁参数,与中心点差异的阀值,值域范围:0 ~ 1023,横轴为亮度,越右边越偏亮,前八格属于L1,后八格属于L2,纵轴为与中心点差异的阀值,若差异大于此阀值则权重为0,此功能会造成不连续,建议不使用此功能,也就是全部设最大值1023,若有需求,请直接调整SmoDeltaLut即可。

      SmoDeltaLut:Edge区去躁参数,混合权重表,值域范围:0 ~ 63,横轴为与中心点的差异,纵轴为权重,正常情况下,差异越小则权重设越大。

      SmoByMot:Edge区去躁参数,依据motion去混合mean filter的结果,值域范围:0 ~ 64,横轴为motion,越右边越偏静,纵轴为混合mean filter结果的比例,由于mean filter过强,因此不建议设太大。

      Strength:整体强度,值域范围:0 ~ 256,横轴分别为L1和L2,纵轴为强度,值越大则NR越强。最终强度是以Strength为基础,再加上StrengthByHue和StrengthBySat和StrengthByMot的控制,因此建议不要将Strength设到最强,否则StrengthByHue和StrengthBySat和StrengthByMot就失效了。

      StrengthByHue: 依据hue调整强度,值域范围:0 ~ 64,横轴为hue(同HSV),实际效果受到StrengthBySat影响。

      StrengthBySat:依据saturation调整强度,值域范围:0 ~ 127,当saturation小于StrengthBySat[0],则StrengthByHue失效,也就是强度的调整不受到饱和度太低的hue影响,当saturation大于StrengthBySat[1],则完全依照StrengthByHue调整强度,过度区则线性变化。

      StrengthByMot:依据motion调整强度,值域范围:0 ~ 64,横轴为motion,越右边越偏静。

    • 调整步骤

      1. 调整EdgeTh来区分edge区和non-edge区,可借由debug模式以方便观察結果。

      2. 先将NRLuma_Adv开到最强(Strength和SmoDeltaLut都设最大),观察极限,若觉得NR效果不明显,只能调弱Sharpness,或是调强NRLuma,或其他NR模块。

      3. 调整edge区去躁参数,建议先使用默认值为基础,直接调整SmoDeltaSft即可,若有需求再调整SmoDeltaLut。

      4. 若有需求,会依据hue或saturation或motion调整,则适当降弱Strength,再调整StrengthByHue或StrengthBySat或StrengthByMot。

    2.1.4. NRChroma

    压抑画面中颜色的噪声,此模块为简单的模块,色溢会较为严重,建议不要开太强。

    • 调整界面

      于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma界面。

      Figure 19:NRChroma调整界面

    • 参数说明

      MatchRatio: 符合比例阀值,愈大愈强,值域0 ~ 31。

      UvTh: U/V 噪声阀值,愈大愈强,值域0 ~ 256。

      StrengthByCEdge: 依据color edge控制NRChroma强度,愈大愈强,值域0 ~ 511。

    • 调整步骤

      1. 调整MatchRatio和UvTh,可以观测到color noise会散开,过强会有色彩溢出的现象,调整到可接受的范围。

      2. 降低StrengthByCEdge,进一步压抑有色彩溢出的部分。

    2.1.5. NRChroma_Adv

    压抑画面中颜色的噪声。

    • 调整界面

      于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma_Adv界面。

      Figure 20:NRChroma_Adv调整界面

    • 参数说明

      StrengthByY:针对不同亮度,给予不同NR强度的控制,横轴越右边代表亮度越大。值域0 ~ 255,值越大越强。

      StrengthByYEdge:使用Luma来侦测Edge程度,针对不同Edge,给予不同NR强度的控制,横轴越右边代表Edge越大。值域0 ~ 63,值越大越强。

      StrengthByCEdge:使用Chroma来侦测Edge程度,针对不同Edge,给予不同NR强度的控制,横轴越右边代表Edge越大。值域0 ~ 255,值越大越强。

      MaxStrength:控制Y/C差异小的区域,NR的强度。值域0 ~ 255,值越大越强。

      StrengthByMot:依据motion调整NR的强度,横轴为motion,越右边越偏静。值域0 ~ 63,值越大越强。

      MotionClip:针对移动区域,给予更多NR强度。值域0 ~ 255,值越大越强。

      MotionColorReduce:针对移动区域,可降低饱和度。值域0 ~ 255,值越大饱和度降越多。

      MotionColorRecover:针对移动区域,可根据MotionColorReduce所降低的饱和度,再把gain乘回来。值域0 ~ 255,值越大饱和度回复越多。

      PreStrength:针对Chroma先做简单的去躁处理。值域0 ~ 128,值越大越强。

    • 调整步骤

      1. MotionClip先设定为0。

      2. 观察静态区,调整MaxStrength和StrengthByMot,将NR调整到一个可接受的色躁范围。

      3. 观察动态区,调整MotionClip,将移动的部分,基于步骤一的NR强度,做加强的动作,若调整MotionClip程度不够强,可返回步骤一做强度的加强。

      4. 如有需要,可调整MotionColorReduce,针对移动的部分,做饱和度的压抑,這个动作可帮忙NRChroma_Adv更容易的移除色躁。若不希望影像看到移动区的饱和有下降,可调整MotionColorRecover将移动区的饱和再拉回来。

    2.1.6. NRChroma_Pre

    压抑画面中颜色的噪声。

    • 调整界面

      于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma_Pre界面。

      Figure 21:NRChroma_Pre调整界面

    • 参数说明

      DbgEn:Debug模式,值域范围:0 ~ 1,使用前务必将Strength设为最大值256,影像的U/V信道值越小则代表越使用mean filter的结果,U/V通道值越大则代表越使用median filter的结果。

      Strength:整体强度,值域范围:0 ~ 256,值越大则NR效果越强。

      MotionEnhance:动态区域加强程度,值域范围:0 ~ 127,第一格为Y信道加强幅度,第二格为U/V信道加强幅度,值越大则动态区域NR效果越强。

      MaskGenTh:U/V通道阀值,用于产生mask,并在此mask内做NR,值域范围:0 ~ 1023,值越大则mask越大,NR效果越强。

      MeanFilterTh:Y/U/V通道阀值,用于控制mean filter强度,值域范围:0 ~ 1023,第一格为Y通道阀值,第二格为U/V通道阀值,只有当mask内的差值小于此阀值才会被纳入做mean filter,值越大则NR效果越强。

      MedianFilterTh:Y/U/V通道阀值,用于控制median filter强度,值域范围:0 ~ 1023,第一格为Y通道阀值,第二格为U/V通道阀值,只有当mask内的差值小于此阀值才会被纳入做median filter,值越大则NR效果越强。

      BlendTh:混合阀值,值域范围:0 ~ 1023,当mask内的U/V通道最大差值小于BlendTh,则使用mean filter的结果,值越大则越偏向使用mean filter的结果。

      BlendGap:混合区间,值域范围:0 ~ 15,当mask内的U/V通道最大差值大于BlendTh+2^BlendGap,则使用median filter的结果,值越大则越偏向使用mean filter的结果。

    • 调整步骤

      1. 将Strength设最大。

      2. 将BlendTh和BlendGap都设0,观察mean filter的效果,如有需求再调整MeanFilterTh和MaskGenTh。

      3. 将BlendTh设1023,观察median filter的效果,如有需求再调整MedianFilterTh和MaskGenTh。

      4. 调整BlendTh和BlendGap,适当分配mean filter和median filter范围,可搭配Debug模式以方便观察。

      5. 观察动态区色噪,再微调MotionEnhance。

      6. 调整Strength,减轻色溢。

    2.2. Sharpness调整

    调整锐化强度调整,例如不同亮度的锐化强度,黑边白边的锐化强度,动静态的锐化强度等等。

    2.2.1. Sharpness

    • 调整界面

      于左侧选单点选Sharpness,接着在右侧主画面可找到Sharpness界面。

      Figure 22:Sharpness调整界面

      Figure 23:Sharpness_EX调整界面

    • 参数说明

      SharpnessUD:无向性edge的强度,用于提高发丝和草地等细小纹理清晰度,值域范围:0 ~ 127,横轴依序为高/中/中低频,纵轴为无向性edge的强度增益,值越大则edge越强。

      SharpnessD:方向性edge的强度,用于增强图像边缘,但调的太强会导致锯齿状,值域范围:0 ~ 127,横轴依序为高/中/中低频,纵轴为方向性edge的强度增益,值越大则edge越强。

      PreCorUD:无向性edge做coring,值域范围:0 ~ 63,横轴依序为高/中/中低频,纵轴为无向性edge的coring值,值越大则edge越弱。[名词解释] Coring(简称Cor):单纯做同减的动作。

      PreCorD:方向性edge做coring,值域范围:0 ~ 63,横轴依序为高/中/中低频,纵轴为方向性edge的coring值,值越大则edge越弱。

      Figure 24:Sharpness频率/向性混合流程

      MidRatioUDByMot: 依据motion调整无向性edge的中频比例,值域范围:0 ~ 256,横轴为motion,越右边越偏静,纵轴为无向性edge中频和中低频混合时,中频的比例,值越大越偏中频。

      HighRatioUDByMot: 依据motion调整无向性edge的高频比例,值域范围:0 ~ 256,横轴为motion,越右边越偏静,纵轴为无向性edge高频和经过MidRatioUDByMot的结果混合时,高频的比例,值越大越偏高频。

      MidRatioDByMot:依据motion调整方向性edge的中低频比例,值域范围:0 ~ 256,横轴为motion,越右边越偏静,纵轴为方向性edge中频和中低频混合时,中频的比例,值越大越偏中频。

      HighRatioDByMot:依据motion调整方向性edge的高频比例,值域范围:0 ~ 256,横轴为motion,越右边越偏静,纵轴为方向性edge高频和经过MidRatioDByMot的结果混合时,高频的比例,值越大越偏高频。

      HighRatioUDByState:无向性edge的高频混合比例,值域范围:0 ~ 256,横轴依序为单纯边缘区/复杂区/平坦区,平坦区是从NRLuma_Adv拿过来的信息,非平坦区的混合比例会依据state来混合单纯边缘区和复杂区的比例,纵轴为无向性edge经过HighRatioUDByMot的结果和经过MidRatioUDByMot的结果混合时,经过HighRatioUDByMot的结果的比例,值越大越偏高频。[名词解释] State:使用gradient计算得到的分数,来判断单纯边缘区和复杂区,值越小则越偏向单纯边缘区。

      HighRatioDByState:方向性edge的高频混合比例,值域范围:0 ~ 256,横轴依序为单纯边缘区/复杂区/平坦区,平坦区是从NRLuma_Adv拿过来的信息,非平坦区的混合比例会依据state来混合单纯边缘区和复杂区的比例,纵轴为方向性edge经过HighRatioDByMot的结果和经过MidRatioDByMot的结果混合时,经过HighRatioDByMot的结果的比例,值越大越偏高频。

      DetailGainUDByMot:依据motion调整无向性edge的增益,值域范围:0 ~ 255,横轴为motion,越右边越偏静,纵轴为无向性edge的增益,值越小则无向性edge越弱。此增益只会作用在NRLuma_Adv侦测为平坦区的地方,所以建议先调整NRLuma_Adv的EdgeTh,再利用此项降低平坦区edge,让平坦区更平顺。

      DirRatioByState: 方向性edge的混合比例,值域范围:0 ~ 256,横轴越左边越偏单纯边缘区,越右边越偏复杂区/平坦区,纵轴为混合无向/方向性edge时,方向性edge的比例,值越大则越偏向方向性edge。方向性的优点为连续性较佳,缺点为细腻度较差,容易造成奇怪直横线,且会有边缘闪动的情况(小edge硬要判断成有方向,再加上噪声影响,容易误判方向,导致方向性不固定),因此建议只有在单纯边缘区使用方向性edge。

      StdAdjByMot:依据motion调整标准偏差的增益,值域范围:0 ~ 63,横轴为motion,越右边越偏静,纵轴为调整标准偏差的增益(16 = 1x),值越大则标准偏差越大。

      StdAdjByY:依据亮度调整标准偏差的增益,值域范围:0 ~ 255,横轴为亮度,越右边越偏亮,纵轴为调整标准偏差的增益(64 = 1x),值越大则标准偏差越大。

      GainByStd:依据标准偏差调整整体增益,值域范围:0 ~ 255,横轴为经过StdAdjByMot和StdAdjByY处理过的标准偏差,越右边标准偏差越大,纵轴为整体增益,值越大则edge越强。通常平坦区的标准偏差较小,因此可以降低标准偏差小的区域的edge,让平坦区更平顺。也可以用来降低运动的edge,若将StdAdjByMot的前几格降低,则GainByStd就会查到前几格,使得运动区降低edge。总共有七个节点,如有需要改变横轴节点,可调整GainByStdSft。

      CorByY:依据亮度调整coring,值域范围:0 ~ 255,横轴为亮度,越右边越偏亮,纵轴为coring值,值越大edge越弱。

      CorByMot:依据motion调整coring的增益,值域范围:0 ~ 255,横轴为motion,越右边越偏静,纵轴为coring的增益(16 = 1x),值越大edge越弱。

      OverShootGain:白边的强度调整,值域范围:0 ~ 255,值越大则白边强度越强。

      UnderShootGain: 黑边的强度调整,值域范围:0 ~ 255,值大强则黑边强度越强。

      Figure 25:OverShootGain & UnderShootGain

      SclByY:依据亮度调整整体增益,值域范围:0 ~ 255,横轴为亮度,越右边越偏亮,纵轴为edge增益(64 = 1x),值越大则edge越强。

      EdgeKillLut:根据edge强度调整edge强度,值域范围:0 ~ 1023,横轴为输入edge,纵轴为输出edge,值越大则edge越强。通常平坦区的edge强度较小,因此可以把小edge调的更小,让平坦区更平顺。总共有七个节点,如有需要改变横轴节点,可调整EdgeKillLutSft。

      Figure 26:EdgeKillLut

      OverShootLimit: 依据周围最亮点做调整,值域范围:0 ~ 1023,设0则edge上限为周围最亮点的Y值,也就是不会overshoot。

      UnderShootLimit:依据周围最暗点做调整,值域范围:0 ~ 1023,设0则edge下限为周围最暗点的Y值,也就是不会undershoot。

      Figure 27:OverShootLimit & UnderShootLimt

      GainByMot:依据motion调整最终edge强度增益,值域范围:0 ~ 255,横轴为motion,越右边越偏静,纵轴为edge增益(128 = 1x),值越大则edge越强。

      < Sharpness_EX >

      DbgEn:Debug模式,值域范围:0 ~ 1,灰色代表没上edge,白/黑色分别代表白/黑边。

      SmoNRFilterSel: NR filter种类,值域范围:0 ~ 1,0代表mean filter,1代表median filter。

      SmoDiffThByY:依据亮度调整差异阀值,值域范围:0 ~ 1023,另一种NR方式,当周围点与中心点的差值小于此值才会被纳入做处理,依据差值来计算混合权重,差异越小则混合权重越大。

      SmoBlendByStd:依据标准偏差调整混合比例,值域范围:0 ~ 16,横轴为标准偏差,纵轴为混合经过SmoNRFilterSel的结果和经过SmoDiffThByY的结果时,经过SmoNRFilterSel的结果的比例,值越大则越偏向经过SmoNRFilterSel的结果。

      SmoBlendByMot:依据motion调整混合比例,值域范围:0 ~ 63,横轴为motion,越右边越偏静,纵轴为混合经过SmoNRFilterSel的结果和经过SmoBlendByStd的结果时,经过SmoNRFilterSel的结果的比例,值越大则越偏向经过SmoNRFilterSel的结果。

      SblLut:依据经过sobel filter的结果调整方向性edge强度,值域范围:0 ~ 127,横轴为经过sobel filter的结果,越右边则sobel的结果越大,纵轴为方向性edge强度增益(64 = 1x),值越大则方向性edge越强。

      EdgeLabelSel:由NRLuma_Adv传过来的edge信息的种类,值域范围:0 ~ 1,0代表L1,1代表L2。NRLuma_Adv传过来的edge信息会影响DetailGainUDByMot作用范围,通常在iso高的情况会使用L2的结果。

      GainByStdSft:GainByStd的横轴节点,值域范围:0 ~ 15,有七个断点,x轴依序为0、2GainByStdSft[0]、2GainByStdSft[0]+2GainByStdSft[1]、2GainByStdSft[0]+2GainByStdSft[1]+2GainByStdSft[2] ...,y轴依序为GainByStd[0]、GainByStd[1]、GainByStd[2] ...。如需调整,建议用excel画出原本的曲线,调整GainByStdSft将想要细调的区间切细后,找到对应的GainByStd,确认效果和先前一致后,再调整GainByStd。

      EdgeKillLutSft:EdgeKillLut的横轴节点,值域范围:0 ~ 15,有七个断点,x轴依序为0、2EdgeKillLutSft[0]、2EdgeKillLutSft[0]+2EdgeKillLutSft[1]、2EdgeKillLutSft[0]+2EdgeKillLutSft[1]+2EdgeKillLutSft[2] ...,y轴依序为EdgeKillLut[0]、EdgeKillLut[1]、EdgeKillLut[2] ...。如需调整,建议用excel画出原本的曲线,调整EdgeKillLutSft将想要细调的区间切细后,找到对应的EdgeKillLut,确认效果和先前一致后,再调整EdgeKillLut。

      StrengthByHue: 根据hue调整edge强度,值域范围:0 ~ 255,横轴为hue(同HSV),纵轴为edge增益(64 = 1x),值越大则edge越强,实际效果受到StrengthBySat影响。

      StrengthBySat:根据saturation调整edge强度,值域范围:0 ~ 255,横轴为saturation,当saturation小于StrengthBySat[0],则StrengthByHue失效,也就是edge强度的调整不受到饱和度太低的hue影响,当saturation大于StrengthBySat[1],则完全依据StrengthByHue调整edge强度,过度区则线性变化。

    • 调整步骤

      1. 观察整体edge强度,初步调整OverShootGain和UnderShootGain到适当强度即可。

      2. 总共有6种不同的edge filter,无向性edge和方向性edge分别都有高/中/中低频,可以先调整混合方式到完全用某一种filter,并观察每种filter的效果,可以搭配debug mode以方便观察。

      3. 调整无向性edge的频段。

        • 调整MidRatioUDByMot和HighRatioUDByMot和HighRatioUDByState来权衡高低频混合方式。

        • 调整SharpnessUD控制各种频段的强度,或是调整PreCorUD控制各种频段的coring值。

      4. 调整方向性edge的频段。

        • 调整MidRatioDByMot和HighRatioDByMot和HighRatioDByState来权衡高低频混合方式。

        • 调整SharpnessD控制各种频段的强度,或是调整PreCorD控制各种频段的coring值。

      5. 调整DirRatioByState来权衡无向性edge和方向性edge的混合方式。

      6. 反复调整上述三步骤。可以将SharpnessUD和SharpnessD的其中五个值设为0,就能得知各区域被分配到哪些向性/频段,若觉得不合理,再调整混合方式。

      7. 依据不同条件来调整edge,常用于降低平坦区的edge,让平坦区更平顺。有很多种方式都可以达成,但每种方式都会牺牲细节,因此建议不要只用单一方式,否则结果可能只适合某些特定场景。

        • 调整DetailGainByMot,可以让NRLumaAdv判断为平坦区的区域降低无向性edge,建议动静暂时调的一样。

        • 调整GainByStd,通常平坦区的标准偏差较小,因此可以降低标准偏差小的区域的edge。

        • 调整EdgeKillLut,通常平坦区的edge强度较小,因此可以把小edge调的更小。

        • 调整YEE内的NR,建议将SmoBlendByStd和SmoBlendByMot都设0,调整SmoDiffThByY即可,若有需求再混一些mean/median filter的结果即可。

        • 调整coring相关参数,包括PreCorUD和PreCorD和CorByY。

      8. 若有需求想依据亮度调整,可以调整SclByY和StdAdjByY和CorByY。

      9. 若有需求想限制overshoot或undershoot edge,可以调整OverShootLimit和UnderShootLimit。

      10. 若有需求想依据hue调整edge强度,可以调整StrengthByHue,例如降低肤色edge来减轻人移动的躁声,或是增加绿色edge来强化树的细节。

      11. 调整运动噪声

        • 依据motion调降edge,建议以调整GainByMot和StdAdjByMot为主。

        • 亦可尝试调整CorByMot和DetailGainByMot和SmoBlendByMot。

        • 建议搭配3DNR/NRLuma/NRLuma_Adv反复调整。

    3. WDR

    Wide Dynamic Range(WDR)用于增宽动态范围,让同一个影像画面中,可以同时分办出亮部和暗部的细节。

    WDR对暗处亮度的提升非常明显,可以提升暗处的细节,但是在调试中会影响到亮度维度和对比度维度,过强的WDR强度也会拉出噪声。另外,WDR会对高动态范围进行压缩处理(HDR合成的图像的动态范围一般很大),让高动态的场景可以在低动态范围的屏幕上不会显示异常。

    3.1. WDR

    使用block base local histogram equalization的方式,加强区域性的影像动态范围。

    • 调整界面

      于左侧选单点选WDR即会出现WDR接口。

      Figure 28:WDR调整界面

    • 参数说明

      BoxNum:依sensor长宽比例,提供多种box组合,值域范围:1 ~ 4,可依据场景要关注的物体尺度大小进行调整,值越大则box越多,每个box越小,越适合关注小对象,不可by iso变动。

      AutoDetailEnhance:细节加强控制方式,值域范围:0 ~ 1,0为手动控制,1为自动控制。

      ManualDetailEnhance:手动控制细节加强程度,值域范围:0 ~ 255,值越大则细节加强越多。只有在AutoDetailEnhance为0时有作用。

      DarkToneEnhance: 控制global tone mapping,提供下列16条curve可供选择,值域范围:0 ~ 15。数字越大则暗处会拉越亮。(HDR mode和Linear mode的16条curve并不相同,HDR中0 ~ 6是一种拉亮模式,7 ~ 15是第二种拉亮模式)。

      Figure 29:预设的16条Global tone mapping(Linear)

      Figure 30:预设的16条Global tone mapping(HDR)

      WDRStrByY:依据亮度控制WDR强度,值域范围:0 ~ 255,横轴为亮度,越右边越亮,纵轴为WDR强度,值越大则WDR越强。

      Strength:整体强度,值域范围:0 ~ 255,值越大则WDR越强。

      DarkLimit:限制WDR在暗处作用的强度,值域范围:0 ~ 255,值越大则暗处WDR越弱。

      BrightLimit:限制WDR在亮处作用的强度,值域范围:0 ~ 255,值越大则亮处WDR越弱。

      StrengthByOpsCnt:依据box内反对其local WDR行为的个数,来降低local WDR强度的比例,值域范围:0 ~ 4095,横轴为反对个数,越右边则反对力量越强,纵轴为降低强度的比例(4096 = 1x),值越小则local WDR越弱,可以减轻local WDR造成的亮度反转,亦可以减轻local WDR造成某些小区域过暗或过亮的问题。

      DeSatSrc:去色彩功能的亮度来源,值域范围:0 ~ 2,0代表过完Curve1的亮度,1代表过完global tone的亮度,2代表未经过WDR处理前的亮度。

      DeSatLut:依据亮度调整去色彩功能的程度,值域范围:0 ~ 255,横轴为亮度,越右边越偏亮,纵轴为色彩增益(128 = 1x),值越小则去色彩越强,影像越偏灰。

      SatUp:控制WDR前后的饱和度强度,若是WDR前后亮度为下降则利用此曲线查表提升饱和度,值域范围:0 ~ 1023。

      SatDn:控制WDR前后的饱和度强度,若是WDR前后亮度为提升则利用此曲线查表压抑饱和度,值域范围:0 ~ 1023。

    • 调整步骤

      1. 建议先直接将WDR enable,观察预设效果是否足够,优先根据场景选择BoxNum,通常关注细小细节可以加大BoxNum值,但是如果需要兼容全场景,建议BoxNum选择2或者3。

      2. 如强度太强或太弱,可直接简单调整Strength,通常不易太大,特别是低照度场景,降低WDR强度,后面通过RGBgamma或者Ygamma去提升亮度而减弱拉出来的噪声。

      3. 如较关注的问题为暗处拉亮效果,可再搭配调整DarkToneEnhance。

      4. 其余再针对各別亮度的强度进一步调整WDRStrByY,建议左边的暗处强度减弱,这样不容易拉出噪声,同时不会损失对比度。通常暗部和亮部的强度会减弱来保证对比度。注意,gamma、defog等模块都会影响到对比度。

      5. DarkLimit或BrightLimit,针对一些特殊场景,希望暗处不要拉亮或者亮处不要拉亮,可调试这两个参数,但是注意,有效值(245~255此区间效果才明显)的影响较大,调试的时候主要要微调。

      6. 若有因为WDR太强而导致不连续或小区块过暗/过亮,可以调整StrengthByOpsCnt。

      7. 若有因为WDR太强而导致高增益处出现色偏,可以调整de-saturation功能。

    3.2. WDRCurve

    WDR进阶参数。

    • 调整界面

      于左侧选单点选WDRCurve即会出现WDRCurveFull接口。

      Figure 31:WDRCurveFull调整界面

    • 参数说明

      GlobalToneSft:Global tone的横轴节点,值域范围:3 ~ 15,有32个节点,x轴依序为0、2GlobalToneSft[0]、2GlobalToneSft[0]+2GlobalToneSft[1]、2GlobalToneSft[0]+2GlobalToneSft[1]+2GlobalToneSft[2] ...,y轴依序为GlobalToneLut[0]、GlobalToneLut[1]、GlobalToneLut[2] ...,此外,y轴的最后一个节点有特殊设计,若x轴的最后一个节点小于4096,则y轴的最后一个节点为GlobalToneLut[32],若x轴的最后一个节点大于4096,则y轴的最后一个节点为GlobalToneLut[31]+GlobalToneLut[32],主要是为了让global tone能完全使用所有动态区间,也就是解决最后一个节点不一定刚好落在(x, y) = (4095, 4095)的问题,假设x轴的最后一个节点超过4095,那y轴也要超过4095,才能让此节点和前一个节点的线段刚好通过(x, y) = (4095, 4095)。如需调整,建议用excel画出原本的曲线,调整GlobalToneSft将想要细调的区间切细后,找到对应的GlobalToneLut,确认效果和先前一致后,再调整GlobalToneLut。

      GlobalToneLut:Global tone的纵轴节点,值域范围:0 ~ 4095。功能和DarkToneEnhance相同。

      Curve1:后级亮度调整曲线,值域范围:0 ~ 1023。横轴为输入亮度,纵轴为输出亮度,值越大则最终影像越亮。

    • 调整步骤

      1. 调整global tone。

      2. 调整Curve1,来达到想要的效果。

    3.3. Defog

    去雾功能,达到更好多对比感。

    • 调整界面

      于左侧选单点选WDR即会出现Defog接口。

      Figure 32:Defog调整界面

    • 参数说明

      Strength:设定对比度、亮度、灰度的可变强度数值,预设为50。

    • 调整步骤

      调整Strength,来达到更好的对比感。建议作为去雾功能接口,优先使用WDR。

    4. YCLPF

    针对Sensor影像,Interlace的格式输入,所造成的边缘锯齿、颜色跳动等问题,可使用此模块来减缓现象。

    • 调整界面

      于左侧选单点选YCLPF即会出现YCLPF接口。

      Figure 33:YCLPF调整界面

    • 参数说明

      Enable :YCLPF功能开关。

      Y_lpf_Enable:针对Y(Luma亮度)的滤波开关。

      C_lpf_Enable:针对C(Chroma彩度)的滤波开关。

      Figure 34:YCLPF调整前

      Figure 35:YCLPF调整后

    5. DUMMY

    Dummy API是一个默认的接口,若有新增功能,都会透过此接口,以避免不断新增接口,或是影响原本的结构体。默认值皆为-1,则代表bypass此功能。若有开启Dummy API,保存bin档的时候,务必勾选InFile,方能保存参数。

    5.1. Dummy

    支持by iso调整。

    • 调整界面

      于左侧选单点选Dummy即会出现Dummy界面。

      Figure 36:Dummy调整界面

    • 参数说明

      Dummy0:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy1:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy2:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy3:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy4:目前没作用,预设为-1,值域范围:-1 ~ 255。

    5.2. Dummy_EX

    不支持by iso调整。

    • 调整界面

      于左侧选单点选Dummy即会出现Dummy_EX界面。

      Figure 37:Dummy_EX调整界面

    • 参数说明

      Dummy0:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy1:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy2:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy3:目前没作用,预设为-1,值域范围:-1 ~ 255。

      Dummy4:目前没作用,预设为-1,值域范围:-1 ~ 255。

    6. TEMPERATURE SETTING

    当chip温度改变,IQ也可以做相对应调整,达到更好的效果。

    6.1. Temperature

    设定温度节点和对应的IQ设定。

    • 调整界面

      于左侧选单点选Temperature即会出现Temperature界面。

      Figure 38:Temperature调整界面

    • 参数说明

      TemperatureLut:温度节点,支持16个节点,值域范围:0 ~ 255。

      ObcOffset:OBC偏移量,会迭加到原本的OBC,值越大则OBC越大,预设为0。

      DynamicDPRatio:DynamicDP强度变化比例,会作用到DPCTH,值越大则NR效果越强,预设为50。

      CrosstalkRatio:Crosstalk强度变化比例,会乘到Strength,值越大则NR效果越强,预设为50。

      NRDeSpikeRatio:NRDeSpike强度变化比例,会乘到BlendRatio,值越大则NR效果越强,预设为50。

      NR3DRatio:NR3D强度变化比例,依序会乘到MD.Thd和MD.Gain,值越大则NR效果越强,预设为50。

      NRLumaRatio:NRLuma强度变化比例,会乘到Strength,值越大则NR效果越强,预设为50。

      SharpnessRatio:Sharpness强度变化比例,依序会乘到OverShootGain和UnderShootGain,值越大则越锐利,预设为50。

      SaturationRatio:Saturation强度变化比例,会乘到AllStar,值越大则越饱和,预设为50。

      ColorToneRatio:ColorTone强度变化比例,依序对应到R/G/B,会作用到CCM,值越大则越饱和,预设为50。

    6.2. Temperature Info

    获取当前chip温度。

    • 调整界面

      于左侧选单点选Temperature即会出现TemperatureInfo界面。

      Figure 39:TemperatureInfo调整界面

    • 参数说明

      Temperature:获取当前chip温度,只读。

    7. COLORTOGRAY

    当IR-Cut filter打开颜色会变异常,因此通常会将画面由彩色转为灰阶。

    • 调整界面

      于左侧选单点选ColorToGray即会出现ColorToGray接口。

      Figure 40:ColorToGray调整界面

    • 参数说明

      Enable :彩转灰功能开关,相当于将Saturation设为0。

    8. IQ TOOL接口联机功能操作

    8.1. IQ Tool接口联机功能操作步骤

    1. 设定EVB网络功能,在终端机输入下列指令:

      #ifconfig eth0 hw ether 00:xx:xx:00:00:01
      
      #ifconfig eth0 upwang
      
      #udhcpc
      
      #mixer -n 1 -q
      
      其中-q表示开启 iqserver,IQ Tool才可以联机。
      
    2. 选择产品类型:1. IP Camera;2. Car Camera

    3. 输入EVB的IP地址

    4. 点击Connection图标连线即可以开始使用IQ Tool调整影像的参数,设定步骤如Figure 41所示。

      Figure 41:IQ Tool接口联机设定

    9. IQ TOOL接口功能说明

    9.1. IQ Tool界面

    IQ Tool接口的左侧红色虚线框内是功能树状结构,以Figure 42为例,每一个树状节点都是一个API集合。点选左方节点后会动态产生右方页面,点选左方AE节点后在右方动态产生该节点下的API:ManualExposure,可在右方接口中对API进行实际调值操作。

    Figure 42:IQ Tool功能树形图

    9.2. 参数调校

    不同的API有不同种类的调参数功能,如填入数值、下拉选单、取值、窗体建立,根据各个API的初始设定,有些可以Read和Write,有些只能Read。

    调校参数类型:

    1. 数值:可透过以下三种方式修改值

      • 点选上下箭头调值

      • 直接在栏框内填值

      • 左右移动滚动条调整值

      数值类型会设定范围,根据不同的API初始设定Min以及Max值。以API为ManualExposure的情况下为例,FNx10最小值是10最大值是220。如果填小于10则会自动跳回10,如果填大于220则会自动跳回220,如Figure 43。

      Figure 43:数值功能示意图

    2. 下拉选单:点击箭头后会出现下拉选单,即可点选不同的功能,以API AE – Flicker为例(如Figure 44),Enable下拉选单可以选择Disable、60Hz或是50Hz。

      Figure 44:下拉选单功能示意图

    3. 读值:栏框内的值read only,不可以write,以API AWBInfo为例(如Figure 45),可以读取WB_Rgain栏框内的值2130,但不可以write。

      Figure 45:读值显示于字段示意图

    4. 表格:页面上有一个按钮,如Figure 46所看到的Edit Table按钮。

      Figure 46:点选Edit Table按钮可以弹出表格窗口接口

      点选按钮以后,弹出表格窗口,如Figure 47窗口内有表格,点选Read按钮以后可以读取板子内的值,点选Write按钮,可将值写入板子。

      Figure 47:表格窗口接口示意图

      若是表格Read only,API设定不允許寫入板子则只会显示出Read button(如Figure 48)。

      Figure 48:Read only表格窗口示意图

    9.3. 读写数据

    可以读写所有API集合的数据,也可以读写目前页面所有的API资料,如Figure 49目前页面API为AE时,此时如果按下右上方的Read Page则会读取目前AE页面的所有data,如果按下右上方的Write Page,则会写入data到AE页面里。但是如果按下上方R ALL键则会读取所有API集合不只是AE的所有data,然后按下W ALL键则会写入data到所有API页面里,除了API集合为Gamma/Calibration的情况,其余的API皆会Auto Write data,Gamma必须自己手动点选Write Page 才会存入资料。小图示的详细说明参阅Table 1。

    Figure 49:读写数据接口示意图

    Table 1:读写数据图标详细说明

    图示 功能 功能说明
    读取所有API集合页面的数据 按下R ALL按钮,即可读取所有API集合页面的数据。
    写入所有的数据到每个API集合页面 按下W ALL按钮,即可写入所有API集合页面(不包括Calibration)的数据。
    读取目前页面资料 按下Read Page按钮,即可读取目前页面所有的API数据。
    将目前页面的资料写入到API 按下Write Page按钮,即可写入数据到目前页面所有的API。
    实时的将页面的数据写入到API 选中时,即开启AutoWrite功能。

    9.4. 保存Raw/YUV/JPG格式的图像

    连接上板子以后,可以透过点选红色虚线标注的按钮,获取图像的四种格式,如Figure 50。

    Figure 50:保存图像按钮接口示意图

    开始抓图像后会产生一个新的窗口显示进度,抓取成功会在下方显示讯息,如Figure 51。下方会显示图像保存路径,默认保存在程序所在的目录下的./Image中。

    Figure 51:保存图像成功示意图

    9.5. 新建、载入、保存页面参数

    使用IQ Tool调整的过程中可以随时保存页面参数到指定路径中,也可以加载已经保存的参数档,如Figure 52。

    Figure 52:新建、载入、保存页面参数示意图

    IQ Tool有提供自动存Bin File的功能,参数单位为分钟,0代表不自动储存,会储存在CvtXml这个文件夹下,如Figure 53,也会显示剩几秒就会存一次档,但如果操作期间有手动存,秒数会重来,如Figure 54。

    Figure 53:自动储存Bin File示意图

    Figure 54:显示距离下次存Bin File剩余时间

    存Apibin可存不需Api的功能,只要把相对应的InFile取消即可。

    Figure 55:InFile功能

    若遇到InFile是反白(如Figure 56),无法选取时,有需要将改API存进Apibin时,可将Api.xml中该API的FileMode改为W(如Figure 57)。

    Figure 56:InFile反白示意图

    Figure 57:Api.xml修改FileMode示意图

    1. 保存参数有两种格式,分别是Xml和Bin。

      • Xml格式

        Xml主要用于保存工具的GUI接口(包含接口参数数值)。

      • Bin格式

        Bin只保存API参数,可以透过在应用层调用MI_ISP_API_CmdLoadBinFile(MI_U32 Channel, char* filepath, MI_U32 user_key)自动加载API参数。

        Magic Key可以用来验证bin档是否与设备配对,在Setting中设置。

        在bin的API参数之后会再附加相对应串口的Xml,为了达到Xml与API参数可以互相匹配的目的。

    2. 加载参数有三种格式,分别是Xml、Bin和Bin xml。

      • Xml

        Xml用于加载工具的GUI接口(包含接口参数)。

      • Bin

        Bin用于载入API参数。

      • Bin Xml

        Bin Xml用于加载API参数和附加相对应串口的Xml。

    9.6. Gamma调值

    1. 点选Gamma树状节点,即在右方产生Gamma调值介面,如Figure 58。

      Figure 58:Gamma调值界面

    2. Gamma 功能介面說明,参考Figure 59。

      Figure 59:Gamma功能接口说明

      Figure 60:Gamma存、读档格式示意图

    3. Gamma 功能介面详细说明,如Table 2。

      Table 2:Gamma功能接口详细说明

      Gamma接口功能图标 功能 详细说明
      1 控制R,G,B线 1. 勾选Gamma Red以后,即可用鼠标控制red line,且看的到red line。
      2. 如果没有勾选,则不可以控制,且看不到red line。
      3. 勾选和不勾选Gamma Green,Gamma Blue 的功能相同。
      2 新增点,且自动产生曲线 利用上下小箭头(或在栏框内)输入x轴值以及y轴值,点选Set按钮后
      1. 尚未存在控制点,曲线上新增(x, y)控制点且周围产生平滑曲线跟着移动。
      2. 如果曲线该x轴已存在控制点,控制点变更至所输入的y值,周围产生平滑曲线。
      3 重新设定 清除R、G或B的线,还原初始值的设定 (bypass gamma)。
      4 检查控制点 如果有成功产生出控制点则显示为Yes,如果失败则显示No。
      5 载入和储存RGB pixel Load:加载存有RGB pixel值的txt档,会自动产生RGB曲线。
      Save:把目前设定好的RGB曲线pixel值存入txt档。如Figure 60
      档案设定格式为: R→G→B。 Header:0(说明);pixel red:1 ~ 256;pixel green:257 ~ 512;pixel blue:513 ~ 768
      6 鼠标控制页面 鼠标左键点选曲线可在曲线上新增点,移动控制点和辅助点会自动产生平滑曲线。
      鼠标右键点选控制点即可删除该控制点。
      7 控制点选项 1. 选择Sync RGB格子,即可将R、G、B三条曲线合并成一条灰线,改变这条灰线可以同时对R、G、B三条曲线生效。
      2. 左右拖动Section Bar可以设定曲线的控制点数量。
    4. Gamma曲线的调整方式:初始化在座标上可以看到RGB三条曲线。勾选Gamma Red、Gamma Green、Gamma Blue後,利用滑鼠控制十字符号移动点击控制曲线。如点击处三条曲线刚好交叉重叠,优先顺序为Red、Green、Blue。先以R曲线为例,按滑鼠左键新增控制点,右键移除控制点,移动控制点可以改变曲线,控制点旁也会有两个辅助点,用来微调贝茨曲线。R、G、B各有256个pixel值,参考Figure 61。

      Figure 61:Gamma曲线调整示意图

    5. Gamma曲线Read Page和Write Page

      • Read Page:即为get API,点选Read Page按钮,会取得当前生效的曲线。

      • Write Page:即为set API,会将目前UI接口的曲线设到硬件,在API是Gamma的情况下,必须自己手动点选Write Page才会存入data,不会Auto Write,其他的API皆会自动AutoWrite,按钮如图Figure 62。

        Figure 62:Gamma Read and Write item

    9.7. Plugin

    IQ Tool提供了AF、AWB、CCM、GAMMA、ALSC五种插件以辅助IQ调试,如下Figure 63所示。

    Figure 63:Plugin下拉式选单界面

    9.7.1. Gamma Fitting Analyzer

    此插件工具使用于Gamma Fitting校正。

    • 调整界面

      CDF_Orig:open source的CDF曲线。

      CDF_Ref:open target的CDF曲线。

      FitGMA:Fitting Gamma曲线。

      Figure 64:Gamma Fitting Analyzer界面

    • 使用方式及参数说明

      1. 读取影像的Gamma 曲线,点击Options的Raw Setting初始设定。

        Figure 65:开启Raw Setting界面

      2. 点击open source打开保存的RAW image。

      3. 点击open target打开标准的OECF Chart图片。

      4. 按左键分别选取ROI,自动产生相对应的histogram。

      5. 选择Gamma曲线类型,共有两种曲线计算方式,建议选择Exponential

        • Spline曲线

        • Exponential曲线

      6. 点击Match GMA按钮,产生Gamma曲线。

      7. 点击Save GMA按钮,保存计算完的Gamma参数值。

    10. 与TIRAMISU差异列表

    模块名称 差异功能 差异参数(删除) 差异参数(新增)
    NR3D 新增不同信道的motion信息调整 u8MdThd
    u16MdGain
    u8MdThdByY[16]
    u8MdGainByY[16]
    u8MdThd_C
    u8MdThd_Y
    u16MdGain_C
    u16MdGain_Y
    u8MdThd_CByY[16]
    u8MdThd_YByY[16]
    u8MdGain_CByY[16]
    u8MdGain_YByY[16]
    WDR 新增WDR效果前后饱和度补偿功能 N/A. u8WDRSatdn[33]
    u8WDRSatup[33]
    YCLPF 新算法 N/A. N/A.
    AE 移除模块 N/A. N/A.
    AWB 移除模块 N/A. N/A.
    AF 移除模块 N/A. N/A.
    OBC 移除模块 N/A. N/A.
    ALSC 移除模块 N/A. N/A.
    LSC 移除模块 N/A. N/A.
    CCM 移除模块 N/A. N/A.
    Crosstalk 移除模块 N/A. N/A.
    Falsecolor 移除模块 N/A. N/A.
    PFC 移除模块 N/A. N/A.
    Demosaic 移除模块 N/A. N/A.
    DynamicDP 移除模块 N/A. N/A.
    NRDespike 移除模块 N/A. N/A.
    NRLuma 移除模块 N/A. N/A.
    Day Night Mode Detection 移除模块 N/A. N/A.
    RGBIR 移除模块 N/A. N/A.
    SDC 移除模块 N/A. N/A.