当前位置: 首页 > news >正文

【图像处理 - 基础知识】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),并且进行一系列图像质量优化。

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

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

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,ymedian(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(x1,y)+IR(x+1,y)+IR(x,y1)+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=IRGR,IG=IGGG,IB=IBGB

  • 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=rrj=rrIx+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+α(IinIblur)

(11) 宽动态范围处理 (WDR/HDR Tone Mapping)
  • 问题:高对比度场景(室内外同时拍摄)会导致亮部过曝、暗部死黑。

  • 原理

    • 多帧合成 HDR:融合不同曝光图像。
    • 单帧 WDR:局部对比度增强或曲线映射。
  • 作用:同时保留亮部细节和暗部层次。

  • 公式(线性压缩示例):

Iout=IinIin+kI_\text{out} = \frac{I_\text{in}}{I_\text{in}+k} Iout=Iin+kIin

  • k 控制压缩强度
http://www.xdnf.cn/news/1371781.html

相关文章:

  • 基于SpringBoot的社团管理系统【2026最新】
  • JVM线上调优参数配置指南
  • Powercat PowerShell工具:原理详解+使用方法+渗透实战
  • C语音初阶————指针2
  • 小范围疫情防控元胞自动机模拟matlab
  • 用 Allure 生成 pytest 测试报告:从安装到使用全流程
  • 【项目】深房数据通——深圳房价可视化系统
  • 数字时代下的智能信息传播引擎
  • Python大型数组计算完全指南:从基础到分布式系统实践
  • 简明 | ResNet特点、残差模块、残差映射理解摘要
  • Cherry-pick冲突与Git回滚
  • Nginx Ubuntu vs CentOS 常用命令对照表---详解笔记
  • 手机移动代理IP:使用、配置、维护的10问10答
  • 数据集数量与神经网络参数关系分析
  • 如果 我退休了
  • 身份管理与安全 (Protect identities)
  • Firefox Relay 体验
  • Java大厂面试实战:从Spring Boot到微服务架构的全链路技术解析
  • RCC_APB2PeriphClockCmd
  • GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SPM
  • 18、移动应用系统分析与设计
  • 机器人 - 无人机基础(6) - 状态估计(ing)
  • 余承东:鸿蒙智行累计交付突破90万辆
  • 算法-每日一题(DAY15)用队列实现栈
  • 算法练习——26.删除有序数组中的重复项(golang)
  • Swift 解法详解 LeetCode 363:矩形区域不超过 K 的最大数值和
  • Spring Bean 生命周期高阶用法:从回调到框架级扩展
  • Java基础第5天总结(final关键字,枚举,抽象类)
  • CVPR自适应卷积的高效实现:小核大感受野提升复杂场景下图像重建精度
  • vue新增用户密码框自动将当前用户的密码自动填充的问题