【图像处理 - 基础知识】ISP(Image Signal Processor)处理

文章目录

  • [1. 图像传感背景](#1. 图像传感背景)
  • [2. RAW数据格式](#2. RAW数据格式)
    • [Bayer滤色阵列(Bayer Filter Array)](#Bayer滤色阵列(Bayer Filter Array))
  • [3. ISP(Image Signal Processor)](#3. ISP(Image Signal Processor))
    • [3.1. ISP定义](#3.1. ISP定义)
    • [3.2. 主要功能](#3.2. 主要功能)
    • [3.3. ISP主要处理流程](#3.3. ISP主要处理流程)
      • [1. RAW 数据预处理](#1. RAW 数据预处理)
        • [(1) **黑电平校正 (Black Level Correction, BLC)**](#(1) 黑电平校正 (Black Level Correction, BLC))
        • [(2) **坏点校正 (Defect Pixel Correction, DPC)**](#(2) 坏点校正 (Defect Pixel Correction, DPC))
        • [(3) **镜头阴影校正 (Lens Shading Correction, LSC / Vignetting Correction)**](#(3) 镜头阴影校正 (Lens Shading Correction, LSC / Vignetting Correction))
      • [2. 去马赛克与颜色生成(此时得到三通道 RGB 图像)](#2. 去马赛克与颜色生成(此时得到三通道 RGB 图像))
        • [(4) **去马赛克 (Demosaicing / De-Bayer)**](#(4) 去马赛克 (Demosaicing / De-Bayer))
      • [3. 颜色与亮度处理](#3. 颜色与亮度处理)
        • [(5) **自动白平衡 (AWB)**](#(5) 自动白平衡 (AWB))
        • [(6) **颜色校正 (Color Correction Matrix, CCM)**](#(6) 颜色校正 (Color Correction Matrix, CCM))
        • [(7) **伽马矫正 (Gamma Correction)**](#(7) 伽马矫正 (Gamma Correction))
        • [(8) **色彩空间转换 (RGB → YUV / HSV 等)**](#(8) 色彩空间转换 (RGB → YUV / HSV 等))
      • [4. 图像细节增强](#4. 图像细节增强)
        • [(9) **降噪 (Noise Reduction, 2D/3D NR)**](#(9) 降噪 (Noise Reduction, 2D/3D NR))
        • [(10) **锐化 (Sharpening)**](#(10) 锐化 (Sharpening))
        • [(11) **宽动态范围处理 (WDR/HDR Tone Mapping)**](#(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),并且进行一系列图像质量优化。

  • 集成位置
  1. CMOS 传感器内部 ISP
  • 部分 手机摄像头模组 或低端相机模组,传感器本身内置一个简单 ISP。
  • 优点:模组输出直接是 YUV 图像,主控只需要解码即可。
  • 缺点:可配置性差,图像调校能力有限。
  1. SoC 芯片内部 ISP
  • 常见于 手机 SoC (高通 Snapdragon、苹果 A 系列、华为麒麟)嵌入式平台 (NVIDIA Jetson、树莓派 RP1、海思)
  • ISP 模块作为硬件单元集成在 SoC 内,性能高、功耗低。
  • 图像传感器输出 RAW → MIPI CSI-2 接口传输 → SoC 内部 ISP → CPU/GPU/NPU 进一步处理。
  1. 独立 ISP 芯片
  • 一些高端相机(如安防摄像机、专业单反)会使用独立的 ISP 芯片(如 Ambarella、Novatek)。
  • 独立 ISP 提供更强大的图像处理能力,支持更复杂的调校和多通道输入。
  • 成本较高,功耗也比 SoC 内部 ISP 更大。
  1. 软件 ISP(PC/服务器端)
  • 如果图像传感器输出 Raw Bayer,而硬件平台没有 ISP,可以用 软件库(OpenCV、Halide、Camera ISP SDK) 在 CPU/GPU 上完成 ISP 流程。
  • 优点:灵活,可实验新算法。
  • 缺点:功耗高,实时性差。

3.2. 主要功能

  1. 基本图像信号处理

    • 去噪(Denoising)
    • 镜头阴影矫正(Lens Shading Correction, LSC)
    • 坏点校正(Defect Pixel Correction, DPC)
    • 去马赛克(Demosaicing / De-Bayer)
    • 色彩校正(Color Correction Matrix, CCM)
    • 白平衡(Auto White Balance, AWB)
    • 伽马校正(Gamma Correction)
  2. 图像质量增强

    • 自动曝光 (AE)
    • 自动对焦 (AF)
    • 动态范围增强 (HDR Merge / Tone Mapping)
    • 锐化 (Sharpening)
    • 色彩饱和度和亮度调整
  3. 输出格式转换

    • 从 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,而是存在一定偏移(黑电平偏置),且不同像素、不同颜色通道可能不一致。
  • 原理:从每个像素值中减去传感器测得的黑电平(通常由光学黑区域或标定获得),使得暗场信号归零。
  • 作用:避免黑图像发灰、色偏。
  • 公式:

I corrected = I raw − B I_\text{corrected} = I_\text{raw} - B Icorrected=Iraw−B

I raw I_\text{raw} Iraw:原始像素值, B B B:黑电平偏置(可以按通道设置 R/G/B)

  • 可调参数:

    • 黑电平值 B(例如 R: 64, G: 64, B: 64)
    • 是否按通道分开
  • 示例:

    • 对 12-bit 传感器,黑电平 B 可以在 16~128 范围调整。
(2) 坏点校正 (Defect Pixel Correction, DPC)
  • 问题:传感器中存在坏点(死点、热点、闪烁点),这些像素值异常(过亮/过暗)。

  • 原理:检测出坏点(静态坏点可由工厂校准表获得,动态坏点可通过邻域统计检测),再用邻近像素插值替换。

  • 作用:消除"亮点/黑点"噪声,提高画质。

  • 检测阈值 T:判断像素是否异常

∣ I x , y − median ( I 邻域 ) ∣ > T |I_{x,y} - \text{median}(I_\text{邻域})| > T ∣Ix,y−median(I邻域)∣>T

  • 插值方法:用邻域像素平均或中值替代

  • 示例:

  • 邻域 3×3,阈值 T = 50(12-bit)

  • 插值公式:

I x , 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

  • 锐化权重(部分算法用于边缘保留)

  • 公式(双线性示例):

I R ( x , y ) = I R ( x − 1 , y ) + I R ( x + 1 , y ) + I R ( x , y − 1 ) + I R ( x , y + 1 ) 4 I_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 通道施加不同增益,使白色物体呈现为中性灰。
  • 作用:保证画面色彩自然。
  • 公式:

I R ′ = I R ⋅ G R , I G ′ = I G ⋅ G G , I B ′ = I B ⋅ G B I_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

  • G R , G G , G B G_R, G_G, G_B GR,GG,GB:增益系数

  • 可调参数:

    • 增益范围(一般 1.0~4.0)
    • AWB算法模式(灰度世界、亮度优先、2D统计等)
  • 示例:

    • 灰度世界 AWB:

G R = 平均G 平均R , G B = 平均G 平均B G_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 向量进行线性变换,校正色彩空间。
  • 作用:恢复真实色彩,还原标准色卡。
  • 公式:

R s G s B s \] = \[ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 \] \[ R G B \] \\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 = a11a21a31a12a22a32a13a23a33 RGB 参数 a_ij 为 CCM 系数,通常通过标定获得。 * **示例:** 典型 sRGB CCM 范围:0.8\~1.2 ##### (7) **伽马矫正 (Gamma Correction)** * **问题**:传感器输出线性光强,但人眼对亮度感知是非线性的(接近对数响应)。 * **原理** :应用 **非线性曲线映射**(例如 sRGB 标准 γ≈2.2),提升暗部对比度、压缩高光。 * **作用**:让图像看起来符合人眼习惯,同时适配显示器。 * **公式:** I out = I in 1 / γ 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) * **公式**(简单均值滤波): I x , y ′ = 1 N ∑ i = − r r ∑ j = − r r I x + i , y + j I_{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 * * 高级:**双边滤波** I x , y ′ = ∑ i , j I i , j w s ( i , j ) w r ( i , j ) ∑ i , j w s ( i , j ) w r ( 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) * w s w_s ws:空间权重, w r w_r wr:像素差权重 ##### (10) **锐化 (Sharpening)** * **问题**:去马赛克和降噪往往会让图像边缘模糊。 * **原理**:增强高频分量(如拉普拉斯锐化、USM 卷积),突出边缘。 * **作用**:图像更清晰,但要避免过度锐化导致噪点增强或"光晕"。 * **参数及公式:** * **锐化权重 α**(0\~2) * * **Laplacian 锐化示例:** I sharp = I in + α ⋅ ( I in − I blur ) 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**:局部对比度增强或曲线映射。 * **作用**:同时保留亮部细节和暗部层次。 * **公式(线性压缩示例):** I out = I in I in + k I_\\text{out} = \\frac{I_\\text{in}}{I_\\text{in}+k} Iout=Iin+kIin * k 控制压缩强度