曲线:CMOS图像传感器如何模拟人眼视见函数)
一提到光学传感器很多从半导体或嵌入式转过来的人第一反应是像素尺寸、满阱容量、暗电流这些电学参数。但真正让一台相机拍出来“像人眼看到的那样”背后还有一套极其容易被忽略的光学标尺——V(λ)曲线也就是人眼视见函数。做图像传感器或者光学测量的工程师大概率会遇到这个场景传感器明明对红外光响应很好可人眼根本看不见红外传感器对蓝光响应偏弱人眼反而对蓝光很敏感。问题就出在这里——我们一直在跟CMOS打交道却常常忘了传感器要模仿的其实是一双人眼。这篇文章就围绕V(λ)曲线展开把光学传感器如何模拟人眼视见函数这件事讲透。内容覆盖人眼视觉机制的来源、光度学与辐射度学的转换关系、CMOS像素的光谱响应设计、滤光片选型以及系统级标定既适合刚接触传感器光谱响应设计的初学者也适合在产线上做调试和校准的朋友参考。1. 人眼为什么有“标准曲线”V(λ)的生物学与计量学起源1.1 三种视锥细胞与明视觉、暗视觉的切换要理解V(λ)曲线先得回到人眼本身。人眼的视网膜上有两类感光细胞视锥细胞和视杆细胞。视锥细胞又分三种分别叫做S型、M型、L型它们的吸收峰大致在420nm、530nm和560nm附近分别对应蓝、绿、红三个波段。这三种细胞的响应相互叠加构成了人眼在明亮环境下的光谱灵敏度也就是常说的“明视觉”。而在光线非常昏暗的环境下视锥细胞基本不工作了主要由视杆细胞负责感光它的吸收峰大约在507nm整体曲线更偏向蓝绿波段这就是“暗视觉”。这个双系统设计很有意思。视锥细胞给了我们丰富的色彩分辨能力但灵敏度相对较低所以晚上看不清颜色视杆细胞灵敏度高单个光子就能触发响应但牺牲了色彩信息。光学传感器在设计时通常默认模拟的是明视觉状态也就是以视锥细胞为主体的情况。如果某个传感器被用在夜间监控场景还要额外考虑暗视觉曲线的偏移否则夜间画面与人眼感知的亮度关系会明显错位。1.2 CIE标准观察者与V(λ)曲线的定义过程V(λ)曲线的正式定义来自国际照明委员会CIE在1924年制定的标准。当时CIE组织了一批观察者用等色实验确定不同波长在相同辐射功率下的视觉亮度感受最终统计出一条标准化的曲线叫“CIE 1924标准光度学观察者”。这条曲线在555nm附近达到峰值也就是说人眼对黄绿色光最敏感向蓝端和红端逐渐衰减在400nm处相对灵敏度仅有约0.0004在700nm处约为0.0041两端几乎可以忽略。这里要特别强调一个容易混淆的概念V(λ)不是人眼对所有波长的绝对吸收曲线而是一条归一化的相对灵敏度曲线。它描述的是“同样辐射功率下不同波长对人眼产生的亮度刺激比例”。峰值处的数值被定义为1其他波长按比例取值。基于这条曲线后来的光度学才有了严格定义1瓦的555nm绿光其光通量被定义为683流明而相同功率的红光因为人眼不敏感光通量要低得多。对于做传感器的人来说V(λ)意味着一个“标准观众”。如果你设计出来的CMOS光谱响应偏离了这条曲线那么你拍到的亮度、色彩就和人眼感受不一致这是所有相机色彩还原和亮度测量问题的根源。可以说V(λ)是连接物理世界与视觉世界的第一座桥梁。2. V(λ)在测量中的角色从辐射度到光度的“翻译官”2.1 两组物理量体系的差异与场景选择既然提到了光度学就不得不梳理两个概念体系辐射度学和光度学。辐射度学描述的是纯粹的物理量比如辐射功率单位是瓦特辐照度单位是瓦每平方米而光度学描述的是人眼感知的量比如光通量单位是流明光照度单位是勒克斯亮度单位是坎德拉每平方米。它们之间的换算关系核心就是V(λ)曲线。举一个生活化的例子。一颗850nm的红外LED和一颗白光LED如果它们的辐射功率都是1瓦人眼看到的效果完全不一样红外LED几乎没有感觉白光LED则非常刺眼。从辐射度学角度看两者功率相同但从光度学角度看红外LED的光通量几乎为0因为V(850nm)已经衰减到接近于零。这正是很多硬件工程师在调试红外补光灯时容易踩的坑——用光功率计测出很高功率但人眼就是看不见因为这个波段的视觉权重实在太低了。实际工程中两个体系各有用武之地。做照明设计、显示屏亮度评估一定要用光度学单位做太阳能电池、光通信、红外传感器设计则以辐射度学单位为准。对于CMOS图像传感器来说如果定位是“替代人眼做视觉应用”那必须关注光度量如果定位是工业检测、光谱分析辐射量更重要。2.2 一道关键的换算示例举一个实际的换算例子。假设有一个单色光源波长555nm辐射功率2W。因为是555nmV(λ)1那么光通量Φ2W×683lm/W1366流明。如果同样功率的650nm红光V(650nm)约0.155光通量就是2×683×0.155≈211.7流明。同样是2瓦亮度感知差了6倍多这就是曲线的威力。再延伸一下如果要评估一个宽光谱LED的总光通量需要用光谱功率分布P(λ)对V(λ)做加权积分Φ 683 × ∫ P(λ)·V(λ)dλ。这个公式在光源选型和传感器标定中会反复出现。很多时候我们在测试透射率、量子效率时得到的数据本质上都经过了这个加权过程只不过软件已经帮你算好了不提醒的话很容易忽略。3. CMOS传感器如何一步步逼近人眼3.1 像素级光谱响应量子效率从何而来理解了人眼标准再来看CMOS传感器。一个像素的光谱响应背后是量子效率QE这个概念。QE描述的是入射光子转换为电子的概率通常用百分比表示。换个角度理解QE乘以入射光子数就是输出电子数决定了传感器的灵敏度和信噪比。量子效率由三个因素共同决定入射光到达感光区的透射率、半导体材料对光子的吸收率、以及光生载流子被有效收集的概率。用公式说就是QE(λ) T(λ) × A(λ) × C(λ)。这三个因子都和波长强相关。硅材料本身对光的吸收能力随波长剧烈变化蓝光波长较短能量高在硅材料的浅表层几百纳米内就被吸收完了红光波长长穿透深度可达数微米近红外光则能穿透几十微米深。这意味着CMOS像素剖面结构对光谱响应影响极大。如果光电二极管做得太浅蓝光响应可能不错但红光和近红外会有大量光子穿透到衬底深处根本来不及被收集就被复合掉了。反过来如果光电二极管做得深长波响应上去了但蓝光在表面就被吸收产生的位置太靠近表面反而容易受表面缺陷和暗电流影响。3.2 拜耳阵列与三通道响应如何接近人眼商用彩色CMOS传感器普遍采用拜耳阵列RGGB每个像素头顶覆盖一个微型滤光片只允许红、绿或蓝光通过。这样的设计本质上就是对V(λ)曲线的一种分段近似。但要注意拜耳滤光片划分的是“色彩通道”并不是严格模拟V(λ)曲线。绿色通道通常覆盖约500nm到580nm范围与V(λ)曲线的峰值区有重叠但形状远不如标准曲线那么平滑。从信号链角度来说传感器的原始响应是“光源光谱 × 滤光片透射率 × 像素QE”三者乘积的结果。要逼近人眼并不是简单地把三通道响应都调整到V(λ)那么窄而是要保证最终的白平衡和色彩转换矩阵能准确还原标准观察者的三刺激值。这也是为什么ISP图像信号处理器里要设置3×3颜色校正矩阵的原因传感器的原始光谱响应形态和人眼三刺激值不完全一样通过线性矩阵变换让传感器输出的RGB能映射到标准色彩空间。很多工程师以为加红绿蓝滤光片就能“模拟人眼”其实这远远不够。滤光片只是把人眼光谱响应切成了三段而这三段的形状、带宽和重叠程度直接决定了色彩还原和亮度匹配的准确度。这个“切法”很有讲究也不是越窄越好。滤光片太窄灵敏度低信噪比下降滤光片太宽通道间串扰大色彩容易发灰。3.3 硅材料本身的局限与对策硅材料对可见光波段的吸收特性其实是不均衡的。在短波蓝光波段硅的吸收系数很高但表面复合效应显著很多光生载流子在扩散到PN结之前就被复合掉了导致蓝光QE通常偏低。而在近红外波段硅的吸收系数下降需要足够厚的有源区才能有效吸收但是有源区加厚又会带来暗电流和串扰的增大。至于超过1100nm的波段硅更是完全无能为力——因为硅的禁带宽度约1.12eV对应光子波长的极限恰好是1100nm左右更长的波长根本无法激发电子跃迁。这带来一个有趣的对照人眼可见范围是380nm到780nm硅响应范围大约可以延伸到1100nm。也就是说CMOS传感器天然就能“看到”人眼看不见的近红外光。在室内环境下白炽灯和LED灯会发射不少近红外成分如果传感器不加任何滤光片拍出来的颜色会有明显的偏红或偏紫倾向。这就是为什么几乎所有相机模组里都有一片红外截止滤光片IR-cut它的任务非常明确把人眼看不见的780nm以上红外光挡在外面让传感器响应逼近V(λ)的适用范围。4. V(λ)匹配的工程实现从仿真到产线标定4.1 光谱匹配度如何评估f1指标在光度测量和传感器设计领域评价一个探测器与人眼V(λ)曲线的吻合程度最常用的指标是f1即光谱匹配误差。按照国家标准和国际标准合格的照度计、亮度计其f1通常要求在3%以下A级或5%以下B级。f1的计算本质是通过测量探测器在不同波长下的响应度与标准V(λ)曲线进行归一化对比然后计算两者差异的绝对平均值。对消费级相机模组来说f1并不像专业照度计那么苛刻但设计师心里要有个数。如果传感器在蓝光区的相对响应特别低、红外区特别高那么f1就会很大拍出来的亮度自动曝光算法往往会在冷色温场景下欠曝在暖色温场景下过曝。这也是为什么有些手机摄像头在钨丝灯环境下白平衡不准、亮度不稳的原因很大一部分就来自光谱响应对V(λ)的偏离。如果你是在用CMOS传感器自己搭光谱仪或色度计那f1就是绕不开的核心指标。选型的时候不光要看QE绝对值还要看QE曲线形态。有些传感器标称QE很高但峰值在600nm以上在蓝光和绿光区响应很差这种器件做照明测量会让人非常头疼。4.2 滤光片设计的关键参数与选型对比滤光片是实现V(λ)匹配最核心的物理手段。市面上常见的滤光片分两大类吸收式滤光片和干涉式滤光片。吸收式滤光片的原理是材料本身选择性吸收特定波段的光。蓝玻璃是典型例子它通过玻璃中掺杂的离子吸收红外和部分红光广泛用于CMOS传感器的IR-cut。这类滤光片成本低入射角敏感度低在广角镜头等大入射角场景表现好。缺点是截止过渡带比较宽对陡峭的V(λ)曲线拟合能力有限。干涉式滤光片则是在玻璃基底上镀多层介质膜通过多光束干涉实现特定波段的反射或透射。它的优势是可以设计出非常锐利的截止边甚至能做成任意形状的透射曲线在专业光度计和光谱仪器中应用极广。但干涉滤光片对入射角非常敏感光线斜射时截止波长会蓝移镀膜生产工艺的控制难度也更高成本自然更高。对比来看消费级相机模组现在主流方案是“蓝玻璃吸收式IR-cut”因为经济且对入射角宽容度高而专业照度计、光色度计大多用干涉滤光片组配合针对V(λ)曲线专门优化的镀膜曲线。近些年中高端方案还把滤光片和微透镜做成一体化结构在wafer level直接贴合到像素表面减少模组组装环节的误差。选择滤光片时需要重点确认三个参数截止波长位置、截止深度的光学密度、以及工作波段内的平均透过率。比如一片典型IR-cut通常设计为在650nm之前透过率尽量高650nm之后尽快下降到OD4光学密度4透过率万分之一以下。如果把截止波长往前挪到600nm能更接近V(λ)的衰减趋势但也会损失部分红光导致画面明显偏绿。4.3 系统级标定的完整路径与设备清单硬件设计做得再好没有标定也出不了准确结果。系统级标定的核心思路有两个方向一是直接使用单色仪输出已知功率的窄带光逐一扫描波长记录传感器的响应值从而获得完整的光谱响应度曲线另一种是使用已知光谱功率分布的标准光源通过数学反卷积的方式解算响应函数。单色仪标定的典型流程是这样的首先准备一台波长精度可靠的单色仪输出带宽设置为10nm或更窄配合标准硅探测器NIST可溯源作为参考基准。从380nm到780nm每间隔10nm或20nm扫描一遍记录标准探测器的输出和测试传感器的输出两者相除再乘以标准探测器的绝对响应度就得到传感器的绝对光谱响应度。这套流程说起来简单实际操作中的关键是保持光路稳定。光源的漂移、单色仪狭缝杂散光、环境光反射都会带来明显误差所以通常会先在暗室中稳定30分钟以上再用双光路交替测量的方式消除光源漂移。工厂端的量产标定往往不会这么精细。消费品级别的做法是校准白平衡和曝光模型拟合出光源色温与RGB增益的映射表再根据黑体辐射曲线做插值。对于一些高精度环境光传感器ALS产线上会用标准光源比如CIE标准光源A2856K色温的白炽灯做单点标定再结合器件出厂前测好的光谱响应数据统一算出一个加权系数。5. 常见问题与排查技巧实录5.1 为什么照度计测出来的亮度总和人眼感觉不一致这个问题在照明工程里太常见了。室内做一个LED灯具改造原来的荧光灯测得照度是500lux换完LED灯珠之后照度计读数也是500lux但人眼就是觉得变亮了或者变暗了。如果照度计本身满足国家一级标准f1小于3%那通常不是照度计的问题而是灯具光谱差异带来的视觉感受差异。LED光谱中蓝光成分高、光谱不连续人眼的明暗感知容易受到短波成分的额外刺激。但更多时候问题出在便宜照度计上。市面上一两百块的手持照度计很多直接用一个光敏电阻或普通硅光电池加一块简易滤光片f1可能高达15%甚至更高。用这种照度计测暖白灯、冷白灯读数差异会特别明显因为器件对不同波段的响应已经严重偏离V(λ)曲线。此时先不要怀疑灯具先拿一台经过计量的照度计做交叉对比再看光谱数据。5.2 传感器在近红外环境下偏色怎么办很多家庭监控摄像头在夜间红外人眼看不见的光照下偶尔拍出诡异的明亮画面但有些摄像头在白天室内也会莫名出现偏红或偏紫的色彩。原因是室内的节能灯或白炽灯会发射较多近红外光。此时IR-cut滤光片的质量就极其关键了。有些低成本模组只涂了很薄的一层蓝膜红外截止深度不够传感器在红光通道上叠加了额外的红外信号画面自然偏红。排查思路分三步第一用一块已知合格的红外截止滤光片替换原模组镜头看偏色是否消失第二用红外LED照射镜头观察画面响应是否明显变亮第三步查看传感器在850nm和940nm波段的QE数据——很多工业Sensor的QE在850nm仍有20%以上如果没有IR-cut配合偏色几乎是必然的。处理办法要么升级滤光片的截止深度要么在ISP里增加红外抑制算法对纯红外通道做分离扣除。5.3 传感器蓝光响应偏低导致的曝光问题另一个典型故障是在色温较高的阴影环境下传感器自动曝光明显偏慢拍出来的照片发暗发黄。这是因为阴影处的光谱以蓝紫光为主而硅基CMOS的蓝光QE本身就偏低再叠加拜耳滤光片蓝通道透过率不理想蓝通道输出能量非常弱自动曝光算法如果主要参考Y通道亮度通道就容易出现判断偏差。这种问题从硬件层面改进可以优化像素光电二极管结深把结深做得更浅或采用表面Pin层工艺增强蓝光吸收从系统层面则需要在ISP测光算法中给蓝通道更高的权重或者增加针对高色温场景的曝光补偿。我见过不少项目在低照度蓝光场景下花了大力气调ISP参数最后才发现根源是传感器外延层太厚蓝光响应先天不足。所以说提前看QE曲线能省下大量后期调试时间。6. 这组关系的底层逻辑与个人实操体会如果要在实际项目中灵活应用V(λ)匹配我的建议是先把“三层映射”想清楚第一层是物理光谱到传感器电子信号的映射由QE决定第二层是电子信号到RGB数值的映射由滤光片和色彩矩阵决定第三层是RGB数值到人眼感知亮度和色彩的映射由V(λ)等标准观察者函数决定。每一层都有自己的误差三层叠加后某一个环节的小偏差很可能被放大成肉眼可见的偏色或亮度异常。我自己的习惯是拿到一款新的CMOS传感器第一件事不是看像素和帧率而是先下载它的光谱响应曲线对比一下蓝绿红三通道峰值位置和V(λ)曲线的三条分支。如果绿色通道峰值明显往560nm以后偏移这个传感器在还原肤色时大概率会有偏差。另外做环境光传感器时尽量选择那些官方数据表直接标注“V(λ) corrected”的型号这类器件在封装内部就已经集成了匹配滤光片能节省大量后期校准工作。最后再分享一个产线上得来的小技巧在验证一款传感器或模组的V(λ)匹配效果时不要只测白光和黑白对比卡准备一套窄带滤光片分别放在450nm、532nm、635nm三个波长下拍灰度卡片观察三个通道的灰阶比例是否接近同一个人眼观察结果的比例。这能在不做单色仪扫描的前提下快速判断器件的光谱响应趋势是否合理。这个方法虽然粗糙但操作快、成本低发现明显异常后再上单色仪做精细测量效率会高很多。