在嵌入式视觉系统中,近传感器压缩已成为降低带宽与功耗的关键设计手段。与针对 Bayer 原始数据的专用压缩方案不同,通用图像压缩流水线需要处理更广泛的数据格式与压缩场景。本文聚焦于硬件流水线架构设计,对比 ASIC 与 FPGA 实现的 latency 与 throughput 权衡,并给出可落地的工程参数阈值。

近传感器压缩的硬件流水线架构

近传感器压缩的核心目标是在数据离开图像传感器之前完成编码,从而显著减少后续传输与存储的开销。一个典型的硬件流水线包含以下关键阶段:输入缓冲与对齐、色彩预处理(如需要)、变换编码、量化、熵编码以及流式输出接口。在 ASIC 实现中,这些阶段通常以固定功能的专用模块顺序实现,每个模块在设计时针对特定的数据位宽与时钟频率进行优化。FPGA 实现则倾向于采用可编程的流水线结构,允许在同一硬件上实现多种压缩算法或快速迭代更新。

从数据流的角度看,压缩流水线可以分为单阶段流水线与多阶段并行流水线两类。单阶段流水线结构简单,适用于延迟敏感且压缩比要求不高的场景;多阶段并行流水线则通过在不同阶段之间插入流水线寄存器,实现更高的吞吐量但引入更大的总体延迟。现代嵌入式视觉系统通常采用后者,以支持 1080p@60fps 乃至 4K 分辨率的高帧率采集。

ASIC 实现的工程特性

ASIC(专用集成电路)在近传感器压缩场景中提供了最优的能效比与最紧凑的硅面积。由于所有逻辑在流片前已经固定,ASIC 可以采用高度优化的电路结构,将每个模块的延迟控制在数十个纳秒级别。以一个基于 8×8 块 DCT 的图像压缩 ASIC 为例,从输入一个块的数据到输出压缩后的码流,端到端延迟通常可以做到 100 纳秒至 500 纳秒之间,这一延迟量级对于实时视觉处理几乎是透明的。

在吞吐量方面,ASIC 可以轻松实现每像素 1 至 2 个时钟周期的处理速度。假设时钟频率为 200MHz,一个针对 10 位像素优化的压缩引擎可以处理 200Mpixels/s 的数据速率,对应 1080p@120fps 或 4K@30fps 的实时压缩需求。功耗方面,单一压缩模块的动态功耗通常在 10mW 至 50mW 范围内,远低于将原始数据通过 MIPI CSI-2 接口传输到外部处理器所产生的功耗。

ASIC 的主要局限性在于缺乏灵活性。一旦流片完成,压缩算法、量化参数以及码表都难以修改。这对于需要适配多种传感器规格或支持演进中压缩标准的场景构成挑战。此外,ASIC 的开发周期通常为 12 至 18 个月,流片成本在数百万美元量级,仅在大规模量产的经济规模下才具有合理性。

FPGA 实现的工程特性

FPGA(现场可编程门阵列)提供了完全相反的工程特性:高度的灵活性以换取略逊的能效比与更大的硅面积。在近传感器压缩场景中,FPGA 的核心价值在于快速原型验证与算法迭代。一个基于 Xilinx UltraScale+ 系列的压缩流水线可以在数周内完成算法更新与硬件部署,而 ASIC 则需要重新流片。

从延迟角度看,FPGA 流水线由于需要容纳更多的组合逻辑与路由资源,单阶段延迟通常高于 ASIC 同等功能模块。典型的 FPGA 实现中,每一帧从输入到第一个压缩比特输出的延迟在 1 微秒至 5 微秒之间。虽然这比 ASIC 高出一个数量级,但对于大多数嵌入式视觉应用仍在可接受范围内。

吞吐量方面,现代高性能 FPGA 可以通过并行化实现与 ASIC 相当的性能。例如,在一块 Intel Stratix 10 FPGA 上,通过实例化 8 个并行的 Huffman 编码器,可以实现每时钟周期处理 8 个符号的吞吐量,在 500MHz 时钟下达到 4Gpixels/s 的处理能力,这一数字足以覆盖 8K 分辨率的高帧率采集。

功耗是 FPGA 的主要短板。同一功能在 FPGA 上实现的动态功耗通常是 ASIC 的 3 至 10 倍。以 1080p@60fps 压缩为例,FPGA 实现的典型功耗在 200mW 至 500mW 之间,而 ASIC 可以做到 30mW 至 80mW。对于电池供电的边缘设备,这一差异可能直接决定产品的续航时间。

Huffman 编码的硬件化要点

熵编码是图像压缩流水线中计算密集度最高的阶段之一,也是硬件实现中最需要精心设计的模块。Huffman 编码通过为出现概率高的符号分配短码字、为出现概率低的符号分配长码字,实现统计意义上的无损压缩。在硬件实现中,静态 Huffman 编码器与动态 Huffman 编码器代表了两种不同的工程取舍。

静态 Huffman 编码器预先计算好码表并存储在 ROM 或 RAM 中,编码过程只需进行简单的查表操作。这种实现的延迟极为可预测,通常可以做到每符号 1 至 2 个时钟周期,非常适合流式处理。其主要缺点是码表固定,无法适应不同图像的统计特性变化,导致压缩比略低于最优。工程实践中,静态码表通常根据典型图像的统计分布进行离线优化,对于自然图像通常可以获得 1.8:1 至 2.2:1 的熵编码增益。

动态 Huffman 编码器则在编码过程中实时更新码表,以适应输入数据的统计变化。这种方式可以获得更高的压缩比,但需要额外的逻辑来维护频率计数并重新构建 Huffman 树。在硬件中,动态编码器的实现复杂度显著提高,延迟也更高,通常需要 4 至 8 个时钟周期处理一个符号。对于实时性要求极高的近传感器场景,动态 Huffman 编码器往往不是首选。

工程实践中,一个折中方案是采用分层码表切换:预设若干个针对不同场景优化的静态码表(如平坦区域、纹理区域、边缘区域),根据预处理阶段的分析结果动态选择合适的码表。这种方式在硬件复杂度与压缩性能之间取得了良好平衡。

ROI 区域压缩的硬件设计

在许多嵌入式视觉应用中,只有图像的特定区域包含感兴趣的信息。例如,在车载系统中,道路标线与交通标志通常位于图像的下半部分;在工业检测中,缺陷可能只出现在特定的感兴趣区域。ROI(Region of Interest)压缩技术通过对不同区域应用不同的压缩强度,在有限带宽下最大化有效信息含量。

硬件实现 ROI 压缩有两种主要架构。第一种是双路径架构:ROI 区域与背景区域分别经过独立的编码路径。ROI 路径使用较高的位深与较低的量化步长,以保留细节;背景路径则使用激进的量化以降低码率。两个路径的输出最终复用为统一的码流,并在头部包含 ROI 坐标的元数据。这种架构的优势是实现简单,ROI 与非 ROI 的处理完全解耦;缺点是需要两套完整的编码硬件,资源消耗翻倍。

第二种架构是单路径动态量化架构。在这种设计中,输入数据首先经过一个快速的 ROI 判定模块,生成 1 比特 / 像素的 ROI 掩码。后续的量化模块根据掩码动态调整量化步长:ROI 区域内使用精细量化(量化步长 QP 约为 8 至 16),背景区域使用粗糙量化(QP 约为 32 至 64)。这种架构只需一套编码硬件,但控制逻辑更为复杂,且需要确保量化参数的切换不会在块边界引入明显的视觉伪影。

从工程参数角度看,ROI 压缩的典型配置如下:ROI 区域占比通常为 20% 至 40%,ROI 区域压缩比约为 2:1 至 3:1,背景区域压缩比可达 8:1 至 15:1。总体码率可以在保持 ROI 区域画质基本不变的前提下,降低 50% 至 70%。在 1080p@60fps 的场景下,未经压缩的原始码率约为 1.5Gbps,采用 ROI 压缩后可以降至 300Mbps 至 500Mbps 区间,这使得中等速率的 MIPI CSI-2 通道即可满足传输需求。

工程参数阈值与选型建议

基于上述分析,针对嵌入式视觉系统的近传感器压缩硬件选型,可以给出以下工程参数阈值作为设计参考。对于 latency 敏感的应用(如自动驾驶的即时感知、工业机器人的闭环控制),端到端压缩延迟应控制在 10 微秒以内,此时 ASIC 是唯一可行的选择。对于 throughput 需求极高的场景(如 8K 视频采集、多传感器同步采集),FPGA 的并行化能力可以更容易达到目标,而 ASIC 则需要更高的时钟频率或更多的并行实例。

功耗预算方面,如果系统整体功耗预算在 100mW 以内,ASIC 是必然选择;如果功耗预算在 500mW 以上且需要快速算法迭代,FPGA 更为合适。开发周期方面,ASIC 适合 2 年以上的产品生命周期与百万量级以上的出货量;FPGA 则适合验证阶段、小批量产品或需要频繁算法更新的场景。

综合来看,一个合理的近传感器压缩系统设计路径是:首先在 FPGA 平台上验证算法与架构,确立关键性能指标;验证通过后,根据出货量与功耗要求决定是否转向 ASIC。对于大多数边缘视觉应用,FPGA 实现可以在 3 个月内完成硬件部署,而性能差距在可接受范围内。


资料来源:本文技术参数参考 FPGA 加速计算机视觉的相关研究(agiliway.com)、并行无损压缩的 FPGA 实现(PMC)、静态 Huffman 编码硬件设计(Orkg)以及 ROI 区域压缩的 VLSI 架构研究(IEEE)。