【图像处理 - 基础知识】ISP(Image Signal Processor)处理
文章目录
- 1. 图像传感背景
- 2. RAW数据格式
- Bayer滤色阵列(Bayer Filter Array)
- 3. ISP(Image Signal Processor)
- 3.1. ISP定义
- 3.2. 主要功能
- 3.3. ISP主要处理流程
- 1. RAW 数据预处理
- (1) **黑电平校正 (Black Level Correction, BLC)**
- (2) **坏点校正 (Defect Pixel Correction, DPC)**
- (3) **镜头阴影校正 (Lens Shading Correction, LSC / Vignetting Correction)**
- 2. 去马赛克与颜色生成(此时得到三通道 RGB 图像)
- (4) **去马赛克 (Demosaicing / De-Bayer)**
- 3. 颜色与亮度处理
- (5) **自动白平衡 (AWB)**
- (6) **颜色校正 (Color Correction Matrix, CCM)**
- (7) **伽马矫正 (Gamma Correction)**
- (8) **色彩空间转换 (RGB → YUV / HSV 等)**
- 4. 图像细节增强
- (9) **降噪 (Noise Reduction, 2D/3D NR)**
- (10) **锐化 (Sharpening)**
- (11) **宽动态范围处理 (WDR/HDR Tone Mapping)**
1. 图像传感背景
- 数字相机(包括手机、监控摄像头、数码相机等)成像的基本流程是:
光线 → 镜头 → 图像传感器(CMOS/CCD) → RAW 数据 → ISP 处理 → 彩色图像(JPEG/YUV) → 显示/存储
-
CMOS 和 CCD 是两种主要的图像传感器技术,它们负责将进入相机镜头的光信号转换为电信号
-
存在的问题:
问题类别 | 详细说明 | ISP 需要执行的处理步骤 |
---|---|---|
1. 每个像素只有一种颜色(Bayer 模式) | 传感器表面覆盖着 Bayer 滤色阵列(如 RGGB),每个像素只能感知 R、G 或 B 中的一种颜色。 结果:原始图像呈“马赛克”状,无法直接显示彩色。 | 去马赛克(Demosaicing) 通过插值算法,为每个像素补全缺失的两个颜色分量,生成完整的 RGB 图像。 |
2. 颜色不真实(受光源影响) | 同一白色物体在不同光源下呈现不同颜色(如日光偏蓝、白炽灯偏黄)。 传感器“忠实”记录光线,但人眼具有“色彩恒常性”,会自动适应。 | 白平衡(White Balance, WB) 调整 R、G、B 通道增益,使白色在各种光照下仍呈现为白色,还原真实色彩。 |
3. 图像偏暗、对比度低、有噪声 | - 低光环境下信号弱,噪声明显 - 镜头进光不均导致“暗角”(四角变暗) - 传感器存在“黑电平偏移”或“坏点” | 多项校正与降噪: - 黑电平校正(BLC) - 坏点校正(BPC) - 降噪(Noise Reduction, NR) - 镜头阴影校正(LSC) - 自动曝光(AE) |
4. 图像模糊、细节不清晰 | 受限于传感器和镜头的物理特性,图像边缘可能不够锐利,细节模糊。 | 锐化(Sharpening / Edge Enhancement) 增强图像边缘对比度,提升主观清晰度和细节表现。 |
5. 动态范围有限 | 在强光与阴影并存的场景中,传感器容易出现过曝(亮部丢失)或欠曝(暗部漆黑)。 | HDR(高动态范围)融合 通过多帧不同曝光图像融合,保留亮部与暗部细节,扩展动态范围。 |
6. 颜色不准确 | 传感器对颜色的响应与人眼感知不同,导致拍出的颜色失真或“怪异”。 | 颜色校正矩阵(Color Correction Matrix, CCM) 将传感器原始颜色空间转换到标准色彩空间(如 sRGB),确保色彩准确自然。 |
2. RAW数据格式
Bayer滤色阵列(Bayer Filter Array)
-
发明者Bryce Bayer的名字命名
-
每个像素点上覆盖有一个滤色器,该滤色器只允许特定颜色的光通过并被像素捕捉。也就是说每个感光单元得到的像素只能反应某一种颜色的值。
-
因为人眼对绿色最为敏感,绿色滤色器的数量通常是红色或蓝色的两倍
-
如果不对Bayer颜色处理的话,看上去就如下图,每个像素只有一个颜色
-
常见的Bayer排列方式
名称 (OpenCV) | 2×2 单元格排列 | 说明 |
---|---|---|
RGGB (COLOR_BAYER_RG2RGB ) | R G G B | 左上角是 红色 (R),水平相邻是绿色,垂直方向为 G-B |
BGGR (COLOR_BAYER_BG2RGB ) | B G G R | 左上角是 蓝色 (B),与 RGGB 对应,颜色通道交换 |
GRBG (COLOR_BAYER_GR2RGB ) | G R B G | 左上角是 绿色 (G),右边是红色,下一行从蓝色开始 |
GBRG (COLOR_BAYER_GB2RGB ) | G B R G | 左上角是 绿色 (G),右边是蓝色,下一行从红色开始 |
3. ISP(Image Signal Processor)
3.1. ISP定义
一个专门的 硬件/软件处理模块,主要任务是把 图像传感器输出的 Raw Bayer 数据 转换成 可用的彩色图像(RGB/YUV),并且进行一系列图像质量优化。
- 集成位置:
- CMOS 传感器内部 ISP
- 部分 手机摄像头模组 或低端相机模组,传感器本身内置一个简单 ISP。
- 优点:模组输出直接是 YUV 图像,主控只需要解码即可。
- 缺点:可配置性差,图像调校能力有限。
- SoC 芯片内部 ISP
- 常见于 手机 SoC (高通 Snapdragon、苹果 A 系列、华为麒麟)、嵌入式平台 (NVIDIA Jetson、树莓派 RP1、海思)。
- ISP 模块作为硬件单元集成在 SoC 内,性能高、功耗低。
- 图像传感器输出 RAW → MIPI CSI-2 接口传输 → SoC 内部 ISP → CPU/GPU/NPU 进一步处理。
- 独立 ISP 芯片
- 一些高端相机(如安防摄像机、专业单反)会使用独立的 ISP 芯片(如 Ambarella、Novatek)。
- 独立 ISP 提供更强大的图像处理能力,支持更复杂的调校和多通道输入。
- 成本较高,功耗也比 SoC 内部 ISP 更大。
- 软件 ISP(PC/服务器端)
- 如果图像传感器输出 Raw Bayer,而硬件平台没有 ISP,可以用 软件库(OpenCV、Halide、Camera ISP SDK) 在 CPU/GPU 上完成 ISP 流程。
- 优点:灵活,可实验新算法。
- 缺点:功耗高,实时性差。
3.2. 主要功能
-
基本图像信号处理
- 去噪(Denoising)
- 镜头阴影矫正(Lens Shading Correction, LSC)
- 坏点校正(Defect Pixel Correction, DPC)
- 去马赛克(Demosaicing / De-Bayer)
- 色彩校正(Color Correction Matrix, CCM)
- 白平衡(Auto White Balance, AWB)
- 伽马校正(Gamma Correction)
-
图像质量增强
- 自动曝光 (AE)
- 自动对焦 (AF)
- 动态范围增强 (HDR Merge / Tone Mapping)
- 锐化 (Sharpening)
- 色彩饱和度和亮度调整
-
输出格式转换
- 从 Bayer RAW → RGB → YUV
- 压缩编码(如 H.264/H.265)之前的预处理
3.3. ISP主要处理流程
RAW → BLC(黑电平校正) → DPC(坏点校正) → Gain(增益调节/ISO控制)→ AE (自动曝光) → Demosaic(去马赛克) → NR(降噪) → AWB(自动白平衡) → CCM(颜色校正矩阵) → Gamma(伽马校正) → Tone Mapping(色调映射/HDR压缩) → Sharpen(锐化) → Output(输出图像)
1. RAW 数据预处理
(1) 黑电平校正 (Black Level Correction, BLC)
- 问题:传感器在完全无光时,输出并不是 0,而是存在一定偏移(黑电平偏置),且不同像素、不同颜色通道可能不一致。
- 原理:从每个像素值中减去传感器测得的黑电平(通常由光学黑区域或标定获得),使得暗场信号归零。
- 作用:避免黑图像发灰、色偏。
- 公式:
Icorrected=Iraw−BI_\text{corrected} = I_\text{raw} - B Icorrected=Iraw−B
IrawI_\text{raw}Iraw:原始像素值, BBB:黑电平偏置(可以按通道设置 R/G/B)
-
可调参数:
- 黑电平值 B(例如 R: 64, G: 64, B: 64)
- 是否按通道分开
-
示例:
- 对 12-bit 传感器,黑电平 B 可以在 16~128 范围调整。
(2) 坏点校正 (Defect Pixel Correction, DPC)
-
问题:传感器中存在坏点(死点、热点、闪烁点),这些像素值异常(过亮/过暗)。
-
原理:检测出坏点(静态坏点可由工厂校准表获得,动态坏点可通过邻域统计检测),再用邻近像素插值替换。
-
作用:消除“亮点/黑点”噪声,提高画质。
-
检测阈值 T:判断像素是否异常
∣Ix,y−median(I邻域)∣>T|I_{x,y} - \text{median}(I_\text{邻域})| > T ∣Ix,y−median(I邻域)∣>T
-
插值方法:用邻域像素平均或中值替代
-
示例:
-
邻域 3×3,阈值 T = 50(12-bit)
-
插值公式:
Ix,y=median(I邻域)I_{x,y} = \text{median}(I_\text{邻域}) Ix,y=median(I邻域)
(3) 镜头阴影校正 (Lens Shading Correction, LSC / Vignetting Correction)
- 问题:镜头中心亮、边缘暗(Vignetting),且不同颜色通道响应不均匀。
- 原理:利用校准表(R/G/B 通道的增益图),对每个像素进行增益补偿,使图像亮度在整个画面范围内均匀。
- 作用:校正暗角、避免颜色不均。
2. 去马赛克与颜色生成(此时得到三通道 RGB 图像)
(4) 去马赛克 (Demosaicing / De-Bayer)
-
问题:Raw 数据中每个像素只记录一个颜色分量(R/G/B),缺少完整的 RGB 信息。
-
原理:通过插值(最近邻、双线性、边缘导向、频域算法等)推算缺失的两个通道,从而恢复每个像素完整的 RGB 值。
-
作用:将单通道 Bayer 图转为三通道 RGB 图像。
-
参数及原理:
-
插值算法选择:最近邻 / 双线性 / Malvar-He-Cutler / LMMSE
-
锐化权重(部分算法用于边缘保留)
-
公式(双线性示例):
IR(x,y)=IR(x−1,y)+IR(x+1,y)+IR(x,y−1)+IR(x,y+1)4I_R(x,y) = \frac{I_R(x-1,y)+I_R(x+1,y)+I_R(x,y-1)+I_R(x,y+1)}{4} IR(x,y)=4IR(x−1,y)+IR(x+1,y)+IR(x,y−1)+IR(x,y+1)
3. 颜色与亮度处理
(5) 自动白平衡 (AWB)
- 问题:光源色温不同导致图像偏色(偏黄、偏蓝)。
- 原理:估计场景光源的色温(例如灰度世界假设、完美反射假设、统计直方图等),再对 R/G/B 通道施加不同增益,使白色物体呈现为中性灰。
- 作用:保证画面色彩自然。
- 公式:
IR′=IR⋅GR,IG′=IG⋅GG,IB′=IB⋅GBI_R^\prime = I_R \cdot G_R,\quad I_G^\prime = I_G \cdot G_G,\quad I_B^\prime = I_B \cdot G_B IR′=IR⋅GR,IG′=IG⋅GG,IB′=IB⋅GB
-
GR,GG,GBG_R, G_G, G_BGR,GG,GB:增益系数
-
可调参数:
- 增益范围(一般 1.0~4.0)
- AWB算法模式(灰度世界、亮度优先、2D统计等)
-
示例:
- 灰度世界 AWB:
GR=平均G平均R,GB=平均G平均BG_R = \frac{\text{平均G}}{\text{平均R}},\quad G_B = \frac{\text{平均G}}{\text{平均B}} GR=平均R平均G,GB=平均B平均G
(6) 颜色校正 (Color Correction Matrix, CCM)
- 问题:传感器对颜色响应并不理想(R/G/B 通道有串扰),导致色彩偏差。
- 原理:通过一个 3×3 矩阵(由标定获得),对 RGB 向量进行线性变换,校正色彩空间。
- 作用:恢复真实色彩,还原标准色卡。
- 公式:
[RsGsBs]=[a11a12a13a21a22a23a31a32a33][RGB]\begin{bmatrix}R_s\\G_s\\B_s\end{bmatrix} = \begin{bmatrix}a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\end{bmatrix} \begin{bmatrix}R\\G\\B\end{bmatrix} RsGsBs=a11a21a31a12a22a32a13a23a33RGB
参数 a_ij 为 CCM 系数,通常通过标定获得。
- 示例: 典型 sRGB CCM 范围:0.8~1.2
(7) 伽马矫正 (Gamma Correction)
- 问题:传感器输出线性光强,但人眼对亮度感知是非线性的(接近对数响应)。
- 原理:应用 非线性曲线映射(例如 sRGB 标准 γ≈2.2),提升暗部对比度、压缩高光。
- 作用:让图像看起来符合人眼习惯,同时适配显示器。
- 公式:
Iout=Iin1/γI_\text{out} = I_\text{in}^{1/\gamma} Iout=Iin1/γ
- 常用 γ = 2.2~2.4
(8) 色彩空间转换 (RGB → YUV / HSV 等)
- 问题:视频编码、存储或图像分析常用非 RGB 格式(YUV 更利于压缩,HSV 便于颜色分割)。
- 原理:通过矩阵变换或几何映射,将 RGB 转换为其他颜色空间。
- 作用:支持后续编码(H.264/H.265)、显示或计算机视觉任务。
4. 图像细节增强
(9) 降噪 (Noise Reduction, 2D/3D NR)
-
问题:传感器高 ISO 或暗光条件下噪声明显。
-
原理:
- 2D NR:空间域滤波(均值、双边、小波、卷积神经网络)。
- 3D NR:利用视频的时间相关性,跨帧去噪。
-
作用:降低噪点,提升图像观感。
-
参数及公式示例:
- 强度(0~255)
- 滤波半径 r(3×3、5×5)
-
公式(简单均值滤波):
Ix,y′=1N∑i=−rr∑j=−rrIx+i,y+jI_{x,y}^\prime = \frac{1}{N} \sum_{i=-r}^{r}\sum_{j=-r}^{r} I_{x+i, y+j} Ix,y′=N1i=−r∑rj=−r∑rIx+i,y+j
-
- 高级:双边滤波
Ix,y′=∑i,jIi,jws(i,j)wr(i,j)∑i,jws(i,j)wr(i,j)I_{x,y}^\prime = \frac{\sum_{i,j} I_{i,j} w_s(i,j) w_r(i,j)}{\sum_{i,j} w_s(i,j) w_r(i,j)} Ix,y′=∑i,jws(i,j)wr(i,j)∑i,jIi,jws(i,j)wr(i,j)
- wsw_sws:空间权重,wrw_rwr:像素差权重
(10) 锐化 (Sharpening)
-
问题:去马赛克和降噪往往会让图像边缘模糊。
-
原理:增强高频分量(如拉普拉斯锐化、USM 卷积),突出边缘。
-
作用:图像更清晰,但要避免过度锐化导致噪点增强或“光晕”。
-
参数及公式:
-
锐化权重 α(0~2)
-
- Laplacian 锐化示例:
Isharp=Iin+α⋅(Iin−Iblur)I_\text{sharp} = I_\text{in} + \alpha \cdot (I_\text{in} - I_\text{blur}) Isharp=Iin+α⋅(Iin−Iblur)
(11) 宽动态范围处理 (WDR/HDR Tone Mapping)
-
问题:高对比度场景(室内外同时拍摄)会导致亮部过曝、暗部死黑。
-
原理:
- 多帧合成 HDR:融合不同曝光图像。
- 单帧 WDR:局部对比度增强或曲线映射。
-
作用:同时保留亮部细节和暗部层次。
-
公式(线性压缩示例):
Iout=IinIin+kI_\text{out} = \frac{I_\text{in}}{I_\text{in}+k} Iout=Iin+kIin
- k 控制压缩强度