news 2026/4/18 11:43:45

ECM CCP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ECM CCP

Cross-Component Prediction (CCP) Merge Mode Candidate Selection

即:跨分量预测(色度基于亮度残差建模)的合并模式候选列表构建机制


一、背景:什么是 CCP?

✅ 跨分量预测(Cross-Component Prediction, CCP)

CCP 是一种Chroma from Luma的预测技术,用于提高色度(Cb/Cr)编码效率。其核心思想是:

利用已重建的亮度分量(Y)的残差信息来预测当前块的色度分量(Cb/Cr)值

这与传统的线性模型不同,CCP 在 VTM 中通常表示为:
predchroma(x,y)=base_pred(x,y)+β⋅rec_residual_luma(x′,y′) \text{pred}_{chroma}(x,y) = \text{base\_pred}(x,y) + \beta \cdot \text{rec\_residual\_luma}(x',y')predchroma(x,y)=base_pred(x,y)+βrec_residual_luma(x,y)
其中:

  • base_pred可以是平面、DC 或角度帧内预测;
  • β\betaβ是缩放系数(由训练或 RDO 决定);
  • rec_res_luma是邻近区域亮度残差样本;
  • (x′,y′)(x', y')(x,y)是映射位置(可能偏移);

该方法能有效捕捉亮度残差与色度之间的相关性,尤其适用于纹理丰富区域。


二、为什么需要 “CCP Merge” 模式?

为了降低信号开销和复杂度,VVC 引入了Merge 模式—— 不传输运动矢量或模式参数,而是复用历史/空间候选。

类似地,在色度预测中也定义了:

CCP Merge Mode:不重新估计 β 系数和参考位置,而是从一个预构建的CCP Merge Candidate List中选择已有参数组合。

这样可以避免每次进行 RDO 判决时重复计算所有可能的 β 和模板配置,从而节省编码时间并减少语法比特。


三、ECM-19.0 中的 CCP Merge Candidate 如何生成?

虽然 ECM-19.0 并非最终标准化文档,但根据 JVET 提案系列(如 JVET-Z0058, JVET-AC0067, JVET-AD0047 等)以及 VTM-18~VTM-20 的发展路径,我们可以总结出ECM-19.0 中典型的 CCP Merge 候选选择流程如下


🔷 步骤 1:确定是否启用 CCP Merge

仅当以下条件满足时,才考虑添加 CCP Merge 候选:

  • 当前编码单元(CU)位于Chroma 分量上
  • CU 尺寸 ≥ 4×4
  • 当前 slice 类型支持帧内预测(I-slice 或 I-part in P/B)
  • 启用了 CCP 工具(通过 SPS/PPS 标志位控制)

🔷 步骤 2:构建初始候选列表(Initial Candidate List)

候选来源共五类,依次尝试插入,去重后保留最多5 个候选

候选类型 1:空间相邻块(Spatial Neighbors)

检查左侧(A1)、上方(B1)两个位置的相邻 PU 是否使用过有效的 CCP 参数

+----------------+ | B1 | +--------+-------+ | | | | B0 | Current +--------+-------+ | A1 | +--------+
  • 若 A1 或 B1 使用了 CCP 模式且有有效 β 和模板参数,则提取其:
    • 缩放因子 β
    • 残差采样模式(如 3×3 centered around top-left luma)
    • 映射偏移(offset_x, offset_y)
  • 添加为候选项

注:若两者都存在,优先顺序为 B1 → A1

候选类型 2:非直接空间邻居(Non-direct Spatial)

某些提案扩展至 B2(上方右)、A2(左下),前提是它们属于同一 CTU 行且已解码。

候选类型 3:时间同位块(Temporal Co-located Block)

查找 co-located picture 中对应位置的 PU 是否使用过 CCP 模式。

  • 如果是,提取其 β 和模板设置
  • 应用时间运动补偿后的映射调整(如 scale with temporal MV)
候选类型 4:零参数默认候选(Zero-offset Default Candidate)

即使没有历史可用,也可强制加入一个“保守”的默认候选:

  • β = 0 (即退化为普通帧内预测)
  • offset = (0,0)
  • template size = 1×1

作用:保证列表非空,便于熵编码统一处理

候选类型 5:历史缓存(History-based Buffer)

维护一个先进先出(FIFO)的历史缓冲区,存储最近成功使用的CCP 参数组

  • 最多保存 N 个条目(例如 3~5 个)
  • 每次成功编码一个使用 CCP 的 CU 后,将其参数归一化后压入缓存
  • 避免重复参数(去重)

🔷 步骤 3:去重与排序(Deduplication & Reordering)

对上述收集到的所有候选执行:

1.去重规则

比较每对候选的以下字段是否完全相同:

  • β 值(量化后整数形式)
  • 模板形状 ID(如 3×3 centered vs 2×2 top-left)
  • 偏移量 (dx, dy)

若相同,则跳过后续插入。

2.重排序依据

按优先级重新排列候选顺序,常用策略包括:

优先级规则
1st空间相邻(A1/B1)
2nd时间候选
3rd历史缓存
4th默认零参数

目的:将最可能匹配当前块特性的候选放在前面,有利于快速收敛。


🔷 步骤 4:截断至最大长度

最终保留最多maxNumCcpMergeCandidates(典型值为 5)个候选。

可通过 SPS 层信令配置此数量。


🔷 步骤 5:语法传输与解码端重建

在码流中:

  • 不显式传输候选列表内容
  • 解码器按相同规则自主重建候选列表
  • 编码器只需发送一个索引ccp_merge_idx
  • 解码器查表获取对应的 β 和模板参数

实现了解码一致性,无需额外传输参数


四、示例:CCP Merge 候选列表构建过程(简化版)

假设当前色度 CU 条件如下:

来源是否有效参数
左侧 A1β=2, template=3×3 center, offset=(-1,-1)
上方 B1β=2, same template & offset → 与 A1 相同
时间块β=3, template=2×2 TL, offset=(-2,-2)
历史缓存有两个条目[β=1], [β=4]
默认强制添加β=0

→ 构建流程:

  1. 加入 A1:(β=2, ...)✔️
  2. 尝试加入 B1 → 与 A1 完全相同 → 跳过 ❌
  3. 加入时间候选:(β=3, ...)✔️
  4. 加入历史缓存:
    • 第一项(β=1)→ 新增 ✔️
    • 第二项(β=4)→ 新增 ✔️
  5. 加入默认候选(β=0)→ ✔️
  6. 去重完成,共 5 个候选 → 截断(已达上限)

最终候选列表(顺序):

IndexTypeβTemplateOffset
0Spatial (A1)23×3 center(-1,-1)
1Temporal32×2 TL(-2,-2)
2History1default(0,0)
3History4default(0,0)
4Default0

编码器通过 RDO 测试每个候选,选择成本最低者,并传输ccp_merge_idx


五、性能影响与优化方向(来自 JVET 报告)

方面数据/结论
BD-rate gain相比无 CCP:可达 -1.5% ~ -3.0%(色度平均)
编码时间增加+3% ~ +8%,主要来自 RDO 测试多个候选
内存需求需缓存历史参数、亮度残差图
改进方向
- 快速模式决策:提前终止低效候选测试
- 自适应候选数量(纹理简单则减少)
- 使用 CNN 预测最佳 β 初始值

六、相关提案参考(真实 JVET 文档)

提案编号内容概要
JVET-Z0058提出基于亮度残差的色度预测增强方法
JVET-AC0067引入 CCP Merge 模式及候选列表结构
JVET-AD0047优化历史缓存管理与去重机制
JVET-AE0082快速算法:基于 SATD 成本剔除无效候选

总结

项目内容
名称CCP Merge Prediction Candidates
用途复用历史跨分量预测参数,减少信号开销
候选来源空间相邻、时间同位、历史缓存、默认项
构建流程收集 → 去重 → 排序 → 截断
最大数量通常为 5
传输方式仅传索引ccp_merge_idx
解码同步双方独立重建,确保一致性
优势提升编码效率,降低比特率
挑战复杂度高,需平衡速度与收益
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:58:31

联想拯救者BIOS解锁实战:3步激活隐藏的高级硬件控制功能

联想拯救者BIOS解锁实战:3步激活隐藏的高级硬件控制功能 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors…

作者头像 李华
网站建设 2026/4/18 3:44:31

java计算机毕业设计人文学子考研交流平台 基于SpringBoot的文科生考研资讯与互动社区 面向人文社科考生的院校信息共享与经验交流系统

计算机毕业设计人文学子考研交流平台91mn99(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。“择校、找资料、问经验”三件套曾是人文考研人离不开的三大灵魂拷问:院校…

作者头像 李华
网站建设 2026/4/18 3:46:42

76、利用SELinux增强Linux安全性

利用SELinux增强Linux安全性 1. 查看进程安全上下文 要查看进程的安全上下文,需要在 ps 命令中使用 -Z 选项。以下示例使用 ps -eZ 命令,然后通过管道将结果传递给 grep ,以仅搜索运行 bash shell的进程: # ps -eZ | grep bash unconfined_u:unconfined_r:un…

作者头像 李华
网站建设 2026/4/18 3:53:09

80、Linux 安全技术与云计算入门

Linux 安全技术与云计算入门 1. Linux 网络安全基础 在网络环境中,保障 Linux 服务器的安全至关重要,因为大多数恶意攻击都源于网络,尤其是互联网。以下是保障 Linux 服务器安全的一些基础步骤和技术: - 识别并移除不必要的网络服务 :通过确定并移除不必要的网络服务…

作者头像 李华
网站建设 2026/4/18 3:42:56

代码随想录 图论理论基础

一、图的基本概念: 1.图的概念:二维坐标中,两点可以连成线,多个点连成的线就构成了图。当然,图也可以就一个节点,甚至没有节点(空图)。 2.图的种类:整体上,图一般分为有向图和无向图。 (1)有向图:图中的边是有方向的。 (2)无向图:图中的边是没有方向的。 (…

作者头像 李华
网站建设 2026/4/18 3:43:38

.NET拼音处理终极指南:Pinyin4NET完整功能解析与实战应用

.NET拼音处理终极指南:Pinyin4NET完整功能解析与实战应用 【免费下载链接】Pinyin4NET c# 拼音汉字/姓相互转换工具库 (这只是镜像仓库,源仓库见 https://gitee.com/hyjiacan/Pinyin4Net) 项目地址: https://gitcode.com/gh_mirrors/pi/Pinyin4NET …

作者头像 李华