先抛一个可能让不少朋友意外的结论:单看硅芯片本身,CCD和CMOS都是彻头彻尾的“色盲”。它们只知道自己收到了多少个光子,并不知道这些光子分别来自哪个波长。所谓“捕获光谱”,本质上是光电转换结构、滤光阵列和后续算法合谋的结果。我第一次接触光电探测器时也踩过这个误区,以为传感器天然懂颜色,后来在荧光显微成像项目里反复做光谱响应标定、跟色彩矩阵死磕,才真正把这层关系嚼透。
这篇文章我用概念拆解的思路,把“CCD/CMOS如何捕获光谱”这件事从光电转换源头讲起,逐步拆到拜耳阵列、堆叠式光电二极管、串扰补偿,最后延伸到光谱仪场景里单片探测器真正承担的角色。内容适合刚接触成像的硬件工程师、机器视觉从业者,也想让想搞清楚相机色彩原理的摄影爱好者看明白——传感器到底是怎么“看见”颜色的。
1. 硅片本身是个“色盲”:先弄清单像素到底记了什么
1.1 从光子到电子对:内光电效应的“粗糙”与“高效”
光照射到半导体表面时,光子能否起作用,就看它的能量是否大于半导体禁带宽度。硅的禁带宽度大约是1.12 eV,换算成波长差不多就是1100 nm附近。也就是说,从紫外到近红外这一段的光子,能量都足够把电子从价带激发到导带,形成一个电子-空穴对。CCD和CMOS后续所有工作,都是围绕这个最基本的“内光电效应”展开的。
这里最迷惑人的地方在于:一旦光子变成了电子-空穴对,传感器就不再关心这个电子当初是由哪种颜色的光带来的。一个620 nm红光光子激发出的电子,和一个450 nm蓝光光子激发出的电子,在电荷包里完全无法区分。像素最后输出的读数,本质上是这段时间内落入它的阱里的所有光生电子的总数,是一个对入射光谱“不加分辨的积分”。
你可以把它想象成一个接雨水的桶:桶只测量这段时间落进来多少水,它不会告诉你雨滴是从哪片云层飘下来的。CCD/CMOS的单像素就是这样一个“雨量桶”,它对所有可见光波长的响应都混在一起,唯一能改变“桶口方向”的,是后面要讲的各种滤光和分光结构。
1.2 量子效率曲线:传感器并非对所有光一视同仁
不过比较反直觉的是,“混在一起”和“一视同仁”是两回事。硅对不同波长的吸收能力差异极大。440 nm的蓝光,在硅片表面大概0.2微米深度内就被吸收掉了八成以上;而650 nm的红光可以渗透到几微米的深度。再加上芯片表面的抗反射膜、绝缘层、光电二极管的结深设计等因素,最终的综合量子效率曲线在不同波长上是高低起伏的,并不是一条水平直线。
裸硅探测器看世界,相当于在入射光谱外面套了一个“加权系数”,有的波长贡献大,有的波长贡献小。如果你想从一份原始读数里反推出真实的光谱比例,就必须先把这个加权系数测出来,然后在数字域里做补偿。这就是色彩校准的起点——它的本质是标定传感器对光谱的“偏好”。
实际测量中,我用单色仪扫过一款普通CMOS的量子效率曲线,典型趋势是蓝端偏低、绿黄端最高、红端逐渐衰减,到了近红外段又因为硅本身能吸收,拖出一段尾部响应。这也造成一个很实际的现象:没有红外截止滤镜的相机,拍出来的画面会明显偏洋红——近红外光参与了积分,把红外“谱段”混进了可见光各通道。
2. 拜耳马赛克的“光谱分拣”逻辑:最常见的三色解
2.1 每个像素头顶一块滤光片,一次采样只留一种味道
要让像素区分颜色,最简单的思路是“在桶口加滤网”。拜耳阵列就是在这个思路上做成的:每个像素上方覆盖一片微型彩色滤光片,按2×2的周期排列,通常是一个红色、一个蓝色、两个绿色。这些滤光片并不是把某个波长切得干干净净,而是呈现一条宽透射曲线:红色滤光片主要透过长波、对短波有明显吸收,蓝色滤光片正好反过来,绿色滤光片则带通在中间段。
这样一来,单个像素的输出就不是“所有光的积分”了,而是“经过滤光片透射加权之后的那部分光的积分”。用公式表达就是:传感器读数等于入射光谱、滤光片透射率、硅量子效率三者的乘积在全波段的积分。
这里有个很多人容易忽视的细节:彩色滤光片是靠吸收来“分拣”光谱的,被吸收掉的光子并没有变成信号,而是变成了损失。一个普通的拜耳阵列,通常要浪费掉一半以上的入射光。这也是为什么有人会专门找人把相机的拜耳滤镜去掉,改装成黑白机——去掉滤镜之后,单像素的灵敏度会大幅提升,代价是彻底失去颜色分辨能力。
2.2 为什么绿通道加倍?眼睛的明暗灵敏度说了算
为什么马赛克是RGGB而不是RGBR或者RBGR?因为人眼的亮度感知主要集中在绿色波段。把绿色像素数量翻倍,等于用更高的空间采样密度去照顾人眼最敏感的明暗通道,这样在视觉上画面亮度细节损失最小。
这个“偏爱绿色”的设定还带来一个连锁反应:相机RAW里的G通道信噪比天然比R和B高,后期降噪和色彩重建时,R和B通道需要更小心。在暗光环境里,蓝通道往往最容易先崩掉,因为蓝光量子效率本来就低,拜耳滤光片又翻了一层损耗,再加上去马赛克时要靠邻近像素插值,蓝通道的噪声会被放大得很明显。
2.3 马赛克只是前半场,后半场靠“猜”
有了CFA还是不够,因为每个像素只真正测量了一个颜色通道,另外两个颜色通道是靠“猜”出来的。这个过程叫去马赛克或颜色插值。最简单的双线性插值算法是拿邻居像素的值加权平均,效果就是边缘处容易出现伪色和拉链状锯齿。稍微复杂一点的是边缘导向插值,先判断图像亮度梯度方向,再沿着边缘方向插值;再往后还有频域方法,以及深度学习时代的卷积去马赛克算法。
去马赛克做完之后,还有一个关键步骤:把传感器RGB估算值映射到标准色彩空间。这个映射关系是一个3×3的色彩矩阵,矩阵系数的来源就是前面提到的“光谱加权”。在工程上,我们通常用色卡和分光光度计去标定这个矩阵。如果传感器的光谱响应和标准观察者曲线相差太大,矩阵的非对角元素就会变大,颜色矫正时噪声也成倍放大。
3. 硅内分层法:从波长穿透深度里直接“读出”颜色
3.1 蓝光浮在表面、红光沉入底:硅吸收的深度密码
CFA方案是在空间上给每个像素“分配”一个颜色,还有一种完全不同的思路:利用硅本身对波长的渗透深度差异,在同一个像素位置的不同深度分别制作光电二极管结。硅的吸收系数α(λ)随波长变化非常剧烈——蓝光(约450 nm)的半吸收深度只有零点几个微米,绿光(约540 nm)约在1微米以内,而红光(约650 nm)可以达到几微米。
这意味着,如果在一片硅片表面上依次做三个PN结,表面结几乎只能收集蓝光产生的电子,中间结收集的主要是绿光的电子,最深结收集的则是红光的电子。这样,单看一个像素位置,就能在纵向上直接读出三种颜色的比例,不需要任何滤光片。
3.2 堆叠式光电二极管:把三种颜色竖着码进同一像素
这种垂直堆叠光电二极管方案在概念上非常优雅:每个像素位置都完整保留RGB三个通道,不需要马赛克,因此没有插值,不存在伪色问题;空间分辨率可以做到满分辨率;色彩还原在特定光源下也更准确。
不过,概念和量产之间隔着一道很深的工程沟。硅材料的吸收深度梯度是连续的,不是阶梯状的,三层的结深、耗尽层宽度必须经过精密设计,才能让各个波长大致各归其位。表面那层结必须做得极浅,但太浅又会导致蓝光收集效率差、暗电流大;中间层既要收集绿光,又不能让深层的红光反串上来;三层之间还共享同一个外延结构,工艺窗口非常窄。曾经有厂商推出过成熟的商用传感器,色彩表现确实不错,但市场占有率很低,主要因为制造成本高、灵敏度低、高感噪声表现不如CFA方案。
| 对比维度 | CFA拜耳阵列 | 垂直堆叠光电二极管 |
|---|---|---|
| 色度取样密度 | 每像素只有单通道 | 每像素三通道全保留 |
| 空间分辨率损失 | 有,需要插值重建 | 无明显损失 |
| 光谱分选机制 | 空间滤光片吸收分色 | 深度吸收分层分色 |
| 主要制造难点 | 滤光片涂布与对准 | 多层结深精确控制 |
| 灵敏度损耗 | 滤光片大量吸收光子 | 浅层蓝光收集率低 |
| 伪色与摩尔纹 | 需要算法抑制 | 天然避免 |
3.3 工程代价:制造难度、蓝光响应和噪声账本
垂直堆叠方案的宣传点很吸引人,但实际用下来会发现,它的“原生颜色”优势在某些场景里会被噪声和弱光劣势抵消。蓝光在表面浅层吸收率很高,但如果浅层结做得太薄,量子效率就上不去;结太厚,绿光和红光又会提前被吃掉一部分。三层结构里每一层都在抢同一个硅体积里的光子,层的分离度再高,也避免不了互相串扰。
所以我一般把这类方案归为“概念上最接近人眼、工程上最难做完美”的路线。在光谱成像、艺术品数字化这类对色准要求极高、对灵敏度要求相对宽松的场合,它有独特价值;但若是拍星空或快速抓拍,我大概率还是选CFA加背照式结构。
4. 未按计划落位的光子:微透镜、串扰和光谱保真的角力
4.1 串扰的两种路径:光学折射与载流子扩散
即使有了滤光片,光线真正被它所属像素的光电二极管收集,也没那么简单。光子进入硅片之后,会面临两种“迷路”方式。
第一种叫光学串扰。入射光经过微透镜时的折射方向、芯片层间界面的反射、滤光片边缘的衍射,都可能导致光跑到相邻像素的通路上。尤其是镜头边缘和大光圈下,光线以大角度入射,光学串扰会明显加剧。
第二种叫电学串扰,这条更隐蔽。光子在硅内部被吸收后产生电子-空穴对,电子在漂移到结区之前会在硅晶格里随机扩散。不同波长产生的电子位置不同:蓝光电子在表面产生,扩散距离短;红光电子在深处产生,还没走到正确的光电二极管就可能横向漂移到邻居那去。这也是为什么红光通道的串扰通常最严重。
一句话概括:蓝光子像刚溅到地面的水滴,基本跑不远;红光子像渗入土壤的暗流,在看不到的地方到处蔓延。
4.2 微透镜、深沟槽与背照式设计如何“拉回”偏轨的光子
围绕串扰问题,传感器制造商做了大量结构设计。最基础的是微透镜,把进入像素开口的光汇聚到光电二极管的敏感区域,减少光路在非敏感区的横向漂移。再进一步是深沟槽隔离,在相邻像素之间刻出足够深的隔离槽,从物理上阻断载流子的横向迁移。这项技术对减小红光串扰作用非常明显,但也会牺牲一小部分有效感光面积。
还有一个更大的结构变化是背照式(BSI)。传统正面照明结构里,光电二极管上方压着金属布线和介质层,光要绕过障碍才能到达半导体,蓝光尤其容易被金属层反射掉;背照式结构干脆把硅片减薄、从背面受光,光电二极管靠近入射表面,金属走线全部挪到另一侧。这样做不仅直接提升了量子效率,还显著缩短了电荷需要横向漂移的距离。
4.3 串扰进了彩通道,后果不只是“脏颜色”
串扰听着像一种噪声,但它远比白噪声麻烦,因为它会直接改变每个通道的光谱响应函数。如果一个红色像素的信号里有相当比例来自邻居的“漏光”,那么在色彩重建时,这部分会被表现为红色通道读数被压低、相邻绿色通道读数被抬高的系统性偏差。色彩矩阵里的非对角元素就是用来做这种校正的,但这些交叉项每变大一分,信噪比就损失一分。
做过相机色彩标定的人应该有同感:最让人头疼的不是测出来的矩阵不漂亮,而是在低照度下做完色彩反变换之后,画面上那种像沙子一样铺开的彩色噪声。从根源上讲,一部分噪声就是这么被串扰和矩阵校正“放大”出来的。实际项目里,如果发现某台相机在特定视场角区域颜色偏得很厉害,我会下意识看一眼这个角度下的光线入射条件和微透镜的匹配情况。
5. 真·光谱捕获:当CCD/CMOS被用作光谱仪的核心探测器
5.1 单色探测器也能做光谱仪:色散与波长-空间映射
聊到这里,我们讲的都还是“怎么把可见光大致分成红绿蓝几个大类”的颜色捕获。如果需求更进一步,要分辨相邻只有几个纳米差别的光谱线,比如荧光标记的区分、拉曼位移测量、天体红移观测,这时候CCD/CMOS反而要“退回”成单色探测器来使用。
在光谱仪的场景里,分光的任务交给了光栅或棱镜。入射光经过狭缝和准直镜,再由光栅色散成不同波长,在空间上拉成一条彩带。CCD/CMOS被放在这条彩带的焦平面上,每一列像素就对应一个窄带波长。传感器本身并不知道自己在探测哪个波长,它只是忠实地记录每个空间位置上的光子数。
你会发现一个有趣的对照:在拜耳方案里,光谱分辨靠的是每个像素头上的滤光片;在光谱仪里,光谱分辨靠的是整个光学系统把波长映射到空间坐标上。传感器始终是那个“雨量桶”,变化的只是桶前面那道分光装置。
5.2 面阵还是线阵:不同科学场景对“光谱捕获”的取舍
用CCD/CMOS做光谱仪,选面阵还是线阵,取决于你要不要同时捕捉空间维度。
天文光谱仪常用“长狭缝+面阵探测器”的结构:狭缝对准目标天体的某条方向线,光在狭缝方向保留空间信息,在垂直方向由光栅色散展开波长,一帧曝光读到的就是一张“空间-波长”二维图,每个天体目标都变成一条横跨在光谱方向上的亮线。
拉曼和荧光光谱仪则常用大像素、高满阱、深度制冷的科学级探测器,因为信号极弱,需要长时间积分,暗电流和读出噪声就是生死线。还有一类快速测量场景,用线阵传感器配旋转或扫描机构,能实现极快的光谱采集,代价是放弃了一个方向的空间信息。
需要特别说明的是,即使在光谱仪里,CCD与CMOS的选择也不是拍拍脑袋就能定的。传统上CCD的读出噪声低、满阱容量大、像素响应均匀性好,在一些需要极弱光积分的研究场景中仍是首选。近几年科学级CMOS把读出速度和开窗灵活度提了上来,动态范围也在追赶。真正落地时,看的还是“探测器量子效率是否与工作波段匹配、总噪声预算怎么控制、冷却方案怎么设计”这些系统级指标。
5.3 光谱波段的延伸:从可见光到紫外和近红外
严格来说,CCD/CMOS能捕获的光谱范围远不止可见光。硅的本征吸收可以延伸到近红外,所以普通传感器不加滤镜时能响应到900 nm以上;往紫外方向走,光子在硅里吸收强烈但穿透极浅,普通光电二极管表层的介质层又会把紫外光挡住,这就需要专门做紫外增强处理,甚至去掉表面介质层让光电二极管直接受光。
如果想继续往短波或长波方向延伸,就得换材料体系了,比如铟镓砷、碲镉汞这类探测器,那又是另一套光谱捕获逻辑。不过无论用哪种探测器,核心原则始终没变:你必须知道探测器对不同波长的响应权重,才能把读数还原成真实光谱。少了这一步,再好的传感器,也只是一个做得非常精细的“雨量桶”。