视频编码帧内预测扫描方法及视频编码方法与流程

文档序号:11693820阅读:213来源:国知局
视频编码帧内预测扫描方法及视频编码方法与流程
本发明涉及视频编码技术,尤其涉及一种视频编码帧内预测扫描方法及视频编码方法。

背景技术:
在视频编码中,为了缩减图像的空间冗余,在给定帧的图像中充分利用相邻块的空间相关性,在对一给定的块进行编码时,首先根据周围的块进行预测,典型的是根据左上角块,左边块和上面块进行预测,因为这些块已经被处理,然后对预测值与实际值的差值进行编码,这样相对于直接对该帧编码而言,可以大大减小码率。由于块中像素是以矩阵的形式排布,经过差值计算后得到的也是残差系数的二维数列,此时需要将此二维系数整理到一个一维数组中,然后对这个一维数组进行熵编码而达到压缩的目的。在这帧内预测编码的过程中,整理后的一维残差系数序列的排列特征直接影响最后一步熵编码的压缩效率。因为非零系数比较集中在前方的数字序列在进行熵编码的时候的效率会非常高,而非零系数不规则分布在数字序列不同位置的情况则很难获得较高的熵编码效率,从而帧内编码后压缩效率会较低而得到的码率也会比较高。

技术实现要素:
有鉴于此,有必要提供一种视频编码帧内预测扫描方法及视频编码方法,其可以提升熵编码的效率,降低视频编码的码率。上述的视频编码帧内预测扫描方法是通过以下技术方案实现的:一种视频编码帧内预测扫描方法,其包括:提供像素块的二维残差系数阵列;将该二维残差系数阵列拆分为多个子阵列;将每个子阵列内的残差系数按预定顺序排列成为一维数列;将该多个子阵列的一维数列连接成该像素块的一维残差系数列;以及对该一维残差系数列进行熵编码。上述的视频编码方法是通过以下技术方案实现的:一种视频编码方法,其包括:提供一帧图像;将该图像分为多个像素块;针对该像素块采用至少两种帧内预测扫描方法进行帧内预测以得到熵编码,其中该至少两种帧内预测扫描方法之一为上述的帧内预测扫描方法;选择使用具有更高效率的熵编码并记录帧内预测方法所使用的扫描方法。作为上述技术方案的进一步改进,上述多个子阵列排布形成N*N的矩阵,每个子阵列的序号为(r-1)*N+c,其中r为子阵列的行号,c为子阵列的列号,r、c取值范围为1到N之间的整数,在将多个子阵列的一维数列连接成该一维残差系数列时以子阵列的序号为序从小到大将与子阵列对应的一维数列依次首尾相连得到该一维残差系数列。作为上述技术方案的进一步改进,上述子阵列为M*M的矩阵,子阵列中每个残差系数的序号为((r-1)*N+c-1)*M2+(r’-1)*M+c’,其中r’为残差系数在子阵列中的行号,c’为残差系数在子阵列中的列号,r’、c’取值范围为1到M之间的整数,在将子阵列内的残差系数排列为一维数列时以其序号从小到大为序。作为上述技术方案的进一步改进,上述多个子阵列排布形成N*N的矩阵,每个子阵列的序号为(c-1)*N+r,其中r为子阵列的行号,c为子阵列的列号,r、c取值范围为1到N之间的整数,在将多个子阵列的一维数列连接成该一维残差系数列时以子阵列的序号从小到大将与子阵列对应的一维数列依次首尾相连得到该一维残差系数列。作为上述技术方案的进一步改进,上述子阵列为M*M的矩阵,子阵列中每个残差系数的序号为((c-1)*N+r-1)*M2+(c’-1)*M+r’,其中r’为残差系数在子阵列中的行号,c’为残差系数在子阵列中的列号,r’、c’取值范围为1到M之间的整数,在将子阵列内的残差系数排列为一维数列时以其序号从小到大为序。由于图像的空间相关性,一般来说,二维残差系数阵列中非零系数均集中在阵列的一个顶点处,上述的视频编码帧内预测扫描方法中,由于将二维残差系数阵列拆分为多个子阵列,可使非零系数仅落入相邻的几个子阵列内,可以避免Z型扫描方法中将过多的零引入最终得到的一维数列的非零系数中间,因此可以提高熵编码的效率,降低码率。进一步地,上述视频编码方法中,通过同时使用三种帧内预测扫描方法并选择具有最高熵编码效率的扫描方法,可以最大程度的提升熵编码的效率,降低视频编码的码率。为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明图1为帧内预测Z型扫描顺序示意图。图2为一个8*8像素块对应的残差系数阵列的示意图。图3为另一个8*8像素块对应的残差系数阵列的示意图。图4为第一实施例所揭示的视频编码帧内预测扫描方法流程图。图5为第二实施例所揭示的视频编码帧内预测扫描顺序示意图。图6为第三实施例所揭示的视频编码帧内预测扫描顺序示意图。图7为第四实施例所揭示的视频编码方法流程图。具体实施方式为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的视频编码帧内预测扫描方法及视频编码方法的具体实施方式、结构、特征及其功效,详细说明如后。图1为一种已知的帧内预测Z型扫描顺序示意图。如图1所示,其为一个8*8的像素块对应的残差系数阵列的扫描顺序,其序号从0一直到63,共计64个系数,每个系数对应于一个像素点。总体上来说,扫描顺序的路径大体呈Z字形,从阵列的左上角至右下角,按照系数的序号大小将系数排列而得到一个一维残差系数列。图2为一个8*8像素块对应的残差系数阵列的示意图,其采用图1所示的Z型扫描顺序转化后得到一维残差系数列2,0,-5,0,-2,1,0…。图3为另一个8*8像素块对应的残差系数阵列的示意图,其采用图1所示的Z型扫描顺序转化后得到一维残差系数列7,-1,-3,-2,-1,0,0,0,0,-1,0…可以看出,图2中,非零系数存在于第0、1行内,而图3中非零系数存在于第0、1列中,采用图1所示的Z型扫描转化为一维数列后,图2对应的一维数列中非零系数中间夹杂有两个0,而图3对应的一维数列中夹杂有4个零。第一实施例图4为第一实施例所揭示的视频编码帧内预测扫描方法流程图。如图4所示,该方法包括以下步骤:步骤110、提供像素块的二维残差系数阵列;步骤120、将该二维残差系数阵列拆分为多个子阵列;步骤130、将每个子阵列内的残差系数按预定顺序排列成为一维数列;步骤140、将该多个子阵列的一维数列连接成该像素块的一维残差系数列;以及步骤150、对该一维残差系数列进行熵编码。在帧内预测中,一般可以采用当前块的左上、左边、或者上面的块对当前块进行帧内预测计算。具体地,将当前块的系数阵列与预测块的系数阵列相减,而得到相应的二维残差系数阵列。由于图像的空间相关性,一般来说,二维残差系数阵列中的非零系数集中在顶点处,如图2、3所示。一般来说,像素块的大小为8*8或者16*16,而子阵列的大小例如可为2*2。因此,对于8*8的像素块,其对应的二维残差系数阵列可以分为16个2*2的子阵列,而这16个子阵列共同构成一个4*4的矩阵。对于每个子阵列,其内的二维残差系数可以参考图1所示的Z型扫描顺序,将其转换为一维数列,而后将所有的子阵列的一维数列连接起来得到与二维残差系数阵列相对应的一维残差系数列。由于图像的空间相关性,一般来说,二维残差系数阵列中非零系数均集中在阵列的一个顶点处,上述的视频编码帧内预测扫描方法中,由于将二维残差系数阵列拆分为多个子阵列,可使非零系数仅落入相邻的几个子阵列内,可以避免图1所示Z型扫描方法中将过多的零引入最终得到的一维数列的非零系数中间,因此可以提高熵编码的效率,降低码率。第二实施例图5为第二实施例揭示的视频编码帧内预测扫描顺序示意图。如图5所示,其为对应于8*8的像素块的二维残差系数阵列。该二维残差系数阵列分为16个2*2子阵列,而16个子阵列构成4*4的矩阵,每个子阵列的序号为(r-1)*N+c,其中N为子阵列矩阵的行数或列数,r为子阵列在矩阵的行号,c为子阵列在矩阵中的列号。可以理解,本实施例中,N为4,r、c为1到N之间的整数。对于每个子阵列,其左上角为起第一位,右上角为第二位、左下角为第三位、右下角为第四位,按照此顺序,可将子阵列转换为一维数列。换言之,子阵列中每个残差系数的序号为((r-1)*N+C-1)*M2+(r’-1)*M+c’。其中M为子阵列的行数或列数,r’为残差系数在子阵列中的行号,c’为残差系数在子阵列中的列号,在将子阵列内的残差系数排列为一维数列时以其序号从小到大为序。可以理解,本实施例中,M为2,r’、c’为1到M之间的整数。而在不同的子阵列之间,以其序号为序从小到大将各子阵列的一维数列相连形成一维残差系数列。具体地,可将当前子阵列的首位与前一子阵列的末位相连,而将其末位与下一子阵列的首位相连。而根据上述的序号,按残差系数的序号从大到小依次相连即可。按照以上的扫描顺序,图2所示的残差系数阵列转换后的一维残差系数列为2,0,-5,-2,1,0,…相比于图1所示的Z型扫描,所得的一维残差系数列中非零系数中夹杂的0数目少1,因此本实施例的视频编码帧内预测扫描顺序所得的一维残差系数列具有更高的熵编码效率。然而当采用本实施例的扫描顺序处理图3所示的残差系数阵列时可以发现会在非零系数中引入很多零,因此,本实施例的扫描顺序适用于非零系数集中于前面几行,例如第0、1行中的残差系数阵列。第三实施例图6为第二实施例揭示的视频编码帧内预测扫描顺序示意图。如图6所示,其为对应于8*8的像素块的二维残差系数阵列。该二维残差系数阵列分为16个2*2子阵列,而16个子阵列构成4*4的矩阵,每个子阵列的序号为(c-1)*N+r,其中N为子阵列矩阵的行数或列数,r为子阵列在矩阵的行号,c为子阵列在矩阵中的列号。可以理解,本实施例中,N为4,r、c为1到N之间的整数。对于每个子阵列,其左上角为起第一位,左下角为第二位、右上角为第三位、右下角为第四位,按照此顺序,可将子阵列转换为一维数列。换言之,子阵列中每个残差系数的序号为((c-1)*N+r-1)*M2+(c’-1)*M+r’。其中M为子阵列的行数或列数,r’为残差系数在子阵列中的行号,c’为残差系数在子阵列中的列号,在将子阵列内的残差系数排列为一维数列时以其序号从小到大为序。可以理解,本实施例中,M为2,r’、c’为1到M之间的整数。而在不同的子阵列之间,以其序号为序从小到大将各子阵列的一维数列相连形成一维残差系数列。具体地,可将当前子阵列的首位与前一子阵列的末位相连,而将其末位与下一子阵列的首位相连。而根据上述的序号,按残差系数的序号从大到小依次相连即可。按照以上的扫描顺序,图3所示的残差系数阵列转换后的一维残差系数列为7,-3,-1,-1,-2,-1,0,…相比于图1所示的Z型扫描,所得的一维残差系数列中非零系数中夹杂的0数目少4,因此本实施例的视频编码帧内预测扫描顺序所得的一维残差系数列具有更高的熵编码效率。然而当采用本实施例的扫描顺序处理图2所示的残差系数阵列时可以发现会在非零系数中引入很多零,因此,本实施例的扫描顺序适用于非零系数集中于前面几列,例如第0、1列中的残差系数阵列。第四实施例以上共描述了三种帧内预测扫描顺序,如上所述,其可分别适用于不同分布的残差系数阵列,而且基于图像的空间相关性,以上三种扫描顺序可以覆盖绝大多数的残差系数分布,当然,具有一部分残差系数分布采用以上三种扫描顺序无法得到很好的结果,然而出现此种残差系数分布的概率很低,不会明显增加视频编码的码率。为了进一步提升熵编码的效率,如图7所示,本发明第四实施例还提供一种视频编码方法,其包括以下步骤:步骤210、提供一帧图像;步骤220、将该图像分为多个像素块;步骤230、针对该像素块采用至少两种帧内预测扫描方法进行帧内预测以得到熵编码,其中该至少两种帧内预测扫描方法之一为第一实施例所述的帧内预测扫描方法;步骤240、选择使用具有更高效率的熵编码并记录帧内预测方法所使用的扫描方法。步骤210、220为视频编码领域所熟知的内容,在此不再赘述。在步骤S230中例如可以分别采用图1所示的Z型扫描、第二、第三实施例的扫描顺序分别扫描得到一维残差系数残后进行熵编码,而后在步骤S240中,比较熵编码的效率,采用具有最高效率的熵编码并相应记录当前像素块采用的扫描方法。可以理解,对于三种规则,采用二位(Bit)的信息就足够记录采用的是何种扫描方法,例如Z型扫描可以记为00、第二实施例的扫描可以记为01、而第三实施例的扫描可以记为10。在解码端,可以根据此信息正确地将熵编码还原为二维残差系数阵列。本实施例的视频编码方法中,通过同时使用三种帧内预测扫描方法并选择具有最高熵编码效率的扫描方法,可以最大程度的提升熵编码的效率,降低视频编码的码率。例如针对图2所示的残差系数分布,就会采用第二实施例的扫描顺序,而对于图3所示的残差系数分布,就会采用第三实施例的扫描顺序。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1