编码模式选择的方法和装置 相关申请
本发明没有相关的申请。
【技术领域】
本发明通常涉及图像/视频信号处理,特别涉及视频编码特别是视频压缩的方法和装置。
【发明背景】
在视频编码期间,使用视频压缩作为一个例子,视频编码器将原始视频数据转换成一个压缩比特流。压缩比特流要么被存储在一个存储媒介内,要么通过一个信道被发送到一个视频解码器。视频解码器由该压缩比特流重建视频数据。由于在转换过程期间的数据损失,重建视频数据的质量通常比原始视频数据差。
原始视频数据是一个视频里的视频帧,并且视频帧可以被分类成帧间编码帧和帧内编码帧。每个视频帧被分割成非重叠宏块,其是视频编码的基本的视频帧单元。
现有各种编码方法,如帧内预测和帧间预测。帧间预测是指那些利用视频帧之间时间冗余的编码方法,而帧内预测是指那些利用每个视频帧内空间冗余的编码方法。对每个编码方法,无论是帧内预测还是帧间预测,可以选择不同的编码模式,在不同的编码模式里,每个宏块可以被划分成不同尺寸的小区块。关于帧间预测的那些编码模式也可以被看作帧间模式。关于帧内预测的那些编码模式也可以被看作帧内模式。
由于有许多可选择的编码模式用于对一个宏模块进行编码,因此期望获得最好的编码模式。这个过程被看作是模式选择。在本发明之前,经常使用一个穷尽式方法来进行模式选择。穷尽式方法是对每个候选编码模式采用一个相应的运动搜索或帧内预测,计算每个候选模式的成本,然后选择最低成本的编码模式。在穷尽式方法里,通常首先对帧间模式进行帧间预测,然后对帧内模式进行帧内预测。
在一些情况下,在完成对帧间模式的计算之后,发现最好的帧间模式的成本很低,并且低到不太可能有一个帧内模式能够与之匹配。在美国专利公开如2008/0112481,2008/0002770和2007/0086523里的一些快速方法被推荐用来加快模式选择,其在完成帧间预测之后引入一个条件检查以检查是否应该进行帧内预测。该条件检查可以通过比较最佳帧间模式的成本与一个阈值来完成。如果最佳帧间模式的成本比阈值小,则跳过帧内预测。尽管提议的方法能够提高编码速度到某个程度,但这些方法仅考虑到不值得进行的帧内预测,而这些方法忽略了不值得进行的帧间预测。假如帧内预测是在帧间预测之前进行,可以通过测定是否值得进行帧间预测确定是否需要进行帧间预测,但是,忽略是否值得进行帧内预测的同样问题仍然存在。
本发明的目的是检查编码信息,如正在处理中的当前宏块的某些被编码的相邻宏块的编码模式类型,以确定对一个视频帧的当前宏块进行帧间预测和帧内预测的次序。
如果大多数的被编码的相邻宏块已经采用了一个特定模式,当前宏块将采用同一模式。因此,进行帧间预测和帧内预测的次序是自适应的和可改变的以适合不同的宏块,而不是一个固定安排。如果首先进行帧间预测,剩余部分是进行帧内预测。如果首先进行帧内预测,剩余部分是进行帧间预测。
此外,根据确定的次序,首先进行帧间预测还是进行帧内预测,然后,只要最佳帧间/帧内模式的成本比阈值小,剩余部分就可以跳过。通过跳过整个过程,可以节省许多无效计算。这样可以节省大量处理时间,需要的计算越少,能耗将会越少。
本发明的其它方面将在以下进行披露。
【附图说明】
随后将参照以下附图,详细描述本发明的其它目的、方面和实施例,其中:
图1显示一个优选实施例如何进行模式选择的流程图;
图2A显示一个宏块的指定的被编码的相邻宏块;
图2B显示一个视频帧内的一个宏块和一个基准视频帧内的对应宏块;
图3显示一个进行模式选择的装置方块图;
图4显示一个进行模式选择的装置的另一个实施例。
发明详述
图1显示一个优选实施例里如何进行模式选择的流程图。一个视频是由一系列的视频帧构成。每个视频帧被分割成多个非重叠的宏块(MB)。每个宏块(MB)将被处理,一个可能的处理次序是光栅扫描(rasterscan)。光栅扫描允许沿着同一行的宏块从左至右进行处理,然后沿着当前宏块之下的下一行的宏块进行处理。
当一个宏块被处理时,例如被编码,执行模式选择过程以确定帧间模式还是帧内模式适合当前宏块。在另一个实施例里,其可能是一个子宏块或一个区块的一个或多个像素被处理,正在处理的像素整体上被看作是当前编码视频帧单元。过程在检查步骤110开始,检查当前宏块的一个或多个指定的编码的相邻宏块的编码历史。一个宏块的编码历史包括许多类型的数据,包括编码模式、运动矢量、成本数值、绝对差值和(SAD)、平方差值和(SSD)、绝对差平均值(MAD)、平方差平均值(MSD)、和绝对变换差值和(SATD)。在检查步骤110,检查编码模式以确定该宏块是帧内编码还是帧间编码。
如果超过一半的可用指定的编码的相邻宏块是帧内编码,那么当前宏块的最佳编码模式很可能也是帧内模式。在此情况下,在进行帧间预测之前进行帧内预测。在第一帧内预测步骤121上完成帧内预测之后,在帧内模式确定步骤131上确定最佳帧内模式。完全搜索是确定最佳帧内模式的一个典型方法,并且最佳帧内模式是最低成本的。
为了确定是否应该跳过帧间预测,在第一比较步骤141,在第一帧内预测步骤121上确定的最佳帧内模式的成本值(intra_cost)与第一阈值(max_neighbor_intra_cost)进行比较。如果最佳帧内模式的成本值小于第一阈值,跳过帧间预测,并在选择步骤160上,选择最佳帧内模式作为当前宏块的实际编码模式。通过跳过帧间预测,可以节省许多无效的运算。如果最佳帧内模式的成本值大于或等于第一阈值,不会跳过帧间预测,并在第二帧间预测步骤151上进行帧间预测。随后,最佳帧内模式的成本值与最佳帧间模式的成本值进行比较以在选择步骤160上选择成本更低的那个作为当前宏块的实际编码模式。在此实施例里涉及的第一阈值是帧内编码的可用指定的被编码的相邻宏块的成本值中间的最大值。
在其它实施例里,也可能将第一阈值定义为帧内编码的可用的指定的被编码的相邻宏块或所有可用的指定的被编码的相邻宏块的成本值中间的一个固定值、或最小值、平均值、加权平均值、中位值或加权中位值。
如果在检查步骤110发现有一半或更多可用的指定的宏块不是帧内编码,那么当前宏块的最佳编码模式很有可能是帧间模式。在此情况下,在进行帧内预测之前进行帧间预测。在第一帧间预测步骤122上完成帧间预测之后,在帧间模式确定步骤132上确定最佳帧间模式。完全搜索是确定最佳帧间模式的一个典型方法,并且最佳帧间模式具有最低成本。
为了确定是否应该跳过帧内预测,在第二比较步骤142,在第一帧间预测步骤122上确定的最佳帧间模式的成本值(inter_cost)与第二阈值(max_neighbor_inter_cost)进行比较。如果最佳帧间模式的成本值小于第二阈值,则跳过帧内预测,并在选择步骤160上选择最佳帧间模式作为当前宏块的实际编码模式。通过跳过帧内预测,可以节省许多无效运算。如果最佳帧间模式的成本值大于或等于第二阈值,则不会跳过帧内预测,并在第二帧内预测步骤152上进行帧内预测。随后,最佳帧间模式的成本值与最佳帧内模式的成本值进行比较以在选择步骤160上选择成本更低的那个作为当前宏块的实际编码模式。在此实施例里使用的第二阈值是帧间编码的可用的指定的被编码的相邻宏块的成本值中间的最大值。
在另一个实施例里,第一运动预测步骤(步骤2125)可以包括第一帧内预测步骤121和第一帧间预测步骤122,从而在检查步骤110(步骤1115)之后,在第一运动预测步骤上进行第一帧内预测步骤121或进行第一帧间预测步骤122。在最佳运动预测模式确定步骤(步骤3135),如果第一运动预测步骤是第一帧内预测步骤121,则进行帧内模式确定步骤131;或者如果第一运动预测步骤是第一帧间预测步骤122,则进行帧间模式确定步骤132。在比较步骤(步骤4145),从最佳运动预测模式确定步骤获得的最佳运动预测模式的性能与一个阈值进行比较,以确定第二运动预测步骤(步骤5155)。如果来自最佳运动预测模式确定步骤的最佳运动预测模式的性能比邻近被编码的宏块的性能好,该比较步骤就确定省略第二运动预测步骤,并在选择步骤160(步骤6165),选择最佳运动预测模式作为当前宏块的编码模式。如果最佳运动预测模式的性能没有邻近被编码的宏块的性能好,则进行第二运动预测步骤。第二运动预测步骤可以包括第二帧间预测步骤151和第二帧内预测步骤152。如果第一运动预测步骤是第一帧内预测步骤121,则第二运动预测步骤是第二帧间预测步骤151。如果第一运动预测步骤是第一帧间预测步骤122,则第二运动预测步骤是第二帧内预测步骤152。在进行第二运动预测步骤之后,比较第一运动预测步骤的结果和第二运动预测步骤的结果,看看哪一个更具成本效率,然后也在选择步骤160确定当前宏块的编码模式。
在其它实施例里,也可能将第二阈值定义为帧内编码的可用的指定的被编码的相邻宏块或所有可用指定的被编码的相邻宏块的成本值中间的一个固定值、或最小值、平均值、加权平均值、中位值或加权中位值。
图2A显示一个宏块的一个或多个指定的被编码的相邻宏块。当前宏块210是正在处理的宏块。考虑周围宏块的编码历史,而它们即被看作指定的被编码的相邻宏块。指定的被编码的相邻宏块包括在当前宏块的上部宏块203(在与宏块210相同的列上,并在当前宏块210的前一行上)、右上宏块205(在当前宏块210的后一列上,并在当前宏块210的前一行上)、和左侧宏块207(在当前宏块210的前一列上,并在当前宏块210相同的行上)。
在一个实施例里,当前宏块位于一个视频帧的右边缘,右上宏块205是没有的。那么,就使用左上宏块201。
图2B显示一个视频帧内的一个宏块和基准视频帧220内的相应宏块。其它实施例也可以使用其它帧的宏块,如基准帧220的同一位置宏块229,其与当前宏块239相对视频帧的位置相同。或者,也可以使用围住同一位置宏块229的8个宏块221,222,223,224,225,226,227和228。
图3显示一个进行模式选择的装置的方块图。在一个实施例里,该装置是一个处理器或处理器里的一个模块,每个方块表示一个独立单元,或所有方块都被集成到一个模块内。检测器300检查正在处理的当前宏块的一个指定的被编码的相邻宏块的编码历史。一个宏块的编码历史包括许多类型的数据,包括编码模式、运动矢量、成本数值、绝对差值和(SAD)、平方差值和(SSD)、绝对差平均值(MAD)、平方差平均值(MSD)和绝对变换差值和(SATD)。检测器300检查编码历史里的编码模式以确定该宏块是帧内编码还是帧间编码。
如果超过一半的可用的指定的被编码的相邻宏块是帧内编码,则当前宏块(图中未显示)的最佳编码模式很可能也是帧内模式。在此情况下,在进行帧间预测之前进行帧内预测。第一帧内预测器310对当前宏块进行帧内预测。其结果被提供到最佳帧内模式确定器320以确定最佳帧内模式。最佳帧内模式确定器320比较该结果以确定哪一个帧内模式具有最低成本。具有最低成本的帧内模式被确定为最佳帧内模式。
为了确定是否应该跳过帧间预测,第一比较器330比较由第一帧内预测器310确定的最佳帧内模式的成本值(intra cost)和第一阈值(max_neighbor_intra_cost)。如果最佳帧内模式的成本值小于第一阈值,则跳过帧间预测,选择器350选择最佳帧内模式作为当前宏块(图中未显示)的实际编码模式。通过跳过帧间预测,可以省去有关帧间预测的无效运算。如果最佳帧内模式的成本值大于或等于第一阈值,则不会跳过帧间预测,第二帧间预测器340进行帧间预测。随后,选择器350比较最佳帧内模式的成本值和最佳帧间模式的成本值以选择最低成本的那个作为当前宏块的实际编码模式。在此实施例里涉及的第一阈值是帧内编码的可用的指定的被编码的相邻宏块的成本值中的最大值。
在其它实施例里,也可能将第一阈值定义为帧内编码的可用的指定的被编码的相邻宏块或所有可用的指定的被编码的相邻宏块的成本值中的一个固定值、或最小值、平均值、加权平均值、中位值或加权中位值。
如果一半或更多可用的指定的被编码的相邻宏块是帧间编码,则当前宏块的最佳编码模式很可能也是帧间模式。在此情况下,在进行帧内预测之前进行帧间预测。第一帧间预测器315对当前宏块进行帧间预测。其结果被提供到最佳帧间模式确定器325以确定最佳帧间模式。最佳帧间模式确定器325比较该结果以确定哪一个帧间模式具有最低成本。具有最低成本的帧间模式被确定为最佳帧间模式。
为了确定是否应该跳过帧内预测,第二比较器335比较由第一帧间预测器315确定的最佳帧间模式的成本值(inter_cost)和第二阈值(max_neighbor_inter_cost)。如果最佳帧间模式的成本值小于第二阈值,则跳过帧内预测,选择器350选择最佳帧间模式作为当前宏块的实际编码模式。通过跳过帧内预测,可以省去许多无效运算。如果最佳帧间模式的成本值大于或等于第二阈值,则不会跳过帧内预测,第二帧内预测器345进行帧内预测。随后,选择器350比较最佳帧间模式的成本值和最佳帧内模式的成本值以选择最低成本的那个作为当前宏块的实际编码模式。在此实施例里涉及的第二阈值是帧间编码的可用的指定的被编码的相邻宏块的成本值中的最大值。接着,选择器350输出所选择的编码模式到一个编码器(图中未显示)以处理当前宏块。
在其他实施例里,也可能将第二阈值定义为帧间编码的可用的指定的被编码的相邻宏块或所有可用的指定的被编码的相邻宏块的成本值中的一个固定值、或最小值、平均值、加权平均值、中位值或加权中位值。
指定的被编码的相邻宏块是依照有关图2A和2B的描述的当前宏块的相邻宏块。
图4显示进行模式选择的装置的另一个实施例。在另一个实施例里,第一帧内预测器和第一帧间预测器被集成到第一运动预测器410内,其根据检测器400的输出进行帧内预测或帧间预测。最佳帧间模式确定器和最佳帧内模式确定器也被集成到一个最佳模式确定器420里,当来自第一运动预测器410的输入是帧间模式结果时,确定最佳帧间模式,当来自第一运动预测器410的输入是帧内模式结果时,确定最佳帧内模式。第一比较器与第二比较器一起被集成到一个比较器430内,其比较最佳模式确定器420的输出和一个阈值。此外,第二帧间预测器和第二帧内预测器被集成到第二预测器440内,根据来自比较器430的结果其可以被跳过。选择器450根据比较器430的输出或第二预测器440的输出选择当前编码视频帧单元的模式。选择器450执行如图3内选择器执行的相同功能。
对本发明优选实施例的描述不是穷尽性的,对本领域技术人员而言,可以对其作出任何更新或修改,所以可以参照所附的权利要求以确定本发明的范围。
工业应用
本发明可以用于消费电子领域,特别是视频应用。本发明能够用于视频编码器、特别是多标准的视频编码器。多标准的视频编码器采用各种标准,诸如H.263,H.263+,H.263++,H264,MPEG‑1,MPEG‑2,MPEG‑4,AVS(音频视频标准)等。更特别地,本发明可以实施在一个DSP(数字信号处理)视频编码器里。本发明不仅可以以软件实施,而且可以以硬件实施。例如,本发明被实施在一个诸如Xilinx FPGA芯片或SoC ASIC芯片的芯片内。