一种H.265/HEVC中8x8子宏块的并行帧内预测方法

文档序号:9755175阅读:1049来源:国知局
一种H.265/HEVC中8x8子宏块的并行帧内预测方法
【技术领域】
[0001 ] 本发明属于视频编码领域和显卡通用计算领域,更具体地,涉及一种H.265/HEVC中8x8子宏块的并行帧内预测方法。
【背景技术】
[0002]H.265/HEVC标准是提出不久的新一代视频压缩标准,在许多领域都开始推广应用。与之前的已经成熟的H.264/AVC标准相似,H.265/HEVC同样采用是的基于像素域的帧内预测方法,该方法针对可用的预测模式以及各种分块大小进行遍历计算,通过率失真公式得到一个在视频质量和视频压缩率两方面效果都比较好的一种预测模式,这种全模式预测使得整个过程计算复杂度相当高。H.265/HEVC相比于H.264/AVC标准采用更多帧内预测模式,由H.264/AVC标准的9种帧内预测模式增加到35种;同时采用了更多更大的预测块进行预测,这样能更好的处理高分辨率的视频。
[0003]为了降低全模式预测的编码时间,研究者提出了许多行之有效的解决方案,其中基于GPU硬件加速的方法在减少编码时间上效果最好。基于GHJ的帧内预测主要采用的是CUDA架构,它是由NVIDIA提出的通用计算平台,将复杂的GPU指令包装成浅显易懂的运行时指令,极大地降低了编写显卡设备代码的难度。CUDA采用的是一种类似于SMD的执行模型,比较适合于易并行计算,对于数据相关性强、逻辑复杂的情况,CUDA并行并不是很好的选择。
[0004]利用GPU的众核优势并行处理多帧图像,可以极大地提升编码效率。这一类算法需要修改视频帧中的像素块之间的编码顺序来提升并行度,其中一部分算法甚至牺牲视频质量,主动减少可使用的模式来降低数据依赖,进一步提升并行度。但是现有算法只是停留在粗粒度的并行方法上,对于细粒度的像素级并行仍然没有涉及,对GHJ的性能还不能充分地利用。现有技术方案总是采用单线程来遍历计算8x8子宏块中的35种预测模式或者采用简单的块级并行策略,不能采用多线程来并行处理所有像素,这是由于编码块中每个像素所参考的重建像素值会随自己所在位置而变化,进这种情况会导致大量的分支语句,因此不适合采用CUDA来并行处理。

【发明内容】

[0005]针对现有技术的缺陷或改进需求,本发明提供了一种H.265/HEVC中8x8子宏块的并行帧内预测方法,其目的在于,根据CUDA执行模型以及8x8子宏块帧内预测中的特性,建立统一参考数组、系数表和参考位置表,消除了执行过程中的大量分支语句,从而实现了像素级的并行,使之可以更有效地利用GHJ的众核优势。
[0006]为实现上述目的,本发明提出了一种H.265/HEVC中8X8子宏块的并行帧内预测方法,其特征在于,所述方法包括以下步骤:
[0007]⑴从已编码的视频帧中获取^个参考像素义上其中!^、!^、!^、!^、!^、!^、R7, O和R8, O为从左到右排列的上方参考像素,R9,Q、RlQ,()、Rll,()、Rl2,()、Rl3,()、Rl4,()、Rl5,(^PRl6,(^从左到右排列的右上方参考像素,办,1、办,2、1?(),3、1?(),4、1?(),5、1?(),6、1?(),7和1?(),8为从上到下排列的左侧参考像素,1?0,9、1?(),1()、1?(),11、1?(),12、1?(),13、1?(),14、1?(),15和1?(),16为从上到下排列的左下方参考像素,Rm为左上方参考像素;其中待预测8 X 8子宏块中的像素为Pi, j,i e [ I,8],j e [ I,8],所有待预测像素Pu构成8 X 8子宏块,所述待预测像素在对应的子宏块内的坐标位置表示为(x,y);
[0008](2)根据获取的参考像素生成一个长度为36的空的参考值数组Ref,该参考值数组用于存储的像素、两个随机生成的保留值和一个根据H.265/HEVC标准对17个参考像素进行计算生成的预测值DC;
[0009](3)根据H.265/HEVC中针对8 X 8子宏块的帧内预测计算公式和参考值数组Ref构造系数表!^和参考位置表T2;
[0010](4)根据步骤(3)构造的系数表T1和参考位置表X 8子宏块执行基于CUDA的并行帧内预测,其共有2240个线程用于并行处理所有35种预测模式。
[0011]作为进一步优选的,步骤(3)包括以下子步骤:
[0012](3.1)将H.265/HEVC中针对8X8子宏块的帧内预测计算公式归纳成如下:
[0013]针对预测模式18-34,帧内预测公式如下:
[0014]pred(x,y,m) = ((32-wy).Ri,o+wy.Ri+i,o+16)?5 (I)
[0015]Cy= (y.d)?5 (2)
[0016]Wy= (y.d)&31 (3)
[0017]i = x+cy (4)
[0018]其中Ri,o和Ri+1,o是8 X 8子宏块中的上方、右上方以及左上方参考像素,wy为权重因子,d为预测模式18-34中任一种预测模式相对于预测模式26的偏移量,X和y为待预测像素在对应的子宏块内的坐标位置,cy为与待预测像素纵坐标y有关的中间值,pred(X,y,m)是指坐标为(x,y)且预测模式为m的待预测像素的预测值,m表示8X8子宏块中帧内预测的18-34预测模式,(x,y,m)表示待预测像素对应的线程序号;
[0019]针对预测模式2-18,帧内预测公式如下:
[0020]pred(x,y,m) = ((32-wx).Ro,j+wx.Roj+i+16)?5 (5)
[0021]Cx= (x.d)>>5 (6)
[0022]Wx= (x.d)&31 (7)
[0023]j =y+cx (8)
[0024]其中Ro,j和办,」+1是8\8子宏块中的左侧、左下方以及左上方参考像素,wy为权重因子,d为预测模式2-18中任一种预测模式相对于预测模式10的偏移量,X和y为待预测像素在对应的子宏块内的坐标位置,Cx为与待预测像素横坐标X有关的中间值,pred(X,y,m)是指坐标为(x,y)且预测模式为m的像素的预测值,m表示8X8子宏块中帧内预测的2-18预测模式,(x,y,m)表示待预测像素对应的线程序号;
[0025]针对预测模式0,Plannar预测模式,帧内预测公式如下:
[0026]predv(x,y,0) = (8-y).Rx,o+y.Ro,9 (9)
[0027]predH(x,y,0) = (8-x).Ro,y+y.R9,o (10)
[0028]pred(x,y ,0) = (predv(x ,y ,m)+predH(x,y ,m)+8)>>4 (11)
[0029]其中Rx,Q是和待预测像素横坐标X位置所对应的上方参考像素,Ro,y是和待预测像素纵坐标y位置所对应的左侧参考像素,X和y为待预测像素在对应的子宏块内的坐标位置,pred(x,y,0)是指坐标为(x,y)且预测模式为O的像素的预测值,O表示8X8子宏块中帧内预测的预测模式0,(x,y,0)表示待预测像素对应的线程序号;
[0030]针对预测模式I,DC预测模式,帧内预测公式如下:
[0031]pred(x,y, I) =DC (12)
[0032]其中DC表示的是DC模式下的预测值,pred(x,y,l)是指坐标为(x,y)且预测模式为I的像素的预测值,I表示8X8子宏块中帧内预测的预测模式I,(x,y,I)表示待预测像素对应的线程序号;
[0033](3.2)进一步将公式(I)?公式(12)归纳成统一预测公式(13):
[0034]pred(x,y,m) = (a.Ri+b.1?2+入.Ro,9+y.R9,o+16)>>5 (13)
[0035]其中a,b,A,y是和(x,y,m)有关的系数值,且当预测模式m在0时,λ,μ均为O;Ri和R2均为8x8子宏块中参考像素Ri, j或预测值DC ; Ro, 9和R9, ο为对应位置的参考像素
[0036](3.3)将得到的系数值a,b,λ和μ存储在系数表T1中,同时将得到的仏和他在参考值数组Ref中的偏移量存储至参考位置表T2中,其在参考位置表T2中的位置偏移分别为m*168+8*y+x和m*168+8*y+x+36。
[0037]作为进一步优选的,步骤(4)包括以下子步骤:
[0038](4.1)根据8X8子宏块中参考像素Ri,j对参考值数组Ref进行初始化;
[0039](4.2)对8X8子宏块帧内预测执行预测,以生成35种模式的预测矩阵;
[0040](4.3)根据生成的35种模式的预测矩阵并采用率失真优化策略决策出一种最优模式。
[0041]作为进一步优选的,步骤(4.1)包括以下子步骤:
[0042](4.1.1)判断当前像素对应的线程序号(1,7,!11)是否等于(0,0,0),若等于则转入步骤(4.1.2),否则转入步骤(4.1.5);
[0043](4.1.2)将左上方参考像素Rq,q拷贝至Ref [O];
[0044](4.1.3)将左侧参考像素Rq,1、Rq,2、R(),3、R(),4、R(),5、R(),6、R(),7、R(),8和左下方参考像素!^(^、!^,!?、!^,!!、!^,^、!^,”、!^^、!^,^、!^,^分别拷贝至!^;!^]^]、Ref[2]、Ref[3]、Ref[4]、Ref[5]、Ref[6]、Ref[7]、Ref[8]、Ref[9]、Ref[10]、Ref[ll]、Ref[12]、Ref[13]、Ref[14]、Ref[15]、Ref[16];
[0045](4.1.4)将上方参考像素1?1,()、1?2,()、1?3,()、1?4,()、1?5,()、1?6,()、1?7,()、1?8,()和右上方参考像素尺9,0、1?1。,。、1?11,。、1?12,。、1?13,。、1?14,。、1?15,。、1?16,。分别拷贝至1?6;1!'[20]、Ref[21 ]、Ref [22]、Ref[23]、Ref[24]、Ref[25]、Ref[26]、Ref[27]、Ref[28]、Ref[29]、Ref[30]、Ref[31]、Ref[32]、Ref[33]、Ref[34]、Ref[35];
[0046](4.1.5)根据H.265/HEVC标准计算m = 0时8X8子宏块的预测值DC,并将该预测值DC拷贝至 Ref [17];
[0047](4.1.6)所有的2240个线程执行同步操作。
[0048]作为进一步优选的,步骤(4.2)包括以下子步骤:
[0049](4.2.1)线程序号为(x,y,m)的线程根据预测模式从参考位置表T2中依次读取仏和R2,其中Ri = T2[m*168+8*y+x],R2 = T2[m* 168+8*y+x+36];
[0050](4.2.2)根据预测模式,从参考值数组Ref中读取R1,R2以及Ro,9和R9,ο分别对应的参考像素 Ref [Ri]和 Ref [R2]以及 Ref [Ro
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1