镜头阴影校正(Lens Shading Correction, LSC)
镜头阴影校正是相机ISP(图像信号处理器)中的一个关键步骤,用于补偿由于镜头光学特性导致的图像亮度不均匀现象(即暗角或渐晕)。该现象表现为图像中心较亮、四角较暗,并可能伴随颜色偏移。
镜头阴影的产生原因
-
光学渐晕(Vignetting):
-
光线进入镜头时,边缘的光线路径比中心更长,导致边缘亮度衰减。
-
与镜头设计(如光圈大小、镜片数量)密切相关。
-
-
机械渐晕:
-
镜头筒或滤镜遮挡边缘光线(常见于广角镜头)。
-
-
像素响应差异:
-
传感器边缘像素的感光效率可能低于中心像素。
-
镜头阴影的影响
-
亮度不均匀:图像四角比中心暗(如典型的“暗角”效果)。
-
颜色偏移:不同颜色通道(R/G/B)的衰减程度不同,导致边缘色偏。
-
动态范围损失:阴影区域的信号强度降低,影响后期处理(如HDR合成)。
镜头阴影校正方法
(1) 基于增益图的校正(Gain Map)
-
原理:
-
预先标定镜头的亮度衰减分布,生成增益图(Gain Map)。
-
对图像每个像素乘以对应的增益值,补偿亮度衰减。
-
-
增益图生成:
-
拍摄均匀光照下的标定板(如灰卡)。
-
计算每个位置的增益系数:

-
-
校正公式:

Python实现(单通道增益校正):
import numpy as np
import cv2
def lens_shading_correction(image, gain_map):
"""
使用增益图校正镜头阴影
:param image: 输入图像(单通道或Bayer RAW)
:param gain_map: 增益图(与image同尺寸)
:return: 校正后的图像
"""
corrected = image.astype(np.float32) * gain_map
return np.clip(corrected, 0, 255).astype(np.uint8)
# 示例:生成模拟增益图(中心亮、边缘暗)
h, w = 512, 512
x = np.linspace(-1, 1, w)
y = np.linspace(-1, 1, h)
xx, yy = np.meshgrid(x, y)
gain_map = 1.0 - 0.5 * (xx**2 + yy**2) # 二次衰减模型
gain_map = np.clip(gain_map, 0.5, 1.0) # 限制增益范围
# 应用校正
raw_image = np.random.randint

最低0.47元/天 解锁文章
1725

被折叠的 条评论
为什么被折叠?



