CN101472181A - 用于视频编码的可配置性能运动估计 - Google Patents

用于视频编码的可配置性能运动估计 Download PDF

Info

Publication number
CN101472181A
CN101472181A CNA2008101847274A CN200810184727A CN101472181A CN 101472181 A CN101472181 A CN 101472181A CN A2008101847274 A CNA2008101847274 A CN A2008101847274A CN 200810184727 A CN200810184727 A CN 200810184727A CN 101472181 A CN101472181 A CN 101472181A
Authority
CN
China
Prior art keywords
macro block
search
module
motion estimation
integer
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.)
Granted
Application number
CNA2008101847274A
Other languages
English (en)
Other versions
CN101472181B (zh
Inventor
N·路
江洪
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 CN101472181A publication Critical patent/CN101472181A/zh
Application granted granted Critical
Publication of CN101472181B publication Critical patent/CN101472181B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/127Prioritisation of hardware or computational resources
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/43Hardware specially adapted for motion estimation or 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
    • 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/557Motion estimation characterised by stopping computation or iteration based on certain criteria, e.g. error magnitude being too large or early exit

Abstract

一种运动估计引擎可以实现为包括:跳过检查模块、整数搜索模块、宏块分割模块、分数级搜索模块、双向运动估计细调模块和内部搜索模块。该运动估计引擎可以并行地执行分数级搜索/双向运动估计细调和内部搜索。此外,该运动估计引擎中的模块可以部分或全部打开或关闭,以适应不同的运动估计需求。此外,该运动估计引擎可以实现早退出策略,以进一步节省计算。

Description

用于视频编码的可配置性能运动估计
技术领域
本公开整体涉及信号处理,更具体地涉及数字视频编码技术,但不排除涉及其它技术。
背景技术
图像信息(比如,数字视频信息)经常从一个电子设备传送到另一个。通常对这种信息进行编码和/或压缩,以降低用于传输所需的带宽和/或减少用于传输必需的时间。在一些配置中,可以发送关于当前图片和先前图片之间的差异的信息,并且随后接收图像信息的设备可以,例如,对信息进行解码和/或解压缩(例如,通过使用先前图片和所述差异来生成当前图片)并将图像提供到观看设备。
许多视频编码/压缩方案中的一个关键要素是运动估计。视频序列由一系列帧组成。运动估计技术利用相邻帧之间的时间冗余,通过选择一帧作为参考并根据该参考预测后续帧来实现压缩。基于运动估计的视频压缩处理也公知为帧间编码。在假设场景中的对象仅具有平移运动的情况下使用运动估计。只要不存在摄像机晃动、缩放、亮度变化或旋转运动,该假设即成立。然而,对于场景变化,帧间编码效果不佳,因为来自不同场景的帧之间的时间相关性较低。在这种情况中,使用了第二压缩技术——帧内编码。
使用运动估计技术,根据至少一个参考帧来预测帧序列中的当前帧。将当前帧分割为N x N像素的宏块,典型地,大小为16 x 16像素。使用某种误差度量将每个宏块与参考帧中相同大小的区域进行比较,并选择最佳匹配区域。该搜索在预定搜索范围内进行。确定运动矢量,其表示参考帧中区域相对于当前帧中宏块的位移。当使用先前帧作为参考时,则将预测称为前向预测。如果参考帧是未来帧时,则将预测称为后向预测。当使用了后向预测和前向预测两者时,则将预测称为双向预测。
为了降低宏块搜索的计算开销,参考帧内的搜索窗通常是相同的,并将宏块与搜索窗内的不同位置进行比较。目前最有效的将宏块与搜索窗口进行比较的计算强化方式是在搜索窗内宏块可以移动到的每个位置处将宏块的像素与搜索窗的像素进行比较。这被称为“完全”或“穷尽”搜索。对于搜索窗内被测块的每个位置,将该块的每个像素与搜索窗中相应像素进行比较。这种比较包括计算被比较像素的值之间的偏差。
通常利用绝对差的算术和(SAD)、均方差(MSE)、平均绝对误差(MSE)、或平均绝对差(MAD)函数,来定量地比较这些像素。然后,累积每个宏块位置的偏差,并且选择搜索窗内产生最小偏差的位置作为在先前帧中该块最可能的位置。然后,利用该块的当前位置和先前位置的差异来导出运动矢量,以估计在参考帧和当前帧之间与该块相关联的运动。然后,例如,可以将运动矢量作为图像信息(例如,取代完整图像帧)进行发送,使得解码器可以通过简单地将运动矢量信息应用到参考帧,来生成、重建或构造当前帧。
存在有多种视频编码标准。最普遍的标准是由国际标准化组织(ISO)和国际电工委员会(IEC)公布的运动图像专家组(MPEG)版本2(MPEG-2)标准、由ISO/IEC公布的MPEG-4部分10标准(也公知为先进视频编码(AVC)标准)、以及电影和电视工程师组织或SMPTE421M视频编解码标准(也公知为VC-1标准)。尽管不同的标准共用相似的算法思想并需要相似的运动估计机制,但是实际的具体细节通常大相径庭。运动估计通常需要大量计算,并需要由硬件来执行。因为不同视频编码标准所使用的运动估计具有其自身的区别特征,所以运动估计的每种硬件实现都需要是对标准专用的,从而导致硬件使用效率低下。因此,需要有一种统一的运动估计硬件设备,其覆盖不同视频标准的具体约束。
附图说明
通过下面对该主题的具体描述,本公开主题的特征和优点将变得更加显而易见,其中:
图1示出了一种示例计算系统,其可以包括用于使用运动估计引擎压缩视频信息的视频编码器;
图2示出了视频编码器的方框图,该视频编码器使用运动估计引擎来压缩视频信息;
图3示出了由视频编码器用于针对多种视频编码标准压缩视频信息的运动估计引擎的方框图;
图4是用于针对多种视频编码标准执行运动估计的运动估计引擎的一个示例过程的流程图;
图5A和5B示出了用于在运动估计期间分割宏块的方式;
图6示出了用于在运动估计期间计算宏块搜索失真(distortion)的示例方法;
图7示出了用于在运动估计期间计算宏块搜索失真的另一种示例方法;
图8是用于在运动估计期间细调(refine)预测方向的示例过程的流程图;以及
图9A和9B示出了分数级运动估计插值方案。
具体实施方式
根据在本申请中公开的主题的实施例,运动估计引擎可以实现为包括:跳过检查模块、整数搜索模块、宏块分割模块、分数级搜索模块、双向运动估计细调模块以及内部搜索模块。运动估计引擎可以支持单个参考帧或者支持双重或两个参考帧。运动估计引擎可以并行执行分数级搜索/双向运动估计细调和内部搜索。另外,运动估计引擎中的模块可以部分或全部打开或关闭,以兼容不同运动估计需求。此外,运动估计引擎可以实现早退出(early exit)策略,以便进一步节省计算。
在本说明书中提及所公开主题的“一个实施例”或“实施例”意味着结合该实施例所描述的具体特征、结构或特性包括在所公开主题的至少一个实施例中。因此,在整篇说明书中不同地方出现的语句“在一个实施例中”不一定全部指代相同的实施例。
图1示出了一种示例计算系统100,其可以包括用于使用运动估计引擎压缩视频信息的视频编码器。计算系统100可以包括耦合到系统互连115的一个或多个处理器110。处理器110可以具有多处理内核(multipleprocessing core)或众处理内核(many processing core)(为便于描述,术语“内核”和“处理器”此后可以互换使用,并且此后术语“多内核/处理器”可以用于包括多处理内核和众处理内核)。计算系统100还可以包括耦合到系统互连115的芯片组120。芯片组120可以包括一个或多个集成电路封装或芯片。
另外,芯片组120可以包括存储器控制中心(MCH)130,其经过存储器总线155耦合到主存储器150。主存储器150可以存储数据和指令序列,其中这些指令由处理器110的多个内核或包括在该系统中的任何其它设备来执行。MCH130包括存储器控制器135,用于根据与处理器110的多个内核以及计算系统100中其它设备相关联的存储器事务(transaction)来访问主存储器150。在一个实施例中,存储器控制器135可以位于处理器110或一些其它电路中。主存储器150可以包括提供可寻址存储位置的多种存储器器件,其中存储器控制器125可以从存储位置读取数据和/或向存储位置写入数据。主存储器150可以包括一个或多个不同的存储器器件类型,比如动态随机存取存储器(DRAM)器件、同步DRAM(SDRAM)器件、双倍数据速率(DDR)SDRAM器件,或其它存储器器件。
芯片组120可以包括输入/输出控制中心(ICH)140,用于支持到和/或来自计算系统100的其它组件的数据传输,这些其它组件比如:键盘、鼠标、网络接口等。ICH 40可以经过诸如总线165的总线来与其它组件耦合。该总线可以是外设组件互连(PCI)、加速图形端口(AGP)、通用串行互连(USB)、少针脚(LPC)互连、或任何其它I/O互连类型。ICH 140(或MCH130)可以耦合到图形设备160,其生成并向显示器输出图像。图形设备也可以在ICH140(或MCH130)与其它图形/视频设备之间提供接口。图形设备包括图形处理单元(GPU)170,其是专用图形渲染设备,用于高效地操作并显示计算机图形。GPU 170可以实现许多图形图元操作,以处理并渲染图形。
另外,图形设备160可以包括视频编解码器180,以便能够对数字视频进行视频编码/压缩和/或解码/解压缩。视频编解码器180还可以包括运动估计引擎(在图中未示出),用于基于诸如MPEG-2、VC-1和AVC标准的多种视频编码标准为视频压缩/编码进行运动估计。运动估计引擎可以是视频编解码器180的一部分,或者可以是GPU 170的一部分,或者可以是图形设备160中的独立引擎,或者可以在不同设备中。在一个实施例中,图形设备160可以位于MCH 130中。在另一实施例中,图形设备160可以位于处理器110或一些其它电路中。
图2示出了根据本申请中所公开主题的实施例的视频编码器的方框图,该视频编码器使用运动估计引擎来基于多种视频编码标准对数字视频进行压缩。可以耦合图像数据帧源210,以向编码器220提供图像数据帧。根据一些配置,编码器220可以根据诸如MPEG-2、VC-1或AVC标准的视频编码标准来应用编码和/或压缩算法。编码器220可以包括用于获得运动矢量的运动估计引擎225,使得在解码/解压缩过程中可以基于运动矢量和用于获得该运动矢量的参考帧来重建图像帧。
运动估计引擎225可以设计为针对多种视频编码标准执行运动估计。典型地,在用于视频编码/压缩的大多数视频标准中通常允许有三种图片类型:帧类型、场类型以及场-帧混合类型。帧类型用于对逐行扫描内容进行编码,并将全部宏块和参考图片视为连续的视频图片块。场类型多数用于对隔行扫描内容进行编码,并且编码器基本上将图片作为两个分离的场图片进行处理。运动估计中使用的全部宏块和参考图片在场类型或帧类型的情况之下都是相同的。因此,假设数字视频中的每个图片以帧格式存储在存储器缓冲器中,对于场类型需要进行用于读取图片的专门设计(例如,边界填充)。一旦将图片加载到运动估计引擎中,运动估计引擎对于场类型或帧类型以相同方式进行工作。当在帧中对隔行扫描内容进行编码时使用场-帧类型。依据视频标准,对于场-帧类型有两种子类型。一个子类型是帧类型宏块,其允许如基于MPEG-2和VC-1标准进行场类型分割。另一个子类型是16x32大宏块对,其能够如基于AVC标准被分成两个帧宏块或分成两个场宏块。
根据要基于不同视频标准进行编码/压缩的数字视频的图片类型,运动估计引擎225可以应用相应的失真计算模式。例如,对于帧类型数字视频信号(例如,使用AVC标准的视频信号),可以在4x4子块单元的基础上对总共41个宏块分割部分(macroblock partition)计算宏块搜索的失真度量;并且对于场类型和场-帧类型数字视频信号(例如,使用VC-1或MPEG-2标准的视频信号),可以对总共15个宏块分割部分计算宏块搜索的失真度量。另外,运动估计引擎225可以为使用不同视频标准获得的视频信号提供混合单向选项(前向/后向)和混合双向选项。此外,运动估计引擎225可以在运动估计期间使用统一的4抽头插值滤波器用于分数级宏块搜索。
运动估计引擎225可以针对相应的参考帧生成运动矢量。编码器220可以使用运动矢量和其相应的参考帧来进一步压缩视频信号。来自编码器220的已编码/已压缩视频信号可以存储在存储设备中和/或可以经过信道230发送到接收设备250。信道230可以是有线或无线信道。接收设备250可以对所接收的已编码/已压缩视频信号进行解码/解压缩,并基于参考帧和运动矢量来重建原始视频信号。
图3示出了根据本申请中公开主题的实施例的运动估计引擎300的方框图,其中视频编码器使用该运动估计引擎300来基于多种视频编码标准对视频信号进行编码/压缩。运动估计引擎300包括跳过(skip)检查模块310、整数搜索模块320、宏块(MB)分割模块330、分数级搜索模块340、双向检查模块350以及内部搜索模块360。运动估计引擎300可以与控制器390一起工作,其中控制器390控制/协调运动估计引擎300中不同模块的操作。在一个实施例中,可以没有独立的控制器,但是可以使用图形设备中的GPU(例如,图1中的GPU 170)控制运动估计引擎300中每个模块的操作和/或协调运动估计引擎300中模块之间的操作。在另一个实施例中,控制器390可以与运动估计引擎300集成在一起并成为运动估计引擎300的一部分。在一个实施例中,运动估计引擎300可以具有与其相关联的缓冲器(在图中未示出),以暂时存储从存储设备中读取的宏块,其中该存储设备存储将要进行编码/压缩的数字视频帧。控制器390可以向运动估计引擎一次提供一个宏块。
对于大多数视频编解码标准,所有宏块都具有默认的预测编码:一些运动矢量是根据其已编码的邻域宏块编码(例如,左、上、左上、右上以及先前已编码帧中的同一位置)来导出的。遵循相同的原则,具体描述随标准而变化。只要编码器和解码器达成一致,除用于指示该选择的已编码标志位之外在数据流中没有携带实际编码。这种已编码宏块称为跳过类型。因为跳过类型是用于对宏块进行编码的最有效的类型,所以跳过检测模块310经常将使用跳过类型的失真作为第一个被检查类型来进行检查。如果失真较小,则可以选择该跳过编码,而不需要经过其余的运动估计以尝试其它编码类型。
如果所接收的宏块需要经过运动估计过程,则可以将该宏块传送到整数搜索模块320。整数搜索模块320可以在具有整数索引的像素处针对所接收的宏块搜索参考帧。整数搜索模块320可以基于4x4子块单元计算搜索失真。例如,如果所接收的宏块是16x16像素,则整数搜索模块320可以将该宏块分割为四个4x4子块,并针对每个4x4子块计算失真。通过将四个4x4子块的失真加在一起可以得到该16x16宏块的失真。使用4x4子块作为失真计算单元为分割宏块的多种方式提供了灵活性,这是因为通过组合一个或多个4x4子块可以得到许多宏块分割部分。这也为具有不同尺寸的宏块提供了灵活性(例如,8x8、8x16和16x8宏块均可以被分割为多个4x4子块)。整数搜索模块320可以在与运动估计引擎300相关联的缓冲器中存储所有4x4子块以及整个宏块的失真。
MB分割模块330可以支持帧类型或场类型或场-帧类型数字视频信号的宏块分割的多种方式。如果没有子块小于8x8则宏块分割可以称为大分割,并且如果没有子块大于8x8则宏块分割可以称为小分割。事实上,当前很少有标准支持将大于8x8(比如,16x8或8x16)的块与小于8x8(比如,8x4、4x8和4x4)的块混合的宏块分割。如图5A所示,对于16x16宏块,有8种可能的大宏块帧类型分割(分割510、515、520、525、530、535、540和545)。可能的小分割的数目会非常大(例如,对于16x16宏块有数千种)。本申请中公开的主题的实施例可以支持这种大分割中的一部分或全部以及支持小分割的一部分。例如,AVC标准允许小分割,但是仅限于将每个8x8子区域划分为相同形状(即,一个8x8、两个8x4、两个4x8或四个4x4)的小分割。在一个实施例中,可以支持AVC标准允许的所有这种小分割和/或其它小分割。另外,可以支持两个场分割(即,如图5B中所示的分割560和分割570)。分割560包括两个16x8子块,其中一个子块具有全部偶数行而另一个子块具有全部奇数行。分割570包括四个8x8块,这是通过以下实现的:将16x16块分割为两个8x16子块572和574,并进一步将每个子块572和574分割为两个8x8子块,其中一个8x8子块具有全部偶数行而另一个8x8子块具有全部奇数行。
在一个实施例中,在用于帧类型视频信号或者用于当可以将两个场作为独立的图片或宏块进行编码时的场类型视频信号的第一模式中,可以支持41个子块(即,1个16x16、2个16x8、2个8x16、4个8x8、8个8x4、8个4x8和16个4x4)(例如,基于AVC标准的视频信号允许将子块最精细地分为4x4的块大小);并且在用于混合场-帧类型视频信号的第二模式中,可以支持15个子块(即,1个16x16、2个16x8、2个8x16、4个8x8、2场16x8和4场8x8)(例如,允许分别基于VC-1和/或MPEG-2标准以帧类型或场类型对宏块的视频信号进行编码)。在第一模式中,计算全部基本4x4子块的失真,并根据基本4x4子块的失真得到所有其它子块的失真,如图所示,不对每个子块进行计算,而是对共用的4x4子块进行计算,并随后如图6所示并通过下列伪代码将所有其它子块的失真相加:
b4[16]={{0,0},{4,0},{0,4},{4,4},{8,0},{12,0},{8,4},{12,4},
{0,8},{4,8},{0,12},{4,12},{8,8},{12,8},{8,12},{12,12}};
Dist4x4[i]=在像素p=&Mb[b4[i].y][b4[i].x]处开始的块p[0][0],p[0][1],p[0][2],p[0][3],p[1][0],...,p[3][3]的失真;其中i=0,1,...,15。
Dist8x4[j]=Dist4x4[j*2]+Dist4x4[j*2+1];其中j=0,1,2,3,4,5,6,7.
Dist4x8[j]=Dist4x4[j*2]+Dist4x4[j*2+2];其中j=0,2,4,6.
Dist4x8[j]=Dist4x4[j*2-1]+Dist4x4[j*2+1];其中j=1,3,5,7.
Dist8x8[k]=Dist8x4[k*2]+Dist8x4[k*2+1];其中k=0,1,2,3.
Dist8x16[0]=Dist8x8[0]+Dist8x8[2];
Dist8x16[1]=Dist8x8[1]+Dist8x8[3];
Dist16x8[0]=Dist8x8[0]+Dist8x8[1];
Dist16x8[1]=Dist8x8[2]+Dist8x8[3];
Dist16x16[0]=Dist16x8[0]+Dist16x8[1].
在第二模式中,可以采取相似的策略用于获得所有15个子块的失真。在该模式中,基本子块可以是4x4场子块,并且可以计算所有这种基本子块的失真,并且如图7所示并通过下列伪代码可以根据那些基本子块的失真导出所有其它子块的失真:
b4[16]={{0,0},{4,0},{0,8},{4,8},{8,0},{12,0},{8,8},{12,8},
{0,1},{4,1},{0,9},{4,9},{8,1},{12,1},{8,9},{12,9}};
Dist4x4F[i]=在像素的p=&Mb[b4[i].y][b4[i].x]处开始的块p[0][0],p[0][1],p[0][2],p[0][3],p[2][0],...,p[6][3]的失真;其中i=0,1,...,15。
Dist8x8[0]=Dist4x4F[0]+Dist4x4F[1]+Dist4x4F[8]+Dist4x4F[9];
Dist8x8[1]=Dist4x4F[4]+Dist4x4F[5]+Dist4x4F[12]+Dist4x4F[13];
Dist8x8[2]=Dist4x4F[2]+Dist4x4F[3]+Dist4x4F[10]+Dist4x4F[11];
Dist8x8[3]=Dist4x4F[6]+Dist4x4F[7]+Dist4x4F[14]+Dist4x4F[15];
Dist8x8F[0]=Dist4x4F[0]+Dist4x4F[1]+Dist4x4F[2]+Dist4x4F[3];
Dist8x8F[1]=Dist4x4F[4]+Dist4x4F[5]+Dist4x4F[6]+Dist4x4F[7];
Dist8x8F[2]=Dist4x4F[8]+Dist4x4F[9]+Dist4x4F[10]+Dist4x4F[11];
Dist8x8F[3]=Dist4x4F[12]+Dist4x4F[13]+Dist4x4F[14]+Dist4x4F[15];
Dist8x16[0]=Dist8x8[0]+Dist8x8[2];
Dist8x16[1]=Dist8x8[1]+Dist8x8[3];
Dist16x8[0]=Dist8x8[0]+Dist8x8[1];
Dist16x8[1]=Dist8x8[2]+Dist8x8[3];
Dist16x8F[0]=Dist8x8F[0]+Dist8x8F[1];
Dist16x8F[1]=Dist8x8F[2]+Dist8x8F[3];
Dist16x16[0]=Dist16x8[0]+Dist16x8[1].
利用在第一模式中支持的41个子块,可以支持很多宏块分割。相似地,利用第二模式中支持的15个子块,可以支持许多宏块分割。运动估计引擎300可以根据不同的标准规范在所有所支持的分割之间切换。通常,如果任何场形状是打开的,则将运动估计引擎设置到第二模式;否则,运动估计引擎处于第一模式。
在整数搜索模块320的整数搜索期间,可以计算第一模式或第二模式中所有具体子块的失真。对于每个子块,进行比较并记录最佳结果(具有最小失真)。
MB分割模块330还基于如上所述所得到的所记录的最佳子块失真,获得视频标准所允许的每种可能宏块分割的失真,其中基于该视频标准获得要进行编码/压缩的视频信号。然后,MB分割330可以比较所有可用宏块分割的失真,并选择具有最小的宏块分割部分总失真的宏块分割。
分数级搜索模块340可以在分数级像素位置处搜索宏块。通常,使用二分之一像素和四分之一像素值用于分数级宏块搜索。使用内插公式来获得二分之一像素值和四分之一像素值。例如,AVC标准使用下列6抽头公式:
对于1/2-像素:(1,-5,20,20,-5,1)/32;    (1)
对于1/4-像素:(1,-5,52,20,-5,1)/64.     (2)
VC-1标准使用如下定义的4抽头滤波器:
对于1/2-像素:(-1,9,9,-1)/16;            (3)
对于1/4-像素:(-4,53,18,-3)/64.           (4)
通常,也可以接受双线性插值(如MPEG2标准所使用的):
对于1/2-像素:(0,1,1,0)/2;               (5)
对于1/4-像素:(0,3,1,0)/4.                (6)
在一个实施例中,分数级搜索模块可以根据不同视频标准使用不同公式。在另一个实施例中,对于所有不同视频标准,可以使用统一的4抽头插值,如下所示:
对于1/2-像素:(-1,5,5,-1)/8;             (7)
对于1/4-像素:(-1,13,5,-1)/16.           (8)
如图9A(针对二分之一像素)和图9B(针对四分之一像素)所示,在方程式(7)和(8)中所示的4抽头插值公式是各种视频标准所使用的公式的良好近似。
双向运动估计细调模块350可以在子块级别或宏块级别上细调预测方向。在给定宏块分割模式的情况下,一些标准允许不同子块具有其自己的关于预测应当是单向还是双向以及预测应当是前向还是后向的决策;而在其它情况下,在宏块级别中作为整体做出这种决策。典型地,有三种场景:
1)每个子块具有其自己的关于预测应当是单向还是双向以及预测应当是前向还是后向的决策(例如,AVC标准)。在这种情况中,针对每个子块选择方向,并在每个子块的方向细调之后可以对宏块分割进行更新。
2)所有子块共享相同的方向,不论是单向还是双向以及是前向还是后向(例如,MPEG-2标准)。在这种情况中,首先针对每个单独的方向进行分割,并随后选择更好的一个方向。
3)所有子块必须全部是单向的或双向的。如果是单向的,每个子块能够决定是前向还是后向(例如,VC-1标准)。在这种情况中,首先对每个子块进行前向和后向的决策,然后执行用于单向的分割。针对单向最佳来检查双向,并且只有双向更好时才选择双向。
在一个实施例中,双向运动估计细调模块350可以被设计为适应所有上述情况。图8是示例过程800的流程图,其中双向运动估计细调模块可以用于细调运动估计。过程800在方框805处开始于最佳子块运动矢量,即,双向运动估计细调模块350在最佳宏块分割的基础上工作,其中最佳宏块分割是在双向细调开始之前确定的。在方框810处,双向运动估计细调模块350确定获得视频信号所基于的视频标准是否允许每个子块具有其自己的关于预测应当是前向还是后向的决策。如果结果是“否”,则在方框815处可以针对每个方向找到最佳宏块分割;并且在方框820处,在两个宏块分割之间(每方向一个)选择具有更小失真的一个方向。如果结果是“是”,则在方框825处,可以在方框825处合并所有子块的前向和后向运动矢量;并且在方框830处,可以基于合并的运动矢量得到总的最佳宏块分割。在方框835处,可以在所选择的分割上执行分数级细调(分数级搜索)。在方框840处,可以在所选择的分割上执行双向细调。在方框845处,双向运动估计细调模块350可以确定视频标准是否允许每个子块具有其自己的关于预测是应当单向还是双向的决策。如果结果是“否”,则在方框850处,可以通过在所有子块是单向的和双向的情况下比较在方框840处选择的分割的双向总结果来选择最终的方向模式。如果结果是“是”,则可以通过比较在方框840处选择的分割的每个子块的双向结果来选择最终的方向模式。在方框860处,过程800可以针对另一个宏块继续进行。
内部搜索模块360可以对所接收的宏块执行帧内搜索。当场景随帧而变化或者当没有找到具有足够小失真的运动矢量集时,帧内搜索可以更好地工作。在一个实施例中,内部搜索模块360可以与帧间搜索并行地执行帧内搜索。
另外,运动估计引擎300可以支持已有方案。在编码的任何阶段中,如果在参考帧中找到了某个“足够好”的宏块模式,则该运动估计引擎可以终止估计过程。参考帧中的“足够好”的模式是一个块,其中该块与宏块的总的已校正失真误差低于由用户作为运动估计命令的一部分所提供的阈值常量。
此外,运动估计引擎300可以支持细调跳过。如果整数搜索之后的最佳结果“仍较差”,则运动估计引擎300可以跳过分数级搜索和双向搜索并直接跳到帧内搜索以节省时间和计算。“仍较差”结果是参考帧中的一个块,其中该块与宏块的总的已校正失真误差高于由用户作为运动估计命令的一部分所提供的阈值常量。
此外,运动估计引擎300可以支持一种工作模式,在该工作模式下,除所有大分割的最佳结果之外该引擎还可以输出所有失真值,以允许用户能够对非编码应用使用运动估计以及进一步细调编码解决方案。
图4是根据本申请中公开主题的实施例的用于运动估计引擎对多种视频编码标准执行运动估计的一个示例过程400的流程图。过程400在方框405处开始。在方框410处,运动估计引擎(例如,图3中的300)可以从当前帧中接收宏块,并检查对于该宏块是否能够“P—跳过”。如果能够,则在方框415处运动估计引擎可以执行跳过检查。如果在方框420处确定确实可以从运动估计中跳过该宏块,则过程400可以直接跳到方框480。如果在方框410处发现不能够“P—跳过”或者如果在方框420处确定不可以从运动估计中跳过该宏块,则在方框425处运动估计引擎可以检查是否需要对该宏块进行帧间搜索。可以设置宏块和/或当前帧的信息比特矢量中的一个比特,以指示需要帧间搜索。如果需要帧间搜索,则在方框430处运动估计引擎可以执行整数搜索(上面针对整数搜索模块320进行了描述)。如果不需要帧间搜索,则在方框435处可以进一步确定是否需要对该宏块进行帧内搜索。如果结果为“是”,则过程400将直接进行到方框475。
在方框430处的整数搜索期间,运动估计引擎将确定搜索结果是否足够好,使得可以退出搜索以进行到方框440。如果搜索结果与宏块之间的失真低于预定阈值,则搜索结果足够好。该阈值可以由用户来预定,并经由命令提供到运动估计引擎。如上文针对图3所述,在帧间搜索期间,可以计算并保留宏块的所有4x4基本块的失真。根据各个4x4基本块的失真可以得到其它形状子块的失真。基于如此导出的所有失真,在方框440处可以确定最优宏块分割。
在方框445处,可以确定所确定的最优宏块分割的总失真是否高于“太差”阈值或者低于“太好”阈值。“太差”阈值用于指示整数搜索结果是不可接收的并且因此必须进行内部搜索。“太好”阈值用于指示整数搜索结果足够好并且不必要对该搜索结果进一步进行细调。这两个阈值均由用户预定,并经由命令提供到运动估计引擎。如果整数搜索的结果太差,则过程400可以直接进行到用于帧内搜索的方框475。另一方面,如果结果太好,则过程400可以早早退出并直接进行到方框480。如果搜索结果在“太差”阈值和“太好”阈值之间,则过程400可以进行到方框450,以确定是否需要分数级搜索细调。
在方框450处,可以检查信息比特矢量中用于指示是否需要对该宏块进行分数级搜索的比特。如果设置了分数级搜索比特,则在方框455处可以执行分数级搜索(如上文针对图3中的分数级搜索模块340所描述的)。如果在分数级搜索之后在方框460处确定该宏块与其在参考帧中的相应搜索结果之间的总失真低于“早退出”阈值,则过程400可以直接进行到方框480,而不需对该搜索结果进行任何进一步细调。可以将“早退出”阈值设置为与“太好”阈值相同,或者可以预定为不同值。可以经由命令将“早退出”阈值提供到运动估计引擎。
如果在方框460处确定不许可早退出,则过程400可以进行到方框465,用于对来自方框455的搜索结果进一步进行处理。在方框465处,通过检查信息比特矢量中的双向比特,可以确定是否需要双向细调。如果设置了双向比特,则在方框470处可以执行双向细调(如上文针对图3中的双向运动估计细调模块350所描述的);否则,过程400可以进行到方框480。在方框475处可以执行帧内搜索。通过方框480可以接收来自不同方框的结果,其中方框480确定最终结果并以视频编码处理的下一阶段所需的格式输出该结果。
尽管参照图1-9中的方框和流程图来描述所公开主题的示例性实施例,但是本领域技术人员应当理解,可以替换地使用实现所公开主题的很多其它方法。例如,可以改变流程图中方框的执行顺序,和/或可以改变、删除或组合所述方框/流程图中的一些方框。
在前面的描述中,已经描述了所公开主题的各个方面。为了说明的目的,给出了具体数字、系统和配置,以便提供对本主题的全面理解。然而,显而易见地,对受益于本公开内容的本领域技术人员而言,本主题可以在没有这些具体细节的情况下实现。在其它例子中,省略、简化、组合或分解了公知特征、组件或模块,以避免混淆所公开的主题。
所公开主题的各种实施例可以在硬件、固件、软件或其组合中实现,
并且可以通过参照或结合程序代码来进行描述,其中,程序代码比如:指令、函数、程序、数据结构、逻辑、应用程序、设计表示或用于设计模拟、仿真和制造的形式,当机器访问这些程序代码时导致该机器执行任务、定义抽象数据类型或低级硬件环境、或生成结果。
对于模拟,程序代码可以使用硬件描述语言或其它功能描述语言来表示硬件,其中这些语言实质上提供了期望所设计硬件如何执行的模型。程序代码可以是汇编或机器语言,或者是可以被编译和/或解释的数据。此外,在本领域中提到软件,通常是按照采取一种动作或造成一个结果的一种或其它形式。这种表达方式仅是阐明处理系统开始执行程序代码的一种简要方式,其中该程序代码的执行会造成处理器执行一种动作或产生一个结果。
例如,程序代码可以存储在易失性和/或非易失性存储器中,比如存储设备和/或关联的机器可读或机器可访问介质,包括固态存储器、硬盘驱动器、软盘、光存储器、磁带、闪存存储器、记忆棒、数字视频盘、数字多功能光盘(DVD)等,以及更加特殊的介质,比如机器可访问生物状态保存存储。机器可读介质可以包括用于以机器可读的形式存储、发送或接收信息的任何机制,并且介质可以包括有形介质,电、光、声或其它形式的对程序代码进行编码的传播信号或载波可以通过该有形介质,比如,天线、光纤、通信接口等。程序代码可以以分组、串行数据、并行数据、传播信号等形式进行发送,并且可以以压缩或加密形式使用。
程序代码可以在可编程机器上执行的程序中实现,其中可编程机器比如:移动或静止计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机和其它电子设备,其分别包括处理器、处理器可读的易失性和/或非易失性存储器、至少一个输入设备和/或一个或多个输出设备。可以将程序代码应用到使用输入设备输入的数据,以执行所描述的实施例以及生成输出信息。输出信息可以应用于一个或多个输出设备。本领域技术人员应当注意,可以利用各种计算机系统配置来实施所公开主题的实施例,其中这些计算机系统配置包括:多处理器或多核处理器系统、小型计算机、大型计算机、以及可以嵌入到基本上任何设备的普及型或微型计算机或处理器。所公开主题的实施例也能够在分布式计算环境中实施,在分布式计算环境中,可以由通过通信网络链接的远程处理设备来执行任务。
尽管可以按照顺序过程来描述操作,但是事实上一些操作可以并行、同时和/或在分布式环境中执行,并且其中本地和/或远程存储程序代码,用于由单处理器或多处理器机器进行访问。此外,在一些实施例中,在不偏离所公开主题的精神的情况下,可以重新设置操作的顺序。程序代码可以由嵌入式控制器或者结合嵌入式控制器使用。
尽管参照示例性实施例对所公开主题进行了描述,但是本说明不旨在被视为限制性的。本公开主题所涉及的对示例性实施例的各种修改,以及对本领域技术人员而言显而易见的本主题的其它实施例,应当落入所公开主题的范围内。

Claims (23)

1、一种用于执行视频编码的运动估计的装置,包括:
跳过检查模块,用于确定是否可以从运动估计中跳过当前图片帧中的宏块;
整数搜索模块,用于如果没有从运动估计中跳过所述宏块,则在整数像素位置处针对所述宏块搜索参考帧(“整数搜索”);以及
宏块分割模块,用于基于来自所述整数搜索模块的结果确定宏块分割。
2、如权利要求1所述的装置,还包括分数级搜索模块,用于如果需要精细调整来自所述整数搜索模块的所述结果,则通过在分数级像素位置处在所述参考帧中搜索所述宏块,来精细调整来自所述整数搜索模块的所述结果。
3、如权利要求1所述的装置,还包括双向运动估计细调模块,用于基于所述宏块分割来细调所述宏块的预测方向。
4、如权利要求1所述的装置,还包括内部搜索模块,用于对所述宏块进行帧内搜索。
5、如权利要求1所述的装置,还包括控制器,用于控制所述装置中模块的操作、在所述装置的所述模块之间进行协调、以及将运动估计结果输出到视频编码器。
6、如权利要求5所述的装置,其中,所述控制器确定是否跳过某个模块的操作。
7、如权利要求1所述的装置,其中,当所述整数搜索模块确定所述参考帧中的一个块与所述宏块之间的失真低于预定阈值时,所述整数搜索模块退出搜索整数搜索。
8、如权利要求1所述的装置,其中,如果基于所确定宏块分割的在所述宏块与其在所述参考帧中的相应块之间的失真大于第一阈值或小于第二阈值,则使用来自所述宏块分割模块的结果来形成对所述宏块的运动估计的最终结果,其中所述第一阈值对应较高失真,所述第二阈值对应较低失真。
9、一种计算系统,包括:
存储器,用于存储与参考帧相关联的信息;以及
运动估计引擎,用于对当前帧执行运动估计,并且基于所述参考帧为所述当前帧生成运动矢量,所述运动估计引擎包括:
跳过检查模块,用于确定是否可以从运动估计中跳过所述当前帧中的宏块;
整数搜索模块,用于如果没有从运动估计中跳过所述宏块,则在整数像素位置处针对所述宏块搜索所述参考帧(“整数搜索”);以及
宏块分割模块,用于基于来自所述整数搜索模块的结果确定宏块分割。
10、如权利要求9所述的计算系统,其中所述运动估计引擎还包括分数级搜索模块,用于如果需要精细调整来自所述整数搜索模块的所述结果,则通过在分数级像素位置处在所述参考帧中搜索所述宏块,来精细调整来自所述整数搜索模块的所述结果。
11、如权利要求9所述的计算系统,其中所述运动估计引擎还包括双向运动估计细调模块,用于基于所述宏块分割来细调所述宏块的预测方向。
12、如权利要求9所述的计算系统,其中所述运动估计引擎还包括内部搜索模块,用于对所述宏块进行帧内搜索。
13、如权利要求9所述的计算系统,其中所述运动估计引擎还包括控制器,用于控制所述装置中模块的操作、在所述装置的所述模块之间进行协调、以及将运动估计结果输出到视频编码器。
14、如权利要求13所述的计算系统,其中,所述控制器确定是否跳过某个模块的操作。
15、如权利要求13所述的计算系统,其中,所述控制器的功能由图形处理单元(“GPU”)来执行。
16、如权利要求9所述的计算系统,其中,当所述整数搜索模块确定所述参考帧中的一个块与所述宏块之间的失真低于预定阈值时,所述整数搜索模块退出整数搜索。
17、如权利要求9所述的计算系统,其中,如果基于所确定宏块分割的在所述宏块与其在所述参考帧中的相应块之间的失真大于第一阈值或小于第二阈值,则使用来自所述宏块分割模块的结果来形成对所述宏块的运动估计的最终结果,其中所述第一阈值对应较高失真,所述第二阈值对应较低失真。
18、如权利要求9所述的计算系统,其中,所述运动估计引擎位于所述计算系统中的图形设备上。
19、一种用于执行视频编码的运动估计的方法,包括:
从当前帧中接收宏块;
检查是否指示从运动估计中跳过所述宏块;
如果指示跳过所述宏块,则确定是否确实可以从运动估计中跳过所述宏块(“跳过检查”);
如果可以从运动估计中跳过所述宏块,则检查整数搜索是否被设置为要执行;
如果所述整数搜索被设置为要执行,则在整数像素位置处在参考帧中对所述宏块执行搜索(“整数搜索”);
如果所述整数搜索没有被设置为要执行,则检查是否内部搜索被设置为要执行;
如果所述内部搜索被设置为要执行,则对所述宏块执行帧内搜索。
20、如权利要求19所述的方法,还包括如果在所述整数搜索和所述跳过检查中的至少一个的过程期间在所述参考帧中的一个块与所述宏块之间的失真度量低于预定阈值,则退出运动估计并将所述宏块的最终结果输出到视频编码器。
21、如权利要求19所述的方法,还包括:
在所述整数搜索期间,计算所述宏块中所有4x4像素子块的失真;
导出所述宏块中其它尺寸子块的失真;以及
确定宏块分割,所述宏块分割造成了所述宏块与其在所述参考帧中相应块之间的最小失真。
22、如权利要求19所述的方法,还包括如果分数级搜索被设置为要执行,则通过在分数级像素位置处在所述参考帧中搜索所述宏块,来精细调整来自所述整数搜索的结果。
23、如权利要求19所述的方法,还包括如果双向细调被设置为将要执行,则基于所述宏块分割来细调所述宏块的预测方向。
CN2008101847274A 2007-12-30 2008-12-29 用于视频编码的可配置性能运动估计的方法、装置和系统 Expired - Fee Related CN101472181B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/967,228 2007-12-30
US11/967,228 US9332264B2 (en) 2007-12-30 2007-12-30 Configurable performance motion estimation for video encoding

Publications (2)

Publication Number Publication Date
CN101472181A true CN101472181A (zh) 2009-07-01
CN101472181B CN101472181B (zh) 2012-10-31

Family

ID=40577777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101847274A Expired - Fee Related CN101472181B (zh) 2007-12-30 2008-12-29 用于视频编码的可配置性能运动估计的方法、装置和系统

Country Status (3)

Country Link
US (1) US9332264B2 (zh)
EP (1) EP2076046A3 (zh)
CN (1) CN101472181B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547289A (zh) * 2012-01-17 2012-07-04 西安电子科技大学 基于gpu并行实现的快速运动估计方法
CN102647588A (zh) * 2011-02-17 2012-08-22 北京大学深圳研究生院 一种用于分层搜索运动估计的gpu加速方法
CN104247431A (zh) * 2012-04-20 2014-12-24 英特尔公司 性能和带宽高效的分数运动估计
CN104937931A (zh) * 2013-01-21 2015-09-23 联发科技股份有限公司 使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置
US10057590B2 (en) 2014-01-13 2018-08-21 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9204149B2 (en) * 2006-11-21 2015-12-01 Vixs Systems, Inc. Motion refinement engine with shared memory for use in video encoding and methods for use therewith
US20090167775A1 (en) 2007-12-30 2009-07-02 Ning Lu Motion estimation compatible with multiple standards
US20090323807A1 (en) * 2008-06-30 2009-12-31 Nicholas Mastronarde Enabling selective use of fractional and bidirectional video motion estimation
US20100103183A1 (en) * 2008-10-23 2010-04-29 Hung-Ming Lin Remote multiple image processing apparatus
US20120027091A1 (en) * 2010-07-28 2012-02-02 Wei-Lien Hsu Method and System for Encoding Video Frames Using a Plurality of Processors
CN103974073B (zh) * 2013-01-24 2017-11-21 晨星半导体股份有限公司 影像数据处理方法以及影像处理装置
US10924753B2 (en) * 2013-12-23 2021-02-16 Intel Corporation Modular motion estimation and mode decision engine
US10621731B1 (en) * 2016-05-31 2020-04-14 NGCodec Inc. Apparatus and method for efficient motion estimation for different block sizes
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
CN109089121B (zh) * 2018-10-19 2021-06-22 北京金山云网络技术有限公司 一种基于视频编码的运动估计方法、装置及电子设备
US11902570B2 (en) * 2020-02-26 2024-02-13 Intel Corporation Reduction of visual artifacts in parallel video coding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835740A (en) * 1992-06-30 1998-11-10 Discovision Associates Data pipeline system and data encoding method
EP1139669A1 (en) * 2000-03-28 2001-10-04 STMicroelectronics S.r.l. Coprocessor for motion estimation in digitised video sequence encoders
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7305034B2 (en) * 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US20050094729A1 (en) * 2003-08-08 2005-05-05 Visionflow, Inc. Software and hardware partitioning for multi-standard video compression and decompression
CN1236624C (zh) * 2003-09-04 2006-01-11 上海大学 多种块模式的快速整像素运动估计方法
JP3846489B2 (ja) * 2004-05-10 2006-11-15 セイコーエプソン株式会社 画像データ圧縮装置、エンコーダ、電子機器及び画像データ圧縮方法
US7432917B2 (en) * 2004-06-16 2008-10-07 Microsoft Corporation Calibration of an interactive display system
US20060002474A1 (en) * 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
EP1633129B1 (en) * 2004-09-02 2015-06-24 Thomson Licensing Method and apparatus for decoding encoded groups of pictures of a video sequence and presenting said video sequence and said groups of pictures in temporally backward direction
US7724972B2 (en) * 2005-03-01 2010-05-25 Qualcomm Incorporated Quality metric-biased region-of-interest coding for video telephony
US9172973B2 (en) * 2005-04-01 2015-10-27 Broadcom Corporation Method and system for motion estimation in a video encoder
KR100718135B1 (ko) * 2005-08-24 2007-05-14 삼성전자주식회사 멀티 포맷 코덱을 위한 영상 예측 장치 및 방법과 이를이용한 영상 부호화/복호화 장치 및 방법
TWI271106B (en) * 2005-10-25 2007-01-11 Novatek Microelectronics Corp Apparatus and method for motion estimation supporting multiple video compression standards
CN1791224A (zh) * 2005-12-19 2006-06-21 宁波大学 一种基于h.264的自适应块搜索范围快速运动估计方法
US7626518B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding systems and methods in computational core of programmable graphics processing unit
US8055301B2 (en) * 2007-08-06 2011-11-08 Mitsubishi Electric Research Laboratories, Inc. Wireless networks incorporating implicit antenna selection based on received sounding reference signals

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102647588A (zh) * 2011-02-17 2012-08-22 北京大学深圳研究生院 一种用于分层搜索运动估计的gpu加速方法
CN102647588B (zh) * 2011-02-17 2014-09-24 北京大学深圳研究生院 一种用于分层搜索运动估计的gpu加速方法
CN102547289A (zh) * 2012-01-17 2012-07-04 西安电子科技大学 基于gpu并行实现的快速运动估计方法
CN102547289B (zh) * 2012-01-17 2015-01-28 西安电子科技大学 基于gpu并行实现的快速运动估计方法
CN104247431A (zh) * 2012-04-20 2014-12-24 英特尔公司 性能和带宽高效的分数运动估计
US10021387B2 (en) 2012-04-20 2018-07-10 Intel Corporation Performance and bandwidth efficient fractional motion estimation
CN104247431B (zh) * 2012-04-20 2019-04-05 英特尔公司 性能和带宽高效的分数运动估计
CN104937931A (zh) * 2013-01-21 2015-09-23 联发科技股份有限公司 使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置
CN104937931B (zh) * 2013-01-21 2018-01-26 联发科技股份有限公司 使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置
US10057590B2 (en) 2014-01-13 2018-08-21 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding

Also Published As

Publication number Publication date
EP2076046A3 (en) 2012-07-18
US9332264B2 (en) 2016-05-03
EP2076046A2 (en) 2009-07-01
CN101472181B (zh) 2012-10-31
US20090168883A1 (en) 2009-07-02

Similar Documents

Publication Publication Date Title
CN101472181B (zh) 用于视频编码的可配置性能运动估计的方法、装置和系统
CN104854866B (zh) 下一代视频的内容自适应、特性补偿预测
CN103220518B (zh) 用于对运动矢量进行编码和解码的方法和设备
CN105704495B (zh) 时间运动矢量预测的方法与装置
CN106131568B (zh) 推导运动向量预测项或运动向量预测项候选项的方法及装置
TWI445411B (zh) 在譯碼單元之視頻譯碼中執行局部運動向量推導之方法與相應裝置
CN105874795B (zh) 在波前并行处理被启用时对图片内预测模式的规则
CN104885470B (zh) 用于下一代视频的预测和编码的内容自适应划分
US9807410B2 (en) Late-stage mode conversions in pipelined video encoders
CN102204254B (zh) 使用隐式运动预测进行预测精细化的方法及装置
CN110024393A (zh) 用于视频译码的低复杂度符号预测
CN110495169A (zh) 视频图像处理方法与装置
CN106973297A (zh) 视频编码方法和混合视频编码器
CN104471941B (zh) 3d视频编码中的视图间子分割预测的方法和装置
US9948934B2 (en) Estimating rate costs in video encoding operations using entropy encoding statistics
CN102342102A (zh) 具有先进的空间过滤差动矢量的多候选运动估计
CN109587479A (zh) 视频图像的帧间预测方法、装置及编解码器
JP2006246431A (ja) 画像符号化装置および画像符号化方法
CN106170092A (zh) 用于无损编码的快速编码方法
CN106851316A (zh) 对帧内预测模式进行解码的方法
CN105850132B (zh) 编解码视频数据块的方法和装置
CN104429074A (zh) 3d视频编码中视差矢量导出的方法和装置
CN104754337B (zh) 视频编码方法
CN1589028B (zh) 基于像素流水的帧内预测装置及预测方法
CN106688234A (zh) 具有改善的转置缓冲器的可缩放变换硬件架构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121031

Termination date: 20191229

CF01 Termination of patent right due to non-payment of annual fee