3. LSC 校正基础原理:镜头阴影成因、LSC 校正模型与增益计算

镜头阴影校正(Lens Shading Correction, LSC)是 ISP 流水线中消除光学系统非均匀响应的关键环节。本章从物理成因出发,建立 LSC 的数学模型,并详细阐述多项式拟合与网格插值两种主流校正方案,最后给出增益计算的工程实现方法。

3.1 镜头阴影的物理成因

镜头阴影(Lens Shading)表现为图像中心亮、边缘暗的亮度衰减现象,主要由以下三个因素叠加产生:

  • 余弦四次方定律(Cos⁴ Law): 离轴光线到达像平面的照度与入射角 θ 的余弦四次方成正比,边缘像素接收的光通量急剧下降。
  • 渐晕(Vignetting): 镜头机械结构(镜筒、光圈叶片)对边缘光线的物理遮挡,在广角端尤为明显。
  • 像素角度响应(Pixel Angular Response): 传感器微透镜与光电二极管的量子效率随入射角变化,导致边缘像素灵敏度降低。
工程提示: 在嵌入式平台上,LSC 校正通常需要同时补偿亮度(Luma)和色差(R/G/B 通道独立),因为镜头对不同波长的折射率不同,会导致边缘偏色(Color Shading)。
镜头阴影成因示意 镜头 传感器平面 θ=0° θ=45° θ=45° 照度 ∝ cos⁴θ 照度 ∝ cos⁴θ 照度最大(参考点) 边缘衰减可达 30%~50%

3.2 LSC 校正数学模型

LSC 校正的核心思想是为每个像素计算一个增益值,补偿镜头阴影造成的衰减。设原始像素值为 \( I(x, y) \),校正后像素值为 \( I'(x, y) \),则:

I'(x, y) = I(x, y) × G(x, y)

其中 \( G(x, y) \) 为像素位置 \( (x, y) \) 处的增益系数,通常以图像中心为参考点(增益为 1.0),边缘增益大于 1.0。

3.3 主流 LSC 校正模型

工程实践中,根据硬件资源与精度要求,主要采用以下两种模型:

模型类型 数学形式 存储开销 计算复杂度 适用场景
多项式模型 \( G(r) = 1 + a_2 r^2 + a_4 r^4 + a_6 r^6 \) 低(3~7 个系数) 低(乘加运算) 低端 SoC、实时预览
网格模型 二维查表 + 双线性插值 中(如 17×13 网格) 中(查表 + 插值) 中高端 ISP、拍照场景

3.3.1 多项式模型

多项式模型假设镜头阴影是径向对称的,仅依赖于像素到图像中心的距离 \( r \)。典型形式为:

G(r) = 1 + a₂·r² + a₄·r⁴ + a₆·r⁶

其中:
  r = sqrt((x - cx)² + (y - cy)²) / R_max
  (cx, cy) 为图像中心坐标
  R_max 为归一化半径(通常取图像对角线的一半)
  a₂, a₄, a₆ 为标定得到的多项式系数
调优要点: 多项式模型对广角镜头的大畸变场景拟合精度不足,此时需要引入非对称项(如 x²-y² 项)或分段多项式。在嵌入式实现中,通常使用定点数运算,系数需缩放为 Q 格式以避免浮点开销。
多项式模型增益曲线(径向) r (归一化半径) G(r) G=1.0(中心参考) r=0.5 r=1.0(边缘) 边缘增益通常为 1.5×~2.5×,具体取决于镜头衰减程度

3.3.2 网格模型

网格模型将图像划分为均匀的网格(如 17 列 × 13 行),每个网格顶点存储一个增益值。非顶点像素的增益通过双线性插值获得:

G(x, y) = (1 - u)(1 - v)·G₀₀ + u(1 - v)·G₁₀ + (1 - u)v·G₀₁ + uv·G₁₁

其中:
  (u, v) 为像素在网格单元内的归一化坐标(0 ≤ u, v ≤ 1)
  G₀₀, G₁₀, G₀₁, G₁₁ 为四个顶点的增益值
工程陷阱: 网格模型在网格边界处可能出现不连续,导致图像出现块状伪影。解决方案包括:(1) 使用更高阶插值(如双三次);(2) 增加网格密度;(3) 对网格增益进行平滑滤波。在嵌入式平台上,双线性插值仍是性价比最高的选择。
网格模型双线性插值示意 G₀₀ G₁₀ G₀₁ G₁₁ P(x,y) u·W v·H 网格密度:水平 17 点,垂直 13 点(常见配置) 每个通道(R/G/B)独立存储网格增益表

3.4 增益计算与工程实现

增益计算的工程实现分为标定阶段与运行阶段:

3.4.1 标定阶段

  1. 采集均匀光源图像: 使用积分球或均匀白板,拍摄多帧平均以消除噪声。
  2. 计算参考增益: 以图像中心区域(如 10% 半径内)的像素均值为参考值 \( I_{ref} \),每个像素的原始增益为 \( G_{raw}(x,y) = I_{ref} / I(x,y) \)。
  3. 模型拟合: 对原始增益进行多项式拟合或网格采样,得到模型参数。
  4. 平滑与限幅: 对增益进行空间平滑,并限制最大增益(通常 ≤ 4.0)以防止噪声放大。

3.4.2 运行阶段(嵌入式实现)

// 伪代码:多项式模型 LSC 校正(定点数实现)
// 输入:raw_pixel, x, y, cx, cy, R_max, a2_q, a4_q, a6_q
// 输出:corrected_pixel

int32_t dx = x - cx;
int32_t dy = y - cy;
int32_t r2 = (dx*dx + dy*dy) << 16;  // Q16 格式
int32_t r_norm = r2 / (R_max * R_max); // 归一化 r²,Q16

// 计算增益:G = 1 + a2*r² + a4*r⁴ + a6*r⁶
int32_t gain_q16 = (1 << 16);  // 1.0 in Q16
gain_q16 += (a2_q * r_norm) >> 16;
int32_t r4 = (r_norm * r_norm) >> 16;
gain_q16 += (a4_q * r4) >> 16;
int32_t r6 = (r4 * r_norm) >> 16;
gain_q16 += (a6_q * r6) >> 16;

// 限幅
if (gain_q16 > (4 << 16)) gain_q16 = (4 << 16);

// 应用增益
int32_t corrected = (raw_pixel * gain_q16) >> 16;
性能优化: 在网格模型中,预计算所有像素的增益表(LUT)可避免运行时插值计算。对于 1080p 图像,若每个像素存储 16-bit 增益,LUT 大小为 1920×1080×2 ≈ 4 MB,在内存充足的平台上可大幅降低延迟。

3.5 模型对比与选型建议

评估维度 多项式模型 网格模型
校正精度 中等(径向对称假设) 高(可处理非对称阴影)
标定复杂度 低(最小二乘拟合) 中(网格点采样 + 平滑)
硬件资源 低(几个乘法器) 中(Line Buffer + 插值器)
灵活性 低(固定阶数) 高(可调整网格密度)
典型应用 低端手机、IPC、USB Camera 旗舰手机、车载摄像头、专业相机
LSC 校正 ISP 流水线架构 RAW 输入 黑电平校正 LSC 校正 后续处理 增益计算模块 多项式 / 网格查表 / 插值 标定参数存储(OTP / EEPROM) 增益 = 补偿值 × 通道系数