串编码技术的编码方法、设备及存储介质

文档序号:815539 发布日期:2021-03-26 浏览:9次 >En<

阅读说明:本技术 串编码技术的编码方法、设备及存储介质 (Encoding method, apparatus and storage medium for string encoding technique ) 是由 江东 方诚 陈秀丽 林聚财 殷俊 于 2020-12-06 设计创作,主要内容包括:本申请公开基于串编码技术的编码方法、设备及存储介质。其中,基于串编码技术的编码方法包括:响应于当前串的类型为CU级串;获取当前串的横坐标和纵坐标,判断当前串的纵坐标是否小于一且当前串的横坐标是否等于零;若否,则判断当前串的串矢量的纵坐标是否非零;若串矢量的纵坐标为零,则编码串矢量的横坐标的绝对值与第二预设值的差值;响应于当前串的长度小于当前CU块的宽,第二预设值为当前串的长度,响应于当前串的长度大于等于当前CU块的宽,第二预设值为第一预设值加一,第一预设值小于等于串矢量的横坐标的绝对值和当前CU块的宽度。本方法对CU级串进行串矢量编码优化,在失真不变的情况下,能减少编码的比特数,进而提升SP预测的压缩率。(The application discloses a coding method, a device and a storage medium based on a string coding technology. The encoding method based on the string encoding technology comprises the following steps: responding to the type of the current string as a CU level string; acquiring the abscissa and the ordinate of the current string, and judging whether the ordinate of the current string is less than one and the abscissa of the current string is equal to zero; if not, judging whether the ordinate of the string vector of the current string is nonzero; if the ordinate of the string vector is zero, the absolute value of the abscissa of the string vector is encoded to be different from a second preset value; and responding to the fact that the length of the current string is smaller than the width of the current CU block, wherein the second preset value is the length of the current string, responding to the fact that the length of the current string is larger than or equal to the width of the current CU block, the second preset value is the sum of the first preset value and one, and the first preset value is smaller than or equal to the absolute value of the abscissa of the string vector and the width of the current CU block. The method carries out string vector encoding optimization on the CU-level strings, can reduce the number of encoding bits under the condition of unchanged distortion, and further improves the compression ratio of SP prediction.)

串编码技术的编码方法、设备及存储介质

技术领域

本申请属于视频编码技术领域,具体涉及串编码技术的编码方法、设备及存储介质。

背景技术

视频图像数据量比较大,通常需要对视频像素数据(RGB、YUV等)其进行压缩,压缩后的数据称之为视频码流,视频码流通过有线或者无线网络传输至用户端,再进行解码观看。整个视频编码流程包括预测、变换、量化、编码等过程。

SP技术(串匹配预测技术)是一种独立的预测技术,针对的是图像内不同区域却有相同图像内容的情况。当前块内连续的n个(n>=1)像素称为一个串,当前块内可以有若干个不同的串,每个串都有自己的一个SV(串矢量),SV指向空域上之前的已编码像素(参考像素)。若当前块内有像素不能成串,则直接编码该像素值。然而目前SP技术存在压缩率低的问题。

发明内容

本申请提供串编码技术的编码方法、设备及存储介质,以进一步提高sp技术的压缩率。

为解决上述技术问题,本申请采用的一个技术方案是:一种基于串编码技术的编码方法,所述方法包括:判断当前串的类型是否为CU级串;响应于当前串的类型为CU级串;获取所述当前串的横坐标和纵坐标,判断所述当前串的纵坐标是否小于一且所述当前串的横坐标是否等于零;若否,则判断当前串的串矢量的纵坐标是否非零;若所述串矢量的纵坐标为零,则编码所述串矢量的横坐标的绝对值与第二预设值的差值;其中,响应于所述当前串的长度小于当前CU块的宽,所述第二预设值为所述当前串的长度,响应于所述当前串的长度大于等于当前CU块的宽,所述第二预设值为第一预设值加一,所述第一预设值小于等于所述串矢量的横坐标的绝对值和当前CU块的宽度。

为解决上述技术问题,本申请采用的又一个技术方案是:一种基于串编码技术的编码方法,所述方法包括:获取当前串的串矢量;响应于所述当前串的串矢量位于历史候选运动矢量列表;利用所述当前串的串矢量在所述历史候选运动矢量列表中的索引进行所述当前串的串矢量的比特计算。

为解决上述技术问题,本申请采用的又一个技术方案是:一种基于串编码技术的编码方法,所述方法包括:获取候选运动矢量,所述候选运动矢量包括当前块的空域相邻块的帧内运动矢量,最终历史候选列表中的帧内运动矢量,临时历史候选列表中的帧内运动矢量,所述当前块的空域非相邻块的帧内运动矢量,以及预设固定帧内运动矢量。

为解决上述技术问题,本申请采用的又一个技术方案是:一种电子设备,包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现上述任一方法。

为解决上述技术问题,本申请采用的又一个技术方案是:一种计算机可读存储介质,其上存储有程序数据,所述程序数据被处理器执行时实现上述任一方法。

本申请的有益效果是:本方法对CU级串进行串矢量编码优化,改进串矢量的编码方式,在失真不变的情况下,能减少编码的比特数,进而提升SP预测的压缩率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,其中:

图1是本申请的串编码技术的编码方法一实施例中的一个LCU划分成CU时的划分方式的示意图;

图2是本申请的串编码技术的编码方法一实施例中CU级运动搜索示意图;

图3是本申请的串编码技术的编码方法一实施例中像素级运动搜索的扫描方式示意图;

图4是本申请的串编码技术的编码方法一实施例中匹配串选取方式示意图;

图5是本申请的串编码技术的编码方法一实施例的流程示意图;

图6是本申请的串编码技术的编码方法又一实施例的流程示意图;

图7是本申请的串编码技术的编码方法又一实施例中判断当前串类型的流程示意图;

图8是本申请的串编码技术的编码方法又一实施例中CU级串的编码方法的流程示意图;

图9是本申请的串编码技术的编码方法又一实施例中普通串的编码方法的流程示意图;

图10是本申请的串编码技术的编码方法又一实施例中一

具体实施方式

的普通串串矢量编码方式示意图;

图11是本申请的串编码技术的编码方法又一实施例中另一具体实施方式的普通串串矢量编码方式示意图;

图12是本申请的串编码技术的编码方法又一实施例的流程示意图;

图13是本申请的电子设备一实施例的框架示意图;

图14是本申请计算机可读存储介质一实施例的框架示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下先对SP技术做一个简单的介绍,便于理解本发明:

在视频编码中,最常用颜色编码方法有YUV、RGB等,本发明中所采用的颜色编码方法为YUV。Y表示明亮度,也就是图像的灰度值;U和V(即Cb和Cr)表示色度,作用是描述图像色彩及饱和度。每个Y亮度块都对应一个Cb和一个Cr色度块,每个色度块也只对应一个亮度块。以4:2:0的采样格式为例,一个N*M的块对应亮度块大小为N*M,对应的两个色度块的大小都为(N/2)*(M/2),色度块为亮度块的1/4大小。

视频编码时,输入的是一个个图像帧,但对一帧图像进行编码时,需要将一帧分割成若干LCU(最大编码单元),然后再对每个编码单元进行不同尺寸的CU(编码单元)分割,视频编码就是以CU为单元进行的。

SP预测技术的详细步骤如下:

(1)SP技术应用条件

SP技术只能用于宽和高都大于等于4且小于等于32的亮度块。且对于某些小块,若这些小块再进一步划分后会产生边长小于4的色度块,那么这些小块的色度块部分将不再进一步划分,并且这些小块不采用SP模式,而采用传统帧内预测模式。

此外,像素级串预测方法还存在以下规范性限制:

参考像素位置限定左边LCU和当前LCU的区域,把LCU按64*64区域大小进行平均划分,一个参考串的所有像素都来自同一个64*64区域;

参考像素不能属于当前串;

每个CU所允许的串的个数(包括匹配像素串的个数加未匹配像素的个数)必须不大于当前CU块内像素个数的1/4;

每个串像素个数必须是4的倍数。

(2)预测运动矢量候选列表的构建

在AVS3现有技术中,通常采用历史候选列表HBVP中的运动信息,来构建预测运动矢量候选列表,并将HBVP列表中有效的运动信息按照倒序的方式填入到预测运动矢量候选列表内。历史候选列表HBVP中存放的是历史已编码且用IBC(帧内块拷贝)或串编码预测技术(SP技术)编码的块的运动信息,包括BV/SV(块矢量/串矢量)以及相关的信息。在运动估计过程中,利用预测运动矢量候选列表中的运动信息SV时,若遍历到BV,可将其转换为SV。

当一帧开始时,此候选列表是空的,当每一个CU完成预测并确定采用IBC模式或SP模式时,都会将其IBC或SP相关信息按先入先出的原则插入到HBVP列表中。

由于一个LCU划分成CU时有很多不同的划分方式,而不同的划分方式下,对一个CU而言,其HBVP是不同的。一般而言,HBVP列表指的是在LCU的最佳划分方式下的列表,也被称为n_list。那么在进行不同划分方式下的比较时,还需要两个临时的HBVP列表——b_list和p_list。b_list存储的是同一划分深度下,之前已编码CU块的BV/SV;p_list存储的是上一划分深度下,已编码CU块的BV/SV。

例如图1所示,B0、B1、B2和当前块是同一划分深度的,P0、P1、P2、P3是上一划分深度的,目前正在对P3块的某一种划分方式下进行预测。那么b_list中存储的是B0、B1、B2的BV/SV,p_list存储的是P0、P1、P2的BV/SV。

(3)运动估计

运动估计的目的是找到当前块的最佳运动矢量,该部分采用CU级运动搜索和像素级运动搜索两种方法来获取。先进行CU级运动搜索,如果未找到匹配块,再进行像素级运运动搜索。

1、CU级运动搜索

[a]设置搜索范围。

如图2所示,搜索方向为当前块左上角(如下图中红色点)水平向左和垂直向上进行搜索,垂直方向上侧不能超过当前LCU的上边界,左侧边界不能超过当前LCU左边相邻LCU的左边界。

除了上述两种搜索方向中搜索CU级匹配串,还需要把HBVP列表中的运动矢量指向的块作为匹配块取过来进行cost计算。

[b]匹配块的选取

对于亮度块,在搜索范围内,搜索与当前块的相同尺寸块来进行匹配,搜索块需要满足为已编码块,搜索按照先垂直后水平方向进行,通过SAD的方式计算当前块和搜索块,最多选出8个最小的SAD,按照SAD从小到大的方式,记录SAD列表和对应SAD的搜索块左上角和当前块左上角坐标的差值列表。

对于色度块,如果搜索亮度块左上角和当前块左上角坐标的差值列表存在且该列表中第一个差值对应的SAD小于等于32,需要遍历SAD列表和对应SAD的搜索块左上角和当前块左上角坐标的差值列表,重新计算三个分量总的SAD,选出最小的SAD对应的差值列表中对应的差值作为当前块和匹配块的差值;否则将亮度SAD对应的搜索块左上角和当前块左上角坐标的差值列表第一个差值作为当前块和匹配块的坐标差值。

[c]获取重建块

获取的匹配块即为重建块,然后利用SSE计算当前块和重建块的rdcost(率失真代价),其中rdcost中的比特为当前块和匹配块的坐标差值消耗的比特。

[d]需要保存的信息

如果rdcost小于之前最佳模式下的rdcost,那么需要保存该模式下匹配flag,当前块和匹配块的坐标差值,匹配的像素个数。

2、像素级运动搜索

[a]像素扫描方式

如图3所示,目前扫描方式为水平弓形扫描方式。

[b]构建运动搜索串运动矢量候选

水平方向扫描时,运动搜索候选先放垂直方向,运动矢量对应为(0,-1),再放水平方向,运动矢量对应为(-1,0),然后放历史运动矢量(最多7个),最后放与当前像素HASH值相等的且在搜索范围内的所有重建像素和当前像素的运动矢量(最后的重建像素对应的运动矢量放在前面,最早的放在后面),搜索范围不超过当前LCU和左侧相邻LCU。

[c]匹配串的选取

在扫描方式确定的情况下,对亮度分量,遍历每一个运动搜索候选。在对当前运动搜索候选进行操作时,需要对当前像素点以及后面连续的像素点利用当前运动搜索候选进行匹配操作。设一个阈值,其中该阈值和QP相关,QP越大,该阈值越大,如果若干个连续原始像素值与对应参考像素的原始像素值的差值都小于该阈值,则记录运动搜索候选下的连续像素点个数(即串长度),如图4所示,由于现有技术中限制参考像素的位置不能在当前串内,所以对于(-1,0)的运动矢量,串长度最多为1。

接下来要进行最佳运动搜索候选的选择过程:

I、根据串长度比较进行一次粗选。若(当前运动搜索下的串长度)>=(之前最佳运动搜索下的长度-1)时,则选中当前运动搜索,并计算当前串的总cost。否则直接剔除当前运动搜索。

II、根据串长度和cost进行细选。满足以下三种情况之一,则将当前运动搜索作为最佳运动搜索:

i、若(当前运动搜索下的串长度)>=(之前最佳运动搜索下的长度);

ii、若(当前运动搜索下的串长度==之前最佳运动搜索下的长度)&&(当前串长度不为0)&&(当前串cost<之前最佳运动搜索下串cost);

iii、若(当前运动搜索下的串长度==之前最佳运动搜索下的长度-1)&&(当前串长度不为0)&&(当前串中每个像素的平均cost<之前最佳运动搜索下串中每个像素的平均cost);

注意在搜索过程中,参考像素不能超过图像边界且是已编码像素。对于色度分量,不参与运动搜索候选遍历,直接使用最佳的运动搜索候选。

如果当前像素没有找到匹配像素,直接对当前像素值进行编码。

[d]获取重建块

当前块中可能会存在多个串和未成串的像素,对这些串,重建值即为其匹配串的像素值(即预测值),对这些未成串的像素,重建值即为该原始像素值。然后利用SSE计算当前块和重建块的rdcost。

[e]需要保存的信息

如果rdcost小于之前最佳模式下的rdcost,那么需要保存该模式下匹配flag,当前块中每个像素串和对应匹配串的坐标差值,每个匹配串的像素个数。

3、运动补偿

该模式下的重建值即为参考值,因此不需要进行变换量化操作。

4、句法元素

SP模式下不存在像素残差信息,但需要传递串匹配模式flag,是否找到匹配串的flag,串长度,串运动矢量(或者是否在历史候选列表下的index),或者未匹配到的像素值信息来表示当前块运动搜索所需的所有信息。

请参阅图5,本申请一实施例提供了一种串编码技术的编码方法,包括如下步骤:

S101:获取候选运动矢量。

获取候选运动矢量,候选运动矢量包括当前块的空域相邻块的帧内运动矢量(BV/SV),最终历史候选列表中的帧内运动矢量(BV/SV),临时历史候选列表中的帧内运动矢量(BV/SV),当前块的空域非相邻块的帧内运动矢量(BV/SV),以及预设固定帧内运动矢量。

在本方法中,对候选运动矢量的获取方式作出改进,首先获取获取候选运动矢量,获取候选运动矢量包括当前块的空域相邻块的帧内运动矢量(BV/SV)、最终历史候选列表中的帧内运动矢量(BV/SV),临时历史候选列表中的帧内运动矢量(BV/SV),当前块的空域非相邻块的帧内运动矢量(BV/SV),和预设固定帧内运动矢量(BV/SV),和/或其他推导方式得到的帧内运动矢量。

S102:利用候选运动矢量构建预测运动矢量候选列表,预测运动矢量候选列表用于预测当前串的串矢量。

利用获得的候选运动矢量构建预测运动矢量候选列表,预测运动矢量候选列表用于预测当前串的串矢量。本方法获取候选运动矢量的方式多样化,在当前串的串矢量选取过程中,在编码端增加更多的候选运动矢量,这样更容易获取到更准确的当前串的串矢量,进而提升SP预测的压缩率。

进一步地,获取的候选运动矢量可通过全部查重或部分查重后加入预测运动矢量候选列表。部分查重为通过将待加入的候选运动矢量与预测运动矢量候选列表里的预定位置的预测运动矢量查重,而非全部查重,可以降低查重的运算和耗时,同时可以一定程度减少重复率,整体提高SP技术的压缩率。预定位置可根据预测运动矢量的获取方式实际调整。

以下结合将当前串分为CU级串和普通串来说明,其中CU级串为一个CU块内的全部像素形成的一个串,普通串为一个CU块内部分像素形成的串:

在一具体实施方式中,当前串为CU级串,现有技术中CU级串进行预测时,候选运动矢量中只有把最终历史候选列表n_list中的运动矢量作为候选,但没有添加临时历史候选列表p_list和b_list中的运动矢量作为候选,因此本具体实施方式在CU级串进行预测时加上临时历史候选列表p_list和b_list中的运动矢量作为候选,有利于提高预测精度,进而提升SP预测的压缩率。

在又一个具体实施方式中,当前串为普通串,现有技术中普通串进行预测时,候选运动矢量中只有把临时历史候选列表p_list和b_list中的运动矢量作为候选,但没有添加最终历史候选列表n_list中的运动矢量作为候选,因此本例在普通串进行预测时加上最终历史候选列表n_list中的运动矢量作为候选,有利于提高预测精度,进而提升SP预测的压缩率。

请参阅图6,本申请又一实施例提供了一种基于串编码技术的编码方法,包括如下步骤:

S201:获取当前串的串矢量。

选取当前串的串矢量。

S202:响应于当前串的串矢量位于历史候选运动矢量列表。

选取当前串的串矢量,且若选取的当前串的串矢量在历史候选运动矢量列表内。

S203:利用当前串的串矢量在历史候选运动矢量列表中的索引进行当前串的串矢量的比特计算。

现有技术中,CU级串在比特估算时,如果当前串的串矢量在历史候选运动矢量列表内,仍采用计算当前串的串矢量的比特的方法进行比特计算。而本方法中,如果当前串的串矢量在历史候选运动矢量列表内,则利用当前串的串矢量在历史候选运动矢量列表中的索引进行当前串的串矢量的比特计算,有效减少编码比特数,提高视频编码压缩率。

普通串同理,如果当前串的串矢量在历史候选运动矢量列表内,则利用当前串的串矢量在历史候选运动矢量列表中的索引进行当前串的串矢量的比特计算。

本方法通过使得CU级串的比特计算方式与普通串的比特计算方式对齐,从而提高视频编码压缩率。本方法还可与上述增加运动矢量候选的方法相结合,则本方法中历史候选运动矢量列表为构建的预测运动矢量候选列表,如果当前串的串矢量在预测运动矢量候选列表内,则利用当前串的串矢量在预测运动矢量候选列表中的索引进行当前串的串矢量的比特计算,从而提高预测精度,进一步提升SP预测的压缩率。

进一步地,本方法还包括:

计算率失真代价,率失真代价与预设系数和当前串的串矢量的比特值的乘积与失真值之和。现有技术中CU级串率失真代价Rdcost的计算方法为Rdcost=比特+失真,没有引入系数lamda因子,造成Rdcost的计算不准确,本方法将率失真代价Rdcost的计算方式改为Rdcost=lamda*比特+失真,从而提高率失真代价的计算精确度。

进一步地,本方法还包括:

在选取最佳串矢量的比较过程中,利用第一预设值计算最佳串矢量的比特长度;其中,第一预设值小于等于当前串的串矢量的横坐标的绝对值和当前CU块的宽度。

在最佳串矢量的信息编码传输过程中,利用第一预设值计算最佳串矢量的比特长度。

该方法主要用于普通串的最佳串信息编码方式中,现有技术在对普通串的最佳串信息编码传输时,计算比特长度会用到第一预设值offset1,但在模式选择过程中,计算普通串的比特长度时没有用到第一预设值offset1,前后比特计算方式没有对齐,导致前后两种评判标准不一致,准确率低。而本方法中,在选取最佳串矢量的比较过程中,以及在最佳串矢量的信息编码传输过程中,均利用第一预设值计算最佳串矢量的比特长度,前后比特计算方式对齐,准确率高。

需要说明的是,第一预设值offset1代表了一个在解码端可以获取的,串矢量横坐标能减去的常数,且要保证减完后的值大于等于0。比如若当前串起始点所在的行纵坐标为奇数时,初始offset1的值为串起始点的横坐标值(CU左上角坐标为(0,0))+1,否则,初始offset1的值为串起始横坐标值+串长度。最后比较初始offset1的值与当前CU块的宽,初始offset1的值大于当前CU块宽时,第一预设值offset1的值置为当前CU块的宽-1,否则第一预设值offset1的值置为初始offset1-1。

本方法可与上述任一实施例结合,或者单独实施,以提高基于串编码技术的编码方法的压缩率。

请参阅图7至11,本申请又一实施例提供了一种基于串编码技术的编码方法,包括:

S31:判断当前串的类型是否为CU级串。

判断当前串的类型是否为CU级串包括:

根据当前串的长度是否等于当前CU块内所有像素个数判断当前串的类型;

若当前串的长度等于当前CU块内所有像素个数,则当前串的类型为CU级串,否则为普通串。

编码时设置一个预设类型句法元素IscModeIsCuStringFlag表示当前串是CU级串还是普通串,若IscModeIsCuStringFlag=1代表是CU级串,若IscModeIsCuStringFlag=0代表是普通串。

需要说明的是,句法元素是一种标识,用于表明编码端所配置的一些参数或使用的编码技术和方法等。在编码端需要将句法元素进行编码,也就是用特定的编码方式将句法元素的值转换成计算机能读懂的“0”和“1”组成的一串字符。将句法元素编码到码流中后传输到解码端。解码端通过解析这些编码后的字符读懂句法元素所代表的含义,才能知道编码端的编码信息,并采取对应的操作。例如,有一个句法元素SPCuFlag代表的是当前CU是否采用SP技术(串匹配预测技术),SPCuFlag=1时采用SP技术,SPCuFlag=0时不采用。在编码时就需要将SPCuFlag对应的值编码到码流中,传输到解码端。解码端通过解析SPCuFlag对应的值就知道编码端是否采用了SP技术,若采用了SP技术,解码端就要通过SP相关的操作来解码。

S32:响应于当前串的类型为CU级串,对当前串采用CU级串的编码方式进行编码处理。

S33:响应于当前串的类型非CU级串,则当前串为普通串,对当前串采用普通串的编码方式进行编码处理。

进一步地,如图8,CU级串的编码方式如下:

S301:响应于当前串的类型为CU级串。

S302:获取串矢量的横坐标和纵坐标,判断串矢量的纵坐标是否小于一且串矢量的横坐标是否等于零。

S303:若是,则令串矢量的纵坐标的值增一。

令串矢量的纵坐标的值增一,用作串矢量的纵坐标的判断和计算,并判断串矢量的纵坐标是否非零。

S304:若否,则判断当前串的串矢量的纵坐标是否为非零。

判断当前串的串矢量的纵坐标是否为非零。在判断之前可以编码一个句法元素flag表明SV_Y是否非零。

S305:若串矢量的纵坐标为零,则编码串矢量的横坐标的绝对值与第二预设值的差值。

若串矢量的纵坐标SV_Y为零,则编码串矢量的横坐标SV_X的绝对值与第二预设值offset2的差值|SV_X|-offset2。

其中,若当前串的长度小于当前CU块的宽,第二预设值offset2为当前串的长度;若当前串的长度大于等于当前CU块的宽,第二预设值offset2为第一预设值offset1加一,第一预设值offset1小于等于串矢量的横坐标SV_X的绝对值和当前CU块的宽度。

在现有技术中,若CU级串的串矢量的纵坐标为零,需要编码|SV_X|-1,编码的值大于当前本方法中的编码的值;并且现有技术中还需进一步判断当前串起始位置所在纵坐标为奇数,若为奇数,则还需编码SV_X的正负性,即编码一个FLAG表明SV_X是否大于0。本方法中的编码方法可减小编码比特数,提高视频压缩率。

需要说明的是,offset1代表了一个在解码端可以获取的,SV横坐标能减去的常数,且要保证减完后的值大于等于0。例如,若当前串起始点所在的行纵坐标为奇数时,offset1的值为串起始点的横坐标值(当前CU块左上角坐标为(0,0))+1,否则,offset1的值为串起始横坐标值+串长度。最后offset1的值大于当前CU块的宽时,offset1的值置为当前CU块的宽-1,否则offset1的值置为offset1-1。

offset2也是一个解码端可以获取的常数。例如,当串长度小于CU的宽时,offset2的值为串的长度;否则,offset2的值等于offset1+1。在其他实施例中,offset2的值还可以进一步扩大,但是必须要解码端可获取,从而减小编码比特数,提高视频压缩率。

S306:若串矢量的纵坐标非零,则判断串矢量的纵坐标是否大于零。

若串矢量的纵坐标SV_Y非零,则判断串矢量的纵坐标SV_Y是否大于零。判断串矢量的纵坐标SV_Y是否大于零可以通过编码一个句法元素表明SV_Y是否大于零。

S307:若串矢量的纵坐标大于零,则编码串矢量的纵坐标为正、编码串矢量的纵坐标的绝对值减一的值、以及编码串矢量的横坐标的绝对值与第一预设值加一的差值。

若串矢量的纵坐标SV_Y大于零,则编码串矢量的纵坐标为正、编码串矢量的纵坐标的绝对值减一的值|SV_Y|-1、以及编码串矢量的横坐标的绝对值与第一预设值加一的差值|SV_Y|-offset1-1。

需要说明的是,编码串矢量的纵坐标为正包括编码一个句法元素,句法元素的值表明串矢量的纵坐标是否大于零。

S308:若串矢量的纵坐标小于零,则判断串矢量的横坐标是否非零。

若串矢量的纵坐标SV_Y小于零,则判断串矢量的横坐标SV_X是否非零。判断串矢量的横坐标SV_X是否非零可以通过编码一个句法元素表明SV_X是否非零。

S309:若串矢量的横坐标为零,则编码串矢量的纵坐标为负及横坐标为零,并编码纵坐标的绝对值与当前CU块的宽的差值。

若串矢量的横坐标SV_X为零,则编码串矢量的纵坐标为负及横坐标为零,并编码纵坐标的绝对值与当前CU块的宽的差值加一的值|SV_Y|-(height-1)。本方法中的编码方法可减小编码比特数,提高视频压缩率。

需要说明的是,编码串矢量的纵坐标为负及横坐标为零包括:

编码一个句法元素,句法元素表明串矢量的纵坐标是否大于零;

编码一个句法元素,句法元素表明串矢量的横坐标是否为零。

S310:若串矢量的横坐标非零,则判断串矢量的横坐标是否大于零。

若串矢量的横坐标SV_X非零,则判断串矢量的横坐标SV_X是否大于零。判断串矢量的横坐标SV_X是否大于零可以通过编码一个句法元素表明SV_X是否大于零。

S311:若串矢量的横坐标大于零,则编码串矢量的纵坐标为负及横坐标为正、编码串矢量的纵坐标的绝对值与当前CU块的宽的差值、以及编码串矢量的横坐标的绝对值减一的值。

若串矢量的横坐标SV_X大于零,则编码串矢量的纵坐标为负及横坐标为正、编码串矢量的纵坐标的绝对值与当前CU块的宽的差值|SV_Y|-height、以及编码串矢量的横坐标的绝对值减一的值|SV_X|-1。

需要说明的是,编码串矢量的纵坐标为负及横坐标为正包括:

编码一个句法元素,句法元素表明串矢量的纵坐标是否大于零,本实施例中句法元素的值表明纵坐标为负;

编码一个句法元素,句法元素表明串矢量的横坐标是否大于零,本实施例中句法元素的值表明横坐标为正。

S312:若串矢量的横坐标小于零,则编码串矢量的纵坐标为负及横坐标为负、编码串矢量的纵坐标的绝对值减一的值,以及编码当前串的串矢量的横坐标的绝对值减一的值。

若串矢量的横坐标SV_X小于零,则编码串矢量的纵坐标为负及横坐标为负、编码串矢量的纵坐标的绝对值减一的值|SV_Y|-1,以及编码当前串的串矢量的横坐标的绝对值减一的值|SV_X|-1。

需要说明的是,编码串矢量的纵坐标为负及横坐标为负包括:

编码一个句法元素,句法元素表明串矢量的纵坐标是否大于零,本实施例中句法元素的值表明纵坐标为负;

编码一个句法元素,句法元素表明串矢量的横坐标是否大于零,本实施例中句法元素的值表明横坐标为负。

本方法还包括:

响应于当前串跨行,即当前串内像素的纵坐标有两种或两种以上不同的值;则不需要对单位基矢量对应的句法元素进行编码传输。

上述方法对CU级串进行串矢量编码优化,改进串矢量的编码方式,在失真不变的情况下,能减少编码的比特数,进而提升SP预测的压缩率。

进一步地,如图9,普通串的编码方式如下:

S313:响应于当前串的类型为普通串。

S314:获取串矢量的横坐标和纵坐标,判断串矢量的纵坐标是否小于一且串矢量的横坐标是否等于零。

S315:若是,则令串矢量的纵坐标的值增一。

令串矢量的纵坐标的值增一,用作串矢量的纵坐标的判断和计算,并判断串矢量的纵坐标是否非零。

S316:若否,则判断当前串的串矢量的纵坐标是否非零。

判断当前串的串矢量的纵坐标是否为非零。在判断之前可以编码一个句法元素flag表明SV_Y是否非零。

S317:若串矢量的纵坐标为零,则判断当前串的起始位置所在行的索引是否为奇数。

若串矢量的纵坐标SV_Y为零,则判断当前串的起始位置所在行的索引是否为奇数。

S318:若当前串的起始位置所在行的索引不是奇数,则编码串矢量的纵坐标为零,编码串矢量的横坐标的绝对值与第二预设值的差值。

若当前串的起始位置所在行的索引不是奇数,则编码串矢量的纵坐标为零,编码串矢量的横坐标SV_X的绝对值与第二预设值offset2的差值|SV_X|-offset2。

其中,若当前串的长度小于当前CU块的宽,第二预设值offset2为当前串的长度;若当前串的长度大于等于当前CU块的宽,第二预设值offset2为第一预设值offset1加一,第一预设值offset1小于等于串矢量的横坐标SV_X的绝对值和当前CU块的宽度。

在现有技术中,若普通串的串矢量的纵坐标为零,需要编码|SV_X|-1,编码的值大于当前本方法中的编码的值;并且现有技术中还需进一步判断当前串起始位置所在纵坐标为奇数,若为奇数,则还需编码SV_X的正负性,即编码一个FLAG表明SV_X是否大于0。本方法中的编码方法可减小编码比特数,提高视频压缩率。

需要说明的是,offset1代表了一个在解码端可以获取的,SV横坐标能减去的常数,且要保证减完后的值大于等于0。例如,若当前串起始点所在的行纵坐标为奇数时,offset1的值为串起始点的横坐标值(当前CU块左上角坐标为(0,0))+1,否则,offset1的值为串起始横坐标值+串长度。最后offset1的值大于当前CU块的宽时,offset1的值置为当前CU块的宽-1,否则offset1的值置为offset1-1。

offset2也是一个解码端可以获取的常数。例如,当串长度小于CU的宽时,offset2的值为串的长度;否则,offset2的值等于offset1+1。在其他实施例中,offset2的值还可以进一步扩大,但是必须要解码端可获取,从而减小编码比特数,提高视频压缩率。

S319:若当前串的起始位置所在行的索引是奇数,则编码串矢量的纵坐标为零,编码串矢量的横坐标为正,及串矢量的横坐标的绝对值减一的值。

若当前串的起始位置所在行的索引是奇数,则编码串矢量的纵坐标为零,编码串矢量的横坐标为正,及串矢量的横坐标的绝对值减一的值|SV_X|-1。

需要说明的是,编码串矢量的横坐标为正包括编码一个句法元素,句法元素的值表明串矢量的横坐标是否大于零。

S320:若串矢量的纵坐标非零,判断串矢量的纵坐标是否大于零。

若串矢量的纵坐标非零,判断串矢量的纵坐标是否大于零。判断串矢量的纵坐标SV_Y是否大于零可以通过编码一个句法元素表明SV_Y是否非零。

S321:若串矢量的纵坐标大于零,则编码串矢量的纵坐标为正,并编码串矢量的纵坐标的绝对值减一的值,以及编码串矢量的横坐标的绝对值与第一预设值加一的差值。

若串矢量的纵坐标SV_Y大于零,则编码串矢量的纵坐标为正,并编码串矢量的纵坐标的绝对值减一的值|SV_Y|-1,以及编码串矢量的横坐标的绝对值与第一预设值加一的差值|SV_X|-offset1-1。

需要说明的是,编码串矢量的纵坐标为正包括编码一个句法元素,句法元素的值表明串矢量的纵坐标是否大于零。

S322:若串矢量的纵坐标小于零,判断串矢量的横坐标是否为非零。

若串矢量的纵坐标小于零,判断串矢量的横坐标是否为非零。判断串矢量的横坐标SV_X是否非零可以通过编码一个句法元素表明SV_X是否非零。

S323:若串矢量的横坐标非零,则编码串矢量的纵坐标为正及横坐标的正负性,并编码串矢量的纵坐标的绝对值减一的值,以及编码串矢量的横坐标的绝对值减一的值。

若串矢量的横坐标非零,则编码串矢量的纵坐标为正及横坐标的正负性,并编码串矢量的纵坐标的绝对值减一的值|SV_Y|-1,以及编码串矢量的横坐标的绝对值减一的值|SV_X|-1。

需要说明的是,编码串矢量的纵坐标为正包括编码一个句法元素,句法元素的值表明串矢量的纵坐标是否大于零。编码串矢量的横纵坐标的正负性包括编码一个句法元素,句法元素的值表明串矢量的横坐标是否大于零。

上述方法对普通串进行串矢量编码优化,改进串矢量的编码方式,在失真不变的情况下,能减少编码的比特数,进而提升SP预测的压缩率。

以下结合两个具体实施方式说明:

如图10所示,图10展示了在一个8*8的CU中的串。串所在的行纵坐标为4,是偶数行,起始坐标为(2,4),串长度为4。该串的SV为(-5,0),那么根据上述规则,offset2的值等于串长度,即为4。

如图11所示,图11展示了在一个8*8的CU中的串。串所在的行纵坐标为4,是偶数行,起始坐标为(2,4),串长度为8。该串的SV为(-8,0),那么根据上述规则,offset2的值等于CU宽度,即为8。

具体地,在AVS3标准中,在一实施方式中,本方法的句法元素的如下:

参数IscModeIsCuStringFlag表示当前串是CU级串还是普通串,IscModeIsCuStringFlag=1代表是CU级串,IscModeIsCuStringFlag=0代表是普通串。

参数SvOffset_mvy0的含义和上述offset2的含义一致,SvOffset和offset1的含义一致。

本方法可与上述任一实施例结合,或者单独实施,以提高基于串编码技术的编码方法的压缩率。

本申请的方法可用于SSC场景(屏幕内容,主要由计算机产生的图像)、自然图像场景、或混合场景(SCC+自然图像)。

请参阅图12,本申请又一实施例提供了一种串编码技术的编码方法,包括如下步骤:

S401:响应于当前跨行串的串矢量的横坐标小于等于零、大于负宽度,且串矢量的纵坐标小于等于负一。

S402:允许当前跨行串进行串内参考。

当前跨行串跨行时,当前跨行串的串矢量为(x,y),其中-width<x≦0,且y≦-1时,允许当前跨行串进行串内部参考。这样可以使串的长度大幅度增加,减少编码消耗。

对这种内部参考串的编解码的具体实现方式为:

编码时按正常的编码流程编串矢量SV和串长度,但在解码时为了有利于解码端的硬件实现,便于并行操作,需要将串拆分,拆分规则为每y行拆成一个串。比如若SV为(0,-2),原来串有5行,则会拆成2行、2行、1行三个串。

请参阅图13,本申请又一实施例提供了一种电子设备40,包括相互耦接的存储器41和处理器42,处理器42用于执行存储器41中存储的程序指令,以实现上述任一实施例的基于串编码技术的编码方法。在一个具体的实施场景中,电子设备40可以包括但不限于:微型计算机、服务器,此外,电子设备40还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。

具体而言,处理器42用于控制其自身以及存储器41以实现上述任一实施例的基于串编码技术的编码。处理器42还可以称为CPU(Central Processing Unit,中央处理单元)。处理器42可能是一种集成电路芯片,具有信号的处理能力。处理器42还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器42可以由集成电路芯片共同实现。

请参阅图14,本申请又一实施例提供了一种计算机可读存储介质50,其上存储有程序数据51,程序数据51被处理器执行时实现上述任一实施例的基于串编码技术的编码方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质50中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质50中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质50包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:利用交叉通道引用进行多通道视频编码的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类