ISP API Tuning SOP
1. CALIBRATION¶
每颗sensor及lens特性不尽相同,当拿到一颗新sensor或lens时,首要动作就是针对其特性去做校正及参数设定,完成后才能去做后续的画质调整。接下来各节会依据校正流程做介绍,建议依照此流程来做调整。
1.1. AWB色温曲线范围调整¶
在pipeline中虽然AWB在shading校正之后,但shading校正需会要AWB根据统计资料推算出来的CCT值,且shading是否校正对AWB影响较小,因此建议先做AWB色温曲线范围的调整,等ALSC校正完后再回来检查AWB色温曲线范围是否需要微调。
1.1.1. 1.1.1 校正环境¶
使用Macbeth标准灯箱,灯箱内放置灰卡,让灰卡占满整个画面,若没有灰卡就直接利用灯箱内的灰墙来做分析。 调整前务必确保OB已校正且确实套用,用RGB sensor要确认IR cut有确实盖上。
1.1.2. 1.1.2 校正界面¶
点选API tool上方Select Plugin,选择Awb AnalyzerCombo开启调整工具接口。
图 1-1:Plugin选单
图 1-2:Awb Analyzer Combo界面
1.1.3. 1.1.3 接口说明¶
主窗口:
-
窗口中每个绿点就是一个统计资料。
-
共有10个色温框可供调整,每个色温框所代表的色温可参考右方CTAera的表格,蓝色框区域才是实际有效的色温曲线范围,未落入此区域的统计数据则不采用。用鼠标按住色温框的控制点进行拖曳可直接对色温框进行调整。
-
右上方会显示当下算出的RGain、BGain及色温(CT)。
-
File:共有四种选项:
-
载入统计值
-
加载色温曲线范围
-
储存统计值
-
储存色温曲线范围
-
-
RawFormat:开启Raw Image用的格式,当选择Raw Image为统计值来源之前需要先来此设定格式。
-
StartIdx:有效色温框的起始Index,建议值为2。
-
EndIdx:有效色温框的结束Index,建议值为7。
-
Update Live Statis:实时更新当下统计资料。
-
Reset CTArea:将色温框复原到板子目前套用的设定。
-
Apply to Camera:将色温框套用至板子上。
-
1.1.4. 1.1.4 校正步骤 & 套用¶
-
设定StartIdx和EndIdx来决定欲做AWB的色温范围,建议设定为StartIdx = 2、EndIdx = 7,也就是当环境色温在2300K~10000K才会做AWB。
-
准备一台可量测色温的meter,量测欲调整灯源的实际色温。
-
点击Update Live Statis更新目前灯源的统计资料,接着点击File→Save Statistics储存统计资料。调整代表色温接近实际色温的色温框,色温框大小只要能涵盖大部分统计资料即可。此外要注意让右上方推算出的色温(CT)接近实际色温,不离谱即可。
图 1-3:2800K灯源调整范例
-
切换不同色温之灯源,重复上述2、3步骤。由于灯箱灯源数量有限,可能无法涵盖整个色温曲线范围,因此没有统计数据可参考的色温框请自行参考调整过的色温框做色温曲线范围的smooth。
-
调整完成后,点选File→Save CTArea储存调整好的色温框,接着点选Apply to Camera即可套用到板子上,关闭Awb Analyzer Combo。回到API tool接口点选左侧AWBCTCali,再点选ReadPage将板子上的设定读回,最后点选上方File→Save→Bin file将AWB色温曲线设定存至API的bin檔中。
1.1.5. 1.1.5 注意事项¶
灯箱的环境是AWB最基本要做好的,因此建议调整过程中储存各灯源统计数据,日后遇到实际场景需要微调色温曲线范围时,微调后可读回灯箱统计资料确认是否会影响灯箱环境的白平衡,不需要再重新架设灯箱环境,可节省时间。若对某个场景AWB有疑问,可以提供该场景的统计资料以及当时使用的色温框设定,方便相关人员进行分析。
1.2. AE Exposure Table 设定¶
不同的sensor及lens特性及能力皆不同,预设的AE exposure table 不见得适合目前的module,因此需要去检查,并将其修改为适合目前module的设定。
1.2.1. 1.2.1 调整界面¶
点选左方的AE项目,再点选ExpoTblEntry即可出现AE exposure table调整窗口。
图 1-4:AE设定接口
图 1-5:AE Exposure Table
1.2.2. 1.2.2 参数说明¶
NumOfExpoTblEntry:设定AE exposure table的数量。以图 5设5为例,AE exposure table就须填入5组设定。
Table第一字段:镜头光圈值(Fn)x10。例如光圈1.6则填入16。
Table第二字段:快门(usec)。
Table第三字段:Total gain(1024 = x1 gain),也就是Sensor gain x ISP gain。
Table第四字段:Sensor gain(1024 = x1 gain)。
1.2.3. 1.2.3 设定项目¶
-
确认lens光圈值,将光圈值x10填入第一栏。
-
向用户询问maximum gain,填入倒数第一列的第三栏中。
-
若不使用ISP gain,直接将第三栏的值复制到第四栏中。
2. GAMMA FITTING & COLOR CORRECTION¶
不同的gamma和color对noise会有不同的影响,而且调整denoise时先套入gamma和color设定会比较方便观察,因此通常会先做gamma和color的调整,即便它们在pipeline中是在denoise之后。
2.1. Gamma Fitting¶
Color fitting的结果容易受到亮度差异的影响,而亮度差异主要来自AE和gamma,因此在color fitting前务必先做gamma fitting。此步骤主要目的是将调整机台的gamma fit到与对比机的gamma接近。校正前请先确认dynamic range是full range,可以看histogram是否有到最大/最小值。
2.1.1. 2.1.1 校正环境¶
使用OECF chart,让光线均匀打在chart上,拍摄时让chart摆在画面中间,不要占满整个画面,否则容易受到shading的影响。
图 2-1:拍摄画面范例
2.1.2. 2.1.2 校正界面¶
点选API tool上方Select Plugin,选择Gamma Fitting开启校正接口。
图 2-2:Gamma Fitting界面
2.1.3. 2.1.3 校正步骤¶
-
将环境架设好,首先拍摄调整机台与对比机台fitting所需的image。由于曝光会影响亮度,因此gamma fitting要在相同曝光的基准上会比较准确。要得到接近的曝光,最简单的方式就是拍摄时(调整机拍raw,对比机拍jpg)让OECF最亮色块尽量接近255但不要刚好255,因为我们不知道对比机gamma长甚么样子,但通常gamma最亮点是不会变的,因此拿它来当基准会比拿其它点当基准要好。
图 2-3:拍摄source及target画像示意图
-
读取source raw data的OECF patch值:
点选界面工具栏的Options,填入正确的raw information及OB(WB不需要设定),完成后点选OK。
补充:OB的单位是12bit,最大值只有255,后续会修正为单位是16bit,最大值是65535。
图 2-4:Raw Setting设定接口
拖曳鼠标来框选OECF,确认每一个patch都有正确落在patch内即完成。
图 2-5:框选OECF patch范例
-
读取target image的OECF patch值:
和上述步骤相同,差别只是target是读取image檔,省略了设定raw information的动作。
-
选择fitting的相关设定,取值方式建议使用patch values,fitting的方式建议使用Exponenitial。
图 2-6:Gamma fitting设定建议
-
选择好后点选Match GMA执行gamma fitting,观察fitting出来的curve是否有异常,没有的话点选Save GMA储存gamma curve。最后检查储存出来的gamma curve头尾是在0和1023,若不是,请手动作修改。
图 2-7:理想gamma curve要smooth且递增
2.2. Color Correction¶
此步骤主要目的是使调整机与对比机的颜色接近,调整主要包含两个部分:第一个也是最主要的部份是color matrix的fitting;另一个为HSV微调的部分,可依需求做局部颜色饱和度与色相的调整。Color matrix与HSV最多可支持16组色温的设定,填参数时务必按照规则,Index0到Index15代表色温由低到高。
2.2.1. 2.2.1 CCM调整¶
当使用tool将各色温灯源校正完成,需要手动将校正结果填入CCM对应的项目中。
-
调整界面
图 2-8:CCM调整界面
-
参数说明
ISOActEn: 在night mode是否自动将CCM设为unit matrix的开关,若有勾选,当遇到IQMode为Night时会将CCM自动切换为unit matrix。
CCTthr:色温节点设定,需填入校正CCM时对应的色温值,CCM与HSV要套用哪组设定都会根据此CCTthr来决定,注意index小到大需要按照色温低到高的顺序填入,最多支持16组设定,没用到请设0。
CCM:各色温color matrix设定,需根据色温填入对应的color matrix,注意index小到大填入时需要按照色温低到高的顺序填入。新增每个Row的总合,SUM0/SUM 1/SUM 2分别代表第½/3列的总合,read就会自动更新,如果不是1024代表有问题,请手动修改CCM。
SATURATIONbyISO:Color matrix饱和度调整,程序会根据此设定将使用者定义的matrix与unit matrix做内插,值域0~100,设0表示使用unit matrix,设100表示使用使用者自定义CCM。此参数是根据gain值做切换。
2.2.2. 2.2.2 HSV调整¶
当CCM套入后仍有颜色希望微调,则可使用HSV来达成。HSV会将整个色域平均切成24等分,使用者可依需求调整个等分的色相及饱和度。HSV使用auto mode时,请务必确认Index是依据什么来切换,有些依据色温(这边的色温节点和CCM相同,由CCM来控制)来切换,也有些依据gain来切换。
-
调整界面
图 2-9:HSV调整界面
-
参数说明
HueLut:可依需求局部调整色相,值域-64~64,0代表不改变,参数切换是根据色温。
图 2-10:Hue调整界面
SatLut:可依需求局部调整饱和度,值域0~255,64代表不改变,参数切换是根据色温。
图 2-11: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。
图 2-12:HSV流程
2.3. Saturation调整¶
根据亮度(Y)及饱和度(UV)做UV的调整,分为adjust uv by y及adjust uv by uv,主要是留一些颜色调整弹性在YUV domain上,且因为亮度与饱和度的独立性,可保持亮度恒定,又达到局部调整饱和度的效果。在传感器用到高曝光值的时候,也可适度降低暗处色躁。亦或根据使用者喜好调高或降低饱和度,使画面看起来更鲜艳或较柔和。
2.3.1. 2.3.1 调整界面¶
于左侧选单点选Saturation,接着在右侧主画面可找到Saturation界面。
图 2-13:Saturation调整界面
2.3.2. 2.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效果下更显自然。
图 2-14:Sat.ByYsft[5] & Sat.ByYLut[6]
图 2-15:Sat.BySsft[5] & Sat.BySLut[6]
3. DENOISE & EDGE ENHANCEMENNT & SATURATION¶
虽然板子连上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有盖上。
3.1. Crosstalk & False Color调整¶
调整denoise前先检查是否有fixed pattern、cross talk或false color等现象,有的话先调整,一来是因为这些功能本来就在denoise之前,二来是特殊现象就要用专门的功能才能有效处理,硬用denoise去消除这些现象容易造成画质损失。
3.1.1. 3.1.1 Crosstalk(Green Equal)¶
这主要是lens与sensor搭配性的问题,当光线进入sensor上micro lens的角度太大,容易误接收到应该被邻近pixel接收的讯号,导致Gr、Gb差异变大,因此这现象较容易发生在画面角落,或是光线从某个特殊角度进入时。
-
现象
画面出现迷宫纹
图 3-1:Crosstalk造成的迷宫纹现象
-
调整界面
于左侧选单点选BayerCompensation,接着在右侧主画面可找到Crosstalk界面
图 3-2:Crosstalk调整界面
-
参数说明
Strength:crosstalk强度值,值域0 ~ 31,越大效果越强。
StrengthByY:根据亮度调整crosstalk强度值,横轴越右边代表越亮,值域0 ~ 127,越大效果越强。值为64代表不做调整。
Threshold:crosstalk threshold ratio值,值域0 ~ 255,越大作用范围越大。
Offset:crosstalk threshold offset值,值域0 ~ 4095,越大作用范围越大。
-
调整步骤
-
将Offset设为0,Threshold设为128,Strength由0往上升,观察欲消除crosstalk的区域及欲保留的细节区,调整至crosstalk与细节保留都可接受即停止。
-
如需微调则再利用Threshold来做微调。
-
若暗处还是有很明显的crosstalk,再来拉大Offset。
-
3.1.2. 3.1.2 False Color¶
由于demosaic时未考虑方向或方向判断错误导致错误的颜色产生,容易发生在画面高频区域或edge边缘。
-
现象
画面高频处或edge边缘出现伪色。
图 3-3:False Color现象
-
调整界面
于左侧选单点选BayerCompensation,接着在右侧主画面可找到AntiFalseColor界面。
图 3-4:False Color调整界面
-
参数说明
DbgEn:Debug模式,值域范围:0~1,影像越亮则去伪彩强度越强。此debug模式和Demosiac的debug模式会有冲突,以最后呼叫的api为主。
ColorSpaceSel:去伪彩模式,值域范围:0~1,0代表在RGB domain做灰,对齐G通道的值,1代表在yuv domain做灰,不会影响到亮度。
Preserve:边缘保护强度,值域范围:0~7,值越大则边缘区域越不容易被判断成moire区域,去伪彩强度越弱。
Strength:整体强度,值域范围:0~31,值越大则moire区域越容易被降饱和度,去伪彩强度越强。
-
调整步骤
-
将Strength设最大值,使用debug模式去观察moire区域是否符合预期,再调整Preserve,最后再调降Strength。
-
切换ColorSpaceSel,观察不同做法的效果如何。
补充:
-
开启FalseColor对较细的紫边稍微有帮助,若FalseColor开到最强紫边仍严重,可以再利用HSV针对紫色色相降低饱和度,但调整时须注意正常紫色物品的饱和度是否过低。
-
False Color 的调整与Crosstalk 存在高度相依(过强的Crosstalk会导致伪彩严重,进而导致后级的False Color无法将伪彩去干净),建议先完成Crosstalk 的调整后再进行anti-false color 的调整。
-
由于BayerCompensation界面的write page会先呼叫False Color,再呼叫Demosaic,所以debug模式会以Demosaic为主,如果需要看False Color的debug模式,再呼叫一次False Color即可。
-
3.1.3. 3.1.3 PFC(Purple Fringing Compensation)¶
-
现象
主要是由色散现象造成,通常会在亮暗交界处出现紫色边缘。
图 3-5:Purple fringing现象
-
调整界面
于左侧选单点选PFC,接着在右侧主画面可找到PFC界面。
图 3-6:PFC调整界面
图 3-7:PFC_EX调整界面
-
参数说明
Strength:去紫边的强度控制,值域0~255,值越大越强。
UStrength:去紫边作用在U channel的强度。值域0~63,值越大越强。
VStrength:去紫边作用在V channel的强度。值域0~63,值越大越强。
StrengthByY:紫边通常出现在较暗的地方,且周围是高亮区域,所以可针对不同亮度,给予不同去紫边的强度,横轴越右边代表亮度越大。值域0~255,值越大越强。
FlatProtect:平坦区的判断,避免大面积的紫色被判断为紫边,而做的保护。值域0~127,值越大越多地方不做PFC。
SatByY:高对比度区的判断,紫边通常出现在对比较高的区域,所以使用SatByY[0]来判断对比的程度。值域025,值越大,代表侦测到的对比度需超过SatByY[0]才为高对比度。SatByY[1]用来判断亮度饱和区的程度。值域025,值越大,代表越亮的地方越不做PFC。
SatSrcSel:判断高对比度区时,可选用是否做NR的前处理。值域0~1,0代表不做NR,1代表有做NR,建议低照下可开启此功能。
StrengthByContrast:针对对比的程度,给予不同强度的PFC,横轴越右边代表对比越强。值域0~63,值越大PFC越强。
DbgEn:显示PFC的作用范围。值域0~1,1代表开启。
GSkipEn:对G Channel不做PFC的处理。值域0~1,1代表开启。PFC会拉高G Channel去平衡紫边,但同时也会降低对比感,打开此开关较能保持对比感,但紫边可能无法去除干净。
SatMaskSel:对比区判断的Mask大小选择。值域0~1,Mask 0范围较小,Mask 1范围较大。
SatAmpEn:高对比度区权重增加开关。值域0~1,1代表开启。此功能可将增加判断对比度时的精确度。
StrengthByHue:根据不同的Hue,给予不同强度的PFC处理。
-
调整步骤
-
先决定SatAmpEn,建议先使用默认值。如有改变SatAmpEn,则对比相关的部分都需要重新调整。
-
依据镜头表现,观察紫边的宽度,选择SatMaskSel的大小,若紫边较宽,可先选用较大的mask做补偿。
-
观察紫边所处的亮度区域、对比程度、紫边的颜色分布,来调整StrengthByY, SatByY, StrengthByContrast, StrengthByHue。
- StrengthByY:观察紫边产生于哪个亮度下,给予较强的设定,通常较暗的地方,强度较强。
-
SatByY, StrengthByContrast:观察紫边发生于哪种对比下,给予较强的设定,通常对比越高,强度越强。SatByY用来控制下图横轴的落点,StrengthByContrast用来控制下图纵轴。在低照下,对比度判断可能因为躁点而有点误差,可适当放宽SatByY[0],避免躁点被判断为高对比度区。
![](mymedia/tiramisu/iq_28.png) 图 3-8:Contrast, Strength参数示意图
-
控制FlatProtect,来确保部分平坦区不会做到PFC的效果。
-
调整最终PFC强度,如有特别颜色需求,可分开调整Ustrength, Vstrength的强度。
3.1.4. 3.1.4 DEMOSAIC¶
-
现象
增加画面分辨率的同时减少方向误判与artifacts的产生。
图 3-9:物体边缘出现的artifacts现象
图 3-10:高频区方向判断错误
-
调整界面
于左侧选单点选BayerCompensation,接着在右侧主画面可找到DeMosaic界面。
图 3-11:DeMosaic调整界面
-
参数说明
DbgMode:Debug模式,值域范围:0~2,1代表方向判断影像,红/蓝/绿/白/黑色区域分别对应到垂直/水平/细节非加强/细节加强/无向性区域,2代表non-smooth影像,只有开启SmoEn才会有效果,影像越亮代表越不会被抹平,影像越黑代表越会被抹平。此debug模式和FalseColor的debug模式会有冲突,以最后呼叫的api为主。
图 3-12:Demosaic方向判断流程
IsoTh:无向性区域判断阀值,值域范围:0~127,值越大则越多区域被判断成无向性区域,可能导致细节模糊和拉链状artifacts。
GradientTh:方向性区域判断阀值,值域范围:0~63,值越大则越少区域被判断成方向性区域,可能导致细节模糊和拉链状artifacts,值太小则会使细节区变少。
SmoEn:抹平功能开关,值域范围:0~1。
SmoRange:抹平范围,值域范围:0~7,值越大则越多区域被抹平。
SmoStrength:抹平强度,值域范围:0~255,值越大则抹平的强度越强。
DtlEn:细节加强开关,值域范围:0~1,只会作用在细节加强区。
DtlBypassColorCheck: 细节区忽略颜色判断开关,值域范围:0~1,细节区会再被分为细节非加强区和细节加强区,0代表不忽略颜色判断,只有G通道值大于一定值时,才会被判断成细节加强区,条件为G通道值大于R和B通道值乘以DtlColorRatio再加上DtlColorOft,1代表忽略颜色判断,所有细节区都被判断成细节加强区。
DtlColorRatio:细节区颜色判断比例,值域范围:0~255,值越大则越不容易被判断成细节加强区。
DtlColorOft:细节区颜色判断偏移量,值域范围:0~63,值越大则越不容易被判断成细节加强区。
DtlHScale:细节加强区加强高频区域的程度,值域范围:0~15,值越大则高频区域被加强越多。
DtlMScale:细节加强区加强中频区域的程度,值域范围:0~15,值越大则中频区域被越加强多。
-
调整步骤
-
关闭抹平和细节加强功能(SmoEn和DtlEn都设0)。
-
将DbgMode设1,观察方向判断是否符合预期,再微调IsoTh和GradientTh来区分无方向/有方向/细节区。
-
将DbgMode设1,观察細節非加强和細節加强区是否符合预期,再微调DtlBypassColorCheck和DtlColorRatio和DtlColorOft。
-
将DbgMode设0,调整DtlHScale和DtlMScale来加强细节。
-
如有需求,再尝试开启抹平功能,抹平一些因为Demosaic造成差值错误的区域,可以同时将DbgMode设2,观察抹平区域和强度是否符合预期。
补充
-
建议先使用默认值即可。若有调整需求,建议调整幅度不要太大,除非很确定适用于各种场景。
-
请不要将抹平功能当成NR,也不要将细节加强功能当成sharpness,除非其他模块都调不动,再来微调此模块。
3.2. DynamicDP & NRDespike调整¶
-
如同前一节所说,peak noise基本上也算是一种特殊的noise,因此需要利用专门的功能去做消除或减弱的动作。建议在处理一般noise前先处理peak noise,这样可避免硬用其他denoise功能去处理peak noise而造成画质损失。有DynamicDP和NRSpikeNR两种功能可选择,可同时使用。
3.2.1. 3.2.1 DynamicDP(Dynamic Defective Pixel Correction)¶
DPC处理peak noise的方式是将该点取代掉,因此效果较为明显。 受限于sensor的制造工艺,对于几百万像素的sensor,不可能做到所有的像素都是完好的,尤其是对于低成本的sensor来说,坏点数为100或者1000ppm(parts permillion,百万分之一)是正常的。
若sensor中存在坏点,经过图像的插值(如demosaic)和滤波过程,坏点的尺寸会变大(坏点扩散),而且由于色彩校正和串扰补偿,坏点处颜色的强度和饱和度也会明显提高,因此需要在插值等过程之前对坏点进行校正。
-
调整界面
于左侧选单点选BayerCompensation,接着在右侧主画面可找到DynamicDP界面。
图 3-13:DynamicDP调整界面
-
参数说明
HotPixEn:去除亮坏点开关。
HotPixCompSlope:判断是否为亮peak点的阀值,值域0 ~ 255,越大越不容易判断为亮peak点,越小越容易。
DarkPixEn:去除暗坏点开关。
DarkPixCompSlope:判断是否为暗peak点的阀值,值域0 ~ 255,越大越不容易判断为暗peak点,越小越容易。
DPCTH:本身与周围同通道的threshold,值域0 ~ 255,越大越不容易,越小越容易。
BlendEn:blending开关。
DiffLut:依据DPC的结果和原始值的差异程度来做blending,值域0 ~ 1024,越大越容易取代。
YLut:依据亮度程度来做blending,值域0 ~ 1024,越大越容易取代。
-
调整步骤
-
先判断要开启HotPix或DarkPix。
-
DPCTH是判断与同通道的差异,与PixCompSlope需同时成立才会进行坏点补偿
-
慢慢增加PixCompSlope至peak noise与细节保留都可接受时停止,完成调整。
-
开启BlendEn,再依照想混合的程度调整DiffLut和YLut,以挽救细节。
-
3.2.2. 3.2.2 DynamicDP Cluster¶
DynamicDP会依照该点与周围点差异来判断是否为defect,DynamicDP cluster会考虑周围的点也刚好是defect的情况,先将周围的最亮(暗)点排除一些,然后再进入DynamicDP模块去处理。
-
调整界面
于左侧选单点选BayerCompensation,接着在右侧主画面可找到DynamicDP_Cluster界面。
图 3-14:DynamicDP_Cluster调整界面
-
参数说明
EdgeMode:Edge mode开关,对周围点换掉0~1点最亮点或最暗点。
NeiDeltaTh:周围8点与此8点平均值的差异阀值,会累计差异大于此阀值的各数(count)。
NeiSmooth:累计阀值,count小于此阀值会将最亮(暗)点做取代。
SortEn:Sort mode总开关,将周围点做排序,希望取出最亮(暗)点符合以下条件,最亮(暗)点与次亮(暗)点的差异够大,且次亮(暗)点与第三亮(暗)点的差异够小,代表意思为周围只有一个点很亮(暗),其他点都很相似,所以替换掉该点。最多补偿个数为,周围点换掉02点最亮点和01点最暗点。
SortRGGBEn:Sort mode各自channel开关,可以指定特定channel做或是不做坏点替换。
Sort1x3ModeEn:1x3 mode开关。若与中心相邻两点为最亮点和次亮点,且次亮点和第三亮点差异大于SortLumaTblL,会将最亮两点用第三亮点取代。
SortLumaTblL:最亮点和次亮点阀值,可根据亮度调整,大于此值则取代。值设越大,最亮点需超过次亮点越多,才可能把最亮点替换掉,代表判断条件越严格。
SortLumaTblD:最暗点和次暗点阀值,可根据亮度调整,大于此值则取代。值设越大,最暗点需超过次暗点越多,才可能把最暗点替换掉,代表判断条件越严格。
SortLumaTblS:次亮(暗)点和第三亮(暗)点阀值,可根据亮度调整,小于此值则取代。值设越小,次亮点与第三亮点需越相似,才可能把最亮(暗)点替换掉,代表判断条件越严格。
-
调整步骤
-
若原有DynamicDP补不掉的defect,可以尝试开启EdgeMode或SortEn,开得越多,越容易补defect,但也更容易破坏细节。
-
建议Cluster可以开较宽松,即将抓出多数defect,再依照defect程度做blending。
-
3.2.3. 3.2.3 NRDeSpike¶
NRDeSpike处理peak noise的方式是将该点与邻近点的mean/median拉近,因此只能降弱,无法完全消除。
-
调整界面
于左侧选单点选BayerDenoise,接着在右侧主画面可找到NRDeSpike界面。
图 3-15:NRDeSpike调整界面
-
参数说明
NRDeSpike同时用三种方式判断depeak的强度,取最弱的来当最终的强度。
-
< CenterNeighbor >
Strength:CenterNeighbor方式的强度,值域0 ~ 5,越大越强。
DiffGain:CenterNeighbor方式的Threshold,超过此值depeak强度会设最强,值域0 ~ 255,越小越容易使用最强的depeak强度。
图 3-16:CenterNeighbor参数示意图
-
< CornerCross >
Strength:CornerCross方式的强度,值域0 ~ 5,越大越强。 DiffThd :CornerCross方式的Threshold,小于此值depeak强度会设最强,值域0 ~ 255,越大越容易使用最强 的depeak强度。
图 3-17:CornerCross参数示意图
-
< MeanStd >
Strength:MeanStd方式的强度,值域0 ~ 5,越大越强。 DiffGain:MeanStd方式判断条件中的一个gain值,值域0 ~ 31,越大越容易使该pixel使用最强的depeak强度。
图 3-18:MeanStd参数示意图
BlendRatio:总强度设定,值域0 ~ 15,越大会让peak越不明显。
BlendLut:选用median/mean的混合比例,值域0~2047,横轴为中心与周为差异程度,越右边差异越大,纵轴为混合比例,值越大,偏向median设定,值越小,偏向mean设定。
StrengthByY:根据不同亮度,给予不同强度,值域0~127,64为不调整,值越小越弱,越大越强。
-
-
调整步骤
由于是拿三种方法强度最弱的来用,单独调整某个参数不见得可以看到效果,建议依照下面介绍的方式将各方式调到最好状态。
-
为了方便观察,先将BlendRatio设15。
-
找出各方法的最佳参数,调整某个方法时要将另外两个强度设到最强。
< 以调整CenterNeighbor为例 >
-
将CornerCross及MeanStd开到最强
Strength.CornerCross = 5
DiffThd.CornerCross = 255
Strength.MeanStd = 5
DiffGain.MeanStd = 31
-
将Strength.CenterNeighbor设0,DiffGain.CenterNeighbor由255慢慢下降,直到peak noise与细节维持达到可接受程度即停止。
-
调整好的参数另外记下来。
-
-
参考步骤2,将剩下两种方式调整好,之后将各自的最佳参数填回界面。
-
将BlendRatio慢慢下降至peak noise与细节可接受程度即完成调整。
-
由于Spike与DPC共享source input,所以坏点可能会混入spike的补偿结果上,此时可调整BlendLut,让spike结果偏向median的结果,来避掉坏点。若此问题不会发生,也可偏向mean结果来取得较平滑的结果。
3.3. NR3D、NRLuma & NRChroma调整¶
-
NR3D的功能强大,除了降低temporal noise之外,还能分别对于静态或动态区域调整NRLuma的强度,因此建议先从NR3D调起。
3.3.1. 3.3.1 NR3D ON¶
主要用来降低temporal noise,包含Y & color noise,开强可以有效降低噪声,但side effect就是会出现残影,因此调整方向就是找出一个noise与残影都可接受的平衡点。
-
调整界面
于左侧选单点选Denoise_3DNR,接着在右侧主画面可找到NR3D界面。
图 3-19:NR3D调整界面
图 3-20: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 ~ 4095。
图 3-21:TF.LUT
MD.Thd:motion阀值控制,值域0 ~ 255。值越大NR3D越强,Motion低于阀值的地方将被判断为静止,建议不要设超过10。
MD.Gain:motion scale控制,值域0 ~ 10230。值越大motion information越小,NR3D越强。
MD.ThdByY:motion阀值根据亮度控制,值域0 ~ 255。值越大NR3D越强。
MD.GainByY:motion scale根据亮度控制,值域0 ~ 255。值越大motion information越小,NR3D越强。可针对特定noise 较强的亮度作加强,或对拖影有疑虑的亮度作减弱。
TF.Str:NR3D强度,值域0 ~ 64。值越大NR3D越强。
TF.StrEx: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,则维持不动。
图 3-22
-
调整步骤
-
首先针对静止画面调整NR3D 强度,降低画面noise跳动的程度。
调整NR3D强度,目标是让画面整体看起来安定。建议TF.Str设63,将MD.Gain增加至画面变安定即停止。若MD.Gain需要设很大才能让画面安定,可以适时增加MD.Thd,但建议不要超过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.GainByY做微调。将对应亮度区域的值慢慢下降至拖影与noise都可接受的程度。
-
当gain越来越高,移动noise若都只靠NRLuma是不够的,此时可以修改TF.LUT,让曲线下降得更缓慢一些来增加移动区域NR3D的强度,但同时也须考虑拖影变严重的程度。最后一个值不用一定要设0,但若造成移动物体边缘出现粉红色拖影,可透过AREn的功能,限制较亮、较动的NR3D强度,以避免这种拖影发生。
3.3.2. 3.3.2 NR3D OFF¶
-
由于有些IC为了节省成本没有DRAM,因此没有NR3D只能使用其他denoise,以下为建议调整方式。
-
调整界面
同3.3.1。
-
参数说明
同3.3.1。
-
调整步骤
确认Iqfile是使用3dnr off的版本
NRLuma界面中,建议将Strength开到63(最大值),调整Kernel强度。
Despike调整方法与3DNR on相同。
若还有需求,可以再调整剩下的denosie,调整方法与3DNR on相同。
3.3.3. 3.3.3 NRLuma¶
-
调整界面
于左侧选单点选Denoise_YNR,接着在右侧主画面可找到NRLuma界面
图 3-23:NRLuma调整界面
-
参数说明
Strength:整体强度,值域范围:0~63,值越大则NR越强。
KernelStr:Filter强度,值域范围:0~7,值越大则NR越强。
KernelStrByDiff:Filter混合权重表,值域范围:0~31,值越大则NR越强,横轴为与中心点的差异,越右边则差异越大,纵轴为权重,正常情况下,差异越小则权重设越大,NR强度也越强。
-
调整步骤
-
将Strength设到最大,调整KernelStr来平衡噪声压抑跟细节保留。
-
若KernelStr无法达到预期效果,再微调KernelStrByDiff。
-
适当调降Strength。
-
3.3.4. 3.3.4 NRLuma_Adv¶
-
调整界面
于左侧选单点选Denoise_YNR,接着在右侧主画面可找到NRLuma_Adv界面
图 3-24: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。
-
3.3.5. 3.3.5 NRChroma¶
压抑画面中颜色的噪声,此模块为简单的模块,色溢会较为严重,建议不要开太强。
-
调整界面
于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma界面。
图 3-25 :NRChroma调整界面
-
参数说明
MatchRatio:符合比例阀值,越大越强,值域0 ~ 31。
UvTh:U/V 噪声阀值,越大越强,值域0 ~ 256。
StrengthByCEdge :依据color edge控制NRChroma强度,越大越强,值域0 ~ 511。
-
调整步骤
-
调整MatchRatio和UvTh,可以观测到color noise会散开,过强会有色彩溢出的现象,调整到可接受的范围。
-
降低StrengthByCEdge,进一步压抑有色彩溢出的部分。
-
3.3.6. 3.3.6 NRChroma_Adv¶
压抑画面中颜色的噪声
-
调整界面
于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma_Adv界面。
图 3-26: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将移动区的饱和再拉回来。
-
3.3.7. 3.3.7 NRChroma_Pre¶
压抑画面中颜色的噪声
-
调整界面
于左侧选单点选Denoise_CNR,接着在右侧主画面可找到NRChroma_Pre界面。
图 3-27: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,减轻色溢。
3.4. Sharpness调整¶
-
调整锐化强度调整,例如不同亮度的锐化强度,黑边白边的锐化强度,动静态的锐化强度等等。
-
调整界面
于左侧选单点选Sharpness,接着在右侧主画面可找到Sharpness界面。
图 3-28:Sharpness调整界面
图 3-29: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越弱。
图 3-30: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计算得到的分数,来判断单纯边缘区和复杂区,值越小则越偏向单纯边缘区。 H ighRatioDByState:方向性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,值大强则黑边强度越强。
图 3-31:OverShootGain & UnderShootGain
SclByY:依据亮度调整整体增益,值域范围:0~255,横轴为亮度,越右边越偏亮,纵轴为edge增益(64=1x),值越大则edge越强。
EdgeKillLut:根据edge强度调整edge强度,值域范围:0~1023,横轴为输入edge,纵轴为输出edge,值越大则edge越强。通常平坦区的edge强度较小,因此可以把小edge调的更小,让平坦区更平顺。总共有七个节点,如有需要改变横轴节点,可调整EdgeKillLutSft。
图 3-32:EdgeKillLut
OverShootLimit:依据周围最亮点做调整,值域范围:0~1023,设0则edge上限为周围最亮点的Y值,也就是不会overshoot。
UnderShootLimit:依据周围最暗点做调整,值域范围:0~1023,设0则edge下限为周围最暗点的Y值,也就是不会undershoot。
图 3-33: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, 2^GainByStdSft[0], 2GainByStdSft[0]+2GainByStdSft[1], 2GainByStdSft[0]+2GainByStdSft[1]+2^GainByStdSft[2], ...,y轴依序为GainByStd[0], GainByStd[1], GainByStd[2], ...。如需调整,建议用excel画出原本的曲线,调整GainByStdSft将想要细调的区间切细后,找到对应的GainByStd,确认效果和先前一致后,再调整GainByStd。
EdgeKillLutSft:EdgeKillLut的横轴节点,值域范围:0~15,有七个断点,x轴依序为0, 2^EdgeKillLutSft[0], 2EdgeKillLutSft[0]+2EdgeKillLutSft[1], 2EdgeKillLutSft[0]+2EdgeKillLutSft[1]+2^EdgeKillLutSft[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反复调整。
-
-
4. WDR¶
Wide Dynamic Range(WDR)用于增宽动态范围,让同一个影像画面中,可以同时分办出亮部和暗部的细节。 WDR对暗处亮度的提升非常明显,可以提升暗处的细节,但是在调试中会影响到亮度维度和对比度维度,过强的WDR强度也会拉出噪声。另外,WDR会对高动态范围进行压缩处理(HDR合成的图像的动态范围一般很大),让高动态的场景可以在低动态范围的屏幕上不会显示异常。
4.1. WDR¶
使用block base local histogram equalization的方式,加强区域性的影像动态范围。
-
调整界面
于左侧选单点选WDR即会出现WDR接口。
图 4-1: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中06是一种拉亮模式,715是第二种拉亮模式)。
图 4-2:预设的16条Global tone mapping(Linear)
图 4-3:预设的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),值越小则去色彩越强,影像越偏灰。
-
调整步骤
-
建议先直接将WDR enable,观察预设效果是否足够,优先根据场景选择BoxNum,通常关注细小细节可以加大BoxNum值,但是如果需要兼容全场景,建议BoxNum选择2或者3。
-
如强度太强或太弱,可直接简单调整Strength,通常不易太大,特别是低照度场景,降低WDR强度,后面通过RGBgamma或者Ygamma去提升亮度而减弱拉出来的噪声。
-
如较关注的问题为暗处拉亮效果,可再搭配调整DarkToneEnhance。
-
其余再针对各別亮度的强度进一步调整WDRStrByY,建议左边的暗处强度减弱,这样不容易拉出噪声,同时不会损失对比度。通常暗部和亮部的强度会减弱来保证对比度。注意, gamma、defog等模块都会影响到对比度。
-
DarkLimit或BrightLimit,针对一些特殊场景,希望暗处不要拉亮或者亮处不要拉亮,可调试这两个参数,但是注意,有效值(245~255此区间效果才明显)的影响较大,调试的时候主要要微调。
-
若有因为WDR太强而导致不连续或小区块过暗/过亮,可以调整StrengthByOpsCnt。
-
若有因为WDR太强而导致高增益处出现色偏,可以调整de-saturation功能。
-
4.2. WDRCurve¶
WDR进阶参数。
-
调整界面
于左侧选单点选WDRCurve即会出现WDRCurveFull接口。
图 4-4:WDRCurveFull调整界面
-
参数说明
GlobalToneSft : Global tone的横轴节点,值域范围:3~15,有32个节点,x轴依序为0, 2^GlobalToneSft[0], 2GlobalToneSft[0]+2GlobalToneSft[1], 2GlobalToneSft[0]+2GlobalToneSft[1]+2^GlobalToneSft[2], ...,y轴依序为GlobalToneLut[0], GlobalToneLut[1], GlobalToneLut[2], ...,此外,y轴的最后一个节点有特殊设计,若x轴的最后一个节点小于65535,则y轴的最后一个节点为GlobalToneLut[32],若x轴的最后一个节点大于65535,则y轴的最后一个节点为GlobalToneLut[31]+GlobalToneLut[32],主要是为了让global tone能完全使用所有动态区间,也就是解决最后一个节点不一定刚好落在(x,y)=(65535,4095)的问题,假设x轴的最后一个节点超过65535,那y轴也要超过4095,才能让此节点和前一个节点的线段刚好通过(x,y)=(65535,4095)。如需调整,建议用excel画出原本的曲线,调整GlobalToneSft将想要细调的区间切细后,找到对应的GlobalToneLut,确认效果和先前一致后,再调整GlobalToneLut。
GlobalToneLut : Global tone的纵轴节点,值域范围:0~4095。功能和DarkToneEnhance相同。
Curve1: 前级亮度调整曲线,值域范围: 0~4096。横轴为输入亮度,纵轴为输出亮度,值越大则「没有经过直方图均衡化处理的影像」越亮。输出结果会依据Strength和WDRStrByY的比例来混合经过直方图均衡化处理的结果,剩下的比例会混合经过Curve1处理的结果。
Curve2:后级亮度调整曲线,值域范围: 0~4096。横轴为输入亮度,纵轴为输出亮度,值越大则最终影像越亮。 - 调整步骤
-
调整global tone。
-
调整Curve1和Curve2,如果觉得暗处很暗,可以将Curve2暗处拉亮一些。
-
4.3. Defog¶
去雾功能,达到更好多对比感。
-
调整界面
于左侧选单点选WDR即会出现Defog接口。
图 4-5:Defog调整界面
-
参数说明
Strength : 设定对比度、亮度、灰度的可变强度数值,预设为50。
-
调整步骤
调整Strength,来达到更好的对比感。建议作为去雾功能接口,优先使用WDR。
5. DUMMY¶
Dummy api是一个默认的接口,若有新增功能,都会透过此接口,以避免不断新增接口,或是影响原本的结构体。默认值皆为-1,则代表bypass此功能。若有开启Dummy api,保存bin档的时候,务必勾选InFile,方能保存参数。
5.1. Dummy¶
支持by iso调整。
-
调整界面
于左侧选单点选Dummy即会出现Dummy界面。
图 5-1: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界面。
图 5-2: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界面。
图 6-1: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界面。
图 6-2:TemperatureInfo调整界面
-
参数说明
Temperature :获取当前chip温度,只读。
7. DAY NIGHT MODE DETECTION¶
侦测环境亮度,一般会使用ALS(环境光传感器),根据得到的信息决定目前为Day或Night mode。这边我们提供了不须ALS侦测Day Night mode的功能,让用户可以自定义判断条件,并依据回传信息来做Day Night mode的切换。
7.1. DayNightDetection¶
Day/Night侦测API。使用者可分别设定Day to Night及Night to Day的判断条件,判断结果会在DayNightInfo中显示。
-
调整界面
在左侧选单点选Day/Night Mode即会出现DayNightDetection接口。
图7-1 DayNightDetection调整界面
-
参数说明
Enable :功能开关。只有在打开时DayNightInfo的信息才有效。
D2N_BvThd :用来判断是否要切为Night mode的BV阀值,当Current BV(BV in AEInfo)小于此阀值时,则DayNightInfo中的D2N会秀TRUE。值域:-1048576~1048576。
N2D_VsbLtScoreThd :用来判断是否要切为Day mode的Score阀值,Score是由可见光与IR光比例所算出的一个分数,分数越高表示可见光成分越多。当目前Score (N2D_VsbLtScore in DayNightInfo)大于此阀值时,DayNightInfo中的D2N会秀TRUE。值域:0~2000。
7.2. DayNightInfo¶
显示当前Day Night侦测的结果。要注意此API只是显示侦测结果,用户仍须自行根据侦测结果做对应的动作,例如load Day bin或Night bin,IR灯的控制等等。
-
调整界面
在左侧选单点选Day/Night Mode即会出现DayNightInfo接口。
图7-2:DayNightDetection调整界面
-
参数说明
D2N :目前是否需要转为Night mode的flag,秀1时表示目前环境亮度已达要切Night mode标准。 注意此flag只有当目前在Day mode的状态下才具有参考意义。
N2D :目前是否需要转为Day mode的flag,秀1时表示目前环境亮度已达要切Day mode标准。注 意此flag只有当目前在Night mode的状态下才具有参考意义。
N2D_VsbLtScore:显示目前可见光与IR光比例所算出的分数,分数越高代表环境中可见光的比例越高。使用者可 以在认为该切回Day mode的环境下读取此值来决定N2D_VsbLtScoreThd该设多少。
8. NIGHT MODE SETTING¶
当环境亮度暗到一定程度,通常会打开IR灯,并将镜头的IR-Cut filter打开来增加进光量,这属于特殊状况,因此有些AE、AWB及IQ设定需要配合修改。由于有打IR灯,尽管是night mode也有可能使用到很低的gain值,因此不建议day mode与night mode共享同一个bin档,单靠ISO index值来区分,建议是day mode与night mode分开存成两个bin文件,当系统判断要切换mode时再去load对应的bin档,下面会介绍当进入night mode时建议的一些对应设定来降低noise level。
8.1. ColorToGray¶
当IR-Cut filter打开颜色会变异常,因此通常会将画面由彩色转为灰阶。
-
调整界面
于左侧选单点选ColorToGray即会出现ColorToGray接口。
图 8-1:ColorToGray调整界面
-
参数说明
Enable :彩转灰功能开关,相当于将Saturation设为0。
9. RGBIR SENSOR TUNING¶
RGBIR senor 是一种特殊的sensor 型态,相较于一般的RGB Bayer sensor 多出IR pixel 用于感应红外光。而结构上少掉一般的IR Cut 而是搭配Dual Band filter在后端用软件来进行减IR的动作。所以如何设定减IR的比例来使影像达到和搭配IR Cut 时相同的正常色彩即是本段所要讨论的课题。
9.1. RGBIR Ratio调整¶
-
调整界面
于左侧选单点选RGBIR即会出现RGBIR接口。
图 9-1:RGBIR调整界面
-
参数说明
IrPosType : 改变R,G,B,IR四种pixel在sensor上排列顺序的设定,值域0 ~ 7。
RemovelEn : 启动软件减IR的功能
Ratio_R : R通道减IR的比例表(由暗到亮),值域0 ~ 4095。
Ratio_G : G通道减IR的比例表(由暗到亮),值域0 ~ 4095。
Ratio_B : B通道减IR的比例表(由暗到亮),值域0 ~ 4095。
-
调整步骤
-
RGBIR 的ratio 与OB 有连动,调整前请先校正OB
-
统一将Ratio_R, Ratio_G, Ratio_B的最后一个值设到64, 然后其余的值全部填4095, 观察一下此时的画面,如果颜色有偏差则在进行下一步(调整时建议拍摄24色Color Checker,可同时观察下方灰阶区是否有色偏,及上方颜色是否正确)
-
调整过程我们都保持Ratio table 的最后一个值为64不动,因为这是为了避免过曝区亮度反而下降或跑出异常色彩的控制参数,不属于正常感光区间的调整范围。
-
保持Ratio_R,Ratio_B的设定,调降Ratio_G的设定到2000(table 由左至右都设相同的值2000,除了最后一个值不动一直维持64之外),此时画面应该会偏绿。
-
逐步调高Ratio_G的值,直到画面中灰阶的区域不再偏绿。
-
将Ratio_B设到2000, 此时画面会偏蓝,参照Ratio_G的作法,逐步调高Ratio_B的值到画面中灰阶的区域不偏蓝。
-
同Ratio_G及Ratio_B的做法,先降低数值然后再逐步调高,最后尽可能让颜色正确,灰阶不偏色。
-
如果有感觉特定颜色特定亮度存在色偏,则再去依照table由左至右依序为由暗到亮的控制规则,去调整特定亮度的raito。
-
10. YUV PATH IQ DESCRIPTION¶
若使用YUV data输入,则只有部分API能使用,请参阅ISP软件开发参考。
11. AE INTRODUCTION¶
AE的目的在于透过收到的统计值,计算出适当的光圈值/sensor增益/ISP数位增益/快门时间,使的统计值接近目标亮度,将画面整体亮度控制在一个理想的状态,又统计值取值位置在Gamma之前,因此建议的目标亮度约为470(AE亮度单位为8bit*10,值域0~2550)。
11.1. AE调整¶
-
调整界面
于左侧选单点选AE即会出现AE调整界面。
-
参数说明
-
< AEState>
AE State : AE状态控制选项,选择Normal AE会正常运作,选择Pause AE则会暂停在当时的状态,直到再次切回Normal才会继续运作。
-
< ManualExposure>
FNx10 : 光圈值(F number)× 10 (ex:F1.8 18)。
SensorGain : Sensor增益(1024 = 1x)。
ISPGain : ISP数位增益(1024 = 1x)。
US : 快门时间,单位为μs。
-
< AEConverge>
ConvThdIn : 内收敛区间。当AE动作处于收敛过程中时,会将画面收敛到target +-内收敛区间范围内才停止。
ConvThdOut : 外收敛区间。AE从稳态到再次开始进行收敛动作的启动门坎(当前亮度在target +-外收敛区间的范围外)。
ConvSpeedX : 收敛速度表X轴,对应到当前Cur Y的亮度。由左到右分别对应暗到亮,中间两格底层会自动对应到当前AE target的位置,所以这两格不需要修改,预设是470。头尾两格默认是0以及2000。
ConvSpeedY : 收敛速度表的Y轴。Cur Y对应到X轴后再找出对应的Y轴的收敛速度(比例)[0 ~ 1024],如果设置的数字过小则会感到AE反应速度缓慢甚至无法收敛,设得过大则亮度变化迅速,但从视频上看来会感觉有亮度闪烁的现象。
-
< AEStabilizer>
此功能可降低AE受画面局部变化的影响而被触发,让画面亮度更稳定。
Enable : 此功能开关。
DiffThd : 判断目前画面与参考画面是否有变化的阀值,Y差异超过此阀值则判为有变化,小于此阀值则当作无变化。值域0~20(精度8bits),建议值为2。不建议设定太大,容易导致光线渐亮渐暗的情况下不够连续。
Percent : 画面比例阀值,当AE在收敛的状况下,画面中被判断为有变化区域占全画面的比例小于此值,则AE维持不变。值域0~100,默认值为50。
-
< AEPlainTbl>
NumOfExpoTblEntry : 曝光行程表的列(row)数。
ExpoTblEntry : 曝光行程表。由左至右分别设置光圈(FNx10),快门(us),total gain,sensor gain,由上至下分别为由亮至暗。有一些限制,在相邻两列中,每次只能变化其中一个值,且shutter/gain需要符合sensor的限制,若超过限制则无法写入参数,并会打印讯息。
-
< AEWinWeight>
Weighting PAGEle ID :测光权重表ID。默认支持三种权重表:Average、Center、Spot。
WindowWeighting :测光权重表。权重表的有效范围为左上角16*16。
-
< ExposureStrategy>
此区作用为搭配AE target的设定,于浮动target时调整浮动target计算时在防过曝上的敏感度与强度
Strategy : 曝光策略,可选择 AUTO/暗阶优先(低光补偿)/亮阶优先(强光抑制)。
Weighting : 暗阶优先与亮阶优先的变化强度,weighting愈大愈强。
UpperNum : 向上浮动target的节点个数。
UpperY : 向上浮动的范围,如设0则等于关闭浮动target,将完全参考上面设的Target Offset 设定。
UpperX : 向上浮动范围对应BV的节点。
LowerNum : 向下浮动target的节点个数。
LowerY : 向下浮动的范围,如设0则等于关闭浮动target,将完全参考上面设的Target Offset 设定。
LowerX : 下浮动范围对应BV的节点。
Strength : 浮动target 时防过曝机制的敏感度,数字愈大愈敏感(拉暗)。
Sensitivity : 浮动target时防过曝机制作用的强度,数字愈大愈暗。
Note:浮动target 为参考影像Histogram 变化后自动计算的target。
-
< ExposureStrategyEx>
新版曝光策略设定,可自行设计防过曝或过暗策略,AE会针对此策略去动态调整SceneTarget。
Enable : 曝光策略开关,开启时ExposureStrategy会失效。
Mode : 曝光策略模式,有Count Mode与Target Mode可做选择。 选择Count Mode时,主要使用BT(DT)_ThdY以及BT(DT)_Percentx10。使用者可以指定在多少亮度以上(以下)的统计值占统计值总数量大约多少千分比。 选择Target Mode时,主要使用BT(DT)_Percentx10及BT(DT)_Taergetx10。使用者可以指定最亮(最暗)多少千分比的统计值平均亮度要接近多少亮度。
Priority : 曝光策略优先权设定,可选择暗阶优先(过暗抑制)/亮阶优先(过曝抑制)。
图 11-1:AE StrategyEx Count Mode & Bright Priority
图 11-2:AE StrategyEx Target Mode & Bright Priority
BT_NodeNum : Bright Tone相关参数的节点个数。
BT_NodeBV : Bright Tone节点对应BV设定。
BT_ThdY : Bright Tone亮度阀值设定,值域0~255。仅在Count Mode有用。
BT_Percentx10 : Bright Tone千分比设定,值域0~1000。在Count Mode及Target Mode都有用。
BT_TargetYx10 : Bright Tone目标平均亮度设定,值域0~2550。仅在Target Mode有用。
BT_MaxOffsetDown : AE taregt向下浮动的范围,值域0~2550。如设0则等于关闭浮动target,将完全参考上面设的Target Offset 设定。
DT_NodeNum : Dark Tone相关参数的节点个数。
DT_NodeBV : Dark Tone节点对应BV设定。
DT_ ThdY : Dark Tone亮度阀值设定,值域0~255。仅在Count Mode有用。
DT_ Percentx10 : Dark Tone千分比设定,值域0~1000。在Count Mode及Target Mode都有用。
DT_ TargetYx10 : Dark Tone目标平均亮度设定,值域0~2550。仅在Target Mode有用。
DT_ MaxOffsetUp : AE taregt向上浮动的范围,值域0~2550。如设0则等于关闭浮动target,将完全参考上面设的Target Offset 设定。
图 11-3:All LUTs share the same NodeNum & NodeBV
-
< AEStrategyExInfo>
GMBlendRatio :Adaptive Gamma与一般Gamma(Gamma页面的Gamma设定)的混和比例,值域0~1024。根据最终SceneTarget、TargetOffset及最大BT_MaxOffsetDown、DT_MaxOffsetUp计算得来。当ratio小于512,则拿BTGamma与一般Gamma做混和,当ratio大于512,则拿DTGamma与一般Gamma做混和,当ratio等于512,则直接使用一般Gamma。请参考下图。
图 11-4:How GNBlendRatio and AdaptiveGamma work
UpperLimitTargetYx10 :目前AE target浮动上限。
LowerLimitTargetYx10 :目前AE target浮动下限。
BTCntPcentx10 :目前大于BT_ThdY的统计值数量占总统计值数量的千分比。
DTCntPcentx10 :目前小于DT_ThdY的统计值数量占总统计值数量的千分比。
BTYx10 :目前最亮前BT_Percentx10千分比统计值的平均亮度。
DTYx10 :目前最暗前DT_Percentx10千分比统计值的平均亮度。
-
< AdaptiveGamma>
此功能需搭配StrategyEx,让Gamma可以根据SceneTarget做动态的调整,以达到增加动态范围的效果。
Enable : 此功能开关,关闭时直接使用一般Gamma。
BTGamma : 当GMBlendRatio小于512,会根据GMBlendRatio来将BTGamma与一般Gamma做混和。
DTGamma : 当GMBlendRatio大于512,会根据GMBlendRatio来将DTGamma与一般Gamma做混和。
-
< ExposureMode>
Exposure Mode : AE状态控制选项,选择Auto为全自动曝光,AV_Mode为光圈先决,SV_Mode为增益先决,TV_Mode为快门先决,M_Mode为全手动。
-
< AETarget>
Target Points Num : AE target 设置的节点个数(随不同环境亮度值(BV)提供设置不同的AE target)。
Target Offset : 各节点的AE target。
Target BV : 各节点对应的BV值。
-
< EVComp>
EVComp : +- ev 亮度补偿功能的分子,若为正值则会使AE target变高,反之则变低。
Grad : +- ev 亮度补偿功能的分母。
-
< ExposureLimit>
MinShutter : 最小快门时间。
MaxShutter : 最大快门时间。
MinFNx10 : 最小光圈值(数字愈大光圈愈小)。
MaxFNx10 : 最大光圈值。
MinSensorGain : 最小sensor增益。
MinISPGain : 最小ISP数位增益。
MaxSensorgain : 最大sensor增益。
MaxISPGain : 最大ISP数位增益。
-
< Flicker>
Flicker : 对应特定频率的抗闪设置。可选择Disable、50Hz、60Hz、Auto。会依据Flicker模式来改变shutter,以达到抗闪。
-
< FlickerEx>
Enable : 启动/关闭新版侦测抗闪烁功能。当开启新版时,旧版就会失效。
OpType : 侦测抗闪烁的工作模式,分别为Auto、Manual模式可选择。设为Auto时当侦测到需要切换Flicker模式 时,会自动切换。建议使用Auto。
AmpSensitivity : 调整侦测抗闪烁的灵敏程度(数值愈大愈灵敏),值域范围1~100,建议默认值为70。
ScoreThd : Auto模式下是否触发自动切换FlickerType的阀值,若Score小于此阀值,ValidTimes会加1,若大于此阀值,ValidTimes会被重置为0。值域范围1~100,建议默认值为50。
RefreshCycles : 调整侦测抗闪烁计算分数之更新速率,此参数代表几个cycle更新一次Score,一个cycle通常约在47个frame。值域范围110,值越大Score越可靠,但花的时间越久,建议默认值为3。
ValidTimesThd : Auto模式下,当ValidTimes到达ValidTimesThd,则算法会自动切换到另一个Flicker模式。值域范围1~10,值越大越不容易误判,但花的时间越久,建议默认值为2。
Flicker : 侦测抗闪烁模式,模式分别为60Hz = 0、50Hz = 1。
-
< FlickerInfo>
IsEffective : 取得当前侦测抗闪烁是否有效(1:有效值,0:无效值)。
FlickerType : 取得当前侦测抗闪烁模式,模式分别为60Hz = 0、50Hz = 1。
Score : 取得当前侦测抗闪烁有效模式的程度分数。
-
如果分数较高,则判断为当前的抗闪烁速率模式。
-
如果分数较低,则判断为另一种抗闪烁速率模式。
-
-
< RGBIR AE>
Enable : 启动/关闭 RGBIR AE。
MaxYWithIR : 减IR前的亮区平均亮度容许之最大值。
MinISPGainCompRatio : 透过ISP gain 来进行raw亮度补偿的最大比例,数字愈小补偿的程度愈大。
-
< DebugLev>
AE Debug Level : 设定AE Debug log 的输出设定。(0:disable, 1:Exposure, 2:Algo parameters, 4:Algo statistics, 32:API debug, 64:Exposure-2)
-
< AE HDR Ratio> - HDR mode only
AE HDR Poionts Num: 设置HDR长短曝比例变化的节点个数
HDR Ratio: 设置HDR长短曝的曝光比例(1024 = 1x)。
By Total Gain: HDR曝光比例依总增益变化的总增益横轴,建议使用默认值(默认值:1024, 2048, 4096, 8192...)。
< AEPlainShortTbl> - HDR mode only
NumOfExpoTblEntry: 短曝光曝光行程表的列(row)数。
ExpoTblEntry: 曝光行程表。由左至右分别设置光圈(FNx10),快门(μs),total gain,sensor gain,由上至下分别为由亮至暗。限制同ExpoTblEntry,且长短曝曝光行程表同一列要刚好差HDR Ratio的倍率。
< ManualShortExposure> - HDR mode only
FNx10: 光圈值(F number)× 10(ex:F1.8 18)。
SensorGain: Sensor增益(1024 = 1x)。
ISPGain: ISP数位增益(1024 = 1x)。
US: 快门时间,单位为μs。
11.2. AEInfo¶
此界面可秀出当下AE相关信息,点选ReadPage可实时更新。
图 11-5:AEInfo界面
IsStable : 当下AE是否在稳定状态。
isReachBoundary : 当下AE是否达到曝光表最小/最大的临界范围。
FNumber : 当下AE长曝光圈数值。
SensorGain : 当下AE长曝Sensor增益数值。
ISPGain : 当下AE长曝ISP数位增益数值。
Shutter : 当下AE长曝快门时间数值。
Fnumber_S : 当下AE短曝光圈数值(如果是HDR模式,此参数才有效)。
SensorGain_S : 当下AE短曝Sensor增益数值(如果是HDR模式,此参数才有效)。
ISPGain_S : 当下AE短曝ISP数字增益数值(如果是HDR模式,此参数才有效)。
Shutter_S : 当下AE短曝快门时间数值(如果是HDR模式,此参数才有效)。
WeightedYx10 : 当下AE取得统计值和Weight Table加权平均的亮度数值。
AverageYx10 : 当下AE取得统计值平均亮度数值。
Histogram : 当下AE取得共128 bins的直方图统计资料。
LVx10 : 当下AE根据APEX公式计算得到light value(LV)。
BV : 当下AE根据APEX公式计算得到brightness value(BV)。
SceneTargetx10 : 当下AE根据BV查表得到目标亮度数值。
12. AWB INTRODUCTION¶
由于sensor 上R、G、B pixel的感光特性不同,因此在不同光源下看到的灰阶会有色偏,AWB主要的目的就是希望自动找出一组Rgain、Bgain来做补偿,让画面中灰阶的地方R、G、B值尽量接近。
12.1. AWB调整¶
AWB的统计值是将整张画面切成128×90个等分,每个等分都具有代表的R、G、B值,预设横轴有做取样来减少运算量,因此实际只有64×90个统计值。如果想查看某个场景的统计信息,可以开启AWB Analyzer插件,点击Update可更新为当时的统计信息,图表横周轴代表(R/G)×100,纵轴代表(B/G)×100,因此每个区块都能以本身的R、G、B值算出一组坐标,并将落点以绿点秀在窗口上(此落点不是单纯的白点,而是整个画面的统计信息,会包含其他颜色的点),如下所示。
图 12-1:利用AWB Analyzer分析统计信息
-
调整界面
于左侧选单点选AWB即会出现AWB调整界面。
图 12-2:AWB基本调整接口
图 12-3:AWB Advance Mode调整界面
图 12-4:AWB混光色偏校正设定接口
图 12-5:CTMWB设定接口
图 12-6:AWB Stabilizer设定接口
-
参数说明
-
< WBAttr>
建议整参数
AwbState : AWB状态控制选项,选择Normal时,AWB会正常运作,选择Pause时,AWB则会暂停在当时的状态,直到再次切回Normal才会继续运作。
AwbMode : WB状态控制选项,选择Auto为AWB,选择Manual为MWB。 sManual.R/GR/GB/Bgain : 当AwbMode选择Manual时,会直接套用这四个gain值,值域0~8191(1024为1倍)。
Speed : AWB收敛速度控制,值域1~100,值越大越快收敛,预设为20。
ConvInThd : 收敛区间大小控制,值域0~255,值越大越容易收敛,但容易与目标差距较大,设太小容易让AWB不稳定,预设建议值为32。
ConvOutThd : 从收敛状态跳出重算白平衡的阀值控制,值域0~255,不建议设太大,否则当灯源有些变化时白平衡无法重新计算会导致色偏,预设建议值为64。
eAlgType : 白平衡算法模式选择,共有以下四种模式:
1. GrayWorld:以所有統計值來計算WB gain。 2. Normal:以落點數最高的2~3個色温框內的統計值來計算WB gain。 3. Balance:以所有落入有效色温框的統計值來計算WB gain。 4. Focus:WB gain計算會偏向单一色温为主。
eAdvType : WBAttrEx功能开关,选择Advance时WBAttrEx才有作用,预设为Default不使用WBAttrEx。
RG/BG Strength : R与B的一个global gain,会在最后算出来的R、B gain再乘上一个gain,值域0~255,128为1倍。
MaxRgain/MaxBgain : 高色温R、B gain限制,值域0~8191。
MinRgain/MinBgain : 低色温R、B gain限制,值域0~8191。
LvWeight : 各环境亮度下色温权重设定,权重越大,计算R、B gain时该色温所占的比例越高,值域1~255。
PreferR/Bratio : 各环境亮度下R、B ratio设定,此ratio会乘在目标R、B gain里,值域1~255。
u2WpWeight : 判断成为参考白点的权重,权重越高越容易被选为参考白点,值域1~400,预设为100。
图 12-7:bWpWeightEnable开关效果差异(左:开 / 右:关)
WeightWin : 将画面区分为9x9个区域,可以分别给定每个区域的权重,权重越大白平衡越会偏向将该区域做灰。值域0 ~ 16。权重大小是相对的不是绝对的,也就是全部设1与全部设16基本上是相同的。当镜头是固定的,而且很明确知道画面中哪个区域是你希望拿来做白平衡或不希望做白平衡的,就可以利用此功能做调整。
-
< WBAttrEx>
WBAttrEx系列参数需要在eAlgType设为Advance时才有作用,主要是让使用者可另外自定义几个特殊框,并选择是要加入还是排除落入这个特殊框的统计值,共有4组设定可供使用。 ExtraLtEnable : 特殊色温框功能开关,需设为Enable特殊色温框才有作用。
sLtInfo.WR/Bgain : 特殊色温框中心坐标所代表的R、B gain,值域0 ~ 8191,换算方式是开启AWB Analyzer分析统计值落点,将指针移到欲选择区域的中心查看坐标,假设Rx = 40、By = 60,先将坐标除以100(0.4, 0.6),再取倒数(1/0.4, 1/0.6),最后再乘上gain base 1024(WRgain = 2560, WBgain = 1706)即完成特殊框中心位置转换。
sLtInfo.AreaSize : 特殊框的宽高,值域1 ~ 32,当设32时代表从中心往上下左右延伸16的范围。
sLtInfo.bExclude : 特殊框模式选择,选择Include代表落入特殊框的统计值也会被拿来参考,选择Exclude代表落入特殊框的统计值将会被忽略。
-
< WBMultiLSAttr>
此功能需要eAlgType选择Focus时才有作用。此时AWB的R、B gain会尽量以参考白点为主,此时若遇到混光场景,离参考白点远的一方色偏会相当明显,若希望色偏减弱一些则可开启此功能,但副作用是会让其他颜色色相有些改变。下面是开启此功能前后差异比较图。
图 12-8:开启WBMultiLSAttr功能前后差异比较(左:关 / 右:开)
Enable : 混光色偏校正功能开关。开启时色偏区域可获得改善,但AWB做灰区域颜色会有些色偏。
Sensitive : 混光判断敏感度调整,值域1~10,值越大容易将场景判断为混光场景。
CaliStrength : 混光色偏补正强度控制,值域0~100,100是1倍,也就是CaliCcm原始强度。
CaliCcm_LowCT : 混光时, 当AWB选择将高色温做灰, 则会选择此CCM来减少低色温区偏色严重的问题。目前只开放第一和第三横列可调整。第二横列调整了不会有作用。此CCM强度主要套用在两混光光源分别是StartInd和EndInd时,实际套用的强度会根据两光源距离与StartInd和EndInd距离的比例来决定。
CaliCcm_HighCT : 混光时, 当AWB选择将低色温做灰, 则会选择此CCM来减少高色温区偏色严重的问题。目前只开放第一和第三横列可调整。第二横列调整了不会有作用。第二横列调整了不会有作用。此CCM强度主要套用在两混光光源分别是StartInd和EndInd时,实际套用的强度会根据两光源距离与StartInd和EndInd距离的比例来决定。
图 12-9:CaliCcm_LowCT界面
调整CaliCcm建议,以CaliCcm_LowCT为例:
-
将灯箱开至D65(若有更接近StartIdx的灯源也可以用该灯源), 让AWB将其作灰。
-
将AWB切至PAUSE。
-
将灯箱切至F(若有更接近EndIdx的灯源也可以用该灯源),调整CaliCcm_LowCT,调整时还要时常切回之前做灰的灯源看看正常颜色有没有偏的太离谱,调整到两边都可接受即完成。
-
-
< CTMWB>
当WBAttr中的AwbMode选择CT Manual时才有效,使用者可以透过选择色温来套用对应的WB gain。
ColorTemperature : 设定指定色温。值域1000~20000。
-
< AWBStabilizer>
当环境稳定下,却发现AWB一直不断被trigger,导致画面颜色不断来回变化时,建议可以开启此功能来让AWB变化更稳定。
Enable :AWB Stabilizer的开关。
GlbGainThd :整体WB gain变化的阀值控制。当AWB在收敛状态要重新被trigger,除了满足原有的条件之外(ConvOutThd),还需要整体WB gain变化超出此阀值才会被重新trigger。值域0 ~ 512,建议此值设的与ConvOutThd相同或更小一些即可,默认值是64。
CountThd :连续判定要重新trigger AWB的次数阀值。当此值为2则须连续三次满足重新trigger的条件才会重新触发AWB,否则AWB仍会维持在稳定状态。值域0 ~ 100。建议此值不需要设太高,因为会延迟AWB被触发的反应时间。默认值为2。
ForceTriGainThd :为了避免环境光源色温瞬间大幅度变化时AWB反应时间因CountThd变慢,我们又定义了一个强制Trigger的gain阀值,只要当Gain变化满足重新trigger AWB的条件,且变化量大于此阀值,则会忽略CountThd直接trigger AWB。值域0 ~ 8191。默认值150。
-
< DebugLev>
AWB Debug Level : 设定AWBDebug log 的输出设定。
1: show simple algo paramaters
2: always show detail algo parameters
3: show detail algo parameters
7: User Parameters
-
12.2. AWBInfo¶
此界面可秀出当下AWB相关信息,点选ReadPage可实时更新。
图 12-10:AWBInfo界面
IsStable : 当下AWB是否在稳定状态。
WB_Rgain : 当下WB所使用的R gain。
WB_Grgain : 当下WB所使用的GR gain。
WB_Gbgain : 当下WB所使用的GB gain。
WB_Bgain : 当下WB所使用的B gain。
WB_CT : 当下判断出的环境色温。
此功能需要eAlgType选择Focus时,以下项目显示的值才有意义。
WPInd : 当下的参考白点Index。
MultiLS_Detected : 显示是否侦测出混光场景。
MultiLS_FirstLSInd : 显示第一大混光光源index×2,要除以2才是实际的光源index,例如当index是8则实际是4,当index是9实际是4.5,若有.5表示此光源判断是落在4和5色温框之间。
MultiLS_SecondLSInd : 显示第二大混光光源index×2,要除以2才是实际的光源index,例如当index是8则实际是4,当index是9实际是4.5,若有.5表示此光源判断是落在4和5色温框之间。
图 12-11: MultiLS_FirstLSInd & MultiLS_SecondLSInd示意图
13. AF INTRODUCTION¶
AF的目的在于透过收到的统计值将画面对焦在一个理想的状态。详细使用参考可参考AE/AWB/AF interface。
13.1. AF调整¶
-
调整界面
于左侧选单点选AF即会出现AF调整界面。
-
参数说明
-
< AF_HWROIMODE>
Mode :ROI模式控制选项,选择Normal可切为16组ROI,window size与位置可随意分割,选择Matrix可切为16 * N组ROI,window size与位置稍有限制。
VerticalBlockNumber :当Mode为Matrix时才有效果,可切为16 * N组ROI(N = VerticalBlockNumber)。
-
< AF_HWWIN>
Win :16组ROI坐标,依序为x_start, y_start, x_end, y_end。注意:Normal模式的window的宽高可重迭,matrix模式的window宽可重迭,高不可重迭。
-
< AF_HWFILTERATTR>
IIR1 :IIR high滤波器系数。
IIR1_Clip :IIR high滤波器系数的输入/输出限制。
IIR2 :IIR low滤波器系数。
IIR2_Clip :IIR low滤波器系数的输入/输出限制。
IIR1_E1_En :IIR high串接第一级滤波器开关。
IIR1_E1 :IIR high串接第一级滤波器系数。
IIR1_E2_En :IIR high串接第二级滤波器开关。
IIR1_E2 :IIR high串接第二级滤波器系数。
IIR2_E1_En :IIR low串接第一级滤波器开关。
IIR2_E1 :IIR low串接第一级滤波器系数。
IIR2_E2_En :IIR low串接第二级滤波器开关。
IIR2_E2 :IIR low串接第二级滤波器系数。
-
< AF_HWFILTERSQ>
SobelYSatEn :Sobel滤波器Y阀值开关。
SobelYThd :Sobel滤波器Y阀值,当SobelYSatEn为true时才有作用,亮度小于此值就会列入Sobel滤波器计算。
IIRSquareAccEn :IIR滤波器增强控制开关。
SobelSquareAccEn :Sobel滤波器增强控制开关。
IIR1Thd :IIR high滤波器输阀值,输出前会再减去此值。
IIR2Thd :IIR low滤波器输阀值,输出前会再减去此值。
SobelHThd :Sobel H滤波器输阀值,输出前会再减去此值。
SobelVThd :Sobel V滤波器输阀值,输出前会再减去此值。
AFTblX :IIR/Sobel滤波器nonlinear mapping的横轴节点,以二的幂次方累加。
AFTblY :IIR/Sobel滤波器nonlinear mapping的纵轴节点。
-
< AF_HWYPARAM>
R:Bayer to Y的r channel比例(0~255)。 G:Bayer to Y的g channel比例(0~255)。 B:Bayer to Y的b channel比例(0~255)。
-
< AF_HWSOURCE>
Source :抽取统计值的位置。
HDR模式
参数名称 描述 SE_OBC_BF_HDR 选择HDR前的短曝结果(OB后) SE_WBG_BF_HDR 选择HDR前的短曝结果(WBGain后) ALSC_AF_HDR 选择HDR后的结果(Shading后) WBG_AF_HDR 选择HDR后的结果(WBGain后) LE_OBC_BF_HDR 选择HDR前的长曝结果(OB后) LE_WBG_BF_HDR 选择HDR前的长曝结果(WBGain后) 线性模式
参数名称 描述 SE_OBC_BF_HDR 选择OB后的结果 SE_WBG_BF_HDR 选择WBGain后的结果 ALSC_AF_HDR 选择CI前的结果(Shading后) WBG_AF_HDR 选择CI前的结果(WBGain后) LE_OBC_BF_HDR 不支持 LE_WBG_BF_HDR 不支持 -
< AF_HWPREFILTER>
IIR1En:IIR1使用PreFilter的开关。
IIR1Cor:IIR1设定周围对角方向,四个像素的比例。
IIR1Hor:IIR1设定周围水平方向,两个像素的比例。
IIR1Vert:IIR1设定周围垂直方向,两个像素的比例。
IIR1Cent:IIR1设定当前像素的比例。
IIR1Div:IIR1将上述像素结果累加起来,作除法的动作。
IIR2En:IIR2使用PreFilter的开关。
IIR2Cor:IIR2设定周围对角方向,四个像素的比例。
IIR2Hor:IIR2设定周围水平方向,两个像素的比例。
IIR2Vert:IIR2设定周围垂直方向,两个像素的比例。
IIR2Cent:IIR2设定当前像素的比例。
IIR2Div:IIR2将上述像素结果累加起来,作除法的动作。
像素排列如下
Cor Vert Cor Hor Center Hor Cor Vert Cor 则做以下动作
Out = (u8Cor * (Cor + Cor + Cor + Cor) + u8Hor * (Hor + Hor) + u8Vert * (Vert + Ver) + u8Cent * (Cent)) / u8Div
-
< AF_HWYMAP>
Enable:YMap 的开关。
LumaSource:选择AF_Luma统计值,是否经过YMap的效果。
YMapX:YMap的横轴,以二的幂次方累加,最后一点累加完需大于等于1023。
YMapY:YMap的纵轴,0~1023。
.ymap_x = {4,4,4,4,6,7,8,9}, 实际横轴为0, 16, 32, 48, 64, 128, 256, 512, 1024 .ymap_y = {0,72,135,183,222,340,501,722,1023},
-
< AF_HWLDG>
IIR1En:IIR1使用LDG功能的开关。
IIR2En:IIR2使用LDG功能的开关。
FIRHEn:FIRH使用LDG功能的开关。
FIRVEn:FIRV使用LDG功能的开关。
IIRCurveX:IIR LDG横轴,输入为亮度值,0~1023。
IIRCurveY:IIR LDG纵轴,输出为统计值比例,0~255,255代表不衰减。
FIRCurveX:FIR LDG横轴,输入为亮度值,0~1023。
FIRCurveY:FIR LDG纵轴,输出为统计值比例,0~255,255代表不衰减。
.curve_x = {0,300,1023,1023,1023,1023}, .curve_y = {255,255,40,40,40,40}, 此设定,针对亮度300以上的统计值,开始递减,到亮度1023时,递减为40/255=0.156左右。
-
< AF_ATTR>
State :状态控制选项,选择Norma会正常运作,选择Pause则会暂停在当时的状态,直到再次切回Normal才会继续运作。
Mode :状态控制选项,选择Manual可以直接设定motor位置,选择Auto可以选择不同Algorithm来进行对焦。
ManualMotorPos :当Mode为Manual时才有效果,直接设定motor位置。
Algo :当Mode为Auto时才有效果,目前支持两种算法。
OneShot:将所有位置都走一遍,然后到统计值最大的位置。
Continuous:会动态侦测环境变动,若有变化,则会重新对焦。
-
< AF_MOTOR>
MinMotorPos :Motor可移动到的最小位置。
MaxMotorPos :Motor可移动到的最大位置。
MinMotorStep :Motor在一帧的时间内,可移动的最小步伐。
MaxMotorStep :Motor在一帧的时间内,可移动的最大步伐。
-
< AF_ACC_WEIGHT>
WinNumX :X方向window总数
WinNumY : Y方向window总数。
EqualWinWgtEn :统计值等权重开关。
WinWgt : 统计值权重表,只有在EqualWinWgtEn为false时才有效果。
IIRHBlendEn : IIRH混合开关,并依照下列三个值来做混和。
IIRHWgt_FirstBlendIIRL : IIRH最先跟IIRL做混合,此值为IIRH比例。
IIRHWgt_SecondBlendSBLV : IIRH再次跟SobelV做混合,此值为IIRH比例。
IIRHWgt_ThirdBlendSBLH : IIRH最后跟SobelH做混合,此值为IIRH比例。
-
< AF_ONESHOT> 只有在Algo为OneShot时才有效果。
AccSel :统计值种类。
MotorStep :每一帧Motor的移动步伐。
-
< AF_SCENE_CHANGE> 只有在Algo为Continuous时才有效果。
PreAccSel :统计值种类,依照跟前一帧统计值的差异来判断环境是否改变。
PreAeAccDiffThOft :统计值Luma差异比例阀值,会统计超过此阀值的总数。
PreAeAccDiffThSlp :统计值Luma差异比例阀值斜率,可以依据motor step来增大阀值。
PreAeAccCntThOft :统计值Luma总数比例阀值,若大于此阀值,则判断为不稳定。
PreAeAccCntThSlp :统计值Luma总数比例阀值斜率,可以依据motor step来增大阀值。
PreAfAccDiffThOft :统计值(PreAccSel)差异比例阀值,会统计超过此阀值的总数。
PreAfAccDiffThSlp :统计值(PreAccSel)差异比例阀值斜率,可以依据motor step来增大阀值。
PreAfAccCntThOft :统计值(PreAccSel)总数比例阀值,若大于此阀值,则判断为不稳定。
PreAfAccCntThSlp :统计值(PreAccSel)总数比例阀值斜率,可以依据motor step来增大阀值。
FocusAccSel :统计值种类,依照跟前一次收敛结束的统计值的差异来判断环境是否改变。
FocusAeAccDiffTh :统计值Luma差异比例阀值,会统计超过此阀值的总数。
FocusAeAccCntTh :统计值Luma总数比例阀值,若大于此阀值,则判断为不稳定。
FocusAfAccDiffTh :统计值(FocusAccSel)差异比例阀值,会统计超过此阀值的总数。
FocusAfAccCntTh :统计值(FocusAccSel)总数比例阀值,若大于此阀值,则判断为不稳定。
StableCntTh :连续稳定帧数阀值,超过此值则判断为环境已经稳定,开始移动马达来进行对焦。
-
< AF_SEARCH_START > 只有在Algo为Continuous时才有效果。
SearchMotorStep :每一帧Motor的移动步伐。
SearchMotorDirByPosTh :依据当前Motor位置来决定移动方向,若大于此值,则往位置较小处移动,反之亦然。
SearchAccSel :统计值种类。
-
< AF_SEARCH > 只有在Algo为Continuous时才有效果。
MinMaxAccRatioPeakThOft :最小最大统计值差异比例阀值,用来判断peak。
MinMaxAccRatioPeakThSlp :最小最大统计值差异比例阀值斜率,可以依据经过总路径来降低阀值。
AccDecCntPeakTh :统计值连续下降次数阀值,用来判断peak。
NowFakeMaxAccRatioPeakTh :统计值下降比例阀值,用来判断peak。
AccDecCntWrongDirTh :统计值连续下降次数阀值,用来判断是否走错方向。
NowFakeMaxAccRatioWrongDirTh :统计值下降比例阀值,用来判断是否走错方向。
-
判断peak条件为 if((MinMaxAccRatioPeakThOft, MinMaxAccRatioPeakThSlp) && (AccDecCntPeakTh || NowFakeMaxAccRatioPeakTh))
-
判断wrong direction 条件为 if(AccDecCntWrongDirTh || NowFakeMaxAccRatioWrongDirTh)
14. IQTOOL接口联机功能操作¶
-
-
-
设定EVB网络功能,于终端机输入下列指令
#ifconfig eth0 hw ether 00:xx:xx:00:00:01 #ifconfig eth0 up #udhcpc #mixer -n 1 -q
其中-q表示开启 iqserver,IQTool才可以联机。
-
选择产品类型 1. IP Camera、2. Car Camera
-
输入EVB的IP地址
-
点选Connection图示( )即可以联机,图形变为( )表示成功联机,即可以开始使用IQTool调整影像的参数;再点选( )符号即会断线,图标变回( ),设定步骤如下所示。
图 14-1:IQTool接口联机设定
15. IQTOOL接口功能说明¶
15.1. IQTool界面¶
IQTool接口的左侧红色虚线框内是功能树状结构,以下图为例,每一个树状节点都是一个API集合。点选左方节点后会动态产生右方页面,点选左方AE节点后在右方动态产生该节点下的API:ManualExposure,可在右方接口中对API进行实际调值操作。
图 15-1:IQTool功能树形图
15.2. 参数调校¶
不同的API有不同种类的调参数功能,像是填入数值、下拉选单、取值、窗体建立,根据各个API的初始设定,有些可以Read和Write,有些只能Read。
调校参数类型:
-
数值:可通过以下三种方式修改值
-
点选上下箭头调值
-
直接在栏框内填值
-
左右移动滚动条调整值
数值类型会设定范围,根据不同的API初始设定Min以及Max值。以API为ManualExposure的情况下为例,FNx10最小值是10最大值是220。如果填小于10则会自动跳回10,如果填大于220则会自动跳回220,如下图 。
图 15-2:数值功能示意图
-
-
下拉选单:点选箭头后会出现下拉选单,即可点选不同的功能,以API AE - Flicker为例(如Figure 83),Enable下拉选单可以选择Disable、60Hz或是50Hz。
图 15-3:下拉选单功能示意图
-
读值:栏框内的值read only,不可以write,以API AWBInfo为例(如Figure 84),可以读取WB_Rgain栏框内的值2130,但不可以write。
图 15-4:读值显示于字段示意图
-
表格:页面上有一个按钮,如Figure 85所看到的Edit Table按钮。
图 15-5:点选Edit Table按钮可以弹出表格窗口接口
点选按钮以后,弹出表格窗口,如下窗口内有表格,点选Read按钮以后可以读取板子内的值,点选Write按钮,可将值写入板子。
图 15-6:表格窗口接口示意图
若是表格Read only,API设定不允许写入板子则只会显示出Read button。
图 15-7:Read only表格窗口示意图
15.3. 读写数据¶
可以读写所有API集合的数据,也可以读写目前页面所有的API资料,如下图,目前页面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 才会存入资料。小图示的详细说明参阅表 15-1。
图 15-8:读写数据接口示意图 表 15-1:读写数据图标详细说明
图示 | 功能 | 功能说明 |
---|---|---|
读取所有API集合页面的数据 | 按下R ALL按钮,即可读取所有API集合页面的数据。 | |
写入所有的数据到每个API集合页面 | 按下W ALL按钮,即可写入所有API集合页面(不包括Calibration)的数据。 | |
读取目前页面资料 | 按下Read Page按钮,即可读取目前页面所有的API数据。 | |
将目前页面的资料写入到API | 按下Write Page按钮,即可写入数据到目前页面所有的API。 | |
实时的将页面的数据写入到API | 选中时,即开启AutoWrite功能。 |
15.4. 保存Raw/YUV/JPG格式的图像¶
连接上板子以后,可以透过点选红色虚线标注的按钮,获取撷取图像的四种格式。
图 15-9:保存图像按钮接口示意图
开始抓图像后会产生一个新的窗口显示进度,抓取成功会在下方显示讯息,如图 90。下方会显示图像保存路径,默认保存在程序所在的目录下的./Image
中。
图 15-10:保存图像成功示意图
15.5. 新建、载入、保存页面参数¶
使用IQ Tool调整的过程中可以随时保存页面参数到指定路径中,也可以加载已经保存的参数档。
图 15-11:新建、载入、保存页面参数示意图
IQTool有提供自动存Bin File的功能,参数单位为分钟,0代表不自动储存,会储存在CvtXml这个文件夹下,如图 15-12,也会显示剩几秒就会存一次档,但如果操作期间有手动存,秒数会重来,如图 15-13。
图 15-12:自动储存Bin File示意图
图 15-13:显示距离下次存Bin File剩余时间
-
保存参数有两种格式
-
Xml格式:Xml主要用于保存工具的GUI接口(包含接口参数数值)。
-
Bin格式:Bin只保存api参数,可以透过在应用层调用
MI_ISP_API_CmdLoadBinFile(MI_U32 Channel, char* filepath, MI_U32 user_key)
自动加载api参数。
Magic Key:可以用来验证bin档是否与设备配对,Magic Key可以在Setting中设置。在bin的api参数之后会再附加相对应串口的Xml,为了达到Xml与api参数可以互相匹配的目的。 1. 加载参数有三种格式
-
Xml:Xml用于加载工具的GUI接口(包含接口参数)。
-
Bin:Bin用于载入api参数。
-
Bin Xml:Bin Xml用于加载api参数和附加相对应串口的Xml。
-
15.6. Gamma调值¶
-
点选Gamma树状节点,即在右方产生Gamma调值接口。
图 15-14:Gamma调值界面
-
Gamma 功能界面说明。
图 15-15:Gamma功能接口说明
图 15-16:Gamma存、读档格式示意图
Gamma 功能界面详细说明,下表。
表15-2:Gamma功能接口详细说明 | Num | Gamma接口功能图标 | 功能 | 详细说明 | |--------|--------------------|-----------|------------------| | 1 | ![](mymedia/tiramisu/table2-1.png) | 控制R,G,B线 | 1、勾选Gamma Red以后,即可用鼠标控制red line,且看的到red line。<br> 2、如果没有勾选,则不可以控制,且看不到red line。 <br> 3、勾选和不勾选Gamma Green,Gamma Blue 的功能相同。 | | 2 | ![](mymedia/tiramisu/table2-2.png) | 新增点,且自动产生曲线 | 利用上下小箭头(或在栏框内)输入x轴值以及y轴值,点选Set按钮后 <br> 1、尚未存在控制点,曲线上新增(x,y)控制点且周围产生平滑曲线跟着移动。 <br> 2、 如果曲线该x轴已存在控制点,控制点变更至所输入的y值,周围产生平滑曲线。 | | 3 | ![](mymedia/tiramisu/table2-3.png) | 重新设定 | 清除R、G或B的线,还原初始值的设定 | | (bypass gamma)。 | | 4 | ![](mymedia/tiramisu/table2-4.png) | 检查控制点 | 如果有成功产生出控制点则显示为Yes,如果失败则显示No。 | | 5 | ![](mymedia/tiramisu/table2-5.png) | 载入和储存RGB pixel | 1、Load:加载存有RGB pixel值的txt档,会自动产生RGB曲线。 <br> 2、 Save:把目前设定好的RGB曲线pixel值存入txt檔。如Figure 96 <br> 3、档案设定格式为:R→G→B <br> Header:0(说明) <br> pixel red:1 ~ 256 <br> pixel green:257 ~ 512 <br> pixel blue:513 ~ 768 | | 6 | ![](mymedia/tiramisu/table2-6.png) | 鼠标控制页面 | 1、鼠标左键点选曲线可在曲线上新增点,移动控制点和辅助点会自动产生平滑曲线。 <br>2、 鼠标右键点选控制点即可删除该控制点。 | | 7 | ![](mymedia/tiramisu/table2-7.png) | 控制点选项 | 1、选择Sync RGB格子,即可将R、G、B三条曲线合并成一条灰线,改变这条灰线可以同时对R、G、B三条曲线生效。<br>2、 左右拖动Section Bar可以设定曲线的控制点数量。 |
-
Gamma曲线的调整方式:初始化在坐标上可以看到RGB三条曲线。勾选Gamma Red、Gamma Green、Gamma Blue后可以利用鼠标控制十字符号移动点击控制曲线,如果点击的地方刚好三条曲线交叉重迭,优先级为Red、Green、Blue,先以R曲线为例可以按鼠标左键新增控制点,右键移除控制点,移动控制点可以改变曲线,控制点旁也会有两个辅助点,用来微调贝塞尔曲线。R、G、B各有256个pixel值,参考Figure 97。
图 15-17: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,按钮如图如下。 ![](mymedia/tiramisu/iq_13-18.png) 图 15-18:Gamma Read and Write item
15.7. Shading¶
15.7.1. 调整界面¶
点选Shading树状节点,即在右方产生ALSC接口。
图 15-19:Shading界面
15.7.2. 参数说明¶
Enable : ALSC API功能开关,0表示关闭、1表示启用,值域0 ~ 1。
GridX : shading table的X方向大小,此平台预设为27,值域1 ~ 27。
GridY : shading table的Y方向大小,此平台预设为17,值域1 ~ 17。
CCTThr : 环境色温节点设定,此平台最多支持3组Shading校正,注意index小到大需要按照色温低到高的顺序填入,值域1 ~ 3。
DeltaMode : 预设16种模式,纵轴表示每个模式、横轴表示X/Y方向每个格子的间格大小,在此平台为X=26, Y=16格间距,默认模式内的值越大则周围方格越小,值域0 ~ 15。
DeltaModeAvdEn : 选择启动进阶模式开关,0表示关闭、1表示启用,值域0 ~ 1。当GridX/Y使用非此平台预设27x17时,必须进入此模式进行非等距方格设定。
DeltaLutX : X轴间距,每个索引值(index)表示为一个block size(index = block size / 16),索引值只限填1,2,4,8,16,未使用则设为0,最多支持至72组,在此平台为26格间距。
DeltaLutY : Y轴间距,每个索引值(index)表示为一个block size(index = block size / 16),索引值只限填1,2,4,8,16,未使用则设为0,最多支持至72组,在此平台为16格间距。
R/G/B Gain Table : 点选R/G/B任意一个Table,会产生一个新的接口,在此平台上将画面分成一个27x17的矩阵,每个方格内的值表示这个位置的R/G/B分量需要乘上的权值,值域0 ~ 4095。
图 15-20:Shading 27×17 Table界面
15.8. Plugin¶
IQTool提供了AF、AWB、CCM、GAMMA、ALSC五种插件以辅助IQ调试。
图 15-21:Plugin下拉式选单界面
15.8.1. AF Analyzer¶
AF Analyzer为自动对焦校正分析外挂,主要用频率响应数值转换滤波器系数。
-
调整界面
图 15-22:AF Analyzer 界面(Frequency Mode)
图 15-23:AF Analyzer 界面(NonFrequency Mode)
-
参数说明
-
步骤
-
输入AF参数
Frequency Mode:输入截止频率产生频率响应
NonFrequency Mode:输入AF Fliter系数产生频率响应
-
输出AF Filter系数
-
输出AF频率响应曲线
-
-
输入参数字段(Input parameters)
Bands lower :低频响应最小数值,值域范围0.001 ~ 1.000
Bands higher :高频响应最大数值,值域范围0.001 ~ 1.000
Display float 选项 :enable → 显示AF系数,disable → 显示AF系数(二补码)
Normalizer X 选项 :enable → 正规化X轴值域,disable → 未正规化X轴值域
Run 按钮 :计算Coefficient A0,A1,A2,B1,B2和画AF频率显应曲线图
Frequency Mode 选项:选择输入参数方法
Coefficient :NonFrequency Mode时输入各级AF Filter系数
IIR Stage :选择位在哪一级AF Filter
-
Frequency Mode:直接输入截止频率即可
-
NonFrequency Mode:要根据级数输入系数 ex:第一级AF Filter选1对Coefficient输入系数,要再对第二级AF Filter输入系数IIR选2再对Coefficient输入一次系数 etc.
-
-
输出参数字段(Output parameters)
AF Filter Coefficient :A0, A1, A2, B1, B2
-
频率响应曲线(Frequency response curve)
X轴:取样点数量
Y轴:频率数值(db)
-
15.8.2. AWB Analyzer Combo¶
Awb Analyzer Combo为白平衡校正分析外挂,主要包含两个部分,分别是Statistics Analyzer与Raw Analyzer。其中Statistics Analyzer,使用者可利用它来调整色温曲线范围,而Raw Analyzer主要是让使用者能了解画面中各个位置的Awb统计值落点。
-
调整界面
图 15-24:AWB Analyzer Combo界面
-
使用方式及参数说明
-
点功能选择:点击接口上方功能卷标来切换。
-
统计值来源设定:点击接口上方menu列的File->Load Statistics会出现三种来源选择。
From Live Stream:取得目前stream画面的统计值,IQTool需要先联机才使用此功能。若要更新画面统计值可点选右上方Update Live Statis按钮。
From Raw Image:从拍摄好的raw image来取得统计值,选择此项目前请先透过menu列的Raw Format来设定raw image的格式。
From Statistics Data:从之前存好的统计值档案来取得。
-
色温曲线范围来源设定:
点击接口上方menu列的File->Load CTArea会出现两种来源选择。
From Board:从联机的机台来取得,IQTool需要先联机才使用此功能。
From CTArea Data:从之前存好的色温曲线范围获取。
-
储存统计值:点击界面上方menu列的File->Save Statistics。
-
储存色温曲线范围:点击界面上方menu列的File->Save CTArea。
-
色温曲线范围调整:直接拖拽色温框上的位置控制点(三角形)及范围控制点(菱形)。
-
重置色温曲线范围:点击右上方Reset CTArea按钮。
-
有效色温曲线范围Index:通过右上方StartIdx和EndIdx设定。只有落在这区间色温框的统计值才会被拿去计算。
-
套用色温曲线范围:点选右上方Apply To Camera按钮。
套用后记得回到IQTool接口点选AWBCTCali项目去做Read Page的动作(点Read Page前不要点到Write Page),这样在储存API bin file时才能将调整后的色温曲线范围存入。
-
移动&缩放显示raw image;在画面上按住鼠标左键可拖曳移动画面,滚动鼠标滚轮可进行画面缩放。
-
显示统计值分块:点选Show Statistics Blocks会在画面显示统计值分块。
-
选择统计值分块:双击鼠标左键可选择分块,左侧信息栏会固定显示该分块信息,此外还会在色温坐标秀出该分块的落点位置(星型)。点击鼠标右键可取消选择。
显示套用Final RBgain的图:点选Apply Final WB gain。
15.8.3. CCM Analyzer¶
-
此插件工具使用于色彩校正。
-
调整界面
Calculate CCM页面用于CCM校正,启动时会从Camera读取相关参考值,因此不能脱机调试。另两个Page FineTuneMatrix属于微调功能。
图 15-25:CCM Analyzer界面
-
使用方式及参数说明
-
使用方法
点击Source Image中的Set来设定 Raw Data的信息,点击open source打开保存的raw image,开启后会出现一个窗口显示出所选择的raw image,直接用鼠标在画面上拖曳让各色块都有正确被框选到,完成后点OK,Open Target打开标准的color checker图片,按上述步骤框选color checker。
图 15-26:Load Raw Image窗口接口
-
参数设定
Color Weight:可让使用者调整各色块的权重,权重越大者fitting的结果会越准确,预设都设为100。
图 15-27:Color Weight设定接口
Component Constraint:使用者可根据需求针对某些成分做限制,例如设定0.5,则该成分fitting后的结果只能在-0.5到0.5之间。
图 15-28:Component Constraint设定接口
Delta C/Delta E:Delta E为LAB的方均差,Delta C则不考虑亮度,只考虑AB的方均差。
设定完成后点选calculate按钮,在窗口右侧会显示最终fit出的结果。
图 15-29:CCM界面
重复上述步骤fit出剩余餘色温的color matrix。
-
15.8.4. Gamma Fitting Analyzer¶
此插件工具使用于Gamma Fitting校正。
-
调整界面
CDF_Orig :open source的CDF曲线。
CDF_Ref :open target的CDF曲线。
FitGMA :Fitting Gamma曲线。
图 15-30 :Gamma Fitting Analyzer界面
-
使用方式及参数说明
使用方法
-
读取图像的Gamma 曲线,点击Options的Raw Setting初始设定。
图 15-31:开启Raw Setting界面
-
点击open source打开保存的raw image。
-
点击open target打开标准的OECF Chart图片。
-
按左键分别选取ROI,自动产生相对应的histogram。
-
选择Gamma曲线类型,共有两种曲线计算方式,建议选择Exponential
Spline曲线
Exponential曲线
-
点击Match GMA按钮,产生Gamma曲线。
-
点击Save GMA按钮,保存计算完的Gamma参数值。
-
15.8.5. SStarCalibration Tool¶
此插件工具使用于shading以及black level校正,功能和calibration tool相同。
-
CalibrationALSC调整界面
图 15-32:CalibrationALSC界面
-
CalibrationALSC使用方式及参数说明
-
参数设定
Ratio Table:画面中心至角落补正强度ratio,值域0 ~ 255。 可让使用者调整各色块的权重,权重越大者fitting的结果会越准确,预设都设为100。
OBC:目前sensor的OB值,单位为16bits,值域0 ~ 65535。
GridX, GridY:shading table的大小。
Set Delta Format:非等距方格设定。
-
Delta Mode:预设16种模式,值域0 ~ 15。设定方式可参考『Figure 121』及『Figure 122』。
-
Delta Mode Advance Enable:选择启动进阶模式开关,0表示关闭、1表示启用,值域0 ~ 1。当GridX/Y使用非默认时,必须进入此模式进行非等距方格设定。
-
Delta X Lut:X轴间距,实际pixel数目为此值再乘16,只限填1,2,4,8,16,若未使用则填0。
-
Delat Y Lut:Y轴间距,实际pixel数目为此值再乘16,只限填1,2,4,8,16,若未使用则填0。
CT:色温,值域1 ~ 20000。
CT Num :选择校正几组色温表数据,默认是校正3组色温表,值域1 ~ 3。
CT Index:选择目前要校正第几组table,最多支持3组,校正顺序不需依照0到2的顺序,但需要确保0到2的环境色温要由低到高并且不可一样。
Open Raw Image:选择Raw image路径。
Set Raw Format:设定Raw image相关参数。
Apply Demosaicing:将Raw image过简易的Demosaic。
Show Alsc Table:显示shading table。
Color:显示shading table的R/G/B gain。
GenTable:依照输入参数,产生shading table。
ApiApply:只会将目前CT Index的shading table下到api中。
CaliApply:依据目前CTNum的大小一次把所有参数传到板子。
Debug Log:可在GenTable和Apply时,看到debug log。
Keep Cali Data:load已产生的.data数据进来,使之前的结果能保留并继续校正。
Dump Data:产生校正结果的txt檔。
Load Cali Data:load已产生的.data,使之能用CaliApply,将那个.data的校正结果套上去。
Select Cali File:只有当Load Cali Data勾起时,才能点选,用来选择套到板子上的.data。
-
-
使用方法
根据是否勾Load Cali Data,有两种路线
-
勾
-
勾起Load Cali Data后,点选Select Cali Data,选择你要Apply的.data。
-
选择完所要的.data后,只能使用CaliApply。此时Apply的校正参数并不会显示在我们的SStarCalibrationTool上。
-
-
不勾
-
点击Set Raw Format 来设定 raw image的信息,点击Open Raw Image打开raw image。可以勾选 Apply Demosaicing来看RGB image,这边只是简单的Demosaic功能,和实际的不同。每当如果是从Load Cali Data勾起变不勾时,都要重新点击Open Raw Image打开raw image。
-
设定产生shading table的参数,包含Ratio Table、OBC、GridX、GridY、Set Delta Format,再点击GenTable,即产生shading table。可以勾选Show Alsc Table来看shading table。当校正完第一组参数时,想保留结果继续校正,可勾选Keep Cali Data,但如果在校第二组参数时,CT Num的大小有被改变,那Keep Cali Data功能就会丧失。
-
设定下到板子的参数,包含CT、CT Index,再点击ApiApply或CaliApply,即生效。请务必到ALSC界面点Read,即可看到和CalibrationALSC相同的参数。每Apply完一次,GenTable、CaliApply以及ApiApply都会被反灰,此时上图红色框框部分设定有变动就可再重校正一次。
-
-
-
-
CalibrationLSC调整界面
图 15-33:CalibrationLSC界面
-
CalibrationLSC使用方式及参数说明
-
参数设定
Ratio Table:画面中心至角落补正强度ratio,值域0 ~ 255。 可让使用者调整各色块的权重,权重越大者fitting的结果会越准确,预设都设为100。
OBC:目前sensor的OB值,单位为16bits,值域0 ~ 65535。
InputCenterX, InputCenterY:设定影像最亮中心点位置,值域范围:0~4095。
CT:色温,值域1 ~ 20000。
CT Num:选择目前要校正第几组table,最多支持3组,校正顺序不需依照0到2的顺序,但需要确保0到2的环境色温要由低到高并且不可一样。
CT Index:最多支持3组色温,值域0 ~ 2,会根据CTNum的大小有连动。
Open Raw Image:选择Raw image路径。
Set Raw Format:设定Raw image相关参数。
Apply Demosaicing:将Raw image过简易的Demosaic。
Show LSC Table:显示shading table。
GenTable:依照输入参数,产生shading table。
ApiApply:只会将目前CT Index的shading table下到api中。
CaliApply:依据目前CTNum的大小一次把所有参数传到板子。
Debug:Log:可在GenTable和Apply时,看到debug log。
Keep Cali Data:load已产生的.data数据进来,使之前的结果能保留并继续校正。
Dump Data:产生校正结果的txt。
Load Cali Data:load已产生的.data,使之能用CaliApply,将那个.data的校正结果套上去。
Select Cali File:只有当Load Cali Data勾起时,才能点选,用来选择套到板子上的.data。
Orientation:设定取样点方向,由影像最亮的中心点至角落点。0 :upper-left、1 :upper-right、2 :lower-right、3 :lower-left
Seg. Length:切割取样点的长度距离。
AutoSearchCenter:选择自动侦测输入影像的最亮中心点位置,值域0 ~ 1,建议设1。
LSCResult:Dump LSC结果影像。
Ratio Table:是否使用Ratio Table的补偿值去校正,当这个打勾Ratio Table才可以变更。
RatioThreshold:用来避免暗角补偿被过度补偿,值越大表示暗角补偿愈多、愈小则补偿愈少,暗角补偿愈多,会造成接近角落的正常的数据被过度补偿。当阀值愈小则补偿数值会根据当前最大索引值来找出补偿数值设为最大值,而最大索引值之后的索引值则维持最大补偿数值(不增加数值);反之阀值愈大则补偿数值愈大,Ratio Base = 100,值域0 ~ 25600。
-
使用方法
根据是否勾Load Cali Data,有两种路线
-
勾
-
勾起Load Cali Data后,点选Select Cali Data,选择你要Apply的.data。
-
选择完所要的.data后,只能使用CaliApply。
此时Apply的校正参数并不会显示在我们的SStarCalibrationTool上。
-
-
不勾
-
点击Set Raw Format 来设定 raw image的信息,点击Open Raw Image打开raw image。可以勾选 Apply Demosaicing来看RGB image,这边只是简单的Demosaic功能,和实际的不同。每当如果是从Load Cali Data勾起变不勾时,都要重新点击Open Raw Image打开raw image。
-
设定产生shading table的参数,包含Ratio Table, OBC, InputCenterX, InputCenterY,再点击GenTable,即产生shading table。可以勾选Show LSC Table来看shading table。当校正完第一组参数时,想保留结果继续校正,可勾选Keep Cali Data,但如果在校第二组参数时,CT Num的大小有被改变,那Keep Cali Data功能就会丧失。
-
设定下到板子的参数,包含CT,CT Index,再点击ApiApply或CaliApply,即生效。请务必到LSC界面点Read,即可看到和CalibrationLSC相同的参数。每Apply完一次,GenTable,CaliApply以及ApiApply都会被反灰,此时上图红色框框部分设定有变动就可再重校正一次。
-
-
-
-
CalibrationOBC调整界面
图 15-34:CalibrationOBC界面
-
CalibrationOBC使用方式及参数说明
-
参数设定
Open Raw Image:选择Raw image路径。
Set Raw Format:设定Raw image相关参数。
Apply Demosaicing:将Raw image过简易的Demosaic。
Show OBC Table:显示OBC校正出来的table。
CalOBGain:依照输入参数,产生校正黑电流的值。
ApiApply:把校正结果套到板子上。
CaliApply:把校正结过套到板子上。
Debug:Log :可在CalOBGain和Apply时,看到debug log。
Keep Cali Data:load已产生的.data数据进来,使之前的结果能保留并继续校正。
Dump Data:产生校正结果的txt檔。
Load Cali Data:load已产生的.data,使之能用CaliApply,将那个.data的校正结果套上去。
Select Cali File:只有当Load Cali Data勾起时,才能点选,用来选择套到板子上的.data。
Weight Table:将画面均分为3×3区块,在计算OB时每个区块的权重,值域0 ~ 16,建议全部设1。
AutoAssign:将OB值设给所有Gain,值域0 ~ 1,建议设1。
Cali Gain Index:选择校正哪一组OB值,值域0 ~ 15。
SetOBCParameters-Weight Table:显示Weight Table。
Target:校正后希望残留的值,单位为16bits,值域0 ~ 65535,建议设0。
-
使用方法
根据是否勾Load Cali Data,有两种路线
-
勾
-
勾起Load Cali Data后,点选Select Cali Data,选择你要Apply的.data。
-
选择完所要的.data后,只能使用CaliApply。
此时Apply的校正参数并不会显示在我们的SStarCalibrationTool上。
-
-
不勾
-
点击Set Raw Format 来设定 raw image的信息,点击Open Raw Image打开raw image。可以勾选 Apply Demosaicing来看RGB image,这边只是简单的Demosaic功能,和实际的不同。每当如果是从Load Cali Data勾起变不勾时,都要重新点击Open Raw Image打开raw image。
-
设定产生table的参数,包含Weight Table、Target, AutoAssign、Cali Gain Index,再点击CalOBGain,即产生校正table。可以勾选Show OBC Table来看校正table。当校正完第一组参数时,想保留结果继续校正,可勾选Keep Cali Data。
-
设定下到板子的参数,点击ApiApply或CaliApply,即生效。请务必到OBC界面点Read,即可看到和CalibrationOBC相同的参数。每Apply完一次,CalOBGain,CaliApply以及ApiApply都会被反灰,此时上图红色框框部分设定有变动就可再重校正一次。
-
-
-
-
Raw Setting参数界面
图 15-35:Raw Setting界面 - Raw Setting参数说明
-
Raw Format
Format:Raw image的RGB格式。
Bit Width(Input):Raw image输入位。
-
Raw Image Size
Width:Raw image的宽。
Height:Raw image的高。
-
Clip Image Size
Width:Raw image经过Clip后的宽。
Height:Raw image经过Clip后的高。
X:Raw image要从宽哪里去做Clip,要注意起始位置加上你所想要Clip的大小不能超过Raw image的大小。
Y:Raw image要从高哪里去做Clip,要注意起始位置加上你所想要Clip的大小不能超过Raw image的大小。
-
Image Decompress
Enable:是否打开Decompress功能。
Input Bits:被压缩后的位。
Output Bits:解压缩后的位。
Range:总共有四个区间需要设定。
Range0:设定第一个区间,0 ~ Range0。
Range1:设定第二个区间,Range0 ~ Range1。
Range2:设定第三个区间,Range1 ~ Range2。
Range3:第四个区间无须设定,Range2 ~ ∞。
Node0:对应区间的offset。
Node1:对应区间的shift。
Node2:对应区间的基底。
-
16. CALIBRATION TOOL¶
支持OBC、ALSC、LSC以及AWB产线校正,需额外使用offline的calibration tool。
16.1. 校正流程¶
在各情境下抓Raw,设定参数(修改*.ini
),产生*.data
,并将*.data
刻录进去。
16.1.1. 参数说明¶
在calibration\SampleCode\Release\CalibrationInitialParameter.ini
设定环境参数
-
[RAW_INFO]
-
filename :Raw名称。
Raw data 命名规则是“filename” + “_” + “three numbers”
-
frame_numbers :单次校正Raw个数,通常为1,除了SDC常会用多张校正。
-
frame_start_index :Raw编号。
若filename = "SDC"且frame_start_index = 1, 则在sample code里面的Raw必须命名为SDC_001。
若需要3张Raw校正,则filename = "SDC",frame_start_index = 2,frame_numbers = 3,则Raw必须命名为SDC_002、SDC_003、SDC_004。
-
width :Raw image的width。
-
height :Raw image的height。
-
clip_x :Clip image的起始X坐标,避免破坏Bayer Pattern排序,建议设置偶数。
-
clip_y :Clip image的起始Y坐标,避免破坏Bayer Pattern排序,建议设置偶数。
-
clip_width :Clip image的widht,避免破坏Bayer Pattern排序,建议设置偶数。
-
clip_height :Clip image的height,避免破坏Bayer Pattern排序,建议设置偶数。
-
dump_clip_image :Dump clip image档案的开关,0表示关闭、1表示开启,预设为0。
-
cfa_type :Bayer pattern的排序,即最左上角的色块。[0 = RGGB、1 = GRBG、2 = BGGR、3 = GBRG]
-
source_type :选0为Raw,不建议修改。
-
in_data_precision :输入Raw的精准度,预设为16。
-
out_data_precision :输出
*.data
的精准度,预设为16。 -
cali_output_path :输出路径,不建议修改。
-
-
[CALI_INFO]
-
calibration_select :Calibration项目,AWB = 0、OBC = 1、SDC = 2、ALSC = 3、LSC = 4。
-
load_calibration_data :Load
*.data
的开关。第一次校正时,必设为0,若要进行多次校正,从第二次校正开始,必须将此设为1,才会保存之前校正的资料,常用在OBC、ALSC、LSC、AWB、SDC。[此平台未支持SDC功能] -
load_calibration_data :Twinkie = 2、Pretzel = 3、Macaron = 4、Pudding = 5、Ispahan = 6、Ikayaki = 7、Mercury5 = 16、Tiramisu = 17。
-
-
[CALI_DB]
-
cali_dump_data :Dump
.txt
的开关。选0,只会产生*.data
;选1,除了产生*.data
外,还会另外储存*.txt
。 -
cali_xxx_xxx_path :校正完的
*.data
路径,不建议修改。
-
-
[OBC] [ALSC] [LSC] [AWB] :后面章节详述介绍。
16.1.2. 产生 *.data
¶
Calibration Step:
-
在
calibration\SampleCode\Release\image
放入用來校正的Raw。 -
修改
calibration\SampleCode\Release\CalibrationInitialParameter.ini
。图 16-1:CalibrationInitialParameter.ini - RAW_INFO参数设定说明
-
执行
calibration\SampleCode\Release\CalibrationRelease.exe
。校正程序一开始会先检查执行路径目录,是否存在data and image文件夹(自动产生)。
图 16-2:检查calibration所需的data文件夹是否存在
-
校正程序成功后,可在
calibration\SampleCode\Release\data\cfg
取得*.data
。图 16-3:产生calibration所需的
*.data
文件
16.1.3. 刻录 *.data
¶
将*.data
放到DownloadTool_XXX\FactRes\
,重新烧进去即可。
注意:请不要更改*.data
文件名。
16.2. OBC调整¶
校正sensor的black level。
16.2.1. 校正环境¶
校正环境为遮黑校正,须避免任何可能光源进入。遮黑时先观察串流画面是否有异常,无异常则进行下一步,若发现异常则暂停校正并立即反映,待问题解决再作后续动作。
图 16-4:遮黑画面异常范例
16.2.2. 参数说明¶
AutoAssign :将 OB值设给所有Gain,值域0 ~ 1,建议设1。
Target :校正后希望残留的值,单位为16 bits,值域0 ~ 65535,建议设0。
Weight :将画面均分为3×3区块,在计算OB时每个区块的权重,值域0 ~ 16,建议全部设1。
CaliGainIndex :依照ISO index来选填数值,值域0 ~ 15。
16.2.3. 校正步骤¶
-
将total gain设为最小倍率,将画面遮黑抓Raw。
-
若为normal mode或是combine mode,则
out_data_precision
填16。 -
产生
obc_cali.data
,亦可产生dump_obc_data.txt
看一下校正结果,再load obc_cali.data
进去。 -
若为normal mode或是combine mode,则OB值会填到IQtool中OBC界面的blacklevel,单位为16 bits。
-
若为HDR mode,长短曝要分开校正
短曝校正:与normal mode相同,遮黑抓短曝Raw,且
out_data_precision
填16,产生obc_cali.data
,再load obc_cali.data
进去,则OB值会填到IQtool中OBC界面的blacklevel,单位为16 bits。长曝校正:遮黑抓长曝Raw,且
out_data_precision
填16,产生dump_obc_data.txt
,再手动填入到IQtool中OBC界面的blacklevel_1,单位为16 bits。
注意:
A. Normal mode :表示为Linear mode(single frame)和HDR mode(2 frames)。
B. Combine mode :表示为Sensor端完成长、短曝光的合成影像包含影像数据压缩程序。
16.2.4. 注意事项¶
假设遇到高倍gain与低倍gain的OB差异很大,需要为不同ISO index设定不同OB时,请直接利用AE手动设定各ISO index gain值遮黑拍Raw,产生dump_obc_data.txt
,再手动填入到IQtool中OBC界面的blacklevel的Auto Mode 16个节点中。
16.3. ALSC调整¶
不同的lens和sensor搭配会有不同的Y shading & color shading现象,因此当lens或sensor有更换就需要评估是否需要重新校正。
ALSC校正会产生出R、G、B各一个27×17的table,针对画面不同区域给予不同的R、G、B gain,因此可同时改善Y shading & color shading,最多支持3 种色温,不支持table内插。
16.3.1. 校正环境¶
均匀光源,最严谨的方法是使用Macbeth标准灯箱搭配diffuser来做校正,若没有diffuser就只能对灯箱中的灰墙,尽可能让光均匀去做校正。
调整前务必确保OB和AWB色温曲线范围已校正且确实套用,用RGB sensor要确认IR cut有确实盖上。
图 16-5:LSC / ALSC校正环境架设范例
16.3.2. 参数说明¶
TargetIndex : 选择目前要校正第几组table,最多支持3组,校正顺序不需依照0到2的顺序,但需要确保0到2的环境色温要由低到高即可。
CCTNumber : 选择总共要校正几组色温表数据,默认是校正3组色温表,值域1 ~ 3。
GridX/Y : Shading Table的大小,此平台预设为27x17。
GridNumMax : Shading Table的最大table size,为一个定值,在此平台为27x17=459。
Segment_Delta_Str_Mode: 预设16种模式,纵轴表示每个模式、横轴表示X/Y方向每个格子间距的大小,在此平台为X = 26, Y = 16格间距,默认模式内的值越大则周围方格越小,值域0 ~ 15。
图 16-6:Delta_LUT_X默认16种模式分布
图 16-7:Delta_LUT_Y预设16种模式分布
ColorTemperature : 当前TargetIndex下的环境色温。
OB_R/G/B_Value : 目前sensor的OB值,单位为16bits,值域0 ~ 65535。
RatioTable_R/G/B‘Num’ : 画面中心至角落补正强度ratio,值域0 ~ 255。
备注:‘Num’表示数值编号,0代表画面中心位置,8代表四个角落位置。
UnitGainResult : 选择是否产生1倍gain的Shading Table,0表示关闭、1表示启用,值域0 ~ 1。
PortraitEnable : 对影像宽和高做检查,0表示关闭、1表示启用,值域0 ~ 1。
Segment_Delta_Adv_Enable : 选择启动进阶模式开关,0表示关闭、1表示启用,值域0 ~ 1。当GridX/Y非此 平台27x17时,须使用此进阶模式→非等距方格设定。
Segment_Delta_LUT_X0~8 : X轴间距,每4个bit表示为一组索引值[index =(block size / 16)- 1],则实际 pixel数目为(index + 1)x 16。索引值只限填1,2,4,8,16,未使用则设为0,最多 支持至72组,在此平台为26格间距。
Segment_Delta_LUT_Y0~8 : Y轴间距,每4个bit表示为一组索引值[index =(block size / 16)- 1],则实际 pixel数目为(index + 1)x 16。索引值只限填1,2,4,8,16,未使用则设为0,最多 支持至72组,在此平台为16格间距。
16.3.3. 校正步骤¶
-
先决定要校正几种灯源,将AE target设高(约为1500左右)去拍摄各色温Raw data,并确定raw data没有过曝,并将档案放至calibration tool的image文件夹中(备注:AE target data range = 10 ~ 2550)。
-
开启
CalibrationInitialParameter.ini
填入正确[RAW INFO](参考16.1.1. 参数说明.)。-
Raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设4。
-
当校正第一个色温时,load_calibration_data要设为0,当校正剩余色温时,load_calibration_data要设为1。
-
-
设定CalibrationInitialParameter.ini中[ALSC]校正参数(参考16.3.1. 校正环境)。
-
执行CalibrationRelease.exe产生a
lsc_cali.data
。 -
重复2、3、4步骤将所有色温校正完毕产生最终alsc_cali.data。若校正时[CALI_DB]中的cali_dump_data有设为1,校正后会同时产生dump_alsc_data
.txt
,里面可以看到校正出来的shading table值。 -
需透过MI_ISP_API_CmdLoadCaliData这支API来套用
alsc_cali.data
(详细请参考ISP 软件开发参考)。
16.3.4. 调整界面¶
于左侧选单点选Shading即会出现ALSC和ALSC_CTRL接口。
图 16-8:ALSC和ALSC_CTRL调整界面
16.3.5. 参数说明¶
R Gain Table :ALSC R table,值域0 ~ 8191。
G Gain Table :ALSC G table,值域0 ~ 8191。
B Gain Table :ALSC B table,值域0 ~ 8191。
R Ratio By CCT :ALSC table整体 R ratio值(128 = 1x),值域0 ~ 128。
G Ratio By CCT :ALSC table整体 G ratio值(128 = 1x),值域0 ~ 128。
B Ratio By CCT :ALSC table整体 B ratio值(128 = 1x),值域0 ~ 128。
Points Num :Ratio by BV设置的节点个数(随不同环境亮度值(BV)提供设置不同的Ratio)。
Ratio :各节点的Ratio值。
BV :各节点对应的BV值。
16.3.6. 调整步骤¶
-
在不同BV下调整Ratio,通常在低BV的情况下会降Ratio,可以减轻因ALSC造成的外圈较脏。
-
R/G/B Ratio By CCT预设为1x,若有需求再调整即可。
16.3.7. 注意事项¶
ALSC R/G/B Gain table 同时存在iqfile
、alsc_cali.data
,但api bin只能读写,并不会储存到api bin(因为size过大),因此每次开机都需要load alsc_cali.data
。
16.3.8. .data
格式&大小¶
Handle size :20 bytes。
Ctrl size :52 bytes。
Data size :4 + x bytes, x =(GridX * GridY * 3 * 2 + 2 * GridMax)/4的小数无条件进位值再乘4 GridMax = GridX or GridY较大的那一个。
Total size :20 + 52 * cctNum +(4 + x) * cctNum bytes, cctNum=校正的色温组数(1~3)。
16.4. LSC调整¶
LSC校正会产生出R、G、B各一个32的table,针对画面不同区域给予不同的R、G、B gain,因此可同时改善Y shading,最多支持3 种色温,不支持table内插。
16.4.1. 校正环境¶
16.4.2. 参数说明¶
TargetIndex : 选择目前要校正第几组table,最多支持3组,校正顺序不需依照0到2的顺序,但需要确保0到2的环境色温要由低到高即可。
CCTNumber : 选择校正几组色温表数据,默认是校正3组色温表,值域1 ~ 3。
TableSize : Shading Table的大小,default为32。不建议修改此数值。
LSCResult : Dump LSC结果影像。
SegmentLength : 切割取样点的长度距离
AutoCenter : 选择自动侦测输入影像的最亮中心点位置,值域0 ~ 1,建议设1。 若设为0,则使用下列InputOrientation and InputCenterX/Y手动设定。
InputOrientation : 设定取样点方向,由影像最亮的中心点至角落点 0 :upper-left、1 :upper-right、2 :lower-right、3 :lower-left
InputCenterX/Y : 设定影像最亮中心点位置,值域范围:0 ~ 4095。
ColorTemperature : 当前TargetIndex下的环境色温。
OB_R/G/B_Value : 目前sensor的OB值,单位为16bits,值域0 ~ 65535。
RatioTable_R/G/B’Num’ : 画面中心至角落补正强度ratio,值域0 ~ 255。
备注:’Num’表示数值编号,值域0 ~ 8。
Ratio_Threshold : 用来避免暗角补偿被过度补偿,值愈大表示暗角补偿愈多、愈小则补偿愈少,暗角补偿愈多,会造成接近角落的正常的数据被过度补偿。当阀值愈小则补偿数值会根据当前最大索引值来找出补偿数值设为最大值,而最大索引值之后的索引值则维持最大补偿数值(不增加数值);反之阀值愈大则补偿数值愈大,Ratio Base = 100,值域0 ~ 25600。
DebugLSCInfo : 仅适用于Debug mode,可提供相关错误讯息至SigmaStar进行问题分析使用, 0表示关闭、1表示启用,值域0 ~ 1,建议设0。
16.4.3. 校正步骤¶
-
产生
lsc_cali.data
,亦可产生dump_lsc_data.txt
或dump_lsc_result.raw
看一下校正结果,再load lsc_cali.data
进去,若无校正LSC时,此步骤可省略跳至下一项。
16.4.4. 调整界面¶
于左侧选单点选Shading即会出现LSC和LSC_CTRL界面。
图 16-9:LSC和LSC_CTRL调整界面
16.4.5. 参数说明¶
CenterX : LSC中心点x值,值域0~4095。通常为影像中心点或最亮点的x值。
CenterY : LSC中心点y值,值域0~4095。通常为影像中心点或最亮点的y值。
RateX : x方向距离差的缩放比例,base为1024,值域0~2047。当前点x值和LSC中心点x值的差值,会再乘上此比例,再搭配y方向去计算和LSC中心点的距离。
RateY : y方向距离差的缩放比例,base为1024,值域0~2047。当前点y值和LSC中心点y值的差值,会再乘上此比例,再搭配x方向去计算和LSC中心点的距离。
Shift : 距离横移量,值域0~31。与中心点的距离会再向右shift此值,当作是index,再去查Gain Table。
R Gain Table : LSC R table,值域0~1023。
G Gain Table : LSC G table,值域0~1023。
B Gain Table : LSC B table,值域0~1023。
R Ratio By CCT : LSC table整体 R ratio值(128 = 1x),值域0~128。
G Ratio By CCT : LSC table整体 G ratio值(128 = 1x),值域0~128。
B Ratio By CCT : LSC table整体 B ratio值(128 = 1x),值域0~128。
Points Num : Ratio by BV设置的节点个数(随不同环境亮度值(BV)提供设置不同的Ratio)。
Ratio : 各节点的Ratio值。
BV : 各节点对应的BV值。
16.4.6. 调整步骤¶
-
在不同BV下调整Ratio,通常在低BV的情况下会降Ratio,可以减轻因LSC造成的外圈较脏。
-
R/G/B Ratio By CCT预设为1x,若有需求再调整即可。
-
若有需求,可以直接调整R/G/B Gain table。
16.4.7. 注意事项¶
-
LSC R/G/B Gain table 同时存在
iqfile
、lsc_cali.data
和api bin
,会吃iqfile当默认值,若有api bin则会盖过iqfile,若有lsc_cali.data
则会再盖过api bin。 -
正常流程会先
load lsc_cali.data
,这样会将LSC R/G/B Gain table储存在api bin,后续直接在api上调整,之后就不需要每次重新load lsc_cali.data
。
16.4.8. .data
格式&大小¶
Handle size :20 bytes。
Ctrl size :60 bytes。
Data size :8 + x bytes, x =(2 + TableSize * 3 * 2)/4的小数无条件进位值再乘4 。
Total size :20 + 60 * cctNum +(8 + x) * cctNum bytes, cctNum=校正的色温组数(1~3)。
16.5. AWB调整¶
用于产线校正,用来补偿各机台与Golden sample间的白平衡统计值差异。
16.5.1. 校正环境¶
灯箱中放置灰卡,让灰卡占满画面拍摄raw data。
16.5.2. 参数说明¶
CaliState :指定校正的模式。
-
0表示CALIB_GOLDEN_H
-
1表示CALIB_GOLDEN_L
-
2表示CALIB_H
-
3表示CALIB_L
CaliNumber :校正色温总数,最多支持2种色温,值域1 ~ 2。
HighCT :高色温,值域1000 ~ 10000。
LowCT :低色温,值域1000 ~ 10000。
OB_R/GR/GB/B_Value :OB值设定,值域0 ~ 65535。
16.5.3. 校正步骤¶
-
分析多台机台AWB统计值落点,从中挑选出一台落点接近平均值的来当作golden sample。
-
校正时可选择使用一到两种色温灯源去做校正。
-
假设只用一种灯源做校正,校正流程如下:
用golden sample与unit sample拍摄raw data,并放至calibration tool的image文件夹中。
开启
CalibrationInitialParameter.ini
填入正确[RAW INFO](参考16.1.1. 参数说明.)。-
Golden sample raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设0。
设定CalibrationInitialParameter.ini中[AWB]校正参数(参考16.5.2. 参数说明)。
-
CaliState设0。
-
CaliNumber设1。
-
HighCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生存有golden sample校正值的awb_cali.data
,必须保存好此data直到校正结束。开启
CalibrationInitialParameter.ini
填入正确[RAW INFO](参考16.1.1. 参数说明.)。-
Unit sample raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设1来保存之前校完的资料。
设定
CalibrationInitialParameter.ini
中[AWB]校正参数(参考16.5.2. 参数说明)。-
CaliState设2。
-
CaliNumber设1。
-
HighCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生最终的awb_cali.data
,完成校正。若校正时[CALI_DB]中的cali_dump_data
有设为1,校正后会同时产生dump_awb_data.txt
,里面可以看到校正出来的值。校正下一个unit sample时,只需load前一个unit sample校正出的
awb_cali.data
再执行State 2将前一个unit sample的校正结果覆盖掉即可。需透过
MI_S32 MI_ISP_API_CmdLoadCaliData
这支API来套用awb_cali.data
。(详细请参考ISP 软件开发参考) -
-
校正如果使用两种灯源做校正,校正流程如下:
用golden sample与unit sample拍摄两种色温的raw data,并放至calibration tool的image文件夹中。
开启CalibrationInitialParameter.ini填入正确[RAW INFO](参考16.1.1. 参数说明)。
-
Golden sample高色温raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设0。
设定CalibrationInitialParameter.ini中[AWB]校正参数(参考16.5.2. 参数说明)。
-
CaliState设0。
-
CaliNumber设2。
-
HighCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生存有golden sample高色温校正值的awb_cali.data,必须保存好此data直到校正结束。开启CalibrationInitialParameter.ini填入正确[RAW INFO](参考16.1.1. 参数说明.)。
-
Golden sample 低色温raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设1。
设定CalibrationInitialParameter.ini中[AWB]校正参数(参考16.5.2. 参数说明)。
-
CaliState设1。
-
CaliNumber设2。
-
LowCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生存有golden sample高低色温校正值的awb_cali.data,必须保存好此data直到校正结束。开启CalibrationInitialParameter.ini填入正确[RAW INFO](参考16.1.1. 参数说明.)。
-
Unit sample高色温raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设1来保存之前校完的资料。
设定
CalibrationInitialParameter.ini
中[AWB]校正参数(参考16.5.2. 参数说明)。-
CaliState设2。
-
CaliNumber设2。
-
HighCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生存有golden sample高低色温校正值与unit sample高色温校正值的awb_cali.data,必须保存好此data直到校正结束。开启CalibrationInitialParameter.ini填入正确[RAW INFO](参考16.1.1. 参数说明.)。
-
Unit sample低色温raw data路径及格式。
-
in/out_data_precision设16。
-
calibrarion_select设2。
-
load_calibration_data设1来保存之前校完的资料。
设定CalibrationInitialParameter.ini中[AWB]校正参数(参考16.5.2. 参数说明)。
-
CaliState设3。
-
CaliNumber设2。
-
LowCT设为校正灯源的色温值。
-
OB值设定,值域0 ~ 65535。
执行
CalibrationRelease.exe
在\data\cfg
产生最终的awb_cali.dat
a,完成校正。若校正时[CALI_DB]中的cali_dump_data有设为1,校正后会同时产生dump_awb_data.txt
,里面可以看到校正出来的值。校正下一个unit sample时,只需load前一个unit sample校正出的awb_cali.data再执行State 2 & 3将前一个unit sample的校正结果覆盖掉即可。
需透过MI_ISP_API_CmdLoadCaliData这支API来套用awb_cali.data。(详细请参考ISP 软件开发参考)
-
-
16.5.4. .data
格式&大小¶
Handle size :20 bytes。
Ctrl size :28 bytes。
Data size :16 bytes。
Total size :20 + 28 + 16 bytes。
16.6. SDC调整¶
坏点补偿,可以补偿黑点和白点。
16.6.1. 校正环境¶
遮黑抓Raw(同OB),照均匀光抓Raw(同16.3. ALSC调整)。
16.6.2. 参数说明¶
Item : 遮黑抓Raw校白点,则选0;照均匀光源抓Raw校黑点,则选1;混合前两种结果,则选2。
MixerRatio : 校白点、黑点的比例,只有在Item = 2的时候才有效,100代表全部取Item = 0的结果、0表示全部取代Item = 1的结果。
CaliImgNum : 校正的Raw个数,必须和frame_numbers相同。
InvalidRatio : 设定滤除搜寻范围的比例值,值域0 ~ 100。
CaliFlag : 设定是否需要判断影像中的群聚坏点,0表示Disable、1表示Enable,值域0 ~ 1。
ValidValue : 输出参数,显示补偿坏点过后,画面中N+1的坏点pixel value,N表示补偿坏点数量值。
ClusterAmount : 输出参数,当CaliFlag = 1时,计算影像中有多少cluster数量。
TotalAmount : 输出参数,显示校正pixel point的总数。
16.6.3. 校正步骤¶
-
抓Raw校正坏点,可以只校正黑点或白点、或混和黑点、白点结果。
-
产生
sdc_cali.data
,亦可产生dump_sdc_data.txt
看一下校正结果,再load sdc_cali.data进去。 -
无法在IQtool上看到值。
-
若遮黑还是会看到白点,或是照均匀光还是会看到黑点,坏点依然没有被补偿,请反映给SigmaStar。
16.6.4. .data
格式&大小¶
Handle size : 20 bytes。
Ctrl size : 44 bytes。
Data size : 6144 bytes。
Total size : 20 + 44 + 6144 bytes。
17. 与PUDDING差异列表¶
模块名称 | 差异功能 | 差异参数(删除) | 差异参数(新增) |
---|---|---|---|
HSV | 新增by iso功能 | N/A | s16HueLut_ByIso[24] u16SatLut_ByIso[24] |
False Color | 新算法 | All | All |
Demosaic | 新算法 | All | All |
3DNR | 新增motion信息延迟功能 新增静态坏点补偿功能 | N/A | u8MotHistDelayByDiff[16] u16DeDotDiffOffset u8DeDotDiffShift |
3DNR_Ex | 新增多种计算motion信息的屏蔽 新增一种计算motion信息的方式 | N/A | bDbgEn u8WinSizeSel u8MotHistMapSel |
NRLuma | 移除spatial filter 新增range filter相关参数 | u8GMaskSel u16SpfBlendLut[2] u8KernelStr u8KernelStrByDiff[32] | |
NRLuma_Adv | 新算法 | All | All |
NRChroma_Adv | 新增一种motion补偿功能 | u8StaticLimitRatio | u8StrengthByMot[16] |
NRChroma_Pre | 新算法 | N/A | All |
Sharpness | 新算法 | All | All |
Sharpness_Ex | 新算法 | All | All |
WDR | 移除gamma/degamma曲线参数 | u8PreEnhance bGammaSyncEn | N/A |
WDRCurveAdv | 新增local WDR强度限制功能 优化global tone,支持横轴不等距 新增gamma/degamma曲线 新增desaturation by Y功能 | All | All |
Dummy | 新增debug log开关 | N/A | bLogEn |
Dummy_Ex | 新增debug log开关 | N/A | bLogEn |
LSC | 新增距离补偿功能 | N/A | u16RateX u16RateY |
HDR_Ex | 新增debug模式开关 | N/A | bDbgEn |