一种hevc编码四叉树的递推译码方法_2

文档序号:8530660阅读:来源:国知局
性信息,前三个节点同时记录右邻居兄弟节点索引,最后一个节点的因兄弟节点不存在而记录父节点;然后回转执行所述的步骤2 ;
这一过程形式化描述为: nNodeCount++;
pQuadtreeldx[nNodeCount].xO = xO;pQuadtreeldx[nNodeCount].yO = yO;
pQuadtreeldx[nNodeCount].log2_cb_size = log2_cb_size_split;pQuadtreeldx[nNodeCount].cb—depth = cb—depth—split;pQuadtreeldx[nNodeCount].right = nNodeCount + I;nNodeCount++;
pQuadtreeldx[nNodeCount].xO = xl;pQuadtreeldx[nNodeCount].yO = yO;
pQuadtreeldx[nNodeCount].log2_cb_size = log2_cb_size_split;pQuadtreeldx[nNodeCount].cb—depth = cb—depth—split;pQuadtreeldx[nNodeCount].right = nNodeCount + I;nNodeCount++;
pQuadtreeldx[nNodeCount].xO = xO;pQuadtreeldx[nNodeCount].yO = yl;
pQuadtreeldx[nNodeCount].log2_cb_size = log2_cb_size_split;pQuadtreeldx[nNodeCount].cb—depth = cb—depth—split;pQuadtreeldx[nNodeCount].right = nNodeCount + I;nNodeCount++;
pQuadtreeldx[nNodeCount].xO = xl;pQuadtreeldx[nNodeCount].yO = yl;
pQuadtreeldx[nNodeCount].log2_cb_size = log2_cb_size_split;pQuadtreeldx[nNodeCount].cb—depth = cb—depth—split;pQuadtreeldx[nNodeCount].parent = nNodeldx;nNodeldx = nNodeCount - 30
[0026]其具体实现包括以下子步骤:
步骤3.1:索引顺序按照光栅扫描顺序进行;
步骤 3.2:位置依次是(xO, y0),(xl, y0),(xO, yl), (xl, yl),其中(xO, yO)为步骤 2读取的当前节点位置,(xl,yl)为(x0,y0)加上当前节点边长的1/2;边长均为当前节点的1/2 ;深度均增加I ;
步骤3.3:前三个节点的右邻居为扫描顺序上下一个节点的索引编号,第四个节点的父节点为当前节点索引编号;
步骤3.4:当前节点索引编号递增4。
[0027]步骤4:如果四叉树不可再分裂,即分裂标记split_CU为O时,执行当前节点的HEVC标准译码,然后执行下述判断:
如果码流不够解码或解码运算出错,则终止循环,本流程结束;
否则,执行下述步骤5;
步骤5:检查当前节点,并判断:
若当前节点的右邻居节点不存在且父节点的兄弟节点也不存在,或者当前节点为根节点,则终止循环,本流程结束;
否则,执行下述步骤6;
步骤6:修改当前节点索引编号,并回转执行所述的步骤2 ;修改修改当前节点索引编号的规则为:如果右邻居叶节点存在,则将当前节点索引修改为右邻居;否则,如果父节点存在则回溯到父节点的右邻居节点,当前节点索引修改为父节点的右邻居。形式化描述如下:
如果邻居叶节点存在,即 pQuadtreeldx [nNodeldx].right > 0,则 nNodeldx =pQuadtreeldx[nNodeldx].right ;
否则,如果父节点存在,即pQuadtreeldx [nNodeldx].parent > 0,则当父节点的右邻居节点存在时,即 pQuadtreeldx[nParentNodeldx].right>0,则 nNodeldx =pQuadtreeldx[nParentNodeldx].right ;否则结束循环。
[0028]应当理解的是,本说明书未详细阐述的部分均属于现有技术。
[0029]应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
【主权项】
1.一种HEVC编码四叉树的递推译码方法,其特征在于,包括以下步骤: 步骤1:构造编码块四叉树索引表,索引表的表项描述节点的属性信息,并给索引表赋初值; 步骤2:读取索引表中的当前节点,并根据节点描述信息判断节点是否分裂? 若分裂,则执行下述步骤3; 否则,则执行下述步骤4; 步骤3:逐一索引四个节点的位置属性、边长属性、深度属性信息,前三个节点同时记录右邻居兄弟节点索引,最后一个节点的因兄弟节点不存在而记录父节点;然后回转执行所述的步骤2 ; 步骤4:执行当前节点的HEVC标准译码,然后执行下述判断: 如果码流不够解码或解码运算出错,则终止循环,本流程结束; 否则,执行下述步骤5; 步骤5:检查当前节点,并判断: 若当前节点的右邻居节点不存在且父节点的兄弟节点也不存在,或者当前节点为根节点,则终止循环,本流程结束; 否则,执行下述步骤6; 步骤6:修改当前节点索引编号,并回转执行所述的步骤2。
2.根据权利要求1所述的HEVC编码四叉树的递推译码方法,其特征在于,步骤I的具体实现包括以下子步骤: 步骤1.1:定义索引表的表项,表项结构体包含编码块位置横纵坐标、边长、深度、右邻居、父节点字段,其中,右邻居便于索引下一个兄弟节点,父节点便于回溯上级节点; 步骤1.2:分配索引表空间,索引表的总长度由((log2_ctb_size-log2_min_cb_size) ?I) + I给出,其中log2_ctb_size为编码单元边长2的幂次数,log2_min_cb_size为最小编码块边长2的幂次数; 步骤1.3:初始化索引表,索引表中的第一个表项的描述信息分别设置为:位置设置为码流中解析出来的编码单元的位置,边长设置为码流中解析出来的编码单元边长,深度初值为O,右邻居和父节点均设为-1 ;其它表项元素全部初始化为O ;同时,当前节点索引编号设为O。
3.根据权利要求1所述的HEVC编码四叉树的递推译码方法,其特征在于:步骤2中所述的判断节点是否分裂,其判断条件分两种情况: ①当前节点所对应的编码块不超出图像范围且边长大于最小编码块边长,此时从码流中读取块分裂标记; ②否则,依据编码块边长是否大于最小编码块边长来确定分裂标记,大于时才判断为分裂。
4.根据权利要求1所述的HEVC编码四叉树的递推译码方法,其特征在于:步骤3中所述的逐一索引四个节点的位置属性、边长属性、深度属性信息,其具体实现包括以下子步骤: 步骤3.1:索引顺序按照光栅扫描顺序进行; 步骤 3.2:位置依次是(xO, yO),(xl, yO),(xO, yl),(xl, yl),其中(xO, yO)为步骤 2读取的当前节点位置,(xl,yl)为(xO,yO)加上当前节点边长的1/2;边长均为当前节点的1/2 ;深度均增加I ; 步骤3.3:前三个节点的右邻居为扫描顺序上下一个节点的索引编号,第四个节点的父节点为当前节点索引编号; 步骤3.4:当前节点索引编号递增4。
5.根据权利要求1所述的HEVC编码四叉树的递推译码方法,其特征在于:步骤6中所述的修改当前节点索引编号,其修改规则为: ①如果右邻居叶节点存在,则当前节点索引指向它; ②否则,如果父节点存在则回溯到父节点的兄弟节点。
【专利摘要】本发明公开了一种HEVC编码四叉树的递推译码方法,包括步骤:构造编码块四叉树索引表,索引表的表项描述节点的属性信息,并给索引表赋初值;读取索引表中的当前节点,并根据节点描述信息判断节点是否进一步分裂,从而选择是执行译码操作还是继续索引孩子节点;逐一索引四个节点的位置、边长、深度等属性信息,前三个节点同时记录兄弟节点索引,最后一个节点的因兄弟节点不存在记录父节点;执行当前节点的译码(含运动预测、逆变换、逆量化、运动补偿等标准定义的运算),然后修改当前节点索引编号;计算递推译码循环终止条件。采用本发明方法对四叉树译码的递归结构进行展开,可提高程序执行效率和设计的普适性。
【IPC分类】H04N19-96, H04N19-42
【公开号】CN104853220
【申请号】CN201510256658
【发明人】王中元, 边学工
【申请人】武汉随锐亿山科技有限公司
【公开日】2015年8月19日
【申请日】2015年5月18日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1