基于散列的运动搜索的制作方法

文档序号:26013254发布日期:2021-07-23 21:34阅读:85来源:国知局
基于散列的运动搜索的制作方法

相关申请的交叉引用

根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2019年1月2日提交的国际专利申请no.pct/cn2019/070049、2019年5月22日提交的国际专利申请no.pct/cn2019/087969号的优先权和权益。出于美国法律的所有目的,上述申请的全部公开作为本申请公开的一部分通过引用并入。

该文件涉及视频和图像编码和解码技术。



背景技术:

尽管视频压缩有所进步,数字视频在互联网和其他数字通信网络上仍占最大的带宽使用量。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用所需的带宽将继续增长。



技术实现要素:

描述了与数字视频编码有关的设备、系统和方法,其包括基于散列(hash)的运动估计。所描述的方法可以应用于现有视频编码标准(例如,高效视频编码(hevc)和/或通用视频编码(vvc))和未来视频编码标准或视频编解码器。

在一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,其中,当前块的尺寸是m×n,其中,m和n是正整数,m不等于n;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在另一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:为视频的当前块和视频的比特流表示之间的转换,通过在非矩形和非正方形的当前块的区域上使用基于散列的运动搜索,来确定与当前块相关联的运动信息;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:对于在视频的当前块和视频的比特流表示之间的转换,通过在当前块的样点的固定子集上使用基于散列的运动搜索来确定与当前块相关联的运动信息;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:作为视频的当前块和视频的比特流表示之间的转换的一部分,执行基于散列的运动搜索;根据基于散列的运动搜索找到散列匹配和参考帧的量化参数(quantizationparameter,qp)不大于当前块的qp,针对转换,为当前块的一个或多个编码模式的每一个确定跳过模式的率失真代价;基于率失真代价和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索是基于当前块的正方形子块的散列值,其中,当前块的尺寸为m×n,并且其中,m和n为正整数;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在又一个代表性方面,所公开的技术可以用于提供一种用于视频处理的方法。该方法包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索包括针对基于散列的运动搜索执行k-像素整数运动矢量(motionvector,mv)精度检查,其中,k为正整数;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

在又一个代表性方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。

在又一个代表性方面,公开了一种被配置为或可操作为执行上述方法的设备。该设备可以包括被编程为实现该方法的处理器。

在又一个代表性方面,视频解码器装置可以实现如本文所述的方法。

在附图、说明书和权利要求书中更详细地描述了所公开技术的上述和其他方面以及特征。

附图说明

图1示出了自底向上散列计算的示例。

图2a与图2b示出了基于六个n×n块的结果的2n×2n块行/列相同信息检查的示例。

图3示出了当前图片参考的示例。

图4-9是用于视频处理方法的示例的流程图。

图10是用于实现本文中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。

图11是其中可以实现所公开的技术的示例视频处理系统的框图。

具体实施方式

本文档提供了可由图像或视频比特流的解码器用来改善解压缩或解码的数字视频或图像的质量的各种技术。为了简洁起见,术语“视频”在本文中用于包括图片序列(传统上称为视频)和单个图像。此外,视频编码器还可在编码过程期间实现这些技术,以便重建用于进一步编码的解码帧。

在本文档中使用章节标题是为了易于理解,并且不将实施例和技术限于相应的章节。这样,一个章节的实施例可以与其他章节的实施例组合。

1.综述

该发明涉及视频编码技术。具体地,它涉及视频编码中的运动估计。它可以应用于现有的视频编码标准(例如hevc),或者最终确定的标准(通用视频编码)。它也可能适用于未来的视频编码标准或视频编解码器。

2.背景

视频编码标准主要通过公知的itu-t和iso/iec标准的发展而演变。itu-t制作了h.261和h.263,iso/iec制作了mpeg-1和mpeg-4visual,这两个组织共同制作了h.262/mpeg-2视频和h.264/peg-4增强视频编码(avc)和h.265/hevc[1]标准。从h.262开始,视频编码标准基于混合视频编码结构,其中利用了时域预测加变换编码。为了探索hevc之外的未来视频编码技术,vceg和mpeg于2015年联合成立了联合视频探索组(jvet)。此后,jvet采纳了许多新方法并将其引入到名为“联合探索模型”(jem)[2][3]的参考软件中。2018年4月,vceg(q6/16)和iso/iecjtc1sc29/wg11(mpeg)之间的联合视频专家组(jvet)成立,以致力于目标是与hevc相比其降低50%比特率的vvc标准。

最新版本的vvc草案,即通用视频编码(草案2),其可以在以下位置找到:

http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_ljubljana/wg11/jvet-k1001-v7.zip

可以在以下位置找到名为vtm的vvc的最新参考软件:

https://vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-2.1

图5是视频编码器的示例实现的框图。图5示出了编码器实现具有内置的反馈路径,在该反馈路径内视频编码器还执行视频解码功能(重构视频数据的压缩表示以用于下一视频数据的编码)。

2.1基于散列的运动搜索的示例

基于散列的搜索被应用于2nx2n块。使用基于原始像素的18位散列。前2位由块尺寸确定,例如00表示8x8,01表示16x16,10表示32x32,11表示64x64。接下来的16位由原始像素确定。

对于一个块,我们使用相似的方式但是不同的crc截断多项式来计算两个散列值。第一个散列值用于检索,第二个散列值用于排除某些散列冲突。

散列值的计算如下:

对于每一行,为所有像素hash[i]计算16位crc值。

将行散列值分组在一起(hash[0]hash[1]…),然后计算24位crc值h。

h的低16位将被用作当前块的散列值的低16位。

为了避免一个散列值对应于太多的条目,我们避免将满足以下条件的块添加到散列表中

每行只有一个像素值;或者

每列只有一个像素值。

因为对于这种块,具有移位一个像素的块可以具有相同的内容。因此,我们从散列表中排除了这些块。并且可以通过水平预测或垂直预测来完美地预测这种块,因此将它们从散列表中排除可能不会导致明显的性能下降。

在建立散列表之后,如下执行运动搜索。

对于2nx2n块,

首先执行基于散列的搜索。

如果找到散列匹配,则跳过常规整数像素运动搜索和分数像素运动搜索。否则,执行常规运动搜索。

保存为2nx2n块找到的整数mv。

对于非2nx2n块,将使用mvp作为me起点的成本和使用相同的参考图片的2nx2n块的存储的mv作为me起点的成本进行比较。然后选择成本较低的一个作为运动搜索起点。

我们还开发了基于散列搜索的提前终止算法,如果满足以下所有条件,则将终止rdo过程,而无需检查其他模式和cu划分。

找到散列匹配。

参考块的质量不比当前块的期望质量差(参考块的qp不大于当前块的qp)。

当前cu深度为0。

2.2基于散列的运动搜索的附加示例

1.自下而上的散列值计算

为了加快散列值的计算,我们建议以自下而上的方式计算块散列值。与[1]中的实现相同,使用相同的方法但是使用不同的crc截断多项式来计算这两个散列值。并且使用的crc截断多项式与当前scm中的相同。

对于一个2nx2n(n=2、4、8、16或32)块,基于其四个子nxn块散列结果而不是像素来计算散列值,因此可以尽可能利用中间数据(较小块的散列值结果)以降低复杂度。对于n=1,即2×2块,块散列值直接从像素计算。整个过程如图1所示。

2.将块添加到散列表的过程的自下而上的有效性检查,

在所提出的方案中,判断一个块是否有效,以添加到散列表的条件没有改变。唯一的变化是检查一个块是否有效的步骤。类似于块散列值计算,也可以以自下而上的方式执行有效性检查,以重用中间结果并降低复杂度。

对于图片中的所有2x2块,基于像素进行行/列相同检查。存储行/列相同的决策结果以进行4x4块的有效性检查。对于一个2nx2n(n=2、4、8、16或32)块,可以分别通过每个方向上6个子nxn块的行/列相同信息来简单地确定有效性。

以行相同检查为例。在图2(a)中,四个子nxn块标记为此外,为了检查块0和1以及块2和3之间的边界像素是否相同,对于上半块和下半块,应该将行相同信息分别用于中间nxn块4和块5。换句话说,可以由在先前步骤中已经记录的6个子n×n块的行相同信息来确定2n×2n块行相同信息。通过这种方式,可以避免针对块的不同尺寸重复检查像素。

2.3当前图片参考

在hevc屏幕内容编码扩展(hevc-scc)[1]和当前vvc测试模型(vtm-3.0)[2]中,已经采用了当前图片参考(cpr)(或一度称为帧内块复制(ibc))。ibc将运动补偿的概念从帧间编码扩展到了帧内编码。如图3所示,当应用cpr时,当前块由同一图片中的参考块预测。在对当前块进行编码或解码之前,必须已经重构了参考块中的样点。尽管cpr对于大多数相机捕获的序列而言效率不高,但是对于屏幕内容,它显示了显著编码增益。原因是屏幕内容图片中有很多重复的图案,诸如图标和文本字符。cpr可以有效地消除这些重复图案之间的冗余。在hevc-scc中,如果帧间编码的编解码单元(cu)选择当前图片作为其参考图片,则帧间编码的编解码单元(cu)可以应用cpr。在这种情况下,mv被重命名为块矢量(bv),并且bv始终具有整数像素精度。为了与主配置文件(mainprofile)hevc兼容,当前图片在解码的图片缓冲区(dpb)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编码标准中,视图间参考图片也被标记为“长期”参考图片。

在bv找到其参考块之后,可以通过复制参考块来生成预测。可以通过从原始信号中减去参考像素来获得残差。然后可以像在其他编码模式中一样应用变换和量化。

然而,当参考块在图片之外,或与当前块重叠,或在重构区域之外,或在受某些约束限制的有效区域之外时,未定义部分或全部像素值。基本上,有两种解决此问题的方法。一种是禁止这种情况,例如在比特流一致性方面。另一种是对那些未定义的像素值应用填充。以下子节详细描述了解决方案。

2.4对帧内块复制/当前图片参考进行基于散列的搜索

基于散列的搜索被应用于4x4、8x8和16x16块。对于一个块,我们使用相似的方法但使用不同的crc截断多项式来计算两个散列值。第一个散列值用于检索,第二个散列值用于排除某些散列冲突。散列值的计算如下:

对于每一行,为所有像素hash[i]计算16位crc值。

将行散列值分组在一起(hash[0]hash[1]…),然后计算24位crc值h。

h的低16位将被用作当前块的散列值的低16位。

为了避免一个散列值对应于太多的条目,我们避免将满足以下条件的块添加到散列表中。

每行只有一个像素值,或者

每列只有一个像素值。

因为对于这种块,具有移位一个像素的块可以具有相同的内容。因此,我们从散列表中排除了这些块。并且可以通过水平预测或垂直预测来完美地预测这种块。

3.现有实现的缺点

当前的基于散列的搜索限于nxn个(正方形)块,这限制了其性能。

4.实施例的示例

以下详细技术应被视为示例以解释一般概念。这些技术不应狭义地解释。此外,可以以任何方式组合这些技术。

1.提出了基于散列的运动搜索可以基于尺寸为mxn的块,其中m不等于n。

a.在一个示例中,m=2n,4n,8n,16n或32n。

b.在一个示例中,n=2m,4m,8m,16m或32m。

c.非正方形块的散列值可以从正方形块的散列值导出。

d.在一个示例中,如果m大于n,则mxn块的散列值可以从m/n(n,n)个块的散列值中导出。

e.可替代地,如果m小于n,则mxn块的散列值可以从n/m(m,m)个块的散列值中导出。

2.提出了基于散列的运动搜索可以基于三角形区域。

a.在一个示例中,该区域被定义为x<ky;x,y=0,1,2,…m-1,其中x,y是相对于块起点的坐标,而k是预定义值。

b.可替代地,将区域定义为x>ky,x,y=0,1,2,…m-1

c.可替代地,将区域定义为x<m-ky,x,y=0,1,2,…m-1

d.可替代地,将区域定义为x>m-ky,x,y=0,1,2,…m-1

3.提出了基于散列的运动搜索可以基于块的固定子集。

a.在一个示例中,子集被定义为相对于块的起点的一组预定义坐标。

4.基于散列的运动矢量可以被添加为mv估计过程中的附加起点。

a.在整数运动估计中(例如xtzsearch或xtzsearchselective),将检查基于散列的运动矢量以用于最佳起始点初始化。

b.如果存在基于散列的运动矢量,则可以跳过分数运动估计。

5.提前终止

a.当找到散列匹配并且参考帧的量化参数不大于当前块的量化参数时,仅针对etm_merge_skip,etm_affine,etm_merge_triangle模式检查跳过模式的率失真代价。

i.此外,可替代地,跳过检查其他模式(例如amvp(advancedmotionvectorprediction,高级运动矢量预测))的率失真代价。

ii.此外,可替代地,终止更细粒度的块分区检查。

iii.此外,可替代地,如果在检查那些跳过模式之后最佳模式是etm_hash_inter,则可以终止更细粒度的块分区检查。否则,可以不终止更细粒度的块分区检查。

b.在一个示例中,当找到散列匹配并且参考帧的量化参数不大于当前块的量化参数时,仅针对etm_merge_skip,etm_affine,etm_merge_triangle模式和etm_inter_me(例如,amvr(adaptivemotionvectorresolution,自适应运动矢量分辨率))模式检查跳过模式的率失真代价。

i.此外,可替代地,跳过检查其他模式(例如etm_intra)的率失真代价。

ii.此外,可替代地,终止更细粒度的块分区检查。

c.是否采用上述方法可能取决于块的大小。

i.在一个示例中,仅当块尺寸大于或等于mxn时才可以调用它。ii.在一个示例中,仅当块尺寸等于64x64时才可以调用它。

6.提出了通过矩形块的子正方形散列值检查矩形块的散列模式。

a.在一个示例中,这种方法也可适用于正方形块。

7.提出了为散列mv添加k-像素整数mv精度检查

a.在一个示例中,k设置为4。

8.以上方法可以应用于允许的块尺寸的一部分。

a.在一个示例中,对于正方形块,可以将基于散列的方法应用于n小于或等于阈值(例如64)的n×n块。

b.在一个示例中,对于非正方形(矩形)块,可以将基于散列的方法应用于m*n小于或等于阈值(例如64)的m×n块。

c.在一个示例中,对于非正方形(矩形)块,基于散列的方法可以仅应用于4x8、8x4。

d.上述方法可以仅应用于某些颜色分量,诸如亮度颜色分量/基础颜色分量(例如,g)。

图4是用于视频处理的方法400的流程图。方法400包括,在操作410处,为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,其中,当前块的尺寸是m×n,其中,m和n是正整数,m不等于n。

方法400包括,在操作420处,基于运动信息和包括当前块的视频图片,对当前块应用预测。

方法400包括,在操作430处,基于预测执行转换。

图5是用于视频处理的方法500的流程图。方法500包括,在操作510处,为视频的当前块和视频的比特流表示之间的转换,通过在非矩形和非正方形的当前块的区域上使用基于散列的运动搜索,来确定与当前块相关联的运动信息。

方法500包括,在操作520处,基于运动信息和包括当前块的视频图片,对当前块应用预测。

方法500包括在操作530处,基于预测执行转换。

图6是用于视频处理的方法600的流程图。方法600包括,在操作610处,对于在视频的当前块和视频的比特流表示之间的转换,通过在当前块的样点的固定子集上使用基于散列的运动搜索来确定与当前块相关联的运动信息。

方法600包括,在操作620处,基于运动信息和包括当前块的视频图片,对当前块应用预测。

方法600包括在操作630处,基于预测执行转换。

图7是用于视频处理的方法700的流程图。方法700包括,在操作710处,作为视频的当前块和视频的比特流表示之间的转换的一部分,执行基于散列的运动搜索。

方法700包括,在操作720处,根据基于散列的运动搜索找到散列匹配和参考帧的量化参数(qp)不大于当前块的qp,针对转换,为当前块的一个或多个编码模式的每一个确定跳过模式的率失真代价。

方法700包括,在操作730处,基于率失真代价和包括当前块的视频图片,对当前块应用预测。

方法700包括在操作740处,基于预测执行转换。

图8是用于视频处理的方法800的流程图。方法800包括,在操作810处,为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索是基于当前块的正方形子块的散列值,其中,当前块的尺寸为m×n,并且其中,m和n为正整数。

方法800包括,在操作820处,基于运动信息和包括当前块的视频图片,对当前块应用预测。

方法800包括,在操作830处,基于预测执行转换。

图9是用于视频处理的方法900的流程图。方法900包括,在操作910处,为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索包括针对基于散列的运动搜索执行k-像素整数运动矢量(mv)精度检查,其中,k为正整数。

方法900包括,在操作920处,基于运动信息和包括当前块的视频图片,对当前块应用预测。

方法900包括,在操作930处,基于预测执行转换。

在一些实施例中,可以实现以下技术解决方案:

a1.一种视频处理方法,包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,其中,当前块的尺寸是m×n,其中,m和n是正整数,m不等于n;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

a2.根据解决方案a1的方法,其中,m=k×n,并且其中,k是正整数。

a3.根据解决方案a1的方法,其中,n=k×m,并且其中,k是正整数。

a4.根据解决方案a2或a3的方法,其中,k=2、4、8、16或32。

a5.根据解决方案a1的方法,其中,基于视频的正方形块的散列值来导出当前块的散列值。

a6.根据解决方案a5的方法,其中,由于确定m大于n,所以基于形成当前块的尺寸为n×n的m/n个块的散列值来导出当前块的散列值。

a7.根据解决方案a5的方法,其中,由于确定n大于m,因此基于形成当前块的尺寸为m×m的n/m个块的散列值来导出当前块的散列值。

a8.一种视频处理的方法,包括:为视频的当前块和视频的比特流表示之间的转换,通过在非矩形和非正方形的当前块的区域上使用基于散列的运动搜索,来确定与当前块相关联的运动信息;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

a9.根据解决方案a8的方法,其中,区域包括三角形区域,三角形区域包括坐标为(x,y)的样点,其中,x和y相对于当前块的起点,其中,当前块的尺寸为m×n,其中m和n为正整数。

a10.根据解决方案a9的方法,其中,x<k×y,k是预定义值,并且y=0、1,...,m-1。

a11.根据解决方案a9的方法,其中,x>k×y,k是预定义值,并且y=0、1,...,m-1。

a12.根据解决方案a9的方法,其中,x<(m-k×y),k是预定义值,并且y=0、1,...,m-1。

a13.根据解决方案a9的方法,其中,x>(m-k×y),k是预定义值,并且y=0、1,...,m-1。

a14.一种视频处理方法,包括:对于在视频的当前块和视频的比特流表示之间的转换,通过在当前块的样点的固定子集上使用基于散列的运动搜索来确定与当前块相关联的运动信息;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

a15.根据解决方案a14的方法,其中,样点的固定子集包括相对于当前块的起点的一组预定义坐标。

a16.根据解决方案a1至a15中的任一项的方法,其中,基于散列的运动搜索包括在mv估计技术期间添加基于散列的运动矢量(mv)作为起点。

a17.根据解决方案a16的方法,其中检查基于散列的mv以用于整数运动估计中的最佳起始点初始化。

a18.根据解决方案a16或a17的方法,其中由于确定基于散列的mv存在而跳过分数运动估计操作。

a19.根据解决方案a1至a18中的任一项的方法,其中,转换从比特流表示生成当前块。

a20.根据解决方案a1至a18中的任一项的方法,其中,转换从当前块生成比特流表示。

a21.一种视频系统中的装置,其包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案a1至a20中的任一项的方法。

a22.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行解决方案a1至a20中的任一项的方法的程序代码。

在一些实施例中,可以实现以下技术解决方案:

b1.一种视频处理方法,包括:作为视频的当前块和视频的比特流表示之间的转换的一部分,执行基于散列的运动搜索;根据基于散列的运动搜索找到散列匹配和参考帧的量化参数(qp)不大于当前块的qp,针对转换,为当前块的一个或多个编码模式的每一个确定跳过模式的率失真代价;基于率失真代价和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

b2.根据解决方案b1的方法,其中,一个或多个编码模式包括etm_merge_skip模式、etm_affine模式、etm_merge_triangle模式或etm_inter_me模式。

b3.根据解决方案b1或b2的方法,其中,一个或多个编码模式不包括高级运动矢量预测(amvp)模式或etm_intra模式。

b4.根据解决方案b1的方法,还包括:在确定之后,终止更细粒度的块分区检查。

b5.根据解决方案b4的方法,其中,针对etm_hash_inter模式的跳过模式的率失真代价被确定为低于针对任何其他编码模式的跳过模式的率失真代价。

b6.根据解决方案b1至b5中的任一项的方法,其中,基于当前块的高度或宽度来执行基于散列的运动搜索和确定。

b7.根据解决方案b6的方法,其中,当前块的尺寸是m×n或更大。

b8.根据解决方案b6的方法,其中,当前块的尺寸是64×64。

b9.根据解决方案b1至b8中的任一项的方法,其中,转换从比特流表示生成当前块。

b10.根据解决方案b1至b8中的任一项的方法,其中,转换从当前块生成比特流表示。

b11.一种视频系统中的装置,其包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案b1至b10中任一项的方法。

b12.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行解决方案b1至b10中的任一项的方法的程序代码。

在一些实施例中,可以实现以下技术解决方案:

c1.一种视频处理方法,包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索是基于当前块的正方形子块的散列值,其中,当前块的尺寸为m×n,并且其中,m和n为正整数;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

c2.根据解决方案c1的方法,其中,m不等于n。

c3.根据解决方案c1的方法,其中,m等于n。

c4.一种视频处理方法,包括:为视频的当前块和视频的比特流表示之间的转换,使用基于散列的运动搜索来确定与当前块相关联的运动信息,基于散列的运动搜索包括针对基于散列的运动搜索执行k-像素整数运动矢量(mv)精度检查,其中,k为正整数;基于运动信息和包括当前块的视频图片,对当前块应用预测;以及基于预测执行转换。

c5.根据解决方案c4的方法,其中,k=4。

c6.根据解决方案c1至c5中任一项的方法,其中,当前块的尺寸是n×n,其中,n是小于或等于阈值的正整数。

c7.根据解决方案c1至c5中任一项的方法,其中,当前块的尺寸是m×n,其中,m和n是正整数,并且m不等于n,并且其中,m或n小于或等于阈值。

c8.根据解决方案c6或c7的方法,其中,阈值为64。

c9.根据解决方案c1至c5中任一项的方法,其中,当前块的尺寸是8×4或4×8。

c10.根据解决方案c1至c5中的任一项的方法,其中,基于散列的运动搜索被应用于视频的亮度分量。

c11.根据解决方案c1至c5中的任一项的方法,其中,基于散列的运动搜索被应用于视频的基础颜色分量。

c12.根据解决方案c1至c11中的任一项的方法,其中,转换从比特流表示生成当前块。

c13.根据解决方案c1至c11中的任一项的方法,其中,转换从当前块生成比特流表示。

c14.一种视频系统中的装置,其包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案c1至c13中任一项的方法。

c15.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于执行解决方案c1至c13中任一项的方法的程序代码。

在一些实施例中,可以实现以下技术解决方案:

d1.一种用于处理视频的方法,包括:由处理器使用基于散列的运动搜索来确定关于第一视频块的运动信息,第一视频块具有m×n的尺寸,其中,m不等于n;使用运动信息对第一视频块执行进一步处理。

d2.根据解决方案d1的方法,其中,m为2n、4n、8n、16n或32n。

d3.根据解决方案d1的方法,其中,n为2m、4m、8m、16m或32m。

d4.根据解决方案d1的方法,其中,使用基于散列的运动搜索来确定运动信息包括使用作为非正方形视频块的子块的正方形视频块的散列值来导出非正方形视频块的散列值。

d5.根据解决方案d1的方法,还包括:确定m大于n,并且其中,使用基于散列的运动搜索来确定运动信息包括从m/n(n,n)个视频块散列值中导出第一视频块的散列值。

d6.根据解决方案d1的方法,还包括:确定m小于n,并且其中,使用基于散列的运动搜索来确定运动信息包括从m/n(n,n)个视频块散列值中导出第一视频块的散列值。

d7.一种用于处理视频的方法,包括:由处理器使用基于散列的运动搜索来确定关于第一视频块的运动信息,第一视频块具有非矩形且非正方形的形状;以及使用运动信息对第一视频块执行进一步处理。

d8.根据解决方案d7的方法,其中,形状是三角形。

d9.根据解决方案d7的方法,其中,形状是由x<ky;x,y=0,1,2,…m-1定义的区域,其中x和y是相对于第一视频块起点的相对坐标,其中k是预定义值。

d10.根据解决方案d7的方法,其中,形状是由x>ky,x,y=0,1,2,…m-1定义的区域,其中x和y是相对于第一视频块起点的相对坐标,并且其中k是预定义值。

d11.根据解决方案d7的方法,其中,形状定义为x<m-ky,x,y=0,1,2,...m-1,其中x和y是相对于第一视频块起点的相对坐标,并且其中k是预定义值。

d12.根据解决方案d7的方法,其中,形状定义为x>m-ky,x,y=0,1,2,...m-1,其中x和y是相对于第一视频块起点的相对坐标,并且其中k是预定义值。

d13.根据解决方案d1-d12的方法,其中,基于散列的运动搜索是基于第一视频块的固定子集。

d14.根据解决方案d13的方法,其中,固定子集由相对于第一视频块的起点的一组预定义坐标定义。

d15.根据解决方案d1-d14的方法,其中,基于散列的运动搜索包括在mv估计技术期间添加基于散列的运动矢量(mv)作为起点。

d16.根据解决方案d15的方法,其中检查基于散列的mv,以用于整数运动估计中的最佳起点初始化。

d17.根据解决方案d1-d16的方法,还包括:确定导致散列匹配的基于散列的运动搜索;确定参考帧的量化参数(qp)大于第一视频块的qp;以及根据导致散列匹配的基于散列的运动搜索且参考帧的qp大于第一视频块的qp的确定,确定跳过模式的率失真代价,其中,基于率失真代价进行对第一视频块的进一步处理。

d18.根据解决方案d17的方法,其中,确定率失真代价包括跳过高级运动矢量预测(amvp)。

d19.根据解决方案d17的方法,其中,确定率失真代价包括停止更细粒度的块分区检查。

d20.根据解决方案d17的方法,其中,确定率失真代价是基于第一视频块的大小。

d21.根据解决方案d20的方法,其中,第一视频块的大小大于或等于m×n。

d22.根据解决方案d20的方法,其中,第一视频块的大小为64×64像素。

d23.根据解决方案d1的方法,其中,第一视频块的散列模式基于子正方形散列值,第一视频块具有矩形形状。

d24.根据解决方案d1的方法,其中,第一视频块的散列模式基于子正方形散列值,第一视频块具有正方形形状。

d25.根据解决方案d1或d7的方法,其中,运动信息包括运动矢量(mv)。

d26.根据解决方案d1或d7的方法,还包括:对基于散列的运动搜索执行k-像素整数运动矢量(mv)精度检查。

d27.根据解决方案d26的方法,其中,k为4。

d28.根据解决方案d1-d27的方法,其中,第一视频块是允许的块尺寸的部分尺寸。

d29.根据解决方案d1-d27的方法,其中,第一视频块具有正方形的形状,并且基于散列的运动搜索被应用于n×n视频块,其中,n小于或等于阈值。

d30.根据解决方案d29的方法,其中,阈值是64。

d31.根据解决方案d1-d27的方法,其中,第一视频块具有矩形的形状,并且基于散列的运动搜索被应用于m×n视频块,其中,m*n小于或等于阈值。

d32.根据解决方案d31的方法,其中,阈值是64。

d33.根据解决方案d1-d27的方法,其中,第一视频块是4×8或8×4。

d34.根据解决方案d1-d27的方法,其中,基于散列的运动搜索被应用于颜色分量。

d35.根据解决方案d1-d16的方法,还包括:确定导致散列匹配的基于散列的运动搜索;确定参考帧的量化参数(qp)不大于第一视频块的qp;根据导致散列匹配的基于散列的运动搜索且参考帧的qp大于第一视频块的qp,确定跳过模式的率失真代价,其中,基于率失真代价进行对第一视频块的进一步处理。

d36.根据解决方案d35的方法,其中,跳过模式包括用于仿射模式,三角形模式或自适应运动矢量分辨率(amvr)模式的跳过模式。

d37.根据解决方案d35的方法,其中,确定率失真代价包括停止更细粒度的块分区检查。

d38.一种视频解码装置,包括处理器,该处理器被配置为实现在解决方案d1至d37中的一个或多个中叙述的方法。

d39.根据一种视频编码装置,包括处理器,该处理器被配置为实现在解决方案d1至d37中的一个或多个中叙述的方法。

d40.一种在其上存储有计算机代码的计算机程序产品,该代码在由处理器执行时使处理器实现解决方案d1到d37中的任何一个所述的方法。

图10是视频处理装置1000的框图。装置1000可以用于实现本文描述的一种或多种方法。装置1000可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置1000可以包括一个或多个处理器1002、一个或多个存储器1004和视频处理硬件1006。(一个或多个)处理器1002可以被配置为实现本文档中描述的一种或多种方法。(一个或多个)存储器1004可以用于存储用于实现本文描述的方法和技术的数据和代码。视频处理硬件1006可以用于在硬件电路中实现本文档中描述的一些技术。

在一些实施例中,视频编码方法可以使用关于图10描述的在硬件平台上实现的装置来实现。

所公开技术的一些实施例包含做出决策或确定以启用视频处理工具或模式。在示例中,当启用视频处理工具或模式时,编码器将在视频块的处理中使用或实现该工具或模式,但不一定基于工具或模式的使用来修改产生的比特流。也就是说,从视频块到视频的比特流表示的转换将在基于决策或确定启用视频处理工具或模式时使用视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器在知道基于视频处理工具或模式已经修改了比特流的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。

所公开技术的一些实施例包括做出决策或确定以禁用视频处理工具或模式。在示例中,当视频处理工具或模式被禁用时,编码器将在视频块到视频的比特流表示的转换中不使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器在知道没有使用基于决策或确定而启用的视频处理工具或模式对比特流进行修改的情况下处理比特流。

图11是示出其中可实现本文中所公开的各种技术的示例视频处理系统1100的框图。各种实现可以包括系统1100的一些或全部组件。系统1100可以包括用于接收视频内容的输入1102。视频内容可以以原始或未压缩的格式(例如8或10位多分量像素值)接收,或者可以以压缩或编码的格式接收。输入1102可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(pon)等)和无线接口(诸如wi-fi或蜂窝接口)。

系统1100可以包括编码组件1104,其可以实现在本文档中描述的各种编码或编码方法。编码组件1104可以将视频的平均比特率从输入1102降低到编码组件1104的输出,以产生视频的编码表示。因此,编码技术有时称为视频压缩或视频转码技术。如组件1106所表示的,编码组件1104的输出可以被存储或经由所连接的通信来发送。在输入1102处接收的视频的存储或传送的比特流(或编码)表示可以被组件1108使用,以用于生成像素值或可显示视频,该像素值或可显示视频被发送到显示接口1110。从比特流表示生成用户可见视频的过程有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编码”操作或工具,但是应当理解,编码工具或操作在编码器处使用,并且将由解码器执行逆转编码结果的相应解码工具或操作。

外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清多媒体接口(hdmi)或displayport等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其他能够执行数字数据处理和/或视频显示的设备。

本文档中描述公开和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本文档中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。

本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。

例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及cdrom和dvdrom盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。

虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。

同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。

仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1