具体实施例
下文进一步具体描述的用于提供提供提升预测准确性、因此可能减少将在视频编码系统中传输的信息的适当装置和可能机制。就这一点而言,首先参照图1,该图示出示例装置或者电子设备50的示意框图,该装置或者电子设备可以并入根据本发明的一个实施例的编码解码器。
电子设备50可以例如是无线通信系统的移动终端或者用户设备。然而将理解可以在可能需要对视频图像进行编码和解码或者编码或者解码的任何电子设备或者装置内实施本发明的实施例。
装置50可以包括用于并入和保护设备的壳30。装置50还可以包括形式为液晶显示器的显示器32。在本发明的其它实施例中,显示器可以是适合于显示图像或者视频的任何适当显示器技术。装置50还可以包括小键盘34。在本发明的其它实施例中,可以运用任何适当数据或者用户接口机制。例如可以实施用户接口为虚拟键盘或者数据录入系统作为触敏显示器的部分。装置可以包括麦克风36或者任何适当音频输入,该音频输入可以是数字或者模拟信号输入。装置50还可以包括如下音频输出设备,该音频输出设备在本发明的实施例中可以是以下各项中的任何一项:耳机38、扬声器或者模拟音频或者数字音频输出连接。装置50也可以包括电池40(或者在本发明的其它实施例中,设备可以由任何适当移动能量设备、比如太阳能电池、燃料电池或者时钟机构生成器供电)。装置还可以包括用于与其它设备的近程视线通信的红外线端口42。在其它实施例中,装置50还可以包括任何适当近程通信解决方案、如比如蓝牙无线连接或者USB/火线有线连接。
装置50可以包括用于控制装置50的控制器56或者处理器。控制器56可以连接到存储器58,该存储器在本发明的实施例中可以存储形式为图像的数据和音频数据二者和/或也可以存储用于在控制器56上实施的指令。控制器56还可以连接到适合于实现音频和/或视频数据的编码和解码或者辅助由控制器56实现的编码和解码的编码解码器电路装置54。
装置50还可以包括用于提供用户信息并且适合于提供用于在网络认证和授权用户的认证信息的读卡器48和智能卡46、例如UICC和UICC读取器。
装置50可以包括无线电接口电路装置52,该无线电接口电路装置连接到控制器并且适合于生成例如用于与蜂窝通信网络、无线通信系统或者无线局域网通信的无线通信信号。装置50还可以包括天线44,该天线连接到无线电接口电路装置52用于向其它装置发送在无线电接口电路装置52生成的射频信号以及用于从其它装置接收射频信号。
在本发明的一些实施例中,装置50包括能够记录或者检测个别帧的相机,这些帧然后向编码解码器54或者控制器传递用于处理。在本发明的一些实施例中,装置可以在传输和/或存储之前从另一设备接收视频图像数据用于处理。在本发明的一些实施例中,装置50可以无线或者通过有线连接接收图像用于编码/解码。
关于图3,示出可以在其中利用本发明的实施例的系统的示例。系统10包括可以通过一个或者多个网络通信的多个通信设备。系统10可以包括有线或者无线网络的任何组合、这些有线或者无线网络包括但不限于无线蜂窝电话网络(比如GSM、UMTS、CDMA网络等)、比如IEEE802.x标准中的任何标准定义的无线局域网(WLAN)、蓝牙专用网络、以太网局域网、令牌环局域网、广域网和因特网。
系统10可以包括适合用于实施本发明的实施例的有线和无线通信设备二者或者装置50。
例如图3中所示系统示出移动电话网络11并且示出因特网28的表示。与因特网28的连通可以包括但不限于远程无线连接、近程无线连接和各种有线连接,这些有线连接包括但不限于电话线路、线缆线路、功率线路和相似通信途径。
系统10中所示示例通信设备可以包括但不限于电子设备或者装置50、个人数字助理(PDA)和移动电话14的组合、PDA16、集成消息接发设备(IMD)18、桌面型计算机20、笔记本计算机22。装置50可以静止或者在由移动的个人携带时可移动。装置50也可以位于运输模式中,该运输模式包括但不限于小汽车、卡车、出租车、公共汽车、火车、船只、飞机、自行车、摩托车或者任何相似的适当运输模式。
一些或者更多装置可以发送和接收呼叫和消息并且通过与基站24的无线连接25与服务提供商通信。基站24可以连接到网络服务器26,该网络服务器允许在移动电话网络11与因特网28之间的通信。系统可以包括附加通信设备和各种类型的通信设备。
通信设备可以使用各种传输技术来通信,这些传输技术包括但不限于码分多址(CDMA)、全球移动通信系统(GSM)、通用移动电信系统(UMTS)、时分多址(TDMA)、频分多址(FDMA)、传输控制协议-网际协议(TCP-IP)、短消息接发服务(SMS)、多媒体消息接发服务(MMS)、电子邮件、即时消息接发服务(IMS)、蓝牙、IEEE802.11和任何相似无线通信技术。参与实施本发明的各种实施例的通信设备可以使用各种介质来通信,这些介质包括但不限于无线电、红外线、激光、线缆连接和任何适当连接。
关于图4a示出适合用于实现本发明的实施例的视频编码器的框图。另外关于图5a和图5b,示出编码器的操作为流程图,该操作具体关于选择构造候选预测列表举例说明本发明的实施例。
图4a示出编码器为包括像素预测器302、预测误差编码器303和预测误差解码器304。图4a也示出像素预测器302的一个实施例为包括帧间预测器306、帧内预测器308、模式选择器310、滤波器316和参考帧存储器318。在这一实施例中,模式选择器310包括块处理器381和成本评估器382。编码器还可以包括用于对比特流进行熵编码的熵编码器330。
图4b描绘帧间预测器306的一个实施例。帧间预测器306包括用于选择一个或者多个参考帧的参考帧选择器360、运动矢量定义器361、预测列表修改器363和运动矢量选择器364。这些单元或者它们中的一些单元可以是预测处理器362的部分或者可以通过使用其它装置来实施它们。
像素预测器302接收将在帧间预测器306(该帧间预测器确定在图像与运动补偿的参考帧318之间的差值)和帧内预测器308(该帧内预测器仅基于当前帧或者画面的已经处理的部分确定对于图像块的预测)二者编码的图像300。可以向模式选择器310传递帧间预测器和帧内预测器二者的输出。帧内预测器308可以具有多于一个帧内预测模式。因此,每个模式可以执行帧内预测并且向模式选择器310提供预测的信号。模式选择器310也接收图像300的副本。
模式选择器310确定使用哪个编码模式对当前块进行编码。如果模式选择器310判决使用帧间预测模式,则它将向模式选择器310的输出传递帧间预测器306的输出。如果模式选择器310判决使用帧内预测模式,则它将向模式选择器310的输出传递帧内预测器模式之一的输出。
向第一求和设备321传递模式选择器的输出。第一求和设备可以从图像300减去像素预测器302的输出以产生向预测误差编码器303输入的第一预测误差信号320。
像素预测302还从初步重构器339接收图像块312的预测表示和预测误差解码器304的输出338的组合。可以向帧内预测器308和向滤波器316传递初步重构的图像314。接收初步表示的滤波器316可以对初步表示进行滤波并且输出可以在参考帧存储器318中保存的最终重构的图像340。参考帧存储器318可以连接到帧间预测器306以用作在帧间预测操作中将来图像300与之比较的参考图像。
像素预测器302的操作可以被配置用于执行本领域已知的任何已知像素预测算法。
像素预测器302也可以包括用于在从像素预测器302输出预测的值之前对它们进行滤波的滤波器385。
下文将进一步具体描述预测误差编码器302和预测误差解码器304的操作。在下文中,编码器按照将要形成全图像或者画面的16x16像素宏块生成图像。因此,对于以下示例,像素预测器302输出大小为16x16个像素的系列预测的宏块,并且第一求和设备321输出系列16x16像素残留值数据宏块,这些残留值数据宏块可以表示在图像300中的第一宏块与预测的宏块(像素预测器302的输出)之间的差值。将连接可以使用其它大小的宏块。
预测误差编码器303包括变换块342和量化器344。变换块342将第一预测误差信号320变换到变换域。变换例如是DCT变换。量化器344量化变换域信号、例如DCT系数以形成量化的系数。
预测误差解码器304从预测误差编码器303接收输出并且执行预测误差编码器303的逆过程以产生解码的预测误差信号338,该解码的预测误差信号在第二求和设备339处与图像块312的预测表示组合时产生初步重构的图像314。可以认为预测误差解码器包括去量化器346和逆变换块348,该去量化器346将量化的系数值、例如DCT系数去量化以重构变换信号,该逆变换块348对重构的变换信号执行逆变换,其中逆变换块348的输出包含重构的块。预测误差解码器也可以包括可以根据进一步解码的信息和滤波器参数对重构的宏块进行滤波的宏块滤波器(未示出)。
在下文中,将更具体描述帧间预测器306的一个示例实施例的操作。帧间预测器306接收用于帧间预测的当前块。假设对于当前块,已经存在已经编码的一个或者多个邻近块,并且已经为它们定义运动矢量。例如在当前块的左侧上的块和/或之上的块可以是这样的块。可以例如通过使用在相同片或者帧中的编码的邻近块和/或非相邻块的运动矢量、使用空间运动矢量预测的线性或者非线性函数、使用各种空间运动矢量与线性或者非线性运算的组合或者通过未利用时间参考信息的任何其它适当手段,来形成用于当前块的空间运动矢量预测。也可以有可能通过合并一个或者多个编码的块的空间和时间预测信息二者来获得运动矢量预测。这些种类的运动矢量预测器也可以称为空间-时间运动矢量预测器。
已经向参考帧存储器404存储在对邻近块进行编码时使用的参考帧。参考帧可以是短期参考或者长期参考,并且每个参考帧可以具有指示参考帧在参考帧存储器中的位置的唯一索引。在参考帧不再用作参考帧时,可以从参考帧存储器去除它或者标记它为非参考帧,其中为新参考帧占用该参考帧的存储位置。除了邻近块的参考帧之外,参考帧选择器360也可以选择一个或者多个其它帧作为潜在参考帧并且向参考帧存储器存储它们。
也向存储器中存储编码的块的运动矢量信息,从而帧间预测器306能够在处理用于当前块的运动矢量候选时取回运动矢量信息。
在一些实施例中,向一个或者多个列表中存储运动矢量。例如可以向称为列表0的列表存储单向预测的帧(例如P帧)的运动矢量。对于双向预测的帧(例如B帧),可以有两个列表(列表0和列表1),并且对于多预测的帧,可以有多于两个列表。也可以在一个或者多个列表中存储可能与运动矢量关联的参考帧索引。
在一些实施例中,可以有两个或者更多运动矢量预测过程,并且每个过程可以具有它自己的候选集合创建过程。在一个过程中,仅使用运动矢量值。在可以称为合并模式的另一过程中,每个候选元素可以包括1)是否‘仅使用列表0来单预测块块’或者‘仅使用列表1来单预测块’或者‘使用列表0和列表1来双预测块’这样的信息、2)用于列表0的运动矢量值、3)在列表0中的参考画面索引、4)用于列表1的运动矢量值、5)在列表1中的参考画面索引。因此,无论何时将比较两个预测矢量,不仅比较运动矢量值,而且可以比较以上提到的五个值以确定它们是否相互对应。在另一方面,如果比较中的任何比较指示预测候选无相等运动信息,则无需执行进一步比较。
运动矢量定义器361通过使用当前块在相同帧中的一个或者多个相邻块和/或其它块和/或当前块在一个或者多个其它帧中的共同定位的块和/或其它块的运动矢量中的一个或者多个运动矢量,来定义用于当前帧的候选运动矢量。这些候选运动矢量可以称为候选预测器集合或者预测器集合。每个候选预测器因此表示一个或者多个已经编码的块的运动矢量。在一些实施例中,如果当前块和相邻块引用用于相同列表的相同参考帧,则对于该列表设置候选预测器的运动矢量等于相邻块的运动矢量。也对于时间预测,可以有一个或者多个先前编码的帧,其中可以选择在先前编码的帧中的共同定位的块或者其它块的运动矢量作为用于当前块的候选预测器。可以通过利用除了当前帧之外的帧的任何手段来生成时间运动矢量预测器候选。
也可以通过使用一个或者多个其它块(比如当前块的邻近块和/或在一个或者多个其它帧中的共同定位的块)的多于一个运动矢量,来获得候选运动矢量。作为示例,可以使用在当前块的左侧的块的运动矢量、在当前块以上的块的运动矢量、以及在当前块的右上角的块(即在当前块之上块的右侧的块)的运动矢量的任何组合。组合可以是运动矢量的中值或者通过使用其它公式来计算。例如可以按照缩放因子缩放将在组合中使用的运动矢量中的一个或者多个运动矢量、可以添加偏移和/或可以添加恒定运动矢量。在一些实施例中,组合的运动矢量基于时间和空间运动矢量二者、例如当前块的相邻块或者其它块中的一个或者多个块的运动矢量、以及在另一帧中的共同定位的块或者其它块的运动矢量。
如果相邻块无任何运动矢量信息,则可以代之以使用默认运动矢量、比如零运动矢量。
图9图示编码单元900和编码单元的一些相邻块901-905的示例。如从图9可见,如果编码单元900表示当前块,则标注为A0、A1、B0、B1和B2的邻近块901-905可以是这样的可在获得候选运动矢量时被使用的相邻块。
可能在当前候选数目有限或者不足时需要基于先前添加的预测器创建附加或者额外运动矢量预测。可以通过组合先前两个预测和/或通过缩放或者添加偏移和/或添加具有各种参考索引的零运动矢量处理一个先前候选,来执行这种创建附加候选。因此,运动矢量定义器361可以检查可以定义多少运动矢量候选以及对于当前块存在多少潜在候选运动矢量。如果潜在运动矢量候选数目小于阈值,则运动矢量定义器361可以创建附加运动矢量预测。
在一些实施例中,组合的运动矢量可以基于在不同列表中的运动矢量。例如可以例如在邻近或者共同定位的块是双向预测的块并且存在有用于双向预测的块的在列表0中的一个运动矢量和在列表1中的一个运动矢量时、通过组合来自列表0的一个运动矢量和来自列表1的一个运动矢量,来定义一个运动矢量。
为了区分当前块与编码/解码的块,这些编码/解码的块的运动矢量用作候选运动矢量,这些编码/解码的块在本申请中也称为参考块。
在一些实施例中,不仅获得参考块的运动矢量信息(例如通过复制),而且可以向候选列表复制在参考画面列表中的参考块的参考索引。也可以复制关于是否仅使用列表0来单预测该块,还是仅使用列表1来单预测该块,还是使用列表0和列表1来双预测该块的信息。候选列表也可以称为候选集合或者运动矢量预测候选集合。
图6a图示预测单元的空间和时间预测的示例。描绘有在帧600中的当前块601和已经编码的相邻块602。运动矢量定义器361已经定义用于相邻块602的运动矢量603,该运动矢量指向在先前605中的块604。这一运动矢量可以用作为用于当前块的潜在空间运动矢量预测610。图6a描绘在先前帧605中的共同定位的块606、即在与当前块相同的位置、但是在先前帧中的块具有运动矢量607,该运动矢量指向在另一帧608中的块609。这一运动矢量607可以用作为用于当前帧的潜在时间运动矢量预测611。
图6b图示预测单元的空间和时间预测的另一示例。在这一示例中,先前帧605的块606使用基于在帧605前面的帧的块609和基于在当前帧600后面的块612的双向预测。可以通过使用运动矢量607、614二者或者它们中的任一运动矢量来形成用于当前块601的时间运动矢量预测。
现在将参照图5a和图5b的流程图更具体描述预测列表修改器363的操作。预测列表修改器363在图5a的块500中将运动矢量预测列表初始化成默认值。预测列表修改器363也可以将列表索引初始化成初始值、比如零。然后在块501中,预测列表修改器校验是否有将处理的任何运动矢量候选。如果在预测器集合中存在用于处理的至少一个运动矢量候选,则预测列表修改器363生成下一运动矢量候选,该下一运动矢量候选可以是时间运动矢量或者空间运动矢量。比较可以是相等性/等价性校验或者比较(绝对)差值与阈值或者任何其它相似性度量。
在下文中,将更具体描述根据一个示例实施例的用于运动信息编码的合并过程。编码器创建运动预测候选列表,来自该运动预测候选列表的候选之一将被信令通知作为用于当前编码单元或者预测单元的运动信息。运动预测候选可以由若干空间运动预测和时间运动预测构成。可以从例如空间相邻块A0、A1、B0、B1、B2的运动信息获得空间候选,这些空间候选的运动信息用作空间候选运动预测。可以通过处理在除了当前帧之外的帧中的块的运动来获得时间运动预测候选。在这一示例实施例中,用于为空间候选构造合并列表的编码器操作可以包括以下操作。操作可以例如由预测列表修改器363执行。
可以定义将在合并列表中包括的空间运动预测候选的最大数目。这一最大数目可以已经例如被存储到装置50的存储器58或者另一适当地点。也有可能通过使用其它手段来确定最大数目或者可以在装置50的编码器的软件中确定它。
在一些实施例中,将在合并列表中包括的空间运动预测候选的最大数目是四个,但是在一些实施例中,最大数目可以小于四个或者大于四个。
在这一示例中,空间运动预测候选是空间相邻块A0、A1、B0、B1、B2。在编码/解码顺序是从待编码/解码的帧、片或者另一实体的左到右和上到下时空间运动矢量预测候选A1位于预测单元的左侧。分别地,空间运动矢量预测候选B1位于预测单元之上;空间运动矢量预测候选B1在空间运动矢量预测候选B1的右侧;空间运动矢量预测候选A0在空间运动预测候选A1之下;并且空间运动矢量预测候选B2位于与空间运动矢量预测候选A1相同的列和与空间运动矢量预测候选B1相同的行处。换而言之,空间运动矢量预测候选B2如例如从图9可见与预测单元对角邻近。
可以按照预定顺序、例如A1、B1、B0、A1和B2处理这些空间运动预测候选。将被选择用于进一步检查的第一空间运动预测候选因此是A1。在对于选择的空间运动预测候选进行进一步检查之前,可以确定合并列表是否已经包含最大数目的空间运动预测候选。因此,预测列表修改器363比较502在合并列表中的空间运动预测候选的数目与最大数目,并且如果在合并列表中的空间运动预测候选的数目不小于最大数目,则不在合并列表中包括选择的空间运动预测候选,并且可以停止526构造合并列表的过程。在另一方面,如果在合并列表中的空间运动预测候选的数目小于最大数目,则执行选择的空间运动预测候选的进一步分析(块504-522)。
对于将被执行进一步分析的所有空间运动预测候选,可以测试以下条件中的一些或者所有条件用于确定是否在合并列表中包括空间运动预测候选。
预测列表修改器363检查504覆盖空间运动预测候选块的预测单元或者块是否不可用于运动预测。如果是这样,则不在合并列表中包括候选。块不可用的原因可以是块在帧内模式中被编码、或者驻留在不同片或者在画面区域以外。
除了以上公共条件之外,对于每个空间运动预测候选,如果以下条件中的每个条件成立,则不在合并列表中包括候选,否则包括它。
预测列表修改器363确定506空间运动预测候选集合的哪个空间运动预测候选被讨论。如果空间运动预测候选是块A1,则可以检查508、510以下条件中的一个或者多个条件以确定是否在合并列表中包括这一空间运动预测候选。如果当前编码单元100如图10b中描绘的那样被垂直拆分成两个矩形预测单元103、104,并且当前预测单元是按照编码/解码顺序的第二预测单元104(508),则不在合并列表中包括这一空间运动预测候选。如果当前编码单元100未被垂直拆分成两个矩形预测单元,但是它如图10a中描绘的那样被水平拆分成两个矩形预测单元101、102,并且当前预测单元是按照编码/解码顺序的第二预测单元,而且块A1具有与块B1相同的运动信息(510),则不在合并列表中包括这一空间运动预测候选(块A1)。在图10a的示例中,第二预测单元是编码单元100的下预测单元102,而在图10b的示例中,第二预测单元是编码单元100的最右预测单元104。如果未满足以上条件中的任何条件,则在合并列表中包括块A1作为空间运动预测候选(524)。
如果空间运动预测候选是块B1,则可以检查512、514以下条件中的一个或者多个条件以确定是否在合并列表中包括这一空间运动预测候选。如果当前编码单元100如图10a中描绘的那样被水平拆分成两个矩形预测单元101、102,并且当前预测单元是按照编码/解码顺序的第二预测单元104(512),则不在合并列表中包括这一空间运动预测候选。如果当前编码单元100未被水平拆分成两个矩形预测单元,并且如果块B1具有与块A1相同的运动信息(514),则不在合并列表中包括这一空间运动预测候选(块B1)。如果未满足以上条件中的任何条件,则不在合并列表中包括块B1作为空间运动预测候选(524)。
如果空间运动预测候选是块B0,那么如果块B0具有与块B1相同的运动信息,则不在合并列表中包括这一空间运动预测候选(516)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,则在合并列表中包括这一空间运动预测候选(块B0)(524)。
如果空间运动预测候选是块A0,那么如果块A0具有与块A1相同的运动信息,则不在合并列表中包括这一空间运动预测候选(518)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,则在合并列表中包括这一空间运动预测候选(块A0)(524)。
如果空间运动预测候选是块B2,那么如果空间运动预测候选的最大数目是四个,并且其它块A0、A1、B0和B1都被判决被包括在合并列表中,则不在合并列表中包括这一空间运动预测候选(520)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,那么如果块B2具有与块B1或者块A1相同的运动信息,则不在合并列表中包括块B2(522)。
然后,在处理块A1、B1、B0、A0和B2并且基于以上描述的条件在合并列表中包括它们的子集之后,不再执行在这些候选之间的更多冗余性校验,并且可以处理其余时间运动预测候选和/或其它可能附加候选。
可以通过比较运动信息的所有元素来执行比较两个块它们是否具有相同运动、即1)是否‘预测单元仅使用参考画面列表0来单预测’或者‘预测单元仅使用参考画面列表1来单预测’或者‘预测单元使用参考画面列表0和列表1二者来双预测’这样的信息、2)与参考画面列表0对应的运动矢量值、3)在参考画面列表0中的参考画面索引、4)与参考画面列表1对应的运动矢量值、5)在参考画面列表1中的参考画面索引。
在一些实施例中,如果通过拆分成四个或者任何数目的预测单元对当前编码源进行编码/解码,则可以应用用于比较候选对的相似约束。
合并列表候选的最大数目可以是任何非零值。在以上示例中,合并列表候选是空间相邻块A0、A1、B0、B1、B2和时间运动预测候选,但是可以有多于一个时间运动预测候选并且也有除了空间相邻块之外的其它空间运动预测候选。在一些实施例中,也可以有除了块A0、A1、B0、B1、B2之外的其它空间相邻块。
也有可能的是包括在列表中的空间运动预测候选的最大数目可以不同于四个。
在一些实施例中,合并列表候选的最大数目和在列表中包括的空间运动预测候选的最大数目可以依赖于是否在列表中包括时间运动矢量候选。
可以处理位于当前帧中的各种位置的不同数目的空间运动预测候选。位置可以与A1、B1、B0、A0和B2相同或者不同。
可以在两个步骤中实现在列表中包括哪些空间运动预测候选的判决。在第一步骤中,通过校验候选块是否可用和/或候选块的预测模式是否为帧内和/或当前块是否为用两个预测单元编码的编码单元的第二预测单元以及候选是否具有与第一预测单元相同的运动,来消除候选中的一些候选。在第二步骤中,检查其余候选,并且在合并列表中包括它们中的一些或者所有候选。在第二步骤中的检查不包括比较每个可能候选对的运动信息、但是包括可能比较组合的子集。
可以按照A1、B1、B0、A0和B2的任何顺序或者并行独立做出对于候选的判决。
对于每个候选和/或候选的子集,也可以校验以下条件:在当前编码单元被拆分成两个矩形预测单元并且当前预测单元是按照编码/解码顺序的第二预测单元时,候选块是否具有与当前编码单元的第一预测单元相同的运动。
与当前和/或先前片和/或当前和/或相邻块的各种性质有关的附加条件可以用于确定是否在列表中包括候选。
可以通过比较整个运动信息的子集来实现运动比较。例如可以仅比较用于一些或者所有参考画面列表的运动矢量值和/或用于一些或者所有参考画面列表的参考索引和/或向每个块指派的用于表示它的运动信息的标识符值。比较可以是相同性或者等价性校验或者比较(绝对)差值与阈值或者任何其它相似性度量。
用于判决是否将在列表中包括候选的条件可以包括只要未最终比较所有可能候选对就与候选的任何子集的运动信息比较。
判决是否将在列表中包括时间运动矢量候选可以基于比较它的运动信息与空间运动矢量预测候选的子集的运动信息。
在比较两个块的运动信息时,也可以考虑附加块的运动信息。例如在比较块B2和块A1时,校验在块B2与块A1之间的所有块(图12中所示)它们是否具有相同运动;并且在比较块B2和块B1时,校验在块B2与块B1之间的所有块(图12中所示)它们是否具有相同运动。可以实施这一实施例使得每个预测单元的最右块或者每个预测单元的所有块可以存储与之上块的多少连续块具有相同运动信息这样的信息。使用这一信息,可以通过校验在B0左侧的具有相同运动的连续块的数目是否大于0来实现用于不在列表中包括B0的条件。可以通过校验在A0之上的具有相同运动的连续块的数目是否大于0来实现用于不在列表中包括A0的条件。可以修改用于不包括B2的条件如下:
未检查块B2是否具有与块B1相同的运动或者块B2是否具有与块A1相同的运动、而是检查在块B1左侧存在多少连续块具有与块B1相同的运动和/或在块A1之上存在多少连续块具有相同运动。如果在块B1左侧的具有相同运动的连续块的数目大于在B2与B1之间的块的数目,或者如果在块A1之上的具有相同运动的连续块的数目大于在块B2与块A1之间的块的数目,则不在合并列表中包括块B2。
如果使用以上实现方式,则可以通过直接比较运动信息或者校验预测模式和/或如果块运用合并过程则校验合并索引,来确定在左侧/之上的多少连续块具有相同运动信息的值。
在对选择的合并索引进行编码/解码时,可以考虑合并过程是否被运用用于对跳跃模式编码单元或者帧间合并模式预测单元进行编码/解码。例如,如果上下文自适应二进制算术编码器(CABAC)用于熵编码/编码,则不同上下文可以根据当前块的编码模式(跳跃模式或者帧间合并模式)而被用于仓(bin)。另外,可以仅对于合并索引的最高有效仓应用根据是否在跳跃模式编码单元或者帧间合并模式预测单元中运用合并过程来指派两个上下文。
在去除冗余候选的过程期间,在运动矢量预测候选之间的比较可以基于除了运动矢量值之外的任何其它信息。例如它可以基于运动矢量值的线性或者非线性函数、用来获得运动信息的块的编码或者预测类型、块大小、在帧/(最大)编码单元/宏块中的空间位置、块是否共享与块的相同运动的信息、块是否在相同编码/预测单元中的信息等。
以下伪代码举例说明用于构造合并列表的本发明的一个示例实施例。
向这一过程的输入是:
-照度位置(xP,yP),该照度位置指定当前预测单元相对于当前画面的左上采样而言的左上照度采样;
-变量,这些变量指定用于照度的预测单元的宽度和高度nPSW和nPSH;以及
-变量PartIdx,该变量指定当前预测单元在当前编码单元内的索引。
这一过程的输出是(令N被A0、A1、B0、B1或者B2取代并且令X被0或者1取代):
-邻近预测单元的可用性标志availableFlagN,
-邻近预测单元的参考索引refIdxLXN,
-邻近预测单元的预测列表利用标志predFlagLXN,
-邻近预测单元的运动矢量mvLXN。
为了推导availableFlagN,令N为A0、A1、B0、B1或者B2并且(xN,yN)为(xP-1,yP+nPSH)、(xP-1,yP+nPSH-1)、(xP+nPSW,yP-1)、(xP+nPSW-1,yP-1)或者(xP-1,yP-1),以下适用。
-如果条件之一成立,则availableFlagN被设置成0,两个分量mvLXN被设置等于0,并且覆盖照度位置(xN,yN)的预测单元的refIdxLXN和predFlagLX[xN,yN]被分别指派给mvLXN、refIdxLXN和predFlagLXN。
-N等于B2并且availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1等于4。
-覆盖照度位置(xN,yN)的预测单元不可用或者PredMode是MODE_INTRA。
-N等于A1并且当前预测单元的PartMode是PART_Nx2N或者PART_nLx2N或者PART_nRx2N并且PartIdx等于1。
-N等于A1并且当前预测单元的PartMode是PART_2NxN或者PART_2NxnU或者PART_2NxnD并且PartIdx等于1并且覆盖照度位置(xP+nPSW-1,yP-1)(N=BI)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP+nPSW-1,yP-1]==mvLX[xN,yN]
-refIdxLX[xP+nPSW-1,yP-1]==refIdxLX[xN,yN]
-predFlagLX[xP+nPSW-1,yP-1]==predFlagLX[xN,yN]
-N等于B1并且当前预测单元的PartMode是2NxN或者PART_2NxnU或者PART_2NxnD以及PartIdx等于1。
-N等于B1并且覆盖照度位置(xP-1,yP+nPSH-1)(N=Al)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP-1,yP+nPSH-1]==mvLX[xN,yN]
-refIdxLX[xP-1,yP+nPSH-1]==refIdxLX[xN,yN]
-predFlagLX[xP-1,yP+nPSH-1]==predFlagLX[xN,yN]
-N等于B0并且覆盖照度位置(xP+nPSW-1,yP-1)(N=B1)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP+nPSW-1,yP-1]==mvLX[xN,yN]
-refIdxLX[xP+nPSW-1,yP-1]==refIdxLX[xN,yN]
-predFlagLX[xP+nPSW-1,yP-1]==predFlagLX[xN,yN]
-N等于A0并且覆盖照度位置(xP-1,yP+nPSH-1)(N=A1)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP-1,yP+nPSH-1]==mvLX[xN,yN]
-refIdxLX[xP-1,yP+nPSH-1]==refIdxLX[xN,yN]
-predFlagLX[xP-1,yP+nPSH-1]==predFlagLX[xN,yN]
-N等于B2并且覆盖照度位置(xP+nPSW-1,yP-1)(N=B1)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP+nPSW-1,yP-1]==mvLX[xN,yN]
-refIdxLX[xP+nPSW-1,yP-1]==refIdxLX[xN,yN]
-predFlagLX[xP+nPSW-1,yP-1]==predFlagLX[xN,yN]
-N等于B2并且覆盖照度位置(xP-1,yP+nPSH-1)(N=A1)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP-1,yP+nPSH-1]==mvLX[xN,yN]
-refIdxLX[xP-1,yP+nPSH-1]==refIdxLX[xN,yN]
-predFlagLX[xP-1,yP+nPSH-1]==predFlagLX[xN,yN]
-当前预测单元的PartMode是PART NxN并且PartIdx等于3并且覆盖照度位置(xP-1,yP)(PartIdx=2)和照度位置(xP-1,yP-1)(PartIdx=0)的预测单元具有相同运动参数:
-mvLX[xP-1,yP]==mvLX[xP-1,yP-1]
-refIdxLX[xP-1,yP]==refIdxLX[xP-1,yP-1]
-predFlagLX[xP-1,yP]==predFlagLX[xP-1,yP-1]
并且覆盖照度位置(xP,yP-1)(PartIdx=1)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP,yP-1]==mvLX[xN,yN]
-refIdxLX[xP,yP-1]==refIdxLX[xN,yN]
-predFlagLX[xP,yP-1]==predFlagLX[xN,yN]
-当前预测单元的PartMode是PART_NxN并且PartIdx等于3并且覆盖照度位置(xP,yP-1)(PartIdx=1)和照度位置(xP-1,yP-1)(PartIdx=0)的预测单元具有相同运动参数:
-mvLX[xP,yP-1]==mvLX[xP-1,yP-1]
-refIdxLX[xP,yP-1]==refIdxLX[xP-1,yP-1]
-predFlagLX[xP,yP-1]==predFlagLX[xP-1,yP-1]
并且覆盖照度位置(xP-1,yP)(PartIdx=2)和照度位置(xN,yN)(Cand.N)的预测单元具有相同运动参数:
-mvLX[xP-1,yP]==mvLX[xN,yN]
-refIdxLX[xP-1,yP]==refIdxLX[xN,yN]
-predFlagLX[xP-1,yP]==predFlagLX[xN,yN]
-否则,availableFlagN被设置等于1并且覆盖照度位置(xN,yN)的预测单元的变量mvLX[xN,yN]、refIdxLX[xN,yN]和predFlagLX[xN,yN]被分别指派给mvLXN、refIdxLXN和predFlagLXN。
对于运动矢量预测器候选列表生成过程,每个列表候选可以包括比运动矢量值更多的信息、比如使用的参考列表、在每个列表中使用的参考帧和用于每个列表的运动矢量。
在已经检查所有运动矢量候选时,选择一个运动矢量以用作为用于当前块的运动矢量。运动矢量选择器364可以检查在列表中的不同运动矢量并且确定哪个运动矢量提供最高效编码结果,或者运动矢量的选择也可以基于其它标准。为模式选择器提供所选择的运动矢量的信息以用于编码和向解码器发送,或者用于在模式选择器确定将帧间预测用于当前块时存储该信息。信息可以包括运动矢量在列表中的索引和/或运动矢量参数或者其它适当信息。
选择的运动矢量和涉及运动矢量的块用来生成图像块312的作为模式选择器的输出而提供的预测表示。输出可以如以上描述的那样由第一求和设备321用来产生第一预测误差信号320。
选择的运动矢量预测器候选可以通过添加运动矢量差值来修改或者可以直接用作块的运动矢量。另外,在通过使用选择的运动矢量预测器候选来执行运动补偿之后,块的残留值信号可以被变换编码或者略去编码。
虽然已经关于宏块的大小为16x16个像素来描述以上实施例,但是将清楚描述的方法和装置可以被配置用于处置不同像素大小的宏块。
在下文中,参照图7更具体描绘解码器600的一个示例实施例的操作。
在解码器侧,执行相似操作以重构图像块。图7示出适合用于实现本发明的实施例的视频解码器700的框图,并且图8a和8b示出在视频解码器中的方法的示例的流程图。可以从编码器、从网元、从存储介质或者从另一来源接收待解码的比特流。解码器了解比特流的结果,从而它可以确定熵编码的码字的含义,并且可以通过对接收的信号执行熵解码的熵解码器701对比特流进行解码。熵解码器因此执行与以上描述的熵编码器330相逆的操作。熵解码器701向预测误差解码器702和像素预测器704输出熵解码的结果。
在一些实施例中,可以未使用熵编码,但是可以使用另一信道编码或者可以向解码器700提供编码的比特流而无信道编码。解码器700可以包括用于从接收的信号获得编码的码字的对应信道解码器。
像素预测器704接收熵解码器701的输出。熵解码器701的输出可以包括关于在对当前块进行编码时使用的预测模式的指示。在像素预测器704内的预测器选择器714确定将执行帧内预测或者帧间预测。预测器选择器714另外向第一组合器713输出图像块716的预测的表示。图像块716的预测的表示与重构的预测误差信号712结合用来生成初步重构的图像718。可以在预测器714中使用或者可以向滤波器720传递初步重构的图像718。滤波器720如果被使用则应用滤波,该滤波输出最终重构的信号722。最终重构的信号722可以存储于参考帧存储器724中,参考帧存储器724进一步连接到用于预测操作的预测器714。
预测误差解码器702也接收熵解码器701的输出。预测误差解码器702的去量化器792可以去量化熵解码器701的输出,并且逆变换块793可以执行对去量化器792输出的去量化的信号执行逆变换操作。熵解码器701的输出也可以指示将不被应用预测误差信号,并且在这一情况下,预测误差解码器产生全零输出信号。
解码器选择将重构的16x16像素残留宏块。这一残留宏块也称为当前块。
解码器可以接收关于在当前块的编码中使用的编码模式的信息。在必要时对指示进行解码并且向预测选择器714的重构处理器791提供指示。重构处理器791检查指示并且如果指示是指示已经使用帧内预测对块进行编码则选择帧内预测模式或者如果指示是指示已经使用帧间预测对块进行编码则选择帧间预测模式。
对于帧间预测模式,重构处理器791可以包括与编码器的预测处理器362对应的一个或者多个单元、比如运动矢量定义器、预测列表修改器和/或运动矢量选择器。
重构处理器791在块800中将运动矢量预测列表初始化成默认值。与在编码部分中的情况一样,在这一示例中,空间运动预测候选是空间相邻块A0、A1、B0、B1、B2,并且按照与在编码器中相同的预定顺序处理这些空间运动预测候选:A1、B1、B0、A0和B2。被选择用于进一步检查的第一空间运动预测候选因此是A1。在对于选择的空间运动预测候选执行进一步检查之前,检查合并列表是否已经包含最大数目的空间运动预测候选。如果在合并列表中的空间运动预测候选的数目不小于最大数目,则不在合并列表中包括选择的空间运动预测候选,并且可以停止826构造合并列表的过程。在另一方面,如果在合并列表中的空间运动预测候选的数目小于最大数目,则执行对选择的空间运动预测候选的进一步分析(块804-822)。
解码器检查804覆盖空间运动预测候选块的预测单元或者块是否可用于运动预测。如果是这样,则不在合并列表中包括该候选。块不可用的原因可能是,块被以帧内模式编码或者块驻留在不同片中或者在画面区域以外。
除了以上公共条件之外,对于每个空间运动预测候选,如果以下条件成立,则不在合并列表中包括该候选,否则将包括它。
解码器确定806空间运动预测候选集合的哪个空间运动预测候选被讨论。如果空间运动预测候选是块A1,则可以检查808、810以下条件中的一个或者多个条件,以确定是否在合并列表中包括这一空间运动预测候选。如果当前编码单元100如图10b中描绘的那样被垂直拆分成两个矩形预测单元103、104,并且当前预测单元是按照编码/解码顺序的第二预测单元104(808),则不在合并列表中包括这一空间运动预测候选。如果当前编码单元100不是被垂直拆分成两个矩形预测单元,而是它如图10a中描绘的那样被水平拆分成两个矩形预测单元101、102,并且当前预测单元是按照编码/解码顺序的第二预测单元,而且块A1具有与块B1相同的运动信息(810),则不在合并列表中包括这一空间运动预测候选(块A1)。在图10a的示例中,第二预测单元是编码单元100的下预测单元102,而在图10b的示例中,第二预测单元是编码单元100的最右预测单元104。如果未满足以上条件中的任何条件,则在合并列表中包括块A1作为空间运动预测候选(824)。
如果空间运动预测候选是块B1,则可以检查812、814以下条件中的一个或者多个条件以确定是否在合并列表中包括这一空间运动预测候选。如果当前编码单元100如图10a中描绘的那样被水平拆分成两个矩形预测单元101、102,并且当前预测单元是按照编码/解码顺序的第二预测单元104(812),则不在合并列表中包括这一空间运动预测候选。如果当前编码单元100未被水平拆分成两个矩形预测单元,并且如果块B1具有与块A1相同的运动信息(814),则不在合并列表中包括这一空间运动预测候选(块B1)。如果未满足以上条件中的任何条件,则不在合并列表中包括块B1作为空间运动预测候选(824)。
如果空间运动预测候选是块B0,那么如果块B0具有与块B1相同的运动信息,则不在合并列表中包括这一空间运动预测候选(816)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,则在合并列表中包括这一空间运动预测候选(块B0)(824)。
如果空间运动预测候选是块A0,那么如果块A0具有与块A1相同的运动信息,则不在合并列表中包括这一空间运动预测候选(818)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,则在合并列表中包括这一空间运动预测候选(块A0)(824)。
如果空间运动预测候选是块B2,那么如果空间运动预测候选的最大数目是四个,并且其它块A0、A1、B0和B1都被判决未被包括在合并列表中,则不在合并列表中包括这一空间运动预测候选(820)。否则,如果在合并列表中的空间运动预测候选的数目小于空间运动预测候选的最大数目,那么如果块B2具有与块B1或者块A1相同的运动信息,则不在合并列表中包括块B2(822)。
然后,在处理块A1、B1、B0、A0和B2并且基于以上描述的条件在合并列表中包括它们的子集之后,未执行在这些候选之间的更多冗余性校验,并且可以处理其余时间运动预测候选和/或其它可能附加候选。
在已经构造合并列表时,解码器可以使用828从编码器接收的运动矢量的指示以选择用于对当前块进行解码的运动矢量。指示可以例如是对合并列表的索引。
基本上,如果重构处理器791具有与编码器具有的相同信息可用,则在重构处理器791已经重构合并列表之后,它将与编码器构造的合并列表对应。如果已经在从编码器向解码器传输信息期间丢失一些信息,则它可能影响在解码器700中生成合并列表。
以上示例描述主要在合并模式中的操作,但是编码器和解码器也可以在其它模式中操作。
以上描述的本发明的实施例按照分离的编码器和解码器装置描述编码解码器以便辅助理解涉及到的过程。然而将理解可以实施装置、结构和操作为单个编码器-解码器装置/结构/操作。另外,在本发明的一些实施例中,编码器和解码器可以共享一些或者所有公共单元。
虽然以上示例描述在电子设备内的编码解码器内操作的本发明的实施例,但是将理解可以实施如以下描述的本发明为任何视频编码解码器的部分。因此例如可以在视频编码解码器中实施本发明的实施例,该视频编码解码器可以通过固定或者有线通信路径实施视频编码。
因此,用户设备可以包括视频编码解码器、比如以上在本发明的实施例中描述的视频编码解码器。
应当理解所属用户设备旨在于覆盖任何适当类型的无线用户设备、比如移动电话、便携数据处理设备或者便携网上浏览器。
另外,公共陆地移动网络(PLMN)的单元也可以包括如以上描述的视频编码解码器。
一般而言,可以在硬件或者专用电路、软件、逻辑或者其任何组合中实施本发明的各种实施例。例如可以在硬件中实施一些方面而可以在控制器、微处理器或者其它计算设备可以执行的固件或者软件中实施其它方面,但是本发明不限于此。尽管本发明的各种方面可以被图示和描述为框图、流程图或者使用一些其它图形表示来图示和描述,但是应合理地理解,可以在作为非限制示例的硬件、软件、固件、专用电路或者逻辑、通用硬件或者控制器或者其它计算设备或者其某个组合中实施这里描述的这些块、装置、系统、技术或者方法。
可以通过移动设备的数据处理器、比如在处理器实体中可执行的计算机软件或者通过硬件或者通过软件和硬件的组合实施本发明的实施例。另外就这一点而言,应当注意如各图中的逻辑流程的任何块可以代表程序步骤或者互连的逻辑电路、块和功能或者程序步骤和逻辑电路、块和功能的组合。软件可以存储于比如在处理器内实施的存储器芯片或者存储器块、磁介质、比如硬盘或者软盘和光学介质、如例如DVD及其数据变体CD这样的物理介质上。
存储器可以是适合于本地技术环境的任何类型并且可以使用任何适当数据存储技术、比如基于半导体的存储器设备、磁存储器设备和系统、光学存储器设备和系统、固定存储器和可拆卸存储器来实施。数据处理器可以是适合于本地技术环境的任何类型并且可以包括作为非限制示例的通用计算机、专用计算机、微处理器、数字信号处理器(DSP)和基于多核处理器架构的处理器中的一项或者多项。
可以在各种部件、比如集成电路模块中实现本发明的实施例。集成电路的设计主要是高度自动化过程。复杂而强大的软件工具可用于将逻辑级设计转换成准备好在半导体衬底上蚀刻和形成的半导体电路设计。
程序、比如Mountain View,California的Synopsys公司和SanJose,California的Cadence Design提供的程序使用建立好的设计规则以及预存的设计模块的库在半导体芯片上自动对导体布线和对部件定位。一旦已经完成用于半导体电路的设计,就可以按照标准化电子格式(例如Opus、GDSII等)向半导体制作设施或者“fab”发送所得设计用于制作。
前文描述已经通过示例而非限制的示例提供对本发明示例实施例的完全而有启发的描述。然而各种修改和适配鉴于在与附图和所附权利要求结合阅读时的前文描述可以变得为相关领域技术人员所清楚。然而对本发明的教导的所有这样和相似的修改仍将落入本发明的范围内。
在下文中,将提供一些示例。
在一些实施例中,一种方法包括:
接收包括预测单元的像素块;
确定用于像素块的空间运动矢量预测候选集合;空间运动矢量预测候选提供有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将在用于预测单元的合并列表中包括的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,该方法包括在空间运动矢量预测候选集合中包括接收的像素块的邻近块。
在一些实施例中,该方法包括通过使用在与像素块相同的帧中的一个或者多个编码的块的运动矢量来构造空间运动矢量预测集合。
在一些实施例中,该方法包括按照预定顺序从空间运动矢量预测候选集合选择空间运动矢量预测候选作为潜在空间运动矢量预测候选。
在一些实施例中,该方法包括比较潜在空间运动矢量预测候选的运动信息与空间运动矢量预测候选集合的至多一个其它空间运动矢量预测候选的运动信息。
在一些实施例中,该方法包括预测单元和第二预测单元;并且如果是这样,那么如果预测单元是第二预测单元,则从合并列表排除潜在空间运动矢量预测候选。
在一些实施例中,该方法包括:
确定将包括在合并列表中的空间运动矢量预测候选的最大数目;并且
限制在合并列表中包括的空间运动矢量预测候选的数目小于或者等于最大数目。
在一些实施例中,该方法包括:
检查在合并列表中的空间运动矢量预测候选的数目是否小于最大数目;
如果是这样,则检查潜在空间运动矢量预测候选所属的预测单元是否可用于运动预测;
如果是这样,则执行以下操作中的至少一个操作:
对于在预测单元的左侧的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-接收的像素块被垂直划分成第一预测单元和第二预测单元,并且预测单元是第二预测单元;
-接收的像素块被水平划分成第一预测单元和第二预测单元,并且如果预测单元是第二预测单元,并且潜在空间运动矢量预测候选具有与在预测单元以上的空间运动矢量预测候选基本上相似的运动信息;
对于在预测单元之上的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-接收的像素块被水平划分成第一预测单元和第二预测单元,并且预测单元是第二预测单元;
-潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息;
对于在预测单元以上的潜在空间运动矢量预测候选的右侧的潜在空间运动矢量预测候选,如果潜在空间运动矢量预测候选具有与在预测单元之上的空间运动矢量预测候选基本上相似的运动信息,则从合并列表排除潜在空间运动矢量预测候选;
对于在预测单元的左侧的潜在空间运动矢量预测候选之下的潜在空间运动矢量预测候选,如果潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息,则从合并列表排除潜在空间运动矢量预测候选;
对于与预测单元对角邻近的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-已经在合并列表中包括所有其它潜在空间运动矢量预测候选;
-潜在空间运动矢量预测候选具有与在预测单元之上的空间运动矢量预测候选基本上相似的运动信息;
-潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息。
在一些实施例中,该方法包括向合并列表中包括时间运动预测候选。
在一些实施例中,该方法包括从合并列表选择一个运动矢量预测候选以表示用于像素块的运动矢量预测。
在一些实施例中,根据第二方面的一种方法包括:
接收包括预测单元的编码的像素块;
确定用于编码的像素块的空间运动矢量预测候选集合;空间运动矢量预测候选具有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与空间运动矢量预测候选集合的另一空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,该方法包括在空间运动矢量预测候选集合中包括接收的编码的像素块的邻近块。
在一些实施例中,该方法包括通过使用在与接收的编码的像素块相同的帧中的一个或者多个解码的块的运动矢量来构造空间运动矢量预测集合。
在一些实施例中,该方法包括按照预定顺序从空间运动矢量预测候选集合选择空间运动矢量预测候选作为潜在空间运动矢量预测候选。
在一些实施例中,该方法包括比较潜在空间运动矢量预测候选的运动信息与空间运动矢量预测候选集合的至多一个其它空间运动矢量预测候选的运动信息。
在一些实施例中,该方法包括检查接收的编码的像素块是否被划分成第一预测单元和第二预测单元;并且如果是这样,那么如果预测单元是第二预测单元,则从合并列表排除潜在空间运动矢量预测候选。
在一些实施例中,该方法包括:
确定将在合并列表中包括的空间运动矢量预测候选的最大数目;并且
限制在合并列表中包括的空间运动矢量预测候选的数目小于或者等于最大数目。
在一些实施例中,该方法包括:
检查在合并列表中的空间运动矢量预测候选的数目是否小于最大数目;
如果是这样,则检查潜在空间运动矢量预测候选所属的预测单元是否可用于运动预测;
如果是这样,则执行以下操作中的至少一个操作:
对于在预测单元的左侧的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-接收的编码的像素块被垂直划分成第一预测单元和第二预测单元,并且预测单元是第二预测单元;
-接收的编码的像素块被水平划分成第一预测单元和第二预测单元,并且如果预测单元是第二预测单元,并且潜在空间运动矢量预测候选具有与在预测单元之上的空间运动矢量预测候选基本上相似的运动信息;
对于在预测单元之上的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-接收的编码的像素块被水平划分成第一预测单元和第二预测单元,并且预测单元是第二预测单元;
-潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息;
对于在预测单元以上的潜在空间运动矢量预测候选的右侧的潜在空间运动矢量预测候选,如果潜在空间运动矢量预测候选具有与在预测单元之上的空间运动矢量预测候选基本上相似的运动信息,则从合并列表排除潜在空间运动矢量预测候选;
对于在预测单元的左侧的潜在空间运动矢量预测候选之下的潜在空间运动矢量预测候选,如果潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息,则从合并列表排除潜在空间运动矢量预测候选;
对于与预测单元对角邻近的潜在空间运动矢量预测候选,如果满足以下条件中的任何条件,则从合并列表排除潜在空间运动矢量预测候选:
-已经在合并列表中包括了所有其它潜在空间运动矢量预测候选;
-潜在空间运动矢量预测候选具有与在预测单元之上的空间运动矢量预测候选基本上相似的运动信息;
-潜在空间运动矢量预测候选具有与在预测单元的左侧的空间运动矢量预测候选基本上相似的运动信息。
在一些实施例中,该方法包括向合并列表中包括时间运动预测候选。
在一些实施例中,该方法包括从合并列表选择一个运动矢量预测候选以表示用于接收的编码的像素块的运动矢量预测。
在一些实施例中,根据第三方面的一种装置包括处理器和包括计算机程序代码的存储器,存储器和计算机程序代码被配置为与处理器一起使该装置:
接收包括预测单元的像素块;
确定用于像素块的空间运动矢量预测候选集合;空间运动矢量预测候选提供有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,根据第四方面的一种装置包括处理器和包括计算机程序代码的存储器,存储器和计算机程序代码被配置为与处理器一起使该装置:
接收包括预测单元的编码的像素块;
确定用于编码的像素块的空间运动矢量预测候选集合;空间运动矢量预测候选具有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,一种具有在其上存储计算机程序代码的存储介质,用于由编码器使用的计算机可执行程序代码,所述程序代码包括用于由编码器使用的指令,所述程序代码包括用于以下操作的指令:
接收包括预测单元的像素块;
确定用于像素块的空间运动矢量预测候选集合;空间运动矢量预测候选提供有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,一种具有在其上存储计算机程序代码的存储介质,用于由编码器使用的计算机可执行程序代码,所述程序代码包括用于由编码器使用的指令,所述程序代码包括用于以下操作的指令:
接收包括预测单元的编码的像素块;
确定用于编码的像素块的空间运动矢量预测候选集合;空间运动矢量预测候选具有运动信息;
从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选;
基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集;
比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息;
如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应,则从合并列表排除第一空间运动矢量预测候选。
在一些实施例中,一种装置包括:
用于接收包括预测单元的像素块的装置;
用于从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选的装置;
用于基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集的装置;
用于比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息的装置;
用于如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应则从合并列表排除第一空间运动矢量预测候选的装置。
在一些实施例中,一种装置包括:
用于接收包括预测单元的编码的像素块的装置;
用于确定用于编码的像素块的空间运动矢量预测候选集合的装置;空间运动矢量预测候选提供有运动信息;
用于从空间运动矢量预测候选集合选择第一空间运动矢量预测候选作为将包括在用于预测单元的合并列表中的潜在空间运动矢量预测候选的装置;
用于基于与第一空间运动矢量预测候选关联的块的位置确定空间运动矢量预测子集的装置;
用于比较第一空间运动矢量预测候选的运动信息与在确定的空间运动矢量预测候选子集中的空间运动矢量预测候选的运动信息的装置;
用于如果比较中的至少一个比较指示空间运动矢量预测候选的运动矢量信息相互对应则,从合并列表排除第一空间运动矢量预测候选的装置。