- 博客(89)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 H.266/VVC代码学习笔记8:VTM5.0中帧内亮度预测函数——estIntraPredLumaQT()函数
今天对VTM5.0中的亮度帧内预测的入口函数estIntraPredLumaQT()进行详细的学习estIntraPredLumaQT中完成了亮度分量的帧内预测,其主要流程如下:一、初始化各种参数。二、为了减少最终RDcost的次数,降低编码端的复杂度,VVC的VTM5.0版本默认使用帧内快速搜索算法,主要经过两轮的SATD的粗选阶段和一轮RDcost的细选阶段1、第一轮的SATD粗选,首...
2019-06-02 16:12:42
3675
35
原创 H.266/VVC相关技术学习笔记26:VTM6.0版本中的DMVR(解码端运动矢量细化)
时隔一个多月,今天接着之前的JEM中的DMVR技术,详细讲讲在目前VTM6.0中的DMVR技术细节,并且对比一下两个版本中DMVR的不同之处,之所以今天又做了一篇,是因为本人老师最近让我详细了解一下DMVR技术,然后在看代码的过程中,并结合网上大神的博客,我才发现之前将JEM中的做法和VTM中的做法给搞混了,因此之前那篇博客实际上写的是JEM中的DMVR,但是标题写成了VTM6.0中的DMVR,这...
2019-11-07 17:13:49
1962
13
原创 H.266/VVC相关技术学习笔记25:H.264到H.265再到H.266中帧内角度预测模式发展历程以及各阶段技术细节详解
趁着国庆的时间,详细总结一下关于视频编码中的帧内预测,主要总结一下从H.264到H.265再到H.266中的帧内角度预测模式发展历程以及各个阶段角度模式的技术细节以及预测值计算流程。因为之前看了角度模式,也忘了记笔记,现在有点淡忘其中的细节了,趁这几天复习顺带总结一下。其中AVC和HEVC中角度预测的一大部分知识点是源于书的,但是感觉杨老师那本书中知识点脉络不是很清楚,而且其中的计算细节也没有讲清...
2019-10-04 16:48:03
2752
9
原创 H.266/VVC代码学习笔记17:VTM6.0中的xWeightedTriangleBlk()函数
在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式中对角线周围加权区域的自适应权重加权过程,链接为: H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将加权融合过程的函数xWeightedTriangleBlk()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可...
2019-10-01 17:48:58
896
原创 H.266/VVC代码学习笔记16:VTM6.0中的getTriangleMergeCandidates()函数
在之前的博客详细讲了一下目前VVC中的TPM技术的详细原理,其中涉及到了三角预测模式的单向Merge列表的构建,链接为:H.266/VVC相关技术学习笔记:帧间预测中的TPM技术(Triangle partition Mode) 本篇博客将这部分函数getTriangleMergeCandidates()的代码附上,本人加了基本的注释,如果有错误或者有疑问的地方可以私信我。...
2019-10-01 17:45:36
880
原创 H.266/VVC代码学习笔记15:VTM6.0中的xCheckRDCostMergeTriangle2Nx2N()函数
VTM6.0中xCheckRDCostMergeTriangle2Nx2N()函数是帧间预测技术中Merge模式中TPM技术的主函数的入口,想要了解TPM在代码中的实现,这个函数是啃定了,我只是大概看了一下该函数的大致上的流程以及其中三角Merge列表的构建、加权预测的大致过程。今天将所看的代码分享给大家,如过代码中有理解错的地方,还请指正,谢谢大家~还是老套路,用文字过一下该函数的大致流程,再...
2019-10-01 17:42:38
1212
3
原创 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:38:10
1289
原创 H.266/VVC代码学习笔记14:xCheckRDCostMerge2Nx2N()函数
近期学习了一下xCheckRDCostMerge2Nx2N()函数,这是编码端帧间预测中非常重要的一个函数,该函数类似于帧内的xCheckRDCostIntra()函数,是对三种Merge模式:regular_Merge、CIIPMerge、MMVD_Merge;进行率失真代价的比较,选出代价最小也就是最优的一种Merge候选。大体上看明白了该函数的流程,简要的讲一下该函数的具体的流程,如下:1...
2019-10-01 13:55:33
1636
原创 H.266/VVC相关技术学习笔记23:VVC中成对平均候选技术(用于Merge列表的构建)
组合平均法是在Merge列表构建过程中的一种填充候选的方法。一、 在HEVC中,使用组合候选的方法作为Merge候选列表构建的一种备选方法,该方法比较复杂,对于一个BSlice中的PU而言,其中需要两个MV(一个前向、一个后向),因此在构建Merge候选列表的时候,每个候选需要提供两个MV,当需要用到组合候选法去填充Merge列表的时候,需要对前面已经填充进列表中的前4个候选中的前后向MV使用两...
2019-09-28 18:18:37
1044
原创 如何在Windows下跑视频编码代码(详细流程,入门必看)
关于初学视频编码的同学来讲,除了了解关于视频编码的一些理论的知识以及代码之外,还有一项必备的技能就是能够在各种操作系统之下,熟练的去跑视频编解码的代码,以及怎么配置相关的配置文件,如何将编解码之后的数据统计出来都是要求必须熟练掌握的。今天详细讲一下关于在本地Windows下如何顺利地编解码视频序列,并在正确测试的基础上在远程计算资源上对所有序列进行统一的测试。(AI的本地少帧测试+远程全帧编码)R...
2019-09-24 21:49:23
4855
17
原创 用移位表示除法的“四舍五入”思想
一般写工程量比较大的代码,如果有除法运算,则必须考虑到除法“/”和乘法"*"复杂度的问题,乘法除法复杂度都是比较高的,如果较多的使用这两个运算符无疑会导致算法复杂度上增加。因此就必须采用某种方法代替一般的乘除法。对于乘法除法,最简单的就是尽量使用移位操作代替乘除法。比如下面的例子:求3*4:3<<2;求6除以4:6>>2;移位操作符“>>”指右移,右移1...
2019-09-20 20:15:00
3482
4
原创 Linux下跑C++程序的操作笔记(跑视频编码程序)
今天记录一下自己实验室在“天河”计算机上跑程序的流程,怕以后忘记了。由于天河的操作是基于Linux的操作,所以一些指令比较生疏,如有不准确的地方还请指正。一、首先需要连接VPN①下载SSLVPN客户端,然后在“开始程序”中打开“Hillstone Secure Connect”填写服务器域名地址、端口、用户名、密码,点击“登录”即可。1.互联网客户端填写顺序如下:(这里个人账号涉及保密,就没...
2019-09-17 09:46:16
851
原创 H.266/VVC代码学习笔记13:VTM6.0中的getInterMergeCandidates()函数
getInterMergeCandidates()函数是帧间预测技术中一个非常重要的函数,它是Merge列表的构造函数,所有的Merge模式都要先构造一个Merge候选列表,然后根据不同的模式在此regularMerge列表的基础上去延伸出相对应的Merge列表,就比如MMVD的Merge列表需要在常规Merge列表的基础上去选择两个初始MV,然后构造MMVDMerge。普通Merge列表的构造...
2019-09-16 18:54:05
1332
原创 H.266/VVC相关技术学习笔记22:VVC中TMVP技术(时域Merge列表的构建)
TMVP (时域运动矢量预测)技术,实际上就是Merge列表构造环节中时域候选列表的构造。关于时域候选列表的构造需要拿出来单独讲一下,因为这块不像空域候选构造那样直观易懂,时域的构造容易混淆。时域MV候选列表的构造是利用当前PU在邻近的已编码图像(同位图像)中对应位置的PU(即同位PU)的运动信息,同位图像一般取参考帧列表中离当前帧最近的那一帧,所以当前帧同位图像也有可能和当前帧的参考图像重合。...
2019-09-16 18:39:47
2064
原创 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 20:35:22
1472
原创 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
3642
1
原创 H.266/VVC相关技术学习笔记19:帧间预测中的HMVP技术(基于历史的MV预测)
HMVP技术(基于历史的MV预测)也是帧间的一个小分支技术,但是贯穿于整个Merge技术中,我们知道在构造Merge候选列表的时候有多种构造方法,以便在列表长度不足的时候用备选的方法填充进新的候选,比如空域相邻候选,时域相邻候选,零矢量候选等等。HMVP也是一种构造候选MV的方式。HMVP技术就是构造一个长度为6的HMVP列表,里面存储的就是已经编码的块的运动信息(MV之类的),如下图所示 ,按...
2019-09-02 20:43:14
3627
8
原创 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
1663
6
原创 H.266/VVC相关技术学习笔记17:VTM6.0中的DMVR(解码端运动矢量细化)技术前言:DMVR在JEM中的实现
今天讲解一下关于DMVR技术的技术细节,DMVR技术就是解码端运动矢量细化,意思就是在解码端才对运动矢量进行细化,在编码端的时候不用对运动矢量进行细化,而且编码端也不用传任何附加语法元素或者信息。DMVR也是帧间预测技术中非Merge系列的一个比较关键的技术。具体的过程如下图所示:第一步:在解码端得到双向MV后,在运动补偿阶段,对该块的两个MV形成的预测块进行加权,得到一个新的预测块,作为一个...
2019-08-26 12:20:55
1517
8
原创 H.266/VVC相关技术学习笔记16:VTM6.0中的CIIP技术(帧内帧间联合预测)
今天讲一下目前VTM6.0版本中的CIIP技术,CIIP即为帧内帧间联合预测技术,这属于Merge系列的一个分支。该技术需要先计算当前预测块的帧内预测值,即用Planar、DC、角度预测等传统的帧内预测模式去预测当前块的帧内预测值存储下来。然后再利用帧间的预测方式去预测当前块的帧间预测值,最后将帧内帧间的各自预测值通过某种加权方式加权得到最终当前块的预测值。该技术对亮度块和色度块都要做,不过在...
2019-08-26 11:27:31
1053
原创 H.266/VVC相关技术学习笔记15:视频编码中帧间预测技术的基本原理
今天讲一下关于视频编码中帧间预测技术一些基本原理,然后在后续的博客中更新最新的VTM6.0版本中的现存的帧间预测技术。首先帧间预测技术就是利用视频中邻近帧之间的时域相关性,使用之前已经预测编码好的重建图像作为参考帧,通过运动估计和运动补偿对当前的编码图像进行预测编码,从而去除视频中的时间冗余信息,大致如下图所示:Cur_Pic是通过运动矢量MV0和MV1指向的Ref_Pic0和Ref_Pic01...
2019-08-25 16:16:57
1846
1
原创 QT学习笔记4:Qt中对象树的概念
关于Qt中对象树的概念可以用下图来表示关于对象树的几点需要学习和注意的地方是:①在创建对象的时候,如果父类是QObject或者QObject派生的类,则这个对象可以不用去管理释放,系统会将该对象放到一个对象树上,析构会自动管理对象的释放②对象构造的顺序和释放顺序是相反的,构造的顺序是从树的根节点往下构造,而释放则是从叶节点的控件对象逐步向上释放(就比如,点击整个APP的右上角的“×”按钮,...
2019-07-29 17:58:54
649
原创 QT学习笔记3:QT中基本控件的接口(QPushButton的简单实用)
在自己定义的QWidget基类的对象MyWidget(最外层的大窗口)中设置按钮: 1.定义一个按钮对象,QPushButton *btn =new QPushButton; 2.show函数:该函数的作用就是让窗口弹出,btn->show()则是让按钮用顶层的方式弹出窗口 3.setParent函数:为按钮设置一个可以依赖的父窗口,使得按钮可以显示在父窗口中,而不是独立作为一个...
2019-07-29 16:56:23
996
原创 QT学习笔记2:最基本的QT程序中.pro文件以及源文件解析
一、.pro文件的解析#-------------------------------------------------## Project created by QtCreator 2019-07-29T14:40:51##-------------------------------------------------QT += core gui#QT所包含的基本模...
2019-07-29 16:31:22
276
原创 QT学习笔记1:第一个QT项目的创建
今天起开始学习有关QT的内容,QT是一个跨平台的C++图形用户界面应用程序框架,后期做码流分析软件用的,本来想用MFC,看雷神的码流分析软件使用MFC做的,但是周围人力荐QT,而且QT开发简单一些,所以就先学一下QT吧。下面介绍一下如何创建一个QT项目:第一步:点击新建第二步:选择模板,按红圈选择就行,然后点击“Choose”第三步:创建项目名称和项目路径,然后点击“下一步”项目名称...
2019-07-29 15:21:05
779
原创 H.266/VVC代码学习笔记12:VTM5.0中的estIntraPredChromaQT()函数的学习
对于学习视频编码中帧内预测部分的同学来说,estIntraPredChromaQT()函数可以说是必须掌握的一个很重要的函数,该函数是帧内色度预测的第一主函数入口,和帧内亮度预测的第一主入口函数estIntraPredLumaQT()函数相对应,关于亮度预测的入口函数的代码细节在我之前的博客已经详细讲过啦,这里就直接给出链接:H.266/VVC代码学习笔记8:VTM5.0中帧内亮度预测函数——es...
2019-07-28 22:10:08
1218
原创 H.266/VVC代码学习笔记11:VTM5.0中的xRecurIntraChromaCodingQT()函数
今天抽空讲一下目前VTM5.0中的编码端的xRecurIntraChromaCodingQT()函数的代码细节,该函数是帧内色度预测编码的第二入口函数,里面有所有的帧内色度预测模式的底层的实现细节,根据所传递进来的模式号,对应特定的预测模式进行预测编码。该函数的主要流程如下:一、 一些初始化操作,定义一些缓存空间及变量(在代码里有详细备注)二、 通过getFinalIntraMode()函数...
2019-07-26 16:57:18
875
原创 H.266/VVC代码学习笔记10:VTM5.0中的xIntraCodingTUBlock()函数
xIntraCodingTUBlock()函数是帧内预测函数的一个关键函数,里面进行亮度预测模式的具体实现,以及亮度和色度的残差的变换以及量化,该函数是亮度预测和色度预测都要用的统一函数,今天抽空讲一下该函数的代码细节。该函数的主要流程如下:一、 初始化各种参数,定义一些变量。二、 如果是亮度分量,则进行亮度分量的预测编码(MIp模式或者传统的角度预测)三、 预测结束之后计算残差(非联合模...
2019-07-26 16:48:10
972
原创 H.266/VVC相关技术学习笔记14:色度残差联合编码技术
最近跟进了现有VTM5.0中关于色度残差编码的相关细节,在VTM5.0中新加入了CbCr分量残差联合编码的技术。应该是研究统计发现,以往的版本中Cb和Cr残差彼此呈相反的关系,因此建议利用这种现象并引入一种用于色度残差的联合编码的模式。在这种联合模式中,对于TU的两个色度块只有一个残差。该联合的残差放置到Cb的预测块中,并从Cr的预测块中扣除(即Cr的预测快中没有残差数据,因此也不用进行变换量化...
2019-07-19 21:37:23
1185
原创 H.266/VVC相关技术学习笔记13:O0343——Simplification on CCLM process
这次会议还有一篇关于关于简化CCLM操作的提案也值的大家学习关注。在WD 5.0中,包括相邻样本位置推导,亮度下采样和线性模型参数推导的CCLM过程具有许多条件分支,这在硬件和软件实现方面是不期望的。因此所提出的方法对于不可用的参考样本,借用WD中帧内预测的参考样本填充过程,使用可用参考样本填充。由此简化CCLM的这些过程。简化的部分如下表所示:①简化相邻样本位置推导过程,固定地选择四个点...
2019-07-19 20:29:16
722
原创 H.266/VVC相关技术学习笔记12:O0412——Sampling point extension for CCLM
关于O次会议,有一篇关于CCLM点数扩展的天需要注意一下,虽然提案最终被踩下去,不过其中的思路也可以借鉴学习一下。在VTM5.0中的CCLM对所有尺寸的块都选2/4个点,这种选点非常适合4*4这样的小块,但是对于32*32这样的大块,只选择四个点可能不是最佳的,预测可能不准确,不能顾及到整个块的纹理特性;下图是VTM5.0中的选点方案样例。
2019-07-19 19:59:16
696
原创 H.266/VVC代码学习笔记9:即将接收到VTM6.0中的新技术——帧内色度预测模式编码的简化统一
关于该技术的技术细节我在之前的博客讲过啦,大家可以直接去看那篇博客:H.266/VVC相关技术学习笔记:O次会议新接收的技术——色度预测模式编码的简化和统一刚把相关的代码看了一下,现在把代码和注释给补上,有疑问的同学可以直接留言~intra_chroma_pred_mode()函数学习void CABACWriter::intra_chroma_pred_mode(const Predict...
2019-07-16 17:28:34
1156
原创 H.266/VVC相关技术学习笔记11:O次会议新接收的技术——色度预测模式编码的简化和统一
O次会议顺利结束,其中有不少新接收的技术提案,其中一个关于简化帧内色度模式编码的提案我还是比较感兴趣的,开会之前并没有看到这篇提案,是后来上传的,结果是非常重要的一篇提案~该提案的第一条建议就是无论CCLM模式是否开启,将相同的intra_chroma_pred_mode用于DM模式,以提高规范文本的可读性和一致性,该建议并不会影响压缩的性能。第二个建议为sps_cclm_enabled_fla...
2019-07-16 16:47:42
472
原创 H.266/VVC相关技术学习笔记10:JVET——O0674: Multiple reference set for CCLM
富士康在O次会议上关于CCLM又提出一个新技术,对于色度预测性能的提升很明显。下面我介绍一下该技术的细节:首先介绍一下在VTM5.0中的三种LM的4个参考像素点的选取方式:当前块的长为W,宽为H1、CCLM:当前色度预测块的上一行(长度为W)和左一列(长度为H)同时存在时,选择的4个点的位置为——R[W/4, -1], R[3W/4, -1], R[-1, H/4] and R[-1, 3H...
2019-07-14 20:24:58
1264
原创 H.266/VVC相关技术学习笔记9:JVET——O次会议关于色度预测模式编码的一些修改
在这次的O次会议中,关于色度预测模式的熵编码部分的修改就有好几家提案,其中这几家的修改方案都是重合的。总共有以下四家单位:海康威视(Hikvision )、索尼(Sony)、大疆(DJI)、北京大学(Peking)。其中大疆和北京大学联合提案O0416,他们认为在使用CCLM预测时,色度预测模式的解析过程存在依赖性,导致硬件设计延迟。为了消除色度CCLM预测分析过程的这种依赖关系,他们针对目前V...
2019-07-14 16:54:16
1579
原创 H.266/VVC相关技术学习笔记8:JVET——O次会议提案O0320:CCLM simplification
O次会议昨天也已经结束了,其中CCLM相关的提案明显减少,不过都比较值得去学习,这篇博客主要介绍一下其中一篇关于CCLM简化的一篇提案。之前的VTM5.0版本中的CCLM已经简化为只选用四个点,详细的技术细节在之前的博客已经介绍过啦:H.266/VVC代码学习笔记3:带你解析VTM5.0中CCLM的代码实现细节本次会议对该技术进行简化和统一,由于之前VTM5.0中如过选择的参考点的总数cntT...
2019-07-14 11:52:48
1500
原创 研一学习生活的总结~
从去年8月中旬,我开始了我研一的学习生活,今天终于结束了所有的考试,以后应该是再也不用上课复习、刷题应付考试啦~我来总结一下这一年以来所收获到的经验以及学习科研生活中的一些...
2019-07-13 00:22:38
2196
4
原创 H.266/VVC代码学习笔记7:VTM5.0中Mip模式的MPM列表构造函数——getMipMPMs()
在最新的VVC的参考软件VTM5.0中新加入的技术Mip亮度预测模式有其独立于传统的68种预测模式的MPM列表,而其MPM列表的构造也不同于传统的MPM列表构造。今天来详细讲一下关于Mip模式的MPM列表的构造函数。传统亮度预测模式的MPM列表的构造函数的代码之前我已经讲过啦,这里直接给出链接:H.266/VVC代码学习笔记6:传统的MPM列表构造函数——getIntraMPMs()Mip模...
2019-06-01 16:08:59
1854
原创 H.266/VVC代码学习笔记6:传统的MPM列表构造函数——getIntraMPMs()
有关于传统预测模式的MPM列表的构造的技术细节以及发展历程我在之前就写过啦,这里就不做介绍了H.266/VVC相关技术学习笔记:传统帧内预测模式的MPM列表的构造下面我主要给大家详细剖析一下传统MPM列表的构造函数 getIntraMPMs()代码里有详细的注释,可以根据之前讲过的构造流程一个一个对着代码看。有不懂的地方可以私聊我// PU tools//传统角度模式的MPM列表的...
2019-06-01 15:09:40
1771
4
图像工程(处理)课件.zip
2019-07-14
VVCSoftware_VTM-VTM-5.0.zip
2019-05-18
cmake-3.11.2-win64-x64.rar
2019-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人