面向视频会议场景的 H.266/VVC 码率控制算法研究

文章目录

      • 面向视频会议场景的 H.266/VVC 码率控制算法研究
        • 个人总结
        • 摘要
          • 为什么要码率控制
          • 码率控制的关键
          • 会议类视频码率控制研究背景
          • 视频会议系统研究现状
          • 目前基于 R-λ模型的码率控制算法的问题
          • 文章主要两大优化算法
          • 优化算法1:基于视频内容相关特征值的码率控制算法
            • 帧层目标比特分配
            • LCU层目标比特分配
            • 算法流程图
            • 算法实验测试结果
          • 优化算法2:基于感兴趣区域的会议类视频码率控制算法

面向视频会议场景的 H.266/VVC 码率控制算法研究

个人总结

论文标题

面向视频会议场景的 H.266/VVC 码率控制算法研究

发表期刊

硕士电子期刊

作者

余东航

发表日期

2022 -5-25

阅读日期

2023.8.3

评分 Score

类型思路批注
研究背景本文的主要内容是什么?目前研究情况是什么?随着人们对高清视频画质的需求越来越高,现有的视频压缩技术需要进一步优化才能适应不断增加的应用需求。VVC的码率控制模块所分层次与 HEVC 码率控制模块相同,而具有实际研究价值的主要为帧层和 LCU 层,因此近年来诸多专家对于视频编码码率控制板块的研究主要围绕着帧层和 LCU 层两部分进行
方法和性质面向什么样的任务?作者如何采集数据?这项研究是在何时何地进行的? 他提出的模型或者方法是什么样的呢?测试对象:选取 VTM 通用测试环境中推荐的视频序列,各序列根据分辨率的不同进行了分类。算法选取 B 类测试序列 MarketPlace、RitualDance、Cactus 和 BQTerrace;C 类测试序列 BasketballDrill、BQMall、RaceHorses 和PartyScene ; D 类 测 试 序 列 BQSquare 、 BlowingBubbles 、 BasketballPass 和RaceHorses;以及 E 类测试序列 FourPeople、Johnny 和 KristenAndSara。
研究结果模型效果获得了怎样的提升?(效率还是准确率或者是其他)算法所有序列的总平均码率的相对误差值为 0.434%,码率控制精度优于自适应设置下的 0.435%。算法下测试序列的平均峰值信噪比相比于 VTM10.0 码率控制算法提升了 0.028dB。算法最终的平均BDBR 相比于 VTM10.0 的 BDBR 平均减少了 0.86%
创新点这个论文的主要贡献或者创新点是什么?他的创新是基于之前的某个模型或者理论?引入灰度共生矩阵,计算出反映编码帧纹理复杂度的相关特征值,用于帧层图像权重的调整;在计算LCU 权重时,通过引入最优拉格朗日乘子对权重进行重新计算,提高权重分配的准确性。
结论作者从中学到了什么?
研究展望对未来的研究有什么暗示或建议?H.266/VVC 的码率控制算法,只是从 GOP 层、帧层和 LCU 层入手考虑了相关的算法研究,没有考虑到更下一层的码率控制中比特分配的相关性。因此,未来的工作中可以进一步考虑 CU 的划分与码率控制的比特权重分配之间的关系,构建出更小尺寸的编码块层作为码率控制的新的单元层。
重要性为什么这项研究很重要?码率控制技术使得视频在编码过程中能够自适应地调节编码参数值,在保证编码质量的前提下,尽最大可能地提高通信信道的利用率。码率控制在视频编码以及视频通信应用中具有重要意义。
想法和问题你有什么想法和问题?
本文优秀表达能复用的要点是什么?

摘要

视频编码是提高传输效率,降低数据存储压力的一种有效措施。新一代视频编码标准 H.266/VVC(Versatile Video Coding)在各编码模块中引入新的压缩技术,极大提高了视频编码效率,可广泛应用在高清和超高清电视、远程医疗、视频会议等应用中。2019 年年底新冠疫情爆发后,视频会议成为企事业单位远程会议,学校远程教学的主要途径。面对大量的会议视频用户,不同的会议场景,如何确保视频的通信质量,尤其是感兴趣区域(Region Of Interest, ROI)的编码质量,成为目前视频编码领域的研究重点。码率控制技术既能产生匹配传输带宽的码流,还可通过比特分配调节保证主要编码区域的质量,是视频通信系统不可或缺的重要模块。由于 VVC 码率控制算法没有充分考虑编码帧的内容特性和最大编码单元(Largest Coding Unit, LCU)的时空域复杂度,导致比特分配存在误差,码率控制算法性能有进一步优化的空间。本文针对 VVC 码率控制算法在帧层与 LCU 层比特分配过程中存在的问题,对码率控制算法进行了优化。在此基础上,针对视频会议场景中 ROI 进行基于最大编码单元的目标比特调整,提高了视频编码的主观质量。

本文针对 H.266/VVC 码率控制算法没有综合考虑会议类视频编码帧的实际纹理特征的问题,提出了一种基于视频内容相关特征值的码率控制算法。首先,通过引入灰度共生矩阵,计算出反映编码帧纹理复杂度的相关特征值,用于帧层图像权重的调整;然后,基于 R-λ模型对 LCU 层的λ参数进行重新计算,调整权重分配大小,并在编码过程中根据实际消耗比特不断更新参数值,提高 LCU 层比特分配的精度。经测试,本文算法在低延时(Low Delay-P, LDP)配置下,与自适应权重分配算法相比,在更接近目标码率情况下,率失真(Rate-Distortion, R-D)性能提升了 0.86%,改善了视频序列的主客观质量。

为了提高会议类视频 ROI 的编码质量,本文首先基于 LCU 对会议类视频 ROI进行检测,并以计算出的显著度值进行标记,然后使用 Sobel 梯度检测算子和MSE(Mean Square Error)比特检测算法分别检测 LCU 的纹理复杂度和编码代价,并对复杂度因子和编码代价进行联合加权,构建出一种新的权重因子,基于新的重庆邮电大学硕士学位论文 摘要II权重因子对待编码 LCU 比特权重进行调整分配。同时,通过 LCU 的显著度值进行目标比特分配调整,确保 ROI 的编码质量,达到优化会议视频场景的主客观质量的目的。实验结果表明,在 LDP 配置下本文所提算法相比于自适应码率控制算法的码率控制相对误差平均降低了 0.011%,率失真性能提升了 1.87%,改善了会议类视频的编码性能。

为什么要码率控制

在视频编码过程中,如果采用固定编码参数值对视频序列进行编码,那么编码器输出的码流会随着每一帧图像包含的信息量以及内容复杂度的不同而产生波动。如果输出码流过大,可能会超过发送端缓存区的容量,导致视频传输时延过高甚至丢帧的现象发生;如果输出码流的码率过小,则网络通信信道得不到充分的利用,浪费传输资源,解码端所得到的视频质量较差,在解码视频中会出现图像模糊化以及方块效应等现象。因此有必要对视频编码过程中的码率进行控制,使得编码后码流的比特数与传输信道的带宽上限匹配,同时也要兼顾传输视频的质量,使编码后的图像失真尽可能的小。

码率控制的关键

码率控制技术的关键点是通过目标比特分配的方式来获取量化参数(Quantization Parameter, QP)的值,进而调节输出码率的大小,达到控制码率的目的。

会议类视频码率控制研究背景

对于会议类特定场景的视频,加入码率控制技术不仅可以保证视频输出码流与网络带宽相适应的同时,还能够尽可能地保证视频的失真度最小,提高重建视频的质量。考虑到会议类视频的场景性质,人们在接受视频信息时会重点关注感兴趣区域。在进行码率控制环节之前先将感兴趣区域和非感兴趣区域进行区分,在码率控制环节中重点保证会议类视频感兴趣区域部分的编码质量,就能够最大程度地平衡视频的输出码流与主客观质量,因此面向会议类视频的 H.266/VVC 码率控制算法具有重要的研究价值

视频会议系统研究现状

在会议应用场景中,会议视频常常存在着大量固定的背景区域,且背景区域的纹理复杂度不确定。对于此类视频,人们通常关注的焦点往往是人脸,或讲课 PPT 等屏幕内容,因此前景区域大多为人脸区域与屏幕内容区域。传统的视频编码方式忽略了人眼的视觉特性,单纯地针对整个视频编码单元的纹理复杂度进行资源分配和码率控制,对于背景区域较复杂的视频序列,这种编码方式会导致主观质量的下降。因此,针对会议类视频编码,如果引入 ROI 编码方式可提高视频编码质量

目前基于 R-λ模型的码率控制算法的问题

首先,在帧层码率控制算法研究中,VVC 的码率控制算法虽然考虑了编码实际结果的失真值,并以 R-λ模型为推导基准修正参数更新公式,提高了参数更新的准确性。但在视频编码过程中,VVC 码率控制算法未充分考虑一个图像组中编码帧的纹理特性,因此在帧层的编码率失真性能和视觉体验还有待提高。

其次是 LCU 层的比特权重分配。VVC 根据当前帧的总目标比特以及模型参数进行 LCU 层的权重分配,由于没有考虑到同一帧中 LCU 层图像的空域纹理特性,同一位置时域上的关系以及实际编码消耗比特与目标比特之间的误差关系,所以 LCU 层的比特分配机制仍有改进的可能性。

再者,码率控制结合 ROI 的算法具有更进一步提高视频编码质量的拓展性,结合 ROI 的码率控制算法可以在主观质量上有着明显的提升,对于 ROI 进行重点的比特权重的分配,而对于非 ROI 的比特分配不作重点的权重考虑,最终可以实现即便在客观指标略微提升甚至下降的情况下,也能达到良好的视觉体验。

文章主要两大优化算法
  1. 会议视频的帧层比特分配及 R-λ模型优化目前帧层码率控制算法相关研究已有很多。本文针对会议视频帧层的码率控制,提出了一种基于视频内容相关特征值的码率控制算法。为了解决原平台码率控制算法没有对待编码帧进行预处理分析的问题,本文通过引入灰度共生矩阵,计算出反映编码帧纹理复杂度的相关特征值,用于帧层图像权重的调整;在计算LCU 权重时,通过引入最优拉格朗日乘子对权重进行重新计算,提高权重分配的准确性。该算法实现了在相同码率控制配置情况下,提高了码率控制精度和视频序列的主观和客观质量。
  2. 最大编码单元层 ROI 码率控制优化算法面向会议类视频,本文采用图像边缘检测算子计算 LCU 层像素的复杂度因子,并根据统计前一编码帧每个 LCU 的均方误差和实际消耗的编码比特数,计算出待编码 LCU 的编码代价。以待编码 LCU 的复杂度因子和编码代价作为会议类视频中编码块纹理复杂度描述信息,经联合加权到 LCU 层比特分配模型中,构建一种LCU 层目标比特的分配方式。基于 LCU 计算出会议类视频的显著度值并标记出ROI,并针对 ROI 显著度值进行目标比特的分配调整,提高会议视频的编码性能以及 ROI 的编码性能。

H.266/VVC 编码器的整体工作流程

首先,编码器将获取的源视频图像进行块划分,然后权衡编码块在帧内/帧间编码条件下的率失真性能,选择合适的划分模式,将划分好的块送至帧内/帧间预测模块进行预测编码。如果进行帧内预测编码,则通过相邻已编码像素点预测编码区域的像素值,或通过帧内运动估计搜索当前编码帧中与当前编码区域相似的区域,将搜索到的区域进行运动变换后得到当前编码区域;如果进行帧间预测编码,则采用运动估计在参考帧中搜索与当前编码区域相似的编码区域,将搜索到的区域进行运动补偿后得到当前编码区域的预测像素值。接下来通过原始值和预测值进行计算得到预测残差值,为了使预测残差值能量分布更加集中,H.266/VVC 对预测残差值进行 DCT 变换,再对经过变换之后的矩阵系数进行量化处理,使得低频系数变小而大多数的高频系数为0,从而大大地压缩了需要传输的数据量。最终量化后的数据在经过熵编码后形成视频码流的形式被传输到解码端。H.266/VVC 解码器接收码流之后按照一定顺序对视频帧进行重建。

优化算法1:基于视频内容相关特征值的码率控制算法
帧层目标比特分配

灰度共生矩阵

对于纹理变化缓慢的图像,其灰度共生矩阵对角线上的数值较大;而对于纹理变化较快的图像,其灰度共生矩阵对角线上的数值较小,对角线两侧的值较大。

image-20230804110808109

以(1,1)点为例,GLCM(1,1)值为1说明只有一对灰度为1的像素水平相邻。GLCM(1,2)值为2,是因为有两对灰度为1和2的像素水平相邻

相邻一般取四个方位,水平、竖直、两个斜对角

LCU层目标比特分配

image-20230804190959020
优化的是估计拉格朗日乘子

算法流程图

算法实验测试结果

本章算法所有序列的总平均码率的相对误差值为 0.434%,码率控制精度优于自适应设置下的 0.435%。本章算法下测试序列的平均峰值信噪比相比于 VTM10.0 码率控制算法提升了 0.028dB。本章所提算法最终的平均BDBR 相比于 VTM10.0 的 BDBR 平均减少了 0.86%,

优化算法2:基于感兴趣区域的会议类视频码率控制算法

由于码率控制算法中目标比特分配的最小单元为 LCU,因此本章首先以 LCU为基本单元将会议场景视频的感兴趣区域划分为人脸区域和屏幕内容区域,通过采用联合特征的方式计算感兴趣区域的显著度值。然后使用 Sobel 梯度检测算子和均方误差比特检测算法分别检测纹理复杂度区域和编码代价区域,并对图像的复杂度区域因子和编码代价区域因子进行联合加权,构建出一种新的权重因子,并对每个 LCU 的目标比特进行合理调整和准确分配。最后,结合感兴趣区域的显著度值调整 LCU 的比特分配,达到优化感兴趣区域编码质量的目的。

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

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

相关文章

Python开发环境Spyder介绍

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境, 提供高级的代码编辑、交互测试、调试等特性,支持包括 Windows、Linux 和 OS X 系统。 👇 &#x1f44…

14-3_Qt 5.9 C++开发指南_QUdpSocket实现 UDP 通信_UDP 单播和广播

文章目录 1.UDP通信概述2. UDP 单播和广播2.1 UDP 通信实例程序功能2.2 主窗口类定义和构造函数2.3 UDP通信的实现2.4 源码2.4.1 可视化UI设计2.4.2 mainwindow.h2.4.3 mainwindow.cpp 1.UDP通信概述 UDP(User Datagram Protocol,用户数据报协议)是轻量的、不可靠的…

基于边缘无线协同感知的低功耗物联网LPIOT技术:赋能智慧园区方案以及数字工厂领域

回到2000年左右,物联网的底层技术支撑还是“ZigBee”,虽然当时ZigBee的终端功耗指标其实也并不庞大,但是,“拓扑复杂导致工程实施难度大”、“网络规模小导致的整体效率低下”都成为限制其发展的主要因素。 LPWAN,新一…

Android Tencent Shadow 插件接入指南

Android Tencent Shadow 插件接入指南 插件化简述一、clone 仓库二、编译运行官方demo三、发布Shadow到我们本地仓库3.1、安装Nexus 3.x版本3.2、修改发布配置3.3、发布仓库3.4、引用仓库包 四、编写我们自己的代码4.1、新建项目导入maven等共同配置4.1.1、导入buildScript4.1.…

51单片机学习--LED点阵屏显示图形动画

为了通用性考虑,需要把用到的几个口用特殊位声明来重新命名,由于RCLK在头文件中已有定义,所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 sbit RCK P3^5; //RCLK sbit SCK P3^6; //SRCLK sbit SER P3^4;接下来编写74HC595的输…

dflow工作流使用1——架构和基本概念

对于容器技术、工作流等概念完全不懂的情况下理解dflow的工作方式会很吃力,这里记录一下个人理解。 dflow涉及的基本概念 工作流的概念很好理解,即某个项目可以分为多个步骤,每个步骤可以实现独立运行,只保留输入输出接口&#x…

【方法】Excel表格如何拆分数据?

当需要把多个数据逐个填到Excel单元格的时候,我们可以利用Excel的数据拆分功能,可以节省不少时间。 小编以下面的数据为例,看看如何进行数据拆分。 首先,要选择数字所在的单元格,然后依次点击菜单栏中的“数据”>…

Spring中的事务

一、为什么需要事务? 事务定义 将一组操作封装成一个执行单元(封装到一起),要么全部成功,要么全部失败。 为什么要用事务? 比如转账分为两个操作: 第一步操作: A 账户 -100 元…

jsqlparser 安装和使用

jsqlparser是sql语句解析工具&#xff0c;可以解析sql并分析语法。 安装 <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.3</version> </dependency>使用 String s …

【数据结构】快速排序

快速排序是一种高效的排序算法&#xff0c;其基本思想是分治法。它将一个大问题分解成若干个小问题进行解决&#xff0c;最后将这些解合并得到最终结果。 快速排序的主要思路如下&#xff1a; 选择一个基准元素&#xff1a;从待排序的数组中选择一个元素作为基准&#xff08;…

Spring指定bean在哪个应用加载

1.背景 某项目,spring架构,有2个不同的WebAppApplication入口,大部分service类共用,小部分类有区别,只需要在一个应用中加载,不需要在另一个应用中加载. 2.实现代码 自定义限制注解 package mis.shared.annotation;import java.lang.annotation.ElementType; import java.lan…

springboot+maven插件调用mybatis generator自动生成对应的mybatis.xml文件和java类

mybatis最繁琐的事就是sql语句和实体类&#xff0c;sql语句写在java文件里很难看&#xff0c;字段多的表一开始写感觉阻力很大&#xff0c;没有耐心&#xff0c;自动生成便成了最称心的做法。自动生成xml文件&#xff0c;dao接口&#xff0c;实体类&#xff0c;虽一直感觉不太优…

skywalking全链路追踪

文章目录 一、介绍二、全链路追踪1. 测试1 - 正常请求2. 测试2 - 异常请求 三、过滤非业务请求链路1. 链路忽略插件2. 配置3. 测试 一、介绍 在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构…

router 跳转打开新窗口

let url router.resolve({name: screen, })?.hrefwindow.open(url, _black)注意&#xff1a;新窗口无法全屏 参考链接&#xff1a;https://stackoverflow.com/questions/29281986/run-a-website-in-fullscreen-mode/30970886#30970886

数据库索引失效的情况

1.对添加了索引的字段进行函数运算 2.如果是字符串类型的字段&#xff0c;如果不加单引号也会导致索引失效 3.如果最索引字段使用模糊查询&#xff0c;如果是头部模糊索引将失效&#xff0c;如果是尾部模糊索引则正常 4.如果使用or分割符&#xff0c;如果or前面的条件中的列有…

基于Yolov2深度学习网络的车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 卷积神经网络&#xff08;CNN&#xff09; 4.2. YOLOv2 网络 4.3. 实现过程 4.4. 应用领域 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心…

使用css和js给按钮添加微交互的几种方式

使用css和js给按钮添加微交互的几种方式 在现实世界中&#xff0c;当我们轻弹或按下某些东西时&#xff0c;它们会发出咔嗒声&#xff0c;例如电灯开关。有些东西会亮起或发出蜂鸣声&#xff0c;这些响应都是“微交互”&#xff0c;让我们知道我们何时成功完成了某件事。在本文…

【Winform学习笔记(五)】引用自定义控件库(dll文件)

引用自定义控件库dll文件 前言正文1、生成dll文件2、选择工具箱项3、选择需要导入的dll文件4、确定需要导入的控件5、导入及使用 前言 在本文中主要介绍 如何引用自定义控件库(dll文件)。 正文 1、生成dll文件 通过生成解决方案 或 重新生成解决方案 生成 dll 文件 生成的…

如何发布自己的npm包

发布一个简单的npm包 首先创建一个文件夹&#xff08;唯一的命名&#xff09;创建package.json包&#xff0c;输出npm init&#xff0c;一直回车就好。创建index.js文件&#xff0c;向外暴露方法。 将包上传或更新到 npm 执行登录命令&#xff1a;npm login 登录npm官网&…

Java中的SPI机制与扫描class原理

文章目录 前言ClassLoaderJAVA SPI机制Spring SPI机制示例原理 如何加载jar包里的class 前言 Java的SPI机制与Spring中的SPI机制是如何实现的&#xff1f; ClassLoader 这里涉及到了class Loader的机制&#xff0c;有些复杂&#xff0c;jdk中提供默认3个class Loader&#x…