CN109155856B - 用于视频编解码的利用近邻块模式的运动估计的方法和系统 - Google Patents

用于视频编解码的利用近邻块模式的运动估计的方法和系统 Download PDF

Info

Publication number
CN109155856B
CN109155856B CN201680085633.4A CN201680085633A CN109155856B CN 109155856 B CN109155856 B CN 109155856B CN 201680085633 A CN201680085633 A CN 201680085633A CN 109155856 B CN109155856 B CN 109155856B
Authority
CN
China
Prior art keywords
block
neighbor
current block
current
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680085633.4A
Other languages
English (en)
Other versions
CN109155856A (zh
Inventor
邓智玭
伊娥勒·摩卡加塔
徐理东
张文豪
邱怡仁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109155856A publication Critical patent/CN109155856A/zh
Application granted granted Critical
Publication of CN109155856B publication Critical patent/CN109155856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/57Motion estimation characterised by a search window with variable size or shape
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • G06T7/238Analysis of motion using block-matching using non-full search, e.g. three-step search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

与用于视频编解码的利用近邻块模式的运动估计相关的技术。

Description

用于视频编解码的利用近邻块模式的运动估计的方法和系统
背景技术
由于不断增加的视频分辨率和对高质量视频图像的不断增长的期望,对视频的有效图像数据压缩存在很高的要求,而针对诸如VP#标准(例如,VP9)之类的现有视频编解码标准的编解码的性能受到限制。上述标准使用传统方法的扩展形式来解决压缩/质量不足的问题,但结果仍然是不足的。
这些视频编解码过程在编码器处使用帧间预测来减少时间(帧到帧的)冗余。运动估计是编码器中的关键操作。运动估计是找到被编码的帧中与参考帧的区域最相似的区域以便找到运动向量的过程。运动向量用于构造对编码块的预测。预测和真实(原始)数据之间的差被称为残差数据,并与运动向量一起被压缩和编码。
通过传统的块匹配,帧被划分为多个大小的块。将当前帧上的各个块与参考帧上的搜索窗口的一定数目的块位置或每个块位置进行比较。绝对差值的最小和(SAD)、均方误差(MSE)、或其他度量被认为是最佳匹配。虽然非常准确,但搜索会降低性能。
提高效率的一种替代策略是使用已经针对在正被预测的当前块附近的近邻块建立的运动向量。这基于这样的原理工作:彼此靠近的块更可能具有图像中相同对象的内容,因此更可能具有相同或相似的运动向量。因此,一组近邻块的运动向量的某种组合或形式通常可以用作当前块的候选运动向量。对于VP9,近邻块位置是固定的、预先确定的、并且放置在针对每个不同块大小的查找表上,这使得硬件相对于查找表上的值是固定的并且硬件在这些值改变时不能被轻易改变。此外,8×8像素的潜在近邻块必须具有:基于8×8块的运动向量(在当前块为8×8或更大的情况下)以及各自用于提供运动向量的两个4×4的近邻子块(在与要预测的小于8×8块的当前块相邻的情况下)两者。另外,近邻块模式在相对较宽的区域上延伸,该区域是在当前块左侧延伸三列,在当前块上方延伸三行。这些限制导致在近邻块操作期间要在存储器中保持大量数据,这增加了所需的存储器容量和带宽,并因此增加了存储器上所需的芯片面积,并且当这些数据由诸如加速器之类的硬件执行时,使得难以通过增加所需的逻辑、从而增加硬件的门计数(或芯片面积)(这也增加了成本)来在硬件上实现近邻块确定。
附图说明
本文所描述的材料通过示例的方式示出,而非作为对附图的限制。为了说明的简单和清楚,附图中示出的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,在认为合适的情况下,在附图中重复参考标记以指示对应或类似的元件。在图中:
图1是用于运动估计的近邻块的注释查找表;
图1A是分区帧的示意图,用于示出当前帧周围的块的编号以确定近邻块的位置;
图2A-2M是示出针对不同大小的当前块的帧分区和近邻块位置的示意图;
图3是用于视频编解码系统的编解码器的说明图;
图4是用于视频编解码系统的解码器的说明图;
图5是示出根据本文的实现方式的用于视频编解码的利用近邻块模式的运动估计过程的流程图;
图6是根据本文的实现方式使用的近邻块模式公式;
图7A-7M是示出根据本文的实现方式的针对不同大小的当前块且基于三列一行模式的帧分区和近邻块位置的示意图;
图8是示出根据本文的实现方式的包括相对于当前块的外部块的帧分区和近邻块位置的示意图;
图9A-9M是示出了根据本文的实现方式的针对不同大小的当前块且基于一列一行模式的帧分区和近邻块位置的示意图;
图10A-10B是示出根据本文的实现方式的用于视频编解码的利用近邻块模式的运动估计过程的详细流程图;
图11是用于根据本文的实现方式提供用于视频编解码的利用近邻块模式的运动估计过程的示例系统的说明图;
图12是示例系统的说明图;
图13是另一示例系统的说明图;以及
图14示出了完全根据本公开的至少一些实现方式布置的另一示例设备。
具体实施方式
现在参考附图描述一个或多个实现方式。虽然讨论了具体的配置和布置,但应理解的是,这仅出于说明性目的而进行。相关领域的技术人员将认识到,在不脱离本说明书的精神和范围的情况下,可以采用其他配置和布置。对于相关领域的技术人员来说显而易见的是,本文描述的技术和/或布置也可以用于除本文描述的系统和应用之外的各种其他系统和应用中。
虽然以下描述阐述了可以在诸如片上系统(SoC)架构之类的架构中出现的各种实现方式,但是本文描述的技术和/或布置的实现方式不限于特定的架构和/或计算系统,并且出于类似的目的,它们可以由任何架构和/或计算系统实现。例如,采用例如多个集成电路(IC)芯片和/或封装的各种架构、和/或各种计算设备和/或消费电子(CE)设备(例如,机顶盒、智能电话等)可以实现本文描述的技术和/或布置。此外,虽然以下描述可以阐述许多具体细节(例如,逻辑实现、系统组件的类型和相互关系、逻辑分区/集成选择等),但是可以在没有这些具体细节的情况下实践所要求保护的主题。在其他情况下,可能未详细示出一些材料(例如,控制结构和完整的软件指令序列)以免模糊本文公开的材料。
除非在本文指定,否则本文公开的材料可以以硬件、固件、软件、或其任何组合来实现。本文所公开的材料还可以实现为存储在机器可读介质上的指令,其可以由一个或多个处理器读取和执行。机器可读介质可以包括用于以机器(例如,计算设备)可读的形式存储或发送信息的任何介质和/或机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。在另一种形式中,非暂态物品(例如,非暂态计算机可读介质)可以与上述任何示例或其他示例一起使用,除了它不包括暂态信号本身。它确实包括除信号本身以外的那些元件,这些元件可以暂时以“暂态”的方式保持数据,例如RAM等。
说明书中对“一个实现方式”、“实现方式”、“示例实现方式”等的引用指示所描述的实现方式可以包括特定的特征、结构、或特性,但是每个实现方式可能不一定包括这些特定的特征、结构、或特性。而且,这些短语不一定指的是同一个实现方式。此外,当结合实现方式来描述特定的特征、结构、或特性时,可以提出的是,在本领域技术人员的知识内会得出这些特征、结构、或特性与其他实现方式的结合,而无论本文是否有明确描述。
下面描述与用于视频编解码的利用近邻块模式的运动估计有关的系统、物品、和方法。
如上所述,当前的视频编解码标准(例如VP9)可以通过改进运动估计来改进,使得速度和效率通过减少存储器的事务量、在运动估计期间需要存储的数据量、以及减少操作量而被增加,使得运动估计或者至少近邻块确定可以用硬件上减少的逻辑和减少的门计数来执行,从而使得这些操作能够在片上执行。
具体地,在编码器处进行帧间预测期间,应用运动估计以找到正被编码到当前帧的一部分中的帧的区域(例如,块或子块)与参考帧中的相似块之间的最佳匹配。运动向量(MV)是正被编码的块(当前块)和正被检查的参考帧中的块的空间坐标的差。利用这个过程,对运动向量以及刚刚提到的块之间的较小的差异进行编码,而非对整个帧的像素数据进行编码。应用运动估计以找到最接近或最佳匹配(或最充分的匹配)以最小化匹配过程的成本,并在用于提供高质量图像压缩的预测精度与减少压缩视频的流速或传输速度的延迟和滞后之间取得适当平衡。通常将成本计算为当前块与参考块之间的不匹配的度量与用于对运动向量进行编码的比特量的组合。
对于VP9,建立来自近邻块的预定运动向量的检查表列表。其包括与正被预测的当前块在同一帧上的多达九个空间或近邻块。还使用一个时间块,并且该时间块具有来自先前块的但与当前块在相同位置的运动向量。选择这些块的运动向量以形成两个候选运动向量(无论是单独的还是以某种组合形成这样的中值),以形成被提供用于运动补偿的候选运动向量的预测列表。此外,VP9将帧划分成各种大小的块,从64×64超级块到四叉树获得的4×4块。对空间近邻块的选择是复杂的,因为必须针对每个块大小单独确定其近邻块位置。不存在可应用于多个块大小的通用公式。
参见图1、1A和2A-2M,替代地,VP9提供传统的预定查找表(例如,表100),其中表中的每一行被提供以对应于不同大小的块,并列出要用于所指示的块大小的近邻块的固定坐标。所有坐标均基于8×8块的计数。通过将当前块大小用作准则搜索查找表100来单独获取空间近邻位置。该表已被注释为分别示出相应的块大小和图2A至2M上的相应的分区或块布置202至226。此外,如在分区示例102(图1A)上所示提供表上的坐标,其中当前块的左上8×8像素角块(无论当前块的大小是否大于8×8或者较小并且容纳在8×8块内)被认为是位置(0,0),并且其中远离(0,0)块位置的向上和向左方向是负的,并且向下和向右是正的。为清楚起见,行和列被相应地编号。下面描述的所公开的方法和系统也维持这种编号方案。
例如,在表100的顶行上列出的4×4块(并且对应于布置202(图2A))具有八个近邻块,每个近邻块位于行中所示的坐标处并且位于块布置202上。例如,由于表提供存储在片上只读存储器(ROM)中的固定近邻块模式,该近邻块模式不能被轻易地修改。为了改变表上的近邻块坐标,硬件必须由专门的制造商设备或访问程序来修改或者硬件必须被更换。这极大地限制了硬件可以被重新用于较新的近邻块模式的方式。
对于传统的块布置202至226,要预测的当前块用其大小(blk axb)和略微不同的光阴影来表示。阴影较深的数字表示针对每个块大小的近邻块位置0到7,并且对应于查找表100的每一行上从左到右的块坐标。因此,每个块大小具有八个空间近邻块。
参考图2A-2C,块布置202、204、和206具有作为8×8块的子块的当前块,其大小分别为4×4、4×8、和8×4。这些子块中的每一个都使用来自上部和左侧近邻8×8块的子块0和1的4×4块运动向量,并且与当前子块所在的8×8块相邻,如块布置202、204、和206所示。这些子块也可用于构造运动向量预测器列表,该运动向量预测器列表保持要用作候选运动向量(下面说明)的运动向量,而对于所有其他块大小,8×8近邻块的运动向量被用于构造运动向量预测器列表。为了支持这些任务,然后,可用于为(4×4)、(4×8)、或(8×4)当前子块提供4×4块近邻的8×8近邻块必须具有所存储的8×8块(粒度)运动向量以及至少两个4×4块(粒度)运动向量两者,其中该至少两个4×4块运动向量被存储在针对与要预测的4×4当前子块相邻的行和列的第一行及第一列缓冲器中。例如,假如另一个4×4块位置201与4×4当前块相邻,则8×8块必须具有两个4×4潜在近邻运动向量。这样的配置不期望地增加了用于存储器事务的存储器大小要求和带宽,导致在编码器和解码器两者处的更多延迟和更多片上存储区域,并且将子块用作近邻块和当前块的复杂性增加了用于确定运动向量的硬件逻辑的复杂性,这也增加了门计数(片上逻辑区域)、行缓冲器大小、和存储器带宽,这些都会增加货币成本。
此外,VP9和其他标准使用在正被预测的当前块旁边向左延伸三列和向上延伸三行的近邻块模式。因此,对于每个64×64超级块,本系统将这左侧三列和三行的全部运动向量存储为8×8块运动向量(具有如上所述的在第一列及第一行缓冲器中的4×4MV),以用于编码和解码两者。换句话说,为当前块存储的数据的长度至少与超级块的一侧一样长,并且对于行和列两者都需要三行缓冲器。这也增加了存储器带宽和门计数,因为要为每个超级块处理如此大量的数据,这也增加了系统的成本。
为了解决这些问题,当前公开的运动估计的方法和系统提供了运动向量预测器推导方法,其减少了存储器容量和带宽需求,同时提供了可以跟各种不同的块大小与编码器和解码器上的近邻块配置一起使用的硬件操作的灵活公式。它消除了对将块大小用作搜索准则并且列出针对每个块大小的固定近邻位置的查找表的需要。该公式用于识别针对多个或全部块大小的空间近邻运动向量(MV)位置,并已经消除了对4×4近邻块运动向量的使用。因此,现在可以仅存储和使用单个8×8运动向量粒度。本方法还将存储器行缓冲器容量要求从三个顶行减少到一行(其可以被存储在单个片外行缓冲器中),同时具有可以被存储在片上存储器中的至多三个左侧列。这导致所需存储器容量和存储器带宽的显著减少,并且减少了实现运动预测器导出硬件所需的逻辑量,从而减少了硬件的总门计数(逻辑区域)。
通过使用无论要预测的当前块的大小如何都可以使用的近邻块模式公式来实现这些特征。近邻块模式公式使用当前块的宽度和/或高度来确定相对于当前块的近邻块的位置。例如,这包括将近邻块放置在当前块的角附近或在沿着当前块的边缘的宽度或高度的中心附近的等式。细节描述如下。
现在更详细地且同时参考图3以将本方法置于情境中,示例视频编解码系统300以本公开的至少一些实现方式来布置,以利用本文所描述的近邻块模式公式来执行运动估计。在各种实现方式中,视频编解码系统300可以被配置为根据一个或多个标准来进行视频编解码和/或实现视频编解码器。此外,在各种形式中,视频编解码系统300可以被实现为图像处理器、视频处理器、和/或媒体处理器的一部分,并且进行帧间预测、帧内预测、预测编解码、和残差预测。在各种实现方式中,系统300可以根据一个或多个标准或规范(例如,VP9或其他基于VP#的标准或使用VP#标准的元素的标准,但也可以应用于H.264(MPEG-4)、H.265(高效视频编解码或HEVC)、以及相关的或被修改为与基于VP的运动估计兼容的其他标准)进行视频压缩和解压缩和/或实现视频编解码器。虽然本文中可以描述系统300和/或其他系统、方案、或过程,但本发明不一定总是限于任何特定视频编码标准或规范或其扩展。
如本文所使用的,术语“编解码器”可以指代编码器和/或解码器。类似地,如本文所使用的,术语“编解码”可以指经由编码器进行编码和/或经由解码器进行解码。编解码器、编码器、或解码器可以具有编码器和解码器两者的组件。
对于示例视频编解码系统300,系统可以是编码器,在该编码器中可以接收与视频帧序列相关的数据形式的当前视频信息以进行压缩。系统300可以将每个帧划分为更小的更易管理的单元(下面更详细地描述),然后对这些帧进行比较以计算预测。如果确定了原始块和预测之间的差或残差,则对所得到的残差进行变换和量化,然后进行熵编码并在比特流中将其发送到解码器或存储装置。为了执行这些操作,系统300可以包括输入图片缓冲器(具有可选的图片重排序器)302、预测单元分区器304、减法单元306、残差分区器308、变换单元310、量化器312、熵编码器314、以及速率失真优化器(RDO)和/或速率控制器316,以用于传送和/或管理不同的单元。控制器316管理编码的许多方面,包括基于速率失真或场景特性对以下各项的本地自适应选择以及在比特率控制被启用的情况下管理总比特率:合适运动分区大小、合适编码分区大小、预测参考类型的最佳选择、以及模式的最佳选择。
量化器312的输出还可以被提供给在编码器处提供的解码回路350,以生成与将在解码器处生成的相同的参考或重构的块、帧、或其他单元。因此,解码回路350使用逆量化和逆变换单元318和320来重构帧,并使用残差汇编器(assembler)322、加法器324、和分区单元汇编器326来重构每个帧内使用的单元。然后,解码回路350提供滤波器328以提高重建图像的质量以更好地匹配相应的原始帧。这可以包括去块滤波器、样本自适应偏移(SAO)滤波器、和质量恢复(QR)滤波器。解码回路350还可以具有解码图片缓冲器330以保持参考帧。编码器300还具有提供如下所述的候选运动向量的运动估计模块或单元332、使用候选运动向量的运动补偿模块334、以及帧内预测模块336。运动补偿模块334和帧内预测模块336两者都可以向预测模式分析器和选择器338提供预测,选择器338为特定块选择最佳预测模式。如图3所示,然后将预测块形式的选择器338的预测输出提供给减法单元306以生成残差,并且在解码回路中提供给加法器324以将预测添加到来自逆变换的残差以对帧进行重构。
更具体地,可以将像素数据帧形式的视频数据提供给输入图片缓冲器102。缓冲器102以输入视频序列的顺序保持帧,并且可以按照它们需要被编解码的顺序来从缓冲器中获取帧。例如,后向参考帧在它们针对其作为参考的某帧之前被编解码,但在该帧之后被显示。输入图片缓冲器还可以为帧分配诸如I帧(帧内编码)、P帧(帧间编码,从先前参考帧预测出的)、和复合帧(帧间编码帧,其是两个参考帧的平均值)之类的分类。在I帧中,使用空间预测,并且在一种形式中,仅使用帧本身中的数据。在P帧中,可以通过估计帧之间的运动来进行时间(而非空间)预测。
关于对帧的划分,当VP9类型的标准被使用时,预测分区器单元104可以将帧分割为非常大的图块(tile)(例如,3个块到一帧,其可以被编码器使用或不使用),以及将这些图块分割成超级块(64×64)作为编码器的帧的主分割。可以使用四叉树衍生的分割,并且如所提到的,包括水平和垂直分割。这种分割可以包括32×64、64×32、32×32、32×16、16×32、16×16、8×16、16×8、8×8、8×4、4×8、以及4×4的块大小。8×8块是帧间预测期间运动向量的基础。然而,应注意的是,前述仅是示例性分割,并且许多其他实施例可以应用HEVC分割,例如,LCU、PU、CU等。如本文所使用的,术语“块”本身并不一定指任何特定大小或形状的块。
同样在视频编解码系统300中,可以将当前帧分割成可以被提供到运动估计单元或估计器332的分区。系统300可以以栅格或不同的扫描顺序或并行对角线波形处理顺序来处理图像的指定单元中的当前帧,其中当前块可以使用已在当前块的上方和左侧的块中建立的运动向量。为此目的,可以提供近邻块运动向量缓冲器333以保持来自先前预测的块(处于可能是正被分析的当前块的近邻块的区域中)的运动向量。如下所述,该缓冲器333的所需容量已被大大减小,并且缓冲器的一部分(例如,当前块左侧至多三列)可以在内部或片上,并且缓冲器的一部分(例如,针对单行或行缓冲器)可以在外部的或片外。当视频编解码系统300以帧间预测模式操作时,运动估计单元332可以响应于当前视频帧和参考视频帧而生成一个或多个运动向量。通过使用本文所描述的近邻块的运动向量来补充的基于块的搜索方法可以被用于将当前帧的块与参考帧上的候选块进行匹配,从而确定要针对预测块编码的运动向量。
通过类似于VP9的一个示例,并且如本文所布置的,存储在例如ROM中的近邻块模式公式335可以或可以不由固件或固定功能硬件操作,并且可以用于计算相对于帧上的当前块的空间近邻运动向量位置,如下面详细解释的。在检查表上列出至多九个(或其他数目的)空间近邻块的相邻块位置。逐块地查看检查表以确定哪些块具有运动向量。然后可以将检查表上的近邻块的运动向量逐个地放置在MV预测器列表中,该MV预测器列表保持至多两个候选MV以传递到运动补偿器以用于预测。通常,预测器列表从检查表和一个时间MV按照公式所提供的顺序来填充,并且当在预测器列表上的空间变得可用时,并且通过一种形式,在使用找到的最新(latest)空间MV和时间MV之间交替。可替代地,不止一个参考(例如,三个)可以被引用以用于时间块。
如上所述,预测器列表可以包括被称为最近(nearest)MV(其是列表上的第一MV)以及较近MV(其是列表上的第二MV)的两个MV候选。新的MV是最近MV加上在块搜索中导出的增量(delta)MV。此外,根据在运动补偿器模块334处获取MV以进行预测的时间,空的空间可以用零MV(ZMV)填充,其中零MV指的是从参考块到当前块没有运动(即,MV是(0,0))。
然后,运动补偿模块334可以使用参考视频帧和由运动估计模块332从预测列表提供的两个候选运动向量来向运动补偿器提供多个候选运动向量,以提供用于由模式选择器进行的选择的替代预测。许多选择都是可能的。
然后可以在减法器306处从当前块中减去预测块,并且将得到的残差提供给残差编解码分区器308。编解码分区器308可以将残差划分为一个或多个块,并且通过VP9的一种形式,将预测分区进一步分割为变换分区(例如,32×32、16×16、8×8、或4×4),其可以是与预测(或运动)分区大小不同的分割大小。例如,使用可变块大小离散余弦变换(VBS DCT)和/或4×4离散正弦变换(DST)将相关块或单元变换为系数。通过使用由控制器316设置的量化参数(Qp),量化器312然后对系数使用有损重采样或量化。所生成的经量化的变换系数集合可以由熵编解码模块314重排序和熵编码,以生成由视频编解码系统300所提供的压缩比特流(例如,网络抽象层(NAL)比特流)的一部分。在各种实现方式中,除了用于对每个块进行解码的辅助信息(例如,预测模式、量化参数、运动向量信息、分区信息、循环滤波信息等)之外,由视频编解码系统300提供的比特流可以包括熵编码系数,并且可以被提供给如本文所述的其他系统和/或设备以用于传输或存储。
量化模块312的输出还可以被提供给解量化单元318和逆变换模块320以用于解码回路350。解量化单元318和逆变换模块320可以实现由变换单元310和量化模块312进行的操作的逆操作。然后,残差汇编器单元322可以重构残差。然后,残差汇编器单元322的输出可以在加法器324处与预测帧组合以生成粗略的重构块。然后,分区单元汇编器326重建分区以完成帧重建。
然后,通过使帧经过滤波器328来改进重构帧的质量。经滤波的帧被提供给解码图片缓冲器330,其中帧可以用作参考帧以构建用于运动估计和补偿的相应预测,如上所述以及如下所述。当视频编解码系统300在帧内预测模式下操作时,帧内预测模块336可以使用当前帧的重建像素来进行帧内预测方案,这将不在本文中更详细地描述。
在一些示例中,为了清楚起见,视频编解码系统300可以包括图3中未示出的附加项。例如,视频编解码系统300可以包括处理器、射频类型(RF)的收发器、分路器和/或多路复用器、显示器和/或天线。此外,视频编解码系统300可以包括附加项,例如,扬声器、麦克风、加速计、存储器、路由器、网络接口逻辑等。
参考图4,系统400可以具有或可以是解码器,并且可以以比特流402的形式接收经编解码的视频数据。系统400可以用熵解码模块404来处理比特流以提取经量化的残差系数以及运动向量、预测模式、分区、量化参数、滤波器信息等。然后,系统400可以使用逆量化模块404和逆变换模块406来重建残余像素数据。然后,系统400可以使用残差编解码汇编器408、用于将残差加到预测块的加法器410、以及分区单元汇编器412。系统400还可以使用解码回路对得到的数据进行解码,取决于在比特流402的语法中指示并且经由预测模式开关或选择器(其也可以被称为语法控制模块)422实现的编解码模式,解码回路采用包括帧内预测模块420的第一路径或者包括一个或多个滤波器414的第二帧间预测解码路径。第二路径可以具有解码图片缓冲器416,用于存储重构的且经滤波的帧以用作参考帧并发送重构帧以供显示或存储,以用于稍后查看或供另一应用或设备使用。运动补偿预测器418利用来自解码图片缓冲器416的重构帧以及被存储在包括候选近邻块运动向量的运动向量缓冲器417中的来自比特流的运动向量来重构预测块。
替代地,解码器400可以具有运动估计能力并且还具有其自己的运动估计单元413。在这种情况下,运动估计单元413可以具有近邻块运动向量缓冲器415以存储可以用作近邻块(例如,三列和一行)的区域中的潜在近邻块的运动向量,并且可以具有如上针对编码器所描述的部分片上和部分外部的存储器。同样如针对编码器所提到的,编码器处的运动估计器413也具有或者可以访问与编码器一样的被存储在ROM中的近邻块模式公式419。在这种情况下,解码器还确定当前块的近邻块位置,列出检查表上定位的块,确定检查表上的哪些块具有运动向量,并将找到的运动向量中的两个放置在候选运动向量的预测列表上。然后,运动补偿预测器418使用候选运动向量来形成预测。
预测模式选择器422使用该预测并为每个块设置正确的模式。除了下面详细描述的运动估计单元332和413之外,本文所描述的系统300和400的模块的功能在本领域中是公认的,并且在此不再详细描述。
现在参考图5,根据本公开的至少一些实现方式来布置示例过程500。通常,过程500可以提供计算机实现的用于视频编解码的利用近邻块模式进行运动估计的方法。在示出的实现方式中,过程500可以包括由均匀编号的操作502至508中的一个或多个所示的一个或多个操作、功能、或动作。作为非限制性示例,本文将参考关于以上图3-4所讨论的操作来描述过程500,并且可以关于下面讨论的示例系统300、400或1200进行讨论。
过程500可以包括“接收多个像素数据帧”502,并且具体在编码器上的解码回路内的运动估计单元处,编码器从缓冲器330接收重构的且经滤波的参考帧以及要编码的当前帧的数据。这还包括定义每个帧上的分区或块的数据。
过程500还可以包括“确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选”504。因此,在帧间预测期间,运动估计涉及通过块匹配技术来确定在当前帧上的当前块与参考帧上的匹配的参考块之间延伸的运动向量。为了减少由于其繁重的计算负荷和时间消耗而导致的块匹配量,可以使用来自先前分析的块的运动向量来确定当前块的运动向量。通过一种形式,这可以包括从相对于当前块的近邻块确定一组运动向量。当这些近邻运动向量中的任何一个被放置在当前块的预测列表上时,则该运动向量变为候选运动向量,候选运动向量可以被提供给运动补偿模块以确定针对当前块的预测,如本文已经说明的。
然后,过程500可以包括“通过使用近邻块模式公式计算相对于当前帧上的当前块的位置的至少一个近邻块坐标并且使用基本上相同的近邻块模式公式而不管当前块的大小如何,来确定与当前块相同的帧上的空间近邻块位置”506。因此,代替将当前块大小用作搜索准则并且列出针对每个当前块大小的固定坐标值的查找表,提供了近邻块模式公式,其具有用于计算近邻块的一个或多个坐标的等式,其中在该公式中存在至少一个用于计算坐标的等式。通过下面描述的一个示例形式,该公式提供了近邻块0到8的坐标,其中七个近邻块具有通过等式计算出的一个坐标。举一个例子,计算出的坐标是基于当前块的宽度或高度的,如按当前块内的8×8块的数目所计数的。通过另一种形式,等式将近邻块与当前块的角或边缘对齐,或者与当前块的一侧的中心对齐。这显著增加了操作该公式的固定功能硬件或固件的灵活性。其他示例都是可能的,并且细节在下面提供。
过程500还可以包括“使用在通过使用至少一个近邻块坐标确定的位置处的近邻块的运动向量来确定当前块的至少一个运动向量”508。如针对VP#类型的编解码标准所解释的,一旦确定了近邻块的坐标,就可以将近邻块位置放置在检查表上。逐个地查看检查表上的块位置,直到找到具有该近邻块的运动向量的块并从存储器(例如,RAM或高速缓存)中获得该块。然后,当在预测列表上有空间开放并且保持两个候选运动向量时,近邻块运动向量可以按照所获得的顺序被放置在预测列表上,其中,所述两个候选运动向量可以包括例如当前块的最近、较近、新、和/或ZMV运动向量。可以将这两个候选运动向量提供给运动补偿单元,以确定当前块的预测数据。应理解的是,也可以使用不同的视频编解码标准。同样如上所述,一旦确定了预测,就将其提供给模式选择器,并且如果被选择,则与实际块不同,残差被编码并与运动向量一起被发送到解码器。此后,解码器可以通过使用找到近邻块并将它们的近邻运动向量提供给预测列表的运动估计器来重建帧或者替代地通过发送和使用候选运动向量和残差来重建帧,使得随后该帧可以被显示或存储。因此,可以说,可以使用近邻运动向量模式公式来对帧进行编码或解码或两者都进行,并且然后显示该帧。
本文所解释的一些其他特征包括:使用仅存储基于8×8块(即使针对小于8×8的子块)的运动向量以及用于搜索的有限的近邻块区域,用于放置当前块左侧的至多三列以及针对一个行缓冲器的一个顶行的近邻块,其中这三列可以被放置在片上存储器中而该一个行缓冲器可以被放置在外部存储器(其中外部是相对于芯片、裸片(例如,SoC))上。
现在参考图6,与公式335和419一样,一个示例近邻块模式公式600列出了坐标或用于确定近邻块0到8的坐标的等式,以及每个近邻块的水平和垂直坐标两者。坐标系保持如系统102(图1A)所解释的,其中当前块上的左上8×8块是坐标系的(0,0)点。公式600以伪代码形式示出。在每个块或分区布置702至726(图7A至7M)上示出了每个近邻块0至8的位置。
示例公式600首先包括要在等式中使用的两个常数,包括当前块的宽度(num_8x8_blocks_wide),其是沿着当前块的一侧的8×8块的计数,或一侧的像素数(bw)除以8(这里被示出为位移>>3)。另一个常数是相似的,只是在高度或y方向上,用于建立当前块的高度(num_8x8_blocks_high)。接下来,可以提供公式600上的行以确定针对每个近邻块0到8的x和y方向两者上的坐标。当当前块的侧边小于一个块时(例如,以4×4、4×8、或8×4子块),短边的宽度和/或高度被设置为1。
从近邻块0开始,高度坐标(或行号)是(当前块高度-1),并且宽度坐标(或列号)是-1。这将0近邻块沿着当前块的左边缘放置在当前块的左下角旁边并与当前块的下边缘对齐(在布置726上的块0处最清楚地示出(图7M))并且这个位置被称为“左”位置。
对于近邻块1,行坐标为-1且列坐标为等式(当前块宽度-1),其将1近邻块沿着当前块的上边缘定位于当前块的右上角旁边并与当前块的右边缘对齐(参见布置726上的块1(图7M))。这个位置被称为“顶”位置。
对于近邻块2,行坐标为-1,列坐标为等式(当前块宽度-1)除以2(被示出为位移>>1),其将2近邻块定位于当前块的宽度的中心并沿着当前块的顶边缘(参见布置726上的块2(图7M))。这个位置被称为“顶中心”位置。
对于近邻块3,行坐标除了针对高度之外与块2类似,是等式(当前块高度-1)除以2,并且列坐标是-1。这将3近邻块定位于当前块的左侧的中心并且沿着当前块的左边缘(参见布置726上的块3(图7M))。这个位置被称为“左中心”位置。
对于近邻块4,坐标是(-1,-1),其接触当前块中的(0,0)块的左上角并与其对角,并且这个位置被称为左上位置(参见布置726上的块4(图7M))。
对于近邻块5,行坐标为-1,并且列坐标等于当前块宽度(num_8x8_blocks_wide)。这将5近邻块定位于与当前块的右上角对角并沿着当前块的上边缘。该位置被认为是外部位置,因为它位于保持当前块的(一个或多个)列之外,并且该位置被称为“右上”位置(参见布置726上的块5(图7M))。
对于近邻块6,列坐标为-1,行坐标等于当前块高度(num_8x8_blocks_high)。这将6近邻块定位于与当前块的左下角对角并沿着当前块的左边缘。该位置也被认为是外部位置,因为它位于保持当前块的(一个或多个)行之外,并且该位置被称为“左下”位置(参见布置726上的块6(图7M))。
对于近邻块7,行坐标为-1,列坐标为-3。该位置被称为第三近邻列中的左上(或最左上)位置(参见布置726上的块7(图7M))。
对于近邻块8,行坐标是(num_8x8_blocks_high-1),并且列坐标是-3。该位置被称为第三近邻列中的左(或仅最左)位置(参见布置726上的块(图7M))。
一旦获得运动向量,公式中的近邻块的顺序被维持为空间近邻检查表,并且以该顺序被提供给预测列表(除非近邻运动向量被如下所述地组合),因此它是先进先出(FIFO)的。所选择的用于从检查表中选择MV来放置在预测列表中的顺序被编码器和解码器两者使用。从检查表中选择MV以用于预测列表是通过使用已知准则来执行的,并且在下面用过程1000更详细地解释。
因此,公式中的近邻块位置的顺序被设置为从最重要的第一个到最不重要的最后一个,因为近邻块以及它们的MV是按FIFO顺序选择的。应理解的是,当需要其他顺序时,也可以改变公式内的近邻块位置0到8的顺序。
此外,公式600仅是一个示例,并且可以使用与该示例不同的许多示例,包括添加或移除在公式600中列出的任何近邻块位置或者使用不同的位置的那些示例。通过一个替代示例,仅使用近邻块0到7。通过另一个示例,最左位置7和8被移除并且更多中心位置(被称为左/2(或L/2)和顶/2(或T/2))被添加,其中对于8×8的当前块,L/2=8/2=行4,并且T/2=8/2=列4,如布置726所示。许多其他变化也是可能的。
参考图7A-7M,对于一个示例,在类似于VP9的标准中,为每个可用块大小提供近邻块布置或模式,并且使用公式600将近邻块按编号放置在每个布置702到726上,其中针对布置的当前块和它的大小被指定为blkaxb(例如,blk4x4)。在缺少近邻块位置的情况下,将后面的近邻块移除,因为其与已经在该布置上的另一个较早的近邻块重复。例如,参考布置712(图7F),近邻块3丢失,因为该近邻块的坐标是(0,-1)且当前块高度是1,这意味着行位置是行0(根据公式(1-1)/2=0)(因为当前块是16×8)。近邻块0已具有坐标(0,-1),所以不使用近邻块3并且将其丢弃(如果计算了的话)。
还将注意到的是,所有布置702至726保持在这样的区域内:当前块上方一行并且紧邻当前块左侧的至多三列。它可以是一个或另一个,但在这里两个限制都被使用。模式空间的这种减少显著减少了对近邻块的存储器访问,因为在确定近邻块位置时为模式空间存储了所有可能的空间近邻。这种模式消除了两个完整的顶行。所需存储器容量的减少准许至多三列被放置在片上存储器上。这可能会增加片上区域(或门计数),但不会对存储器带宽产生严重的负面影响。通常,增加片上存储器优选于增加行或运动向量缓冲存储器。然而,一个顶行行缓冲器仍然存储在片外或外部存储器中以能够容纳较大的帧宽度(例如,用于8K视频的超高清片段)。缓冲器行可以存储与当前块相同宽度的块加上一个外部块(公式上的位置5)的MV。然而,将区域从三行减少到单行缓冲器仍然显著减小了存储器大小和带宽要求。应理解的是,替代地,可以修改公式以与其他替代近邻块区域(例如,至多(1、2、或3)列和3行区域)或其他减少的区域(例如,1列和上方3行)一起使用,只要当前块仍然具有足够的先前分析的块,这些块具有在当前块上方和左侧的运动向量。
参考图7A-7C中,子块布置702至706示出了子块大小(4×4、8×4、4×8)的当前块都具有8×8的近邻块。如上所述,这通过消除先前存储的针对每个8×8块的两个4×4块运动向量来显著减少所存储的数据量。
参考图8,示出了针对32×32当前块804的块布置或模式800,其形成64×64超级块802的右上象限,使得针对当前块804确定的近邻块5位置在超级块802的列和行的外部并且在超级块的右侧(它不在超级块的左侧或上方)。在这种情况下,近邻块5(或该位置)被认为是不可获得的或不可用的,并且在该近邻块被列在检查表上并且超过当前超级块列(如图所示)时不被检查。这样做是为了维持成角度(例如,45度)的波前平行度,用于连续地提供在当前块上方和左侧的先前分析的块。
参考图9A-9M,示出了另一种可能的替代公式,其中公式以及检查表仅包括近邻块位置0至6(如公式600中所定义的),它们保持在与当前块相邻的仅一行和一列的近邻块区域内。布置902至926示出了这将如何应用于各种块大小,其中在每个布置上当前块被指定为blkaxb。该选项还包括上文的特征,即,完整的8×8块被用作子块的近邻块(图9A-9C),使得基于8×8块的运动向量被放置在子块的检查表上。利用这种配置,仅需要存储第一行和第一列以确定针对当前块的近邻块位置和运动向量。如上所述,这显著地减少了所需的存储器容量和带宽,以及芯片尺寸(门计数)。
现在参考图10A-10B,根据本公开的至少一些实现方式来布置详细示例运动估计过程1000。通常,过程1000可以提供利用近邻块模式公式的另一种计算机实现的运动估计方法以用于视频编解码。在所示的实现方式中,过程1000可以包括由均匀编号的操作1002至1036中的一个或多个所示出的一个或多个操作、功能、或动作。作为非限制性示例,本文将参考关于图3-9M和12讨论的操作来描述过程1000,并且可以参考下面讨论的示例系统300、400、和/或1200以及近邻块模式公式600来讨论过程1000。
过程1000可以包括“获得帧的图像数据”1002,并且具体地,获得要编码的帧的色度和亮度像素数据以及如上所述的重构的参考帧。这还可以包括获得指示每个帧上的分区(或块)位置的数据。本文中,术语分区和块可互换使用。
过程1000可以包括“确定在帧的左上角的(一个或多个)第一行和(一个或多个)第一列的块的运动向量”1004。因此,对于将波前并行处理用于近邻块运动向量使用的系统,该过程仍然可以从至少沿着帧的左边缘和顶边缘进行块搜索以推导新的运动向量开始。该过程通常可以通过在帧的左上角的第一块上使用ZMV开始,然后在相邻的左侧和下侧块上执行新的块匹配搜索;或通过使用第一块的ZMV或两者而开始。该过程形成块的平行的、成角度的波前,其可以使用先前分析的上侧块和左侧块来确定波前上的当前块的运动向量和其他数据。一旦已经分析了足够数量的块并且已经确定了运动向量(例如,当三个左侧列和一个顶行被处理并且可用作近邻块时),则该过程可以切换到近邻块运动向量推导。
过程1000可以包括“针对第一分区将分区设置为p=0并且针对最后的分区将分区设置为MAX P”1006。该操作启动用于该过程的分区或块计数器并且可以保存要针对近邻块MV分析的帧上的最大分区数目。其他替代方案也是可能的。
过程1000可以包括“全部或部分地将相对于分区p的至多三个左侧列和一个上侧行进行缓冲”1008,并且特别地将分区的可用或可允许的近邻块模式区域放置在可访问的存储器中以获取近邻块的MV。如上所述,该区域可以包括与要分析的当前块(或分区)相邻的三个左侧列和一个顶侧行。该区域被减小以便减少所需的存储器容量和带宽,使得针对至多三个左侧列的缓冲器可以甚至被放置在芯片上,但针对单个顶行的单行缓冲器仍然被放置在外部存储器上。如上所述,这还可以减少存储器硬件区域。通过另一替代方案,仅将与当前块相邻的一行和一列用作区域,并且也可以存在其他替代方案。
过程1000可以包括“使用不管当前块大小如何的近邻块模式公式来确定相对于分区p的近邻块位置”1010。具体地,可以提供近邻块模式公式(例如通过一个示例的公式600),并列出坐标或用于计算在该公式中列出的每个近邻块位置的坐标的等式。公式可以按特定顺序列出近邻位置,并且将其提供在检查表中,并且按照该顺序检查这些近邻位置以放置到预测列表上。该公式可以包括与公式600中相同的近邻块位置列表、或它们的任何组合、或具有完全不同位置的列表,只要通过使用公式中的等式来计算至少一个近邻块位置的至少一个坐标并且该等式应用于多个分区(或当前块)大小即可。示例公式600使用针对七个坐标的等式。
因此,该操作1010可以包括“基于p中的8×8块的数目来设置分区宽度(num_8x8_blocks_wide)和分区高度(num_8x8_blocks_high)”1012。通过一个示例,用于计算坐标的公式中的等式是基于分区的宽度或高度的,但它也可以是基于某其他尺寸(例如,面积)的。宽度和高度以8×8块的数目(或像素数除以8)来测量。该操作还可以包括“将宽度和/或高度(bw或bh)<8设置为1”1014,这指的是针对每个子块(4×4、4×8、或8×4)的小于8像素的那一侧使用宽度和高度1。这准许将完整的8×8块位置用作子块的近邻块,使得仅需要将基于8×8块的MV存储在存储器中,从而显著减少确定近邻块MV所需的存储器和硬件的量,如上所述。
过程1000可以包括“使用分区宽度和/或分区高度来计算近邻块坐标”1016。同样如上面使用公式600所述,宽度和高度可以用在等式中以将近邻块放置在分区(当前块)的角落,例如,针对公式600上的近邻块0或1,提供等式:
((宽度或高度)-1) (1)
或者在沿着分区的左边缘或顶边缘的中心处,例如,针对公式600上的近邻块2或3,使用:
((宽度或高度)-1)/2 (2)
或者针对分区(当前块)的列和行外部的位置(例如,公式600上的近邻块5或6),其是宽度或高度本身的值。然而,应理解的是,通过使用当前块的宽度或高度或通过使用另一个尺寸,也可以确定许多其他位置。
过程1000可以包括“消除重复位置”1018,并且如针对较小的当前块所提到的,根据公式确定的两个近邻块位置可能是帧上的同一位置。通过一种形式,后面的近邻块被从检查表中删除或被忽略。
可选地,过程1000可以包括“消除在波前并行允许位置之外的位置”1020,并且如布置800所解释的,在当前分区的超级块外部的块被标记为不可用并且可以被从检查表中丢弃,使得用于平行的、成角度的波前的计算保持一致并且不包括例如更可能注入不准确性的块。
过程1000可以包括“将近邻块位置放置在检查表上”1022,因此,一旦通过使用该公式设置了8×8近邻块位置中的一个,则就将该8×8位置添加到检查表中。此后,检查检查表以确定哪些近邻块位置具有运动向量并因此可用于放置在预测列表上。因此,过程1000可以包括“确定检查表上的哪些近邻块位置具有运动向量”1024。将认识到的是,在一些情况下,一些位置可能不具有运动向量,诸如那些是跳过位置或者是例如帧内编码的位置。一旦确定哪些近邻块位置可用(具有运动向量),该过程就将这些运动向量中的两个放置在预测列表上。以与公式中设置的顺序相同的顺序检查近邻块位置,并以FIFO方式检查。如果某个位置没有运动向量,则将其丢弃并分析下一个位置。
应理解的是,除了单个近邻块运动向量之外,近邻块运动向量可以在被放置到检查表之前或者在被放置到预测列表之前被组合。因此,通过一种形式,分区可以具有被放置在检查表中的其近邻块的中值运动向量。许多其他替代方案也是可能的。
过程1000可以包括“选择(一个或多个)运动向量作为用于分区p的预测列表上的候选运动向量”1026。对于该操作,并且类似于VP9标准,运动向量(MV)预测器列表可以包括两个MV,并且在一种形式下,仅包括两个MV。从如刚刚所解释的从近邻块中获得的九个空间近邻MV和一个时间MV中选择两个MV。预测器列表通过以下过程来填充:
a.首先,逐个执行对(从同一参考图片延伸的)九个空间MV的检查,并且将可用的MV插入到MV预测器列表中。如果MV预测器列表已满,则停止检查。
b.如果MV预测器列表未满,则检查使用相同的参考帧的来自先前帧的并置MV。
c.如果MV预测器列表仍未满,则逐个检查(不同参考图片的)九个空间MV。
d.如果MV预测器列表仍未满,则检查利用不同参考的来自先前帧的并置MV。
e.如果MV预测器列表仍未满,则用零(0,0)MV填充空位。
在VP9编解码器中,MV预测器列表中的第一个MV被称为最近MV,而预测器列表中的第二个MV是近MV。新的MV等于最近MV加上增量MV,其中增量MV是根据块匹配搜索推导出的。
应理解的是,这里可以使用用于使用近邻块运动向量的其他标准和其他算法,例如使用HEVC,其中为单个帧提供替代分区并且可以通过使用帧间预测来进行比较。其他示例算法和方法也可以与其他视频编解码标准一起使用。
过程1000可以包括“提供用于运动补偿和模式选择的候选运动向量”1028,并且一旦运动向量是预测列表上的候选运动向量,就可以将其提供给运动补偿器以确定针对每个运动向量的替代预测。然后,将每个预测提供给模式选择器,以基于对预测残差进行编解码的准确度和/或成本来选择最佳预测。然后从帧的原始数据中减去获胜预测以生成残差,并且残差以及相应的运动向量被编码并被发送到解码器。通过一种形式,所有候选运动向量及其预测被发送到解码器,使得解码器处的选择器也可以在候选运动向量中进行选择。
然后,过程1000可以包括查询“p=MAX P?”1030以确定是否已到达最后一个分区。如果不是,则过程1000可以包括“设置p=p+1”1032,以将分区器计数器向上计数一,然后可以获得下一个分区p(1034)。重复该过程直到获得并分析最后一个分区Max P。然后,过程1000可以包括“针对各个帧进行重复直到帧序列结束”1036。一旦分析了最后一帧,该过程就结束。
现在参考图11,系统1200可以用于利用近邻块模式公式进行运动估计以用于视频编解码的示例性过程1100,其中该过程按操作被示出并且根据本公开的至少一些实现方式来布置。在所示出的实现方式中,过程1100可以包括一个或多个操作、功能、或动作(如由均匀编号的动作1102至1132中的一个或多个所示)并且替代地以任何组合使用。作为非限制性示例,本文将参考关于本文所描述的任何实现方式所讨论的操作来描述过程1100。
在所示出的实现方式中,系统1200可以包括具有逻辑单元或逻辑电路或模块1250等和/或它们的组合的处理单元1220。例如,逻辑电路或模块1250可以包括具有运动估计单元1252的视频编码器300并且可选地包括具有估计单元1254的解码器400,视频编码器300执行与近邻块模式公式1208以及如上所述的对近邻块位置的确定相关的许多操作,并且可选地视频解码器400也执行这些操作。尽管如图12所示,系统1200可以包括与特定模块相关联的一组特定操作或动作,这些操作或动作可以与不同于这里示出的特定模块的模块相关联。
过程1100可以包括“获得原始帧和重构帧的视频数据”1102,其中系统(或者具体地,编码器处的运动估计单元)可以获得对重构帧的像素数据的访问。可以从RAM或ROM;从在系统1200或1300上描述的另一永久或临时存储器、存储器驱动器、或库;或者从图像捕获设备获得或读取数据。例如,访问可以是用于分析正在进行的视频流的连续访问。然后,过程1100可以包括“获得包括分区数据的(重构帧的)当前帧和参考帧数据”1104,使得在运动估计搜索期间可以将要编码的块匹配至参考块。
过程1100可以包括“缓冲相对于当前块的至多三个左侧列或三行,以及一个相对的行或列”1106,并且如上所述,以具有可以被用作近邻块MV的所有或大多数运动向量。如上所述,可以使用至多三列来提供在片上存储器上的列缓冲器。同样如上所述,这是一个替代区域,也可以使用其他区域,例如具有一行和一列的布置902至926(图9A-9M)所示的区域。
过程1100可以包括“获得块宽度和高度”1108,并且还如上所述,该块宽度和高度被计算为当前块一侧的8×8块的数目。
过程1100可以包括“通过使用相同的公式(不管当前块大小如何)且使用当前块宽度或高度或两者来使用近邻块模式公式计算近邻块的坐标以确定相对于当前块的近邻块位置”1110。因此,等式使用当前块的宽度或高度作为等式中的变量来确定近邻块位置的坐标。以这种方式,公式不限于任何特定的块大小,并且通过一种形式,近邻块位置都不受块大小的限制。细节如上所述。
过程1100可以包括“通过将1用作针对当前块的小于8像素的宽度或高度的子块宽度或高度或两者来计算8×8子块的近邻块”1112,并且如上所述,现在子块使用完整的8×8近邻块,因此不再需要存储基于4×4块的MV,从而减少存储器和硬件要求,如上所述。
过程1100可以包括“在相对于当前块的至多三个左侧列或三行以及一个相对的行或列上选择近邻块”1114,并且再次,用于近邻块的可允许区域相对于传统区域是减少的,从而减少存储器和硬件需要,如上所述。另一个选项被提供为一行和一列,但也可以使用其他区域配置。
过程1100可以包括“使用所定位的近邻块的运动向量来确定候选运动向量以由运动补偿器用来向模式选择器提供针对当前块的(一个或多个)预测”1116。如上所述,使用VP9,针对当前块的检查表上的九个运动向量中的两个以及作为时间块的一个块被选择以被放置在候选运动向量的预测列表上以提供给运动补偿器,如上所述。
过程1100可以包括针对帧的下一个分区(如果存在的话)重复该过程的这部分1117,直到所有或多个分区已被分析为止,并且这可以针对要通过帧间预测分析的视频序列中的每个帧重复。
然后,过程1100可以继续并且包括“基于模式选择确定残差,生成和发送具有编码数据的比特流”1118,这包括帧数据、残差数据、和运动向量数据的传输,其中运动向量数据包括被选择作为候选并被放置在预测列表上的近邻运动向量。
然后可以提供解码器200以“解码帧数据、残差、和运动向量”1120,其通过一种形式,包括在解码器处预先存储近邻块模式公式或者将公式与图像数据一起发送到解码器,使得解码器可以根据所生成的近邻块运动向量检查表执行候选运动向量生成。换句话说,过程1100可以重复(1122)所示的操作1108至1117以在解码器处通过使用所存储的近邻块模式公式来生成候选运动向量。因此,这可以包括使用公式来确定近邻块位置、将该位置放置在检查表上、检查检查表上的位置以确定哪些位置具有运动向量、然后(与编码器预测列表一样,当预测列表上的空间变得可用时)使用该公式的顺序或其他设置顺序来将近邻块运动向量放置在预测列表上。
然后,下一个操作是“通过使用运动向量来使用运动补偿构造预测块”1124,并且“将残差添加到预测块以形成重构块”1126。然后,过程1100可以继续“将重构帧用作参考帧以用于运动补偿”1128,并且“针对多个帧进行重复直到序列结束”1130。还可以提供重构帧以用于显示和/或存储1132。
通常,诸如编码器300和解码器400所使用的逻辑单元或逻辑模块可以至少部分地由硬件、软件、固件、或它们的任何组合来实现。如图所示,在一些实现方式中,编码器和解码器300/400可以经由(一个或多个)处理器1203来实现。在其他实现方式中,编解码器300/400可以通过经由一个或多个其他中央处理单元实现的硬件或软件来实现。通常,可以在系统级别启用编解码器300/400和/或本文讨论的操作。然而,例如,可以在用户级别提供或调整用于在编码回路中启用运动估计和/或以其他方式控制所使用的压缩方案或压缩比的类型的一些部分。
应理解的是,可以在使用替代搜索策略的系统上提供该近邻块使用,其中该策略仅仅是所使用的一个选项,或者其中使用一组不同的运动估计过程并且最终使用具有最佳结果的那个来用于编码,或者其中将来自多个搜索过程的结果进行组合(例如,均值或中值),然后使用组合结果。这可以包括直接方法(例如,具有替代搜索模式布置的基于块的搜索、和/或基于相位相关、频域、像素递归和/或光流的算法)和/或间接方法(例如,角检测、对象跟踪、和其他基于统计函数的算法)。
虽然示例性过程500、1000和/或1100的实现方式可以包括以所示出的顺序进行所示所有操作,但本公开不限于此方面,并且在各种示例中,本文中的任何过程的实现方式可以包括仅进行所示操作的子集和/或以与所示顺序不同的顺序进行。
在实现方式中,可以响应于由一个或多个计算机程序产品提供的指令来进行本文所描述的特征。这样的程序产品可以包括提供指令的信号承载介质,这些指令在由例如处理器执行时可以提供本文所描述的功能。计算机程序产品可以以一个或多个机器可读介质的任何形式提供。因此,例如,包括一个或多个处理器核的处理器可以响应于由一个或多个机器可读介质传送到处理器的程序代码和/或指令集而进行本文所描述的一个或多个特征。通常,机器可读介质可以以程序代码和/或指令或指令集的形式传送软件,其可以使本文所描述的任何设备和/或系统实现本文所描述的特征的至少一部分。如前所述,在另一种形式中,非暂态物品(例如,非暂态计算机可读介质)可以与上述任何示例或其他示例一起使用,除了它不包括暂态信号本身之外。它确实包括除信号本身以外的那些元件,这些元件(例如,RAM等)可以以“暂态”方式暂时地保持数据。
如在本文所描述的任何实现方式中所使用的,术语“模块”指的是被配置为提供本文所描述的功能的软件逻辑、固件逻辑、和/或硬件逻辑的任何组合。软件可以体现为软件包、代码和/或指令集或指令,并且如在本文所描述的任何实现方式中所使用的,“硬件”可以包括例如硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件(单独地或以任何组合)。模块可以共同地或单独地体现为形成较大系统的一部分的电路,例如,集成电路(IC)、片上系统(SoC)等。例如,模块可以体现在逻辑电路中以用于通过本文所讨论的编解码系统的软件、固件、或硬件的实现方式。
如在本文所描述的任何实现方式中所使用的,术语“逻辑单元”指的是被配置为提供本文所描述的功能的固件逻辑和/或硬件逻辑的任何组合。如在本文所描述的任何实现方式中所使用的,“硬件”可以包括例如硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件(单独地或以任何组合)。逻辑单元可以共同地或单独地体现为形成较大系统的一部分的电路,例如,集成电路(IC)、片上系统(SoC)等。例如,逻辑单元可以体现在逻辑电路中以用于通过本文所讨论的编解码系统的固件或硬件的实现方式。本领域普通技术人员将理解的是,由硬件和/或固件执行的操作可替代地通过软件实现,该软件可以体现为软件包、代码和/或指令集或指令,并且还将理解的是,逻辑单元还可以利用一部分软件来实现其功能。
如在本文所描述的任何实现方式中所使用的,术语“组件”可以指代模块或逻辑单元,如这些术语上面所描述的那样。因此,术语“组件”可以指代被配置为提供本文所描述的功能的软件逻辑、固件逻辑、和/或硬件逻辑的任何组合。例如,本领域普通技术人员将理解的是,由硬件和/或固件执行的操作可替代地通过软件模块来实现,该软件模块可以体现为软件包、代码和/或指令集,并且还将理解的是,逻辑单元还可以利用一部分软件来实现其功能。
参考图12,可以根据本公开的至少一些实现方式来布置用于提供用于视频编解码的利用近邻块模式公式的运动估计的示例视频编解码系统1200。在所示出的实现方式中,系统1200可以包括一个或多个中央处理单元或处理器1203、显示设备1205、以及一个或多个存储器存储装置1204。中央处理单元1203、存储器存储装置1204、和/或显示设备1205可以能够经由例如总线、导线、或其他通路(access)彼此通信。在各种实现方式中,显示设备1205可以集成在系统1200中或者与系统1200分开实现。
如图12所示,并且如上所述,处理单元1220可以具有带有编码器300和/或解码器400的逻辑电路1250。编码器300可以具有运动估计单元1252并且解码器可以具有运动估计单元1254,以读取和使用公式1208并提供本文所描述的许多功能,并且如本文所述的过程所解释的那样。
可以理解的是,图12中所示的模块可以包括各种软件和/或硬件模块和/或通过软件或硬件或它们的组合实现的模块。例如,模块可以经由处理单元1220被实现为软件,或者模块可以经由专用硬件部分来实现。此外,所示的存储器存储装置1204可以是用于处理单元1220的共享存储器,例如,运动向量缓冲器1206和1207以及ROM。公式可以存储在上述任何选项上,或者可以存储在这些选项的组合中,或者可以存储在别处。通过一种选项,列的近邻块区域MV被存储在片上缓冲器1206中,而一个行缓冲器被存储在片外存储缓冲器1207中,并且用于存储公式1208的ROM可以位于任一位置。而且,系统1200可以以各种方式实现。例如,系统1200(不包括显示设备1205)可以被实现为具有图形处理器、四核中央处理单元、和/或存储器控制器输入/输出(I/O)模块的单个芯片或设备。在其他示例中,系统1200(再次排除显示设备1205)可以被实现为芯片组。
(一个或多个)处理器1203可以包括任何合适的实现方式,包括例如(一个或多个)微处理器、多核处理器、专用集成电路、(一个或多个)芯片、芯片组、可编程逻辑器件、图形卡、集成图形、(一个或多个)通用图形处理单元等。另外,存储器存储装置1204可以保持运动向量缓冲器1206,并且可以是任何类型的存储器,例如,易失性存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如,闪存等)等。在非限制性示例中,存储器存储装置1204也可以经由高速缓存存储器来实现。在各种示例中,系统1200可以被实现为芯片组或片上系统。
参考图13,根据本公开和各种实现方式的示例系统1300可以是媒体系统,但系统1300不限于该情境。例如,系统1300可以被并入到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板电脑、或智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备等。
在各种实现方式中,系统1300包括通信地耦合到显示器1320的平台1302。平台1302可以从诸如(一个或多个)内容服务设备1330或(一个或多个)内容递送设备1340或其他类似内容源之类的内容设备接收内容。包括一个或多个导航特征的导航控制器1350可用于与例如平台1302和/或显示器1320交互。下面更详细地描述这些组件中的每一个。
在各种实现方式中,平台1302可以包括以下各项的任何组合:芯片组1305、处理器1310、存储器1312、存储装置1314、图形子系统1315、应用1316、和/或无线电装置1318、以及(一个或多个)天线1313。芯片组1305可以提供处理器1310、存储器1312、存储装置1314、图形子系统1315、应用1316、和/或无线电装置1318之间的相互通信。例如,芯片组1305可以包括能够提供与存储装置1314的相互通信的存储适配器(未示出)。
处理器1310可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器;x86指令集兼容处理器、多核、或任何其他微处理器或中央处理单元(CPU)。在各种实现方式中,处理器1310可以是(一个或多个)双核处理器、(一个或多个)双核移动处理器等。
存储器1312可以被实现为易失性存储器设备,例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或静态RAM(SRAM)。
存储装置1314可以被实现为非易失性存储设备,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接存储设备、闪存、备用电池的SDRAM(同步DRAM)、和/或网络可访问存储设备。在各种实现方式中,存储装置1314可以包括例如当多个硬盘驱动器被包括时增加对有价值的数字媒体的存储性能增强保护的技术。
图形子系统1315可以执行对诸如静止图像或视频之类的图像的处理以供显示。例如,图形子系统1315可以是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以用于通信地耦合图形子系统1315和显示器1320。例如,接口可以是以下各项中的任何一种:高清晰度多媒体接口、显示端口、无线HDMI、和/或无线HD兼容技术。图形子系统1315可以被集成到处理器1310或芯片组1305中。在一些实现方式中,图形子系统1315可以是通信地耦合到芯片组1305的独立卡。
本文所描述的图形和/或视频处理技术可以在各种硬件架构中实现。例如,图形和/或视频功能可以集成在芯片组内。替代地,可以使用分立的图形和/或视频处理器。作为又一实现方式,图形和/或视频功能可以由通用处理器提供,包括多核处理器。在其他实现方式中,功能可以在消费者电子设备中实现。
无线电装置1318可以包括能够使用各种合适的无线通信技术来发送和接收信号的一个或多个无线电装置。这些技术可以涉及跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络、和卫星网络。在通过这些网络进行通信时,无线电装置1318可以根据任何版本的一个或多个适用标准进行操作。
在各种实现方式中,显示器1320可以包括任何电视类型的监视器或显示器。显示器1320可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类似电视的设备、和/或电视。显示器1320可以是数字的和/或模拟的。在各种实现方式中,显示器1320可以是全息显示器。而且,显示器1320可以是可以接收视觉投影的透明表面。这种投影可以传送各种形式的信息、图像、和/或对象。例如,这种投影可以是移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用程序1316的控制下,平台1302可以在显示器1320上显示用户界面1322。
在各种实现方式中,(一个或多个)内容服务设备1330可以由任何国家、国际、和/或独立服务托管,并且因此例如可以经由互联网访问平台1302。(一个或多个)内容服务设备1330可以耦合到平台1302和/或显示器1320。平台1302和/或(一个或多个)内容服务设备1330可以耦合到网络1360以传送(例如,发送和/或接收)媒体信息进出网络1360。(一个或多个)内容传递设备1340还可以耦合到平台1302和/或显示器1320。
在各种实现方式中,(一个或多个)内容服务设备1330可以包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的互联网设备或装置、以及能够单向或双向地经由网络1360或直接在内容提供商和平台1302/或显示器1320之间传送内容的任何其他类似设备。可以理解的是,可以经由网络1360单向和/或双向地传送去往和来自系统1300中的组件和内容提供商中的任一项的内容。内容的示例可以包括任何媒体信息,包括例如视频、音乐、医疗、和游戏信息等。
(一个或多个)内容服务设备1330可以接收诸如有线电视节目之类的内容,包括媒体信息、数字信息、和/或其他内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或互联网内容提供商。所提供的示例并不意味着以任何方式限制根据本公开的实现方式。
在各种实现方式中,平台1302可以从具有一个或多个导航特征的导航控制器1350接收控制信号。例如,控制器1350的导航特征可用于与用户界面1322交互。在实现方式中,导航控制器1350可以是指示设备,其可以是允许用户将空间(例如,连续和多维)数据输入到计算机的计算机硬件组件(具体地,人机接口设备)。诸如图形用户界面(GUI)、电视、和监视器之类的许多系统允许用户使用物理姿势来控制和向计算机或电视提供数据。
控制器1350的导航特征的移动可以通过显示器上显示的指针、光标、聚焦环、或其他视觉指示器的移动来在显示器(例如,显示器1320)上复制。例如,在软件应用1316的控制下,位于导航控制器1350上的导航特征可以被映射到例如在用户界面1322上显示的虚拟导航特征。在实现方式中,控制器1350可以不是单独的组件,而是可以集成到平台1302和/或显示器1320中。然而,本公开不限于本文所示出或描述的元件或情境。
在各种实现方式中,例如,当启用时,驱动器(未示出)可以包括使得用户能够在初始启动之后通过触摸按钮来立即打开和关闭平台1302的技术。即使当平台被“关闭”时,程序逻辑也可以允许平台1302将内容流式传输到媒体适配器或(一个或多个)其他内容服务设备1330或(一个或多个)内容递送设备1340。此外,芯片组1305可以包括例如对7.1环绕声音频和/或高清晰度(7.1)环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实现方式中,图形驱动器可以包括外围组件互连(PCI)高速(Express)图形卡。
在各种实现方式中,可以集成系统1300中示出的任何一个或多个组件。例如,可以集成平台1302和(一个或多个)内容服务设备1330,或者可以集成平台1302和(一个或多个)内容递送设备1340,或者可以集成平台1302、(一个或多个)内容服务设备1330、和(一个或多个)内容递送设备1340。在各种实现方式中,平台1302和显示器1320可以是集成单元。例如,可以集成显示器1320和(一个或多个)内容服务设备1330,或者可以集成显示器1320和(一个或多个)内容递送设备1340。这些实施例不意味着限制本公开。
在各种实现方式中,系统1300可以被实现为无线系统、有线系统、或两者的组合。当被实现为无线系统时,系统1300可以包括适合于通过无线共享介质进行通信的组件和接口,例如,一个或多个天线、发送器、接收器、收发器、放大器、滤波器、控制逻辑等。无线共享介质的示例可以包括部分无线频谱,例如,RF频谱等。当被实现为有线系统时,系统1300可以包括适合于通过有线通信介质进行通信的组件和接口,例如,输入/输出(I/O)适配器、用于将I/O适配器与相应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括电线、电缆、金属引线、印刷电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。
平台1302可以建立一个或多个逻辑或物理信道以传送信息。该信息可以包括媒体信息和控制信息。媒体信息可以指代表示针对用户的内容的任何数据。内容的示例可以包括例如来自以下各项的数据:语音会话、视频会议、流式视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等。来自语音会话的数据可以是例如语音信息、静默时段、背景噪声、舒适噪声、音调等。控制信息可以指代表示用于自动化系统的命令、指令、或控制字的任何数据。例如,控制信息可用于通过系统路由媒体信息,或指示节点以预定方式处理媒体信息。然而,实现方式不限于图13中示出或描述的元件或情境。
如上所述,系统1200或1300可以以不同的物理样式或形状因子来实现。图14示出了可以实现系统1200或1300的小规格设备1400的实现方式。在实现方式中,例如,设备1400可以被实现为具有无线能力的移动计算设备。移动计算设备可以指具有处理系统和移动电源或供电(例如,一个或多个电池)的任何设备。
如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板电脑、或智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备等。
移动计算设备的示例还可以包括被布置为由人佩戴的计算机,例如,手腕计算机、手指计算机、环形计算机、眼镜计算机、带夹计算机、臂带计算机、鞋计算机、服装计算机、和其他可穿戴计算机。在各种实现方式中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管可以通过示例的方式,一些实现方式可以用被实现为智能电话的移动计算设备来描述,但可以理解的是,其他实现方式也可以使用其他无线移动计算设备来实现。实现方式不限于此情境。
如图14所示,设备1400可以包括外壳1402、显示器1404、输入/输出(I/O)设备1406、和天线1408。设备1400还可以包括导航特征1412。显示器1404可以包括显示单元上的任何合适的屏幕1410,用于显示适合于移动计算设备的信息。I/O设备1406可以包括用于将信息输入到移动计算设备的任何合适的I/O设备。I/O设备1406的示例可以包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备、和软件等。还可以通过麦克风(未示出)将信息输入到设备1400中。这种信息可以由语音识别设备(未示出)数字化。实现方式不限于此情境。
各种实现方式可以使用硬件元件、软件元件、或两者的组合来实现。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或它们的任何组合。确定实现方式是否使用硬件元件和/或软件元件来实现可以根据任何数目的因素而变化,例如期望的计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、和其他设计或性能限制。
以上描述的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,当被机器读取时,这些指令使机器制造逻辑以执行本文所描述的技术。这种被称为“IP核”的表示可以存储在有形的机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
虽然已经参考各种实现方式描述了本文阐述的某些特征,但是该描述并不旨在以限制意义来解释。因此,本公开所涉及的对本领域的技术人员显而易见的对本文所描述的实现方式的各种修改以及其他实现方式被认为落入本公开的精神和范围内。
以下示例涉及附加的实现方式。
通过一个示例,一种用于视频编解码的计算机实现的运动估计方法,包括:接收多个像素数据帧;以及确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:通过使用近邻块模式公式计算相对于当前块的位置的至少一个近邻块坐标来确定与当前块相同的帧上的空间近邻块位置,其中使用基本上相同的模式公式而不管当前块的大小如何;以及使用在通过使用至少一个近邻块坐标确定的位置处的近邻块的运动向量来确定当前块的至少一个运动向量。
通过另一实现方式,该方法可以包括:对于具有小于8×8的子块大小的当前块,使用来自8×8近邻块的基于不小于8×8块的运动向量;其中,被准许具有近邻块的块区域包括以下各项中的至少一个:在当前块上方且与当前块相邻的单个行,紧邻当前块左侧的至多三列,以及两者都与当前块相邻的单个行和单个列,具有由当前块的顶部加上一个块的长度的连续8×8像素块的单行缓冲器存储的数据;该方法包括:仅缓冲基于8×8像素块的运动向量作为潜在近邻块运动向量;确定至多九个空间近邻运动向量;以及从运动向量中确定至多两个候选运动向量,以用于确定当前块的运动向量;近邻块模式公式使用当前块的宽度或高度或两者来进行以下各项操作中的至少一个:确定至少一个近邻块的行或列位置,将近邻块对齐在当前块的一角,以及将近邻块对齐在当前块的宽度或高度的中心;其中,在解码器处提供近邻块模式公式,以用于在解码器处确定帧上的近邻块位置;该方法包括:将至少一列潜在近邻块区域的运动向量存储在片上存储器上,同时将单个行潜在近邻块区域的运动向量存储在不同于片上存储器的行缓冲器中;以及当近邻块模式公式将近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,指示块位置不可用作当前块的近邻块。
通过又一实现方式,一种计算机实现的系统具有显示器、存储器;至少一个处理器,通信地耦合到存储器和显示器;以及运动估计单元,由至少一个处理器操作并且被布置为通过以下操作来进行操作:接收多个像素数据帧;以及确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:通过使用近邻块模式公式计算相对于当前块的至少一个近邻块坐标来确定与当前块相同的帧上的空间近邻块位置,其中使用基本上相同的模式公式而不管当前块的大小如何;以及使用在所确定的近邻块位置处的近邻块的运动向量来确定当前块的至少一个运动向量。
通过另一实现方式,该系统包括:其中近邻块模式公式使用当前块的宽度或高度或两者来确定至少一个近邻块的行或列位置;其中,运动估计单元通过针对作为小于8×8像素的子块大小的当前块使用来自8×8像素近邻块的基于不小于8×8块的运动向量来操作;其中,被准许具有近邻块的块区域包括以下各项中的一者:在当前块上方的单个行以及紧邻当前块左侧的至多三列,其中针对单个行的运动向量被存储在片外,针对至多三列的运动向量被存储在片上,以及两者都与当前块相邻的单个行和单个列;其中,至多部分地由于近邻块模式公式,八个近邻块各自被用于当前块8×16或16×8像素,并且其中至多九个近邻块被用于其他当前块大小;其中,至少部分地由于由近邻块模式公式提供的等式,近邻块由于重复而被消除,使得针对不同大小的当前块提供由近邻块模式公式列出的少于九个近邻块;以及其中,在不使用根据当前块大小来列出固定近邻块位置的查找表的情况下确定近邻块位置。
通过一种方式,其上存储有指令的至少一个计算机可读介质,这些指令在被执行时使得计算设备通过以下操作来进行操作:接收多个像素数据帧;以及确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:通过使用近邻块模式公式计算相对于当前块的至少一个近邻块坐标来确定与当前块相同的帧上的空间近邻块位置,其中使用基本上相同的模式公式而不管当前块的大小如何;以及使用在所确定的近邻块位置处的近邻块的运动向量来确定当前块的至少一个运动向量。
这些指令使得计算设备通过以下操作来进行操作:对于具有小于8×8的子块大小的当前块,使用来自8×8近邻块的基于不小于8×8块的运动向量。其中被准许具有近邻块的块区域包括以下各项中的至少一个:在当前块上方且与当前块相邻的单个行,紧邻当前块左侧的至多三列,以及两者都与当前块相邻的单个行和单个列,具有由当前块的顶部加上一个块的长度的连续8×8像素块的单行缓冲器存储的数据;其中,这些指令使得计算设备通过以下操作进行操作:仅缓冲基于8×8像素块的运动向量作为潜在近邻块运动向量。确定至多九个空间近邻运动向量;以及从运动向量中确定至多两个候选运动向量,以用于确定当前块的运动向量。其中近邻块模式公式使用当前块的宽度或高度或两者来进行以下各项操作中的至少一个:确定至少一个近邻块的行或列位置,将近邻块对齐在当前块的一角,以及将近邻块对齐在当前块的宽度或高度的中心。其中,在解码器处提供近邻块模式公式,以用于在解码器处确定帧上的近邻块位置。其中,这些指令使得计算设备通过以下操作进行操作:将至少一列潜在近邻块区域的运动向量存储在片上存储器上,同时将单个行潜在近邻块区域的运动向量存储在不同于片上存储器的行缓冲器中;以及当近邻块模式公式将近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,指示块位置不可用作当前块的近邻块。
在另一示例中,至少一个机器可读介质可以包括多个指令,这些指令响应于在计算设备上被执行而使得计算设备执行根据以上示例中的任一个的方法。
在又一个示例中,一种设备可以包括用于执行根据以上示例中任一项的方法的装置。
以上示例可以包括特征的特定组合。然而,以上示例不受限于这方面,并且在各种实现方式中,上述示例可以包括仅进行这些特征的子集、进行这些特征的不同顺序、进行这些特征的不同组合,和/或进行除明确列出的那些特征之外的其他特征。例如,关于示例方法描述的所有特征可以关于示例装置、示例系统、和/或示例制品来实现,反之亦然。

Claims (25)

1.一种用于视频编解码的计算机实现的运动估计方法,包括:
接收多个像素数据帧;以及
确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:
通过使用近邻块模式公式计算相对于所述当前块的位置的至少一个近邻块坐标来确定与所述当前块相同的帧上的空间近邻块位置,其中使用相同的模式公式而不管所述当前块的大小如何,所述近邻块模式公式使用所述当前块的宽度或高度或两者来确定相对于所述当前块的近邻块的位置;以及
使用在通过使用所述至少一个近邻块坐标确定的位置处的近邻块的运动向量来确定所述当前块的至少一个运动向量,
其中,被准许具有近邻块的块区域包括在所述当前块上方且与所述当前块相邻的单个行以及紧邻所述当前块左侧的至多三列。
2.如权利要求1所述的方法,包括:
对于具有小于8×8的子块大小的当前块,使用来自8×8的近邻块的基于不小于8×8的块的运动向量。
3.如权利要求1所述的方法,其中,被准许具有近邻块的所述块区域包括均与所述当前块相邻的所述单个行和单个列,具有由所述当前块的顶部加上一个块的长度的连续8×8像素块的单行缓冲器存储的数据。
4.如权利要求1所述的方法,包括仅缓冲基于8×8像素块的运动向量作为潜在近邻块运动向量。
5.如权利要求1所述的方法,包括:确定至多九个空间近邻运动向量;以及从所述运动向量中确定至多两个候选运动向量,以用于确定所述当前块的运动向量。
6.如权利要求1所述的方法,其中,所述近邻块模式公式使用所述当前块的宽度或高度或两者来进行以下各项操作中的至少一个:
确定至少一个近邻块的行或列位置,
将近邻块对齐在所述当前块的一角,以及
将近邻块对齐在所述当前块的宽度或高度的中心。
7.如权利要求1所述的方法,其中,在解码器处提供所述近邻块模式公式,以用于在所述解码器处确定帧上的近邻块位置。
8.如权利要求1所述的方法,包括:将1至3列潜在近邻块区域的运动向量存储在片上存储器上,同时将单个行潜在近邻块区域的运动向量存储在不同于片上存储器的行缓冲器中。
9.如权利要求1所述的方法,包括:当所述近邻块模式公式将当前块的近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,指示块位置不可用作所述当前块的近邻块。
10.如权利要求1所述的方法,包括:对于具有小于8×8的子块大小的当前块,使用来自8×8的近邻块的基于不小于8×8的块的运动向量;
其中被准许具有近邻块的块区域包括以下各项中的至少一个:
紧邻所述当前块左侧的至多三列,以及
均与所述当前块相邻的所述单个行和单个列,具有由所述当前块的顶部加上一个块的长度的连续8×8像素块的单行缓冲器存储的数据;
所述方法包括:
仅缓冲基于8×8像素块的运动向量作为潜在近邻块运动向量;
确定至多九个空间近邻运动向量;以及
从所述运动向量中确定至多两个候选运动向量,以用于确定所述当前块的运动向量;
其中所述近邻块模式公式使用所述当前块的宽度或高度或两者来进行以下各项操作中的至少一个:
确定至少一个近邻块的行或列位置,
将近邻块对齐在所述当前块的一角,以及
将近邻块对齐在所述当前块的宽度或高度的中心;
其中,在解码器处提供所述近邻块模式公式,以用于在所述解码器处确定帧上的近邻块位置;
所述方法包括:
将至少一列潜在近邻块区域的运动向量存储在片上存储器上,同时将单个行潜在近邻块区域的运动向量存储在不同于片上存储器的行缓冲器中;以及
当所述近邻块模式公式将当前块的近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,指示块位置不可用作所述当前块的近邻块。
11.一种计算机实现的系统,包括:
显示器;
存储器;
至少一个处理器,通信地耦合到所述存储器和所述显示器;以及
运动估计单元,由所述至少一个处理器操作并且被布置为通过以下操作来操作:
接收多个像素数据帧;以及
确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:
通过使用近邻块模式公式计算相对于所述当前块的至少一个近邻块坐标来确定与所述当前块相同的帧上的空间近邻块位置,
其中使用相同的模式公式而不管所述当前块的大小如何,所述近邻块模式公式使用所述当前块的宽度或高度或两者来确定相对于所述当前块的近邻块的位置;以及
使用在所确定的近邻块位置处的近邻块的运动向量来确定所述当前块的至少一个运动向量,
其中,被准许具有近邻块的块区域包括在所述当前块上方且与所述当前块相邻的单个行以及紧邻所述当前块左侧的至多三列。
12.如权利要求11所述的系统,其中,所述近邻块模式公式使用所述当前块的宽度或高度或两者来确定至少一个近邻块的行或列位置。
13.如权利要求11所述的系统,其中所述运动估计单元针对具有小于8×8像素的子块大小的当前块、通过使用来自8×8像素近邻块的基于不小于8×8的块的运动向量来进行操作。
14.如权利要求11所述的系统,其中针对所述单个行的运动向量被存储在片外,针对所述至多三列的运动向量被存储在片上。
15.如权利要求11所述的系统,其中,被准许具有近邻块的块区域包括均与所述当前块相邻的所述单个行和单个列。
16.如权利要求11所述的系统,其中,至少部分地由于所述近邻块模式公式,八个近邻块各自被用于当前块8×16或16×8像素,并且其中至多九个近邻块被用于其他当前块大小。
17.如权利要求11所述的系统,其中,至少部分地由于由所述近邻块模式公式提供的等式,近邻块由于重复而被消除,使得针对不同大小的当前块提供由所述近邻块模式公式列出的少于九个近邻块。
18.如权利要求11所述的系统,其中,在不使用根据当前块大小列出固定近邻块位置的查找表的情况下确定所述近邻块位置。
19.如权利要求11所述的系统,其中,所述近邻块模式公式在解码器处被提供以用于在所述解码器处确定帧上的近邻块位置。
20.根据权利要求11所述的系统,其中所述近邻块模式公式使用当前块的宽度或高度或两者来执行以下项中的至少一个:
确定至少一个近邻块的行或列位置;
将近邻块对齐在所述当前块的一角,以及
将近邻块对齐在所述当前块的宽度或高度的中心。
21.根据权利要求11所述的系统,其中当所述近邻块模式公式将当前块的近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,块位置不可用作所述当前块的近邻块。
22.根据权利要求11所述的系统,其中所述近邻块模式公式使用所述当前块的宽度或高度或两者来确定至少一个近邻块的行或列位置;
其中,所述运动估计单元通过针对子块大小小于8×8像素的当前块使用来自8×8像素近邻块的基于不小于8×8的块的运动向量来操作;
其中被准许具有近邻块的块区域包括以下各项中的一者:
在所述当前块上方的所述单个行以及紧邻所述当前块左侧的至多三列,其中针对所述单个行的运动向量被存储在片外,针对所述至多三列的运动向量被存储在片上,以及
均与所述当前块相邻的所述单个行和单个列;
其中,至少部分地由于所述近邻块模式公式,八个近邻块各自被用于当前块8×16或16×8像素,并且其中至多九个近邻块被用于其他当前块大小;
其中,至少部分地由于由所述近邻块模式公式提供的等式,近邻块由于重复而被消除,使得针对不同大小的当前块提供由所述近邻块模式公式列出的少于九个近邻块;以及
其中,在不使用根据当前块大小列出固定近邻块位置的查找表的情况下确定所述近邻块位置。
23.一种计算机可读介质,其上存储有指令,所述指令在被执行时使得计算设备通过以下操作来进行操作:
接收多个像素数据帧;以及
确定在当前帧上的当前块与参考帧上的参考块之间延伸的至少一个运动向量候选,包括:
通过使用近邻块模式公式计算相对于所述当前块的至少一个近邻块坐标来确定与所述当前块相同的帧上的空间近邻块位置,其中使用相同的模式公式而不管所述当前块的大小如何,所述近邻块模式公式使用所述当前块的宽度或高度或两者来确定相对于所述当前块的近邻块的位置;以及
使用在所确定的近邻块位置处的近邻块的运动向量来确定所述当前块的至少一个运动向量,
其中,被准许具有近邻块的块区域包括在所述当前块上方且与所述当前块相邻的单个行以及紧邻所述当前块左侧的至多三列。
24.如权利要求23所述的计算机可读介质,其中,所述指令使得所述计算设备通过以下操作进行操作:对于具有小于8×8的子块大小的当前块,使用来自8×8的近邻块的基于不小于8×8的块的运动向量;
其中被准许具有近邻块的块区域包括以下各项中的至少一个:
紧邻所述当前块左侧的至多三列,以及
均与所述当前块相邻的所述单个行和单个列,具有由所述当前块的顶部加上一个块的长度的连续8×8像素块的单行缓冲器存储的数据;
其中,所述指令使得所述计算设备通过以下操作进行操作:
仅缓冲基于8×8像素块的运动向量作为潜在近邻块运动向量;
确定至多九个空间近邻运动向量;以及
从所述运动向量中确定至多两个候选运动向量,以用于确定所述当前块的运动向量;
其中所述近邻块模式公式使用所述当前块的宽度或高度或两者来进行以下各项操作中的至少一个:
确定至少一个近邻块的行或列位置,
将近邻块对齐在所述当前块的一角,以及
将近邻块对齐在所述当前块的宽度或高度的中心;
其中,在解码器处提供所述近邻块模式公式,以用于在所述解码器处确定帧上的近邻块位置;
其中,所述指令使得所述计算设备通过以下操作进行操作:
将至少一列潜在近邻块区域的运动向量存储在片上存储器上,同时将单个行潜在近邻块区域的运动向量存储在不同于片上存储器的行缓冲器中;以及
当所述近邻块模式公式将当前块的近邻块放置在从包含当前块的64×64像素超级块延伸的顶部区域的外部和右侧的位置处时,指示块位置不可用作所述当前块的近邻块。
25.一种用于视频编解码的设备,包括用于执行根据权利要求1-10中任一项所述的方法的装置。
CN201680085633.4A 2016-06-09 2016-06-09 用于视频编解码的利用近邻块模式的运动估计的方法和系统 Active CN109155856B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/085385 WO2017210915A1 (en) 2016-06-09 2016-06-09 Method and system of motion estimation with neighbor block pattern for video coding

Publications (2)

Publication Number Publication Date
CN109155856A CN109155856A (zh) 2019-01-04
CN109155856B true CN109155856B (zh) 2023-10-24

Family

ID=60577484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680085633.4A Active CN109155856B (zh) 2016-06-09 2016-06-09 用于视频编解码的利用近邻块模式的运动估计的方法和系统

Country Status (5)

Country Link
US (2) US10873755B2 (zh)
EP (1) EP3469794B1 (zh)
KR (1) KR102587638B1 (zh)
CN (1) CN109155856B (zh)
WO (1) WO2017210915A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017210915A1 (en) * 2016-06-09 2017-12-14 Intel Corporation Method and system of motion estimation with neighbor block pattern for video coding
CN109496431A (zh) * 2016-10-13 2019-03-19 富士通株式会社 图像编码/解码方法、装置以及图像处理设备
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
WO2019124205A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10798407B2 (en) * 2018-06-01 2020-10-06 Tencent America LLC Methods and apparatus for inter prediction with a reduced above line buffer in video coding
US10511852B1 (en) * 2018-07-13 2019-12-17 Tencent America LLC Method and apparatus for video coding
WO2020058896A1 (en) * 2018-09-19 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Intra mode coding based on history information
CN113273207A (zh) * 2019-01-10 2021-08-17 北京字节跳动网络技术有限公司 基于几何分区的具有运动矢量差(MVD)的Merge
CN114902680A (zh) 2019-12-19 2022-08-12 抖音视界(北京)有限公司 视频的自适应颜色变换和差分编解码的联合使用
US11425423B1 (en) 2022-03-10 2022-08-23 Yendo Hu Memory storage for motion estimation and visual artifact redcution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5436666A (en) * 1993-05-21 1995-07-25 Intel Corporation Limited-domain motion estimation/compensation for video encoding/decoding
CN1943244A (zh) * 2004-04-14 2007-04-04 三星电子株式会社 视频编码中的帧间预测方法、视频编码器、视频解码方法和视频解码器
WO2014058796A1 (en) * 2012-10-08 2014-04-17 Google Inc Method and apparatus for video coding using reference motion vectors
WO2015107887A1 (ja) * 2014-01-15 2015-07-23 日本電気株式会社 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1294194B8 (en) * 2001-09-10 2010-08-04 Texas Instruments Incorporated Apparatus and method for motion vector estimation
CN101141651B (zh) * 2002-11-25 2010-11-10 松下电器产业株式会社 动态补偿方法、图像编码方法及图像解码方法
CN101317458B (zh) * 2006-03-16 2012-04-18 华为技术有限公司 在编码过程中实现自适应量化的方法及装置
CN101800893B (zh) * 2009-02-06 2013-01-16 宏碁股份有限公司 执行运动估计的低功率高性能视频编码方法
US8320455B2 (en) * 2009-03-05 2012-11-27 Qualcomm Incorporated System and method to process motion vectors of video data
US20110013853A1 (en) * 2009-07-17 2011-01-20 Himax Technologies Limited Approach for determining motion vector in frame rate up conversion
KR101522850B1 (ko) * 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US9300970B2 (en) * 2010-07-09 2016-03-29 Samsung Electronics Co., Ltd. Methods and apparatuses for encoding and decoding motion vector
US9621916B2 (en) * 2010-12-14 2017-04-11 M&K Holdings Inc. Apparatus for encoding a moving picture
EP2656610A4 (en) * 2010-12-21 2015-05-20 Intel Corp SYSTEM AND METHOD FOR EXTENDED DMVD PROCESSING
US9866861B2 (en) * 2011-02-09 2018-01-09 Lg Electronics Inc. Method for encoding and decoding image and device using same
KR20110111339A (ko) * 2011-08-23 2011-10-11 한국전자통신연구원 화면내 예측 시스템에서 최적 모드를 예측하는 장치 및 방법
US10200710B2 (en) 2012-07-02 2019-02-05 Samsung Electronics Co., Ltd. Motion vector prediction method and apparatus for encoding or decoding video
CN105532004B (zh) * 2013-07-12 2019-01-25 三星电子株式会社 层间视频解码方法及设备
GB2521606A (en) * 2013-12-20 2015-07-01 Canon Kk Method and apparatus for transition encoding in video coding and decoding
US10230980B2 (en) * 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
CN108141604B (zh) * 2015-06-05 2022-07-05 杜比实验室特许公司 图像编码和解码方法和图像解码设备
WO2017210915A1 (en) * 2016-06-09 2017-12-14 Intel Corporation Method and system of motion estimation with neighbor block pattern for video coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5436666A (en) * 1993-05-21 1995-07-25 Intel Corporation Limited-domain motion estimation/compensation for video encoding/decoding
CN1943244A (zh) * 2004-04-14 2007-04-04 三星电子株式会社 视频编码中的帧间预测方法、视频编码器、视频解码方法和视频解码器
WO2014058796A1 (en) * 2012-10-08 2014-04-17 Google Inc Method and apparatus for video coding using reference motion vectors
WO2015107887A1 (ja) * 2014-01-15 2015-07-23 日本電気株式会社 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VP9 Bitstream & Decoding Process Specification;Adrian Grange ET AL;《https://storage.googleapis.com/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-draft.pdf》;20160301;1-9章 *

Also Published As

Publication number Publication date
KR102587638B1 (ko) 2023-10-10
US20190132605A1 (en) 2019-05-02
US10873755B2 (en) 2020-12-22
US11616968B2 (en) 2023-03-28
KR20190015218A (ko) 2019-02-13
CN109155856A (zh) 2019-01-04
WO2017210915A1 (en) 2017-12-14
US20210099727A1 (en) 2021-04-01
EP3469794B1 (en) 2022-04-27
EP3469794A1 (en) 2019-04-17
EP3469794A4 (en) 2020-03-04

Similar Documents

Publication Publication Date Title
CN109155856B (zh) 用于视频编解码的利用近邻块模式的运动估计的方法和系统
US11082706B2 (en) Method and system of video coding with a multi-pass prediction mode decision pipeline
US9532048B2 (en) Hierarchical motion estimation employing nonlinear scaling and adaptive source block size
US10827186B2 (en) Method and system of video coding with context decoding and reconstruction bypass
CN107005697B (zh) 用于视频编解码的使用基于查找表的概率更新的熵编解码的方法与系统
US20170208341A1 (en) System and method of motion estimation for video coding
US20170006303A1 (en) Method and system of adaptive reference frame caching for video coding
CN107005709B (zh) 对于任意形状的运动估计
US20140254678A1 (en) Motion estimation using hierarchical phase plane correlation and block matching
CN107113435B (zh) 分区模式和变换尺寸确定方法、装置、系统及介质
US20210321093A1 (en) Method and system of video coding with efficient intra block copying
KR101425286B1 (ko) 모션 추정을 위한 완전한 서브 매크로블록 형상 후보 저장 및 복구 프로토콜
US9386311B2 (en) Motion estimation methods for residual prediction
US20190230365A1 (en) Video cluster encoding for multiple resolutions and bitrates with performance and quality enhancements
US10021387B2 (en) Performance and bandwidth efficient fractional motion estimation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant