ECC
在机器人导航、自动驾驶感知、扩展现实(XR)和点云压缩(V-PCC)中,语义地图扮演着关键角色。它不像普通照片那样记录每个像素的颜色,而是用离散的类别标签标记每个区域——道路、行人、车辆、建筑。这种结构化的表示天然具有两个特性:有限的离散值集合,以及区域之间锐利的边界。
一个自然的疑问是:既然语义地图的结构如此特殊,为什么我们还在用通用图像编码器(如 FLIF、PNG+gzip、HEVC-SCC)来压缩它们?通用编码器处理的是像素网格上的连续信号,而语义地图的"本质"其实是轮廓——区域之间的分界线。用像素编码器处理轮廓,就像用文字描述一幅画:能表达,但不够直接。
链码(chain coding)正是轮廓的天然表示。自 Freeman 在 1961 年首次提出以来 #freeman1961encoding,链码用方向符号序列描述轮廓,已经在二值图像压缩中证明了其高效性。但现代语义地图是多值的——一个场景中可能有几十个不同的语义区域,它们之间存在大量共享边界。传统链码方法没有显式利用这一结构特性。
本文 #Yang-et-al.-2026 提出了一种全新的语义地图无损压缩框架,核心思想可以概括为三句话:
实验结果表明,该方法在三个语义地图数据集上比当前最优方法 CC-SMC #yang2024cc 平均降低 18% 码率,编码和解码速度分别最高提升 98% 和 50%。
语义地图 vs. 自然图像:本质差异
自然图像的像素值在空间上连续变化,相邻像素之间高度相关。通用图像编码器(如 JPEG、FLIF)正是利用这种空间相关性来压缩数据。但语义地图完全不同——它的像素值是离散的类别标签,区域内部完全相同,区域之间突然跳变。
这意味着通用编码器在语义地图上浪费了大量计算:它们试图建模区域内部的"相关性"(实际上所有像素值完全相同),却无法有效处理区域边界的"突变"(这正是语义地图信息最密集的地方)。
经典链码的局限:从二值到多值的鸿沟
链码方法从 Freeman F4/F8 到 VCC(顶点链码 #bribiesca1999new)再到 3OT(三正交链码 #cruz2005compressing),一直在优化单条轮廓的表示效率。但它们都是为二值图像设计的——只编码一条轮廓,不考虑多个区域之间的关系。
CC-SMC 的两个根本局限
Yang 等人在 2020 年和 2024 年提出的 CC-SMC 框架 #yang2020chain #yang2024cc 首次将链码扩展到多值语义地图。它的策略是:四叉树分区 + 块内链码。这个方案比通用编码器好很多,但引入了两个根本性问题:
局限一:块划分截断链码序列
四叉树把语义地图切成块,每条轮廓可能被多个块截断。截断后的链码序列变短,上下文建模的效果大幅下降——就像把一篇长文拆成碎片后再做语言模型,上下文信息丢失了。
局限二:分区信令开销
每个块是否需要链码编码、块的大小和位置,都需要额外的比特来传递。对于高分辨率的 occupancy map(如 V-PCC 中的全分辨率图),这些细碎结构的分区信令开销不可忽视。
本文的洞察很简单:既然语义地图的本质是轮廓,为什么不直接编码轮廓,完全绕过块划分? 这就是 ECC 框架的出发点。
ECC 的核心直觉
传统链码(如 F8)用 8 个方向符号编码轮廓,每个符号代表一步移动。如果一条轮廓在某个方向上延伸了 10 个像素,F8 需要 10 个符号。
ECC 的想法很直接:如果轮廓在某个方向上持续延伸,为什么不直接用一个符号表示"走两步"或"走三步"?就像在高速公路上,F8 要求你每经过一个出口都报一次"继续直行",而 ECC 允许你说"直行 3 个出口"。
36 符号集:三层 F8 扩展
ECC 通过将 F8 的 8 方向扩展到三层,总共得到 36 个符号:
扩展链码(ECC)符号集
ECC 在 F8 的 8 个基本方向上,向外扩展两层(步长 2 和步长 3),形成三层方向布局:
其中 Layer₁ 是 F8 的 8 个基本方向(步长 1),Layer₂ 和 Layer₃ 分别对应步长 2 和步长 3 的扩展方向。
符号选择策略:优先选择长距离符号。例如符号 24(步长 3 方向)代替序列 [0, 8](两个步长 1 符号)。
RECC:相对链码降维
36 个符号的字母表太大了——每符号需要的比特数会增加。ECC 的解决方案是:只在第一个轮廓方向用 ECC 直接编码,后续方向用二阶差分表示。 这就是 RECC(Relative Extended Chain Code)——ECC 的链码差分版本:相对扩展链码(RECC)
RECC 将 ECC 符号通过旋转映射转换为相对表示,共 27 个符号:
其中 \(s_i\) 是当前 ECC 符号,\(\theta(s_{i-1})\) 是前一个符号的旋转角度 \(\in \{0^\circ, +90^\circ, \pm180^\circ, -90^\circ\}\)。
关键设计:第三象限为空(轮廓不会直接反向),实际有效符号更少。
上下文自适应熵编码
RECC 符号序列用基于 Markov 模型的上下文自适应算术编码压缩:
- 一阶上下文:前一个 RECC 符号
- 二阶上下文:通过自引用(self-reference)获得——将旋转角度应用到当前 ECC 符号本身
- 上下文表总数:最大 27 × 9 = 243 个
3OT Fallback:小符号集的优势
虽然 ECC 在规则轮廓上效率很高,但对于不规则、碎片化的轮廓,3OT 的小符号集(仅 3 个符号)配合四阶上下文模型反而更高效。
本文保留了 3OT 作为 fallback 模式:对每个 blob,分别计算 ECC 和 3OT 的总比特数,选择更优者。消融实验揭示了有趣的模式选择分布:
| 数据集 | ECC 选择率 | 3OT 选择率 | 轮廓特征 |
|---|---|---|---|
| CASIA-B | 64.9% | 35.1% | 大而规则的轮廓 |
| DAVIS 480p | 35.2% | 64.8% | 不规则/碎片化轮廓 |
| Cityscapes | 53.9% | 46.1% | 混合型轮廓 |
这个结果说明:没有一种链码能通吃所有场景。ECC + 3OT 的自适应组合才是最优策略。
Skip-coding:共享边界的免费午餐
语义地图中,相邻区域共享边界。当编码内部 blob 时,与已编码 blob 的共享边界可以直接推断,无需重复编码。
类比:画地图时,两个省份的边界只需画一次——第二个省份只需说"这条边界和 XX 省共用"。
Skip-coding 机制
完全跳过(Full Skip):共享边界延伸到轮廓末尾时,设置 complete_skip_mode = 1,仅需 1 bit,剩余轮廓全部在解码端推断。
局部跳过(Partial Skip):共享边界在轮廓中间结束时,设置 complete_skip_mode = 0 + run-length 值(跳过符号数),之后恢复正常链码编码。
Blob 扫描策略
编码的第一步是识别所有语义区域(blob)。blob 是具有相同标签的连续连通像素组,分为两类:
- 边界 blob:触及帧边界的区域。从左上角开始,沿帧边界逆时针扫描。
- 内部 blob:完全被其他 blob 包围的区域。光栅扫描(raster scan)识别。
扫描过程中同时识别共享边界段——当检测到相邻像素标签变化时,对应的边界段归属于当前 blob 的轮廓。
完整编码流程
论文给出的系统总体框架如下图所示。输入语义地图经 Blob 扫描与注册后,按边界/内部 blob 分类分别做轮廓编码,在 ECC(36 符号 → RECC 27 符号)与 3OT(3 符号 + 四阶上下文)两种模式间按比特数择优,再经 Skip-coding 检测共享边界,最后由上下文自适应算术编码输出无损比特流。
下面是用 Mermaid 重绘的同一流程,便于在线交互查看:
flowchart TD
A["输入语义地图 X"] --> B["Blob 扫描与注册"]
B --> C["边界 blob / 内部 blob 分类"]
C --> D["对每个 blob 轮廓编码"]
D --> E{"ECC vs 3OT 模式选择"}
E -->|"比特数更少"| F["ECC: 36 符号 → RECC 27 符号"]
E -->|"比特数更少"| G["3OT: 3 符号 + 四阶上下文"]
F --> H["Skip-coding 检测共享边界"]
G --> H
H --> I["上下文自适应算术编码"]
I --> J["输出比特流"]
编码实例
下图展示了完整的 ECC 编码过程,包含边界 blob 和内部 blob 的处理步骤:
比特流结构
比特流包含两类信息:
| 信息类型 | 内容 | 用途 |
|---|---|---|
| 高层元数据 | 地图尺寸、blob 数量、标签信息、语义值映射、起始位置 | 解码端重建框架 |
| 链码数据 | 模式标志 + 链码符号序列 + skip 信令 | 逐 blob 轮廓重建 |
解码过程是自包含的——比特流中包含重建所需的全部信息。
解码步骤详解
- 解析高层元数据:获取边界/内部 blob 总数 \(N_k\),维护计数器 \(i_k\) 追踪已解码 blob 数
- 逐 blob 解码:
- 解析起始位置 + 标签索引
- 解析链码模式标志(ECC 或 3OT)
- 根据模式解析链码符号序列,重建轮廓
- 处理 skip-coding 信令,推断共享边界
- 应用标签信息:将语义标签填充到重建的轮廓区域内
- 循环直到完成:当 \(i_k = N_k\) 时,所有 blob 重建完成
实验配置
| 配置项 | 详情 | 状态 |
|---|---|---|
| 数据集 | CASIA-B (8443 maps), DAVIS 480p (6268 maps), Cityscapes (2975 maps) | 论文披露 |
| Baseline | JBIG1, FLIF, SCM-7.0 (HEVC-SCC), CC-SMC | 论文披露 |
| 硬件环境 | — | 未披露 |
| Occupancy Map | MPEG V-PCC CTC 5 序列 × 3 分辨率 × 32 帧 | 论文披露 |
语义地图主实验
| 数据集 | 指标 | JBIG1 | FLIF | SCM-7.0 | CC-SMC | ECC (Ours) | vs CC-SMC |
|---|---|---|---|---|---|---|---|
| CASIA-B 320×240 | 码率 (Bytes) | 187.4 | 136.7 | 272.9 | 75.8 | 65.2 | -13.98% |
| 编码时间 (s) | 0.0223 | 0.0472 | 0.3261 | 0.0157 | 0.0117 | — | |
| 解码时间 (s) | 0.0025 | 0.0257 | 0.0109 | 0.0013 | 0.0013 | — | |
| DAVIS 480p 848×480 | 码率 (Bytes) | 620.7 | 618.7 | 997.5 | 459.1 | 385.4 | -16.05% |
| 编码时间 (s) | 0.0245 | 0.1948 | 1.2831 | 0.0557 | 0.0392 | — | |
| 解码时间 (s) | 0.0275 | 0.0341 | 0.0542 | 0.0106 | 0.0038 | — | |
| Cityscapes 2048×1024 | 码率 (Bytes) | 6829.8 | 4882.8 | 6314.9 | 3549.4 | 2708.4 | -23.69% |
| 编码时间 (s) | 0.0701 | 0.9461 | 6.6576 | 0.2003 | 0.2302 | — | |
| 解码时间 (s) | 0.1120 | 0.1175 | 0.1472 | 0.0671 | 0.0996 | — |
运行时性能分析
在码率最优的同时,ECC 的运行时表现也值得关注:
- 低分辨率场景(CASIA-B、DAVIS):编码/解码时间均为最优或接近最优
- 高分辨率场景(Cityscapes):编码时间略高于 CC-SMC(0.2302 vs 0.2003),解码时间也更高(0.0996 vs 0.0671)
这是因为 ECC 采用全局扫描策略,计算复杂度随 blob 数量近似线性增长。Cityscapes 平均每帧 123.97 个 blob,全局操作成为瓶颈。作者指出并行化可能缓解这一问题 #Yang-et-al.-2026。
消融实验:每个组件贡献多少?
| 数据集 | 完整框架 | 仅 3OT | 仅 ECC | 仅 ECC + 始终 RECC |
|---|---|---|---|---|
| CASIA-B | 65.2 | 65.8 | 65.4 | 67.3 |
| DAVIS | 385.4 | 390.2 | 398.4 | 402.1 |
| Cityscapes | 2708.4 | 2791.3 | 2751.0 | 2758.1 |
三个关键发现:
- ECC + 3OT 自适应 > 单独任何一种:完整框架在所有数据集上最优
- 选择性禁用稀有符号很重要:始终启用 RECC 第二象限符号(12-20)会增加码率——CASIA-B 从 65.4 增至 67.3,DAVIS 从 398.4 增至 402.1
- 数据集特性决定模式偏好:规则轮廓(CASIA-B)偏好 ECC,碎片化轮廓(DAVIS)偏好 3OT
Occupancy Map 扩展评估
本文还将方法扩展到 V-PCC 点云压缩中的 occupancy map。在 5 个 MPEG V-PCC 测试序列 × 3 种分辨率下评估:
| 序列 | CC-SMC (Bytes) | ECC (Bytes) | 胜者 |
|---|---|---|---|
| Loot (全分辨率) | 175,829 | 148,095 | ECC (-15.8%) |
| Solider (全分辨率) | 338,007 | 296,004 | ECC (-12.4%) |
| LD (全分辨率) | 211,998 | 197,092 | ECC (-7.0%) |
| Queen (全分辨率) | 478,501 | 664,455 | CC-SMC |
Queen 序列异常
Queen 序列包含大量碎片化 blob(见下图),CC-SMC 的块分区策略对此更有效。这再次印证了"没有一种链码通吃所有场景"的结论。
技术定位
本文在链码压缩发展史上的位置可以这样理解:
| 年代 | 方法 | 核心思想 | 局限 |
|---|---|---|---|
| 1961 | Freeman F4/F8 | 链码概念诞生 | 仅二值图像 |
| 1999 | VCC | 顶点链码,减少符号 | 仅二值图像 |
| 2005 | 3OT | 三正交链码,3 符号集 | 仅二值图像 |
| 2020/2024 | CC-SMC | 链码 + 四叉树,扩展到多值 | 块划分截断上下文 |
| 2026 | ECC (本文) | 无分区 + 扩展链码 + skip | 碎片化场景受限 |
从 Freeman 到 ECC,链码的发展经历了"绝对方向 → 相对方向 → 块分区 → 回归纯轮廓"的螺旋上升。本文的关键突破不在于发明了新的链码符号,而在于消除了块划分,让链码回归其最自然的表示形式——完整的轮廓。
局限性与开放问题
- 高分辨率全局扫描瓶颈:Cityscapes (2048×1024) 上运行时高于 CC-SMC。并行化是自然方向,但共享边界推断引入 blob 间依赖,需要仔细设计
- 碎片化 blob 场景:Queen 序列上不如 CC-SMC。或许可以考虑自适应策略——在碎片化区域回退到块分区
- 仅无损压缩:本文只考虑无损场景。有损语义地图压缩(如允许少量边界误差)是一个有趣的方向
- 未与学习型方法对比:深度语义压缩方法(如 DSSLIC #akbari2019dsslic)在有损场景下表现优异,但无损场景下的对比尚未展开
可操作的启发
- 轮廓优先:对于具有锐利边界的离散信号(语义地图、分割掩码、occupancy map),轮廓表示可能比像素网格更本质
- 自适应模式选择:ECC + 3OT 的自适应策略说明,与其设计一个"万能"编码器,不如让编码器根据数据特性自适应选择
- 共享边界是免费信息:Skip-coding 的核心洞察——相邻区域的共享边界不需要重复编码——可以推广到其他多值离散信号压缩场景
- MPEG 标准化前景:InterDigital 是 MPEG 标准化的重要参与者,本文方法可能影响 MPEG FCM(Feature Coding for Machines)标准中的语义地图编码
参考来源
- Yang, R. et al. (2026). Context Adaptive Extended Chain Coding for Semantic Map Compression. arXiv:2603.03073
- Freeman, H. (1961). On the encoding of arbitrary geometric configurations. IRE Trans. Electronic Computers.
- Freeman, H. (1974). Computer processing of line-drawing images. ACM Computing Surveys.
- Bribiesca, E. (1999). A new chain code. Pattern Recognition, 32(2), 235-251.
- Sánchez-Cruz, H. & Rodríguez-Dagnino, R.M. (2005). Compressing bi-level images by means of a 3-bit chain code. SPIE Opt. Eng.
- Yang, R. et al. (2020). Chain code-based occupancy map coding for video-based point cloud compression. VCIP.
- Yang, R. et al. (2024). CC-SMC: Chain coding-based segmentation map lossless compression. J. Vis. Commun. Image Represent.
- Sneyers, J. & Wuille, P. (2016). FLIF: Free lossless image format based on MANIAC compression. ICIP.
- Akbari, M. et al. (2019). DSSLIC: Deep semantic segmentation-based layered image compression. ICASSP.
- Xu, J. et al. (2015). Overview of the emerging HEVC screen content coding extension. IEEE TCSVT.
- Žalik, B. et al. (2021). Lossless chain code compression with an improved Binary Adaptive Sequential Coding of zero-runs. JVCIR.