一种高效视频编码中判定滤波强弱的可重构阵列结构的制作方法

文档序号:10492672阅读:266来源:国知局
一种高效视频编码中判定滤波强弱的可重构阵列结构的制作方法
【专利摘要】本发明涉及一种高效视频编码中判定滤波强弱的可重构阵列结构,针对亮度分量8×4块大小的垂直边界,使用7个处理元阵列,可以并行判断出该垂直边界滤波的强弱程度。垂直边界处理结束后,通过编程重构该结构可以实现亮度分量中4×8大小的水平边界滤波强弱的判定。本发明可以并行判断出滤波强弱程度,缩短了编解码时间,加快了编解码过程。
【专利说明】
一种高效视频编码中判定滤波强弱的可重构阵列结构
技术领域
[0001]本发明涉及视频压缩编码技术领域,尤其涉及一种高效视频编码中判定滤波强弱的可重构阵列结构。
【背景技术】
[0002]最新的视频编码标准H.265/HEVC提出了一种新的环路滤波技术,包括去方块滤波和像素自适应补偿。去方块滤波用于降低方块效应,像素自适应补偿用于改善振铃效应,经过滤波后的重构像素作为后续编码像素的参考使用,能够进一步减小后续编码像素的预测残差,有效地提高视频的主客观质量。
[0003]虽然H.264和H.265/HEVC中都包含去方块滤波操作,并且具体滤波算法类似,但是H.265/HEVC中去方块滤波和H.264/AVC去方块滤波强弱的判定方法不同:H.264/AVC中根据边界强度BS(Boundary strength)的大小即可以判定出滤波的强弱,而H.265/HEVC中在滤波开关打开的条件下,须对视频内容进行更加细致的判断,以进一步确定滤波强度。H.265/HEVC中滤波强弱的判定只针对亮度分量进行,色度分量的滤波只与边界强度值有关。对色度分量来说,只有当BS(Boundary strength,边界强度)等于2时才进行滤波操作。

【发明内容】

[0004]—种高效视频编码中判定滤波强弱的可重构阵列结构,其特征在于使用7个处理元阵列(PE00-PE21)邻接互连成最后一行只有中间一个处理元阵列(PE21)的3行3列类Mesh阵列结构(2),该结构适用于去方块滤波中亮度分量8X4块大小的垂直边界滤波强弱的判定,通过编程重构该结构还可以实现亮度分量中4X8块大小水平边界滤波强弱的判定。具体过程如下:
步骤1:同时加载滤波强弱判定的六个条件中的所有相关参数。第一个条件2(dpQ+dq0)<(β>>2)中所有参数顺序加载到处理元(PEOO)中,第二个条件2(dp3+dq3)〈(i3>>2)中所有参数顺序加载到处理元(PE01)中,第三个条件|p(3,0)-p(0,0)| + |q(0,0)-q(3,0)|〈(β>>3)中所有参数顺序加载到处理元(PE02)中,第四个条件|p(3,3)-p(0,3)| + |q(0,3)-q(3,3)|〈(β》3)中所有参数顺序加载到处理元(PE10)中,第五个条件|p(0,0)-q(0,0)|《5TC+l)》l中所有参数顺序加载到处理元(PE12)中,第六个条件|p(0,3)-q(0,3)|〈(5TC+l)>>l中所有参数顺序加载到处理元(PE21)中,将立即数6存到处理元(PEll)的数据存储中,用于判定所有条件是否成立;
步骤2:等待所有处理元(PE00-PE21)的数据加载完毕后,在除了处理元(PEll)的处理元阵列(PE00-PE21)中同时判定6个条件是否成立,如果成立,则相应寄存器置为I,否则置为O;
步骤3:6个条件判定结束后,根据阵列结构邻接互连的特性(4)将6个判定结果通过共享寄存器依次传递到处理元(PEll)中,通过判断处理元(PEll)中寄存器Rl的值是否等于6来进行强弱滤波判定,如果6个条件均成立,则Rl=6该垂直边界采用强滤波,如果Rl不等于6,则该垂直边界采用弱滤波;
步骤4:通过将该结构中每个处理元的数据存储中的参数替换成判断水平边界所需的参数,保持指令存储中的指令不变,则可以实现4X8块大小水平边界滤波强弱的判定。
[0005]处理元阵列采用的是邻接互连的方式,其中每个处理元有4个共享寄存器、大小为256 X 16的数据存储和256 X 32指令存储,各个处理元之间通过共享寄存器实现数据的交互。
【附图说明】
[0006]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,用来解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供处理元邻接互连示意图;
图2为本发明实施例提供所使用的处理元阵列的分布示意图;
图3为本发明实施例提供一个实例示意图;
图4为本发明实施例提供图3中各个处理元之间的互连示意图。
【具体实施方式】
[0007]本发明实施例提供了一种使用7个处理元(PE00-PE21)进行亮度分量垂直边界的8X4大小的像素块滤波强弱判定的可编程可重构阵列结构,结合说明书附图对本发明进行说明。
[0008]下面以说明书附图中图3为例,输入数据是第一行和第四行像素,一个8X4的垂直块边界滤波强弱的判定条件如下:
2(dpo+dqo)<(^?2)(I)
2(dp3+dq3)<(P?2)(2)
p(3,0)-p(0,0)| + |q(0,0)-q(3,0)|〈(i3>>3)(3)
p(3,3)-p(0,3)| + |q(0,3)-q(3,3)|〈(i3>>3)(4)
p(0,0)-q(0,0) |<(5Tc+l)?l(5)
p(0,3)-q(0,3) |<(5Tc+l)?l(6)
其中dpo=|p(2,0)-2p(l,0)+p(0,0) |,dp3= |p(2,3)_2p(I,3)+p(0,3) |,dqo=|q(2,0)-2q(l,0)+q(0,0)| ,dq3=|q(2,3)-2q(l,3)+q(0,3)dpo表示P块首行像素的变化率,dqo表示Q块首行像素的变化率,dp3表示P块第四行像素的变化率,dq3表示Q块第四行像素的变化率。i3,Tc为阈值,与量化参数QP有关,可以通过查表确定阈值的大小。
[0009]对于一个8X4的垂直块边界而言,只有当条件(I)?(6)全部成立时,则该边界采用强滤波操作,否则采用弱滤波操作。
[0010]本发明实施例使用7个PE进行亮度分量垂直边界的8X4大小的像素块滤波强弱判定的可编程可重构阵列结构,具体步骤如下:
步骤1:同时加载滤波强弱判定的六个条件(I)?(6)中的数据依次到处理元PE00,PE01,PE02,PE10,PE11,PE12,PE21,具体加载过程如下:
将说明书附图图3中的第一行像素?(2,0),?(1,0),?(0,0)4(0,0)^(1,0)4(2,0)存放在处理元(PEOO)数据存储中的2?7地址中,将β存放在处理元(PEOO)数据存储中的I号地址中,立即数2存放在8号地址;处理元(PEOl)数据存储中的2?7地址中存放第四行像素中的?(2,3),?(1,3),?(0,3)4(0,3)4(1,3)4(2,3),1号地址存放队8号地址存放立即数2;处理元(ΡΕ02)数据存储中的2?5地址中存放第一行像素中的?(3,0),?(0,0)4(0,0)^(3,0),O号地址存放β,1号地址存放立即数3;处理元(PElO)数据存储中的2?5地址中存放第四行像素中的P(3,3),p(0,3),q(0,3),q(3,3),0号地址存放β,1号地址存放立即数3;处理元(PEll)数据存储中的O号地址存放立即数6;处理元(PE12)数据存储中的2?3地址中存放第一行像素中的P(0,0),q(0,0),0号地址存放Tc,l号地址存放立即数l;处理元(PE21)数据存储中的2?3地址中存放第四行像素中的口(0,3)^(0,3),O号地址存放Tc,I号地址存放立即数I。
[0011 ]本发明使用汇编语言,处理元(PEOO)中指令如下: stepl:从2号地址中取出像素放入寄存器Rl中; step2:从3号地址中取出像素放入寄存器R2中; step3:从4号地址中取出像素放入寄存器R3中; step4: Rl减去R2,结果放入寄存器Rl;
#叩5:1?1减去1?2,结果存放在寄存器1?1,即完成?(2,0)-2?(1,0);
8七6?6:1?1加上1?3,结果存放在寄存器1?1,即完成?(2,0)-2?(1,0)+?(0,0);
8七6?7:1?1取绝对值操作,结果放在寄存器1?1,8卩1?1=(1?0=|?(2,0)-2?(1,0)+?(0,0)|;
step8:从7号地址中取出像素放入寄存器R2中;
step9:从6号地址中取出像素放入寄存器R3中;
steplO:从5号地址中取出像素放入寄存器R4中;
stepl 1: R2减去R3,结果放入寄存器R2;
stepl2:R2减去R3,结果存放在寄存器R2,即完成q(2,0)_2q(I,0);
8七6?13:1?2加上1?4,结果存放在寄存器1?2,即完成9(2,0)-29(1,0)+9(0,0);
8七6?14:1?2取绝对值操作,结果放在寄存器1?2,8卩1?2=(^0=|9(2,0)-29(1,0)+9(0,0)|;
stepl5:Rl加上R2,结果放入寄存器Rl中;
stepl6:Rl加上Rl,结果放入寄存器Rl中,即Rl=2(dp0+dq0);
#叩17:从1号地址中取出数据放入寄存器1?3,1?3=0;
stepl8:从8号地址中取出数据放入寄存器R4,R4=2;
stepl9: R3右移R4,结果放在寄存器R3中;
处理元(ΡΕ01)和处理元(PEOO)指令stepl?19完全一致.处理元(PE02)指令如下: stepl:从2号地址中取出数据放入寄存器Rl; step2:从3号地址中取出数据放入寄存器R2; step3: Rl减去R2,结果放入寄存器Rl;
step4: Rl取绝对值操作,结果放入寄存器Rl,即Rl= | ρ(3,O)-ρ(O,O) | ; step5:从4号地址中取出数据放入寄存器R2; step6:从5号地址中取出数据放入寄存器R3; step7: R2减去R3,结果存入寄存器R2; 8七6?8:1?2取绝对值操作,结果放入寄存器1?2,8卩1?2=|9(0,0)-9(3,0)|; 8七6?9:1?1加上1?2,结果放入寄存器1?3,1?3=|?(3,0)-?(0,0)| + |9(0,0)-9(3,0)|; steplO:从O号地址中取出数据放入寄存器Rl中; step 11:从I号地址中取出数据放入寄存器R2中; stepl2:Rl右移R2,结果放入Rl中。
[0012]处理元(PElO)和处理元(PE02)采用SBffi形式,指令stepl?12完全一致。
[0013]处理元(PE12)中指令如下:
stepl:从2号地址中取出数据放入寄存器Rl; step2:从3号地址中取出数据放入寄存器R2; step3: Rl减去R2,结果放入寄存器Rl;
step4: Rl取绝对值操作,结果放入寄存器Rl,S卩Rl= I p(0,0)_q(0,0) I ;
step5:从O号地址中取出数据放入寄存器R3;
s t ep6:从I号地址中取出数据放入寄存器R4;
step7: R3左移R4,结果放入寄存器R5;
step8: R5左移R4,结果放入寄存器R5;
step9: R5加上R3,结果放入寄存器R5;
steplO: R5加上立即数I,结果放入寄存器R5,S卩R5=5Tc+l;
stepl 1: R5右移R4,结果放入寄存器R5.处理元(PE21)和处理元(PE12)采用SHffi形式,指令stepl?11完全一致。
[0014]处理元(PEll)用于判断滤波强弱,只有当(I)?(6)全部成立,该边界才采用强滤波,否则采用弱滤波。在处理元(PEll)中通过查看寄存器R3的值判断最终结果,当(I)?(6)全部成立,判断Rl是否等于6,如果等于6则寄存器R3=90,采用强滤波,否则R3=80,采用弱滤波。处理元(PEll)指令如下:
stepl:从O号地址中取出数据放入寄存器R2.步骤2:数据加载完毕后,在6个处理元PE中同时判定6个条件是否成立,如果成立,则相应寄存器置为1,否则置为0。当处理元(PE00、PE01、PE02、PE10、PE11、PE12、PE21)所有操作数准备就绪,在第20个时钟周期开始,6个处理元(PE00、PE01、PE02、PE10、PE12、PE21)同时判断(I)?(6)是否成立,并将运算结果通过邻接互连的方式传递到处理元(PEll)中,在处理元(PEl I)中进行边界滤波强弱的判断,各个处理元中的具体指令如下:
处理元(ΡΕ00)中指令如下:
step20:判断Rl是否小于R3,如果小于则跳到step23,否则执行step21 (此步用于判断条件(I));
step21:将O赋予寄存器R8,即表示条件(I)不成立,同时该计算结果在同一时钟周期内,通过寄存器R8传递到处理元(PE01)的寄存器R5;step22:跳转到 step24;
step23:将I赋予寄存器R8,即表示件(I)成立,同时该计算结果在同一时钟周期内,通过寄存器R8传递到处理元(PE01)的寄存器R5.step24:空指令。
[0015]处理元(PEOl)中指令如下: step20:判断Rl是否小于R3,如果小于,则跳到step23,否则执行step21 (此步用于判断条件(2));
step21:将O赋予寄存器R3,即表示条件(2)不成立; step22:跳转到 step24;
step23:将I赋予寄存器R3,即表示条件(2)成立;
#叩24:1?5加上1?3,结果存入1^,即将条件(1)~(2)的结果在同一周期存入处理元
(卩已11)的尺6。
[0016]处理元(PE02)中指令如下:
step20:判断R3是否小于Rl,如果小于,则跳到step22,否则执行step21; step21:将O赋予寄存器RS,即条件(3)不成立,同时将RS的值传递到PE12的寄存器R6; step22:将I赋予寄存器RS,即条件(3)成立,同时将RS的值传递到PE12的寄存器R6.处理元(PE12)中指令如下:
step20:比较Rl是否小于R5,如果小于则跳到step23,否则执行step21;
step21:将O赋予寄存器R4,即条件(4)不成立;
step22:跳转到 step24;
step23:将I赋予寄存器R4,即条件(4)成立;
step24: R6加上R4,结果存入寄存器RW,即将条件(3)和(5)的结果在同一周期存入处理元(PElI)的R3.处理元(PElO)中指令如下:
step20:判断R3是否小于Rl,如果小于则跳到step23,否则执行step21;
step21:将O赋予寄存器RE,即条件(4)不成立;
step22:跳转到 step24
step23:将I赋予寄存器RE,即条件(4)成立;
step24:空指令
处理元(PE21)指令如下:
step20:比较Rl是否小于R5,如果小于,跳到step23,否则执行step21;
step21:将O赋予寄存器RN,即条件(6)不成立;
step22:跳转到 step24;
step23:将I赋予寄存器RN,即条件(6)成立;
step24:空指令。
[0017]步骤3:6个条件判定结束后,根据阵列结构邻接互连的特性将6个判定结果通过共享寄存器依次传递到处理元(PEl I)中进行判定,如图4所示,如果PEl I中的寄存器R3=90,则该垂直边界采用强滤波;R3=80,则该垂直边界采用弱滤波。处理元(PEll)中指令如下:
step25: R6加上R3,结果存入Rl,S卩(I)?(3)和(5)的判断结果; step26: Rl加上R4,结果存入Rl;
step27: Rl加上R5,结果存入Rl,即条件(I)?(6)的判定结果;
step28: R2=6,判断Rl是否等于R2,如果不相等则跳到step31,否则执行step29;
step29:将90赋予寄存器R3,表示条件(I)?(6)均成立,执行强滤波;
step30:跳转到 step32; step31:将80赋予寄存器R3,表示条件(I)?(6)不全部成立,执行弱滤波; step32:空指令。
[0018]步骤4:通过将该结构中每个处理元数据存储中的参数替换成判断水平边界所需的参数,保持指令存储中的指令不变,则可以实现4X8块大小水平边界滤波强弱的判定。
[0019]最后应说明的是:显然,上述实施仅仅是为清楚地说明本发明所作的举例,而并非对实施方式的限定。对于所述领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。由此引申的显而易见的变化或变动仍处于本发明的保护范围之中。
【主权项】
1.一种高效视频编码中判定滤波强弱的可重构阵列结构,其特征在于使用7个处理元阵列(PEOO、PE01、PE02、PE10、PE11、PE12、PE21)邻接互连成最后一行只有中间一个处理元(PE21)的3行3列类Mesh阵列结构,该结构适用于去方块滤波中亮度分量8X4块大小的垂直边界滤波强弱的判定,通过编程重构该结构还可以实现亮度分量中4X8块大小水平边界滤波强弱的判定,具体过程如下: 步骤I:同时加载滤波强弱判定的六个条件中的所有相关参数; 第一个条件2(dpQ+dqo)〈(i3>>2)中所有参数顺序加载到处理元(PEOO)中,第二个条件2(dP3+dq3)〈 (β>>2)中所有参数顺序加载到处理元(PEOI)中,第三个条件| ρ (3,O)-ρ (O,O) | +q(0,0)-q(3,0)|〈(β>>3)中所有参数顺序加载到处理元(PE02)中,第四个条件|p(3,3)-p(0,3)| + |q(0,3)-q(3,3)|〈(i3>>3)中所有参数顺序加载到处理元(PElO)中,第五个条件|ρ(0,0)-q(0,0)|〈(5TC+l)>>l中所有参数顺序加载到处理元(PE12)中,第六个条件|p(0,3)-q(0,3) |〈(5Tc + 1)>>1中所有参数顺序加载到处理元(PE21)中,将立即数6存到处理元(PEll)的数据存储中,用于判定所有条件是否成立; 步骤2:等待所有处理元(PE00-PE21)的数据加载完毕后,在除了处理元(PEll)的处理元阵列(PE00-PE21)中同时判定6个条件是否成立,如果成立,则相应寄存器置为I,否则置为O; 步骤3: 6个条件判定结束后,根据阵列结构邻接互连的特性,将6个判定结果通过共享寄存器(RE、RS、RW、RN)依次传递到处理元(PEll)中,通过判断处理元(PEll)中寄存器Rl的值是否等于6来进行强弱滤波判定,如果6个条件均成立,则Rl=6该垂直边界采用强滤波,如果Rl不等于6,则该垂直边界采用弱滤波; 步骤4:通过将该结构中每个处理元的数据存储中的参数替换成判断水平边界所需的参数,保持指令存储中的指令不变,则可以实现4X8块大小水平边界滤波强弱的判定。
【文档编号】H04N19/117GK105847848SQ201510789121
【公开日】2016年8月10日
【申请日】2015年11月17日
【发明人】刘有耀, 杨倩, 吴进, 山蕊
【申请人】西安邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1