[go: up one dir, main page]

CN100413344C - 高并行度的帧内预测器的实现方法 - Google Patents

高并行度的帧内预测器的实现方法 Download PDF

Info

Publication number
CN100413344C
CN100413344C CNB2006101138688A CN200610113868A CN100413344C CN 100413344 C CN100413344 C CN 100413344C CN B2006101138688 A CNB2006101138688 A CN B2006101138688A CN 200610113868 A CN200610113868 A CN 200610113868A CN 100413344 C CN100413344 C CN 100413344C
Authority
CN
China
Prior art keywords
block
prediction mode
module
prediction
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101138688A
Other languages
English (en)
Other versions
CN1937774A (zh
Inventor
李树国
杨晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2006101138688A priority Critical patent/CN100413344C/zh
Publication of CN1937774A publication Critical patent/CN1937774A/zh
Application granted granted Critical
Publication of CN100413344C publication Critical patent/CN100413344C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明属于视频编解码的集成电路设计领域,其特征在于:对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期处理16个像素点的预测值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。

Description

高并行度的帧内预测器的实现方法
技术领域
本发明涉及视频编解码的集成电路设计领域。
背景技术
H.264标准是国际电信联盟电信部门ITU-T的VCEG(视频编码专家组)和国际标准化组织/国际电工委员会ISO/IEC的MPEG(活动图像专家组)的联合视频组(JVT,Joint VideoTeam)开发的标准,这是目前最新的视频编码标准。与之前的标准相似,它们都是通过去除图像的空间与时间冗余度来达到压缩的目的。
H 264中的帧内预测:
H 264的帧内预测是利用当前块的上方和左方的相临像素作为参考像素,对当前块的像素进行预测,有效地去除空间冗余度,极大地提高了编码的效率。对于亮度分量,H.264有两种不同大小的块进行帧内预测:4×4大小的块适用于带有大量细节的图像,有9种预测模式;16×16大小的块适用于平坦区域的图像,有4种预测模式。对于色度分量,只有8×8大小的块,有4种预测模式。对于不同大小的块和不同的预测模式,解码器采用不同的预测公式得到像素的预测值。3种不同大小的预测块和多达17种的预测模式,在提高预测精度的同时,也使得硬件实现时的复杂度和冗余度大大增加。
为了方便接下来问题的讨论,图1给出了空间坐标系的定义。其中每个方格表示一个像素点,灰色的方格表示当前块的预测像素点,白色的方格表示与当前块相邻的参考像素点,水平向右为x轴的正方向,竖直向下为y轴的正方向,x轴和y轴的起点坐标都为-1,步间距都为1。定义了坐标系之后,参考像素和预测像素的位置就可以由坐标[x,y]唯一确定。
p[x,-1],x=-1~15表示当前块上方的参考像素点,又取名为h1~h17;p[-1,y],y=0~15表示当前块左方的参考像素点,又取名为v2~v17。同时,用pred4×4L[x,y],x=0~3,y=0~3表示4×4大小的亮度块的16个预测像素点,用pred16×16L[x,y],x=0~15,y=0~15表示16×16大小的亮度块的256个预测像素点,用pred8×8C[x,y],x=0~7,y=0~7表示8×8大小的色度块的64个预测像素点。
4×4大小的亮度块的预测模式:
4×4大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有9种预测模式,如图2所示,其中灰色的方格表示16个预测像素点,白色的标记为h1~h9和v2~v5的方格表示相邻的参考像素点。9种预测模式的名字和描述如表1所示,各个模式的预测公式在表后给出。
表14×4亮度块的预测模式的名字和描述
 模式编号   名字   描述
 0(垂直)   Intra_4×4_Vertical   由h2~h5垂直推出预测像素点的值
 1(水平)   Intra_4×4_Horizontal   由v2~v5水平推出预测像素点的值
 2(DC)   Intra_4×4_DC   由h2~h5和v2~v5的平均值推出预测像素点的值
 3(下左对角线)   Intra_4×4_Diagonal_Down_left   沿左下45度方向推出预测像素点的值
 4(下右对角线)   Intra_4×4_Diagonal_Down_Right   沿右下45度方向推出预测像素点的值
 5(右垂直)   Intra_4×4_Vertical_Right   沿垂直偏右266度方向推出预测像素点的值
 6(下水平)   Intra_4×4_Horizontal_Down   沿水平偏下266度方向推出预测像素点的值
 7(左垂直)   Intra_4×4_Vertical_left   沿垂直偏左266度方向推出预测像素点的值
 8(上水平)   Intra_4×4_Horizontal_Up   沿水平偏上266度方向推出预测像素点的值
模式0:pred4×4L[x,y]=p[x,-1],x=0,1,2,3,y=0,1,2,3
模式1:pred4×4L[x,y]=p[-1,y],x=0,1,2,3,y=0,1,2,3
模式2:当参考像素h2~h5和v2~v5都存在时
pred4×4L[x,y]=(p[0,-1]+p[1,-1]+p[2,-1]+p[3,-1]+p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+4)/8
当只有参考像素h2~h5存在时
pred4×4L[x,y]=(p[0,-1]+p[1,-1]+p[2,-1]+p[3,-1]+2)/4
当只有参考像素v2~v5存在时
pred4×4L[x,y]=(p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred4×4L[x,y]=128
模式3:pred4×4L[x,y]=(p[6,-1]+3×p[7,-1]+2)/4x=3,y=3
pred4×4L[x,y]=(p[x+y,-1]+2×p[x+y+1,-1]+p[x+y+2,-1]+2)/4  x=其他值,y=其他值
模式4:pred4×4L[x,y]=(p[x-y-2,-1]+2×p[x-y-1,-1]+p[x-y,-1]+2)/4  x>y
pred4×4L[x,y]=(p[-1,y-x-2]+2×p[-1,y-x-1]+p[-1,y-x]+2)/4  x<y
pred4×4L[x,y]=(p[0,-1]+2×p[-1,-1]+p[-1,0]+2)/4  x=其他值,y=其他值
模式5:pred4×4L[x,y]=(p[x-(y/2)-1,-1]+p[x-(y/2),-1]+1)/2  2×x-y=0,2,4,6
pred4×4L[x,y]=(p[x-(y/2)-2,-1]+2×p[x-(y/2)-1,-1]+p[x-(y/2),-1]+2)/4  2×x-y=1,3,5
pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p[0,-1]+2)/4  2×x-y=-1
pred4×4L[x,y]=(p[-1,y-1]+2×p[-1,y-2]+p[-1,y-3]+2)/4  2×x-y=其他值
模式6:pred4×4L[x,y]=(p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+1)/2  2×y-x=0,2,4,6
pred4×4L[x,y]=(p[-1,y-(x/2)-2]+2×p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+2)/4  2×x-y=1,3,5
pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p[0,-1]+2)/4  2×x-y=-1
pred4×4L[x,y]=(p[x-1,-1]+2×p[x-2,-1]+p[x-3,-1]+2)/4  2×x-y=其他值
模式7:pred4×4L[x,y]=(p[x+(y/2),-1]+p[x+(y/2)+1,-1]+1)/2  y=0,2
pred4×4L[x,y]=(p[x+(y/2),-1]+2×p[x+(y/2)+1,-1]+p[x+(y/2)+2,-1]+2)/4  y=1,3
模式8:pred4×4L[x,y]=(p[-1,y+(x/2)]+p[-1,y+(x/2)+1]+1)/2  x+2×y=0,2,4
pred4×4L[x,y]=(p[-1,y+(x/2)]+2×p[-1,y+(x/2)+1]+p[-1,y+(x/2)+2]+2)/4x  +2×y=1,3
pred4×4L[x,y]=(p[-1,2]+3×p[1,3]+2)/4  x+2×y=5
pred4×4L[x,y]=p[-1,3]  x+2×y=其他值
16×16大小的亮度块的预测模式:
16×16大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有4种预测模式,如图3所示,其中灰色的部分表示256个预测像素点,白色的标记为h1~h17和v2~v17的部分表示相邻的参考像素点。4种预测模式的名字和描述如表2所示,各个模式的预测公式在表后给出。
表216×16亮度块的预测模式的名字和描述
  模式编号  名字  描述
  9(垂直)  Intra_16×16_Vertical  由h2~h17垂直推出预测像素点的值
  10(水平)  Intra_16×16_Horizontal  由v2~v17水平推出预测像素点的值
  11(DC)  Intra_16×16_DC  由h2~h17和v2~v17的平均值推出预测像素点的值
  15(平面)  Intra_16×16_Plane  由h1~h17和v2~v17利用线形plane函数推出预测像素点的值
模式9:pred16×16L[x,y]=p[x,-1]x=0..15,y=0.15
模式10:pred16×16L[x,y]=p[-1,y]x=0  15,y=0..15
模式11:当参考像素h2~h17和v2~v17都存在时
pred16×16L[x,y]=(p[0,-1]++p[15,-1]+p[-1,0]++p[-1,15]+16)/32
当只有参考像素h2~h17存在时
pred16×16L[x,y]=(p[0,-1]+..+p[15,-1]+8)/16
当只有参考像素v2~v17存在时
pred16×16L[x,y]=(p[-1,0]+.+p[-1,15]+8)/16
当参考像素h2~h17和v2~v17都不存在时
pred16×16L[x,y]=128
模式15:pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32
a=16×(p[-1,15]+p[15,-1]),b=(5×H+32)/64,c=(5×V+32)/64
H = Σ x = 0 7 ( x + 1 ) × ( p [ 8 + x , - 1 ] - p [ 6 - x , - 1 ] )
V = Σ y = 0 7 ( y + 1 ) × ( p [ - 1,8 + y ] - p [ - 1,6 - y ] )
其中Clip1函数的意义是:
Figure C20061011386800083
8×8大小的色度块的预测模式:
8×8大小的色度块使用与其相邻的上面和左面的像素点来预测,一共有4种预测模式,如图4所示,其中灰色的部分表示64个预测像素点,白色的标记为h1~h9和v2~v9的部分表示相邻的参考像素点。4种预测模式的名字和描述如表3所示,各个模式的预测公式在表后给出。
表38×8色度块的预测模式的名字和描述
  模式编号  名字  描述
  12(DC)  Intra_Chroma_DC  由h2~h9和v2~v9的平均值推出预测像素点的值
  13(水平)  Intra_Chroma_Horizontal  由v2~v9水平推出预测像素点的值
  14(垂直)  Intra_Chroma_Vertical  由h2~h9垂直推出预测像素点的值
  16(平面)  Intra_Chroma_Plane  由h1~h9和v2~v9利用线彤plane函数推出预测像素点的值
模式12:分成四个区域进行预测
(1)x=0~3和y=0~3的区域
当参考像素h2~h5和v2~v5都存在时
pred8×8C[x,y]=(p[0,-1]+.+p[3,-1]+p[-1,0]+..+p[-1,3]+4)/8
当只有参考像素h2~h5存在时
pred8×8C[x,y]=(p[0,-1]+.+p[3,-1]+2)/4
当只有参考像素v2~v5存在时
pred8×8C[x,y]=(p[-1,0]++p[-1,3]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred8×8C[x,y]=128
(2)x=4~7和y=0~3的区域
当参考像素h6~h9和v2~v5都存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]-p[-1,0]++p[-1,3]+4)/8
当只有参考像素h6~h9存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]+2)/4
当只有参考像素v2~v5存在时
pred8×8C[x,y]=(p[-1,0]+..+p[-1,3]+2)/4
当参考像素h6~h9和v2~v5都不存在时
pred8×8C[x,y]=128
(3)x=0~3和y=4~7的区域
当参考像素h2~h5和v6~v9都存在时
pred8×8C[x,y]=(p[0,-1]++p[3,-1]+p[-1,4]++p[-1,7]+4)/8
当只有参考像素h2~h5存在时
pred8×8C[x,y]=(p[0,-1]++p[3,-1]+2)/4
当只有参考像素v6~v9存在时
pred8×8C[x,y]=(p[-1,4]+.+p[-1,7]+2)/4
当参考像素h2~h5和v6~v9都不存在时
pred8×8C[x,y]=128
(4)x=4~7和y=4~7的区域
当参考像素h6~h9和v6~v9都存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]+p[-1,4]++p[-1,7]+4)/8
当只有参考像素h6~h9存在时
pred8×8C[x,y]=(p[4,-1]+.+p[7,-1]+2)/4
当只有参考像素v6~v9存在时
pred8×8C[x,y]=(p[-1,4]+.+p[-1,7]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred8×8C[x,y]=128
模式13:pred8×8C[x,y]=p[-1,y]  x=0.7,y=0.7
模式14:pred8×8C[x,y]=p[x,-1]  x=0.7,y=07
模式16:pred8×8C[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32
a=16×(p[-1,7]+p[7,-1]),b=(17×H+16)/32,c=(17×V+16)/32
H = Σ x = 0 3 ( x + 1 ) × ( p [ 4 + x , - 1 ] - p [ 2 - x , - 1 ] )
V = Σ y = 0 3 ( y + 1 ) × ( p [ - 1,4 + y ] - p [ - 1,2 - y ] )
目前关于H 264解码器的帧内预测器的电路结构,有采用可重构的方法进行设计的。该方法先设计一个可以每个时钟周期计算1个像素点的预测值的可重构的运算单元,再通过将多个这样的运算单元并行来提高计算的并行度。可重构的方法以降低计算的并行度为代价节省了硬件资源,并且需要对每个运算单元的输入输出数据进行调度,增加了控制逻辑的复杂度。
本发明分析了H.264标准的帧内预测的17种预测模式,对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器,可以每个时钟周期计算16个预测像素点的值。
发明内容
本发明的目的在于提供了一种采用数字计算强度缩减的方法去除计算的冗余后得到的高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。
对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。
数字计算强度缩减算法:
数字计算强度缩减是旨在减少计算强度的数字变换技术。该方法的思想是通过一定的变换和重组,找出不同的计算中相同的子表达式,即冗余操作,对这些冗余操作只需要进行一次计算,并将计算结果共享,从而减少计算的强度,节省硬件资源。
设计思想:
观察图2、图3和图4所示的一共17种预测模式的预测公式,可以看出,同一个像素点的不同模式的预测公式之间有很多子表达式是相同的,适合采用数字计算强度缩减的方法共享这些子表达式,从而节省硬件资源。进一步的观察发现,不但同一个像素点的不同预测模式的预测公式之间有很多冗余计算,而且一个4×4大小块的16个像素点的同一个预测模式的预测公式之间也有很多相同的子表达式。于是,本发明提出的帧内预测器的系统结构,基于以下的设计思想:对每个4×4大小块的16个像素点的17种预测模式的预测公式,采用数字计算强度缩减的方法,消除其中的冗余操作。
采用这样的结构,可以每个时钟周期计算16个预测像素点的值,从而在不降低计算并行度的条件下,有效地减少硬件资源。具体实现时,对图2所示的4×4大小块,每个时钟周期得到该块的16个预测像素点的值,对图3所示的16×16大小块和图4所示的8×8大小块,分别划分为16个和4个4×4大小块,按照光栅扫描的顺序,每个时钟周期得到其中一个4×4大小块的16个预测像素点的值。
帧内预测器整体框图:
图2、图3和图4中已经将17种预测模式从模式0到模式16编号。观察17种预测模式的预测公式,可以看出,模式0到模式14的预测公式都只有加法运算(其中与常数的乘法运算可以用加法和移位实现),模式15和模式16都是利用线形plane函数进行预测,其预测公式包含加法、减法和乘法运算。所以,我们设计的帧内预测器,将模式0到模式14放在一起采用数字计算强度缩减的方法进行化简,将模式15和模式16放在一起采用数字计算强度缩减的方法进行化简。图5给出了帧内预测器的整体结构框图,它一共包含4个主要的模块:adders模块用来计算每个4×4大小块的16个像素点的模式0到模式14的预测值;plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块,计算16个像素点的模式15或模式16的预测值;select模块根据不同的预测模式以及参考像素是否存在的信号,从模式0到模式16的预测值中,选择一个模式的预测值作为16个预测像素点的值输出;control模块是控制单元,为plane模块产生块位置信号。
adders模块:
adders模块采用数字计算强度缩减的方法减少加法运算的次数,对于每个4×4大小块的16个像素点的模式0到模式14的所有预测公式中相同的加法运算,将计算结果共享,消除计算的冗余。最终得到的adders模块的结构框图如图6所示,其中有22个8位加法器,21个9位加法器,8个10位加法器,2个11位加法器和1个12位加法器,一共55个加法器。图6所示的adders模块的输入数据是参考像素h1~h17和v2~v17,输出数据是每个4×4大小块的16个像素点的模式0到模式14的所有预测值。为了减小关键路径的长度,在10bit加法器组与11bit加法器组之间插入一组寄存器。按照数字计算强度缩减的方法设计的加法器可以逐级增加加法器位宽,而按照可重构的设计方法,运算单元中的加法器都需要按照最大可能的数据位宽,设置为16位的加法器。
plane模块:
plane模块采用数字计算强度缩减的方法去除了两方面的冗余:一方面,16×16大小的亮度块的预测模式15和8×8大小的色度块的预测模式16都是利用线形plane函数进行预测,预测过程完全相似,只是块的大小不同,所以模式16的计算可以全部并入模式15中;另一方面,模式15和模式16对每个像素点的预测值的计算包含2个乘法运算,可以将16个像素点的预测值的计算中的乘法运算拆分为加法运算,并且去除其中的冗余,从而消除了乘法运算。最终得到的plane模块的结构框图如图7所示,其中的常数计算模块根据模式15和模式16的预测公式计算参数a、b、c,预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。
select模块:
select模块的结构如图8所示。根据预测模式以及参考像素是否存在的信号,通过多路选择器从adders模块和plane模块计算得到的模式0到模式16的预测值中,为每个4×4大小块的16个像素点选择一个模式的预测值输出,并对输出的预测值完成四舍五入和移位操作。
control模块:
本发明提出的高并行度的结构可以同时计算得到一个4×4大小块的16个像素点的17个模式的预测值,所以control模块需要完成的控制就很简单,只需要对16×16大小的亮度块或者8×8大小的色度块内不同位置的4×4大小块产生不同的块位置(xb,yb,具体的产生方法如表4和表5所示。而采用可重构的设计方法,每个运算单元都需要有一个控制模块负责该运算单元内的数据流的调度,运算单元之间还有一个总的控制模块负责各个运算单元的输入数据的选择和各个运算单元之间的数据流的调度,随着并行度的提高,控制逻辑也会变得复杂。
表416×16亮度块的块位置产生方法
  16×16亮度块的区域   (xb,yb) 16×16亮度块的区域   (xb,yb)
  x=0~3,y=0~3   (0,0) x=8~11,y=0~3   (2,0)
  x=0~3,y=4~7   (0,1) x=8~11,y=4~7   (2,1)
  x=0~3y=8~11   (0,2) x=8~11,y=8~11   (2,2)
  x=0~3,y=12~15   (0,3) x=8~11,y=12~15   (2,3)
  x=4~7,y=0~3   (1,0) x=12~15,y=0~3   (3,0)
  x=4~7,y=4~7   (1,1) x=12~15,y=4~7   (3,1)
  x=4~7,y=8~11   (1,2) x=12~15,y=8~11   (3,2)
  x=4~7,y=12~15   (1,3) x=12~15,y=12~15   (3,3)
表5  8×8色度块的块位置产生方法
8×8亮度块的区域   (xb,yb)   8×8亮度块的区域   (xb,yb)
x=0~3,y=0~3   (0 0)   x=4~7,y=0~3   (1 0)
x=0~3  y=4~7   (0 1)   x=4~7,y=4~7   (1 1)
本发明的特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中:
加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中:
8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系:水平向右为x轴的正方向,竖直向下为y轴的正反向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;
9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;
10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;
寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;
11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;
12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;
线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中:
常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中:
预测模式15是16×16大小的亮度块的预测模式,表示为:
pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,
a=16×(p[-1,15]+p[15,-1]),
b=(5×H+32)/64,
c=(5×V+32)/64,
H = Σ x = 0 7 ( x + 1 ) × ( p [ 8 + x , - 1 ] - p [ 6 - x , - 1 ] ) ,
V = Σ y = 0 7 ( y + 1 ) × ( p [ - 1,8 + y ] - p [ - 1,6 - y ] ) ,
其中Clip1函数的意义是:
Figure C20061011386800133
其中(x,y)是像素点的坐标,下同;
预测模式16是8×8大小的色度块的预测模式,表示为:
pred8×8C[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,
a=16×(p[-1,7]+p[7,-1]),
b=(17×H+16)/32,
c=(17×V+16)/32,
H = Σ x = 0 3 ( x + 1 ) × ( p [ 4 + x , - 1 ] - p [ 2 - x , - 1 ] ) ,
V = Σ y = 0 3 ( y + 1 ) × ( p [ - 1,4 + y ] - p [ - 1,2 - y ] ) ;
预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算:
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]
其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标:
dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,
dx=4×xb,dy=4×yb,用于8×8大小的色度块,
所述预测值计算模块共28用个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;
选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值:参考像素值,取相应的参考像素值作为输出值;数字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;
控制模块control,输入信号指示当前要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
本设计硬件上用FGPA实现,用Matlab进行行为级建模,用Vetilog进行RTL级编码和功能仿真。基于SMIC 0.18μm最坏的工艺,综合后的电路的关键路径最大时延为10ns,即时钟频率达到100MHz,电路规模不超过14万门。
附图说明
图1  坐标定义说明
图2  4×4亮度块的9种预测模式
图3  16×16亮度块的4种预测模式
图4  8×8色度块的4种预测模式
图5  帧内预测器的整体框图
图6  adders模块的结构框图
图7  plane模块的结构框图
图8  select模块的结构框图
实施方式
这里具体说明采用数字计算强度缩减算法,去除计算冗余后得到adders模块和plane模块的具体实施过程,以及select模块的实施方式。
图6所示的adders模块由加法器组构成,通过观察4×4大小块的16个像素点的模式0到模式14的预测公式,对其中相同的加法运算,只计算一次并将结果共享。为了减少关键路径的长度,在图6的10位加法器组和11位加法器组之间插入了一组寄存器。图6中的各个加法器组所完成的加法运算如下所示:
8bit加法器组:
  编号   8bit加法器   编号   8bit加法器   编号   8bit加法器
  8_1   add_8_h1_h2=h1+h2   8_9   add_8_h10_h11=h10+h11   8_17   add_8_v6_v7=v6+v7
  8_2   add_8_h2_h3=h2+h3   8_10   add_8_h12_h13=h12+h13   8_18   add_8_v8_v9=v8+v9
  8_3   add_8_h3_h4=h3+h4   8_11   add_8_h14_h15=h14+h15   8_19   add_8_v10_v11=v10+v11
  8_4   add_8_h4_h5=h4+h5   8_12   add_8_h16_h17=h16+h17   8_20   add_8_v12_v13=v12+v13
  8_5   add_8_h5_h6=h5+h6   8_13   add_8_v1_v2=h1+v2   8_21   add_8_v14_v15=v14+v15
  8_6   add_8_h6_h7=h6+h7   8_14   add_8_v2_v3=v2+v3   8_22   add_8_v16_v17=v16+v17
  8_7   add_8_h7_h8=h7+h8   8_15   add_8_v3_v4=v3+v4
  8_8   add_8_h8_h9=h8+h9   8_16   add_8_v4_v5=v4+v5
9bit加法器组:
Figure C20061011386800161
10bit加法器组:
  编号   10bit加法器
  10_1   add_10_h2_h3_h4_h5_v2_v3_v4_v5=add_9_h2_h3_h4_h5+add_9_v2_v3_v4_v5
  10_2   add_10_h2_h3_h4_h5_v6_v7_v8_v9=add_9_h2_h3_h4_h5+add_9_v6_v7_v8_v9
  10_3   add_10_h6_h7_h8_h9_v2_v3_v4_v5=add_9_h6_h7_h8_h9+add_9_v2_v3_v4_v5
  10_4   add_10_h6_h7_h8_h9_v6_v7_v8_v9=add_9_h6_h7_h8_h9+add_9_v6_v7_v8_v9
  10_5   add_10_h2_h3_h4_h5_h6_h7_h8_h9=add_9_h2_h3_h4_h5+add_9_h6_h7_h8_h9
  10_6   add_10_v2_v3_v4_v5_v6_v7_v8_v9=add_9_v2_v3_v4_v5+add_9_v6_v7_v8_v9
  10_7   add_10_h10_h11_h12_h13_h14_h15_h16_h17=add_9_h10_h11_h12_h13+add_9_h14_h15_h16_h17
  10_8   add_10_v10_v11_v12_v13_v14_v15_v16_v17=add_9_v10_v11_v12_v13+add_9_v14_v15_v16_v17
11bit加法器组:
  编号   11bit加法器
  11_1   add_11_h_all=add_10_h2_h3_h4_h5_h6_h7_h8_h9+add_10_h10_h11_h12_h13_h14_h15_h16_h17
  11_2   add_11_v_all=add_10_v2_v3_v4_v5_v6_v7_v8_v9+add_10_v10_v11_v12_v13_v14_v15_v16_v17
12bit加法器组:
  编号  12bit加法器
  12_1  add_12_h_v_all=add_11_h_all+add_11_v_all
图7所示的plane模块由常数计算模块和预测值计算模块组成。
常数计算模块根据模式15和模式16的预测公式,计算参数a、b、c。预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。下面说明预测值计算模块采用数字计算强度缩减算法的具体实施过程。
根据模式15和模式16的预测公式可以知道,对16×16大小的亮度块的每个像素点完成(1)式的计算,或者对8×8大小的色度块的每个像素点完成(2)式的计算,就可以得到像素点的预测值。其中的[x,y]是待预测像素点在坐标系中的位置坐标。
a+b×(x-7)+c×(y-7)    (1)
a+b×(x-3)+c×(y-3)    (2)
通过引入一对系数(dx,dy)和一对坐标(xp,yp),可以将(1)式和(2)式的计算统一用(3)式实现。其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在4×4大小块内的位置坐标。
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]    (3)
令C=(a+b×dx+c×dy),对于每个4×4大小块的16个像素点,C是一个公共子表达式,可以只计算一次将结果共享。对于16×16大小的亮度块,(dx,dy)按照(4)式得到,对于8×8大小的色度块,(dx,dy)按照(5)式得到。(4)式和(5)式中的乘法运算都可以用移位操作实现,并且得到的dx和dy都是4的倍数,所以C中的乘法运算也可以用移位操作实现,于是完成C的计算一共需要2个加法器。
dx=4×(xb-1),dy=4×(yb-1)    (4)
dx=4×xb,dy=4×yb            (5)
令S=[b×(3-xp)+c×(3-yp)],对于每个4×4大小块的16个像素点,由于其位置(xp,yp)不同,所以需要分别计算各自的S值。将16个像素点的位置坐标(xp,yp)代入S的计算式,并将乘法运算用加法运算实现,得到表6所示的结果,其中b+c是一个可以共享的子表达式。统计表6中16个像素点的S值的计算,可以看到一共需要10个加法器。所以,通过数字计算强度缩减的方法,完成16个像素点的S值的计算,只需要用10个加法器,而省去了乘法运算。
表616个像素点的S值的计算
  (xp,yp)   s   (xp,yp)   s
  (0,0) 2(b+c)+(b+c)   (2,0)   (b+c)+2c
  (0,1) b+2(b+c)   (2,1)   b+2c
  (0,2) 2b+2(b+c)   (2,2)   b+c
  (0,3) b+2b   (2,3)   b
  (1,0) 2(b+c)+c   (3,0)   2c+c
  (1,1) 2(b+c)   (3,1)   2c
  (1 2) 2b+c   (3,2)   c
  (1 3) 2b   (3,3)   0
另外,用(3)式完成16个像素点的预测值计算,完成还需要16个减法器。
综上,对每个4×4大小块的16个像素点,完成(3)式的计算,一共需要2+10+16=28个加法器(包含减法器)。为了减少关键路径的长度,可以在图7的常数计算模块和预测值计算模块之间插入一组寄存器。
图8所示的select模块根据预测模式和参考像素是否存在的信号,通过一个多路选择器选择相应预测模式的预测值输出,具体的选择方法如表7所示。其中“输出的预测值”一列中有可能出现四种数据:一是参考像素值,表示取相应的参考像素值作为预测值;二是数字128,表示预测值就是128;三是加法器的编号,表示取相应的加法器的输出作为预测值;四是plane模块的输出,表示取plane模块的输出作为预测值。
表7输出的预测值的选择方法
Figure C20061011386800181
从实现结果来看,采用数字计算强度缩减的方法进行设计,与可重构的方法相比,有以下三个优点:①可重构的方法得到的设计需要复杂的控制逻辑,数字计算强度缩减的方法使得控制逻辑很简单。②采用数字计算强度缩减的方法设计可以逐级增大加法器的位宽,而可重构的方法需要按照最大可能的位宽设计加法器。③两种设计方法在达到相同的计算并行度时,需要的硬件资源数目相当,但是考虑到可重构的方法需要按照最大可能的位宽设计加法器,并且控制逻辑也相对复杂,所以数字计算强度缩减的方法得到的电路面积更小。

Claims (1)

1. 高并行度的帧内预测器,其特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中:
加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中:
8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系:水平向右为x轴的正方向,竖直向下为y轴的正方向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;
9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;
10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;
寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;
11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;
12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;
线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中:
常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中:
预测模式15是16×16大小的亮度块的预测模式,表示为:
pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,
a=16×(p[-1,15]+p[15,-1]),
b=(5×H+32)/64,
c=(5×V+32)/64,
H = Σ x = 0 7 ( x + 1 ) × ( p [ 8 + x , - 1 ] - p [ 6 - x , - 1 ] ) ,
V = Σ y = 0 7 ( y + 1 ) × ( p [ - 1,8 + y ] - p [ - 1,6 - y ] ) ,
其中Clip1函数的意义是:
Figure C2006101138680003C3
其中(x,y)是像素点的坐标,下同;
预测模式16是8×8大小的色度块的预测模式,表示为:
pred8×8c[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,
a=16×(p[-1,7]+p[7,-1]),
b=(17×H+16)/32,
c=(17×V+16)/32,
H = Σ x = 0 3 ( x + 1 ) × ( p [ 4 + x , - 1 ] - p [ 2 - x , - 1 ] ) ,
V = Σ y = 0 3 ( y + 1 ) × ( p [ - 1,4 + y ] - p [ - 1,2 - y ] ) ;
预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算:
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]
其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标:
dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,
dx=4×xb,dy=4×yb,用于8×8大小的色度块,
所述预测值计算模块共用28个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;
选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值:参考像素值,取相应的参考像素值作为输出值;效字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;
控制模块control,输入信号指示当的要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
CNB2006101138688A 2006-10-20 2006-10-20 高并行度的帧内预测器的实现方法 Expired - Fee Related CN100413344C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101138688A CN100413344C (zh) 2006-10-20 2006-10-20 高并行度的帧内预测器的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101138688A CN100413344C (zh) 2006-10-20 2006-10-20 高并行度的帧内预测器的实现方法

Publications (2)

Publication Number Publication Date
CN1937774A CN1937774A (zh) 2007-03-28
CN100413344C true CN100413344C (zh) 2008-08-20

Family

ID=37954989

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101138688A Expired - Fee Related CN100413344C (zh) 2006-10-20 2006-10-20 高并行度的帧内预测器的实现方法

Country Status (1)

Country Link
CN (1) CN100413344C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100592796C (zh) * 2008-04-15 2010-02-24 中国科学院计算技术研究所 一种视频编码器及其帧内预测模式选择方法
CN101854540B (zh) * 2009-04-01 2014-07-02 辉达公司 用于应用h.264视频编码标准的帧内预测方法及装置
CN101562592B (zh) * 2009-05-22 2013-03-20 哈尔滨工业大学 基于存储单元的相位因子结合方法
CN105120262A (zh) * 2010-02-24 2015-12-02 夏普株式会社 图像解码装置
KR101530284B1 (ko) 2010-07-16 2015-06-19 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
CN105898334B (zh) * 2016-06-22 2017-12-05 合肥工业大学 一种应用于视频编解码的dc预测电路及其方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529512A (zh) * 2003-10-17 2004-09-15 中国科学院计算技术研究所 基于流水线的帧内预测模式块编码加速方法
CN1589028A (zh) * 2004-07-29 2005-03-02 联合信源数字音视频技术(北京)有限公司 基于像素流水的帧内预测装置及预测方法
CN1589025A (zh) * 2004-07-30 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种基于软硬件协同控制的视频解码器
WO2005029866A1 (de) * 2003-09-18 2005-03-31 Siemens Aktiengesellschaft Verfahren zur transcodierung eines datenstroms, der ein oder mehrere codierte digitalisierte bilder umfasst

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005029866A1 (de) * 2003-09-18 2005-03-31 Siemens Aktiengesellschaft Verfahren zur transcodierung eines datenstroms, der ein oder mehrere codierte digitalisierte bilder umfasst
CN1529512A (zh) * 2003-10-17 2004-09-15 中国科学院计算技术研究所 基于流水线的帧内预测模式块编码加速方法
CN1589028A (zh) * 2004-07-29 2005-03-02 联合信源数字音视频技术(北京)有限公司 基于像素流水的帧内预测装置及预测方法
CN1589025A (zh) * 2004-07-30 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种基于软硬件协同控制的视频解码器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种并行结构的H.264帧内预测器. 刘凌志,路奇,戎蒙恬,郑世宝.上海交通大学学报,第40卷第1期. 2006
一种并行结构的H.264帧内预测器. 刘凌志,路奇,戎蒙恬,郑世宝.上海交通大学学报,第40卷第1期. 2006 *

Also Published As

Publication number Publication date
CN1937774A (zh) 2007-03-28

Similar Documents

Publication Publication Date Title
CN100413344C (zh) 高并行度的帧内预测器的实现方法
Zhao et al. High-performance multiplierless transform architecture for HEVC
US8594198B2 (en) Method of implementing intra prediction computation applied to H.264 digital video coding and device
Amish et al. Fully pipelined real time hardware solution for High Efficiency Video Coding (HEVC) intra prediction
CN102572430A (zh) 一种基于可重构技术的h.264去块滤波算法的实现方法
Martuza et al. A cost effective implementation of 8× 8 transform of HEVC from H. 264/AVC
Kammoun et al. Design exploration of efficient implementation on SoC heterogeneous platform: HEVC intra prediction application
Kalali et al. An approximate HEVC intra angular prediction hardware
Azgin et al. A computation and energy reduction technique for HEVC intra prediction
Azgin et al. An efficient FPGA implementation of HEVC intra prediction
CN101383971A (zh) 一种基于图像编解码的帧内预测的处理方法
CN105100799A (zh) 一种减少hevc编码器中帧内编码时延的方法
Baldev et al. Scalable wavefront parallel streaming deblocking filter hardware for HEVC decoder
JP4519807B2 (ja) 乗算器及びフィルタ処理装置
Tasdizen et al. A high performance and low cost hardware architecture for H. 264 transform and quantization algorithms
CN102025996B (zh) 多预测模式复用的h.264帧内处理单元
Le et al. High-Throughput Parallel Architecture for H. 265/HEVC Deblocking Filter.
Bonatto et al. Low-power multi-size HEVC DCT architecture proposal for QFHD video processing
Roszkowski et al. Intra prediction for the hardware H. 264/AVC high profile encoder
CN103731674B (zh) 一种h.264二维并行后处理去块滤波器硬件实现方法
Kopperundevi et al. Methods to develop high throughput hardware architectures for HEVC Deblocking Filter using mixed pipelined-block processing techniques
CN108848388B (zh) 一种提高H264编码16x16预测模式DCT运算速度的硬件实现方法
Ayadi et al. A novel deblocking filter architecture for H. 264/AVC
CN104363459A (zh) 一种适用于hevc标准中帧内预测的参考像素的硬件填充方法
Verderber et al. HW/SW codesign of the MPEG-2 video decoder

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080820

Termination date: 20101020