3. LSC 阴影校正原理

镜头阴影(Lens Shading)是 CMOS 图像传感器普遍存在的亮度与色彩不均匀现象。LSC(Lens Shading Correction)通过为每个像素点施加独立的增益系数来补偿这种不均匀性。本章深入解析增益矩阵原理、网格与插值算法、以及 R/G/B 三通道独立校正机制,为后续参数调试奠定理论基础。

核心概念速览: LSC 校正 = 增益矩阵 × 插值算法 × 通道独立处理。增益矩阵存储网格点的校正系数,插值算法计算非网格点的系数,通道独立校正解决不同颜色通道的阴影差异。

3.1 增益矩阵原理

增益矩阵是 LSC 校正的核心数据结构。ISP 硬件将图像传感器靶面划分为 M×N 个网格(Grid),每个网格顶点存储一个 16-bit 或 20-bit 的增益值。校正时,每个像素的最终增益由相邻四个网格点的增益值通过插值计算得到。

增益矩阵原理示意图 G₀₀ G₀₁ G₀₂ G₀₃ G₀₄ G₁₀ G₁₁ G₁₂ G₁₃ G₁₄ P(x,y) 每个网格顶点存储一个增益值 Gᵢⱼ,像素 P(x,y) 的增益由相邻 4 个顶点插值得到
增益矩阵关键参数:
  • 网格尺寸(Grid Size): 常见配置为 17×13、33×25、65×49。网格越密,校正精度越高,但存储开销和计算量也越大。
  • 增益精度: 通常为 16-bit 定点数,整数部分 4-bit,小数部分 12-bit,表示范围 1.0x ~ 16.0x。
  • 对称性: 多数传感器阴影呈中心对称,可利用四分之一或八分之一对称性减少存储量。

3.2 网格(Grid)与插值算法

ISP 硬件在接收到图像数据后,逐像素计算其所在的网格单元,然后通过插值算法从相邻四个网格顶点获取该像素的校正增益。瑞芯微 RK 平台支持两种插值模式:双线性插值(Bilinear)和双三次插值(Bicubic)。

3.2.1 双线性插值(Bilinear)

双线性插值是最常用的 LSC 插值算法。对于像素点 P(x,y),其所在的网格单元由四个顶点 G₀₀、G₀₁、G₁₀、G₁₁ 围成。首先在水平方向进行两次线性插值,再在垂直方向进行一次线性插值。

// 双线性插值伪代码
// 输入:四个网格顶点增益 G00, G01, G10, G11
//       归一化坐标 dx, dy (0.0 ~ 1.0)
// 输出:像素点增益 G

// 水平插值
G_top    = G00 * (1 - dx) + G01 * dx
G_bottom = G10 * (1 - dx) + G11 * dx

// 垂直插值
G = G_top * (1 - dy) + G_bottom * dy
双线性插值特点: 计算量小(仅需 3 次乘法和 5 次加法),硬件实现简单,适合实时处理。缺点是插值结果在网格边界处导数不连续,可能引入轻微的马赛克效应。

3.2.2 双三次插值(Bicubic)

双三次插值使用 4×4 邻域共 16 个网格顶点进行加权计算,插值曲面在边界处一阶导数连续,图像更平滑。RK 平台在高端 ISP 模块中支持此模式。

// 双三次插值核心公式(简化)
// 使用 4×4 网格顶点 G[i][j] (i,j = 0..3)
// 权重函数 W(t) 基于三次多项式

W(t) = {
    (a+2)|t|³ - (a+3)|t|² + 1,         0 ≤ |t| < 1
    a|t|³ - 5a|t|² + 8a|t| - 4a,       1 ≤ |t| < 2
    0,                                  |t| ≥ 2
}
// 常用 a = -0.5 或 a = -0.75

// 最终增益 = ΣᵢΣⱼ G[i][j] * W(x - xᵢ) * W(y - yⱼ)
双线性 vs 双三次插值对比
对比项 双线性插值(Bilinear) 双三次插值(Bicubic)
参与顶点数 2×2 = 4 个 4×4 = 16 个
计算复杂度 低(3 次乘法) 高(16 次乘法 + 权重计算)
平滑度 C⁰ 连续(边界有折角) C¹ 连续(边界平滑)
硬件资源 约 2000 LUT 约 8000 LUT
适用场景 网格较密(≥33×25) 网格较疏(≤17×13)
RK 平台支持 全系列 ISP 支持 RK3588/RK3568 高端 ISP
双线性插值计算流程 网格顶点 G₀₀~G₁₁ 归一化坐标 dx, dy 水平插值 G_top = G₀₀·(1-dx) + G₀₁·dx 水平插值 G_bottom = G₁₀·(1-dx) + G₁₁·dx 垂直插值 G = G_top·(1-dy) + G_bottom·dy G 双线性插值计算步骤 步骤 1:计算归一化坐标 dx = (x - x₀) / (x₁ - x₀),dy = (y - y₀) / (y₁ - y₀) 步骤 2:水平方向插值,得到上边沿增益 G_top 和下边沿增益 G_bottom 步骤 3:垂直方向插值,得到最终增益 G = G_top·(1-dy) + G_bottom·dy 步骤 4:输出增益 G,与原始像素值相乘得到校正后像素值

3.3 R/G/B 通道独立校正

由于不同波长光线在镜头中的折射率不同,R、G、B 三个通道的阴影分布存在显著差异。红色通道通常衰减最快,蓝色通道次之,绿色通道相对均匀。因此,LSC 必须为每个颜色通道维护独立的增益矩阵。

常见误区: 有些工程师试图用单一增益矩阵乘以通道权重来近似三通道校正。这种做法在低端传感器上或许可行,但在高分辨率、大光圈镜头上会导致明显的色彩偏移(Color Shading),尤其在画面四角区域。

3.3.1 通道独立增益矩阵结构

在 RK 平台 ISP 驱动中,LSC 参数通常以如下结构体组织:

// RK LSC 通道独立增益矩阵结构(简化)
struct rkisp_lsc_config {
    uint16_t grid_width;        // 网格宽度(像素)
    uint16_t grid_height;       // 网格高度(像素)
    uint8_t  grid_x_num;        // 水平网格点数
    uint8_t  grid_y_num;        // 垂直网格点数
    
    // 三通道独立增益表
    uint16_t *r_gain_table;     // R 通道增益表,长度 grid_x_num × grid_y_num
    uint16_t *gr_gain_table;    // Gr 通道增益表
    uint16_t *gb_gain_table;    // Gb 通道增益表
    uint16_t *b_gain_table;     // B 通道增益表
    
    uint8_t  interpolation;     // 插值模式:0=Bilinear, 1=Bicubic
    uint8_t  gain_shift;        // 增益移位量(用于定点数转浮点)
};
典型传感器三通道阴影衰减对比(f/1.8 镜头,画面四角)
通道 中心亮度(归一化) 四角亮度(归一化) 所需增益 阴影衰减率
R(红) 1.00 0.45 2.22x 55%
Gr(绿红) 1.00 0.58 1.72x 42%
Gb(绿蓝) 1.00 0.56 1.79x 44%
B(蓝) 1.00 0.50 2.00x 50%

3.3.2 通道独立校正流程

在 ISP 流水线中,LSC 校正位于黑电平校正(BLC)之后、去马赛克(Demosaic)之前。此时图像数据仍为 Bayer 格式,每个像素只包含一个颜色通道的信息。ISP 硬件根据像素的 Bayer 位置选择对应的增益表进行校正。

R/G/B 通道独立校正流程 Bayer 输入 BLC 之后 通道分离 Bayer 解析 R 通道 Gr/Gb 通道 B 通道 R 增益表 G 增益表 B 增益表 校正后 Bayer 输出 通道独立校正关键点 • 每个通道使用独立的增益矩阵,R/Gr/Gb/B 四组增益表分别存储 • 校正在 Bayer 域进行,每个像素只查对应通道的增益表,不跨通道混合 • 校正后输出仍为 Bayer 格式,后续 Demosaic 模块再恢复全彩色

3.3.3 通道间增益差异处理

在实际调试中,R/G/B 通道的增益差异会导致两个关键问题:

  1. 亮度阴影(Luma Shading): 四角亮度下降,所有通道都需要增益提升。
  2. 色彩阴影(Color Shading): 不同通道增益差异导致四角偏色,例如 R 通道增益不足时四角偏青。
调试经验: 在 RK 平台调试工具中,建议先使用灰卡(18% 中性灰)拍摄均匀光照图像,分别提取 R/G/B 通道的亮度分布曲线。理想情况下,校正后三通道在画面任意位置的比值应接近 1:1:1。若出现偏差,需单独调整对应通道的增益矩阵。

3.4 本章小结

LSC 校正原理核心知识点汇总
知识点 核心内容 RK 平台实现要点
增益矩阵 M×N 网格顶点存储增益值,逐像素插值计算 支持 17×13 ~ 65×49 网格,16-bit 精度
双线性插值 4 顶点参与计算,3 次乘法,C⁰ 连续 全系列 ISP 支持,低资源消耗
双三次插值 16 顶点参与计算,C¹ 连续,更平滑 RK3588/RK3568 高端 ISP 支持
通道独立校正 R/Gr/Gb/B 四组独立增益表 Bayer 域校正,BLC 之后 Demosaic 之前
色彩阴影抑制 三通道增益比值接近 1:1:1 灰卡标定 + 通道独立微调