1. 相机成像基础与ISP概述

各位同学,欢迎来到《相机图像信号处理全流程技术指南》的第一章。

做ISP这行,说白了就是跟光打交道。你得先理解光怎么进来,传感器怎么把它变成电信号,然后我们才能谈怎么处理它。我见过不少新人一上来就猛啃去噪、锐化算法,结果连Bayer阵列是干嘛的都没搞明白——嗯,这样很容易走弯路。

这一章,我们先打好地基。从人眼看到相机,从镜头到传感器,最后给你一张ISP Pipeline的全景图。看完你就知道,整个图像处理链条到底有多长。

1.1 人眼视觉特性——我们到底在骗谁?

相机拍出来的照片,最终是给人看的。所以你得先了解人眼是怎么看世界的。

人眼其实不是一个完美的成像系统。它有几个明显的“缺陷”,而ISP恰恰是利用这些缺陷来“作弊”的。

  • 亮度感知是非线性的:人眼对暗部细节极其敏感,对亮部则比较迟钝。这就是为什么我们常用Gamma曲线来编码图像——把更多的比特分配给暗部。
  • 色彩分辨率远低于亮度分辨率:人眼对亮度的变化很敏感,但对颜色的变化就马虎多了。你想想看,Bayer阵列为什么是RGGB?因为人眼对绿色最敏感,所以绿色像素多一倍。
  • 对比度敏感度函数(CSF):人眼对不同空间频率的敏感度不一样。对中频最敏感,低频和高频都差一些。ISP里的去噪和锐化,很大程度上就是在迎合这个特性。
我的经验: 做ISP调参时,别只看客观指标(PSNR、SSIM)。我见过一张PSNR很高的图,人眼看着就是不舒服——因为噪声虽然被压了,但纹理也磨平了。最终评判标准永远是主观视觉,不是数字。

1.2 相机成像原理——光是怎么变成照片的?

一台相机,核心就四个字:控制进光。镜头、光圈、快门、ISO,这四兄弟配合好了,才能得到一张曝光合适的原始图像。

1.2.1 镜头与光圈

镜头负责把外界的光线汇聚到传感器上。光圈是镜头里一个可调节的孔,控制进光量的大小。

  • 光圈值(F-number):F值越小,光圈越大,进光越多,景深越浅(背景虚化)。
  • 我的踩坑记录:我曾经为了追求大光圈的虚化效果,把F值开到1.4,结果边缘画质崩得一塌糊涂。镜头都有最佳光圈范围,一般在F5.6到F8之间,别盲目开最大。

1.2.2 快门

快门控制传感器感光的时间长短。快门速度越快,运动物体拍得越清晰,但进光量也越少。

  • 安全快门:手持拍摄时,快门速度一般不要低于焦距的倒数。比如用50mm镜头,快门别低于1/50秒。
  • 卷帘快门效应:CMOS传感器是逐行曝光的,拍快速运动的物体时,画面会扭曲——这就是果冻效应。做ISP时,有时候需要做果冻效应矫正。

1.2.3 ISO(感光度)

ISO本质上是传感器信号的放大增益。ISO越高,信号被放得越大,画面越亮,但噪声也越明显。

ISO值 进光需求 噪声水平 典型场景
100-200 充足 极低 晴天户外
400-800 一般 轻微 阴天/室内
1600-3200 不足 明显 夜景/暗光
6400+ 极低 严重 极限暗光
注意: 高ISO带来的噪声,后期去噪算法只能“掩盖”不能“消除”。去噪太狠,细节就没了。所以前期能用大光圈和慢快门解决的,就别硬拉ISO。

1.3 传感器类型——CCD vs CMOS

传感器是相机的“视网膜”。目前主流就两种:CCD和CMOS。

  • CCD(电荷耦合器件):每个像素的电荷需要逐行转移到输出放大器。优点是噪声低、画质均匀;缺点是功耗高、速度慢、成本高。现在基本只用在高端工业相机和天文领域。
  • CMOS(互补金属氧化物半导体):每个像素自带放大器,可以随机读取。优点是速度快、功耗低、成本低;缺点是像素间一致性差,有固定模式噪声(FPN)。

现在手机和消费级相机,清一色CMOS。为什么?因为CMOS可以集成ADC、逻辑控制甚至ISP在同一个芯片上——这就是我们常说的SoC传感器。

核心结论: 做ISP,你99%的时间是在跟CMOS传感器打交道。CCD?了解一下就行,除非你去搞科研级设备。

1.4 Bayer阵列与CFA——颜色是怎么来的?

传感器本身是“色盲”的——它只能感知光的强度,分不清颜色。那彩色照片怎么来的?靠的是滤色阵列(CFA)。

最经典的CFA就是Bayer阵列。它在每个像素上覆盖一个滤光片,只允许红、绿或蓝光通过。排列方式是:

R G R G ...
G B G B ...
R G R G ...
G B G B ...

你看,绿色像素占了50%,红色和蓝色各占25%。这就是因为人眼对绿色最敏感。

但问题来了:每个像素只记录了一种颜色,那其他两种颜色怎么办?这就需要去马赛克(Demosaic)算法来插值补全。这是ISP Pipeline里最关键也最复杂的模块之一。

避坑指南: 我曾经在调试一个低光场景时,发现画面边缘出现大量彩色伪影。查了半天,原来是去马赛克算法在高ISO下对噪声太敏感,把噪声当成了颜色差异来插值。解决方案?在Demosaic之前先做一步预处理降噪。

1.5 ISP Pipeline全景图——一条龙服务

好了,现在光进来了,传感器也把数据交出来了。接下来就是ISP的舞台。

ISP Pipeline,说白了就是一条流水线。原始RAW数据从传感器出来,经过一系列处理模块,最终变成一张你看到的JPG或YUV图像。

下面这张图,是我自己整理的ISP Pipeline标准流程。你把它记在脑子里,后面每一章都会对应到其中的一个模块。

ISP Pipeline 全景图 ISP Pipeline 标准流程 传感器 RAW 黑电平校正 去马赛克 白平衡 色彩校正 Gamma 校正 去噪 锐化 色调映射 输出编码 说明: • 蓝色节点:RAW域处理(数据未经过插值,每个像素只有一种颜色) • 红色节点:RGB域处理(经过去马赛克后,每个像素都有R/G/B三个值) • 绿色/紫色节点:YUV域处理(亮度和色彩分离,便于压缩和增强) • 橙色节点:输出编码(压缩成JPG/HEIF或YUV格式)

这张图里,我特意用颜色区分了处理域:

  • 蓝色(RAW域):黑电平校正、去马赛克。这时候数据还是原始的,每个像素只有一个颜色值。
  • 红色(RGB域):白平衡、色彩校正。这时候每个像素都有完整的R/G/B信息了。
  • 绿色/紫色(YUV域):Gamma校正、去噪、锐化、色调映射。亮度和色彩分开处理,效率更高。
  • 橙色(输出):编码成最终格式。
记住: 不同的ISP芯片或算法库,Pipeline的顺序可能略有不同。比如有的会把去噪放在Demosaic之前(RAW域去噪),有的放在之后(YUV域去噪)。没有的对错,只有场景适配的优劣。我个人的习惯是:高ISO场景优先在RAW域去噪,低ISO场景在YUV域做精细处理。

好了,第一章就到这里。你脑子里现在应该有一张清晰的图:从人眼特性到相机硬件,再到传感器和Bayer阵列,最后是ISP Pipeline的全景。后面每一章,我们都会深入Pipeline里的一个模块,把原理、算法和工程实现掰开揉碎了讲。