1. Camera 系统概述:从光到数字的旅程

做摄像头驱动这么多年,我经常被问到同一个问题:“相机到底是怎么把一张照片‘算’出来的?” 其实这个问题背后,藏着整个 Camera 系统的核心逻辑。今天我们就从最基础的东西聊起。

1.1 摄像头工作原理:光信号 → 电信号 → 数字信号

说白了,摄像头就是一个光电转换器。它的工作流程可以拆成三步:

  1. 镜头收集光线 —— 外界景物反射的光,通过镜头组聚焦到传感器表面。
  2. 传感器光电转换 —— 每个像素点的感光二极管把光子转换成电子,形成模拟电压信号。
  3. ADC 数字化 —— 模拟电压经过模数转换器(ADC),变成我们熟悉的数字 RAW 数据。

关键点:传感器输出的 RAW 数据是“拜耳阵列”格式(Bayer Pattern),每个像素只记录 R/G/B 其中一种颜色。后续的 ISP 才负责把它还原成彩色图像。

我在项目中遇到过不少新手,以为传感器直接输出 RGB 图像。其实不是的。你想想看,如果每个像素都记录三种颜色,那感光面积得缩小多少?所以拜耳阵列是成本和画质之间的一个折中方案。

1.2 主流 Sensor 厂商与型号

目前市面上主流的 Sensor 厂商,我按出货量和应用场景排了个序:

厂商 常见系列/型号 典型应用 特点
Sony IMX系列(IMX586、IMX415、IMX335) 手机、安防、车载 低噪声、高动态范围、堆叠式工艺领先
Samsung ISOCELL系列(GM1、GW1、HMX) 手机、平板 像素高、Tetracell 技术、性价比好
OmniVision OV系列(OV5640、OV8865、OV12D) 安防、车载、笔记本 成本低、出货量大、技术支持快
Onsemi AR系列(AR0230、AR0820) 车载、工业 高可靠性、宽温范围、全局快门
GalaxyCore GC系列(GC2053、GC8034) 安防、IoT 国产替代、价格优势、中低端市场

个人建议:做项目选型时,别只看 datasheet 上的参数。我踩过坑——有些 Sensor 标称 4K 30fps,但实际跑起来发热严重,或者 MIPI 信号质量不行。最好先拿 EVB 板实测一下。

1.3 ISP Pipeline 概览

ISP(Image Signal Processor)是 Camera 系统的“大脑”。RAW 数据进来,经过一系列处理,最终输出 YUV 或 JPEG。我习惯把 ISP Pipeline 分成前端处理和后端处理两段:

前端处理(Sensor 侧)

  • 黑电平校正(BLC) —— 去掉传感器暗电流带来的固定偏移。
  • 镜头阴影校正(LSC) —— 补偿镜头边缘亮度衰减。
  • 坏点校正(DPC) —— 修复传感器上的死点或亮点。
  • 去噪(NR) —— 降低传感器读出噪声。

后端处理(ISP 侧)

  • 去马赛克(Demosaic) —— 把拜耳阵列插值成 RGB 全彩图。
  • 白平衡(AWB) —— 让白色在不同光源下看起来都是白的。
  • 色彩校正(CCM) —— 把 Sensor 的色彩空间映射到标准色域。
  • Gamma 校正 —— 调整亮度曲线,适配人眼感知。
  • 边缘增强(Sharpness) —— 提升图像清晰度。
  • 动态范围压缩(HDR/Tone Mapping) —— 保留亮部和暗部细节。

注意:不同芯片厂商的 ISP Pipeline 顺序可能不一样。比如高通平台喜欢把 AWB 放在 Demosaic 之后,而 MTK 平台可能放在之前。调参时一定要先看 ISP 的参考手册。

我曾经在一个项目中,因为没注意 ISP 模块的先后顺序,调了一周的 AWB 参数都没效果。后来才发现——白平衡模块被放在了 Gamma 之后,Gamma 已经把色温信息给扭曲了。嗯,从那以后我每次拿到新平台,第一件事就是画 Pipeline 流程图。

1.4 整体系统框图

下面这张图是我自己总结的 Camera 系统数据流。你可以把它当作整个课程的“地图”:

Camera 系统数据流框图 镜头组 图像传感器 ADC 转换 RAW 数据 ISP 前端处理 BLC / LSC / DPC / NR ISP 后端处理 Demosaic / AWB / CCM / Gamma YUV / JPEG 最终图像 📌 说明 • 镜头组:包含镜头、IR-Cut 滤光片、VCM 马达(自动对焦) • 图像传感器:CMOS 或 CCD,主流是 CMOS(背照式/堆叠式) • ADC:通常集成在 Sensor 内部,输出 MIPI CSI-2 接口的 RAW 数据 • ISP 前端:处理 Sensor 的物理缺陷(坏点、阴影、噪声) • ISP 后端:处理图像质量(色彩、亮度、清晰度、动态范围) • 输出格式:YUV420/YUV422 用于预览和编码,JPEG 用于拍照

1.5 我的一些经验总结

做 Camera 驱动和 ISP 调优,说白了就是跟噪声、色彩、亮度、清晰度这四个东西打交道。我个人的习惯是:

  • 先保证 RAW 数据干净 —— 如果 Sensor 出来的 RAW 就有问题,后面 ISP 怎么调都救不回来。
  • 再调 ISP 前端 —— 把坏点、阴影、黑电平这些基础问题搞定。
  • 最后调 ISP 后端 —— 色彩、白平衡、Gamma 这些是“锦上添花”的步骤。

核心原则:ISP 调优不是“调参数”,而是“理解每个模块在做什么,以及它们之间的相互影响”。

我记得刚入行时,带我的老工程师说过一句话,我一直记到现在:“Camera 系统里没有‘万能参数’,只有‘适合场景的参数’。” 同一个 Sensor,用在室内监控和户外行车记录仪上,ISP 参数可能完全不同。所以别指望抄别人的配置就能搞定——你得理解背后的原理。