当前位置: 首页 > news >正文

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
解码同步双方独立重建,确保一致性
优势提升编码效率,降低比特率
挑战复杂度高,需平衡速度与收益
http://www.cnnetsun.cn/news/24217.html

相关文章:

  • 智慧农业的“数据大脑”:无人机搭载近红外光谱+ChatGPT分析,实现作物长势精准监测、病虫害早期预警、变量施肥智能决策的完整闭环系统
  • Kimi-VL-A3B-Thinking-2506:多模态大模型实现“思考效率与视觉能力“双重突破
  • 81、使用 Linux 进行云计算的详细指南
  • 前端如何通过JavaScript实现视频文件的分段上传?
  • 深度解析:智谱GLM-4.5如何用3大创新突破AGI技术瓶颈
  • TinyMCE4粘贴ppt幻灯片转存网页兼容
  • 23、Linux Web服务器综合指南
  • 3小时精通Halo仪表盘组件开发:从零到一的完整实战手册
  • Kali Linux 高级Web渗透测试工具全解析:构建专业级安全评估能力
  • 湖泊数据在科研与工程中的应用
  • RDP Wrapper配置库完全使用指南:解锁Windows远程桌面全部潜能
  • 官宣!TDengine 授权麦斯时代为钻石分销商,共筑工业数据新生态
  • 亿欧 2025 AI 软件创新产品 Top10 出炉,时序数据库TDengine 入选
  • 百度网盘秒传技术全解析:从零基础到效率达人的终极指南
  • OpenAI Whisper Large-V3-Turbo本地部署终极指南:从零搭建到性能调优
  • 75、深入探索GDB调试器:命令详解与实用技巧
  • 7 款热门文件加密软件深度测评!2025 加密工具最佳选择
  • Linux环境下的C语言编程(四十)
  • 矮冬瓜矮砧密植:水肥一体化系统铺设全攻略
  • P11960 [GESP202503 五级] 平均分配
  • PINNs-Torch:实现9倍加速的物理信息神经网络框架
  • GPT-5.2发布!这些超强新功能,快来看看它是怎么让你的工作更轻松的!
  • ChromePass:三分钟掌握Chrome密码提取的终极指南
  • 【方法】IP66.net:如何查到自己的IP?
  • 南京大学开源SteadyDancer模型实现完美动作迁移,首帧保留彻底解决身份漂移难题
  • 机器视觉相机参数
  • springboot基于vue的观赏鱼养殖互助商城系统的设计与实现_1vlf0334
  • 压差式静力水准仪液体选择必看!从充液到排气:沉降监测系统安装全流程避雷手册
  • 构建可靠数据库连接:人大金仓JDBC驱动8.6.0实战指南
  • 嵌入式零基础到就业年班