2 wD丶路人

尚未进行身份认证

稳步前进

等级
TA的排名 3w+

H.266/VVC相关技术学习笔记26:VTM6.0版本中的DMVR(解码端运动矢量细化)

时隔一个多月,今天接着之前的JEM中的DMVR技术,详细讲讲在目前VTM6.0中的DMVR技术细节,并且对比一下两个版本中DMVR的不同之处,之所以今天又做了一篇,是因为本人老师最近让我详细了解一下DMVR技术,然后在看代码的过程中,并结合网上大神的博客,我才发现之前将JEM中的做法和VTM中的做法给搞混了,因此之前那篇博客实际上写的是JEM中的DMVR,但是标题写成了VTM6.0中的DMVR,这...

2019-10-06 23:13:26

H.266/VVC相关技术学习笔记25:H.264到H.265再到H.266中帧内角度预测模式发展历程以及各阶段技术细节详解

趁着国庆的时间,详细总结一下关于视频编码中的帧内预测,主要总结一下从H.264到H.265再到H.266中的帧内角度预测模式发展历程以及各个阶段角度模式的技术细节以及预测值计算流程。因为之前看了角度模式,也忘了记笔记,现在有点淡忘其中的细节了,趁这几天复习顺带总结一下。其中AVC和HEVC中角度预测的一大部分知识点是源于书的,但是感觉杨老师那本书中知识点脉络不是很清楚,而且其中的计算细节也没有讲清...

2019-10-04 16:47:01

H.266/VVC代码学习笔记17:VTM6.0中的xWeightedTriangleBlk()函数

在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式中对角线周围加权区域的自适应权重加权过程,链接为: H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将加权融合过程的函数xWeightedTriangleBlk()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可...

2019-10-01 17:48:24

H.266/VVC代码学习笔记16:VTM6.0中的getTriangleMergeCandidates()函数

在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式的单向Merge列表的构建,链接为:H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将这部分函数getTriangleMergeCandidates()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可以私信我。...

2019-10-01 17:44:51

H.266/VVC代码学习笔记15:VTM6.0中的xCheckRDCostMergeTriangle2Nx2N()函数

VTM6.0中xCheckRDCostMergeTriangle2Nx2N()函数是帧间预测技术中Merge模式中TPM技术的主函数的入口,想要了解TPM在代码中的实现,这个函数是啃定了,我只是大概看了一下该函数的大致上的流程以及其中三角Merge列表的构建、加权预测的大致过程。今天将所看的代码分享给大家,如过代码中有理解错的地方,还请指正,谢谢大家~还是老套路,用文字过一下该函数的大致流程,再...

2019-10-01 17:40:12

H.266/VVC相关技术学习笔记24:帧间预测中的TPM技术(Triangle partition Mode)

最近大概学习了一下Merge模式中另一个比较重要的技术:Triangle partition Mode(TPM)。在当前的VTM6.0的版本中,三角预测模式支持三角形的划分模式进行帧间预测。三角形预测模式只适用于8x8或者更大的编码块。三角预测模式是一种Merge模式,还有其他的Merge模式包括regular_Merge模式、MMVD_Merge模式、CIIP模式和Subblock_Merge(...

2019-10-01 17:30:25

H.266/VVC代码学习笔记14:xCheckRDCostMerge2Nx2N()函数

近期学习了一下xCheckRDCostMerge2Nx2N()函数,这是编码端帧间预测中非常重要的一个函数,该函数类似于帧内的xCheckRDCostIntra()函数,是对三种Merge模式:regular_Merge、CIIPMerge、MMVD_Merge;进行率失真代价的比较,选出代价最小也就是最优的一种Merge候选。大体上看明白了该函数的流程,简要的讲一下该函数的具体的流程,如下:1...

2019-10-01 13:49:34

H.266/VVC相关技术学习笔记23:VVC中成对平均候选技术(用于Merge列表的构建)

组合平均法是在Merge列表构建过程中的一种填充候选的方法。一、 在HEVC中,使用组合候选的方法作为Merge候选列表构建的一种备选方法,该方法比较复杂,对于一个BSlice中的PU而言,其中需要两个MV(一个前向、一个后向),因此在构建Merge候选列表的时候,每个候选需要提供两个MV,当需要用到组合候选法去填充Merge列表的时候,需要对前面已经填充进列表中的前4个候选中的前后向MV使用两...

2019-09-28 18:14:42

如何在Windows下跑视频编码代码(详细流程,入门必看)

关于初学视频编码的同学来讲,除了了解关于视频编码的一些理论的知识以及代码之外,还有一项必备的技能就是能够在各种操作系统之下,熟练的去跑视频编解码的代码,以及怎么配置相关的配置文件,如何将编解码之后的数据统计出来都是要求必须熟练掌握的。今天详细讲一下关于在本地Windows下如何顺利地编解码视频序列,并在正确测试的基础上在远程计算资源上对所有序列进行统一的测试。(AI的本地少帧测试+远程全帧编码)R...

2019-09-24 21:48:02

用移位表示除法的“四舍五入”思想

一般写工程量比较大的代码,如果有除法运算,则必须考虑到除法“/”和乘法"*"复杂度的问题,乘法除法复杂度都是比较高的,如果较多的使用这两个运算符无疑会导致算法复杂度上增加。因此就必须采用某种方法代替一般的乘除法。对于乘法除法,最简单的就是尽量使用移位操作代替乘除法。比如下面的例子:求3*4:3<<2;求6除以4:6>>2;移位操作符“>>”指右移,右移1...

2019-09-20 20:14:24

Linux下跑C++程序的操作笔记(跑视频编码程序)

今天记录一下自己实验室在“天河”计算机上跑程序的流程,怕以后忘记了。由于天河的操作是基于Linux的操作,所以一些指令比较生疏,如有不准确的地方还请指正。一、首先需要连接VPN①下载SSLVPN客户端,然后在“开始程序”中打开“Hillstone Secure Connect”填写服务器域名地址、端口、用户名、密码,点击“登录”即可。1.互联网客户端填写顺序如下:(这里个人账号涉及保密,就没...

2019-09-16 20:06:07

H.266/VVC代码学习笔记13:VTM6.0中的getInterMergeCandidates()函数

getInterMergeCandidates()函数是帧间预测技术中一个非常重要的函数,它是Merge列表的构造函数,所有的Merge模式都要先构造一个Merge候选列表,然后根据不同的模式在此regularMerge列表的基础上去延伸出相对应的Merge列表,就比如MMVD的Merge列表需要在常规Merge列表的基础上去选择两个初始MV,然后构造MMVDMerge。普通Merge列表的构造...

2019-09-16 18:50:30

H.266/VVC相关技术学习笔记22:VVC中TMVP技术(时域Merge列表的构建)

TMVP (时域运动矢量预测)技术,实际上就是Merge列表构造环节中时域候选列表的构造。关于时域候选列表的构造需要拿出来单独讲一下,因为这块不像空域候选构造那样直观易懂,时域的构造容易混淆。时域MV候选列表的构造是利用当前PU在邻近的已编码图像(同位图像)中对应位置的PU(即同位PU)的运动信息,同位图像一般取参考帧列表中离当前帧最近的那一帧,所以当前帧同位图像也有可能和当前帧的参考图像重合。...

2019-09-16 18:30:07

H.266/VVC相关技术学习笔记21:帧间预测中五种Merge模式的熵编码方式

今天主要详细讲一下帧间预测中五种Merge模式的熵编码方式,以及对应的VTM的代码中的编码方式的实现。现阶段VTM6.0中Merge模式大致上分为五种,分别是Subblock_Merge、MMVD_Merge、regular_Merge、CIIP、TPM。这五种Merge模式的编码方式大致上可以由如下树状图清晰的表示出来。左图是VTM5.0中的编码方式,右图是VTM6.0中的编码方式。上述的树状...

2019-09-09 18:15:48

H.266/VVC相关技术学习笔记20:帧间预测技术中的MMVD技术(Merge mode with MVD)

今天介绍一下帧间预测技术中的MMVD技术(Merge mode with MVD),也称带有运动矢量差的融合技术,MMVD也属于基于Merge的技术中的一种,在解码端的语法元素中也属于Merge分支。不过我觉着按严格来讲,MMVD并不属于Merge系列,而更像是inter系列,因为MMVD是要传送MVD到解码端,就这一点来看,MMVD就已经不在Merge范围之内了。下面我来讲解一下MMVD的技术细...

2019-09-03 21:44:03

H.266/VVC相关技术学习笔记19:帧间预测中的HMVP技术(基于历史的MV预测)

HMVP技术(基于历史的MV预测)也是帧间的一个小分支技术,但是贯穿于整个Merge技术中,我们知道在构造Merge候选列表的时候有多种构造方法,以便在列表长度不足的时候用备选的方法填充进新的候选,比如空域相邻候选,时域相邻候选,零矢量候选等等。HMVP也是一种构造候选MV的方式。HMVP技术就是构造一个长度为6的HMVP列表,里面存储的就是已经编码的块的运动信息(MV之类的),如下图所示 ,按...

2019-09-02 20:43:14

H.266/VVC相关技术学习笔记18:帧间预测中的AMVR技术(自适应运动适量精度)

AMVR技术也称为自适应运动适量精度技术,就是在以前的HEVC中,MVD的精度只有一个默认的1/4像素精度,但是由于要适应不同分辨率的图像,仅仅使用一个精度去表示MVD是远远不够的,因此在VTM6.0版本之前的VVC中,将像素精度扩展到了3种,{1/4,1,4},在这三种像素精度中去自适应地选择最合适的像素精度。AMVR技术之前只用在AMVP模式中,因为只有AMVP技术需要传送MVD到解码端,因此...

2019-09-02 19:08:12

H.266/VVC相关技术学习笔记17:VTM6.0中的DMVR(解码端运动矢量细化)技术前言:DMVR在JEM中的实现

今天讲解一下关于DMVR技术的技术细节,DMVR技术就是解码端运动矢量细化,意思就是在解码端才对运动矢量进行细化,在编码端的时候不用对运动矢量进行细化,而且编码端也不用传任何附加语法元素或者信息。DMVR也是帧间预测技术中非Merge系列的一个比较关键的技术。具体的过程如下图所示:第一步:在解码端得到双向MV后,在运动补偿阶段,对该块的两个MV形成的预测块进行加权,得到一个新的预测块,作为一个...

2019-08-26 12:20:55

H.266/VVC相关技术学习笔记16:VTM6.0中的CIIP技术(帧内帧间联合预测)

今天讲一下目前VTM6.0版本中的CIIP技术,CIIP即为帧内帧间联合预测技术,这属于Merge系列的一个分支。该技术需要先计算当前预测块的帧内预测值,即用Planar、DC、角度预测等传统的帧内预测模式去预测当前块的帧内预测值存储下来。然后再利用帧间的预测方式去预测当前块的帧间预测值,最后将帧内帧间的各自预测值通过某种加权方式加权得到最终当前块的预测值。该技术对亮度块和色度块都要做,不过在...

2019-08-26 11:27:31

H.266/VVC相关技术学习笔记15:视频编码中帧间预测技术的基本原理

今天讲一下关于视频编码中帧间预测技术一些基本原理,然后在后续的博客中更新最新的VTM6.0版本中的现存的帧间预测技术。首先帧间预测技术就是利用视频中邻近帧之间的时域相关性,使用之前已经预测编码好的重建图像作为参考帧,通过运动估计和运动补偿对当前的编码图像进行预测编码,从而去除视频中的时间冗余信息,大致如下图所示:Cur_Pic是通过运动矢量MV0和MV1指向的Ref_Pic0和Ref_Pic01...

2019-08-25 16:16:57

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。