This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SK-AM62A-LP:颜色校正调优问题

Guru**** 2393725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1491048/sk-am62a-lp-color-correction-tuning-issue

器件型号:SK-AM62A-LP

工具与软件:

团队成员、您好!

我们已升级到 SDK 版本10.01.00.05、并注意到颜色校正插件中存在如前所述的类似问题。
上一主题的链接:
e2e.ti.com/.../sk-am62a-lp-color-correction-tuning-issue

在微调 IMX219的颜色校正插件时、我们注意到以下问题:

颜色校正矩阵未适当应用于其指定的场景(区域)。 例如、当光源的色温为5000K 时、即使 AWB 决策正确且处于 CCT 区域的范围内、应用的矩阵也对应于3501K–4500K 的 CCT 范围、而不是正确的范围4501K–5500K。

这种异常会在所有勒克斯强度下持续存在、影响整个可用增益和曝光值范围。 这些区域使用 DCC 工具通过 PhotosPace 定义、确保严格基于 CCT、如下所示:

R1:0–3500K

R2:3501K–4500K

R3:4501K-5500K

R4:5501K-20000K

我们观察到、3501K-4500K (R2)的颜色校正矩阵应用于 R2、R3和 R4、而对于 R1 (0-3500K)、应用随机值而不是该区域的相应矩阵。

注意:这些观察结果是在 DCC 工具对 RGB2RGB 块进行基本调优后观察到的。 我们在 ISP 调优实验室的受控环境中进行此活动。

附加 RGB2RGB.xml 文件以供参考。

谢谢、此致、
病毒沙阿
e2e.ti.com/.../imx219_5F00_rgb2rgb_5F00_dcc.xml

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    Unknown 说:
    附加 RGB2RGB.xml 文件以供参考。

    我不知道为什么区域/类别未按正确的顺序列出。
    它应按 region0/class0、region1/class1、region2/class2、region3/class3的顺序排列。

    		<n-space>
    		
    			<region0 class="0">
    				<colortemperature val="2" min="0" max="3500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region0>
    			
    			<region1 class="1">
    				<colortemperature val="2" min="3501" max="4500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region1>
    		
    			<region2 class="2">
    				<colortemperature val="2" min="4501" max="5500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region2>
    		
    			<region3 class="3">
    				<colortemperature val="2" min="5501" max="20000">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region3>
    		</n-space>

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为清楚起见、CCM 也应在代码片段之后按相同顺序排列。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的刚华:

    我不知道为什么区域/类别未按正确的顺序列出。
    RGB2RGB.xml 文件由 DCC 工具生成、我们不会修改或微调任何参数或值。

    我还尝试了按照您的建议修改参数、但我们观察到颜色校正矩阵在所有照明温度和照度强度下均无影响。
    随附了修改后的 RGB2RGB.xml 文件、以供参考。

    <?xml version="1.0" encoding="utf-8"?>
    <cfg_rgb2rgb_xml xmlns:xsi="">www.w3.org/.../XMLSchema-instance" xmlns:xsd="">www.w3.org/.../XMLSchema">
    	<!--this is comment-->
    	<dcc_name>cfg_rgb2rgb</dcc_name>
    	<dcc_header>
    		<camera_module_id>    219 </camera_module_id>
    		<dcc_descriptor_id>   10 </dcc_descriptor_id>
    		<algorithm_vendor_id>  1 </algorithm_vendor_id>
    		<tunning_tool_version> 0 </tunning_tool_version>
    	</dcc_header>
    	<!--=======================================================================-->
    	<typedef>
    		<cfg_rgb2rgb type="struct">
    			<!-- [RR] [GR] [BR] [CR]
    			     [RG] [GG] [BG] [CG]
    			     [RB] [GB] [BB] [CB] -->
    			<!-- Blending + Chroma values (S12Q8 format) -->
    			<ccm type="int16[3][4]"> </ccm> <!-- ipipe rgb2rgb matrix: S12Q8 -->
    			<!-- [OR] [OG] [OB] -->
    			<!-- Blending offset value for R,G,B - (S13) -->
    			<offset type="int16[3]"> </offset> <!-- ipipe rgb2rgb1 offset: S13 -->
    		</cfg_rgb2rgb>
    	</typedef>
    	<!--=======================================================================-->
    	
    	<use_case val="1023">
    		<n-space>
    		
    			<region0 class="0">
    				<colortemperature val="2" min="0" max="3500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region0>
    		
    			<region1 class="1">
    				<colortemperature val="2" min="3501" max="4500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region1>
    		
    			<region2 class="2">
    				<colortemperature val="2" min="4501" max="5500">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region2>
    		
    			<region3 class="3">
    				<colortemperature val="2" min="5501" max="20000">  </colortemperature>
    				<exposure val="1" min="0" max="10000000">  </exposure>
    				<gain val="0" min="0" max="1024">  </gain>
    			</region3>
    		
    		</n-space>
    	
    		<parameter_package>
    			<rgb2rgb type="cfg_rgb2rgb">
    			{
    				{
    					{388, -194, 62, 0},
    					{-119, 350, 25, 0},
    					{-14, -389, 659, 0}
    				},
    				{0, 0, 0}
    			}
    			</rgb2rgb>
    		</parameter_package>
    		
    		<parameter_package>
    			<rgb2rgb type="cfg_rgb2rgb">
    			{
    				{
    					{412, -207, 51, 0},
    					{-87, 367, -24, 0},
    					{-1, -230, 487, 0}
    				},
    				{0, 0, 0}
    			}
    			</rgb2rgb>
    		</parameter_package>
    		
    		<parameter_package>
    			<rgb2rgb type="cfg_rgb2rgb">
    			{
    				{
    					{425, -221, 52, 0},
    					{-81, 369, -32, 0},
    					{0, -205, 461, 0}
    				},
    				{0, 0, 0}
    			}
    			</rgb2rgb>
    		</parameter_package>
    		
    		<parameter_package>
    			<rgb2rgb type="cfg_rgb2rgb">
    			{
    				{
    					{440, -237, 53, 0},
    					{-79, 375, -40, 0},
    					{-1, -177, 434, 0}
    				},
    				{0, 0, 0}
    			}
    			</rgb2rgb>
    		</parameter_package>
    		  
    	
    	</use_case>
    	<!--=====================================================================-->
    </cfg_rgb2rgb_xml> 
    

    为清楚起见、CCM 也应在代码片段之后按相同顺序排列
    我们有一个问题:RGB2RGB.XML 中区域和类的用途是什么? 区域0与0类相关联的原因有具体吗?

    此致、

    病毒沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    我也尝试根据您的建议修改参数、但我们观察到颜色校正矩阵在所有照明温度和照度强度下均无影响。

    这很奇怪。
    只要 CCT 单调上升、CCM 内插应该没有问题。

    我们有一个问题:RGB2RGB.XML 中区域和类的用途是什么? 区域0与类别0关联的原因有具体吗?[/QUOT]

    我们实际上并不是单独使用区域类。
    它们之间存在一对一的对应关系。

    我们观察到颜色校正矩阵在所有照明温度和照度强度下均无影响。

    我在 RTOS 平台工作、最近碰巧看了 CCM 开关、发现 RTOS 中没有任何问题。
    映像代码库在 RTOS 和 edgeai 之间共享、并且理论上的行为应该是相同的。
    我不熟悉 edgeai 框架的细节、您可以检查一下在 VISS 内核中发生的关于 CCM 的情况。

    在下面的这一行中、您应该能够看到 CCT 输入和 CCM 输出。
    您可以检查 DCC 区域是否作为函数输入正确。

    git.ti.com/.../vx_vpac_viss_target_dcc.c

    通过跟踪函数调用、您可以在下面的链接中找到如何在内插中使用区域。

    https://git.ti.com/cgit/processor-sdk/imaging/tree/algos/dcc/src /parse_data.c?h=main#n1205

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的刚华:

    我已按照建议添加了打印件、发现 CCT 正确无误且在所有温度下均处于预期范围内。

    但是、颜色校正矩阵未正确应用于其指定的场景(区域)。 我已使用日志验证了这一点、并将任何一种颜色增益(r、g 或 b)设置为0并检查预览。

    我已经采集了四种色温对应的日志以及图像、并附上了数据供您参考
    e2e.ti.com/.../0564.Data.zip

    PS:这些观察结果是使用您建议的 xml 进行的。 到目前为止、我们已经调整了 BLC 和 AWB。

    我有一个问题:是否有其他方法可以确定正在应用哪个 PhotoPace? 目前、我将一个颜色增益(红色、绿色或蓝色)设置为零、并通过预览观察受影响区域以验证所应用的光空间。 什么是 vx_vpac_viss_target_dcc.c 中的"ccm_init"变量

    此致、

    病毒沙阿



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    然而、颜色校正矩阵未正确应用于其指定的方案(地区)。

    您到底发现了什么错误?

    我有一个问题:是否有另一种方法可以确定正在应用哪个 PhotoPace? 目前、我将一个颜色增益(红色、绿色或蓝色)设置为零、并通过预览观察受影响区域以验证所应用的光空间。 [报价]

    我不确定我是否理解您的问题。
    在这种情况下、Photospace 由 CCT 值决定。

    以及 vx_vpac_viss_target_dcc.c 中的"ccm_init"变量是什么 

    这用于在运行时内插 CCM、您可以从上面的源代码链接中看到。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的刚华:

    以 D65为例、 当我调整"R"的增益值(对应于 D65色温)时、理想情况下、红色不应出现在预览或图像中。 但这三种颜色仍然可见、表明光间隔似乎不会影响相应的色温。 此外、我注意到、根据使用2700K、4150K、5000K 和6500K 进行的测试、R = 0矩阵在任何色温下都没有影响。

    此外、我观察到"CCM_INIT"值始终保持"4"。 这是预期行为吗?

    此致、

    病毒沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    [报价 userid="606240" url="~/support/processors-group/processors/f/processors-forum/1491048/sk-am62a-lp-color-correction-tuning-issue/5735102 #5735102"]此外、我观察到"ccm_init"值始终保持"4"。 这是预期行为吗?
    [报价]

    我不确定我是否理解你所说的"4"。

    "ccm_int"是一个结构而不是一个数字。

    iss_ipipe_rgb2rgb ccm_int;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的刚华:

    您能解释一下为什么会发生这种行为吗? 例如、在 D65色温下调整"R"通道的增益值时、 红色应该 不会出现在预览或最终图像中。 然而,所有三种颜色(R、G、B)都保持可见,这表明光速不会影响相应的色温。 更进一步、我观察到、将红色通道设置为零(R = 0)在任何测试的色温(包括2700K、4150K、5000K 和6500K)下都没有任何明显的影响。

    此致、

    病毒沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以 D65为例。 当我调整"R"的增益值(对应于 D65色温)时、理想情况下、红色不应出现在预览或图像中

    在6500K 的记录中、这是打印矩阵。

    COLOR TEMP: 6468
    ccm_int: 4
    rgb2rgb->matrix[cnt1][cnt2]: 433
    rgb2rgb->matrix[cnt1][cnt2]: -230
    rgb2rgb->matrix[cnt1][cnt2]: 53
    rgb2rgb->matrix[cnt1][cnt2]: 0
    rgb2rgb->matrix[cnt1][cnt2]: 0
    rgb2rgb->matrix[cnt1][cnt2]: 373
    rgb2rgb->matrix[cnt1][cnt2]: -37
    rgb2rgb->matrix[cnt1][cnt2]: 0
    rgb2rgb->matrix[cnt1][cnt2]: -1
    rgb2rgb->matrix[cnt1][cnt2]: -189
    rgb2rgb->matrix[cnt1][cnt2]: 446
    rgb2rgb->matrix[cnt1][cnt2]: 0

    它与 xlm 文件中的矩阵相匹配。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    >> 例如、在 D65色温下调整"R"通道的增益值时、预计 红色 不会出现在预览或最终图像中。

    这可能是不可预料的、因为 CCM 在运行时在2个相邻校准矩阵之间内插。
    如果只有一个矩阵具有 0红增益、则内插 CCM 没有0增益。
    您应该能够在运行时轻松打印出 CCM 内插的实现方式。
    从您的共享日志来看、一切似乎都正常工作。

    >>  我观察到、将红色通道设置为零(R = 0)在任何测试过的色温(包括2700K、4150K、5000K 和6500K)下都没有任何明显的影响。

    我看不到您如何在 xml 文件中修改 CCM。
    如果将所有 CCM 中的所有从红到红的增益设置为0、则可以看到差异。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的刚华:

    我们知道、CCM 是在运行时在两个相邻颜色校准矩阵之间内插的、而 RGB 增益值是根据此内插确定的。

    如 rgb2rgb.xml 文件中所示、D65 CCM 具有以下值:

    {440、-237、53、0}、
    {-79,375、-40、0}、
    {-1、-177,434、0}

     

    {443、-230、53、0}、
    {0373、-37、0}、
    {-1、-189,446、0}

    但是、打印表明、由于相邻颜色校准矩阵之间存在插值、因此在运行时应用上述 D65 CCM 矩阵。

    当我通过调整 RGB 增益值对 D65 CCM 进行微调时、变化不会反映出来、因为它使用的是内插 RGB 增益值。 例如、对于上面的矩阵、如果我将增益 R 设置为440到880、则合成图像中不会有相应的巨大差异。 打印显示 R Gain 仍设置为443。

     

    是否有办法防止两个相邻颜色校准矩阵之间的 CCM 插值? 我在这里的目标是通过针对所有灯微调这些 CCM 来实现预期(优于当前)的图像质量。

    为了达到我的预期图像质量、我预计 rgb2rgb 插件会出现以下行为:

    • 区域1:0 - 3300K
    • 区域2:3301 - 4500K
    • 区域3:4501-5500K
    • 地区4:5501-20000K

    如果 AWB 决策为≤3300K、则应用区域1 CCM 矩阵。  

    如果 AWB 决策介于3301 - 4500K 之间、则应用区域2 CCM 矩阵。  

    如果 AWB 决策介于4501 - 5500K 之间、则应用区域3 CCM 矩阵。  

    如果 AWB 决策为≥5501K、则应用区域4 CCM 矩阵。

    此致、

    病毒沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi viral、

    是否有办法防止在两个相邻颜色校准矩阵之间插值 CCM?

    可以、您可以通过修改 CCM 内插代码来实现该目的。

    https://git.ti.com/cgit/processor-sdk/imaging/tree/algos/dcc/src parse/parse_data.c?h=main#n1214

    请参考 NSF4案例示例。

    https://git.ti.com/cgit/processor-sdk/imaging/tree/algos/dcc/src parse/parse_data.c?h=main#n1231