[0220] 候选确定器920确定在全部候选中是否存在满足等式4的至少一个“mvy”,以确定是否从运动矢量预测候选中排除运动矢量预测候选之一的“mvx”。在等式4中,“MVD”表示原始运动矢量差,并且mvxIdx和mvyIdx表示从所有运动矢量预测候选中分别用于指定“mvx”和“mvy”的索引信息。为了确定是否排除“mvx”,通过使用预定的评价函数“A”来评价用于从所有侯选中指定“mvy”的索引信息和基于“mvx”的虚拟运动矢量“mvx+MVD”和其它运动矢量预测候选“mvy”之间的虚拟运动矢量差“mvx+MVD-mvy”。此外,通过使用预定的评价函数“A”来评价用于从全部候选中指定“mvx”的索引信息和原始运动矢量差。作为评价的结果,确定在全部候选中是否存在至少一个“mvy”。
[0221] 如上所述,可由x坐标和y坐标定义由“A”评价的虚拟运动矢量差和原始运动矢量差,并可如下面的等式5定义虚拟运动矢量差和原始运动矢量差:
[0222] (等式5)
[0223] A(mvx+MVD-mvy,mvyIdx)=f(p1)+f(q1)+g(mvyIdx)
[0224] A(MVD,mvxIdx)=f(p2)+f(q2)+g(mvxIdx)
[0225] 与等式2相比,等式2左侧的A(mvx+MVD-mvy)仅评价虚拟运动矢量差,然而等式5的A(mvx+MVD-mvy,mvyIdx)评价虚拟运动矢量差和用于从所有运动矢量预测候选指定“mvy”的信息。评价函数“A”可以是用于评价熵编码结果的函数。在此,函数“f”可以是如等式2相关描述的用于基于虚拟运动矢量差的x坐标值或y坐标值估计熵编码结果的函数,函数“g”可以是用于估计“mvxIdx”的熵编码结果的函数。当“mvx+MVD-mvy”的x坐标值和y坐标值分别是“p1”和“q1”时,可如等式5计算A(mvx+MVD-mvy,mvyIdx)。
[0226] 等式2的右侧的A(MVD)仅评价原始运动矢量差,然而等式5的A(MVD,mvxIdx)评价原始运动矢量差和用于从所有运动矢量预测候选指定“mvx”的信息。函数“f”可以是如等式2相关描述的用于基于原始运动矢量差的x坐标值或y坐标值估计熵编码结果的函数,函数“g”可以是用于估计“mvxIdx”的熵编码结果的函数。当“MVD”的x坐标值和y坐标值分别是“p2”和“q2”时,可如等式5计算A(MVD,mvxIdx)。
[0227] 可在根据等式2的关于排除的确定中补充使用根据等式4和等式5的关于排除的确定。换句话说,首先基于等式2确定是否从所有运动矢量预测候选中排除“mvx”,并可根据等式4和等式5再一次确定排除。例如,作为根据等式2的确定的结果,当“A(mvx+MVD-mvy)”与“A(MVD)”相等或大于“A(MVD)”,“A(mvx+MVD-mvy)”不小于“A(MVD)”时,根据等式2没有从所有运动矢量预测候选中排除“mvx”。然而,虽然“A(mvx+MVD-mvy)”和“A(MVD)”彼此相等,但可基于根据等式4和等式5的确定的结果从所有运动矢量预测候选排除“mvx”。
[0228] 当候选确定器基于等式1到等式5确定关于针对运动矢量预测候选的排除时,根据组C的排列顺序重复执行关于针对运动矢量预测候选的排除的确定。根据另一示例性实施例,候选确定器920根据预定的标准重新排列组C,并根据重新排列的顺序重复关于排除的确定。参照图13a到图13d详细描述上述过程。
[0229] 图13a到图13d示出根据示例性实施例的包括在具有预定的尺寸的编码单元中的当前块的位置。
[0230] 当所有运动矢量预测候选是C={median(mv_a’,mv_b’,mv_c’),mv_a’,mv_b’,mv_c’,mv_temporal}时,将每个二进制数分配给组C的运动矢量预测候选,因此如上所述,可从运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测候选。
[0231] 在此,根据包括在组C中的运动矢量预测候选的排列顺序分配二进制数,并且上述二进制数可以是基于霍夫曼编码(Huffman code)的可变长编码。因此,可将少量的比特分配到布置在组C的排列顺序的前部的运动矢量预测候选。例如,可将“0”比特分配给median(mv_a’,mv_b’,mv_c’),可将“00”比特分配给mv_a’,可将“01”比特分配给mv_b’。因此,候选确定器920根据预定的顺序排列运动矢量预测候选,从而在从运动矢量预测候选预测当前块的运动矢量的预测中将被使用的具有高可能性的运动矢量预测被定位在组C的前部。
[0232] 可根据编码单元中的当前块的位置来确定在当前块的运动矢量预测中将被使用的具有高可能性的运动矢量预测。可通过使用当前块的分块索引表达当前块的位置。根据预定的顺序,将分块索引分配到编码单元中的块。因此,可根据当前块分块索引确定在当前块的运动矢量预测中将被使用的具有高可能性的运动矢量预测。如图13a,当当前块被定位在编码单元的下侧时,当前块的运动矢量可以相同或相似于与编码单元的左侧相邻的块的运动矢量或与编码单元的左下侧相邻的块的运动矢量。因此,可能需要改变排列顺序,从而相应于与编码单元的左侧相邻的块的运动矢量或与编码单元的左下侧相邻的块的运动矢量的运动矢量预测候选被定位在组C的前部。由于来自组C的运动矢量预测候选的mv_b’是相应于与左侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_b’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_b’,mv_a’,median(mv_a’,mv_b’,mv_c’),mv_c’,mv_temporal}。
[0233] 相似地,当当前块被定位在如图13b中的编码单元的左侧时,运动矢量预测候选可被用于预测当前块的运动矢量,其中,所述运动矢量预测候选相应于与编码单元的左侧相邻的块的运动矢量和与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_b’是相应于与左侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_b’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_b’,mv_a’,median(mv_a’,mv_b’,mv_c’),mv_c’,mv_temporal}。
[0234] 如在图13c中,当当前块被定位在编码单元的上侧时,运动矢量预测候选可被用作当前块的运动矢量预测,其中,所述运动矢量预测候选相应于与编码单元的左侧相邻的块的运动矢量和与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_a’是相应于与上侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_a’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_a’,median(mv_a’,mv_b’,mv_c’),mv_b’,mv_c’,mv_temporal}。
[0235] 如在图13d中,当当前块被定位在编码单元的右侧时,运动矢量预测候选可被用于预测当前块的运动矢量,其中,所述运动矢量预测候选相应于与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_c’是相应于与上侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_c’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_c’,mv_a’,mv_b’,median(mv_a’,mv_b’,mv_c’),mv_temporal}。
[0236] 作为用于重新排列运动矢量预测候选的标准的编码单元中的当前块的位置是示例。换句话说,多个标准可被用于重新排列运动矢量预测候选。用于排列具有与在组C中的前部的当前块的运动矢量相似的高可能性的运动矢量预测候选的多个标准可被用作用于重新排列运动矢量预测候选的标准。可基于与当前块之前已编码的其它块相关的预定的信息,确定具有与当前块的运动矢量相似的高可能性的运动矢量预测候选,并且可根据所述确定重新排列组C。
[0237] 另外,基于在对当前块的运动矢量进行编码之前相对于当前块已编码的或已解码的其它信息,确定具有与当前块的运动矢量相似的高可能性的运动矢量预测候选,并且可根据所述确定重新排列组C。
[0238] 另外,可通过排除重叠的运动矢量预测候选来重新排列组C。当在所有运动矢量预测候选中存在重叠的运动矢量预测候选时,首先排除重叠的运动矢量预测候选,并且可根据等式1到等式5确定是否排除运动矢量预测候选。
[0239] 重新参照图9,运动矢量编码器930对关于运动矢量的信息和关于运动矢量预测的信息进行编码。关于运动矢量的信息是当前块的原始运动矢量和原始运动矢量预测之间的原始运动矢量差。关于运动矢量预测的信息是用于指定运动矢量预测候选的信息,其中,所述运动矢量预测候选被用于在排除了至少一个运动矢量预测的运动矢量预测候选中预测当前块的运动矢量。换句话说,将用于在运动矢量预测候选中指定当前块的运动矢量预测的信息编码为关于运动矢量预测的信息,其中,在候选确定器920中没有排除所述运动矢量预测候选。
[0240] 从运动矢量估计器910接收原始运动矢量差,并且根据预定的熵编码方法对原始运动矢量差进行编码。此外,对用于从运动矢量预测候选中指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码,其中,通过在候选确定器920排除至少一个运动矢量预测候选来确定所述运动矢量预测候选。
[0241] 当候选确定器920通过根据等式1到等式5从所有运动矢量预测候选排除至少一个运动矢量预测候选来确定运动矢量预测候选时,对用于从确定的运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码。运动矢量编码器930可对在候选确定器920中没有排除的每个运动矢量预测候选进行索引,并且将索引信息熵编码为关于运动矢量预测的信息。索引表示将预定的二进制数分配给每个运动矢量预测候选,并且关于运动矢量预测的信息表示分配给用于预测当前块的运动矢量的运动矢量预测候选的二进制数。当在候选确定器920选择性地排除至少一个运动矢量预测候选之后保留一个运动矢量预测候选时,因为无疑问地确定将用于预测当前块的运动矢量的运动矢量预测候选,在运动矢量编码器930中可不单独地对关于运动矢量预测的信息进行编码。
[0242] 此外,如图13a到图13d相关的描述,候选确定器920可对每个运动矢量预测候选进行索引,并可对索引信息进行熵编码,其中,通过根据预定的标准重新排列所有运动矢量预测候选,并通过从所述重新排列的运动矢量预测候选中选择性地排除至少一个运动矢量预测来产生所述运动矢量预测候选。
[0243] 作为由候选确定器920执行重新排列的结果,可将具有最小比特数的二进制数分配给具有将被用于预测当前块的运动矢量的高可能性的运动矢量预测候选,因此可以以高压缩率对关于运动矢量预测的信息进行编码。
[0244] 图14是根据示例性实施例的用于对运动矢量进行解码的设备1400的框图。
[0245] 图14的用于对运动矢量进行解码的设备1400被包括在图2的用于对图像进行解码的设备200或图5的图像解码器500中。参照图14,用于对运动矢量进行解码的设备1400包括:运动矢量解码器1410、候选确定器1420和运动矢量恢复单元1430。
[0246] 当根据上面描述的显式模式和隐式模式中的显式模式对当前块的运动矢量进行编码时,用于对运动矢量进行解码的设备1400对当前块的运动矢量进行解码。
[0247] 运动矢量解码器1410接收针对当前块的运动矢量的比特流并对接收的比特流进行解码。对被包括在比特流中的关于运动矢量的信息进行解码。对当前块的原始运动矢量差进行解码。可根据预定的熵解码方法对原始运动矢量差进行解码。原始运动矢量差是当前块的运动矢量和被用于预测当前块的运动矢量的运动矢量预测候选之间的矢量差。在根据示例性实施例的对运动矢量进行解码的方法中,根据等式1到等式5从所有运动矢量预测候选中排除至少一个运动矢量预测候选,并确定运动矢量预测候选。没有固定运动矢量预测候选,并且按照块单元对所述运动矢量预测候选进行解码,从而可连续改变运动矢量预测候选。因此,虽然关于运动矢量预测候选的信息相同,但如果没有确定运动矢量预测候选,则不能准确地恢复用于预测当前块的运动矢量的运动矢量预测候选。
[0248] 因此,候选确定器1420在确定用于预测当前块的运动矢量的运动矢量预测候选之前确定运动矢量预测候选。根据等式1到等式5从所有运动矢量候选中选择性地排除至少一个运动矢量预测候选,并确定运动矢量预测候选。基于预定的评价函数排除运动矢量预测候选,其中,所述运动矢量预测候选在基于包括在与当前块相邻的先前编码的区域中的块的运动矢量确定的所有候选中未被用于预测当前块的运动矢量。
[0249] 基于所有运动矢量预测候选中的预定的运动矢量和关于在运动矢量解码器中解码的运动矢量预测的信息产生虚拟运动矢量,并针对所有候选计算作为产生的虚拟运动矢量和其它运动矢量预测候选之间的差的虚拟运动矢量差。对计算的虚拟运动矢量差和关于在运动矢量解码器1410中解码的运动矢量的信息(即,关于原始运动矢量差的信息)进行比较,并选择性地排除预定的运动矢量预测候选。对通过对虚拟运动矢量差进行熵编码而获得的结果和通过对原始运动矢量差进行熵编码而获得结果进行比较,从而可确定是否排除预定的运动矢量预测候选。另外,为了增加熵编码结果的估计准确度,还估计通过对索引信息进行熵编码而获得的结果并将所述的结果用在关于排除的确定中。与等式1到等式5相关地描述排除运动矢量预测候选的方法。
[0250] 此外,根据另一示例性实施例,候选确定器1420根据预定的标准重新布置所有运动矢量预测候选,针对所有重新排列的运动矢量预测候选根据等式1到等式5执行关于排除的确定,并可选择性地排除至少一个运动矢量预测候选。可从所有重新排列的运动矢量预测候选排除重叠的运动矢量预测候选,并可根据等式1到等式5重复执行关于排除的确定。
[0251] 当在候选确定器1420从所有运动矢量预测候选排除至少一个运动矢量预测候选之后来自所有运动矢量预测候选的多个运动矢量预测候选保留下来时,运动矢量解码器1410对关于运动矢量预测的信息进行解码。根据预定的熵解码方法对关于运动矢量预测的信息进行解码。关于运动矢量预测的信息是用于指定运动矢量预测候选的信息,其中,所述运动矢量预测候选被用于在排除了至少一个运动矢量预测候选的运动矢量预测候选中预测当前块的运动矢量。对用于从候选确定器1420未排除的运动矢量预测候选中指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行解码。
[0252] 当在候选确定器1420从所有运动矢量预测候选排除至少一个运动矢量预测候选之后一个运动矢量预测候选保留下来时,保留的运动矢量预测候选被用于预测当前块的运动矢量,因此运动矢量解码器1410可不对关于运动矢量预测候选的信息进行单独解码。
[0253] 运动矢量恢复单元1430基于关于在运动矢量解码器1410中解码的运动矢量的信息恢复当前块的运动矢量。在运动矢量解码器1410中解码的原始运动矢量差和用于预测当前块的运动矢量的运动矢量预测候选相加,以恢复当前块的运动矢量。从在候选确定器1420中确定的运动矢量预测候选确定将被用于预测当前块的运动矢量的运动矢量预测候选,并且将确定的运动矢量预测候选与原始运动矢量差相加。当多个运动矢量预测候选而不是一个运动矢量预测候选保留下来时,作为候选确定器1420中的排除的结果,可基于关于在运动矢量解码器1410中解码的运动矢量预测的信息确定用于预测当前块的运动矢量的运动矢量预测候选。
[0254] 由于由候选确定器1420确定运动矢量预测候选,即使关于运动矢量预测的解码的信息相同,用于预测当前块的运动矢量的运动矢量预测候选也可以是在不同的位置的相邻块的运动矢量。
[0255] 图15是示出根据示例性实施例的对运动矢量进行编码的方法的流程图。
[0256] 参照图15,在操作1510,用于对运动矢量进行编码的设备估计当前块的运动矢量,并确定用于从所有运动矢量预测候选中预测当前块的运动矢量的运动矢量预测候选。在多个参考图像中搜索与当前块相同或相似的块,并且作为搜索的结果,估计运动矢量(即,当前块和参考块之间的相对位置差)。
[0257] 随后,基于包括在与当前块相邻的先前编码的区域中的块的运动矢量来预测当前块的运动矢量。换句话说,将包括在与当前块相邻的先前编码的区域中的块的运动矢量设置为运动矢量预测候选,并确定运动矢量预测候选中与估计的当前块的运动矢量最相似的运动矢量预测候选。产生当前块的运动矢量和确定的运动矢量预测候选之间的矢量差(即,原始运动矢量差)。
[0258] 在操作1520,用于对图像进行编码的设备选择性地从所有运动矢量预测候选中排除至少一个运动矢量预测候选。从所有运动矢量预测候选排除未被用于预测当前块的运动矢量的运动矢量预测候选。
[0259] 用于对图像进行编码的设备通过使用所有运动矢量预测候选中的预定的运动矢量预测候选和在操作1510中产生的原始运动矢量差来产生虚拟运动矢量。将产生的虚拟运动矢量和其它运动矢量预测候选用于产生虚拟运动矢量差。产生针对所有运动矢量预测候选中的每个的虚拟运动矢量差,并对产生的虚拟运动矢量差和原始运动矢量差进行比较,从而可选择性地排除预定的运动矢量预测候选。
[0260] 针对所有候选重复执行操作1520中的产生虚拟运动矢量并选择性地排除运动矢量预测候选的处理,因此可从所有候选中排除至少一个运动矢量预测候选。当重复执行排除处理时,计算针对运动矢量预测候选而不是已排除的运动矢量预测的虚拟运动矢量差,并且可对计算的虚拟运动矢量差和原始运动矢量差进行比较。
[0261] 可基于预定的评价函数对虚拟运动矢量差和原始运动矢量差进行评价和相互比较,其中,所述预定的评价函数可以是估计熵编码结果的函数。可基于函数对虚拟运动矢量差和原始运动矢量差进行相互比较,其中,所述函数估计通过对虚拟运动矢量差进行熵编码而获得的结果和通过对原始运动矢量差进行熵编码而获得的结果。此外,为了增加评价准确度,可还估计通过对索引信息进行编码而获得的结果,并将其用于关于排除的确定中。与等式1到等式5相关地描述从所有运动矢量预测候选中排除至少一个运动矢量预测候选的方法。
[0262] 此外,如与图13a到图13d相关的描述,用于对运动矢量进行编码的设备可根据预定的标准重新排列所有运动矢量预测候选,并从所有重新布置的运动矢量预测候选选择性地排除至少一个运动矢量预测候选。另外,用于对运动矢量进行编码的设备可从所有重新排列的运动矢量预测候选排除重叠的运动矢量预测候选,并根据等式1到等式5重复执行关于排除的确定。
[0263] 在操作1530,用于对运动矢量进行编码的设备对关于运动矢量的信息和关于运动矢量预测的信息进行编码。对关于原始运动矢量差的信息和用于指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码。关于运动矢量预测的信息可以是用于从在操作1520和操作1530没有排除的运动矢量预测候选指定运动矢量预测候选的信息,其中,所述运动矢量预测候选用于预测当前块的运动矢量。
[0264] 当在从所有运动矢量预测候选排除至少一个运动矢量预测候选之后一个运动矢量预测候选保留下来时,可不对关于运动矢量预测的信息进行编码。
[0265] 图16是示出根据示例性实施例的对运动矢量进行解码的方法的流程图。
[0266] 参照图16,在操作1610,用于对运动矢量进行解码的设备对来自接收的比特流的关于当前块的运动矢量的信息进行解码。关于运动矢量的信息可以是当前块的运动矢量和当前块的运动矢量预测之间的原始运动矢量差。
[0267] 在操作1620,用于对运动矢量进行解码的设备基于在操作1610中解码的关于运动矢量的信息和运动矢量预测候选中的一个运动矢量预测候选产生虚拟运动矢量。
[0268] 当产生虚拟运动矢量时,用于对运动矢量进行解码的设备从所有运动矢量预测候选排除至少一个运动矢量预测候选。基于包括在与当前块相邻的先前解码的区域中的块的运动矢量确定所有运动矢量预测候选。用于对运动矢量进行解码的设备可从所有运动矢量预测候选选择性地排除至少一个运动矢量预测候选。基于预定的评价函数评价虚拟运动矢量差和在操作1610中解码的原始运动矢量差,以选择性地排除预定的运动矢量预测候选。从所有候选中排除运动矢量预测候选的方法与操作1530相同,并且上面参照等式1到等式5描述了所述方法。
[0269] 针对所有候选重复执行在操作1620产生虚拟运动矢量并选择性地排除运动矢量预测候选的处理,因此可从所有候选中排除至少一个运动矢量预测候选。
[0270] 此外,如与图13a到图13d相关的描述,用于对运动矢量进行解码的设备可根据预定的标准重新排列所有运动矢量预测候选,并从所有重新排列的运动矢量预测候选中选择性地排除至少一个运动矢量预测候选。另外,用于对运动矢量进行解码的设备可从所有重新排列的运动矢量预测候选中排除重叠的运动矢量预测候选,并根据等式1到等式5重复执行关于排除的确定。
[0271] 当作为排除的结果多个运动矢量预测候选保留下来时,对关于运动矢量预测的信息进行解码,并且当一个运动矢量预测候选保留下来时,不对关于运动矢量预测的信息进行解码。
[0272] 在操作1630,用于对运动矢量进行解码的设备从在操作1620未排除的运动矢量预测候选确定用于预测当前块的运动矢量的运动矢量预测。
[0273] 可基于关于当前块的运动矢量预测的信息确定运动矢量预测候选中的用于预测当前块的运动矢量的运动矢量预测候选。当作为在操作1620中的排除的结果,一个运动矢量预测候选保留下来时,将一个保留的运动矢量预测候选确定为用于预测当前块的运动矢量的运动矢量预测。
[0274] 当确定运动矢量预测候选时,通过将确定的运动矢量预测候选和在操作1610中解码的原始运动矢量差相加来恢复当前块的运动矢量。
[0275] 根据示例性实施例,当运动矢量预测候选被用于对运动矢量进行预测编码和预测解码时,可减少运动矢量预测候选的数量以对运动矢量进行预测编码和预测解码。因此,可以以最小比特来对从运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测所需的信息进行编码,从而增加了对运动矢量进行编码/解码的压缩率,并从而可提高对图像进行编码/解码的压缩率。
[0276] 虽然上面已特别地示出并描述了示例性实施例,但是本领域的普通技术人员将理解,在不脱离由权利要求限定的本发明构思的精神和范围的情况下,可以对其形式和细节进行各种改变。
[0277] 示例性实施例可还被实施为计算机可读记录介质上的计算机可读代码。
[0278] 例如,根据示例性实施例的用于对图像进行编码的设备、用于对图像进行解码的设备、运动矢量编码器和运动矢量均可包括总线和结合到所述总线的至少一个处理器,其中,所述总线耦合到包括在图1、图2、图4、图5、图9和图14中的设备中的每个元件。另外,设备均可包括耦合到至少一个处理器的存储器以存储命令、接收的消息或产生的消息,其中,所述处理器用于通过结合到总线来执行所述命令。
[0279] 计算机可读记录介质是能够存储数据的任何数据存储装置,其中,所述数据能够在存储之后由计算机系统读取。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROMs、磁带、软盘、光学数据存储装置等。计算机可读记录介质还可分布于联网的计算机系统上,从而以分布的方式存储并执行计算机可读代码。