对运动矢量差的约束

文档序号:1958203 发布日期:2021-12-10 浏览:20次 >En<

阅读说明:本技术 对运动矢量差的约束 (Constraint on motion vector difference ) 是由 邓智玭 张莉 刘鸿彬 于 2020-04-26 设计创作,主要内容包括:公开了对运动矢量差的约束。在视频处理的一种示例方法中,针对视频的第一块和第一块的比特流表示之间的转换,确定与第一块相关联的运动矢量差(MVD)分量的范围,其中,MVD分量的范围是[-2~(M),2~(M)-(–)1],其中,M=17;将该MVD分量的值约束在MVD分量的范围中;以及基于受约束的MVD分量执行该转换。(The constraint of motion vector differences is disclosed. In one example method of video processing, for a transition between a first block of video and a bitstream representation of the first block, a range of Motion Vector Difference (MVD) components associated with the first block is determined, wherein the range of MVD components is [ -2 ] M ,2 M – 1]Wherein, M ═ 17; constraining a value of the MVD component in a range of MVD components; and performing the conversion based on the constrained MVD components.)

具体实施方式

本文中使用了章节标题,其目的在于促进理解的简便性,而非使在一个章节中公开的实施例仅局限于该章节。此外,尽管某些实施例是参考多功能视频编解码或其他具体视频编解码器描述的,但是所公开的技术还适用于其他视频编解码。此外,尽管一些实施例详细描述了视频编解码步骤,但是应当理解,将通过解码器实施解开编码的对应解码步骤。此外,视频处理一词涵盖视频编码或压缩、视频解码或解压以及视频转码,在视频转码中视频由一种压缩格式表示变为以另一种压缩格式表示或者具有不同的压缩比特率。

1.概述

本专利文件涉及视频编解码技术。具体地,本专利文件涉及视频编解码中的帧间编解码过程。其可以应用于现有的视频编解码标准,如HEVC,或待定案的标准(多功能视频编解码)。其还可能适用于未来的视频编解码标准或视频编解码器。

2.初步讨论

视频编解码标准主要是通过开发公知的ITU-T和ISO/IEC标准而演变的。ITU-T开发了H.261和H.263,ISO/IEC开发了MPEG-1和MPEG-4视觉,并且两个组织联合开发了H.262/MPEG-2视频、H.264/MPEG-4高级视频编解码(AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中采用了时域预测加变换编解码。为探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年共同成立了联合视频探索团队(JVET)。从那时起,JVET采用了许多新的方法,并将其应用到了名为联合探索模型(JEM)的参考软件中。同时,每季度召开一次JVET会议,新的编解码标准旨在与HEVC相比减少50%的比特率。在2018年春季的JVET会议中,新的视频编解码标准被官方命名为多功能视频编解码(VVC),那时发布了VVC测试模型(VTM)的第一版。由于一直有人为VVC的标准化做出贡献,所以每次JVET会议都有新的编解码技术被采纳到VVC标准中。然后,在每次会议后,都对VVC工作草案和测试模型VTM进行更新。VVC项目现在的目标是在2020年7月的会议中实现技术上的完成(FDIS)。

2.1典型视频编解码器的编解码流程

图1示出了VVC的编码器框图的示例,其包含三个环路滤波框:去方块滤波器(DF)、样点自适应偏移(SAO)和ALF。与使用预定义滤波器的DF不同,SAO和ALF借助于信令通知偏移和滤波器系数的编解码边信息分别通过添加偏移以及应用有限脉冲响应(FIR)滤波器而利用当前图片的原始样点来减少原始样点和重构样点之间的均方误差。ALF位于每一图片的最后处理阶段上,并且可以被视为尝试捕捉并且修复先前阶段建立的伪像的工具。

图1示出了编码器框图的示例。

2.2自适应运动矢量分辨率(AMVR)

在HEVC中,在条带标头中use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知运动矢量差值(MVD)(在CU的运动矢量和预测运动矢量之间)。在VVC中,引入了CU级别的自适应运动矢量分辨率(AMVR)方案。AMVR允许以不同精度对CU的MVD编解码。根据当前CU的模式(正常AMVP模式或仿射AVMP模式),可以如下自适应地选择当前CU的MVD:

-正常AMVP模式:四分之一亮度样点、整亮度样点或四亮度样点。

-仿射AMVP模式:四分之一亮度样点、整亮度样点或1/16亮度样点。

如果当前CU具有至少一个非零MVD分量,则有条件地信令通知CU级别的MVD分辨率指示。如果所有MVD分量(即,针对参考列表L0和参考列表L1的水平和垂直MVD)都为零,则推断出四分之一亮度样点MVD分辨率。

对于具有至少一个非零MVD分量的CU,信令通知第一标志,以指示是否为CU使用四分之一亮度样点MVD精度。如果第一标志为0,则不需要进一步的信令,并为当前CU使用四分之一亮度样点MVD精度。否则,信令通知第二标志,以指示为正常AMVP CU使用整数亮度样点还是四亮度样点MVD精度。使用相同的第二标志指示为仿射AMVP CU使用整亮度样点还是1/16亮度样点MVD精度。为了确保重建的MV具有期望精度(四分之一亮度样点、整亮度样点或四亮度样点),将把CU的运动矢量预测子取整为与MVD一起被添加之前MVD相同的精度。朝向零对运动矢量预测子取整(亦即,向正无穷大对负运动矢量预测子取整,向负无穷大对正运动矢量预测子取整)。

编码器使用RD检查为当前CU确定运动矢量分辨率。为了避免始终针对每种MVD分辨率执行三次CU级别的RD检查,仅有条件地调用四分之一亮度样点之外的MVD精度的RF检查。对于正常AVMP模式而言,首先计算四分之一亮度样点MVD精度和整亮度样点MV精度的RD成本。然后,将整数样点MVD精度的RD成本与四分之一亮度样点MVD精度进行比较,以决定是否需要进一步检查四亮度样点MVD精度的RD成本。在四分之一亮度样点MVD精度的RD成本远小于整亮度样点MVD精度时,跳过四亮度样点MVD精度的RD检查。对于仿射AMVP模式,如果在检查仿射merge/skip模式、四分之一亮度样点MVD精度正常AMVP模式和四分之一亮度样点MVD精度仿射AMVP模式的率失真成本之后未选择仿射帧间模式,则不检查1/16亮度样点MV精度和1像素MV精度仿射帧间模式。此外,将在四分之一亮度样点MV精度仿射帧间模式中获得的仿射参数用作1/16亮度样点和四分之一亮度样点MV精度仿射帧间模式中的起始搜索点。

2.3 VVC中的仿射AMVP预测

可以对宽度和高度都大于或等于16的CU应用仿射AMVP模式。在比特流中信令通知CU级别的仿射标志,以指示是否使用仿射AMVP模式,然后信令通知另一个标志,以指示是4参数仿射还是6参数仿射。在这种模式中,在比特流中信令通知当前CU的CPMV及其预测子CPMVP的差异。仿射AMVP候选列表的尺寸为2,并且是按照如下顺序使用以下四种类型的CPVM候选生成的:

1)从相邻CU的CPMV外推的继承仿射AMVP候选

2)使用相邻CU的平移MV推导的构建仿射AMVP候选CPMVP

3)始于相邻CU的平移MV

4)零MV

继承仿射AMVP候选的检查顺序与继承仿射merge候选的检查顺序相同。唯一的差别在于,对于AVMP候选,仅考虑与当前块具有相同参考图片的仿射CU。在将继承的仿射移动预测子插入到候选列表中时不应用剪枝过程。

从指定的空域邻居推导构建的AMVP候选。另外,还检查相邻块的参考图片索引。使用帧间编解码的并且与当前CU中具有相同参考图片的检查顺序中的第一块。在当前CU利用4参数仿射模式编解码时仅有一个,mv0和mv1都可用,它们作为一个候选被添加在仿射AMVP列表中。在当前CU利用6参数仿射模式编解码并且全部三个CPMV都可用时,它们作为一个候选被添加在仿射AMVP列表中。否则,构建的AMVP候选被设置为不可用。

如果在检查继承的仿射AMVP候选和构建的AMVP候选之后仿射AMVP列表候选仍然少于2个,将按顺序添加mv0、mv1和mv2作为平移MV以预测当前CU的所有控制点MV(在可用时)。最后,如果仿射AMVP列表仍然未满,则使用零MV填充它。

2.4VVC中具有MVD的merge模式(MMVD)

除了将隐式推导的运动信息直接用于当前CU的预测样点生成的merge模式之外,VVC中还引入了具有运动矢量差的merge模式(MMVD)。在发送skip标志和merge标志之后立即信令通知MMVD标志以指定是否对CU使用MMVD模式。

在MMVD中,在选择merge候选之后,通过信令通知的MVD信息进一步细化merge候选。更多信息包括merge候选标志、指定运动幅值的索引以及用于指示运动方向的索引。在MMVD模式中,选择用于merge列表中前两个候选的一个用作MV依据。信令通知merge候选标志以指定使用哪个。

距离索引指定运动幅值信息并指示与起点的预定义偏移。偏移被添加到起始MV的水平分量或垂直分量。在表中指定了距离索引和预定义偏移之间的关系。

在VVC中,对于分数MMVD偏移在spss级别上的开/关,存在SPS标志sps_fpel_mmvd_enabled_flag。以及片组标志tile_group_fpel_mmvd_enabled_flag,以在片组标头级别上为“SCC/UHD帧”控制分数MMVD偏移开/关。如果启用分数MVD,则使用表1中的模式距离表。否则,将表1中默认距离的所有偏移元素移位2。

表1——距离索引和预定义偏移的关系

方向索引表示MVD相对于起始点的方向。方向索引可以表示如表中所示的四个方向。要指出的是,MVD符号的含义可能是根据起始MV的信息的变体。在起始MV为两个列表都指向当前图片的同一侧(即,两个参考的POC都比当前图片的POC大,或都比当前图片的POC小)的单向预测MV或双向预测MV时,表中的符号指定添加到起始MV的MV偏移的符号。在起始MV是两个MV指向当前图片的不同侧(即,一个参考的POC比当前图片的POC大,另一个参考的POC比当前图片的POC小)的双向预测MV时,表中的符号指定添加到起始MV的list0 MV分量的MV偏移的符号,并且list1 MV的符号具有相反值。

表2——方向索引指定的MV偏移的符号

2.5 VVC中的帧内块复制(IBC)

帧内块复制(IBC)是HEVC扩展针对SCC采用的一种工具。众所周知,它显著地改善了屏幕内容材料的编解码效率。由于IBC模式被实施为块级别的编解码模式,所以在编码器处执行块匹配(BM),以为每个CU找到最优块矢量(或运动矢量)。这里,块矢量用于指示从当前块到已经在当前图片内部重建的参考块的位移。

在VVC中,IBC编解码的CU的亮度块矢量处于整数精确度。色度块矢量也取整到整数精确度。在与AMVR组合时,IBC模式可以在1像素和4像素运动矢量精确度之间切换。将IBC编解码的CU当作除帧内或帧间预测模式之外的第三种预测模式处理。IBC模式适用于宽度和高度都小于或等于64个亮度样点的CU。

IBC模式也称为当前图片引用(CPR)模式。

2.6 VVC规范/工作草案中的运动矢量差

以下文本摘自VVC工作草案。

7.3.6.8运动矢量差语法

7.3.6.7 merge数据语法

7.4.3.1序列参数集RBSP语义

等于1的sps_amvr_enabled_flag指定在运动矢量编解码中使用自适应运动矢量差分辨率。等于0的amvr_enabled_flag指定在运动矢量编解码中不使用自适应运动矢量差分辨率。

等于1的sps_affine_amvr_enabled_flag指定在仿射帧间模式的运动矢量编解码中使用自适应运动矢量差分辨率。等于0的sps_affine_amvr_enabled_flag指定在仿射帧间模式的运动矢量编解码中不使用自适应运动矢量差分辨率。

等于1的sps_fpel_mmvd_enabled_flag指定具有运动矢量差的merge模式正在使用整样点精度。等于0的sps_fpel_mmvd_enabled_flag指定具有运动矢量差的merge模式能够使用分数样点精度。

7.4.5.1一般片组标头语义

等于1的tile_group_fpel_mmvd_enabled_flag指定具有运动矢量差的merge模式在当前片组中使用整样点精度。等于0的tile_group_fpel_mmvd_enabled_flag指定具有运动矢量差的merge模式能够在当前片组中使用分数样点精度。当不存在时,将tile_group_fpel_mmvd_enabled_flag的值推断为0。

7.4.7.5编解码单元语义

amvr_flag[x0][y0]指定运动矢量差的分辨率。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。等于0的amvr_flag[x0][y0]指定运动矢量差的分辨率为亮度样点的1/4。等于1的amvr_flag[x0][y0]指定运动矢量差的分辨率进一步由amvr_precision_flag[x0][y0]指定。

在amvr_flag[x0][y0]不存在时,对其作如下推断:

-如果CuPredMode[x0][y0]等于MODE_IBC,推断amvr_flag[x0][y0]等于1。

-否则(CuPredMode[x0][y0]不等于MODE_IBC),推断amvr_flag[x0][y0]等于0。

等于0的amvr_precision_flag[x0][y0]指定,如果inter_affine_flag[x0][y0]等于0,则运动矢量差的分辨率为一个整亮度样点,否则为1/16的亮度样点。等于1的amvr_precision_flag[x0][y0]指定,如果inter_affine_flag[x0][y0]等于0,则运动矢量差的分辨率为四个整亮度样点,否则为一个整亮度样点。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在amvr_precision_flag[x0][y0]不存在时,推断其等于0。

如下修改运动矢量差:

-如果inter_affine_flag[x0][y0]等于0,则推导变量MvShift,如下修改变量MvdL0[x0][y0][0]、MvdL0[x0][y0][1]、MvdL1[x0][y0][0]、MvdL1[x0][y0][1]:

MvShift=(amvr_flag[x0][y0]+amvr_precision_flag[x0][y0])<<1

(7-98)

MvdL0[x0][y0][0]=MvdL0[x0][y0][0]<<(MvShift+2) (7-99)

MvdL0[x0][y0][1]=MvdL0[x0][y0][1]<<(MvShift+2) (7-100)

MvdL1[x0][y0][0]=MvdL1[x0][y0][0]<<(MvShift+2) (7-101)

MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<(MvShift+2) (7-102)

-否则(inter_affine_flag[x0][y0]等于1),则推导变量MvShift,如下修改变量MvdCpL0[x0][y0][0][0]、MvdCpL0[x0][y0][0][1]、MvdCpL0[x0][y0][1][0]、MvdCpL0[x0][y0][1][1]、MvdCpL0[x0][y0][2][0]和MvdCpL0[x0][y0][2][1]:

MvShift=amvr_precision_flag[x0][y0]?

(amvr_precision_flag[x0][y0]<<1):(-(amvr_flag[x0][y0]<<1))) (7-103)

MvdCpL0[x0][y0][0][0]=MvdCpL0[x0][y0][0][0]<<(MvShift+2) (7-104)

MvdCpL1[x0][y0][0][1]=MvdCpL1[x0][y0][0][1]<<(MvShift+2) (7-105)

MvdCpL0[x0][y0][1][0]=MvdCpL0[x0][y0][1][0]<<(MvShift+2) (7-106)

MvdCpL1[x0][y0][1][1]=MvdCpL1[x0][y0][1][1]<<(MvShift+2) (7-107)

MvdCpL0[x0][y0][2][0]=MvdCpL0[x0][y0][2][0]<<(MvShift+2) (7-108)

MvdCpL1[x0][y0][2][1]=MvdCpL1[x0][y0][2][1]<<(MvShift+2) (7-109)

7.4.7.7 Merge数据语义

merge_flag[x0][y0]指定用于当前编解码单元的帧间预测参数是否是从相邻帧间预测分割推断出的。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_flag[x0][y0]不存在时,对其作如下推断:

-如果cu_skip_flag[x0][y0]等于1,推断merge_flag[x0][y0]等于1。

-否则,推断merge_flag[x0][y0]等于0。

等于1的mmvd_flag[x0][y0]指定使用具有运动矢量差的merge模式生成当前编解码单元的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在mmvd_flag[x0][y0]不存在时,推断其等于0。

mmvd_merge_flag[x0][y0]指定将merging候选列表中的第一(0)还是第二(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]推导的运动矢量差一起使用。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

mmvd_distance_idx[x0][y0]指定用于如表7-11中规定的那样推导MmvdDistance[x0][y0]的索引。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

表7-11——基于mmvd_distance_idx[x0][y0]的MmvdDistance[x0][y0]的规范。

mmvd_direction_idx[x0][y0]指定用于如表7-12中规定的那样推导MmvdSign[x0][y0]的索引。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

表7-12——基于mmvd_direction_idx[x0][y0]的MmvdSign[x0][y0]的规范

如下推导merge加MVD偏移MmvdOffset[x0][y0]的两个分量:

MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0](7-112)

MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1](7-113)

merge_subblock_flag[x0][y0]指定用于当前编解码单元的基于子块的帧间预测参数是否是从相邻块推断出的。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。在merge_subblock_flag[x0][y0]不存在时,推断其等于0。

merge_subblock_idx[x0][y0]指定基于子块的merging候选列表的merging候选索引,其中,x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_subblock_idx[x0][y0]不存在时,推断其等于0。

ciip_flag[x0][y0]指定是否对当前编解码单元应用组合式帧间merge和帧内预测。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在ciip_flag[x0][y0]不存在时,推断其等于0。

语法元素ciip_luma_mpm_flag[x0][y0]和ciip_luma_mpm_idx[x0][y0]指定在组合式帧间merge和帧内预测中使用的亮度样点的帧内预测模式。数组索引x0,y0指定所考虑编解码块的左上亮度样点相对于图片左上亮度样点的位置(x0,y0)。根据条款?推导该帧内预测模式。

在ciip_luma_mpm_flag[x0][y0]不存在时,对其作如下推断:

-如果cbWidth大于2*cbHeight或者cbHeight大于2*cbWidth,ciip_luma_mpm_flag[x0][y0]被推断为等于1。

-否则,推断ciip_luma_mpm_flag[x0][y0]等于0。

等于1的merge_triangle_flag[x0][y0]指定,对于当前编解码单元而言,在对B片组解码时,使用基于三角形形状的运动补偿来生成当前编解码单元的预测样点。等于0的merge_triangle_flag[x0][y0]指定不通过基于三角形形状的运动补偿来预测编解码单元。在merge_triangle_flag[x0][y0]不存在时,推断其等于0。

merge_triangle_split_dir[x0][y0]指定merge三角形模式的划分方向。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_triangle_split_dir[x0][y0]不存在时,推断其等于0。

merge_triangle_idx0[x0][y0]指定基于三角形形状的第一merging候选索引的运动补偿候选列表,其中,x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_triangle_idx0[x0][y0]不存在时,推断其等于0。

merge_triangle_idx1[x0][y0]指定基于三角形形状的第二merging候选索引的运动补偿候选列表,其中,x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_triangle_idx1[x0][y0]不存在时,推断其等于0。

merge_idx[x0][y0]指定merging候选列表的merging候选索引,其中,x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。

在merge_idx[x0][y0]不存在时,对其作如下推断:

-如果mmvd_flag[x0][y0]等于1,推断merge_idx[x0][y0]等于mmvd_merge_flag[x0][y0]。

否则,(mmvd_flag[x0][y0]等于0),推断merge_idx[x0][y0]等于0。

7.4.7.8运动矢量差语义

abs_mvd_greater0_flag[compIdx]指定运动矢量分量差的绝对值是否大于0。

abs_mvd_greater1_flag[compIdx]指定运动矢量分量差的绝对值是否大于1。

当abs_mvd_greater1_flag[compIdx]不存在时,那么推断其等于0。

abs_mvd_minus2[compIdx]加2指定运动矢量分量差的绝对值。

当abs_mvd_minus2[compIdx]不存在时,那么推断其等于-1。

mvd_sign_flag[compIdx]如下指定运动矢量分量差的符号:

--如果mvd_sign_flag[compIdx]等于0,那么对应的运动矢量分量差具有正值。

--否则(mvd_sign_flag[compIdx]等于1),对应的运动矢量分量差具有负值。

当mvd_sign_flag[compIdx]不存在时,那么推断其等于0。

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

lMvd[compIdx]的值必须处于-215到215-1的范围内,含端点。

根据MotionModelIdc[x][y]的值,如下推导运动矢量差:

-如果MotionModelIdc[x][y]等于0,那么变量MvdLX[x0][y0][compIdx](其中X为0或1)指定所要使用的列表X矢量分量与其预测之间的差。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。向水平运动矢量分量差赋值compIdx=0,并且向垂直运动矢量分量赋值compIdx=1。

-如果refList等于0,那么对于compIdx=0..1而言,MvdL0[x0][y0][compIdx]被设置为等于lMvd[compIdx]。

-否则(refList等于1),对于compIdx=0..1而言,MvdL1[x0][y0][compIdx]被设置为等于lMvd[compIdx]。

-否则(MotionModelIdc[x][y]不等于0),变量MvdCpLX[x0][y0][cpIdx][compIdx](其中,X为0或1)指定所要使用的列表X矢量分量与其预测之间的差。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0),阵列索引cpIdx指定控制点索引。向水平运动矢量分量差赋值compIdx=0,并且向垂直运动矢量分量赋值compIdx=1。

-如果refList等于0,那么对于compIdx=0..1而言,MvdCpL0[x0][y0][cpIdx][compIdx]被设置为等于lMvd[compIdx]。

-否则(refList等于1),对于compIdx=0..1而言,MvdCpL1[x0][y0][cpIdx][compIdx]被设置为等于lMvd[compIdx]。

3.本文所述实施例解决的问题示例

在像VVC的一些编解码标准中,运动矢量差(MVD)并非始终是四分之一像素(例如,1/4亮度样点)分辨率。不过,在现有VVC工作草案中,存在比特流约束条件,其始终将MVD分量约束到-215到215-1的范围。这样可能导致不准确的MVD值,尤其是在使用非四分之一像素MVD分辨率时(例如,在使用仿射AMVP时,为1/16亮度样点MVD分辨率)。

4.示例性实施例和技术

下文列举的实施例应被视为解释一般概念的示例。不应狭义地解释这些发明。此外,这些发明可以以任何方式组合。

在以下描述中,“运动矢量差(MVD)分量”表示水平方向上(例如,沿x轴)的运动矢量差或垂直方向上(例如,沿y轴)的运动矢量差。

对于亚像素运动矢量(MV)表示,运动矢量通常由分数部分和整数部分构成。假设MV的范围是[-2M,2M-1],其中,M是正整数值,M=K+L,其中K表示MV的整数部分的范围,L表示MV的分数部分的范围,其中以(1/2L)亮度样点精度表示MV。例如,在HEVC中,K=13,L=2,于是M=K+L=15。而在VVC中,K=13,L=4,且M=K+L=17。

1.建议MVD分量的范围可以取决于编解码器的可允许MVD分辨率/精度。

a)在一个示例中,可以将相同范围应用于所有MVD分量。

i.在一个示例中,MVD分量的范围与MV范围相同,例如[-2M,2M-1],如M=17。

b)在一个示例中,所有解码的MVD分量首先可以被缩放到预定义精度(1/2L)亮度样点(例如,L=4),然后被约束到预定义范围[-2M,2M-1](例如,M=17)。

c)在一个示例中,MVD分量的范围可以取决于编解码器中的可允许MVD/MV分辨率。

i.在一个示例中,假设MVD的可允许分辨率为1/16亮度样点、1/4亮度样点、1亮度样点或4亮度样点,则可以根据最细分辨率(例如,所有这些可能分辨率中的1/16亮度样点)对MVD分量的值进行限制/约束,亦即,MVD的值可以在[-2K+L,2K+L-1]的范围中,例如K=13,L=4。

2.建议MVD分量的范围可以取决于块的编解码信息。

a)在一个示例中,可以定义MVD分量的多组范围。

b)在一个示例中,该范围可以取决于MV预测子/MVD/MV精度。i.在一个示例中,假设MVD分量的MVD精度为(1/2L)亮度样点(例如,L=4、3、2、1、0、-1、-2、-3、-4等),那么,可以将MVD的值约束或/和限制到范围[-2K+L,2K+L-1],例如,K=13,L=4、3、2、1、0、-1、-2、-3、-4。

ii.在一个示例中,MVD分量的范围可能取决于变量MvShift,其中,在VVC中,可以从affine_inter_flag、amvr_flag和amvr_precision_flag推导出MvShift。

1.在一个示例中,可以通过编解码信息,诸如affine_inter_flag、amvr_flag和/或amvr_precision_flag和/或sps_fpel_mmvd_enabled_flag和/或tile_group_fpel_mmvd_enabled_flag和/或mmvd_distance_idx和/或CuPredMode等来推导MvShift。

c)在一个示例中,MVD范围可以取决于块的编解码模式、运动模型等。

i.在一个示例中,MVD分量的范围可以取决于当前块的运动模型(例如,规范中的MotionModelIdc)和/或预测模式和/或affine_inter_flag。

ii.在一个示例中,如果当前块的预测模式为MODE_IBC(例如,当前块是以IBC模式编解码的),则MVD的值可以在[-2K+L,2K+L-1]的范围中,例如K=13,L=0。

iii.在一个示例中,如果当前块的运动模型索引(例如,规范中的MotionModelIdc)等于0(例如,当前块是使用平移运动模型预测的),则MVD的值可以在[-2K +L,2K+L-1]的范围中,例如K=13,L=2。

1.替代地,如果当前块的预测模式为MODE_INTER且affine_inter_flag为假(例如,当前块是利用平移运动模型预测的),则MVD的值可以在[-2K+L,2K+L-1]的范围中,例如K=13,L=2。

iv.在一个示例中,如果当前块的运动模型索引(例如,规范中的MotionModelIdc)不等于0(例如,当前块是使用仿射运动模型预测的),则MVD的值可以在[-2K+L,2K+L-1]的范围中,例如K=13,L=4。

1.替代地,如果当前块的预测模式为MODE_INTER且affine_inter_flag为真(例如,当前块是利用仿射运动模型预测的),则MVD的值可以在[-2K+L,2K+L-1]的范围中,例如K=13,L=4。

d)提议对取整的MVD值添加约束而不是对解码的MVD分量添加约束。

i.在一个示例中,一致性比特流应当满足取整的整数MVD值应当在给定范围之内。

1.在一个示例中,整数MVD(如果解码的MVD为分数精度,则需要取整)应当在[-2K,2K-1]的范围中,例如,K=13。

3.提议可以将解码的MVD分量的值在语义解释期间约束到一定范围(例如,上述MVD范围),而不是使用比特流约束。

5.实施例

5.1实施例#1

下面的实施例针对第4章的项目1中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以删除线来强调。

7.4.7.8运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

lMvd[compIdx]的值必须处于-217到217-1的范围内,含端点。

5.2实施例#2

下面的实施例针对第4章的项目2中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以 来强调。

7.4.7.9运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

lMvd[compIdx]的值必须处于-(1<<log2MvdRange)到(1<<log2MvdRange)-1的范围内,含端点,其中,如下推导log2MvdRange。

log2MvdRange=15-MvShift (7-115)

5.3实施例#3

下面的实施例针对第4章的项目2中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以绿色删除线来强调。

7.4.7.10运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

如果MotionModelIdc[x][y]不等于0,则lMvd[compIdx]的值必须处于-217到217-1的范围内,含端点。

否则,lMvd[compIdx]的值必须处于-215到215-1的范围内,含端点。

5.4实施例#4

下面的实施例还针对第4章的项目2中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以绿色来强调。

7.4.7.11运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

如果MotionModelIdc[x][y]不等于0,则lMvd[compIdx]的值必须处于-217到217-1的范围内,含端点。

否则,如果CuPredMode[x0][y0]==MODE_IBC,则lMvd[compIdx]的值必须处于-213到213-1的范围内,含端点。

否则,lMvd[compIdx]的值必须处于-215到215-1的范围内,含端点。

5.5实施例#5

下面的实施例针对第4章的项目3和项目1中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以绿色删除线来强调。

7.4.7.12运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

lMvd[compIdx]=Clip3(-217,217-1,lMvd[compIdx]) (7-115)

5.6实施例#6

下面的实施例针对第4章的项目3和项目2中的方法。

新增加的部分以斜体加粗来强调,从VVC工作草案删除的部分以绿色来强调。

7.4.7.13运动矢量差语义

对于compIdx=0..1而言,运动矢量差lMvd[compIdx]的推导如下:

lMvd[compIdx]=abs_mvd_greater0_flag[compIdx]*(abs_mvd_minus2[compIdx]+2)*(1-2*mvd_sign_flag[compIdx])(7-114)

根据MotionModelIdc[x][y]的值,如下推导运动矢量差:

-如果MotionModelIdc[x][y]等于0,那么变量MvdLX[x0][y0][compIdx](其中X为0或1)指定所要使用的列表X矢量分量与其预测之间的差。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0)。向水平运动矢量分量差赋值compIdx=0,并且向垂直运动矢量分量赋值compIdx=1。

-lMvd[compIdx]=Clip3(-215,215-1,lMvd[compIdx])

-如果refList等于0,那么对于compIdx=0..1而言,MvdL0[x0][y0][compIdx]被设置为等于lMvd[compIdx]。

-否则(refList等于1),对于compIdx=0..1而言,MvdL1[x0][y0][compIdx]被设置为等于lMvd[compIdx]。

-否则(MotionModelIdc[x][y]不等于0),变量MvdCpLX[x0][y0][cpIdx][compIdx](其中,X为0或1)指定所要使用的列表X矢量分量与其预测之间的差。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于该图片的左上亮度样点位置(x0,y0),阵列索引cpIdx指定控制点索引。向水平运动矢量分量差赋值compIdx=0,并且向垂直运动矢量分量赋值compIdx=1。

-lMvd[compIdx]=Clip3(-217,217-1,lMvd[compIdx])

-如果refList等于0,那么对于compIdx=0..1而言,MvdCpL0[x0][y0][cpIdx][compIdx]被设置为等于lMvd[compIdx]。

-否则(refList等于1),对于compIdx=0..1而言,MvdCpL1[x0][y0][cpIdx][compIdx]被设置为等于lMvd[compIdx]。

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

图3是视频处理的示例性方法300的流程图。方法300包括:基于最大允许运动矢量分辨率、最大允许运动矢量精度或视频区域的属性,确定(302)在视频区域和视频区域的比特流表示之间的转换期间用于视频的该视频区域的运动矢量差(MVD)的值的范围。该方法300包括通过限制MVD值落在该范围之内而执行(304)转换。

下文对解决方案的列举提供了能够解决本文件中描述的技术问题连同其他问题的实施例。

1.一种视频处理方法,包括:基于最大允许运动矢量分辨率、最大允许运动矢量精度或视频区域的属性,确定(302)在视频区域和视频区域的比特流表示之间的转换期间用于视频的该视频区域的运动矢量差(MVD)的值的范围;以及通过限制MVD值落在该范围之内而执行转换。

2.根据解决方案1所述的方法,其中,在视频的所有视频区域的转换期间应用该范围。

3.根据解决方案1-2中任一项所述的方法,其中,该范围等于该视频区域的运动矢量的范围。

4.根据解决方案1-3中任一项所述的方法,其中,该限制包括:将MVD分量缩放到某一精度;以及将缩放之外的部分修剪到该范围。

5.根据解决方案1-4中任一项所述的方法,其中,该视频区域的性质包括该视频区域的编解码信息。

6.根据解决方案1-5中任一项所述的方法,其中,该范围选自针对该视频的一组多个可能范围。

7.根据解决方案1-4中任一项所述的方法,其中,该视频区域的性质包括用于该视频区域的运动矢量预测子的精度。

8.根据解决方案1-4中任一项所述的方法,其中,该视频区域的性质对应于MVShift的值,其中,MVShift是与视频区域相关联的变量,并且其中,MVShift取决于与视频区域相关联的affine_inter_flag或amvr_flag或amvr_precision_flag。

9.根据解决方案1所述的方法,其中,该视频区域的性质对应于用于转换的编解码模式。

10.根据解决方案9所述的方法,其中,该编解码模式是帧内块复制模式,并且其中,该范围对应于[-2K+L,2K+L-1],其中,K和L分别是表示运动矢量(MV)的整数部分的范围和MV的分数部分的范围。

11.根据解决方案10所述的方法,其中,K=13且L=0。

12.根据解决方案1所述的方法,其中,该视频区域的性质对应于用于转换的运动模型。

13.根据解决方案1所述的方法,其中,该视频区域的性质是,使用平移模型对视频区域的运动建模,结果,确定该范围为[-2K+L,2K+L-1],其中,K和L分别是表示运动矢量(MV)的整数部分的范围和MV的分数部分的范围。

14.根据解决方案13所述的方法,其中,K=13,L=2。

15.根据解决方案1所述的方法,其中,该视频区域的性质是,使用非平移模型对视频区域的运动建模,结果,确定该范围为[-2K+L,2K+L-1],其中,K和L分别是表示运动矢量(MV)的整数部分的范围和MV的分数部分的范围。

16.根据解决方案15所述的方法,其中,K=13,L=4。

17.根据解决方案1所述的方法,其中,该限制包括将MVD的取整值限制到该范围。

18.一种视频处理方法,包括:确定在视频区域和视频区域的比特流表示之间的转换期间用于视频的该视频区域的运动矢量差(MVD)的值的范围;以及在转换期间执行的语义解释期间,执行MVD值的裁剪操作以落在该范围之内。

19.根据解决方案1-18中任一项所述的方法,其中,该视频区域对应于视频块。

20.根据解决方案1-19中任一项所述的方法,其中,该转换包括从比特流表示生成该视频区域的像素值。

21.根据解决方案1-20中任一项所述的方法,其中,该转换包括从该视频区域的像素值生成比特流表示。

22.一种视频处理装置,其包括被配置为实施示例1到21中的一者或多者的处理器。

23.一种具有存储于其上的代码的计算机可读介质,所述代码在由处理器执行时使处理器实施示例1到21中的一者或多者当中陈述的方法。

第4章中列出的项目还提供了上文列出的解决方案的变体。

图4是视频处理的示例性方法400的流程图。方法400包括针对视频的第一块和第一块的比特流表示之间的转换,确定(402)与第一块相关联的运动矢量差(MVD)分量的范围,其中,MVD分量的范围是[-2M,2M-1],其中,M=17;将该MVD分量的值约束(404)在MVD分量的范围中;以及基于MVD分量的受约束范围执行(406)转换。

在一些示例中,该范围适用于编解码器的可允许的MVD精度和/或可允许的运动矢量(MV)精度。

在一些示例中,可允许的MVD精度和/或可允许的运动矢量(MV)精度为1/16亮度样点精度。

在一些示例中,在有多个可允许MVD精度和/或编解码器中的MV精度时,MVD分量的范围适用于多个可允许MVD精度和/或MV精度中的最精细精度。

在一些示例中,在多个可允许MVD精度和/或MV精度包括1/16亮度样点、1/4亮度样点、1亮度样点和4亮度样点时,MVD分量的范围适用于1/16亮度样点精度。

在一些示例中,确定MVD分量的范围为[-2M,2M-1],其中,M=K+L,其中K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,其中,以1/2L亮度样点精度表示MVD分量,和/或确定与第一块相关联的MVD分量的范围为[-2M,2M-1],其中,M=K+L,其中,K表示用于表示MV分量的整数部分的比特数,L表示用于表示MV分量的分数部分的比特数,其中,以1/2L亮度样点精度表示MVD分量,M、K和L为正整数。

在一些示例中,K=13,L=4且M=17。

在一些示例中,该MVD分量是在比特流中编解码的被解码/信令通知的MVD分量,或者是通过解码过程中的内部移位操作与特定精度相关联的经转换MVD分量。

在一些示例中,该MVD分量包括水平MVD分量和垂直MVD分量,水平MVD分量和垂直MVD分量具有相同范围。

在一些示例中,由整数比特、分数比特和符号比特表示MVD分量。

在一些示例中,与第一块相关联的MV的范围与MVD分量的范围相同。

图5是视频处理的示例性方法500的流程图。方法500包括针对视频的第一块和第一块的比特流表示之间的转换,确定(502)与第一块相关联的运动矢量差(MVD)分量的范围,其中,MVD分量的范围适用于编解码器的可允许MVD精度和/或可允许运动矢量(MV)精度;将该MVD分量的值约束(504)在MVD分量的范围中;以及基于MVD分量的受约束范围执行(506)转换。

在一些示例中,该MVD分量是在比特流中编解码的被解码/信令通知的MVD分量,或者是通过解码过程中的内部移位操作与特定精度相关联的经转换MVD分量。

在一些示例中,要求解码/信令通知的MVD分量在[-2M,2M-1]的范围中,其中,M=17。

在一些示例中,由整数比特、分数比特和符号比特表示MVD分量。

在一些示例中,确定MVD分量的范围为[-2M,2M-1],其中,M=K+L,其中K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,其中,以1/2L亮度样点精度表示MVD分量,和/或确定与第一块相关联的MVD分量的范围为[-2M,2M-1],其中,M=K+L,其中,K表示用于表示MV分量的整数部分的比特数,L表示用于表示MV分量的分数部分的比特数,其中,以1/2L亮度样点精度表示MVD分量,M、K和L为正整数。

在一些示例中,所有解码MVD分量的值首先被缩放到1/2L亮度样点精度,然后被裁剪到MVD分量的范围[-2M,2M-1]。

在一些示例中,在编解码器中有多个可允许MVD精度和/或MV精度时,MVD分量的范围适用于多个可允许MVD精度和/或MV精度中的最精细精度。

在一些示例中,在多个可允许MVD精度和/或MV精度包括1/16亮度样点精度、1/4亮度样点精度、1亮度样点精度和4亮度样点精度时,MVD分量的范围适用于1/16亮度样点精度,并将MVD分量的值约束和/或裁剪到在该范围中。

在一些示例中,K=13,L=4且M=17。

在一些示例中,该MVD分量包括水平MVD分量和垂直MVD分量,水平MVD分量和垂直MVD分量具有相同范围。

在一些示例中,MV的范围与MVD分量的范围相同。

图6是视频处理的示例性方法600的流程图。方法600包括针对视频的第一块和第一块的比特流表示之间的转换,基于第一块的编解码信息确定(602)与第一块相关联的运动矢量差(MVD)分量的范围;将该MVD分量的值约束(604)到处于MVD分量的范围中;以及基于受约束的MVD分量执行(606)转换。

在一些示例中,MVD分量的范围包括多组MVD分量的范围。

在一些示例中,编解码信息包括运动矢量(MV)预测子精度、MVD分量精度和MV精度中的至少一者。

在一些示例中,在MVD分量的MVD精度是1/2L亮度样点时,确定MVD分量的范围是[-2K+L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K为13,L为4、3、2、1、0、-1、-2、-3和-4之一。

在一些示例中,编解码信息包括与MVD相关联的变量MvShift,其中,变量MvShift的推导取决于是否使用AFFINE,和/或是否使用自适应运动矢量分辨率(AMVR),和/或AMVR精确度和/或MVD的精度和/或具有运动矢量差的merge模式(MMVD)信息和/或第一块的预测模式。

在一些示例中,从编解码信息中的inter_affine_flag、amvr_flag和amvr_precision_idx的包括一个或多个语法元素推导变量MvShift。

在一些示例中,从编解码信息中的包括inter_affine_flag、amvr_flag、amvr_precision_idx、sps_fpel_mmvd_enabled_flag、ph_fpel_mmvd_enabled_flag、mmvd_distance_idx和CuPredMode的一个或多个语法元素推导变量MvShift。

在一些示例中,该编解码信息包括指示第一块的编解码模式、运动模式和预测模式以及编解码信息中是否使用AFFINE/AMVR的一个或多个变量和/或语法元素。

在一些示例中,在第一块的预测模式为指示第一块是以IBC模式编解码的MODE_IBC时,确定MVD分量的范围是[-2K+L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K=13且L=0。

在一些示例中,在第一块的运动模型的索引等于0时,确定MVD分量的范围是[-2K +L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K=13且L=2。

在一些示例中,在第一块的预测模式为MODE_INTER且变量affine_inter_flag为假时,确定MVD分量的范围是[-2K+L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K=13且L=2。

在一些示例中,在第一块的运动模型的索引不等于0时,确定MVD分量的范围是[-2K+L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K=13且L=4。

在一些示例中,在第一块的预测模式为MODE_INTER且变量affine_inter_flag为真时,确定MVD分量的范围是[-2K+L,2K+L-1]的范围,将MVP分量的值约束和/或裁剪到该范围中,其中,K表示用于表示MVD分量的整数部分的比特数,L表示用于表示MVD分量的分数部分的比特数,K和L为正整数。

在一些示例中,K=13且L=4。

在一些示例中,如果解码的MVD分量处于分数精度,则将解码的MVD分量取整到整数MVD分量。

在一些示例中,取整的整数MVD分量在[-2K,2K-1]的范围中,其中,K=13。

在一些示例中,将所有解码的MVD分量的值在语义解释期间显式地裁剪到MVD分量的该范围,而不是使用比特流约束。

在一些示例中,该转换从比特流表示生成视频的第一块。

在一些示例中,该转换从视频的第一块生成比特流表示。

在本文件中的示例的列举当中,转换一词可以指为当前视频块生成比特流表示或者由比特流表示生成当前视频块。比特流表示未必表示连续的比特群组,而是可以被划分成包括到标头字段或者表示编解码像素值信息的码字当中的比特。

在上文的示例当中,适用性规则可以是预定义的,并且是编码器和解码器已知的。

应当认识到,所公开的技术可以被体现到视频编码器或解码器当中,从而利用包括有关帧内编解码中的差分编解码模式的使用的考虑事项的各种实施规则的使用的技术来提高压缩效率,如本文件中所述。

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

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

本说明书中描述的过程和逻辑流可以通过由一个或多个可编程处理器执行一个或多个计算机程序来执行,从而通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流也可以通过专用逻辑电路来执行,并且装置也可以被实施成专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

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

虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例专有特征的描述。本专利文件在各单独实施例的语境下描述的某些特征也可以在单个实施例中组合实施。相反地,在单个实施例的语境下描述的各种特征也可单独地或者以任何合适的子组合的形式在多个实施例中实现。此外,虽然某些特征可能在上面被描述为以某些组合来起作用并且甚至最初也这样地来要求对其的权利保护,但是来自要求权利保护的组合的一个或多个特征在某些情况下可从该组合中去除,并且要求权利保护的组合可涉及子组合或子组合的变型。

类似地,虽然操作在附图中以特定次序示出,但不应将这种情况理解为需要以相继次序或所示的特定次来执行此类操作,或者需要执行所有所示的操作以实现期望的结果。此外,在本专利文件中描述的实施例当中对各种系统部件的划分不应被理解为在所有实施例中都要求这样的划分。

仅描述了几种实施方式和示例,其他实施方式、增强和变化可以基于本专利文件中描述和说明的内容做出。

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于缩放列表的视频或图像编译

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类