ISP API Tuning SOP
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 (API Ver. 1.0) | 12/10/2021 | |
1.1 (API Ver. 1.0) | 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. 校正步骤¶
-
将环境架设好,首先拍摄调整机与对比机fitting所需的image。由于曝光会影响亮度,因此gamma fitting要在相同曝光的基准上会比较准确。要得到接近的曝光,最简单的方式就是拍摄时(调整机拍raw,对比机拍jpg)让OECF最亮色块尽量接近255但不要刚好255,因为我们不知道对比机gamma长什么样子,但通常gamma最亮点是不会变的,因此拿它来当基准会比拿其它点当基准要好。
Figure 3:拍摄source及target画像示意图
-
读取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范例
-
读取target image的OECF patch值:
和上述步骤相同,差别只是target是读取image档,省略了设定raw information的动作。
-
选择fitting的相关设定,取值方式建议使用patch values,fitting的方式建议使用Exponenitial。
Figure 6:Gamma fitting设定建议
-
选择好后点选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,则维持不动。
-
调整步骤
-
首先针对静止画面调整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。
-
接着针对物体移动过后区域NR3D强度变化做调整。
-
主要调整M2S.LUT。M2S.LUT曲线不要设太陡,否则物体移动过后区域由糊到清楚的转换边界会很明显且不自然。
-
可以基于建议值来做微调,如果比较不希望看见残影则需要设大一点的值,此时物体移动过后区域的NRLuma会越强且维持越久,NR3D越弱,看起来比较扰动;相反的如果希望物体移动后区域清楚一些,能接受一些残影,则将值设小一些,扰动会比较小但可能会有颗粒noise跑出来。
-
建议值:{24, 18, 11, 8, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4}
-
-
微调移动模糊与noise程度的平衡。
-
调整Y.SF.BlendLUT,由左至右代表动态区到静态区域。将值慢慢加大至移动模糊与noise程度都能接受的程度。最后一个值建议固定在0才能维持静止画面的细节。建议同时搭配NRLuma的BlendRatio与FilterLevel做调整。
-
针对移动过后的噪声,除了根据motion调整NR2D强度外,也可调整Y.SF.BlendOffset,针对motion来补偿一点NR3D,以降低噪声。且因为只会更新于NR3D的参考帧,所以不会影响到影像画面。
-
-
针对拖影严重的亮度,可利用MD.Gain_YbyY、MD.Gain_CbyY做微调。将对应亮度区域的值慢慢下降至拖影与noise都可接受的程度。
-
当gain越来越高,移动noise若都只靠NRLuma是不够的,此时可以修改TF.LUT,让曲线下降得更缓慢一些来增加移动区域NR3D的强度,但同时也须考虑拖影变严重的程度。最后一个值不用一定要设0,但若造成移动物体边缘出现粉红色拖影,可透过AREn的功能,限制较亮、较动的NR3D强度,以避免这种拖影发生。
-
2.1.2. NR3D OFF¶
由于有些IC为了节省成本没有DRAM,因此没有NR3D只能使用其他denoise,以下为建议调整方式。
-
调整界面
同2.1.1的调整界面。
-
参数说明
同2.1.1的参数说明。
-
调整步骤
-
确认Iqfile是使用3dnr off的版本。
-
NRLuma界面中,建议将Strength开到63(最大值),调整Kernel强度。
-
Despike调整方法与3DNR on相同。
-
若还有需求,可以再调整剩下的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,越右边越偏静。
-
调整步骤
-
调整EdgeTh来区分edge区和non-edge区,可借由debug模式以方便观察結果。
-
先将NRLuma_Adv开到最强(Strength和SmoDeltaLut都设最大),观察极限,若觉得NR效果不明显,只能调弱Sharpness,或是调强NRLuma,或其他NR模块。
-
调整edge区去躁参数,建议先使用默认值为基础,直接调整SmoDeltaSft即可,若有需求再调整SmoDeltaLut。
-
若有需求,会依据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。
-
调整步骤
-
调整MatchRatio和UvTh,可以观测到color noise会散开,过强会有色彩溢出的现象,调整到可接受的范围。
-
降低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,值越大越强。
-
调整步骤
-
MotionClip先设定为0。
-
观察静态区,调整MaxStrength和StrengthByMot,将NR调整到一个可接受的色躁范围。
-
观察动态区,调整MotionClip,将移动的部分,基于步骤一的NR强度,做加强的动作,若调整MotionClip程度不够强,可返回步骤一做强度的加强。
-
如有需要,可调整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的结果。
-
调整步骤
-
将Strength设最大。
-
将BlendTh和BlendGap都设0,观察mean filter的效果,如有需求再调整MeanFilterTh和MaskGenTh。
-
将BlendTh设1023,观察median filter的效果,如有需求再调整MedianFilterTh和MaskGenTh。
-
调整BlendTh和BlendGap,适当分配mean filter和median filter范围,可搭配Debug模式以方便观察。
-
观察动态区色噪,再微调MotionEnhance。
-
调整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强度,过度区则线性变化。
-
调整步骤
-
观察整体edge强度,初步调整OverShootGain和UnderShootGain到适当强度即可。
-
总共有6种不同的edge filter,无向性edge和方向性edge分别都有高/中/中低频,可以先调整混合方式到完全用某一种filter,并观察每种filter的效果,可以搭配debug mode以方便观察。
-
调整无向性edge的频段。
-
调整MidRatioUDByMot和HighRatioUDByMot和HighRatioUDByState来权衡高低频混合方式。
-
调整SharpnessUD控制各种频段的强度,或是调整PreCorUD控制各种频段的coring值。
-
-
调整方向性edge的频段。
-
调整MidRatioDByMot和HighRatioDByMot和HighRatioDByState来权衡高低频混合方式。
-
调整SharpnessD控制各种频段的强度,或是调整PreCorD控制各种频段的coring值。
-
-
调整DirRatioByState来权衡无向性edge和方向性edge的混合方式。
-
反复调整上述三步骤。可以将SharpnessUD和SharpnessD的其中五个值设为0,就能得知各区域被分配到哪些向性/频段,若觉得不合理,再调整混合方式。
-
依据不同条件来调整edge,常用于降低平坦区的edge,让平坦区更平顺。有很多种方式都可以达成,但每种方式都会牺牲细节,因此建议不要只用单一方式,否则结果可能只适合某些特定场景。
-
调整DetailGainByMot,可以让NRLumaAdv判断为平坦区的区域降低无向性edge,建议动静暂时调的一样。
-
调整GainByStd,通常平坦区的标准偏差较小,因此可以降低标准偏差小的区域的edge。
-
调整EdgeKillLut,通常平坦区的edge强度较小,因此可以把小edge调的更小。
-
调整YEE内的NR,建议将SmoBlendByStd和SmoBlendByMot都设0,调整SmoDiffThByY即可,若有需求再混一些mean/median filter的结果即可。
-
调整coring相关参数,包括PreCorUD和PreCorD和CorByY。
-
-
若有需求想依据亮度调整,可以调整SclByY和StdAdjByY和CorByY。
-
若有需求想限制overshoot或undershoot edge,可以调整OverShootLimit和UnderShootLimit。
-
若有需求想依据hue调整edge强度,可以调整StrengthByHue,例如降低肤色edge来减轻人移动的躁声,或是增加绿色edge来强化树的细节。
-
调整运动噪声
-
依据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。
-
调整步骤
-
建议先直接将WDR enable,观察预设效果是否足够,优先根据场景选择BoxNum,通常关注细小细节可以加大BoxNum值,但是如果需要兼容全场景,建议BoxNum选择2或者3。
-
如强度太强或太弱,可直接简单调整Strength,通常不易太大,特别是低照度场景,降低WDR强度,后面通过RGBgamma或者Ygamma去提升亮度而减弱拉出来的噪声。
-
如较关注的问题为暗处拉亮效果,可再搭配调整DarkToneEnhance。
-
其余再针对各別亮度的强度进一步调整WDRStrByY,建议左边的暗处强度减弱,这样不容易拉出噪声,同时不会损失对比度。通常暗部和亮部的强度会减弱来保证对比度。注意,gamma、defog等模块都会影响到对比度。
-
DarkLimit或BrightLimit,针对一些特殊场景,希望暗处不要拉亮或者亮处不要拉亮,可调试这两个参数,但是注意,有效值(245~255此区间效果才明显)的影响较大,调试的时候主要要微调。
-
若有因为WDR太强而导致不连续或小区块过暗/过亮,可以调整StrengthByOpsCnt。
-
若有因为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。横轴为输入亮度,纵轴为输出亮度,值越大则最终影像越亮。
-
调整步骤
-
调整global tone。
-
调整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接口联机功能操作步骤¶
-
设定EVB网络功能,在终端机输入下列指令:
#ifconfig eth0 hw ether 00:xx:xx:00:00:01 #ifconfig eth0 upwang #udhcpc #mixer -n 1 -q 其中-q表示开启 iqserver,IQ Tool才可以联机。
-
选择产品类型:1. IP Camera;2. Car Camera
-
输入EVB的IP地址
-
点击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。
调校参数类型:
-
数值:可透过以下三种方式修改值
-
点选上下箭头调值
-
直接在栏框内填值
-
左右移动滚动条调整值
数值类型会设定范围,根据不同的API初始设定Min以及Max值。以API为ManualExposure的情况下为例,FNx10最小值是10最大值是220。如果填小于10则会自动跳回10,如果填大于220则会自动跳回220,如Figure 43。
Figure 43:数值功能示意图
-
-
下拉选单:点击箭头后会出现下拉选单,即可点选不同的功能,以API AE – Flicker为例(如Figure 44),Enable下拉选单可以选择Disable、60Hz或是50Hz。
Figure 44:下拉选单功能示意图
-
读值:栏框内的值read only,不可以write,以API AWBInfo为例(如Figure 45),可以读取WB_Rgain栏框内的值2130,但不可以write。
Figure 45:读值显示于字段示意图
-
表格:页面上有一个按钮,如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示意图
-
保存参数有两种格式,分别是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参数可以互相匹配的目的。
-
-
加载参数有三种格式,分别是Xml、Bin和Bin xml。
-
Xml
Xml用于加载工具的GUI接口(包含接口参数)。
-
Bin
Bin用于载入API参数。
-
Bin Xml
Bin Xml用于加载API参数和附加相对应串口的Xml。
-
9.6. Gamma调值¶
-
点选Gamma树状节点,即在右方产生Gamma调值介面,如Figure 58。
Figure 58:Gamma调值界面
-
Gamma 功能介面說明,参考Figure 59。
Figure 59:Gamma功能接口说明
Figure 60:Gamma存、读档格式示意图
-
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 ~ 7686 鼠标控制页面 鼠标左键点选曲线可在曲线上新增点,移动控制点和辅助点会自动产生平滑曲线。
鼠标右键点选控制点即可删除该控制点。7 控制点选项 1. 选择Sync RGB格子,即可将R、G、B三条曲线合并成一条灰线,改变这条灰线可以同时对R、G、B三条曲线生效。
2. 左右拖动Section Bar可以设定曲线的控制点数量。 -
Gamma曲线的调整方式:初始化在座标上可以看到RGB三条曲线。勾选Gamma Red、Gamma Green、Gamma Blue後,利用滑鼠控制十字符号移动点击控制曲线。如点击处三条曲线刚好交叉重叠,优先顺序为Red、Green、Blue。先以R曲线为例,按滑鼠左键新增控制点,右键移除控制点,移动控制点可以改变曲线,控制点旁也会有两个辅助点,用来微调贝茨曲线。R、G、B各有256个pixel值,参考Figure 61。
Figure 61:Gamma曲线调整示意图
-
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界面
-
使用方式及参数说明
-
读取影像的Gamma 曲线,点击Options的Raw Setting初始设定。
Figure 65:开启Raw Setting界面
-
点击open source打开保存的RAW image。
-
点击open target打开标准的OECF Chart图片。
-
按左键分别选取ROI,自动产生相对应的histogram。
-
选择Gamma曲线类型,共有两种曲线计算方式,建议选择Exponential
-
Spline曲线
-
Exponential曲线
-
-
点击Match GMA按钮,产生Gamma曲线。
-
点击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. |