编码和解码图像的制作方法

文档序号:7622255阅读:103来源:国知局
专利名称:编码和解码图像的制作方法
技术领域
本发明针对于一种用于编码和解码图像的方法。
背景技术
视频编解码是设计为编码(即,压缩)和解码(即,解压缩)视频数据流的压缩算法,用来减小流的大小,从而加快传送速度和减小存储空间。尽管有损失,现在的视频编解码试图在压缩视频流的二进制数据的同时保持视频质量。
视频流典型地由视频帧的序列组成。视频编码器通常将每个帧分割成若干宏块,每个宏块为一组16×16的像素。视频编码器典型地使用帧内编码或帧间编码来编码视频帧或视频帧中的宏块。帧内编码的帧或宏块独立于其它帧或独立于在其它帧中的宏块来编码。
帧间编码的帧或宏块通过参考一个或若干其它帧或其它帧中的宏块来编码。由于编码不得不将特定帧的宏块或宏块内的分区与另一参考帧的宏块或宏块内的分区比较,因此典型地块间编码是耗时的。由此,本领域需要更有效的块间编码方法。理想地,该编码方法可以加速编码和解码操作。

发明内容
一些实施方式提供了一种通过参考视频序列中的第二图像对在第一图像中的第一组像素编码的方法。在第二图像的第一搜索窗口中,该方法搜索以识别与第一图像中的第一组像素最匹配的第二图像中的第一特定部分。在第二图像中第一搜索窗口中,该方法识别相应于第一特定部分的第一位置。在第二图像中的第二搜索窗口中,该方法接下来搜索以识别与在第一图像中的第一组像素最匹配的第二图像中的第二特定部分,其中第二搜索窗口被定义在第一位置周围。
一些实施方式提供了一种用于在视频序列中块间编码图像的方法。视频序列中的每个图像具有若干整数像素位置,每个整数像素位置具有至少一个图像值(例如,亮度值)。该方法通过参考第二图像选择用于编码的第一图像。该方法接下来识别与第一图像中一组像素匹配的第二图像中的一组非整数像素位置。该标识需要将第二图像中的若干整数像素位置的图像值内插到与第二图像中非整数像素位置相关联的图像值中。该方法存储非整数像素位置的内插的图像值,用于在此后的通过参考第二图像的第三图像的编码期间使用。
一些实施方式提供了一种用于在视频序列中块间解码图像的方法。视频序列中每个图像具有若干整数像素位置,每个整数像素位置具有至少一个图像值(例如,亮度值)。该方法通过参考第二图像选择用于解码的第一图像。该方法接下来在第二图像中识别与第一图像中的一组像素对应的一组非整数像素位置。该方法接下来将第二图像中的若干整数像素位置的图像值内插到与第二图像中的非整数像素位置相关联的图像值中。该方法存储内插的非整数像素位置的图像值,用于在此后通过参考第二图像在第三图像的解码期间使用。
一些实施方式提供了一种用于通过参考在视频图像的序列中的第二图像来块间处理第一图像中的第一部分的方法。该方法将第二图像分割成一组拼接片(tilt)并且将拼接片存储在第一非高速缓冲存储器中。只要子组拼接片需要将第一图像的第一部分与第二图像的一部分相匹配时,该方法就从第一非高速缓冲存储器中检索该子组拼接片,并将检索到的子组拼接片存储在第二高速缓冲存储器中,以在第一部分和作为检索到的子组拼接片的一部分的第二图像的部分之间进行快速比较。该检索到的子组拼接片比整组拼接片小。
在一些实施方式中,当该方法识别第二图像中的位置来搜索以识别与第一部分匹配的第二图像中的部分时,该方法确定其需要检索子组拼接片并将其存储在第二高速缓冲存储器中,其中,该识别的位置对应于子组拼接片。在一些实施方式中,该高速缓冲存储器为计算机的随机存取存储器,而非高速缓冲存储器为计算机的非易失性存储设备。同时,在一些实施方式中,块间处理方法为块间编码方法,而在其它实施方式中,块间处理方法为块间解码方法。此外,一些实施方式中的拼接片组包括至少两个水平相邻的拼接片和至少两个垂直相邻的拼接片。
一些实施方式提供了一种块间编码方法,其通过从一组搜索方式中选择第一搜索方式,对第一视频图像中的第一组像素进行编码,每个搜索方式定义用于检查可能与第一组像素匹配的第二图像的部分的方式。该编码方法基于一组标准,在该组搜索方式中自适应地选择第一搜索方式。在一些实施方式中,该组标准包括视频图像的媒体类型。


本发明的新的特征在所附的权利要求中阐明。然而,为了说明,在下图中阐明了本发明的一些实施方式。
图1示出了概念性地说明利用各种新颖的裁减技术来简化其编码处理的编码器的流程的处理。
图2说明了执行两级运动估计操作来识别指定在一个或两个参考帧和当前帧之间的宏块的运动的运动向量的处理。
图3说明了一些实施方式如何定位与在当前帧中宏块的位置相对应的参考帧的位置周围的第一搜索窗口。
图4说明了基于与当前帧宏块关联的预测的运动向量标识第一搜索窗口位置的一种方法。
图5说明了在第一搜索窗口中多个起始点的例子。
图6说明了第二级搜索窗口的例子。
图7说明了执行精细的运动估计处理,该处理在参考帧中识别一组像素的分区,其与当前帧宏块的一组像素的分区最匹配。
图8在概念上说明了具有若干位置点的搜索窗口。
图9在概念上说明了在多像素级上为参考帧宏块搜索像素分区的处理。
图10在概念上说明了若干可能的分区(即,块)的尺寸。
图11在概念上说明了用于不同像素级的若干搜索位置。
图12在概念上说明了与参考帧中子像素位置对准的当前帧宏块。
图13在概念上说明了包括指向同一帧的运动向量的若干帧。
图14在概念上说明了与一组像素(例如,整数、非整数)相关的数据如何被存储在高速缓存中。
图15示出了在搜索窗口中的低密度搜索方式。
图16示出了在搜索窗口中的高密度搜索方式。
图17示出了偏向于垂直方向上的搜索方式的例子。
图18示出了偏向于水平方向上的搜索方式的例子。
图19示出了选择地检查运动估计方案的子组,以便标识计算RD成本需要的方案的处理。
图20示出了实现本发明的一些实施方式的计算机系统。
具体实施例方式
在本发明的下述详细描述中,提出并描述了本发明的各种细节、示例及实施方式。但本领域技术人员可以清楚并明白本发明并不局限于提出的实施方式,并且本发明可以不需要一些特定的细节和讨论的示例而实现。
I.综述本发明的一些实施方式提供新的块间编码和解码处理。这些新的处理包括(1)多级运动估计处理,(2)用于缓存参考帧的非整数像素位置值的插值缓存处理,(3)用于缓存参考帧的拼接片的子组的拼接片缓存处理,和(4)为用于在参考帧中的搜索来自适应地选择搜索方式的运动估计处理。
A.多级运动估计一些实施方式的多级运动估计处理通过参考在视频序列里的第二图像来编码第一图像中的第一组像素。在第二图像中的第一搜索窗口中,运动估计处理搜索以在第二图像中识别与第一图像中第一组像素最匹配的第一特定部分。在第二图像中的第一搜索窗口中,运动估计处理识别对应于第一特定部分的第一位置。在第二图像中的第二搜索窗口中,运动估计处理接着搜索以在第二图像中识别与在第一图像中第一组像素最匹配的第二特定部分,其中第二搜索窗口被定义在第一位置周围。在一些实施方式中,第一搜索为粗略的运动估计处理,而第二搜索为精细的运动估计处理。此外,在一些实施方式中,精细的运动估计处理用于可变块尺寸的搜索。
B.插值缓存本发明的一些实施方式的编码器在视频序列中块间编码图像。视频序列中的每个图像具有若干整数像素位置,每个整数像素位置具有至少一个图像值(例如,亮度值)。该编码器通过参考第二图像选择用于编码的第一图像。该编码器然后识别与在第一图像中的一组像素匹配的第二图像中的一组非整数像素位置。该识别需要将来自第二图像中若干整数像素的图像值内插到与第二图像的非整数像素位置相关的图像值中。该编码器将非整数像素位置的内插的图像值存储至插值高速缓存中,用于在稍后通过参考第二图像的第三图像编码期间使用。
本发明一些实施方式的解码器使用类似的插值高速缓存。具体地,该解码器选择用于通过参考第二图像解码的第一图像。该解码器然后在第二图像中识别一组对应于第一图像中一组像素的非整数像素位置。该解码器然后将来自第二图像的一些整数像素位置的图像值内插到与第二图像的非整数像素位置相关的图像值中。该解码器存储非整数像素位置的内插的图像值,用于在稍后的通过参考第二图像的第三图像解码期间使用。
C.拼接片缓存处理一些实施方式在其块间处理中使用拼接片缓存处理,该处理通过参考视频图像的序列中的第二图像在第一图像中处理第一部分。该缓存处理将第二图像分割成一组拼接片,并将这些拼接片存储至第一非高速缓冲存储器。只要当需要一子组拼接片以将第一图像的第一部分与第二图像中的一部分匹配时,该缓存处理从第一非高速缓冲存储器中检索拼接片子组,并将检索到的拼接片的子组存储至第二高速缓冲存储器,用于在第一位置和作为检索到的拼接片子组的部分的第二图像的部分之间进行快速比较。该检索到的拼接片的子组比整组拼接片小。
在一些实施方式中,当该缓存处理标识第二图像中的位置来搜索以识别与第一部分匹配的第二图像中的一部分时,该缓存处理确定其需要一子组拼接片被检索并存储在第二高速缓冲存储器中,其中该识别的位置对应于拼接片的子组。在一些实施方式中,高速缓冲存储器为计算机的随机存取存储器,而非高速缓冲存储器为计算机的非易失性存储设备。同样,在一些实施方式中,块间处理为块间编码处理,而在另一些实施方式中,块间处理为块间解码处理。此外,在一些实施方式中,该组拼接片包括至少两个水平地相邻的拼接片和至少两个垂直地相邻的拼接片。
D.自适应搜索方式本发明的一些实施方式的运动估计处理通过从一组搜索方式中选择第一搜索方式来对第一视频图像中的第一组像素编码,该一组搜索方式中的每一个定义了用于检查可能与第一组像素匹配的部分第二图像的方式。该运动估计处理在该组搜索方式中,基于一组标准,自适应地选择第一搜索方式。在一些实施方式中的该组标准包括视频图像的媒体类型。
在描述上述新的块间编码和解码处理之前,下面首先描述包括本发明的块间编码处理的编码处理的总体流程。
II.总体流程图1示出了处理100,该处理100在概念上说明了使用各种新的裁减技术来简化其编码处理的编码器的流程。一些实施方式中没有使用这一部分描述的全部裁减技术。同样,一些实施方式结合将在下面第II部分中描述的多级运动估计操作来使用这些裁减技术。
如图1中所示,该处理100通过确定(在步骤105)是否放弃将宏块编码为帧间编码块而开始。在一些实施方式中,在特定情况下,该处理放弃块间编码。这些情况包括在请求每一个帧编码为帧内编码块来的调试模式中的解码器的布置、请求将若干宏块编码为帧内编码块的块内刷新的指定、最终选择块内编码的实现、太少的宏块被块内编码的实现或一些其它请求将宏块编码为帧内编码块的指定。
当处理100确定不需要将宏块编码为帧内编码块时,则它转移至110。在110,该处理将宏块编码为帧内编码块。各种新的用于执行块内编码的方案在题为“Selecting Encoding Types and Predictive Modes for EncodingVideo Data”(“选择编码类型和预测模式用于编码视频数据”),代理卷号为APLE.P0078(“块内编码申请”)的美国专利申请中进行描述。这里引入该美国专利申请作为参考。
一个处理将宏块编码为帧内编码块(在步骤110),该处理转移至步骤150来指定编码方案。在这个实例中,该处理指定其在步骤110的内部编码的结果,因为这是处理步骤110在该流程的这一路径中经历的唯一编码。在步骤150后,处理100结束。
可选地,当处理100确定它不应该放弃(即,裁减)块间编码(在步骤105)时,该处理执行该宏块的跳过模式编码(在步骤115),并且,如果需要,执行该宏块的直接模式编码。在跳过模式编码中,该宏块作为跳过的宏块被编码;在解码端,该宏块将参考周围的宏块的运动向量和/或周围的宏块的分区来解码。跳过模式编码在同时提交的题为“视频编码中的裁减”(“Pruning During Video Ecoding”),代理卷号为APLE.P0073(“裁减申请”)的美国专利申请中进一步描述。该美国专利申请在此引入作为参考。直接模式编码类似于跳过模式编码,只是在直接模式编码中,宏块的一些纹理数据被量化并在编码的位流中发送。在一些实施方式中,进行直接模式编码以用于宏块的B-模式编码。一些实施方式也可以在P-模式编码期间执行直接模式编码。
在步骤115后,处理100确定(在步骤120)跳过模式编码是否在步骤115导致最好的编码方案。这样将明确地作为没有在步骤115执行直接模式编码时的情况。相反,当直接模式编码在步骤115被执行并且该编码得到比跳过模式编码更好的结果时,则该处理转移至步骤135来执行下面描述的块间编码。
然而,当该处理确定(在步骤120)在步骤115跳过模式编码导致最好的结果时,该处理确定(在步骤125)跳过模式编码是否足够好而终止编码。进行这种确定的一个方法已经在上述引入的裁减申请中描述。
如果处理确定(在步骤125)跳过模式编码足够好,该处理100转移至步骤130,在步骤130中确定该跳过模式编码方案是否应被放弃。一些实施方式基于编码成本,称为失真率成本(RD成本)判断方案。如在第II部分中进一步描述的,编码方案的RD成本经常说明在编码宏块中的失真并计算为该编码方案生成的实际位的数量。跳过模式方案有时具有巨大的RD成本,但还是很好的方案。这是由于这种方法具有非常小的速率成本(rate cost),这种速率成本有时通过足够的大小来使总RD成本畸变,使不好的方法看似为最好的方法。
由此,即使在步骤125选择跳过模式编码方案后,该处理100确定(在步骤125)是否应当移除跳过模式方案。在一些实施方式中,做出该决定的标准为当前宏块的跳过模式编码的失真是否大于当前宏块的相邻宏块的最大失真的二倍。
如果该处理确定(在步骤130)跳过模式方案不应当被移除,它转移至指定编码方案。在这个示例中,该处理指定跳过模式编码的结果。在步骤150后,该处理100结束。另一方面,当该处理100确定(在步骤130)跳过模式编码方案应当被移除时,它转移至步骤135。当该处理确定(在步骤125)跳过模式方案用来终止该编码不是足够好时,该处理也转移至步骤135。
在步骤135,该处理检查各种块间编码。在一些实施方式中,处理100可能研究各种宏块和子宏块编码(例如,16×16、8×16、16×8、8×8、8×4、4×8、和4×4B-模式和P-模式编码),这在下面第II部分中将进一步描述。然而,如上结合的裁减申请所述,一些实施方式通过裁减(即,放弃)一些宏块或子宏块编码模式的研究和/或分析,加快了块间编码处理。
在步骤135执行了块间编码后,该处理确定(在步骤140)宏块的块间编码是否足够好以放弃宏块的块内编码。不同的实施方式做出不同的决定。这些方法中的一些将在下面的第II部分中进一步描述。
如果该处理100确定(在步骤140)应当执行块内编码,则它转移至步骤145,在这时它执行该编码。如上所述,该处理的块内编码的若干新的特征在上面引入的块内编码申请中描述。在步骤145后,该处理转移至步骤150。当该处理确定(在步骤140)应当放弃块内编码时,该处理也转移至步骤150。
如上所述,该处理为宏块指定编码方案(在步骤150)。当该处理100在其先于步骤150的操作期间识别了多个编码方案时,该处理选择这些方案中的一个(在步骤150)。在一些实施方式中,该处理100选择具有最佳RD成本的方案。下面提供了一些RD成本的例子。在步骤150后,该处理结束。
III.块间编码A.多级运动估计如上所述,一些实施方式结合如图1中示出的处理100使用多级运动估计操作。在一些实施方式中,当宏块为块间编码时,执行多级运动估计操作。如下面将描述的,一些多级运动估计操作包括粗略的和精确的运动估计。在一些实施方式中,处理100在初始的粗略的运动估计操作后被执行。然而,一个本领域技术人员将认识到该初始的粗略的运动估计操作也可以在处理100期间被执行(例如,在步骤105和115之间,在步骤140)。
1、整体流程图2说明了执行多级运动估计操作来识别指定在一个或两个参考帧和当前帧之间的宏块的运动的运动向量的处理。为了不模糊本发明的多级运动估计操作的讨论,下面按照在单个参考帧中找到当前帧宏块的一个位置来描述处理200。然而,本领域技术人员将认识到该处理经常研究两个参考帧来确定宏块的最好的运动估计编码。
该处理的第一级为粗略的搜索(例如,粗略运动估计),其在参考帧中识别当前帧的宏块的位置的粗略的近似值,而第二级为更精确的搜索(例如,精确运动估计),其在参考帧中识别当前帧的宏块的位置的更精确的近似值。
该处理最初执行宏块的参考帧的第一搜索(在步骤210),以搜索与当前帧宏块最匹配的宏块。该第一搜索在参考帧的第一搜索窗口中执行。不同的实施方式确定不同的第一搜索窗口。例如,如图3所示,一些实施方式定位与当前帧的宏块330的位置320对应的参考帧的位置310的周围为第一搜索窗口300。
其它实施方式在参考帧中当前帧宏块的预测位置定位第一搜索窗口。图4示出了基于与当前帧宏块关联的预测运动向量识别第一搜索窗口位置的一种方法。图4示出了在当前帧400中的当前帧宏块410。该图同时示出了与当前帧宏块410关联的预测运动向量420。该预测运动向量420可以基于在当前帧中临近当前帧宏块410的宏块的运动向量被计算出来。如图4所示,该预测运动向量420指向对应于参考帧430的位置440的当前帧400中的位置点460。由此,进一步如图4所示,一些实施方式在参考帧430中关于位置点440定位第一搜索窗口450。
处理200在第一搜索窗口中执行粗略搜索(在步骤210),为了试图识别指定当前帧宏块从在参考帧中出现后运动了多少的运动向量。该处理可以通过在第一搜索窗口中搜索与当前帧宏块最接近地匹配的参考帧宏块而确定该运动向量。该处理不需要查看搜索窗口中的全部参考帧宏块,而是仅需足够确定落在某一预定的参数内的宏块。
一旦该处理识别了足够的参考帧宏块,它识别在粗略搜索期间遇到的最好的参考帧宏块(在步骤210)。然后它使用所识别的最好的参考帧宏块,来指定指示参考帧中当前帧宏块的位置的粗略近似值的运动向量(在步骤210)。
在步骤210后,该处理确定是否在第一搜索窗口执行了足够的粗略搜索的反复(在步骤220)。一些实施方式在该窗口中仅执行一次搜索。在这样的实施方式中,该处理200不需要在步骤220做出确定,而是直接从步骤210进入步骤230。可选地,其它实施方式执行开始于该窗口中的多个不同点的多个搜索。
当处理200确定应该在第一搜索窗口中执行另一个粗略搜索时(在步骤220),该处理循环回步骤210来执行另一个搜索(在该窗口中),该搜索开始于与其它在先的在步骤210执行的对宏块的粗略搜索不同的位置。
图5示出了在第一搜索窗口中多个起始点的例子。特别地,该图示出了在第一搜索窗口500中的四个起始点510-540。每个起始点510-540导致该搜索标识出不同参考帧宏块。在一些实施方式中,不同的起始点可以识别同一参考帧宏块。
一旦该处理确定已经在第一搜索窗口中执行了足够的粗略搜索的反复(在220),它识别最可能的粗略级方案(在230),其通过步骤210通过其一个或多个反复来识别。如图6所示,这个方案识别运动向量620,该运动向量标识与在参考帧中的位置630对应的当前帧中的对宏块410的位置610。
接下来,该处理为与当前帧宏块匹配的参考帧宏块执行第二精细运动估计搜索(在步骤240)。该第二搜索在参考帧的第二搜索窗口中执行。在一些实施方式中,该第二搜索窗口小于在步骤210的粗略第一级搜索期间使用的第一搜索窗口。同样,在一些实施方式中,该第二搜索窗口被定义为围绕由第一级搜索产生的运动向量(即,在步骤230中选择的运动向量)所标识的参考帧中的位置。图6示出了这种第二级搜索窗口的例子。具体地,该图示出了关于在第一搜索中指定的位置点630的第二搜索窗口640。
在一些实施方式中,在第二搜索级(在步骤240)期间使用的搜索处理比在第一搜索级期间使用的搜索处理更全面。例如,一些实施方式在第二级期间使用利用失真率优化的彻底的子宏块搜索,而在第一搜索级期间使用更简单的三步搜索。
在步骤240第二搜索级结束时,该处理200提供指定当前帧宏块自其出现在参考帧中运动了多少的运动向量。在步骤240后,该处理结束。
2.精细的运动估计图7示出了执行用来标识参考帧中与一组当前帧宏块像素的分区最匹配的一组像素的分区的精确运动估计处理700。在一些实施方式中,该处理700在处理200的第二搜索(在步骤240)期间实现。
如该图所示,处理700在搜索窗口中选择(在步骤705)位置点。在一些实施方式中,该搜索窗口最初被定义为在处理200的步骤230所标识的参考帧宏块周围。
图8在概念上示出了具有若干位置点的搜索窗口800。如该图所示,该搜索窗口800包括九个位置点805-845。在一些实施方式中,这些位置点805-845可以随机地生成。在其它实施方式中,这些位置点805-845预先地由一组标准确定。这些位置点805-845中的每一个在整数像素级对应于参考帧宏块。而且,图8示出了在非整数像素级的位置点(即,子像素级),例如在二分之一或四分之一像素级的位置点。这些子像素级位置点的使用将进一步通过参考图9描述。
接下来,对每个在当前帧宏块的像素的可能的分区,处理700检查(在步骤710)在选择的位置点的像素的特定分区与当前帧宏块的像素的分区有多精密的匹配。图10在概念上示出了一些可能的分区(即,块)尺寸。具体地,该图示出了九个可能的块尺寸,其中每个块尺寸代表像素的特定块。例如,块尺寸1代表包括16×16像素阵列的像素块。块尺寸2代表包括16×8像素阵列的像素块。尽管该图仅示出了九个块尺寸,处理700可以搜索具有其它像素配置的块尺寸。一些实施方式搜索全部这些块尺寸,而其它实施方式仅搜索这些块尺寸中的一些。
一旦检查已经被执行(在步骤710),该处理700为每个块尺寸更新(在步骤715)参考帧宏块的最好位置。处理700确定(在步骤720)是否还有另一个位置点。如果是,处理700进行至705来选择另一个位置点并执行步骤710-720的另一重复。
一旦处理700确定(在步骤720)没有更多的位置点,处理700确定(在步骤725)对特定块尺寸的搜索结果是否足够好。在一些实施方式中,如果具有更新位置的块尺寸满足一特定标准(例如,SAD低于特定阈值),则搜索结果足够好。在一些实施方式中,如果与特定块尺寸关联的成本和与具有最低成本块尺寸关联的成本之间的差异比阈值大,则搜索结果不够好。在一些实施方式中,该阈值在搜索期间动态地定义。如果处理700确定(在步骤725)对特定块尺寸的搜索结果不够好,处理700在任何随后的搜索中排除(在步骤730)这些块尺寸。
在排除(在步骤730)这些块尺寸或确定(在步骤725)所有搜索结果都足够好后,处理700执行(在步骤735)另一个搜索。在该搜索期间,对每个块尺寸,处理700搜索与当前帧宏块的分区最匹配的参考帧中的像素的分区。该搜索包括在子像素级搜索像素的分区。该子像素级搜索将在下面详细描述。在搜索后(在步骤735),处理700结束。
3.在子像素级的搜索图9在概念上示出了用于在多像素级为参考帧宏块搜索像素的分区的处理900。在一些实施方式中,处理900在处理700的搜索步骤735期间执行。如该图所示,处理900为当前帧宏块选择(在步骤905)像素的分区(即,选择块尺寸)。处理900通过步骤905重复几次。在其通过步骤905重复期间,一些实施方式中的处理顺序地基于由图10示出它们的的数字名称,重复地选择没有在步骤730丢弃的分区(即,块)。例如,在步骤730没有分区被丢弃时,处理900顺序地选择块1至9。
步骤905后,处理900定义(在步骤910)搜索的初始像素分辨率(例如,像素级)(即,定义搜索粒度)。例如,处理900可以初始地定义像素分辨率为在整数像素的每隔一个位置(即,整数像素级分辨率的一半分辨率)。接下来,处理900定义(在步骤915)搜索位置为对当前帧宏块的所选择的分区在当前标识为最好的位置。该标识的最好的位置可以在图7的处理700的像素级搜索期间标识,或如下进一步描述的,可以在图9的处理900的任意像素分辨率搜索期间标识。
对每个没有在步骤730被丢弃的特定当前帧分区,处理900(在步骤920)(1)检查围绕在所定义的像素级分辨率(即,搜索粒度)在步骤915标识的搜索位置的参考帧分区,及(2)标识与当前帧分区最匹配的特定检查的参考帧分区。
接下来,对每个没有在步骤730被丢弃的特定的当前帧分区,处理900(在步骤925)确定在步骤920为特定当前帧分区标识的特定参考帧分区是否比先前为特定当前帧分区标识的最匹配的分区更匹配。如果是,该处理定义(在步骤925)在步骤920标识的特定参考帧分区的位置为特定当前帧分区的最好位置。
接下来,处理900确定(在步骤930)是否已经为选择的分区检查过具有最大像素级分辨率的参考帧。如果没有,处理900增加(在步骤935)像素级分辨率至下一个像素级分辨率(例如,一半,四分之一)并转移回上面所述的步骤915。这样,在随后的步骤915-935的重复中,处理900检查在子像素级(例如,一半,四分之一)的当前帧宏块的分区。
当处理900确定(在步骤930)已经为选择的分区检查在最大像素级分辨率的参考帧时,处理900确定(在步骤940)是否其已经检查了所有没有在步骤730被丢弃的当前帧分区。如果没有,处理900返回至905来选择下一个当前帧分区并接下来对该分区重复910-935。一旦确定(在步骤940)已经检查了所有没有在步骤730被丢弃的像素的分区,处理900结束。
图11在概念上示出了一些对不同像素级的搜索位置。具体地,该图示出了以四个整数像素级位置825-830和840-845为边界的搜索区域860。在一些实施方式中,该限定的搜索区域860位于搜索窗口800内,如图8所示。
在限定的搜索区域860中,有五个半像素级位置。进一步地,在该限定的搜索区域860中,有十六个四分之一像素级位置。不同的实施方式可以指定不同的界定的搜索区域,其包括更多或更少的整数和非整数的位置。当处理900定义(在步骤915)搜索位置为位置850时,一些实施方式可以在步骤920的搜索期间在限定的区域860内或周围搜索。
在一些实施方式中,一些上述步骤被重复执行。如上所述,一些实施方式对每个像素级执行单独的搜索。然而,本领域技术人员将认识到一些实施方式可以对每个搜索位置同时搜索不同像素级的若干块尺寸(即,对每个位置,为所有块尺寸在整数、一半和四分之一像素级同时搜索)。尽管子像素级被描述为一半或四分之一像素级,本领域技术人员将认识到子像素级可以为任意非整数像素级。
此外,处理700描述了确定(在步骤725)对特定块尺寸的搜索结果是否足够好。在一些实施方式中,该确定725可以在处理900期间作出。进一步,本领域技术人员将认识到该确定725可以在处理700和900的不同步骤期间作出。例如,该确定处理725可以在找到每个块尺寸的最好位置后作出。
此外,一些实施方式可以在处理700期间在步骤735不执行搜索。此外,上述处理700和900描述了对参考帧宏块执行的搜索,然而,本领域技术人员将认识到处理700和900可以被用于搜索其它类型的像素阵列(例如,16×8子宏块)。
B.缓存插值图12在概念地上示出了参考帧中的若干像素和子像素位置。这些子像素位置包括一半和四分之一像素位置。进一步如该图所示,当前帧宏块1200与四分之一子像素位置1205对准(即,当前帧宏块的像素位置与参考帧的四分之一子像素位置排成行列)。
如上所述,在一些实施方式的运动估计操作期间,编码器检查与参考帧中的子像素位置对准的(即,不与像素位置对准的)宏块或宏块分区。从参考帧,一些实施方式的解码器在一些情况下可能也必须在与子像素位置对准的(即,不与像素位置对准的)宏块或宏块分区中检索。
与子像素位置对准的宏块或宏块分区的检查和检索要求编码器或解码器为在子像素位置的参考帧生成图像值(例如,亮度值),其中该子像素位置对应于在解码操作期间在当前帧中的像素位置,并需要与在编码操作期间当前帧中的像素位置比较。
在一些实施方式中,生成对应于子像素位置的图像值需要对图像值内插来自临近像素位置的图像值(即,从像素位置的图像值派生的子像素位置的图像值)。在许多示例中,为子像素位置内插图像值是困难的操作(例如,在计算上花费的操作),这需要超出两个最近的像素位置的图像值的简单平均。由此,一些实施方式将子像素位置的内插图像值存储在高速缓存中,当另一当前帧分区的随后搜索试图为该子像素位置检查上述内插的图像值时可以被容易地检索。一些实施方式将所有的内插值存储在高速缓存内,而其它实施方式仅将一些内插值存储在高速缓存内。
在编码和/或解码操作期间,一组当前帧宏块的许多运动向量将指向同一参考帧。例如,如图13所示,帧1310具有通过参考帧1305和1325定义的运动向量。进一步,帧1315和1320具有通过参考帧1305定义的运动向量。由此,在一些示例中,参考帧可以被用来编码或解码不止一个其它帧。由此,为参考帧缓存所有或一些内插的子像素值是有利的,因为它们可以被用于其它帧的编码。
C.高速缓存拼接片图14在概念上示出了在高速缓存中存储参考帧的方法。在一些实施方式中,该方法与上述内插操作结合实现。如该图所示,参考帧1305被分割成一些拼接片1430。在一些实施方式中,帧1305被以这种方式分割来包括两列或多列拼接片和两行或多行拼接片。
图14进一步示出了像素块1450,该像素块可以与或可以不与参考帧的像素位置对准。该像素块1450代表在编码操作期间(即,在运动估计期间)被检查的或在解码操作期间将被检索的参考帧的一部分。
如图14所示,拼接片1430a-1430d的部分需要检查或检索像素块1450。由此,为了便于在编码或解码操作期间像素块(例如,像素块1450)的检查,一些实施方式根据它的拼接片高速缓存参考帧1305。换句话说,代替高速缓存跨越参考帧1305的像素的行(例如,包括像素块1450的像素行1401-1425),一些实施方式仅高速缓存参考帧中的拼接片。
当特定像素块的分析需要一组拼接片时,这些实施方式的编码器或解码器确定是否所有的特定像素块重叠的拼接片都在高速缓存中。如果是,则编码器或解码器使用高速缓存的拼接片来处理特定的像素块。如果不是,则编码器或解码器(1)从非高速缓冲存储器中检索期望的拼接片(即,与特定像素块重叠但当前不在高速缓存中的拼接片),(2)将这些拼接片存储在高速缓存中,并且然后(3)使用这些拼接片来处理特定的像素块。例如,当试图处理像素块1450时,编码器或解码器确定该块重叠拼接片1430a-1430d。由此,编码器或解码器将这些拼接片1430a-1430d存入高速缓存中(如果它们还没有存在那里),然后使用这些拼接片处理块1450。
在一些实施方式中,高速缓冲存储器为用于执行编码或解码操作的计算机系统的处理器的高速缓存。在其它实施方式中,高速缓冲存储器为用于执行编码或解码操作的计算机系统的非易失性存储器(例如,随机存取存储器)的专用部分。同样,尽管通过图14示出了用于高速缓存的方形的拼接片,但一些实施方式中可以为其拼接片使用其它形状,例如矩形。
D.用于运动估计的自适应搜索方式一些实施方式使用不同的搜索标准来在上述多级运动估计操作期间执行搜索。一些实施方式在执行搜索时使用固定的搜索方式。其它实施方式可以使用不同的搜索方式。例如,一些实施方式基于特定标准自适应地选择搜索方式。
一个例子是在低密度和高密度搜索方式间选择。图15示出了在搜索窗口1500中的低密度搜索方式。该图示出了按照黑圆圈的搜索方式,黑圆圈表示该方式为搜索指定的位置。如图15所示,该搜索方式在四十九个可以被检查的潜在的宏块位置(由黑的和白的圆圈标识)中仅指定十六个位置用于搜索。图16示出了在搜索窗口1500中更高密度的搜索方式。在该图中的搜索方式在四十九个可以被检查的潜在的宏块位置(由黑的和白的圆圈标识)中指定二十五个位置用于搜索。
一些实施方式可以基于期望的编码结果在图15和16中示出的搜索方式间自适应地选择。例如,一些实施方式可以使用图16中示出的更高密度方式进行更高分辨率编码(例如,HD电视编码),而其它实施方式可以使用图15示出的更低密度方式用于通过网络传送流数据,实时视频。
可选地,一些实施方式使用强调垂直搜索运动的搜索方式,而另一些实施方式使用强调水平搜索运动的搜索方式。图17示出了在以预测宏块位置为中心的搜索窗口中的搜索方式的例子。该搜索方式偏向垂直方向。假定可以研究有限数量的位置,图17中示出的方式消耗了编码器的有限搜索预算,来检查关于在搜索窗口1500中心的预测宏块位置的垂直列中的位置。
图18示出了在以预测宏块位置为中心的搜索窗口中的搜索方式的例子。该搜索方式偏向水平方向。假定可以研究有限数量的位置,图18中示出的方式消耗编码器的有限搜索预算,来检查关于在搜索窗口1500中心的预测宏块位置的水平行中的位置。
一些实施方式基于相邻宏块的向量在图17和18中示出的两种搜索方式间自适应地选择。如果大部分或全部向量指向特定的方向(例如,垂直或水平方向),那么这些实施方式选择图17或18中示出的方式。一些实施方式通过确定沿一个方向(例如,y轴)的运动向量的绝对值是否比沿其它方向(例如,x轴)的运动向量的绝对值大,来确定相邻宏块的运动向量是否指向特定方向。一些实施方式不仅考虑相邻宏块的运动向量的方向,还考虑这些向量的大小。一些实施方式还考虑在自适应地选择搜索方式中的一组图像的运动域(motion field)(例如,这组图像是否示出了在特定方向中的运动)。
E.RD成本计算如上所述,本发明的一些实施方式在运动估计操作期间为特定宏块计算成本,例如失真率(“RD”)成本。在运动估计期间为所有可能的模式生成失真率成本在计算上是集中的。尤其是假定该成本经常需要测量失真和计算将被生成的实际位。因此,一些实施方式不为所有可能的模式计算RD成本。作为代替,这些实施方式通过对运动估计方案排序并选择前N个运动估计方案,然后为这些选择的方案计算RD成本来削减可能模式的数量。
图19示出了本发明一些实施方式的处理1900。该处理选择性地检查运动估计方案的子组以便标识计算RD成本需要的方法。在一些实施方式中,在该处理开始前,若干编码方案已经被计算。其它实施方式与编码方案结合执行该处理。
处理1900最初基于从最低至最高估计的误差来排列(在步骤1910)编码方案。在一些实施方式中,每个编码方案不仅生成运动向量而且生成估计错误。不同的实施方式使用不同量度的计算来量化该错误。例如,一些实施方式使用平均绝对差(“MAD”)的量度计分,而其它的实施方式使用绝对差值和(“SAD”)的量度计分,这些都在上面结合的精简申请中描述。然而其它实施方式使用两种或更多的量度计分的组合。
接下来,该处理在排序表中选择(在步骤1920)前N个编码方案。在一些实施方式中,N的值为预定数字,而在其它实施方式中为动态生成的数字。接下来,该处理为选择的前N个结果计算(在步骤1930)RD成本,选择(在步骤1940)具有最低RD成本的编码方案,并随后终止。
一些实施方式将编码方案的RD成本表示为RdCost=失真成本+(λ×NB),其中λ为权重因子,而NB为由于编码生成的位数。该RdCost量化已经被传送的数据的数量和与该数据关联的失真的量值。
代替计算简单的RD成本,一些实施方式计算(在步骤2330)不仅将RD成本作为因子而且将生成编码方案的给定模式的解码复杂度作为因子的成本。该成本可以被表示为复杂RD=RdCost+α(cf),其中RdCost如上述指定等式计算,α为与解码复杂度关联的重要因子,并且cf为量化在数据上被执行的解码的数量的复杂度因子。
在步骤1930后,该处理选择(在步骤1940)在步骤1930中计算出来的得到最低成本的运动估计方案,并且随后结束。通过最初通过初始量度计分排序运动估计操作和仅对那些具有最低初始量度计分的编码方案量化成本量度,处理1900保证以最快的可能方法找到可接受的结果。
IV.计算机系统图20在概念上示出了本发明的一些实施方式被实现的计算机系统。计算机系统2000包括总线2005、处理器2010、系统存储器2015、只读存储器2020、永久存储设备2025、输入设备2030和输出设备2035。
总线2005总体地代表全部系统、外围设备及提供计算机系统2000的内部设备间通信的芯片组总线。例如,总线2005通信地将处理器2010和只读存储器2020、系统存储器2015及永久存储设备2025连接。
处理器2010为了执行本发明的处理在这些多种存储单元中检索执行的指令和处理的数据。只读存储器(ROM)2020存储处理器2020和其它计算机系统模块需要的静态数据和指令。另一方面,永久存储设备2025为读写存储器设备。该设备为即使在计算机系统2000关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施方式使用海量存储设备(例如,磁或光盘和其相应的磁盘驱动器)作为永久存储设备2025。其它实施方式使用可移除存储设备(例如软盘或zip盘及其相应的磁盘驱动器)作为永久存储设备。
类似永久存储设备2025,系统存储器2015为读写存储器设备。然而,与存储设备2025不同,该系统存储器为易失性的读写存储器,例如随机存取存储器。该系统存储器存储处理器在运行时需要的指令和数据。在一些实施方式中,本发明的处理被存储在系统存储器2015、永久存储设备2025和/或只读存储器2020中。
总线2005也连接至输入和输出设备2030和2035。该输入设备允许用户传递信息和选择命令至计算机系统。该输入设备2030包括字母数字键盘和光标控制器。该输出设备2035显示由计算机系统生成的图像。输出设备包括打印机和显示设备,例如阴极射线管(CRT)或液晶显示器(LCD)。
最后,如图20所示,总线2005也通过网络适配器(未示出)将计算机2000连接至网络2065。通过这种方式,计算机可以成为计算机网络(例如局域网(“LAN”),广域网(“WAN”),或企业内部互联网)的一部分或多个网络中的一个网络(例如,因特网)。计算机系统2000的任何或所有部分都可以结合本发明使用。然而,本领域技术人员可以认识到任何其它的系统配置也可以与本发明结合使用。
尽管已经参照不同的特定细节描述了本发明,本领域技术人员可以认识到本发明可以不脱离本发明的精神而以其它特定方式实施。例如,本发明的许多实施方式通过参考宏块描述。本领域技术人员可以认识到这些实施方式可以与其它任何像素值阵列结合使用。
权利要求
1.一种用于通过参考视频序列中的第二图像编码第一图像中的第一组像素的方法,该方法包括a)在第二图像内的第一搜索窗口中,搜索以识别与所述第一图像中的所述第一组像素最匹配的所述第二图像中的第一特定部分;并在所述第二图像内的所述第一搜索窗口中,识别对应于所述第一特定部分的第一位置;以及b)在所述第二图像内的第二搜索窗口中,搜索以识别与在所述第一图像中的所述第一组像素最匹配的所述第二图像中的第二特定部分,其中所述第二搜索窗口关于所述第一位置定义。
2.如权利要求1所述的方法,其中,所述第二图像中的所述第二搜索窗口比所述第二图像中的第一搜索窗口小。
3.如权利要求1所述的方法,其中,搜索以识别所述第一特定部分包括从一个以上开始位置进行搜索。
4.如权利要求1所述的方法,其中在所述第一搜索窗口中搜索包括粗略搜索,其中在所述第二搜索窗口中搜索包括精细搜索。
5.如权利要求1所述的方法,其中在所述第二搜索窗口中搜索进一步包括a)在所述第二搜索窗口中识别多个搜索点;b)对每个特定搜索点,重复地;i.识别多个第二分组像素ii.为每个识别的第二分组像素计算运动向量量度;iii.为每个第一分组像素指定最佳的第二分组像素;iv.如果标准被满足则放弃剩余搜索点。
6.如权利要求5所述的方法进一步包括a)确定与特定分组像素关联的指定的第二分组像素是否具有大于阈值的所计算的运动向量量度;并且b)在确定与所述特定的第一分组像素关联的所述指定的第二分组像素大于所述阈值后,从随后的搜索中排除所述特定的第一分组像素。
7.如权利要求6所述的方法,其中所述阈值是在所述第二搜索窗口内搜索期间动态定义的。
8.如权利要求5所述的方法,其中在所述第二搜索窗口中搜索包括在第一像素级搜索。
9.如权利要求8所述的方法,其中在所述第二搜索窗口中搜索进一步包括在第二像素级搜索,其中所述第一像素级为整数像素级,其中所述第二像素级为二分之一像素级。
10.一种用于在视频序列中块间编码图像的方法,其中所述视频序列中的每个图像具有多个整数像素位置,每个整数像素位置具有至少一个图像值,该方法包括a)通过参考第二图像选择用于编码的第一图像;b)识别与所述第一图像中的一组像素匹配的所述第二图像中的第一组非整数像素位置,其中该识别包括从所述第二图像中的所述多个整数像素位置的图像值内插与所述第二图像中的所述非整数像素位置相关的图像值;c)存储所述非整数像素位置所内插的图像值,用于在此后的通过参考所述第二图像的第三图像的编码期间使用。
11.如权利要求10所述的方法,进一步包括在识别所述第二图像中该组非整数像素位置后,在所述第二图像中内插一组其它非整数像素位置的图像值。
12.如权利要求11所述的方法,其中该组非整数像素位置关于所述第一组非整数像素位置定位。
13.一种用于在视频序列中块间解码图像的方法,其中所述视频序列中的每个图像具有多个整数像素位置,每个整数像素位置具有至少一个图像值,该方法包括a)通过参考第二图像选择用于解码的第一图像;b)在所述第二图像中识别与所述第一图像中的一组像素对应的一组非整数像素位置。c)从所述第二图像中的多个整数像素位置的图像值内插与所述第二图像中的非整数像素位置关联的图像值;并且d)存储所述非整数像素位置的所内插的图像值,用于在此后的通过参考所述第二图像的第三图像的解码期间使用。
14.如权利要求13所述的方法,进一步包括在内插与所述非整数像素位置关联的图像值后,在所述第二图像中内插一组其它非整数像素位置的图像值。
15.如权利要求14所述的方法,其中该组非整数像素位置关于所述第一组非整数像素位置定位。
16.一种用于通过参考在一列视频图像中的第二图像来块间处理第一图像中的第一部分的方法,该方法包括a)将所述第二图像分割成一组拼接片;b)将所述拼接片存储在第一非高速缓冲存储器中;c)无论何时需要子组拼接片,都从所述第一非高速缓冲存储器中检索所述子组拼接片;并且d)在所述第一部分和作为检索到的子组拼接片的部分的所述第二图像的部分之间,将检索到的子组拼接片存储到第二高速缓冲存储器中,其中所述检索到的子组拼接片比所述整组拼接片小。
17.如权利要求16所述的方法,其中当所述方法识别所述第二图像中的位置来搜索以识别与所述第一部分匹配的第二图像中的一部分时,所述方法确定其需要一子组拼接片,该子组拼接片被检索并存储在所述第二高速缓冲存储器中,其中,所述识别的位置对应于所述子组拼接片。
18.如权利要求16所述的方法,其中所述高速缓冲存储器为计算机的随机存取存储器。
19.如权利要求16所述的方法,其中所述高速缓冲存储器为计算机的非易失性存储设备。
20.如权利要求16所述的方法,其中该块间处理方法为块间编码方法。
21.如权利要求16所述的方法,其中该块间处理方法为块间解码方法。
22.如权利要求16所述的方法,其中所述一组拼接片包括至少两个水平相邻的拼接片和至少两个垂直相邻的拼接片。
23.如权利要求16所述的方法,其中所述拼接片被顺序地存储在所述高速缓冲存储器中。
24.一种在第一视频图像中编码第一组像素的块间编码方法,该方法包括a)从一组搜索方式中选择第一搜索方式,每种搜索方式定义用于检查可能与所述第一组像素匹配的第二图像的部分的方式;并且b)基于一组标准,在该组搜索方式中自适应地选择所述第一搜索方式。
25.如权利要求24所述的方法,其中所述一组标准包括在媒体中编码图像序列的分辨率。
26.如权利要求24所述的方法,其中该组标准包括相邻运动向量的运动向量。
27.如权利要求24所述的方法,其中该组标准包括一组视频图像的运动域。
28.一种用于通过参考图像序列中的第二图像编码第一图像中的第一组像素的方法,该方法包括a)在第二图像中识别多个第二组像素;b)为每个所述第二组像素计算第一量度计分;c)基于所述第一量度计分识别第二组像素的子组;d)从识别的第二组像素的子组中;i.为每个识别的第二组像素计算第二量度计分;以及ii.选择具有最好的第二量度计分的所述识别的第二组像素,其中所述选择的识别的第二组像素与所述第一组像素最匹配。
29.如权利要求28所述的方法,其中每个第二组像素包括多个第二编组像素,其中每个第二编组像素包括多个第二分组像素。
30.如权利要求29所述的方法,其中计算所述第一量度计分包括a)为每个第二编组像素计算第一量度计分;并且b)为每个第二分组像素计算第一量度计分。
31.如权利要求30所述的方法,其中识别第二组像素的子组包括识别第二编组像素的子组和第二分组像素的子组。
32.如权利要求31所述的方法,其中计算所述第二量度计分包括为每个第二编组像素和每个第二分组像素计算第二量度计分。
33.如权利要求32所述的方法,其中所述第一量度计分为绝对差值和(“SAD”)的量度计分。
34.如权利要求28所述的方法,其中识别第二组像素的子组包括选择具有最低第一量度计分的前N个第二组像素。
35.如权利要求34所述的方法,其中所述第二比率量度计分为量化必须被传送的数据量和与传送的数据关联的失真量的失真率成本。
36.如权利要求28所述的方法进一步包括a)为具有最低第二量度计分的前N个第二组像素计算第三量度计分;并且b)选择具有最好的第三计分的所识别的第二组像素,其中该选择的所识别的第二组像素与所述第一组像素最匹配。
全文摘要
本发明公开了用于在第一图像中通过参考视频序列中的第二图像编码第一组像素的方法。在第二图像内的第一搜索窗口中,该方法搜索以识别与第一图像中的第一组像素最匹配的第二图像中的第一特定部分。在第二图像中的第一搜索窗口中,该方法识别对应于第一特定部分的第一位置。在第二图像中的第二搜索窗口中,该方法接下来搜索以识别与在第一图像中的第一组像素最匹配的第二图像中的第二特定部分,其中第二搜索窗口关于第一位置定义。
文档编号H04N7/26GK1750656SQ20051009222
公开日2006年3月22日 申请日期2005年6月27日 优先权日2004年6月27日
发明者R·库马尔, T·本, H-J·吴, C·迪维维耶 申请人:苹果电脑有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1