H266/VVC 量化编码中 JCCR 技术

色度联合编码 JCCR

  1. VVC 支持色度分量联合编码(Joint Coding of Chroma Residual,JCCR), 两个色度残差联合编码。通过 TU 的标志位 tu_joint_cbcr_residual_flag 指定该工 具,并通过 CBF 来隐式传输所选的模式。仅当 TU 的至少一个色度分量的 CBF 为 1 时才需要传输 tu_joint_cbcr_residual_flag 标志位。在 PPS 和 slice header 中, JCCR 模式的 QP offset 和普通模式的色度 QP offset 不同。JCCR 有三个子模式, 当 TU 激活子模式 2 时,则在量化过程中色度 QP offset 和亮度生成的色度 QP 相加,当 TU 激活子模式 1 或 3 时,则色度 QP 的生成方式和普通的 Cb,Cr 相同。

  2. JCCR模式通过使用单一的联合残差块来描述同一变换单元中 Cb(蓝色分量)和Cr(红色分量)块的残差,从而可能提高编码效率。这种模式利用了Cb和Cr残差在实际过程中往往呈现一定的关系,通过编码一个联合残差信号,然后在解码端根据这个联合残差信号推导出原始的Cb和Cr残差信号,以此来提高编码效率。说白了,JCCR 技术实际就是对 Cb、Cr 的残差进行加权平均。

  3. 色度残差的重建过程如下表所示,tu_cbf_cb 和 tu_cbf_cr 分别是 Cb 和 Cr 的 CBF,mode 是子模式其可以通过 Cb 和 Cr 的 CBF 计算得到不需要在码流中传输。 且只对 I slice 才支持全部三种子模式,对于 P 和 B slice 只支持子模式 2。且对于 P 和 B slice 只 有 当 Cb 和 Cr 的 CBF 都等于 1 时才需要传输 tu_joint_cbcr_residual_flag 标志位。CSign 是符号位,在 slice header 中传输。 resJointC[ ][ ]是码流中传输的色度的残差值
    在这里插入图片描述

  4. resJointC[ ][ ]的生成过程如下:

    • 当激活子模式 2 时,
      在这里插入图片描述

    • 否则,当激活子模式 1 时,
      在这里插入图片描述

    • 否则,当激活子模式 3 时,
      在这里插入图片描述

  5. JCCR 和色度块的变换跳过模式(TS)可以配合使用。如果一个色度分量选择 DCT-II(或 TS)作为最优变换,另一个色度分量的变换系数全为 0,或者两个色 度分量都选择 DCT-II(或 TS)作为最优变换,则 JCCR 编码中仅考虑 DCT-II(或 TS)。如果一个色度分量选择 DCT-II 另一个选择 TS,则 JCCR 编码中需要考虑 DCT-II 和 TS。

  6. 在 2019 年 1 月的 JVET-M0305[CE7-related: Joint coding of chrominance residuals] 提案中介绍了 JCCR 工具原理和实验收益。
    在这里插入图片描述在这里插入图片描述

  7. 在 2020 年 1 月的 JVET-Q2002[Algorithm description for Versatile Video Coding and Test Model 8 (VTM 8)] 提案中对 JCCR 技术进行了总结描述。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  8. 在 VVenC 编码器中 TrQuant.cpp 文件中fwdTransformCbCr 函数通过 Cb、Cr 的残差来计算resJointC 的值。

template<int signedMode> std::pair<int64_t,int64_t> fwdTransformCbCr( const PelBuf& resCb, const PelBuf& resCr, PelBuf& resC1, PelBuf& resC2 )
{const Pel*  cb  = resCb.buf;const Pel*  cr  = resCr.buf;Pel*        c1  = resC1.buf;Pel*        c2  = resC2.buf;int64_t     d1  = 0;int64_t     d2  = 0;for( SizeType y = 0; y < resCb.height; y++, cb += resCb.stride, cr += resCr.stride, c1 += resC1.stride, c2 += resC2.stride ){for( SizeType x = 0; x < resCb.width; x++ ){int cbx = cb[x], crx = cr[x];if      ( signedMode ==  1 ){c1[x] = Pel( ( 4*cbx + 2*crx ) / 5 );d1   += square( cbx - c1[x] ) + square( crx - (c1[x]>>1) );}else if ( signedMode == -1 ){c1[x] = Pel( ( 4*cbx - 2*crx ) / 5 );d1   += square( cbx - c1[x] ) + square( crx - (-c1[x]>>1) );}else if ( signedMode ==  2 ){c1[x] = Pel( ( cbx + crx ) / 2 );d1   += square( cbx - c1[x] ) + square( crx - c1[x] );}else if ( signedMode == -2 ){c1[x] = Pel( ( cbx - crx ) / 2 );d1   += square( cbx - c1[x] ) + square( crx + c1[x] );}else if ( signedMode ==  3 ){c2[x] = Pel( ( 4*crx + 2*cbx ) / 5 );d1   += square( cbx - (c2[x]>>1) ) + square( crx - c2[x] );}else if ( signedMode == -3 ){c2[x] = Pel( ( 4*crx - 2*cbx ) / 5 );d1   += square( cbx - (-c2[x]>>1) ) + square( crx - c2[x] );}else{d1   += square( cbx );d2   += square( crx );}}}return std::make_pair(d1,d2);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生时代,如何构建高效分布式监控系统

文章目录 一.监控现状二.Thanos原理分析SidecarQuerierStoreCompactor 三.Sidecar or ReceiverThanos Receiver工作原理 四.分布式运维架构 一.监控现状 Prometheus是CNCF基金会管理的一个开源监控项目&#xff0c;由于其良好的架构设计和完善的生态&#xff0c;迅速成为了监控…

DAY3,模拟终端

题目 实现一个终端的功能&#xff0c;注意需要带有cd功能 思路 如何 C语言执行shell命令&#xff1f; 使用进程替换exec函数&#xff1b;&#xff1b;使用system函数。 如何 切换工作目录&#xff1f; 使用chdir函数切换工作目录。 其…

一键视频转文字/音频转文字,浏览器右键提取B站视频文案,不限时长免费无限次可用

上篇文章阿虚分享了自己的「短视频」笔记方案 短视频文件小&#xff0c;易存储&#xff0c;所以阿虚建议是直接将原视频插入到笔记当中 而长视频文件大&#xff0c;很难像短视频一样操作。阿虚之前的建议是提取重要部分视频转长截图&#xff0c;或者视频转GIF 但上述方案仔细…

【C++】详细讲解继承(上)

C面向对象的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态。现在我们就介绍一下继承。 1.继承的概念及定义 1.1 继承的概念 继承机制是⾯向对象程序设计使代码可以 复⽤ 的最重要的⼿段。我们前面接触到的都是 函数 层次的复用&#xff0c;遇到过的 类 层次的复…

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器&#xff0c;支持轨迹控制与相机镜头控制 学习前言相关地址汇总源码下载地址HF测试链接MS测试链接 测试效果Image to VideoText to Video轨迹控制镜头控制 EasyAnimate详解技术储备Qwen2 VLStable Diffusion …

1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储

文章目录 前言一、数据采集步骤及python库使用版本1. python库使用版本2. 数据采集步骤 二、数据采集网页分析1. 分析采集的字段和URL1.1 分析要爬取的数据字段1.2 分析每部电影的URL1.2 分析每页的URL 2. 字段元素标签定位 三、数据采集代码实现1. 爬取1905电影网分类信息2. 爬…

【25】Word:林涵-科普文章❗

目录 题目​ NO1.2.3 NO4.5.6 NO7.8 NO9.10 NO11.12 不连续选择&#xff1a;按住ctrl按键&#xff0c;不连续选择连续选择&#xff1a;按住shift按键&#xff0c;选择第一个&#xff0c;选择最后一个。中间部分全部被选择 题目 NO1.2.3 布局→纸张方向&#xff1a;横向…

P6周:VGG-16算法-Pytorch实现人脸识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境&#xff1a;Python 3.8.12 编译器&#xff1a;jupyter notebook 深度学习环境&#xff1a;torch 1.12.0cu113 一、前期准备 1.设置GPU im…

【Rust自学】14.4. 发布crate到crates.io

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 14.4.1. 创建并设置crates.io账号 在发布任何 crate 之前&#xff0c;你需要在 crates.io并…

数据结构——实验八·学生管理系统

嗨~~欢迎来到Tubishu的博客&#x1f338;如果你也是一名在校大学生&#xff0c;正在寻找各种编程资源&#xff0c;那么你就来对地方啦&#x1f31f; Tubishu是一名计算机本科生&#xff0c;会不定期整理和分享学习中的优质资源&#xff0c;希望能为你的编程之路添砖加瓦⭐&…

IBM湖仓一体与向量数据库:访问MinIO控制台(Accessing the MinIO console)

_1、从密钥中复制S3凭证并保存 &#xff08;Copy the S3 credentials from the secret and save it &#xff09; oc extract secret/ibm-lh-config-secret -n ${PROJECT_CPD_INST_OPERANDS} --to- --keysenv.properties | grep -E "LH_S3_ACCESS_KEY|LH_S3_SECRET_KEY&q…

Ragas-RAG能力评测

Ragas是一个框架&#xff0c;它可以帮助你从不同的方面评估你的问答&#xff08;QA&#xff09;流程。它为你提供了一些指标来评估你的问答系统的不同方面&#xff0c;具体包括&#xff1a; 评估检索&#xff08;context&#xff09;的指标&#xff1a;提供了上下文相关性&…

基于ESP32-IDF驱动GPIO输出控制LED

基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED 3.1 LED电路 可以看到&#x…

使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】

文章目录 关于前情提要FFmpeg是什么使用脚本运行FFmpeg首先&#xff0c;下载ffmpeg.exe然后在视频相同位置写一个bat脚本运行压缩脚本 关于 个人博客&#xff0c;里面偶尔更新&#xff0c;最近比较忙。发一些总结的帖子和思考。 江湖有缘相见&#x1f91d;。如果读者想和我交…

Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件

Dialog的使用&#xff1a; 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…

自然语言处理(NLP)-总览图学习

文章目录 自然语言处理&#xff08;NLP&#xff09;-总览图学习1.一张总览图的学习1. 语音学&#xff08;Phonology&#xff09;2. 形态学&#xff08;Morphology&#xff09;3. 句法学&#xff08;Syntax&#xff09;4. 语义学&#xff08;Semantics&#xff09;5. 推理&#…

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练&#xff08;归纳&#xff09;和预测&#xff08;演绎&#xff09; 归纳: 从具体案例中抽象一般规律…

谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计

技术背景 我们在做RTMP|RTSP播放器的时候&#xff0c;有这样的技术诉求&#xff0c;有的摄像头出来的数据是有角度偏差的&#xff0c;比如“装倒了”&#xff0c;或者&#xff0c;图像存在上下或者左右反转&#xff0c;这时候&#xff0c;就需要播放器能做响应的处理&#xff…

论文阅读--Qwen22.5技术报告

Qwen2 1 引言 所有模型都是在超过7 trillion token&#xff08;7万亿&#xff09;的高质量、大规模数据集上预训练的 2 Tokenizer & Model 2.1 Tokenizer 沿用Qwen&#xff08;Bai等人&#xff0c;2023a&#xff09;的做法&#xff0c;我们采用了基于字节级字节对编码…

FPGA中场战事

2023年10月3日,英特尔宣布由桑德拉里维拉(Sandra Rivera)担任“分拆”后独立运营的可编程事业部首席执行官。 从数据中心和人工智能(DCAI)部门总经理,转身为执掌该业务的CEO,对她取得像AMD掌门人苏姿丰博士类似的成功,无疑抱以厚望。 十年前,英特尔花费167亿美元真金白银…