第三章 计算成像的曙光:算法与硬件如何联手打破传统桎梏
传统光学设计有个“死穴”——视场和分辨率永远在打架。你想看得宽,分辨率就得妥协;你想看得清,视场就得缩小。这个矛盾困扰了光学工程师几百年。
但最近十年,情况变了。计算成像的出现,让这个看似无解的困局有了新出路。
传统光学的“天花板”在哪?
先说说传统光学为什么会有这个瓶颈。说白了,就是物理定律在作祟。
一个镜头系统,它的信息通量是有限的。这个通量由系统的空间带宽积(Space-Bandwidth Product, SBP)决定。SBP = 视场 × 分辨率。你想想看,这个乘积是个常数,你往一边加码,另一边就得减量。
我早年做安防镜头设计时,就吃过这个亏。客户要一个 120° 广角镜头,还要能看清 50 米外的人脸。我折腾了三个月,换了七八种结构,最后只能做到 90° 视场下勉强看清。那会儿我就想,是不是这条路走到头了?
核心矛盾:传统光学系统中,视场与分辨率受限于物理孔径和像差校正能力,二者不可兼得。
计算成像:换个思路解决问题
计算成像的核心思想其实很简单:别指望镜头一个人把所有事干完。让镜头采集“不完美”但信息量足够大的原始数据,然后交给算法去“算”出最终图像。
这就像破案。传统光学是让侦探一眼看出凶手;计算成像则是先收集一堆看似杂乱无章的线索,再让分析专家拼出完整真相。
我个人习惯把计算成像的流程拆成三步:
- 编码采集——用特殊的光学结构(如编码孔径、多光谱滤波、光场采样)把场景信息“编码”到传感器上
- 欠采样或混叠——故意让传感器采集的数据看起来模糊、有噪声、甚至信息不足
- 算法重建——用先验知识和优化算法,从欠采样数据中恢复出高质量图像
嗯,这里要注意:第三步才是计算成像的灵魂。没有好的重建算法,前面两步做得再好也没用。
算法与硬件协同的三种典型模式
我根据项目经验,把算法与硬件的协同方式归纳为三类。这张图可以帮你快速理解:
模式一:硬件编码 + 算法解码
这种模式最直观。镜头前面加一个特殊的编码掩模,把场景信息“打散”到传感器上。传感器采集到的是一张看起来乱七八糟的图,但算法知道编码的规律,就能反推出清晰图像。
我做过一个编码孔径的项目。当时要在低成本 CMOS 传感器上实现高分辨率成像。传统方案需要大口径镜头,成本高得离谱。我们换了个思路:用一片便宜的塑料掩模代替部分镜片,再写个迭代重建算法。
结果呢?分辨率提升了 3 倍,成本反而降了 40%。
实用建议:编码孔径设计时,掩模的透射模式要满足“互相关尖锐”的条件。简单说,就是编码图案的自相关要接近冲激函数,这样才能保证重建时不会引入伪影。
模式二:多帧融合 + 超分辨率
这个模式更常见。你拿着手机拍照时,手会轻微抖动。传统算法会去模糊,但计算成像的思路是:利用这些亚像素位移,把多帧低分辨率图像融合成一帧高分辨率图像。
原理其实不复杂。假设你拍 4 帧图像,每帧之间都有 0.5 像素的偏移。这 4 帧图像其实包含了不同的亚像素信息。把它们对齐、插值、融合,就能得到分辨率翻倍的图像。
我曾经在无人机遥感项目里用过这个技术。无人机飞得高,单个镜头分辨率不够。我们让无人机在同一个区域飞 3 遍,每次航线偏移半个像素。回来一处理,地面分辨率从 50cm 提升到了 20cm。
避坑指南:多帧超分最怕运动物体。如果场景里有移动的人或车,配准会出错,重建结果会出现鬼影。我曾经因为这个原因,在监控项目中翻过车。后来加了运动检测和选择性融合,才解决问题。
模式三:端到端联合优化
这是目前最前沿的模式。它把光学系统和算法当成一个整体来优化。什么意思呢?就是让算法告诉光学系统:“你这里的设计可以改一改,这样我后面重建效果会更好。”
具体实现上,需要用到可微分光学模型。把镜头的曲率、间距、材料折射率都变成可微参数,然后和神经网络一起训练。梯度反向传播时,不仅更新网络权重,也更新光学参数。
我去年参与的一个项目就是这种模式。我们要设计一个超薄手机镜头模组。传统设计厚度下不来,因为要校正各种像差。用了端到端优化后,镜头厚度从 5mm 降到了 3mm,成像质量反而提升了 15%。
当然,这种模式对计算资源要求很高。一次完整的联合优化,可能需要跑好几天。
三种模式的对比
| 对比维度 | 硬件编码 + 算法解码 | 多帧融合 + 超分辨率 | 端到端联合优化 |
|---|---|---|---|
| 硬件改动 | 需要额外编码元件 | 基本不改硬件 | 需要可调/可编程元件 |
| 算法复杂度 | 中等(迭代重建) | 较低(配准+融合) | 高(可微分训练) |
| 实时性 | 中等 | 高 | 低(需离线训练) |
| 分辨率提升 | 2-4 倍 | 1.5-3 倍 | 2-5 倍 |
| 适用场景 | 显微镜、遥感 | 手机拍照、监控 | 高端科研、定制系统 |
计算成像的“代价”
说了这么多好处,也得泼点冷水。计算成像不是万能的。
首先,算力成本。算法重建需要计算资源。在嵌入式设备上跑一个迭代重建算法,功耗和延迟都是问题。
其次,噪声放大。很多重建算法本质上是逆问题求解,对噪声非常敏感。信噪比低的时候,重建结果可能比传统成像还差。
最后,可靠性。算法毕竟是“猜”出来的结果。在医疗、安防等对真实性要求极高的场景,算法引入的伪影可能带来严重后果。
我的经验:计算成像不是替代传统光学,而是补充。好的系统设计,应该让光学和算法各司其职。光学解决物理极限内的问题,算法解决信息恢复的问题。两者配合,才能实现 1+1 > 2 的效果。
小结
计算成像的本质,是用信息论的视角重新审视成像系统。它不再追求“一次成像完美”,而是通过算法与硬件的协同,在采集阶段保留更多信息,在重建阶段恢复出高质量图像。
三种模式各有优劣。选择哪种,取决于你的应用场景、成本预算和算力条件。我个人建议:如果预算充足、对实时性要求不高,端到端联合优化是未来方向;如果要在现有硬件上快速提升性能,多帧超分是最稳妥的选择。