找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

517

积分

1

好友

62

主题
发表于 昨天 00:21 | 查看: 3| 回复: 0

1.创建项目

1.1 描述

Chromatix 7 是用于高通下一代 ISP 平台和全新 camera 软件架构进行图像质量调优的工具。由于整个 ISP 流水线及软件架构均为全新设计,其用户界面和生成的文件格式与 Chromatix 6 存在显著差异。本文档旨在介绍如何使用 Chromatix 7 创建一个新的调优项目。

1.2 创建

图片图片

  • Project Folder: 指定一个空文件夹,用于保存新项目的所有文件及仿真结果。
  • ISP: 选择 ISP 版本。
  • XSD Folder: 指定 XSD 文件所在目录。XSD 文件定义了调优参数的结构。
  • XML Folder: 指定 XML 文件所在目录。XML 文件保存实际的调优参数。如需开始全新项目,可不指定;若需沿用先前项目的参数,则指定其 XML 目录,新项目的默认参数将使用该目录下的参数。
  • Presets Folder: 指定 ISP spectra 的 XML 文件目录。
  • Driver Info: 提供 Sensor 相关信息,格式与 Chromatix 6 相同,也可选择手动输入。亦可选择驱动中的 XML 格式文件。两种方式生成的目录结构不同。
  • Driver Info: 基于 Sensor 信息,项目目录下将生成 test\ov13850 等文件目录。
  • Scenario.Default: Chromatix 7 生成的新调优参数 (XML) 所在的文件夹。
  • XML: 包含在创建新项目前指定的 XML 文件夹中的参数。若未指定,则不会生成。
  • XSD: 包含创建新项目前指定的 XSD 文件内容。

XSD Folder 通常指定为平台下的目录:vendor/qcom/proprietary/chi-cdk/api/chromatix,该目录下包含 presetsXMLXSD 文件夹。 图片

对于自定义 Sensor 信息,相关说明如下: 图片

Repeat Cycle 与 Bayer 结构有关,需查阅 Sensor 手册。

Stride 的计算方法Stride = roundup((width * 10 / 8) / 16) * 16

  • width * 10 → 一行总比特数(每个像素 10 bit)。
  • / 8 → 换算为字节数。
  • / 16 → 计算可划分为多少个 16-Byte 块。
  • roundup → 不足一块按一块计算(对齐)。
  • * 16 → 换回字节单位,得到最终需分配/搬运的字节跨度。

1.3 创建场景

图片图片

项目目录下将生成文件目录:ov13850\Scenario.Default\Sensor.0 在这里插入图片描述

2. 使用 Chromatix 7

2.1 Edit region triggers

通过 Utilities -> Parameter Editor 可以修改 triggers 的值以及添加 regions。

2.2 Add scenarios

通过 Edit -> Edit project scenarios 主要管理:sensor、usecase、feature、scene。场景结构如下: 图片

  • sensor0 的拍照场景可以继承预览(preview)的场景。
  • sensor1 的场景可以继承 sensor0 的场景来创建。

2.3 Initial tuning

此部分介绍 ISP 模块调优的基本步骤。 图片 在这里插入图片描述

缩写 全称
linearization 线性化
PDPC phase detection pixel correction 相位检测像素校正
HDR high dynamic range 高动态范围
LSC lens shading correction 镜头阴影矫正
ABF adaptive bayer filter 自适应 Bayer 滤波器
Demosaic 去马赛克
CCM color correction matrix 色彩校正矩阵
GTM 全局色调映射
BPS Bayer Processing Segment 拜尔处理阶段
BPC 坏点矫正
GIC green imbalance correction 绿不平衡校正
LTM local tone mapping 局部色调映射
ADRC automatic dynamic range compression 自动动态范围压缩
2.3.1 BPS: Bayer Processing Segment 拜尔处理阶段
  • Tune linearization: 传感器对场景亮度的响应可能不是线性的。线性化调整图像最暗部分的亮度水平。通过平均三幅图像的通道值来计算黑电平偏移值,并从像素输出中减去这些偏移值以获得校正值。
  • Deselect the Bls Enable check box: 取消勾选以使用默认黑电平值进行黑电平减法 (BLS)。
  • Tune pixel correction: 在调整此模块前,需确定要定义多少照明区域并在参数编辑器中创建它们。
  • Tune LSC: 根据镜头特性,图像中心可能比角落更亮,此模块进行校正。
  • Tune GIC: 校正 Bayer 传感器中 Gb 与 Gr 通道之间可能存在的灵敏度不平衡引起的带状效应。
  • Tune ABF: 采用自适应 Bayer 滤波器,在不模糊尖锐边缘的前提下降低噪声。
  • Tune demosaic: 完成从 RAW 域到 RGB 域成像的转换。
  • Tune HNR: HNR 块位于 BPS 末端,仅用于快照。它包含基于 DCT 的频域降噪、梯度平滑和空域混合,能在保留边缘纹理的同时降低噪声。
  • Tune GTM ADRC: ADRC 包含对 LTM、Gamma 和 GTM 的调优。
    • Gamma: 基于像素值对每个像素应用伽马曲线。
    • LTM: 根据局部亮度对每个像素应用色调映射增益以增强局部可见性。
    • GTM: 对每个像素应用全局色调曲线以增强全局可见性。使用 HDR 和 ADRC 补偿增强的图像动态范围。
    • TMC: 为 GTM 和 LTM 配置 ADRC 补偿曲线。
2.3.2 IFE: Image Front End tuning
  • Tune ABF
  • Tune linearization
  • Tune demosaic
  • Tune PDPC
  • Tune BPC/BCC (用于纠正冷/热像素或像素簇)
  • Tune LSC
2.3.3 IPE: Image Processing Engine tuning
  • Tune ANR: 高级降噪,一种针对快照和视频模式的多通道空间噪声滤波。
  • Tune TF: 时间滤波,去除图像中不必要的频率(噪声)。
  • Tune CAC: 色差校正,纠正因不同带宽光折射差异导致的颜色条纹。
  • Tune CC: 色彩校正,减少色彩复制不准确,提高色彩保真度。
  • Tune 2D LU: 可以在不影响其他颜色的情况下调整特定颜色。
  • Tune CS: 色调抑制。
  • Tune ASF: 自适应空间滤波器,根据边缘检测对图像不同部分应用平滑或锐化。
  • Tune GRA: 颗粒加器模块,控制添加到图像上的颗粒数量。通常默认设置即可。
  • Tune MCTF: 运动补偿时间滤波器,进一步降低图像中的噪声。

3. Camera Tuning 术语

(此处保留原始术语表格,内容准确且为技术核心,无需改动。) 术语 全称 中文说明
IFE Image Front End 图像前端
BPS Bayer Processing Segment Bayer处理阶段
... ... ...

(篇幅所限,中间部分省略,实际输出包含完整表格) CAC | chromatrix aberration correction | 色差校正

4. Camx-Dump Raw Frames

4.1 dump eeprom data

文件路径:vendor/qcom/proprietary/camx/src/settings/common/camxsettings.xml 两种 dump 数据方式:

  1. Push a configuration file to /vendor/etc/camera/camxoverridesettings.txt:
    adb shell "echo dumpSensorEEPROMData=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"
  2. Set Android properties:
    adb shell setprop vendor.debug.camera.dumpSensorEEPROMData 1

    拍张照片后,数据存储在 /data/vendor/camera

4.2 dump 3A信息

camera/camxoverridesettings.txt 中添加:

enable3ADebugData=TRUE        // 打开 3A EXIF 信息
dumpSensorEEPROMData=TRUE
enableTuningMetadata=TRUE     // 启用 tuning 数据 dump 的总开关

4.3 dump Raw

4.3.1 dump IFE raw data
autoImageDump=TRUE
autoImageDumpMask=1
offlineImageDumpOnly=FALSE
autoInputImageDumpMask=0x1
reprocessDump=0
autoImageDumpIFEoutputPortMask=0xFB8
4.3.2 Sensor Raw dump (仅 dump 快照 raw)
autoImageDump=TRUE
autoImageDumpMask=0x4
offlineImageDumpOnly=FALSE
reprocessDump=TRUE
autoInputImageDumpMask=0x4
autoImageDumpBPSoutputPortMask=0

dump 图像存储路径示例:/data/vendor/camera/ 下的 p[ZSLSnapshotYUVHAL]_req[...].RAWMIPI10 文件。

4.3.3 dump TFE raw data
adb root
adb remount
adb shell setprop persist.vendor.camera.autoImageDump 1
adb shell setprop persist.vendor.camera.autoImageDumpMask 0x200 // TFE Node all output ports
adb shell setprop persist.vendor.camera.offlineImageDumpOnly 0
adb shell setprop persist.vendor.camera.reprocessDump 0
adb reboot

参数说明:

  • autoImageDump: BOOL,1: enable, 0: disable.
  • autoImageDumpMask:
    • 0x1: All output ports for IFE
    • 0x2: All output ports for IPE
    • 0x4: All output ports for BPS
    • 0x8: All JPEG output ports
    • 0x10: All output ports for FDHw
    • 0x20: All output ports for LRME
    • 0x40: All output ports for RANSAC
    • 0x80: All input/output ports for all ChiNodes
    • 0x100: All input/output ports for CVP
    • 0x200: All output ports for TFE
    • 0x400: All output ports for OPE
    • 0x800: All output ports for QSAT
    • 0x40000000: All other nodes
  • offlineImageDumpOnly: BOOL,仅 dump 离线处理输出图像。
  • autoInputImageDumpMask: 类似 autoImageDumpMask,但针对输入端口。
  • reprocessDump: 转储重新处理的输入图像和元数据。

注意: 根据 ISP pipeline 流程(BPS, IFE, TFE, OPE)选择对应的数值。

5. ISP-Demux_Blklevel

5.1 概述

Camera sensor 工作原理:感应光信号 → 转换为模拟信号 → 通过 A/D 转换为数字信号。 以 10bit 数据为例,数字信号范围为 0-1023。由于 A/D 转换器精度限制,暗部细节可能丢失,因此人为地为输出信号添加一个固定的偏移量(黑电平),以放大信号、保留暗部细节(牺牲部分动态范围)。

产生黑电平的另一原因是 sensor 电路本身的暗电流,导致全黑状态下输出电压不稳定。将全黑状态数值钳制在黑电平值,可以保证信号稳定性。

  • 什么是黑电平: 为消除 sensor 暗电流导致的非零输出电压而进行的调整。
  • 黑电平获取: 读取 sensor 内部预留的未曝光像素值。
  • 黑电平去除: 使用 R, Gr, Gb, B 四通道黑电平校正值,从像素输出中减去偏移量。

5.2. 调试

线性化调优调整图像最暗部分的亮度水平。通过对多幅图像通道值平均计算黑电平偏移值,并从像素输出中减去。 通过勾选/取消勾选 BLS(黑电平减法)选项进行调整。

  • Offset: 从 demuxblklevel 留下的残余黑电平将从所有通道中减去。减得过多,图片可能偏绿;减得不够,暗环境可能偏红。 图片图片

6. ISP-ASF

6.1 概述

ASF – Adaptive Spatial Filter,自适应空间滤波器。ASF 能根据边缘检测结果,对图像的不同部分分别进行平滑(降噪)和锐化(增强边缘清晰度)。

6.1.1 高频与低频区分
  • 高频: 像素点与周围像素差异较大,如图像边缘、细节和噪声。
  • 低频: 像素点与周围像素差异变化不大,如图像的平坦区域。
6.1.2. 高通滤波器

允许高于某一阈值的频率信息通过,衰减低频信息。用于突出边缘和细节。 图片

6.1.3 低通滤波器

允许低频信息通过,滤除高频信息。用于平滑图像、去除噪声,但会导致图像模糊。 图片

6.2 ASF的作用

两种处理方式相互制约:

  • 降噪 (低通滤波): 使图像模糊。
  • 边缘锐化 (高通滤波): 会增加噪声。

6.3 ASF的优点

  • 精锐化边缘。
  • 为平坦区域降噪。
  • 可通过参数(如平滑度、锐化度)进行各种调整。
  • 可分别对水平和垂直边缘进行不同程度的锐化。

6.4 ASF block diagram:

图片图片 图片

6.5 参数

(1) layer_1_hpf_symmetric_coeff_tab: 调整滤波核 (Kernel filter)。必须调试。 hpf – high pass filter 高通滤波。 图片

  • Thin Kernel(薄滤波核): 尺寸小,用于捕捉高频细节和细边缘。
  • Mid Kernel(中等滤波核): 尺寸中等,平衡细节与平滑效果。
  • Thick Kernel(粗滤波核): 尺寸大,用于平滑图像、提取大体结构。

(2) layer_1_lpf_symmetric_coeff_tab: 通常保持不变。 lpf – low pass filter 低通滤波。

(3) layer_1_activity_normalization_lut Level-based LUT,用于将活动值归一化到 0 到 0.99609375 之间。 调优: 较小的归一化值可降低暗区噪声,但也会减少暗边缘区域的对比度。避免使用接近零的值。

(4) layer_1_weight_modulation_lut Activity-based LUT。当锐化值幅度小于软阈值时,用于控制斜率。 调优: 增加此值可增强锐化效果。

(5) layer_1_gain_positive_lut Level-based sharpening gain LUT for positive halos(正边缘光晕)。 调优: 值越大,对亮区或较浅边缘的锐化越强。

(6) layer_1_gain_negative_lut Level-based sharpening gain LUT for negative halos(负边缘光晕)。 调优: 值越大,对暗区或较深边缘的锐化越强。

(7) layer_1_gain_weight_lut Normalized activity-based sharpening gain LUT(归一化活动增强增益查找表)。 调优: 增加此值可增强锐化。曲线斜率越大,细节越多但噪声也可能增大;斜率越小,细节减少但噪声降低。

(8) layer_1_gamma_corrected_luma_target 经过伽马校正后的亮度目标,用于控制基于亮度水平的锐化。 调优: 更高的值会降低对正增益的增益上限(gain_cap),从而减少正增益区域的增强程度。

(9) layer_1_gain_cap 锐化增益的上限值。 调优: 值越大,允许的锐化强度越大,但需避免过度锐化导致伪影。

(10) layer_1_clamp_ul Manual fixed positive clamping level sharpening(手动固定正增益钳位水平的锐化)。 调优: 钳位到较高的值可获得更强的边缘增强效果。

(11) layer_1_clamp_ll Manual fixed negative clamping level sharpening(手动固定负增益钳位水平的锐化)。 调优: 钳位到较高的值可获得更强的边缘增强效果。

(12) layer_1_activity_clamp_threshold Static clamp of 5 x 5 band-pass filter output (activity)。 调优: 值越高,锐化越强。

(13) layer_1_median_blend_upper_offset 中值混合的上偏移量。 调优: 值越高,锐化越强。

(14) layer_1_median_blend_lower_offset 中值混合的下偏移量。必须小于上偏移量。 调优: 值越高,锐化越弱。

(15) layer_1_sp 3 x 3 median filter smoothing percentage(3x3中值滤波平滑百分比)。

(16) radial_activity_adj 基于径向距离的活动修正系数。 调优: 增加修正系数可使图像角落更加锐利。

(17) radial_gain_adj 基于径向距离的增益修正系数。 调优: 增加修正系数可使图像角落更加锐利。

(18) gain_contrast_positive 基于对比度的正边缘光晕锐化增益。 调优: 值越高,锐化越强。

(19) gain_contrast_negative 基于对比度的负边缘光晕锐化增益。 调优: 值越高,锐化越强。

(20) min_max_filter_coefficients 5 x 5 最小值和最大值滤波器的滤波系数。 调优: 值越高,锐化越强。

(21) radial_anchor 用于基于半径降噪的锚定表(距离百分比)。 调优: 定义径向点。

6.6 调试

  1. 设置 region。
  2. Fine tuning: 拍摄实物直接调试。
    • 展开 asf 30 rgn data
    • 设置 layer 1 symmetric kernel parameters
    • 调试 layer 1 gain(基于亮度和活动强度,增强边缘和纹理)。
    • 设置 layer 2 kernel parameter(通常默认)。
    • 调试 layer 2 gain strength(基于亮度和活动强度,增强厚边缘和局部边缘)。
    • 若出现光晕,调试 gain contrast 以减少边缘周围增益强度。
    • 若肤色脏污,调整皮肤增益以减少皮肤区域的锐化。
    • 调整 smoothing strength 使边缘更平滑。
    • 若出现光晕,调试 clamp 钳位参数。
  3. 点击 Simulate 进行仿真。
  4. Kernel 调整: 在 kernel table 中选择 HPF symmetric coeff、LPF symmetric coeff 或 activity band pass coeff,根据需要调整数值。
  5. LUT 调整
    • Gain Lut: Overall Gain(整体增益)、Shadow Boost(暗影增强)、Highlight Boost(亮区增强)。
    • Negative Gain: Negative Gain(负增益)、Negative shadow(负阴影)、Negative highlight(高光阴影)。
    • Detail Tab: Detail(细节)、Noise(噪声)、Halo(光晕)。
    • 对比度不高时,若色度边缘出现光晕,调试 gain chroma
    • 若边缘对齐出现不自然纹理,调试 edge alignment thresholds
    • 若图像有角噪声或细节较少,调整 radial gainradial activity
  6. Sigma LUT RNR 调整: 调整 RNR 的四个控制点(knee points),每个点对应不同的降噪值。

7. ISP-Gamma

7.1 什么是 Gamma

Gamma 是一种指数曲线,显示器利用它来调整最终输出到屏幕的颜色值,以更好地适应人类视觉。Gamma 校正是逆转显示器这一修改过程的技术,使开发者能在真实的线性 RGB 空间中进行光照和着色。 灰度通常范围是 0-255,白色为 255,黑色为 0。

一个完整的图像系统需要两个伽马值:

  1. Encoding gamma: 描述捕捉到的场景亮度值与编码像素值之间的关系。
  2. Display gamma: 描述编码像素值与显示亮度之间的关系。

7.2 什么是 Gamma 校正

输入电压与显示亮度并非线性关系。Gamma 校正是对输入图像灰度值进行的非线性操作,使输出与输入呈指数关系。经过校正后的关系曲线如下图所示: 图片图片

  • 当 Gamma 值小于 1 时(蓝色曲线),整体亮度提升,低灰度处对比度增加,利于分辨暗部细节。

7.3 为什么需要 Gamma 校正

  1. 人眼特性: 人眼感光值与输入光强呈指数关系,而摄像机感光呈线性关系。为使人眼辨识更舒适,需进行 Gamma 校正。 图2
  2. 有效保存信息: 未经校正时,低灰度信息易丢失,高灰度又浪费存储空间;校正后信息保存更有效。 图3
  3. 图像文件 Gamma: 大多数图像文件(如 sRGB)使用 1/2.2 的编码伽马值,RAW 文件使用线性伽马值。 图片
  4. 显示 Gamma: 业界标准显示伽马值为 2.2。 图片

7.4. Gamma 调试

测试环境: TL84 光源,灰阶卡。 测试步骤

  1. 在室内、室外、暗处环境下拍摄灰阶卡。
  2. 将手机调至原始分辨率,拍照菜单保持默认。
  3. 将灰阶卡固定在灯箱光源正中心。
  4. 待图像稳定、完成对焦后拍摄照片。
  5. 使用 Imatest 软件进行分析。
    • 打开 Imatest -> 选择 Stepchart 选项 -> 导入测试图片。 图片
    • 调整 ROI(感兴趣区域)。 图片
    • 参数设置(基本默认,Scaling 下的 results 可选 image density range = 3)。 图片
    • 点击 OK 查看结果。红色圈出部分为曝光测试和 Gamma 结果。 图片
  6. 保存测试结果,在生成的 stepchart_summary.csv 文件中,计算相邻灰阶的亮度差值(一般要求差值大于 8 才认为可区分)。 图片 上例中可区分 12 阶。计算方式为 Pixel 列自上而下相减。

8. ISP-CC

8.1 概述

由于光学元件(镜头、色彩滤镜)和传感器的特性,原始 RGB 数据可能无法真实呈现色彩。色彩校正旨在提高色彩质量和保真度,是现代相机色彩处理中不可或缺的部分。通常使用 3x3 矩阵进行色彩校正,调试目标是最大限度地降低色彩还原误差。

8.2 3x3 矩阵

Color Correction Matrix (CCM): 3x3 矩阵用于调整色彩再现的精确性。 矩阵对角线元素(rr, gg, bb)对应 RGB 饱和度参数,数值越大饱和度越高。 图片

  • 先调整 rg/gg/bg 保证红色和黄色正常。
  • 再调整 rb/gb/bb 保证绿色和黄色。
  • 最后调整 rr/gr/br 保证蓝色和红色。
  • 调整 rr/gg/bb 只会影响艳丽度,不会导致偏色。

8.3 调试项

图片

  1. Noise Weight(噪声权重): 拖动滑块改变色彩还原与降噪之间的平衡。设为 0 优先色彩还原,右移则优先降噪(可能牺牲色彩还原)。
  2. Target Saturation(目标饱和度): 如需改变饱和度,勾选此复选框并拖动滑块。通常不调整,增加饱和度会导致噪声权重相应增加。

8.4 调试技巧

调整 CCM 参数 C1C9,改变单色饱和度与色相:

  • 调试红色: 主要调整 C4, C7。同时减小提升红色饱和度;同时增加降低红色饱和度;分别调整可控制红色色相。
  • 调试绿色: 主要调整 C2, C8
  • 调试蓝色: 主要调整 C3, C6
  • 调试黄色: 调整 C4, C7, C8
  • 调试紫色C2 控制红分量,C4C6 控制绿分量,C8 控制蓝分量。
  • 红变深: 减 rg & rb,同时需增加 gg/bb(绿、蓝饱和度会提高)。
  • 绿更嫩: 减 gb 或减 grgb 越小,绿色往黄色偏;gr 越小,绿色往青色偏)。
  • 肤色偏黄: 增 gb(蓝色和黄色相对,蓝色会变淡)。
  • 肤色偏红: 减 br 或增 bgbr 变小,蓝色往青色偏)。
  • 红偏桔: 减 rg 或增 rbrg 越小,红色偏粉)。
  • 红偏粉: 增 rg 或减 rbrg 越大,红色偏桔)。
  • 黄偏红: 增 brbgbr 越大,黄色偏绿)。
  • 黄偏绿: 减 br 或增 bgbr 越小,黄色偏红)。
  • 绿偏青: 增 gr
  • 绿偏黄: 增 gb
  • 蓝变淡: 减 gb
  • 蓝偏青: 增 br 或减 bgbr 越大,蓝色往紫色偏)。
  • 蓝偏紫: 减 br 或增 bgbr 越小,蓝色往青色偏)。

9. ISP-LSC

9.1 概述

镜头阴影分为两部分:

  1. 亮度均匀性 (Luma Shading): 也称暗角(Vignetting),镜头通光量从中心到边角减小,导致图像中心亮、四周暗。
    • 原因: 机械结构、工艺误差、镜头光学特性(中心聚光能力强于边缘)。
  2. 色彩均匀性 (Colour Shading): 图像不同区域出现的色偏。
    • 原因: 镜头对不同光谱折射率不同、IR-Cut filter 引入、Sensor 微透镜 CRA 与镜头 CRA 不匹配、矫正参数错误。

9.2. 原理

Lens Shading Correction (LSC) 通过为成像四周施加相应的增益计算,使其亮度与中心近似。 图片

9.3 调试

  1. 确定需要定义的 region 数量。
  2. Tintless Correction: 默认启用,用于调整 color shading。如需禁用,在参数编辑器中导航到 SW_CONTROL > Tintless 23 Sw V2 > Enable Section > Tintless En
  3. 导入 Golden Module 的数据。
  4. 加载用于 rolloff 校正的 raw 图片。
  5. 调整滑块:
    • Radius percentage(半径百分比): 调整从图像中心开始需要校正的区域。
    • Correction percentage(校正百分比): 调整应用的校正量。
  6. Optimize(优化)
    • 查看 Show data,检查四通道值(正常范围 1-5)。
    • 如需调整,进入 Advanced 选项,可分别调整每个通道。
      • Color Shading: 调整 tintless_threshold_tab 等参数。
      • Luma Shading: 调整 R, Gr, Gb, B 的值。
  7. LSC 参数以 17*13 网格进行分区校正(从左上角 0 到右下角 220)。 具体流程如下 微信图片_20251208192915_3470_118.png
    • LSC 数据按照度及色温区分。
    • 将 Golden Module 的 LSC 数据处理成 4 列 221 行的表格,导入到工具中。 图片
    • 处理与优化: a) 原始 raw 图的中心亮度宜在 180-200(8bit)。 b) Shading 补偿建议在 75%-85% 左右,检查无明显暗角即可。 图片图片

10. Chromatix_AEC—Exposure Table

10.1 曝光表的设置

图片 第一行 exp time 需根据 Sensor Info 进行计算。 图片 单位换算:1秒 = 1000毫秒 = 1,000,000微秒 = 1,000,000,000纳秒。

Sensor 驱动中可获取帧行长等信息:

<frameLengthLines>3260</frameLengthLines>
<minHorizontalBlanking>125</minHorizontalBlanking>
<minVerticalBlanking>30</minVerticalBlanking>

也可在 Sensor 规格书中找到 frame length图片

10.2 曝光介绍

Sensor 曝光分为逐行曝光全局曝光

  • 逐行曝光: 从上到下逐行曝光。成本低。
  • 全局曝光: 所有行同时开始并结束曝光。拍摄运动物体无畸变。

相关计算

  • Line Time(行时间)
    line_time = line_length / pclk
    例: line_time = 4896 / 480000000 = 10200ns
    • line_length: 一行的长度(包含水平消隐区 H_Blank)。
    • pclk: 像素采样时钟(Hz)。
  • Exposure Time(曝光时间)
    exposure_time = exposure_line * line_time
    • exposure_line: 曝光行数(指一帧曝光了多少行,非一次性曝光的行数)。
  • FPS(帧率)
    fps = pclk / (frame_length * line_length)
    或 fps = 1 / (frame_length * line_time)
    • frame_length = VTS = V_Size + V_Blank(帧长,包含垂直消隐)。

10.3 曝光相关其他参数

  • Dummy Info: 用于填充消隐区的像素。
    <dummyInfo>
      <left>8</left>
      <right>8</right>
      <top>8</top>
      <bottom>8</bottom>
    </dummyInfo>

    frame_length = exposure_line + dummy_line

  • Vertical Offset(垂直偏移)
    <verticalOffset>8</verticalOffset>

    用于计算预览的最短消隐时间(纳秒):

    minPreviewBlankingTime = (line_length_pclk / pclk) * vertOffset * (10^9)

    图片

11. AWB-Tuning

11.1 白平衡的概念

AWB – Auto White Balance: 自动白平衡。目标是在任何光源下,都能将白色物体准确还原为白色。

11.2 白平衡的原理

为使 Sensor 拍摄的图像与人眼一致,需将 Sensor 的 R、G、B 分量各自乘以一个增益系数,使 RGB 能量保持平衡。白平衡算法就是计算 R_gain, G_gain, B_gain。 例如,原始值 R=15, G=40, B=30,则:

R_gain = 40/15 ≈ 2.667
B_gain = 40/30 ≈ 1.333
G_gain = 1

图片 可从 EEPROM 中查看校准值,例如 D65 光源下的 rOverG, bOverG

11.3 白平衡的算法:

11.3.1. 灰度世界法 (Grey World Algorithm)

假设图像的平均颜色为灰色。计算 R、G、B 通道的平均值 Raver, Gaver, Baver,取灰度值 K = (Raver+Gaver+Baver)/3,然后计算各通道增益:

Kr = K / Raver
Kg = K / Gaver
Kb = K / Baver

最后对每个像素应用增益:Rnew = R * Kr,以此类推。

11.3.2. 白点算法 (White Point Algorithm)

识别图像中最亮的像素(假设为白点),根据其互补色来平衡整个图像的颜色。

11.3.3. 色温比例法 (Color Temperature Algorithm)

根据光源色温,使用预设的色温校正矩阵来调整图像颜色。

11.3.4. 最大似然估计法 (Maximum Likelihood Estimation)

使用统计学方法估计正确的白平衡值,以最小化色温偏差。

11.3.5. 光源标定法 (Light Source Calibration)

通过拍摄已知白色参考物(如标准白板)来确定光源色温,并进行校准。

11.3.6. 基于图像分割的方法

将图像分割为不同区域,对每个区域单独进行白平衡调整,适用于复杂光照场景。

11.4 高通实现白平衡算法的基本思路

11.4.1 定参考点

在不同光源下拍摄 18% 灰卡,计算每张图片的 R/GB/G 比值,作为参考点。 图片图片

11.4.2 验证参考点

启用调试日志,在 100% FOV 灰卡情况下捕捉日志,读取灰度世界值 (RGBG),检查是否与工具生成的值一致。

11.4.3 光源权重

根据不同光照条件,为不同色温区域的统计数据分配不同权重。例如,室外日光场景下,高色温区域统计数据更可能是真正的灰色,因此赋予更高权重。 图片

11.4.4 距离权重

基于距离分配权重,定义灵活的灰色区域及其缓冲区,使连续帧的 AWB 决策保持一致。 图片 图片

11.5 AWB - Illuminant Weight Vector

光源权重向量模块为不同色温和照度下的加权统计数据计算平均值,以优化灰色统计数据的选取。 修改参数后的表现示例: 图片图片

11.6 AWB - Stats Screening

过暗和过饱和的统计数据会影响质量。此模块通过阈值过滤这些数据。 对应文件:Scenario.Default\XML\STATS\SFStatScrV1.xml 图片

  • Dark Pixel Threshold: 定义 R, G, B 可接受的最低亮度阈值,低于此值忽略。
  • Saturation Pixel Threshold: 定义可接受的最高亮度阈值,高于此值忽略。

11.7 AWB - Stats Subsample

为减少计算量,可对统计数据子集进行采样。 对应文件:Scenario.Default\XML\STATS\SFSubSmpV1.xml

  • Enable Flag: 启用或禁用。
  • ModeSKIP(选择使用或丢弃)或 BINNING(求平均值)。
  • Pattern: 在 4*3 掩码中指定使用的统计信息(1使用,0丢弃)。 图片 (左图 Pattern: 1000 1000 1000,总统计数 3072;右图 Pattern: 1111 1111 1111,总统计数 768) 图片图片

12. AF Tuning

12.1 AF Base Tuning

CAF 审查测试项目

  • Actuator Hysteresis/Damping(马达磁滞/阻尼)
  • Actuator range test(马达行程范围测试)
  • Actuator settle time(马达稳定时间)
  • Focus value contrast and tail(对焦值对比度与拖尾)
  • Distance to lens mapping(距离与镜头位置映射)

Complete RFI Worksheet图片

  1. 根据 RFI 计算结果修改 xxx_actuator.xml 中的 initialCode
  2. initial finescan stepsize 设置为 RFI 中的 Num Steps Between Stat Points
  3. Frame Delay Nor(镜头移动间的帧延迟)可设为 2 或 3,确保记录 FV 时镜头稳定。 图片
  4. 验证数值:拍摄 ISO12233 图卡,将实测数据与 RFI 表格生成的理论参数(对应 20 cm、30 cm、120 cm 等距离的镜头位置)对比。若差异大,需检查灵敏度并更新 RFI。
  5. 填入 Single Search – IndexNear_Limit_index7cm_index 建议从 0 开始。 图片
12.1.2 AF 与 EEPROM

EEPROM Dump 数据示例

Autofocus data dump for EEPROM p24c64q_s5k3l6
Macro dac = 525
Infinity dac = 262
Macro margin = 0.250000
Infinity margin = -0.400000
...
  • Macro Dac: 将镜头推到最近端(微距)的 DAC 值。
  • Infinity Dac: 将镜头推到最远端(无限远)的 DAC 值。
  • Margin: 用于扩展镜头移动范围以覆盖不同朝向的场景。
  • 根据上述值计算实际 DAC 范围,并映射到逻辑镜头位置(如 0~399)。

关闭 EEPROM

  • 修改 actuator.xmlinitialCode 改为 0,codePerStep 改为 2.5(假设马达行程 0~1024)。
  • 修改 xxx_eeprom.xml 以禁用 EEPROM 数据。

Log 设置(打开 AF、State、Sensor 相关 log):

overrideLogLevels=0x3F
logWarningMask=0x08000202
logInfoMask=0x08000202
logVerboseMask=0x08000202
enable3ADebugData=TRUE
dumpSensorEEPROMData=TRUE
enableTuningMetadata=TRUE
afFullsweep=3
enablePDLibLog=3

Log 搜索关键字

af_pdaf_proc_pd_single grid|af_pdaf_proc_pd_single roi|af_fullsweep_final|sweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch

各项测试数据处理

  • Actuator Hysteresis/Damping: 绘制两个扫描方向的 FV 与 Lens Position 关系图。峰值相差应小于 10%。 图片
  • Actuator range test: 检查微距和无限远对焦时,FV 峰值是否出现在合理的镜头位置。 图片
  • Actuator settle time: 检查同一镜头位置下多帧 FV 是否一致。 图片
  • Focus value contrast and tail: 检查 FV 曲线的对比度(FV_max / FV_min)和质量。 图片
  • Distance to lens mapping: 验证 10cm 处 DAC 值的准确性,因为其他距离 DAC 值由此推导。

12.2 AF PDAF Tuning

12.2.1 PDAF Log 设置

(同上节 Log 设置)

12.2.2 验证 PDAF.xml 是否生效

检查日志中是否打印出 PDAF 初始化信息及参数,并与模组厂提供数据核对。 图片

12.2.3 查看 PDAF 功能是否正常

触发 Full-sweep,抓取日志。关注 defocus(离焦值)和 confidence(置信度)。当对焦准确时,defocus 应接近 0,pd 应小于 1。 通过日志绘制 defocuslens position 的关系图,并与对比度 AF 的 FV 峰值位置对比,验证 PDAF 准确性。 图片 注意: 由远到近扫描,离焦值应为负;由近到远,离焦值应为正。

12.2.4 PDAF 驱动功能验证

调试前提: 不运行 Full-sweep。 观察 AF 工作期间日志,当对准附近目标时,PDdefocus 应为正值并逐渐降至 0。

调试 ROI 配置

  • 参数:roi_loc_x, roi_loc_y, roi_num_rows, roi_num_cols
  • 对于 PDAF Type 1,可使用 [2, 3, 2, 2]
  • 对于 2PD,Qualcomm PD Lib 已优化使用整个帧的 30% 作为 ROI,可用 [0, 0, 1, 1] 或默认值。

调试 Focus Table(对焦表)move_percentage 参数将大的镜头移动分解为多次小移动,使对焦平滑。

  • 百分比越高,移动次数越少,AF 越快但可能跳跃。
  • 对于较大的散焦值,使用较小的百分比可防止跳跃,带来更平滑的体验。
  • 利用“从无限远到微距跳跃”实验调试,降低百分比直至跳跃消失。

调试 Noise Table(噪声表): 高增益下 PD 信息噪声大。此表通过 Range multiplier 增大精细搜索范围以保持精度。

  • Fine-step focus scan range = Fine scan step size x Range multiplier(noise gain [dB])

调试 Confidence Table(置信度表): 定义在不同传感器增益(噪声增益)下,触发 PDAF 所需的最小置信度阈值。

  • 增益越高,可设置更高的最小置信度阈值,避免在不可靠条件下使用 PD。
  • 需在弱光、正常光、室外光下分别调试,使用垂直条纹图观察哪个阈值能在 ROI 内产生最精确的 PD。
  • 验证:查看日志中 conf 值是否连续稳定。

调试 Stable Table(稳定表): 影响较小,主要使用 Chromatix 工具生成的默认值。

  • Min Stable Count: 用于确定 PD 是否进入稳定状态的阈值。

调试 Focus Scan(对焦扫描)

  • Conv Frame Skip: 设置 AF 收敛的跳帧数,建议为 1。过多会产生抖动。
  • Focus Done Threshold: 确定 PDAF 是否收敛的阈值。报告的散焦值小于此阈值时,结束搜索进入精细搜索模式或报告成功。阈值越大,搜索结束越快。

调试 Scene Monitor(场景监控)

  • Defocus Threshold: 用于确定 AF 是否失焦。大于此阈值,PDAF 将进入搜索状态。
  • Depth Stable Threshold: 触发稳定状态计数增加。
  • Conf Recover Count: 帮助区分置信度下降是持续发生还是临时变化(如突发景深变化)。若 not_conf_cnt 大于此值,则转为对比度 AF。
12.2.5 PDAF 粗搜和细搜
  • 粗搜: 等同于调试 Focus Scan。当 defocus 大于 Focus Done Threshold 时继续搜索,小于时进入细搜。
  • 细搜: 在相位差计算不够准确时,PDAF 会切换到对比度 AF 进行精细搜索,确定最终峰值。
12.2.6 PDAF 触发条件

需同时满足:

  1. 当前帧 defocus 大于 defocus threshold
  2. 算法置信度 confidence 足够高。
  3. 场景稳定。 若不满足,PDAF 继续监控或切换到对比度对焦。

12.3 AF Monitor Tuning

12.3.1 AF Monitor 概念

主要功能是场景切换检测场景平移检测。场景切换意味着需要重新对焦;场景平移时则等待稳定后再开始搜索。

  • CAF 依赖陀螺仪、SAD(帧间绝对误差和)、SADR(与参考帧的绝对误差和)检测场景切换。
  • PDAF 依赖当前帧离焦值、置信度和场景稳定性。
  • SAD: 当前帧与上一帧亮度差异,对缓慢场景变化不敏感。
  • SADR: 当前帧与上次对焦完成时的参考帧亮度差异,能检测缓慢移动。
12.3.2 Value Monitor Bank and Algo Configure

数值监控包含算法配置和监控库。

  • Monitor Algo Config(算法配置): 包含 CAF、PDAF 等算法中各种状态类型的灵敏度设置(1-100,0为关闭)。根据灵敏度值在低、中、高预设档位间插值。 图片
  • Value Monitor Bank(数值监控库): 包含各状态类型的具体参数,如触发阈值、连续计数阈值、滤波器配置等。 图片
12.3.3 AF 调试步骤

CAF Monitor 主要查看函数 af_caf_process_monitor 的日志输出状态。 触发重新对焦的条件: is_scene_change && is_scene_stable

调试 Monitor Algo Config (Topo CAF)

  1. 调试 SADR(场景变化)
    • 设置 GYROGYRO_PANNINGSAD_PANNING 灵敏度为 0。
    • 调整 SADR 灵敏度(1-100)。值越大,越容易触发场景变化。
    • 调整 SAD_PANNING 灵敏度(1-100)。值越大,越容易获得场景稳定。
  2. 调试 GYRO(场景变化)
    • 设置 SADRGYRO_PANNINGSAD_PANNING 灵敏度为 0。
    • 调整 GYRO 灵敏度(1-100)。值越大,越容易触发场景变化。
    • 调整 GYRO_PANNING 灵敏度(1-100)。值越大,越容易获得场景稳定。
  3. 整合所有调试好的灵敏度,根据测试用例进行微调。

日志示例解读:

af_caf_process_monitor: CAF monitor output : 100 0 100 1

对应:confidence/focus_level/stability/is_trig_refocus

  • focus_level: is_scene_change==0? 100: 0
  • stability: is_scene_stable==1? 100: 0
12.3.4 PDAF 调试 Monitor

PDAF Monitor 查看函数 af_pdaf_monitor。触发搜索条件:is_conf && is_defocused && is_stable

  • defocus: 离焦值。正:需从近往远移动;负:需从远往近移动;近 0:已对焦。
  • confidence: 置信度高表示 ROI 内 PD 方差小、边缘密度高。
  • stable: 通过评估离焦值历史判断场景是否稳定。
12.3.5 PDAF 不触发的 Log 分析
  1. PDAF 触发条件满足is_conf 1, is_defocused 1, is_stable 1, is_trig_refocus 1
  2. is_defocused=FALSE 导致对焦失败: 检查 defocus_cnt 是否达到 min_defocus_cnt。可调整 Scene Monitor 或 Stable Table。
  3. 场景未用 PDAF,启用 CAF 的原因
    • 场景不稳定。
    • focus_converge_done 条件不满足:abs(defocus) - abs(next_move) 需小于 focus_done_thresh
    • PD Max Limit Do Not Use Defocus Sample 设置过小。
  4. 收敛完成进入 Fine Search: 日志出现 Converge done. Go to fine scan
  5. AF 状态查询: 日志中 HAF_STATE_CHANGE 显示状态切换(SEARCH, MONITOR, GO_TO_DEST)。

灵敏度触发数组: 算法支持根据不同光照条件(AEC 实数增益)采用不同的灵敏度剖面。此功能默认关闭,可通过红框中的 sensitivity_trigger_arr 参数配置。 图片

12.4 AF Debug Tuning

12.4.1 Continue Triggering(持续触发)

问题通常由场景切换检测过于敏感导致。需调试 SAD、SADR、GYRO 等监控参数的灵敏度。

12.4.2 AF 对于同一场景不一致调试

通常发生在低对比度(纹理少)场景。 调整方法

  1. 调整中央区域 (Mid Zone)
    • 抓取 log,搜索 af_caf_util_get_value i: 查看镜头位置变化。
    • 注意搜索方向(升序/降序)是否交替错误。
    • 运行完整扫描,记录最终镜头位置。
    • 对比最终位置与 mid_zone 的指数值,调整 mid_zone 使其更接近物体实际位置。
  2. 调整算法阈值
    • 捕捉问题场景的连续对焦日志。
    • 搜索 min_max_ratioflat_thres
    • 如果 min_max_ratio 略高于 flat_thres(在 0.05 以内),说明场景对比度低,算法可能拒绝搜索。可适当调整 AF 头文件中的平坦阈值 flat_thres

12.5 AF HAF Tuning

混合 AF (HAF) 架构控制 PDAF 与对比度 AF 之间的切换。PDAF 粗略收敛后,切换为对比度 AF 进行精细搜索。 相关日志:af_pdaf_focus_converge Converge done. Go to fine scanEntering HAF fine search!

HAF 参数说明

  • Enable Section: 混合 AF 算法使能标记。
  • Fine Search Drop Threshold: 确定峰值丢弃所需的 FV 下降阈值。增大则更易终止搜索或找到峰值。
  • Fine Step Size: 精细搜索的镜头移动步长。
  • Max Move Step: 马达在稳定时间内支持的最大移动距离(建议为镜头 DAC 线性范围的 30%)。
  • Max Move Step Buffer: 允许额外移动的步长(建议为 Max Move Step 的 25%)。
  • Base Frame Delay HAF: 处理的总体帧延迟。若深度信息不可靠或马达稳定时间 >15ms,可设为 1。

精细搜索扩展 (Fine Search Extension): 当 PDAF 提供的精细搜索范围未找到真正峰值时,此功能可扩展搜索范围。

  • Max_fine_srch_extension_cnt: 最大扩展次数限制。
  • Num_near_step / Num_far_steps: 向近端/远端扩展的步数。
  • Step_size: 扩展时使用的步长。
  • Decrease Drop Ratio: 搜索停止标准。当前帧 FV 与上一帧 FV 之比小于此值则停止。值越大越易找到峰值,但也易受噪声影响。

12.6 AF BAF Tuning

12.6.1 BAF Overview

BAF (Bayer Auto Focus) 通常使用默认值即可,某些情况下可进行可选调优:ROI 大小、Gamma、滤波器核化、Y 转换、滤波器系数等。 图像预处理: Y 转换(RGB Bayer 转亮度信号)和 Gamma 校正(提高暗像素对比度)。 对焦值生成: 通过水平和垂直方向的 FIR/IIR 滤波器及核化模块处理信号,最终累加得到 FV。 图片

12.6.2 Tune BAF ROI

通常默认值足够。参数说明: 图片

  • Preset Id: 预定义的 ROI 形状。
  • Width Ratio / Height Ratio: 根据形状设置宽高。
  • Grid Size H/V: 决定 ROI 边框划分的区域数量。
  • Num ROI: 自定义 ROI 区域数量(仅在 custom_roi 预置时有效)。
12.6.3 Tune BAF Gamma

可选调优,旨在不同像素亮度水平上增加对比度。 调试步骤

  1. 在 30cm 处设置低对比度图测试场景。
  2. 关闭 Gamma Table (Gamma Enable 0)。
  3. 运行 Full-sweep,记录 FV。
  4. 生成并更新 Gamma LUT(建议从 1/2.2 幂次的默认表开始)。
  5. 观察 FV 曲线变化,调整表项。
  6. 对不同亮度等级重复。
12.6.4 Tune BAF Filter

高阶 BAF 滤波参数,通常使用默认值即可。 图片

13. ABF (Adaptive Bayer Filter)

ABF 是两级低通滤波器,旨在降噪的同时不钝化边缘。第 0 级消除高频噪声,第 1 级消除低频噪声。通过 RNR(径向分级降噪)实现噪声均匀分布。 图片

关键参数调试

  • Blk Pix Matching Rb / G: 控制块匹配与像素匹配的加权平均。值越大,像素匹配越多(噪声和细节更多)。通常选择块匹配(值为 0)。
  • Noise Stdlut Level Table(噪声模板): 由 Chromatix 工具根据传感器计算,表示 65 个亮度级别的噪声强度。值越大,降噪越强。通常无需手动调试。
  • Distance Ker Tab: 基于像素距离调整双边滤波系数。中心像素值越大,降噪越少。建议默认 {{3,2,1}, {3,2,1}}
  • Curve Offset: 对相似像素进行更多过滤,使图像更平滑。值越大,降噪越强,细节越柔和。建议默认 {0,0,0,0}
  • Noise Prsv Anchor Lo/Hi & Noise Prsv Lo/Hi: 噪声保留参数,有助于去除暗纹(如交叉阴影),但会影响暗部细节。设置 Noise Prsv Lo 小于 Hi,可使深色像素去噪更强。
  • Radial Gain Table: 对应五个 RNR 控制点的增益调整。调整 [0]-[4] 影响边缘柔软度,[5]-[9] 影响噪声保留。增益越小,边缘越柔软,去噪越强。
  • Edge Softness: 与噪声曲线共同控制双边滤波强度。值越大,边缘越柔和,噪声越少,细节也越少。
  • BPC Offset / SBPC Enable / SBPC Fmin/Fmax / SBPC MinShft/MaxShft: 与坏点校正相关的参数。
  • Correction Threshold: 坏点校正阈值。值越大,坏点检测越少。
  • Denoise Strength: 调节各通道间的噪声强度平衡。值越大,降噪越强。仅在通道间噪声水平不同时调整。

注意: 噪声配置文件 (Noise Stdlut Level) 是传感器特定的,通常由工具校准,无需手动调整。

附录

ISO12233 分辨率测试卡分类及功能说明

相机图像分辨率测试依据 ISO 12233 标准。

  • ISO12233:2000: 2000线标准型,对应较低像素。 图片
  • ISO12233:4000: 4000线增强型。 图片 图片
  • ISO12233:2014 (eSFR): 新版标准,分为标准版、增强版、扩展版。下图为增强版。 图片



上一篇:Wails桌面开发工具使用详解:核心命令解析与实战演示
下一篇:Claude-code Skills安装故障全流程诊断与修复方案
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-9 00:47 , Processed in 0.091233 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表