3. ISP Pipeline 基础概念:ISP 硬件模块及其在 Pipeline 中的角色
在高通 Camera 子系统中,ISP(Image Signal Processor)Pipeline 由多个专用硬件模块组成,每个模块承担特定的图像处理任务。理解这些模块的功能及其在 Pipeline 中的位置,是进行 HAL 层配置的基础。本章将深入剖析 IFE、BPS、IPE、JPEG 等核心硬件模块。
3.1 ISP Pipeline 总体架构
高通平台的 ISP Pipeline 通常采用 多级流水线 设计,将图像处理任务分解到不同的硬件加速器中。这种架构能够有效降低延迟,提高吞吐量,并支持多路并发处理。典型的处理流程如下:
3.2 核心硬件模块详解
3.2.1 IFE(Image Front-End)
IFE 是 ISP Pipeline 的入口模块,直接与图像传感器接口。它负责处理从 Sensor 接收到的原始 RAW 数据,执行关键的预处理任务。
- 主要功能: 坏点校正(BPC)、黑电平校正(BLC)、线性化、增益控制、去马赛克(Demosaic)前的预处理。
- 关键特性: 支持多种 RAW 格式(如 Bayer、Quad Bayer)、支持 MIPI CSI 接口、具备统计信息收集能力(如 3A 统计)。
- 在 Pipeline 中的角色: 作为数据清洗和格式转换的第一站,为后续模块提供干净、标准化的 RAW 数据。
3.2.2 BPS(Bayer Processing Segment)
BPS 是 Bayer 域处理的核心模块,在 IFE 之后对 RAW 数据进行深度处理。
- 主要功能: 自动白平衡(AWB)增益、镜头阴影校正(LSC)、颜色校正矩阵(CCM)、伽马校正(Gamma)、降噪(NR)等。
- 关键特性: 支持高精度处理(通常为 14-bit 或 16-bit)、可编程的查找表(LUT)、支持多帧合成前的对齐处理。
- 在 Pipeline 中的角色: 将 RAW 数据转换为高质量的 RGB 数据,为后续的 YUV 处理做准备。
3.2.3 IPE(Image Processing Engine)
IPE 是 YUV 域的后处理引擎,负责提升图像的视觉质量。
- 主要功能: 边缘增强(Sharpening)、色彩增强(Color Enhancement)、降噪(NR)、缩放(Scaling)、旋转(Rotation)、HDR 合成等。
- 关键特性: 支持多路输出(如预览、拍照、录像)、支持硬件加速的几何变换、具备局部色调映射(LTM)能力。
- 在 Pipeline 中的角色: 对图像进行美化和格式转换,输出最终用于显示或编码的 YUV 数据。
3.2.4 JPEG 编码器
JPEG 模块是独立的硬件编码器,用于将 YUV 图像压缩为 JPEG 格式。
- 主要功能: 离散余弦变换(DCT)、量化、霍夫曼编码、生成标准的 JPEG 文件。
- 关键特性: 支持多种质量等级、支持 EXIF 信息嵌入、支持缩略图生成、支持高分辨率编码(如 48MP、64MP)。
- 在 Pipeline 中的角色: 作为 Pipeline 的末端模块,将处理完成的图像数据压缩存储,减少存储空间占用。
3.3 模块功能对比
| 模块 | 处理域 | 输入格式 | 输出格式 | 核心功能 |
|---|---|---|---|---|
| IFE | RAW | RAW10/12/14 | RAW10/12/14 | 坏点校正、黑电平、线性化 |
| BPS | Bayer | RAW | RGB | AWB、LSC、CCM、Gamma |
| IPE | YUV | YUV420/422 | YUV420/422 | 锐化、降噪、缩放、HDR |
| JPEG | YUV | YUV420 | JPEG | DCT、量化、熵编码 |
3.4 Pipeline 数据流与模块交互
在实际的 Camera 应用中,Pipeline 的配置并非简单的线性串联。模块之间通过 硬件缓冲区(HW Buffer) 或 系统内存(DDR) 进行数据交换。以下是一个典型的拍照流程中模块交互的 SVG 图:
3.5 模块配置要点
在 HAL 层进行 Pipeline 配置时,需要为每个模块指定详细的参数。以下是一个简化的配置示例,展示如何通过代码设置 IFE 和 BPS 的输入输出格式:
// 伪代码:HAL 层 Pipeline 配置示例
// 配置 IFE 模块
ife_config.input_format = CAM_FORMAT_RAW10;
ife_config.output_format = CAM_FORMAT_RAW10;
ife_config.resolution.width = 1920;
ife_config.resolution.height = 1080;
ife_config.bpc_enable = TRUE;
ife_config.blc_enable = TRUE;
// 配置 BPS 模块
bps_config.input_format = CAM_FORMAT_RAW10;
bps_config.output_format = CAM_FORMAT_RGB_888;
bps_config.awb_gain.r_gain = 1.8;
bps_config.awb_gain.b_gain = 1.5;
bps_config.lsc_enable = TRUE;
bps_config.ccm_matrix = { 1.2, -0.1, -0.1,
-0.1, 1.3, -0.2,
-0.1, -0.1, 1.4 };
3.6 本章小结
本章详细介绍了高通 ISP Pipeline 中的四个核心硬件模块:IFE、BPS、IPE 和 JPEG。每个模块在 Pipeline 中扮演着不可替代的角色,从 RAW 数据的预处理到最终的图像编码,形成了一个高效、可配置的图像处理链路。掌握这些模块的功能和交互方式,是后续进行 HAL 层深度定制和性能优化的前提。