3D-HEVC
Eyrane
这个作者很懒,什么都没留下…
展开
-
视差查询表LUT
视差查询表原创 2016-04-20 16:44:32 · 854 阅读 · 0 评论 -
HTM-16.2代码(13)——getInterMergeCandidates
getInterMergeCandidates是Merge技术候选列表的实现。空域:选取的顺序为A1->B1->B0->A0->(B2)。其中,B2只有在A1,B1,B0,A0中有一个不存在或者帧内预测的情况才可使用。时域:一般情况下首先考虑的是H位置,当H位置不存在或者编码模式使用的是帧内编码模式或者超出了CTU的边界时,选择C3位置。 //! Cons...原创 2016-12-28 16:33:57 · 648 阅读 · 0 评论 -
HTM-16.2代码(7)——motionCompensation
运动补偿MC——motionCompensation(1) iPartIdx >= 0,对索引为iPartIdx的PU进行操作 1)不使用VSP a.对某一参考列表list0或list1(单向),判断是否进行加权预测。 b.对某一参考列表list0和list1(双向),判断是否SPIVMP I)进行SPIVMP II)只考虑时...原创 2016-12-28 11:49:33 · 1009 阅读 · 0 评论 -
HTM-16.2代码(12)——xTZ8PointDiamondSearch和xTZ2PointSearch
本文分析xTZSearch调用了两个最为主要的函数:xTZ8PointDiamondSearch和xTZ2PointSearch__inline Void TEncSearch::xTZ8PointDiamondSearch( const TComPattern*const pcPatternKey, ...原创 2016-12-27 17:58:59 · 508 阅读 · 0 评论 -
HTM-16.2代码(10)——xPatternSearch和xPatternSearchFast
xPatternSearch进行整像素搜索Void TEncSearch::xPatternSearch( const TComPattern* const pcPatternKey, const Pel* piRefY, cons...原创 2016-12-27 17:19:03 · 1066 阅读 · 0 评论 -
HTM-16.2代码(11)——xTZSearch
TZSearch的基本流程:1、搜索预测得到的mv所指向的点:中值预测mv,当前PU的左,上及右上PU的mv,还有零运动矢量(0,0);2、在步骤1中找到匹配误差最小的点作为接下来搜索的起始点;3、步长从1开始,以2的指数递增,进行8点钻石搜索,该步骤中可以设置搜索的最大次数(以某个步长遍历一遍就算1次);4、如果步骤3搜索得到的最佳步长为1,则需要以该最佳点为起点做1次两点钻石搜...原创 2016-12-27 17:01:24 · 903 阅读 · 0 评论 -
HTM-16.2代码(6)——xMotionEstimation
基本思想:就是用TZSearch算法先进行整像素搜索,确定一个局部的最佳值,然后以这个最佳点为中心再进行精度更高的分像素搜索。 主要流程: (1)首先计算搜索范围 (2)获取相邻块像素的访问方式(通过调用getPattern) (3)计算当前CU(或者说PU)大小 (4)如果是B帧(使用双向预测),还要设置权重? (5)访问方式的初始化 (6)得到参考帧 (7)根据预先获取的预测M...原创 2016-12-27 17:09:41 · 874 阅读 · 0 评论 -
HTM-16.2代码(5)——predInterSearch
predInterSearch主要的工作是ME(运动估计)和MC(运动补偿)。 函数中有一个bTestNormalMC变量,它表示是否进行正常的MC过程,正常的MC过程就是进行ME再进行MC。 正常的MC流程是,遍历所有的参考帧,进行ME(运动估计:xEstimateMvPredAMVP和xMotionEstimation),然后记录AVP或者MV的信息,进行MC(运动补偿,目的是选出最优的参...原创 2016-12-27 21:29:14 · 2180 阅读 · 0 评论 -
HTM-16.2代码(9)——fillMvpCand
fillMvpCand是AMVP技术构建候选列表的实现。AMVP利用空域和时域上mv的相关性,为当前PU建立了候选预测mv列表。编码器从中选出最优的预测mvp,并对mv进行差分编码;解码端通过建立相同的列表,仅需要MVD和mvp在候选列表中的序列号,即可计算出当前PU的mv。mv候选列表的构建: (1)空域列表的建立。 左侧A0->A1->scaled A0->sca...原创 2016-12-27 23:01:50 · 947 阅读 · 0 评论 -
HTM-16.2代码(8)——xEstimateMvPredAMVP
AMVP利用空域和时域上mv的相关性,为当前PU建立了候选预测mv列表。编码器从中选出最优的预测mvp,并对mv进行差分编码;解码端通过建立相同的列表,仅需要MVD和mvp在候选列表中的序列号,即可计算出当前PU的mv。(1)利用fillMvpCand构建候选列表 (2)对每个候选调用xGetTemplateCost计算cost,找到最优的候选mv (3)设置最优的mv// AMV...原创 2016-12-28 10:38:55 · 1117 阅读 · 1 评论 -
.exe的运行 视频编码常用软件
在使用Evalvid的psnr.exe时,双击一闪而过,在cmd中运行 建立bat文件双击该bat文件,其结果为:两幅图像的对比:pyuv.exe 序列中截取一部分:Seqcut.exe...原创 2016-04-11 16:09:17 · 519 阅读 · 0 评论 -
HTM-16.2代码(2)——帧间预测(理论)
一、帧间预测,利用相邻图像中已经编码的像素生成预测值二、生成预测值之后,和原始的值相减,得到残差,后续的变换量化等操作就是基于残差进行处理的三、主要原理是,为当前的PU在参考帧上寻找一个最佳的匹配块,这个找到的匹配块就可以当作预测值,这个过程就是运动估计。但是注意,运动估计不是一步就位的,它需要在整像素的基础上进行运动补偿(即进行插值),然后进行1/2、1/4像素精度的运动估计,最后得到最...原创 2016-12-30 10:31:40 · 2062 阅读 · 0 评论 -
HTM-16.2代码(3)——xCompressCU
(1)所有LCU都是通过调用compressCtu(主要为xCompressCU)来实现其CU/PU划分;然后通过其结果再调用 TEncCu::encodeCtu函数来实现对所有CUs进行压缩编码. (2)xCompressCU是一个递归函数。将当前CU划分为4个子CU,计算失真,根据失真大小判断是否划分。...原创 2016-12-30 16:54:11 · 584 阅读 · 0 评论 -
编写代码遇到的问题
1.输出深度图的值 开始的时候代码如下:ofstream out("E:\\5.txt");int depth;int h= m_tDecTop[decIdx]->getPic(poc)->getSlice(0)->getSPS()->getPicHeightInLumaSamples();int w= m_tDecTop[decIdx]->getPic(poc)->getSlice(0原创 2016-04-21 16:37:56 · 1288 阅读 · 1 评论 -
UChar* m_puhWidth的输出
HTM11.0中有UChar* m_puhWidth;存储的是整数,但却用了UChar。参考代码:#include <iostream>using namespace std;void main(){ char *c=new char; *c=64; int n=*c/4; cout<<*c<<"...原创 2016-04-22 11:09:17 · 650 阅读 · 0 评论 -
m_acCUMvField
class TComDataCU//MV{ TComCUMvField m_acCUMvField[2]; //m_acCUMvField[0]对应了list0;m_acCUMvField[1]对应了list1;};class TComCUMvField{ TComMv* m_pcMv; TComMv* m_pcMvd; Char* m_...原创 2016-04-22 11:42:12 · 656 阅读 · 0 评论 -
3D-Warping
3D-Warping理论原创 2017-03-03 17:55:54 · 1409 阅读 · 0 评论 -
HTM11.0——3D-warping/DIBR
http://download.csdn.net/detail/u012868357/9806664原创 2017-04-07 16:12:26 · 697 阅读 · 0 评论 -
HTM11.0——yuv文件的读取
每个像素为16比特,但yuv文件为8比特,所以,要先将图像的像素读入到8比特的内存中,再将该内存的数据读到yuv文件。FILE *fp = fopen("F:/daima/HTM11.0_SR/new1.yuv","wb");unsigned char *tmpY = new unsigned char[w*h];unsigned char *tmpCb = new unsigned ...原创 2017-03-31 20:49:55 · 1708 阅读 · 0 评论 -
HTM11.0——**的内存分配及释放
//以HTM 11.0中的TComDataCU** m_apcTComDataCU为例Void TComPicSym::create(){ m_apcTComDataCU = new TComDataCU*[m_uiNumCUsInFrame];//m_uiNumCUsInFrame为图像中的LCU数 for ( i=0; i<m_uiNumCUsInFrame ; i...原创 2016-06-02 21:32:27 · 421 阅读 · 0 评论 -
HTM 11.0——MV的获取
在看HTM 11.0中 TComMv cMv = pcCU->getCUMvField( eRefPicList )->getMv( uiPartAddr ); uiPartAddr为PU在CU中的地址,但是MV是根据4*4块的Z-Scan在LCU中存储的,觉得这一部分很奇怪。 原因:m_ppcCU[uiDepth]->copySubCU( pcC...原创 2016-06-02 21:30:29 · 1340 阅读 · 3 评论 -
HTM-16.2代码(1)——编码端一些函数的说明
(1)片编码器的初始化——initEncSlice 主要是设置和计算一些参数,为片的编码做准备 参考:http://blog.csdn.net/nb_vol_1/article/details/51151645(2)片的编码——compressSlice 主要是设置一些参数和初始化一些东西,然后对片中的每一个LCU调用initCtu(初始化CU)和compressCtu(对CU编码)和e...原创 2017-01-03 11:05:11 · 1016 阅读 · 0 评论 -
HTM-16.2代码(4)——xCheckRDCostInter
主要流程如下: (1)得到当前的深度。 (2)调用predInterSearch,进行ME(运动估计)和MC(运动补偿)。 (3)调用encodeResAndCalcRdInterCU,根据预测值,求出残差,然后进行TU的划分,然后进行变换、量化等操作以及RD代价的计算。 (4)调用xCheckBestMode选择最好的模式。...原创 2016-12-30 17:36:03 · 854 阅读 · 0 评论 -
C++——随机数 随机丢包
1.随机数 rand()函数, srand()函数rand():会返回范围在0至RAND_MAX 间的随机数; rand()%x:会返回范围在0至x-1间的随机数;srand(seed)设好随机数种子(seed); srand((unsigned) time(NULL)); srand(unsigned(time(0)));x = rand()%11; ...原创 2016-04-22 18:22:36 · 1985 阅读 · 2 评论