037、事件相机与SPAD传感器:非传统成像技术的原理与实战前景
037、事件相机与SPAD传感器:非传统成像技术的原理与实战前景
去年夏天,我在一个车载夜视项目里被逼到墙角。客户要求“零光环境”下识别50米外的行人,传统CMOS传感器开到最大增益,画面全是雪花,ISP里的降噪模块跑得冒烟,帧率掉到10fps以下。我翻遍了所有图像传感器选型手册,最后被一个做激光雷达的同事提醒:“你试过SPAD吗?”那是我第一次认真审视非传统成像技术。后来在另一个工业检测项目里,高速运动物体的拖影问题又把我逼到了事件相机这条路上。今天这篇笔记,就聊聊这两个“非主流”但正在走向主流的传感器。
事件相机:只记录变化,不记录静止
传统相机的工作方式,说白了就是“每隔固定时间拍一张照片”。哪怕画面里只有一只蚂蚁在爬,整张640×480的图像也得全部读出、全部处理。这就像你盯着监控屏幕看,画面99%的时间都是静止的走廊,只有偶尔有人经过——但你得一直睁着眼睛。
事件相机完全反着来。它的每个像素独立工作,只在自己检测到亮度变化超过某个阈值时,才输出一个“事件”——包含像素坐标、时间戳和变化极性(变亮还是变暗)。没有变化的时候,像素就“睡觉”,不产生任何数据。
我第一次调事件相机的时候,犯了个低级错误。我把它的输出直接当成普通图像去显示,结果屏幕上只有稀稀拉拉的几个点,完全看不出是什么东西。后来才意识到,事件相机输出的不是“帧”,而是“流”。你需要把这些事件在时间窗口内累积,才能形成可理解的画面。这里踩过坑:时间窗口太短,事件稀疏得像星空;太长,又失去了低延迟的优势。我后来在工业产线检测高速运动的零件时,把窗口设在500微秒左右,效果最好。
事件相机的核心优势是微秒级响应时间和极高的动态范围(140dB以上)。传统相机在高速场景下要么拖影,要么过曝,事件相机却像装了“时间放大镜”。但别被宣传忽悠——它也有硬伤。没有纹理的纯色区域,事件相机就是瞎子;剧烈抖动的场景,事件会多到把带宽撑爆。我在一个无人机避障项目里试过,飞行速度稍快,事件流直接淹没了处理器的接收能力,最后不得不加了一个硬件事件滤波器。
SPAD传感器:单光子级别的“数数”艺术
SPAD(单光子雪崩二极管)传感器的工作原理,听起来像科幻小说里的东西。每个像素就是一个盖革模式下的雪崩光电二极管,只要接收到一个光子,就会触发一次雪崩,产生一个数字脉冲。它不测量光强,而是“数光子”。
我第一次接触SPAD是在那个车载夜视项目里。传统CMOS在0.1lux以下基本歇菜,SPAD却能在几乎全黑的环境下工作。原理很简单:光子数量足够少的时候,传统传感器读出噪声比信号还大,而SPAD直接输出数字信号,没有读出噪声这回事。
但SPAD有个让人头疼的问题——死区时间。每次雪崩之后,像素需要一段时间来“复位”,这段时间内它无法检测新的光子。这意味着在强光下,SPAD会“数不过来”,出现严重的非线性响应。我调试时发现,同一个场景,暗部细节丰富,亮部却一片死白,就是因为亮部光子太多,大部分都被死区时间“吞掉”了。
解决这个问题,我试过两种方案。一种是分时曝光,把一帧分成多个短时间片,每个时间片内只允许一次雪崩,然后累加。另一种是使用多个SPAD像素组成“宏像素”,每个宏像素里多个SPAD轮流工作,减少死区时间的影响。别这样写:直接提高偏置电压来缩短死区时间——那样会大幅增加暗计数,噪声会把你淹没。
SPAD在dToF(直接飞行时间)测距上的表现,才是它真正的杀手锏。每个光子到达的时间戳可以直接测量,精度能达到几十皮秒。我在一个扫地机器人的激光雷达项目里用过SPAD阵列,替代了传统的机械旋转式激光雷达,成本降了80%,体积缩小到原来的十分之一。
实战中的“混搭”思路
真正让我兴奋的,不是事件相机或SPAD单独使用,而是它们与传统传感器的融合。去年我做的一个安防监控原型,就是事件相机+传统CMOS的“双模”系统。事件相机负责检测运动目标,一旦检测到事件密度超过阈值,就触发传统CMOS进行高分辨率抓拍。这样既保证了低功耗(事件相机待机功耗只有几毫瓦),又保留了高分辨率图像用于人脸识别。
SPAD和事件相机也有天然的互补性。SPAD擅长测距和弱光,事件相机擅长高速运动检测。我在一个工业机器人抓取项目中,用SPAD做深度感知,用事件相机做运动轨迹预测,两者数据在时间轴上对齐后,抓取成功率从传统方案的85%提升到了97%。
但“混搭”的代价是系统复杂度爆炸。数据同步就是个噩梦——事件相机的时间戳是微秒级的,SPAD是纳秒级的,传统CMOS是毫秒级的。我最后不得不在FPGA里实现一个统一的时间戳分配器,把所有传感器的数据都打上同一个时钟源的标签。这里踩过坑:直接用软件做时间同步,延迟抖动会把你逼疯。
个人经验性建议
如果你现在想入坑非传统成像,我的建议是:别一上来就想着替代传统传感器。事件相机和SPAD不是万能的,它们有自己擅长的领域。先搞清楚你的应用场景里,传统传感器到底“痛”在哪里——是动态范围不够?是帧率太低?还是弱光性能差?然后针对性地引入非传统传感器作为补充,而不是替代。
学习曲线很陡。事件相机的数据处理完全不是传统图像处理的套路,你需要重新学习事件流处理、时空滤波、事件驱动神经网络这些概念。SPAD的物理特性(死区时间、暗计数、后脉冲)会让你怀疑人生。建议从官方SDK开始,先把demo跑通,再逐步深入底层。
最后,别忽视供应链。非传统传感器目前还是小众市场,供应商就那么几家,价格不透明,交期不稳定。我在一个量产项目里吃过亏——SPAD传感器交期从8周变成了20周,差点把项目搞黄。提前备货,找替代方案,这是过来人的血泪教训。
非传统成像技术正在从实验室走向产线。事件相机在工业检测、自动驾驶、AR/VR领域已经开始落地;SPAD在手机ToF、车载激光雷达、医疗成像领域也渐成主流。五年后,这些技术可能会像今天的CMOS一样普及。但在此之前,你得先学会和它们“对话”。
