CN107005709A - 对于任意形状的运动估计 - Google Patents

对于任意形状的运动估计 Download PDF

Info

Publication number
CN107005709A
CN107005709A CN201580063889.0A CN201580063889A CN107005709A CN 107005709 A CN107005709 A CN 107005709A CN 201580063889 A CN201580063889 A CN 201580063889A CN 107005709 A CN107005709 A CN 107005709A
Authority
CN
China
Prior art keywords
motion vector
block
distortion
pixels
seed
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
CN201580063889.0A
Other languages
English (en)
Other versions
CN107005709B (zh
Inventor
S-H.李
J.M.霍兰德
徐理东
江宏
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 CN107005709A publication Critical patent/CN107005709A/zh
Application granted granted Critical
Publication of CN107005709B publication Critical patent/CN107005709B/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
    • H04N19/537Motion estimation other than block-based
    • H04N19/543Motion estimation other than block-based using regions
    • 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/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • 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
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

讨论了涉及针对任意像素块形状提供运动估计的技术。这样的技术可以包括基于对运动估计的多个调用来生成用于像素块的畸变网格,使得畸变网格包括与像素块的区、种子运动向量以及候选运动向量相关联的畸变值,以及基于畸变网格来确定用于像素块的最佳运动向量。

Description

对于任意形状的运动估计
优先权声明
本申请要求于2014年12月23日提交的题为“MOTION ESTIMATION FOR ARBITRARYSHAPES”的美国专利申请序列号14/580,931的优先权,并且通过引用在其整体上并入该美国专利申请。
背景技术
视频编码器压缩视频信息,使得更多信息可以在给定带宽上发送或者以给定文件大小保存。所压缩的信号或文件可以传输至接收器或视频解码器,视频解码器可以对信号或文件进行解码或解压缩,以显示给用户。这样的视频编解码器系统可以遵循格式或标准。例如,视频压缩标准包括H.264/MPEG-4先进视频编码(AVC)标准、高效率视频编码(HEVC)标准以及VP9标准。这样的标准可以包括基本功能模块,诸如帧内/帧间预测、变换、量化、环路滤波以及熵编码。例如,相比于AVC,HEVC(由ISO/IEC(国际标准化组织/国际电工委员可能)和ITU-T(ITU通讯标准部门)联合开发并且在2013年公布的AVC的后继者)可以以相同水平的视觉质量使压缩率翻倍。即将到来的UHD和8k UHD预计主要基于HEVC来实施。此外,目前主要基于AVC编码的较低分辨率内容预计转向HEVC编码。VP9是HEVC的直接竞争者。
如讨论的,视频编码的一方面可以包括帧间预测,其可以包括运动估计。运动估计可以包括确定运动向量,其描述从诸如视频帧的一个图像到诸如视频后续帧的另一图像的变换。在一些示例中,运动估计可以包括基于块匹配的运动估计,使得运动向量与帧的像素块(或诸如编码单元等的像素的类似部分)相关联。这样的运动向量可以编码并且提供给解码器,其可以基于经解码的运动向量来执行针对视频帧的运动补偿,以生成经解码的视频帧。此外,这样的运动向量可以由视频编码器本地地使用以在本地解码循环内执行运动补偿,以用于残差(例如,经解码的像素块与源像素块之间的差异)的最终生成和编码,所述残差也可以提供给解码器。
再进一步,这样的运动估计技术可以支持除了编码和解码应用以外的其他应用。例如,运动估计技术或者更一般地,块匹配搜索技术可以在姿势跟踪应用、图像稳定应用等中实施。
在一些运动估计上下文中,与个体运动向量相关联的像素块的大小可能不断增加。例如,在H.264中,16x16宏块可以与个体运动向量相关联并且在HEVC和VP9中,高达64x64个编码单元可以与个体运动向量相关联。例如,运动估计可以包括基于一个或多个参考帧的搜索面积或窗口而针对当前帧的像素块执行的搜索。相比于较小像素块,这样较大像素块的支持可以减少编码比特的数量。然而,随着像素块大小的增加,这样的像素块搜索可能随着硬件实施方式的复杂性和存储器通信量的增加而造成计算成本的增加。
相对于这些以及其他考量,需要本改进。这样的改进可能随着压缩高质量视频、执行姿势跟踪、提供图像稳定等的需求变得更加普遍而变得至关重要。
附图说明
在此描述的材料通过示例而是不通过附图中的限制的方式来说明。为了说明的简单和清楚,附图中图示的元件并不必然按比例绘制。例如,为了清楚,一些元件的尺寸可以相对于其他元件放大。此外,在合适的情况下,在附图当中重复参考标记以指示相应或类似元件。在附图中:
图1是图示包括示例运动估计引擎的示例装置的方框图;
图2图示示例种子运动向量和示例候选运动向量;
图3图示示例畸变网格;
图4图示示例像素块;
图5图示用于提供运动估计的示例装置;
图6图示示例畸变网格;
图7是图示用于确定用于像素块的种子运动向量的示例过程的流程图;
图8图示示例像素块;
图9图示应用于示例像素块的示例像素掩蔽;
图10是图示示例运动估计引擎的方框图;
图11是图示用于确定用于像素块的运动向量的示例过程的流程图;
图12是图示用于提供运动估计的示例过程的流程图;
图13是用于提供运动估计的示例系统的说明性图;
图14是示例系统的说明性图;以及
图15图示全部根据本公开的至少一些实施方式布置的示例小形状因子装置。
具体实施方式
现参照所附附图描述一个或多个实施例或实施方式。虽然讨论了具体配置和布置,但应理解,这仅出于说明性目的。本领域技术人员将认识到,在不偏离描述的精神和范围的情况下可以采用其他配置和布置。对于相关领域的技术人员来说清楚的,在此描述的技术和/或布置也可以在除了在此描述的以外的各种其他系统和应用中采用。
虽然以下描述阐述了可以例如在诸如片上系统(SoC)架构的架构中说明的各种实施方式,但是在此描述的技术和/或布置的实施方式不限于特定架构和/或计算系统,并且可以由用于类似目的的任意架构和/或计算系统来实施。例如,采用例如多个集成电路(IC)芯片和/或封装体的各种架构,和/或诸如机顶盒、智能电话等的各种计算装置和/或消费电子(CE)装置,可以实施在此描述的技术和/或布置。此外,虽然以下描述可能阐述了许多具体细节,诸如逻辑实施方式、系统组件的类型和相互关系、逻辑分区/集成选择等,但是所要求保护的主题可以在没有这样的具体细节的情况下实践。在其他实例中,诸如例如控制结构和全软件指令序列的一些材料可能未详细示出以避免模糊在此公开的材料。
在此公开的材料可以以硬件、固件、软件或其任意组合来实施。在此公开的材料也可以实施为机器可读介质上的指令,其可以由一个或多个处理器读取和执行。机器可读介质可以包括用于存储或传输可由机器(例如,计算装置)读取的形式的信息的任意介质和/或机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪速存储器装置;电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)及其他。
在说明书中提及“一个实施方式”、“实施方式”、“示例实施方式”等指示所描述的实施方式可以包括特定特征、结构或特性,但每个实施例可以并不必然包括该特定特征、结构或特性。此外,这样的短语并不必然指代相同实施方式。进一步的,应认为无论是否明确描述,本领域技术人员在其知识范围内都可以结合其他实施方式来实现这样的特征、结构或特性。
在此描述的方法、装置、设备、计算平台和物品涉及运动估计并且具体地,涉及针对像素块生成畸变网格,以及基于所生成的畸变网格来确定用于像素块的最佳运动向量。
如以上描述的,在一些上下文中,相比于先前标准,现在可以基于较大像素块来执行运动估计。这样的较大像素块可能在实施像素块搜索中提供困难并且具体地,在硬件中实施像素块搜索中提供困难。例如,使用较大像素块可能大大增加实施逻辑电路和存储器通信量的复杂度。如在此进一步讨论的,所描述的技术可以减轻或消除这样的困难。此外,在实施标准或较小像素块的上下文中,所描述的技术可以提供诸如较快的处理和/或容易实施等优点。由此,在此讨论的技术和系统不限于任意特定的像素块大小。此外,这样的运动估计技术可以应用于任意形状的像素块。例如,在标准上下文中,像素块可以是正方形形状的。然而,使用在此讨论的技术,运动估计可以应用于任意形状的像素块。
例如,在一些实施例中,像素块可以分割或划分为两个或更多个区并且种子运动向量可以针对像素块而生成。例如,种子运动向量可以基于像素块的下采样版本经由对运动估计引擎的调用来生成,使得所得到的运动向量映射到像素块的分辨率。随后可以基于像素块的区和与种子运动向量相邻(以及在一些示例中包围种子运动向量)的多个候选运动向量来生成畸变网格。例如,可以针对像素块的区调用运动估计引擎(例如,通过提供与像素块的区相关联的源像素块)并且运动估计引擎可以提供包括每一个候选运动向量(在一些示例中包括种子运动向量)的畸变的畸变网格或阵列。可以对运动估计引擎做出多个调用(例如通过提供与其他区相关联的源像素块)以生成包括用于区和候选运动向量的每一个组合的畸变值的全畸变网格。基于全畸变网格,可以从候选运动向量中确定最佳运动向量。例如,最佳运动向量可以与最小畸变求和值相关联,使得针对每个候选运动向量和种子运动向量生成畸变求和值。
在一些示例中,最佳运动向量可以用于后续处理(例如,视频编码、姿势或运动跟踪或图像稳定等)。在其他示例中,最佳运动向量可以用在对运动估计引擎的后续组调用中以确定用于像素块的较高分辨率最佳运动向量,该较高分辨率最佳运动向量随后可以用于后续处理。例如,如果第一最佳运动向量是整数分辨率最佳运动向量,则后续最佳运动向量可以是半像素分辨率最佳运动向量,并且如果第一最佳运动向量是半像素分辨率最佳运动向量,则后续最佳运动向量可以是四分之一像素分辨率最佳运动向量,等等。例如,处理可以重复以获得更加精确的最佳运动向量。
这样的处理可以在减少硬件成本或计算成本的情况下提高运动估计效率(以及在诸如HEVC或VP9的视频编码上下文中的编码效率)。例如,如在此进一步讨论的,这样的处理可以使用基于NxN块的运动估计引擎来对2Nx2N像素块执行运动估计。例如,2Nx2N像素块可以分割为四个NxN区。可以基于种子运动向量,针对四个NxN区中的每一个来执行硬件调用(例如,对于四个调用的每一个使用相同的种子运动向量)以生成如所讨论的畸变网格和最佳运动向量。这样的处理从而可以使用基于NxN块的运动估计引擎来提供2Nx2N像素块的高效生成,这可以节省计算复杂度和功率等。
图1是图示根据本公开的至少一些实施方式布置的包括示例运动估计引擎105的示例装置100的方框图。如图1所示,运动估计引擎105可以接收源像素块(源)101、参考像素区域(参考)102、种子运动向量(种子MV)103和/或网格启用/禁用信号(网格信号)104,并且运动估计引擎105可以提供估计的运动向量(估计的MV)106和/或畸变网格107。运动估计引擎105可以经由任意合适装置100来实施,诸如计算机、膝上型计算机、平板计算机、智能电话、相机、游戏装置等,如在此进一步关于装置500、系统1400和装置1500讨论的。在一些示例中,源像素块101、参考像素区域102、种子运动向量103和网格启用/禁用信号104可以提供给运动估计引擎105作为调用,诸如命令调用等。
运动估计引擎105可以包括用于基于源像素块101、参考像素区域102、种子运动向量103和网格启用/禁用信号104来生成估计的运动向量106和/或畸变网格107的任意合适硬件、固件、软件或其组合。在一些示例中,运动估计引擎105可以以硬件提供,诸如经由图形处理单元的硬件。在一些示例中,运动估计引擎105可以是能够处理任意形状的基于块的硬件。此外,在一些示例中,运动估计引擎105可以处理有限大小的源像素块101。大小限制可以是基于源像素块101的像素数量、源像素块101的尺寸等的任意合适大小限制。在一些示例中,源像素块101的大小限制可以是256个像素或者16x16像素的尺寸等。然而,如讨论的,运动估计引擎105可以具有任意这样的大小限制(例如,32x32大小限制)或者没有这样的大小限制。
例如,在网格启用/禁用信号104被启用时,运动估计引擎105可以基于源像素块101、参考像素区域102、以及与种子运动向量103相关联的候选运动向量来生成畸变网格107。种子运动向量103可以使用任意合适的一种或多种技术、诸如在此讨论的那些来生成,并且种子运动向量103可以代表用于源像素块101的低分辨率运动向量、最佳猜测运动向量、第一猜测运动向量、估计的运动向量等。在一些示例中,种子运动向量103可以基于对运动估计引擎105的较早调用针对下采样的源像素块101和下采样的参考像素区域而生成以作为估计的运动向量106,使得种子运动向量可以是用于源像素块101和参考像素区域102的全分辨率的估计的运动向量106的缩放或映射表示。
如在此讨论的,源像素块101可以具有任意大小和形状。此外,源像素块101可以包括表示像素的块的任意合适的数据或数据结构,诸如luma数据、色度数据等。类似地,参考像素区域102可以包括表示像素的参考区域的任意合适数据或数据结构,诸如luma数据、色度数据等。源像素块101可以例如是当前经由运动估计技术处理的帧的一部分,并且参考像素区域102可以是先前帧或先前处理的帧的一部分,并且可以提供用于处理当前帧的基础。例如,先前处理的帧可以是时间上在前的帧、时间上在后的帧、这样的帧的组合、合成的或经其他方式处理的帧等。参考像素区域102可以大于源像素块101,因为参考像素区域102的各个部分可以使用候选运动向量基于源像素块101来搜索。
畸变网格107可以基于种子运动向量103和与种子运动向量103相关联的候选运动向量来生成。例如,畸变网格107可以包括用于每个候选运动向量(例如,包括种子运动向量103)的畸变值,使得畸变值基于源像素块101和参考像素区域102来生成。例如,在网格启用/禁用信号104被触发时,除了源像素块101和参考像素区域102输入以外,运动估计引擎105可以获取种子运动向量103作为输入,并且运动估计引擎105可以输出包括用于多个候选运动向量中的每一个的畸变值的畸变网格107。畸变网格107的畸变值可以包括如在此进一步讨论的任意合适的畸变值。
在网格启用/禁用信号104被禁用时,运动估计引擎105可以生成估计的运动向量106。在一些示例中,在网格启用/禁用信号104被禁用时,可以不提供种子运动向量103,并且参考像素区域102的区域可以增加以提供更大的搜索区域用于生成估计的运动向量106。例如,估计的运动向量106可以基于由运动估计引擎105内部地使用的类似于畸变网格107的畸变网格来生成,使得估计的运动向量106可以与畸变网格107的畸变值的最小畸变值相关联。此外,在网格启用/禁用信号104被启用时,在一些实施方式中可以提供估计的运动向量106。
如讨论的,畸变网格107可以基于与种子运动向量103相关联的候选运动向量来生成。在一些示例中,与种子运动向量103相关联的候选运动向量可以是包围并且相邻于种子运动向量103的运动向量。
图2图示根据本公开的至少一些实施方式布置的示例种子运动向量103和示例候选运动向量202-209。如图2所示,候选运动向量202-209可以相邻于并且包围种子运动向量103。在所示示例中,候选运动向量202-209分别在种子运动向量103的左上方、在种子运动向量103的上方、在种子运动向量103的右上方、在种子运动向量103的右方、在种子运动向量103的右下方、在种子运动向量103的下方、在种子运动向量103的左下方以及在种子运动向量103的左方。此外,种子运动向量103可以是候选运动向量,如术语在此使用的那样。
在所示示例中,8个附加候选运动向量202-209在所描述的布局中示出。然而,可以在任意合适布局中使用任意数量的附加候选运动向量。例如,可以使用2或4个候选运动向量(上下、左右、以菱形形状或以正方形形状等)或者可以使用围绕候选运动向量202-209的一个或多个层中的附加候选运动向量(例如(多个)这样的层的全部(多个)层或选择(多个)这样的层的部分)。
此外,候选运动向量202-209可以以任意准确度提供在种子运动向量103周围。在一些示例中,候选运动向量202-209可以是来自种子运动向量103的整数像素位置(例如,整数或全像素分辨率)。在这样的示例中,畸变网格107可以描述为整数畸变网格。在其他示例中,候选运动向量202-209可以是来自种子运动向量103的半像素位置(例如,半像素分辨率)或四分之一像素位置(例如四分之一分辨率)。在这样的示例中,畸变网格107可以描述为分段的畸变网格或分段运动估计网格等。
在一些示例中,可以经由对运动估计引擎105的调用来请求候选运动向量202-209的分辨率。例如,可以基于明确的调用请求或者基于种子运动向量103的分辨率的指示来请求分辨率。在一些示例中,候选运动向量202-209可以基于种子运动向量103的分辨率的两倍来生成(例如,利用用于生成种子运动向量103的像素距离的一半的准确度)。例如,如果种子运动向量103是整数运动向量,候选运动向量202-209可以相距种子运动向量103半像素距离,并且如果种子运动向量103是半像素运动向量,候选运动向量202-209可以相距种子运动向量103四分之一像素距离,等等。为了说明性目的,考虑具有MVx=5、MVy=2的值的整数种子运动向量103。在这样的示例中,候选运动向量202-209可以提供为最接近种子运动向量103的具有MVx=5+(0、-0.5、0.5)、MVy=2+(0、-0.5、0.5)的值的8个半像素运动向量。类似地,假定具有MVx=5、MVy=2.5的值的半像素种子运动向量103,候选运动向量202-209可以提供为最接近种子运动向量103的具有MVx=5+(0、-0.25、0.25)、MVy=2+(0、-0.25、0.25)的值的8个四分之一像素运动向量。
如讨论的,在其他示例中,候选运动向量202-209的准确度或分辨率可以与种子运动向量103的准确度或分辨率相同。具体地,在整数畸变网格实施方式中,候选运动向量202-29和种子运动向量103可以均为整数运动向量。此外,如讨论的,经由运动估计引擎105评估的候选运动向量不限于9个运动向量(例如,种子运动向量103和候选运动向量202-209)。例如,候选运动向量可以进一步扩展以覆盖更宽范围的邻近运动向量。
如讨论的,并且参照图1,畸变网格107可以基于源像素块101、参考像素区域102和种子运动向量103以及与种子运动向量103相关联的候选运动向量来生成。在一些示例中,畸变网格107可以包括与源像素块101、参考像素区域102和种子运动向量103相关联的多个畸变值。
图3图示根据本公开的至少一些实施方式布置的示例畸变网格107。如图3所示,畸变网格107可以包括与源像素块101、参考像素区域102和种子运动向量103相关联的畸变值304的阵列。例如,畸变值304(D1,1-D9,1)中的每一个可以与在图3中表示为源像素块(B1)302的源像素块101,以及在图3中表示为候选运动向量(MV1-MV9)301的候选运动向量202-209的运动向量和种子运动向量103相关联或者基于它们来生成。在图3的所示示例中,畸变值304标记为DX、Y,使得X表示候选运动向量301的相关联运动向量以及Y表示像素块302的相关联的源像素块(例如,在这一示例中包括仅仅一个像素块)。
畸变网格107可以是或可以包括用于表示畸变值304的任意合适数据结构。在一些示例中,畸变网格107可以包括仅仅一个畸变值304(例如,使得源像素块和运动向量关联可以基于预定标准等而已知)。在一些示例中,畸变网格107可以提供为畸变值304的阵列。此外,畸变值304可以具有任意合适类型和精度。
畸变值304可以包括与源像素块101和参考像素区域102相关联的任意合适畸变值或度量。在一些示例中,畸变值304可以是基于源像素块101和参考像素区域102的经运动补偿的畸变值。例如,畸变值304可以是基于源像素块101和参考像素区域102的使用任意合适技术或技艺确定的经运动补偿的畸变值,所述技术诸如平方差值之和、平方差值的平均、绝对差值之和、绝对差值的平均等等。
如参照图1讨论的,在一些示例中,源像素块101可以表示或者可以是较大像素块的区或部分或子块。例如,运动估计引擎105可以针对像素块的区被调用或引起多次以生成与像素块的多个区相关联的畸变网格。如在此使用的,术语源像素块可以表示提供给运动估计引擎105以用于处理的像素块。如在此进一步讨论的,可以基于使用对于像素块的区的多个调用而生成的畸变网格,针对像素块确定最佳运动向量。
图4图示根据本公开的至少一些实施方式布置的示例像素块401。如图4所示,像素块401可以包括或者划分为四个区402-405。区402-405也可以表征为子块或子像素块等。此外,在各种上下文中,像素块401可以表征为宏块、最大编码单元、编码单元、编码树单元、基元等。在图4示出的示例中,像素块401是正方形形状的2Nx2N像素块,然而,像素块401可以是任意形状。此外,在所示示例中,像素块401的区402-405是具有每像素NxN大小的正方形形状像素块。然而,区402-405也可以具有任意形状和任意大小。在示例中,N可以是任意合适值。在一些示例中,N可以是16。在其他示例中,N可以是4、8、32等。
此外,图4图示像素块401划分为四个相等区402-405。然而,像素块401可以划分为任意数量的区,诸如2个区、6个区、8个区等。此外,在一些示例中,区402-405可以是与在此参照图8进一步讨论的不同的大小或形状。在示例中,像素块401可以是64x64像素以及像素块401可以划分为四个32x32像素区。在另一示例中,像素块401可以是32x32像素以及像素块401可以划分为四个16x16像素区。在又一示例中,像素块401可以是64x64像素以及像素块401可以划分为十六个16x16像素区。在又一个示例中,像素块401可以是64x64像素以及像素块401可以划分为四个32x32像素区。
如讨论的,在一些示例中,运动估计引擎105可以具有有关其基于单个过程调用可以处理的源像素块的大小的限制。例如,运动估计引擎105可以具有大小限制,使得其可以每处理调用处置16x16或32x32个源像素块,但是大小限制可以取决于实施细节而为任意合适限制。此外,在一些示例中,运动估计引擎105由于其他处理考量而可以没有大小限制,经由诸如运动估计引擎105的运动估计引擎在逐个区的基础上处理像素块可以是有利的。
现转到图5,图5图示根据本公开的至少一些实施方式布置的用于提供运动估计的示例装置500。如图5所示,装置500可以包括运动估计引擎105、运动估计控制器501、存储器502、下采样模块503以及掩蔽模块504。下采样模块503和掩蔽模块504在以下进一步讨论。此外,装置500可以包括任意数量的运动估计引擎,使得可以提供串行或并行处理。同样,如参照运动估计引擎105讨论的,运动估计引擎105可以以网格启用或网格禁用模式进行处理。在一些示例中,装置500可以包括能够仅处理网格请求或仅处理网格禁用请求(例如,针对估计的运动向量的请求)的运动估计引擎。如所示的,运动估计控制器501可以提供对于运动估计引擎105的调用505。调用505可以包括用于引起运动估计引擎的任意合适信息,诸如在此讨论的源像素块101、参考像素区域102、种子运动向量103以及网格启用/禁用信号104。
例如,运动估计控制器501可以接收用于处理的图像帧和/或用于该图像帧的分区信息。分区信息可以将图像帧分区为像素块或候选像素块等。运动估计控制器501可以基于图像帧和/或分区信息来生成像素块、区和源像素块。例如,如果像素块可以或者要经由运动估计引擎105整体处理,运动估计控制器501可以在网格启用/禁用信号104禁用的情况下将像素块提供为源像素101,使得运动估计引擎105可以返回用于像素块的估计的运动向量106。
如果像素块不可以或者不要经由运动估计引擎105处理(例如,因为运动估计引擎105无法处理那么大的块或者由于其他处理约束等),运动估计控制器501可以将像素块划分为区(例如,请参照图4)并且可以利用相同种子运动向量对运动估计引擎105做出多个调用,使得对于每个调用提供区作为源像素区并且网格启用/禁用信号104被启用。在这样的示例中,运动估计控制器501可以接收用于像素块的每个区的畸变网格107。例如,用于像素块的每个区的畸变网格107可以如参照图3描述的那样提供。
运动估计控制器501可以组合这样的畸变网格以生成用于该像素块的畸变网格。例如,可以针对像素块401的每个区402接收如参照图3讨论的阵列畸变网格(请参见图4)。这样的阵列畸变网格可以组合以生成用于该像素块的格栅畸变网格。
图6图示根据本公开的至少一些实施方式布置的示例畸变网格600。如图6所示,畸变网格600可以包括与源像素块602(B1-B4)、参考像素区域以及基于和包括种子运动向量的候选运动向量601相关联的畸变值604-607的格栅。例如,畸变值604(D1,1-D9,1)中的每一个可以与源块401的区402相关联或基于其生成,畸变值604(D1,2-D9,2)中的每一个可以与源块401的区403相关联或基于其生成,畸变值604(D1,3-D9,3)中的每一个可以与源块401的区404相关联或基于其生成,以及畸变值604(D1,4-D9,4)中的每一个可以与源块401的区405相关联或基于其生成(请参见图4)。虽然基于四个区图示并且示出畸变值604、605、606、607的四个阵列,但是畸变网格600可以基于任意数量的区并且可以包括任意数量的畸变值的阵列。如在此使用的,畸变网格可以包括用于生成如在此讨论的最佳运动向量的任意合适畸变值。在一些示例中,畸变网格可以包括针对多个参考位置提供并且以均匀采样距离/分辨率形成连续两维集合的源块与参考块之间的误差测量。
返回到图5,如讨论的,运动估计控制器501可以基于诸如对运动估计引擎105的调用505的多个调用而接收畸变网格,诸如畸变网格107。运动估计控制器501可以基于所接收的阵列畸变网格来生成畸变网格以生成格栅畸变网格,诸如畸变网格600。如讨论的,对于像素块的每个调用可以利用相同种子运动向量做出并且每个阵列畸变网格可以包括相同的候选运动向量。基于所生成的格栅畸变网格,运动估计控制器501可以确定用于当前像素块的最佳运动向量。例如,可以针对诸如像素块401的像素块来确定种子运动向量(如在此进一步讨论的)。可以针对像素块的区,诸如像素块401的区402-405,对运动估计105做出多个调用,并且所得到的(阵列)畸变网格可以组合为如关于图6所示的(格栅)畸变网格。可以指出的是,相同的种子运动向量和候选运动向量已经针对像素块的不同区进行了评估。
如讨论的,运动估计控制器501可以基于所生成的格栅畸变网格来确定用于当前像素块的最佳运动向量506。再次转到图6,运动估计控制器可以生成畸变求和值603(在图6中标记为DS1-9)使得畸变求和值中的每一个值是跨用于相关联的运动向量的区的求和的畸变。例如,畸变求和值DS3可以是畸变值D3,1-D3,4的求和并且可以与候选运动向量MV3相关联。在一些示例中,运动估计控制器501可以确定最佳运动向量506,候选运动向量601中具有畸变求和值603的最小畸变求和值的运动向量。虽然参照畸变求和值讨论,但最佳运动向量确定可以基于任意合适的值,诸如加权畸变求和值(其中,例如不同区具有不同权重)、平均畸变值等。此外,畸变网格600的附加特性可以用于生成最佳运动向量,诸如用于候选运动向量的畸变值的范围、与候选运动向量的平均值的偏差等。
返回到图5,在一些示例中,最佳运动向量506可以用于重复处理以生成更加准确的最佳运动向量。例如,最佳运动向量506可以用作用于当前像素块的种子运动向量,并且所讨论的过程(例如,多个调用以生成格栅畸变网格、对跨每个候选运动向量的区的这样的畸变值求和、以及选择与最小畸变求和值相关联的最佳运动向量)可以重复以找出更加准确(例如,半像素而不是整数,或者四分之一像素而不是半像素等)的最佳运动向量。
在单个处理循环或多个处理循环的任一情况中,最佳运动向量506可以在装置500内传送以供经由一个或多个其他模块进行处理。例如,最佳运动向量506可以经由编码器引擎用于编码像素块和当前图像帧(例如,基于最佳运动向量506的差异运动向量可以熵编码为比特流以供传送到解码器),最佳运动向量506可以经由本地解码循环用于生成用于像素块的残差(例如,通过将最佳运动向量506应用于重构图像帧的重构像素块以及对像素块与重构像素块求差),所述残差可以被变换、量化以及熵编码为比特流以供传送到解码器等。这样的处理可以经由编码器或编码器引擎等(未示出)的一个或多个模块来执行。在其他示例中,最佳运动向量506可以经由姿势跟踪模块、电路、引擎等或者对象跟踪模块、电路、引擎等(未示出)用于姿势或对象跟踪。在又一其他示例中,最佳运动向量506可以经由与装置500的相机等相关联的图像稳定器而用于图像稳定。虽然参照编码操作、姿势跟踪、对象跟踪和图像稳定来讨论,但是最佳运动向量506、畸变网格107、畸变网格600或如在此讨论的那样生成的其他数据可以经由任意合适图像处理技术来使用。在一些示例中,这样的数据可以提供为例如图像处理流水线的一部分。
如讨论的,种子运动向量103可以提供给运动估计引擎105用于生成候选运动向量202-209。还如讨论的,种子运动向量103可以与像素块相关联并且种子运动向量103可以使用任意合适的一种或多种技术来生成。
图7是图示根据本公开的至少一些实施方式布置的用于确定用于像素块的种子运动向量的示例过程700的流程图。过程700可以包括如图7中所示的一个或多个操作701-703。过程700可以通过装置(如在此讨论的装置500)执行以确定用于像素块的种子运动向量。例如,过程700可以在像素块级别针对具有将经由在此讨论的运动估计引擎独立地处理的区的像素块而执行。在各种上下文中,诸如在编码上下文中,种子运动向量可以与表征为宏块、最大编码单元、编码单元等的像素块相关联。过程700可以针对任意数量的像素块而重复。在一些示例中,过程700可以通过装置500的运动估计控制器501来执行。
过程700可以开始于操作701,“下采样像素块和参考像素区域”,其中诸如像素块401的像素块和参考像素区域可以被下采样。例如,源像素块和参考像素块可以通过相同采样率来下采样,并且使得源像素块可以通过诸如运动估计引擎105的运动估计引擎来处理。在示例中,像素块和参考像素区域可以在x和y方向二者上以2:1被下采样以生成下采样的像素块和下采样的参考像素区域,但是可以实施任意合适的下采样率。
过程700可以在操作702继续,“以下采样分辨率生成种子运动向量”,其中可以基于下采样的像素块和下采样的参考像素区域,以下采样分辨率生成种子运动向量。例如,操作702可以基于提供运动估计引擎105或类似运动估计引擎而经由运动估计引擎105来实施,运动估计引擎105或类似运动估计引擎能够基于提供下采样的像素块作为源像素块101以及下采样的参考像素区域作为参考像素区域102(如果需要的话连同禁用的网格启用/禁用信号104)来生成估计的运动向量,请参照图1。所得到的估计的运动向量106可以是下采样分辨率的种子运动向量。
过程700可以在操作703继续,“将种子运动向量映射到全分辨率”,其中下采样分辨率的种子运动向量可以被上采样或映射到全分辨率以生成用于像素块的种子运动向量。例如,如果下采样率在x和y方向二者上为2:1,下采样分辨率的种子运动向量可以经由1:2的上采样率被上采样。例如,以下采样分辨率生成的四分之一像素种子运动向量可以对应于操作703处一次上采样的半像素种子运动向量,并且以下采样分辨率生成的半像素种子运动向量可以对应于操作703处一次上采样的整数种子运动向量。经由过程700生成的种子运动向量可以如参照种子运动向量103或在此别处讨论的那样使用。
如讨论的,在此讨论的像素块和/或像素块的区可以为任意形状和大小。此外,在一些示例中,可以提供掩蔽以实施形状和/或禁用对于像素块的特定像素和/或像素块的区的畸变贡献。
图8图示根据本公开的至少一些实施方式布置的示例像素块801。如图8所示,像素块801可以包括任意合适形状。在图8示出的示例中,像素块801具有星形。在其他示例中,像素块801可以具有正方形形状(如参照像素块401示出的)、矩形形状、六边形形状、三角形形状、五边形形状或者任意形状。在一些示例中,像素块801的形状可以包括一个或多个弧形。例如,像素块801可以具有圆形、椭圆形等。在一些示例中,像素块801的形状可以包括直边和曲边或弧形边的组合。此外,像素块801可以划分为多个相同形状,或者如图8所示,像素块801可以划分为多个不同形状。例如,像素块801划分为6个区802-807,其中5个区为三角形形状(例如,区802-806)并且其中一个为五边形形状(例如,区807)。例如,像素块的区可以具有任意合适形状,诸如正方形形状(如参照像素块401示出的)、矩形形状、六边形形状、三角形形状、五边形形状或任意形状。此外,像素块801和区802-807可以具有任意合适大小。在一些示例中,像素的区的一个或多个的形状可以包括一个或多个弧形。例如,一个或多个区可以具有圆形、椭圆形等。在一些示例中,一个或多个区的形状可以包括直边和曲边或弧形边的组合。
如讨论的,在一些示例中,诸如区802-807的区可以作为源像素块提供给诸如运动估计引擎105的运动估计引擎,以用于生成畸变网格。在一些示例中,运动估计引擎的限制可以基于源像素块的大小而不基于源像素块的形状,使得处理可以针对任意形状的源像素块执行。此外,如参照图6讨论的,畸变网格可以用于生成畸变求和值或基于畸变网格的其他合适值。还如讨论的,在一些示例中,畸变求和值可以是加权的求和值。在区802-807具有不同大小的示例中,这样的权重可以基于区的相对大小,使得较大的区接收较大权重。
除了任意形状处理以外,可以基于像素块的掩蔽部分或者像素块的区来提供运动估计。这样的掩蔽可以对正正对其提供运动估计的形状提供附加控制。例如,基于这样的像素掩蔽,可以搜索任意形状已得到最佳运动向量。
图9图示根据本公开的至少一些实施例布置的应用于示例像素块901的示例像素掩蔽906。如图9所示,像素块901可以包括或者划分为区902-905。在图9的示例中,像素块901和区902-905是正方形形状,然而像素块901和区902-905可以具有如在此讨论的任意形状。
还如所示的,像素掩蔽906(诸如用于遮蔽区902-905中的诸如区903的区的区像素掩蔽)或者像素块掩蔽(用于遮蔽像素块901的区或部分)可以应用于像素块901和/或区902-905。在所示示例中,像素掩蔽906形状是三角形形状的、连续的并且应用于像素块901和像素区903的右上部分。然而,像素掩蔽906可以是任意形状,可以是不连续的和/或包括多个未连接部分,并且可以应用于像素块901和/或像素区902-905的任意部分。
图10是图示根据本公开的至少一些实施方式布置的示例运动估计引擎105的方框图。运动估计引擎105可以包括在此别处讨论的任意能力。此外,运动估计引擎105可以接收像素掩蔽1001。像素掩蔽1001可以包括提供诸如像素掩蔽906的像素掩蔽的任意合适数据或数据结构。例如,像素掩蔽1001可以包括指示要在生成畸变网格107中禁用的源像素块101的像素的信号。例如,在生成畸变网格107的畸变值304(请参见图3)中可以不考虑禁用的像素。
如讨论的,在一些示例中,像素掩蔽1001可以禁用像素用于生成畸变值。在这样的示例中,像素掩蔽1001可以实施为二元掩蔽,使得二元掩蔽内的0值禁用像素并且二元掩蔽内的1值启用像素用于生成畸变值。在其他示例中,像素掩蔽1001可以包括滤波器或可变滤波器,使得被遮蔽的像素值对畸变值贡献较小(例如,像素掩蔽1001可以是加权滤波器等)。例如,像素掩蔽1001可以包括用于由掩蔽表示的每个像素的相同或不同值,使得那些像素比未遮蔽像素加权较小。
图11是图示根据本公开的至少一些实施方式布置的用于确定用于像素块的运动向量的示例过程1100的流程图。过程1100可以包括如图1所示的一个或多个操作1101-1111。过程1100可以由装置(例如,如在此讨论的装置500)执行以确定用于像素块的运动向量。例如,过程1100可以在如在此讨论的像素块级别执行。在各种上下文中,诸如在编码上下文中,运动向量可以与表征为宏块、最大编码单元、编码单元等的像素块相关联。过程1100可以针对任意数量的像素块和/或图像帧重复。
过程1100可以开始于操作1101,“加载当前图像帧用于处理”,其中图像帧可以被加载以用于处理。图像帧可以包括任意合适图像帧,诸如视频序列的帧、经由装置的相机接收的当前帧(例如,要实时处理的帧)等。此外,图像帧可以包括任意合适数据或数据结构。例如,当前图像帧可以加载到诸如装置500的存储器502的存储器中。
过程1100可以在操作1102继续,“加载像素块用于运动估计”,其中当前图像帧的像素块可以被加载以用于处理。如在此讨论的,像素块可以是任意合适大小和形状的。在一些示例中,当前图像帧可以基于预定图案或分区信息而划分为用于处理的像素块。在其他示例中,对于图像帧的宽范围的分区选项可以被评估以确定用于该帧的最优编码图案。例如,操作1102-1111可以针对任意数量的图像帧的任意数量的像素块重复。
过程1100可以在操作1103继续,“加载一个或多个参考帧”,其中一个或多个参考帧或其部分可以被加载以用于处理。一个或多个参考帧可以包括任意合适的参考帧,诸如时间上在前的一个或多个帧、时间上在后的一个或多个帧、这样帧的组合、合成或以其他方式处理的一个或多个帧等。例如,当前图像帧可以被加载到诸如装置500的存储器502的存储器中。在一些示例中,一个或多个参考帧可以包括如在此讨论的参考帧区域或区。
过程1100可以在操作1104继续,“估计种子运动向量”,其中可以针对当前像素块估计种子运动向量。种子运动向量可以使用任意合适的一种或多种技术(诸如参照在此的过程700讨论的那些)来估计或确定。例如,可以通过以下来确定种子运动向量:下采样像素块和参考像素区域、确定用于下采样的像素块和参考像素区域的下采样的最佳运动向量以及将下采样的最佳运动向量映射到原始像素块的分辨率。
过程1100可以在操作1105继续,“将像素块分割为区”,其中像素块可以分割或划分为区或部分等。如讨论的,像素块可以划分为任意形状的区。在一些示例中,像素块可以划分为可以由诸如经由硬件实施的运动估计引擎的运动估计引擎处理(例如,小到足以被处理)的区。
过程1100可以在操作1106继续,“可选地遮蔽像素块”,其中可选的像素掩蔽可以应用于像素块。例如,像素掩蔽可以禁用当前像素块的特定像素或者对其应用降低的加权。
过程1100可以在操作1107继续,“生成畸变网格”,其中可以针对像素块生成畸变网格。例如,可以对运动估计引擎做出多个调用,使得每个调用是针对像素块的单独区。调用可以包括例如表示当前区的源像素块、种子运动向量(例如,跨对当前像素块的所有调用,种子运动向量可以是相同的)、参考像素区域、网格启用信号以及可选像素掩蔽。响应于每个调用,可以提供畸变网格。例如,每个接收到的畸变网格可以是包括与当前像素块的当前区相关联的畸变值的阵列的阵列畸变网格,使得每个畸变值与和种子运动向量相关联的候选运动向量或者种子运动向量本身相关联。
接收到的畸变网格可以组合以形成格栅畸变网格。如参照图6讨论的,这样的格栅畸变网格可以包括多个畸变值,每个畸变值与像素块的区和候选运动向量相关联。如在此使用的,术语畸变网格可以应用于与对运动估计引擎的单个调用相关联的畸变阵列(例如,调用内对于源像素块的畸变阵列)或者这样的畸变阵列的组合(例如,阵列的格栅,每个阵列与像素块的区相关联)。
过程1100可以在操作1108继续,“选择最佳运动向量”,其中可以基于畸变网格,选择用于像素块的最佳运动向量。例如,可以评估所讨论的格栅畸变网格以选择用于像素块的最佳运动向量。在示例中,可以确定多个畸变求和值,其中每个值与候选运动向量或者种子运动向量本身相关联(例如,多个畸变求和值可以用于特定候选运动向量并且可以包括用于像素块的每个区的该候选运动向量的畸变值的求和)。如讨论的,其他值(诸如平均畸变值、畸变值的范围等)可以用于替代畸变求和值或者与所讨论的畸变求和值组合来选择最佳运动向量。
过程1100可以继在判定操作1109继续,“满足所期望的分辨率”,其中做出有关是否已经满足最佳运动向量的所期望分辨率的确定。如讨论的,在各种示例中,种子运动向量可以是整数运动向量并且最佳运动向量也可以是整数运动向量,种子运动向量可以是整数运动向量并且最佳运动向量还可以是半像素运动向量,种子运动向量可以是半像素运动向量并且最佳运动向量还可以是四分之一像素运动向量,等等。例如,判定操作1109可以引用最佳运动向量的当前分辨率(例如,整数、半像素或四分之一像素)是否满足所期望分辨率。这样的确定可以基于可以由用户或开发者选择的设定来做出,或者这样的确定可以基于与当前最佳运动向量相关联的畸变来做出。例如,如果畸变小于阈值,则可以满足所期望分辨率并且如果否,则处理可以继续尝试找出用于当前像素块的最佳运动向量。如所示的,如果满足所期望分辨率,过程1100可以在结束操作1111处对于当前像素块结束。
如果不满足所期望分辨率,则过程1100可以继续到操作1110,“将最佳运动向量设定为种子运动向量”,其中最佳运动向量可以设定为或用作种子运动向量。如所示的,基于新种子运动向量,过程1100可以重复如讨论的操作1107、1108和1109以确定增强分辨率最佳运动向量。例如,如果在第一遍时,分辨率是半像素运动向量,则第二遍可以提供四分之一像素运动向量分辨率。
如讨论的,过程1100可以针对任意数量的像素块、像素块内图像帧的分区(例如,不同分区)、图像帧、图像帧与参考图像帧的组合等重复或可以部分重复。这样的处理可以经由有限硬件资源来提供运动向量的准确和高效的确定。
图12是图示根据本公开的至少一些实施方式布置的用于提供运动估计的示例过程1200的流程图。过程1200可以包括如图12所示的一个或多个操作1201-1203。过程1200可以形成运动估计过程的至少部分。作为非限制举例,过程1200可以形成由如在此讨论的装置500执行的运动估计过程的至少部分。此外,过程1200将在此参照图13的系统1300来描述。
图13是根据本公开的至少一些实施方式布置的用于提供运动估计的示例系统1300的说明性图。如图13所示,系统1300可以包括一个或多个中央处理单元(CPU)1301、图形处理单元(GPU)1302以及存储器存储部1303。还如所示的,GPU 1302可以包括运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504。这样的模块可以实施为执行在此讨论的操作。在系统1300的示例中,存储器存储部1303可以存储运动估计数据或其他视频数据,视频数据诸如输入视频、视频帧、图像帧、参考帧、像素块数据、像素数据、区数据、源像素块数据、参考区域像素数据、分区数据、像素掩蔽数据、运动向量数据、畸变网格数据或在此讨论的任意其他数据。
如所示的,在一些示例中,运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504可以经由图形处理单元1302来实施。在其他示例中,运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504的一个或多个或部分可以经由中央处理单元1301来实施。在又一些示例中,运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504的一个或多个或部分可以经由编码流水线和/或成像处理流水线或单元来实施。
图形处理单元1302可以包括可以提供如在此讨论的操作的任意数量和类型的图形处理单元。这样的操作可以经由软件或硬件或其组合来实施。例如,图形处理单元1302可以包括专用于操纵由存储器存储部1303获得的帧或视频数据的电路。中央处理单元1301可以包括可以为系统1300提供控制和其他高级功能和/或提供在此讨论的任意操作的任意数量和类型的处理单元或模块。存储器存储部1303可以是任意类型的存储器,诸如易失性存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或者非易失性存储器(例如,闪速存储器等)等。在非限制性示例中,存储器存储部1303可以通过高速缓冲存储器来实施。在实施例中,运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504的一个或多个或部分可以经由图形处理单元1302的执行单元(EU)来实施。EU可以包括例如可编程逻辑或电路,诸如可以提供可编程逻辑功能的宽广阵列的一个或多个逻辑核。在实施例中,运动估计引擎105、运动估计控制器501、下采样模块503以及掩蔽模块504的一个或多个或部分可以经由诸如固定功能电路的专用硬件等来实施。固定功能电路可以包括专用逻辑或电路并且可以提供固定功能进入点的集合,其可以映射到用于固定目的或功能的专用逻辑。
返回到图12的讨论,过程1200可以开始于操作1201,“确定用于像素块的种子运动向量”,其中可以针对具有多个区的像素块确定种子运动向量。可以使用任意合适的一种或多种技术来确定种子运动向量。例如,像素块和参考像素区域可以被下采样并且种子运动向量可以基于下采样的像素块和参考像素区域来生成。例如,下采样模块503可以对像素块和参考像素区域下采样,并且运动估计引擎105可以基于下采样的像素块和参考像素区域、基于经由运动估计控制器501做出的调用,来生成下采样的种子运动向量。下采样的种子运动向量可以经由运动估计控制器501映射到全分辨率运动向量。
如讨论的,像素块和像素块的区可以是任意合适大小和形状。在一些示例中,像素块可以具有正方形形状、矩形形状、六边形形状、三角形形状或星形形状。在一些示例中,多个区中的一个或多个区可以具有正方形形状、矩形形状、六边形形状、或三角形形状。在一些示例中,各区可以是相同大小和形状的,并且在其他示例中,各区可以具有不同大小和/或形状。
处理可以在操作1202继续,“基于种子运动向量、候选运动向量以及像素块的区来生成用于像素块的畸变网格”,其中可以针对像素块生成畸变网格。例如,畸变网格可以包括与区、种子运动向量以及与种子运动向量相关联的候选运动向量相关联的多个畸变值。例如,与种子运动向量相关联的运动向量可以相邻于和包围种子运动向量。在一些示例中,所讨论的畸变值每个与多个区中的一个区以及多个候选运动向量中的一个候选运动向量相关联。例如,候选运动向量可以包括种子运动向量。在一些示例中,生成畸变网格可以包括对基于块的运动估计引擎的多个调用(例如,对于像素块的每个区一个调用),使得每个调用使用种子运动向量。例如,运动估计控制器501可以基于对运动估计引擎105的多个调用(例如,对于像素块的每个区一个调用)来生成畸变网格,使得运动估计引擎105可以提供可以组合以形成畸变网格的畸变值的阵列(例如,对于每个调用一个阵列)。
如讨论的,在一些示例中,生成畸变网格可以包括禁用像素块的像素的子集或像素块的一个或多个区。例如,像素的子集可以基于在此讨论的像素掩蔽来禁用。
处理可以在操作1203继续,“确定用于像素块的最佳运动向量”,其中可以基于畸变网格来确定用于像素块的最佳运动向量。例如,运动估计控制器501可以确定最佳运动向量。在一些示例中,确定最佳运动向量可以包括从多个畸变求和值中确定最小畸变求和值,使得每一个畸变求和值中与多个候选运动向量中的一个候选运动向量或者种子运动向量相关联。
这样的过程可以基于种子运动向量以及使用种子运动向量和像素块的区生成的畸变网格,来生成用于像素块的最佳运动向量。这样的处理可以允许高效使用由于像素块太大而无法处置像素块处理的基于块的(例如,经由硬件实施)运动估计引擎和/或高效使用有限的处理资源等。
如讨论的,这样的处理可以经由半像素候选运动向量以及整数种子运动向量来提供半像素最佳运动向量,或经由四分之一像素候选运动向量以及半像素种子运动向量来提供四分之一像素最佳运动向量等。此外,可以通过使用最佳运动向量作为种子运动向量来重复过程1200以生成增强分辨率最佳运动向量。例如,第二畸变网格可以针对像素块而生成,使得第二畸变网格包括与区、最佳运动向量以及第二候选运动向量(和最佳运动向量相关联)相关联的第二畸变值,并且可以基于第二畸变网格来确定用于像素块的增强分辨率最佳运动向量。
过程1200可以针对任意数量的视频部分和/或视频帧,串行或并行地重复任意次数。过程1200可以使用节省计算复杂度和硬件实施方式复杂度的技术来提供用于像素块的准确运动向量。
在此描述的系统的各种组件可以以软件、固件和/或硬件和/或其任意组合来实施。例如,可以至少部分通过诸如可以计算系统(诸如例如智能电话)中找到的计算片上系统(SoC)的硬件,来提供装置100、装置500、系统1300、系统1400或装置1500的各种组件。本领域技术人员可以认识到,在此描述的系统可以包括相应附图中未描绘的附加组件。例如,在此讨论的系统可以包括为了清楚起见未描绘的那些的附加组件,诸如姿势跟踪电路、对象跟踪电路、图像稳定电路等。
虽然在此讨论的示例过程的实施方式可以包括示出的所有操作以所示顺序进行,但本公开不限于此,并且在各种示例中,在此的示例过程的实施方式可以仅包括所示操作的子集、以不同于所示的顺序执行的操作,或者附加操作。
另外,可以响应于由一个或多个计算机程序产品提供的指令而进行在此讨论的操作的任一个或多个。这样的程序产品可以包括提供指令的信号承载介质,指令在由例如处理器执行时可以提供在此描述的功能性。计算机程序产品可以以一个或多个机器可读介质的任意形式来提供。因此,例如,响应于由一个或多个机器可读介质传递给处理器的程序代码和/或指令或指令集,包括一个或多个图形处理单元或处理器核的处理器可以进行在此的示例过程的一个或多个方框。一般地,机器可读介质可以传递程序代码和/或指令或指令集形式的软件,其可以使在此描述的装置和/或系统中的任一个实施装置100、装置500、系统1300、系统1400或装置1500或者在此讨论的任意其他模块或组件的至少部分。
如在此描述的任意实施方式中使用的,术语“模块”指代配置为提供在此描述的功能性的软件逻辑、固件逻辑、硬件逻辑和/或电路的任意组合。软件可以体现为软件包、代码和/或指令集或指令,并且“硬件”,如在此描述的任意实施方式中使用的,可以包括例如单个的或者任意组合的存储由可编程电路执行的指令的硬接线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或固件。模块可以集合地或者个体地体现为形成例如集成电路(IC)、片上系统(SoC)等的较大系统的电路。
图14是根据本公开的至少一些实施方式布置的示例系统1400的说明性图。在各种实施方式中,系统1400可以是计算系统,但是系统1400不限于此上下文。例如,系统1400可以并入个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能装置(例如,智能电话、智能平板或智能电视)、移动互联网装置(MID)、信息传送装置、数据通信装置、相机(例如,傻瓜相机、超变焦相机、数字单反(DSLR)相机)等中。
在各种实施方式中,系统1400包括耦合到显示器1420的平台1402。平台1402可以接收来自诸如(多个)内容服务装置1430或(多个)内容输送装置1440或其他类似内容源的内容装置的内容。包括一个或多个导航特征的导航控制器1450可以用于与例如平台1402和/或显示器1420交互。这些组件中的每一个在以下更详细地描述。
在各种实施方式中,平台1402可以包括芯片组1405、处理器1410、存储器1412、天线1413、存储装置1414、图形子系统1415、应用1416和/或无线电1418的任意组合。芯片组1405可以提供处理器1410、存储器1412、存储装置1414、图形子系统1415、应用1416和/或无线电1418当中的互相通信。例如,芯片组1405可以包括能够提供与存储装置1414的相互通信的存储适配器(未描绘)。
处理器1410可以实施为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或者任意其他微处理器或中央处理单元(CPU)。在各种实施方式中,处理器1410可以是(多个)双核处理器、(多个)双核移动处理器等。
存储器1412可以实施为易失性存储器装置,诸如但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
存储装置1414可以实施为非易失性存储装置,诸如但不限于,磁盘驱动、光盘驱动、磁带驱动、内部存储装置、附接存储装置、闪速存储器、电池备份SDRAM(同步DRAM)和/或网络可访问存储装置。在各种实施方式中,存储装置1414可以包括用于在例如包括多个硬驱动时增加对于有价值数字媒体的存储性能增强保护的技术。
图形子系统1415可以执行诸如静态或视频的图像的处理以用于显示。图形子系统1415可以是例如图形处理单元(GPU)或视频处理单元(VPU)。模拟或数字接口可以用于可通信地耦合图形子系统1415和显示器1420。例如,接口可以是高清多媒体接口、显示端口、无线HDMI和/或遵从无线HD技术中的任一种。图形子系统1415可以集成到处理器1410或芯片组1405中。在一些实施方式中,图形子系统1415可以是可通信地耦合到芯片组1405的独立装置。
在此描述的图形和/或视频处理技术可以以各种硬件架构来实施。例如,图形和/或视频功能性可以集成在芯片组内。可替换地,可以使用分立的图形和/或视频处理器。作为又一实施方式,图形和/或视频功能可以由包括多核处理器的通用处理器来提供。在另外实施例中,功能可以在消费电子装置中实施。
无线电1418可以包括能够使用各种合适的无线通信技术来传输和接收信号的一个或多个无线电。这样的技术可以涉及一个或多个无线网络上的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这样的网络的通信中,无线电1418可以根据任意版本的一个或多个可应用标准来操作。
在各种实施方式中,显示器1420可以包括任意电视类型监视器或显示器。显示器1420可以包括例如计算机显示屏幕、触摸屏显示器、视频监视器、类电视装置和/或电视。显示器1420可以是数字的和/或模拟的。在各种实施方式中,显示器1420可以是全息显示器。而且,显示器1420可以是可以接收视觉投影的透明表面。这样的投影可以传递各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用1416的控制下,平台1402可以在显示器1420上显示用户界面1422。
在各种实施方式中,(多个)内容服务装置1430可以由任意全国性的、国际性的和/或独立的服务托管并且因此对于平台1402来说是经由例如因特网可访问的。(多个)内容服务装置1430可以被耦合至平台1402和/或显示器1420。平台1402和/或(多个)内容服务装置1430可以被耦合至网络1460以传送(例如,发送和/或接收)去往和来自网络1460的媒体信息。(多个)内容递送装置1440还可以被耦合至平台1402和/或显示器1420。
在各种实施方式中,(多个)内容服务装置1430可以包括有线电视盒、个人计算机、网络、电话、因特网使能的装置或能够输送数字信息和/或内容的器材,以及能够经由网络1460或直接地在内容提供者和平台1402和/或显示器1420之间单向或双向地传送内容的任意其他类似的装置。将领会内容可以经由网络1460单向和/或双向地传送至和传送自系统1400中的任意一个部件和内容提供者。内容的示例可以包括任意的媒体信息,包括例如视频、音乐、医疗和游戏信息等。
(多个)内容服务装置1430可以接收内容,诸如有线电视节目,包括媒体信息、数字信息和/或其他内容。内容提供者的示例可以包括任意有线或卫星电视或无线电或因特网内容提供者。所提供的示例并不意味着以任意方式限制根据本公开的实施方式。
在各种实施方式中,平台1402可以接收来自具有一个或多个导航特征的导航控制器1450的控制信号。控制器1450的导航特征可以被用于与例如用户接口1422交互。在各种实施例中,导航控制器1450可以是定点装置,其可以是允许用户把空间(例如,连续的和多维的)数据输入至计算机的计算机硬件组件(特别是人性化接口装置)。许多系统(诸如图形用户接口(GUI)、和电视以及监视器)允许用户使用物理姿势控制数据并把数据提供至计算机或电视。
可以利用显示在显示器上的指针、光标、聚焦环或其他可视指示器的移动来把导航控制器1450的导航特征的移动重现在显示器(例如显示器1420)上。例如,在软件应用1416的控制下,位于导航控制器1450上的导航特征可以被映射到例如显示在用户接口1422上的虚拟导航特征。在各种实施例中,导航控制器1450可以不是单独的组件而是可以被集成在平台1402和/或显示器1420中。然而,本公开不限于这些元件或者在此示出或描述的上下文中。
在各种实施方式中,驱动器(未示出)可以包括使得例如在初始引导之后、当被启用时用户能够通过触摸按钮来即时地接通和关断平台1402(比如电视)的技术。程序逻辑可以允许平台1402在平台被“关断”时把内容流式传送至媒体适配器或(多个)其他内容服务装置1430或(多个)内容输送装置1440。此外,芯片组1405可以包括支持例如5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件。驱动器可以包括用于集成图形平台的图形驱动器。在各种实施例中,图形驱动器可以包括快速外围部件互连(PCI)图形卡。
在各种实施方式中,系统1400中所示的组件中的任意一个或多个可以被集成。例如,平台1402和(多个)内容服务装置1430可以被集成,或者平台1402和(多个)内容输送装置1440可以被集成,或者例如平台1402、(多个)内容服务装置1430和(多个)内容输送装置1440可以被集成。在各种实施例中,平台1402和显示器1420可以是集成的单元。例如,显示器1420和(多个)内容服务装置1430可以被集成,或者显示器1420和(多个)内容输送装置1440可以被集成。这些示例不意味着限制本公开。
在各种实施例中,系统1400可以被实施为无线系统、有线系统或这两者的组合。当被实施为无线系统时,系统1400可以包括适合于在无线共享介质上通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器和控制逻辑等。无线共享介质的示例可以包括无线频谱的部分,诸如RF频谱等。当被实施为有线系统时,系统1400可以包括适合于在有线通信介质上通信的组件和接口,诸如输入/输出(I/O)适配器、用以把I/O适配器与相对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括布线、线缆、金属引线、印刷电路板(PCB)、底板、交换机结构、半导体材料、双绞线、同轴线缆、光纤等。
平台1402可以建立一个或多个逻辑或物理信道以传送信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表示对于用户有意义的内容的任意数据。内容的示例可以包括例如,来自以下的数据:语音通话、视频会议、流视频、电子邮件(“email”)消息、语音信箱消息、字母数字符号、图形、图像、视频、文本等。来自语音通话的数据可以是例如,话音信息、静寂时段、背景噪声、舒适噪声、音调等。控制信息可以指代表示命令、指令或对于自动化系统有意义的控制字的任意数据。例如,控制信息可以被用于将媒体信息路由通过系统,或者指令节点以预定的方式处理媒体信息。然而,实施例不限制于图14中示出或描述的元件或上下文中。
如上面描述那样,系统1400可以体现为变化的物理样式或形状因子。图15图示根据本公开的至少一些实施方式布置的示例小形状因子装置1500。在一些示例中,系统1400可以经由装置1500来实施。在其他示例中,成像装置101、系统900或其部分可以经由装置1500来实施。在各种实施例中,例如,装置1500可以实施为具有无线能力的移动计算装置。例如,移动计算装置可以指代具有处理系统以及移动电源或供应(诸如一个或多个电池)的任意装置。
移动计算装置的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、智能装置(例如,智能电话、智能平板或智能移动电视)、移动互联网装置(MID)、消息传送装置、数据通信装置、相机(例如,傻瓜相机、超变焦相机、数字单反(DSLR)相机)等。
移动计算装置的示例还可以包括布置为由人穿戴的计算机,诸如腕上计算机、指上计算机、指环计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋上计算机、衣服计算机和其他可穿戴计算机。在各种实施例中,例如,移动计算装置可以实施为能够执行计算机应用,以及语音通信和/或数据通信的智能电话。虽然一些实施例可以利用作为举例实施为智能电话的移动计算装置来描述,但可以意识到,也可以使用其他无线移动计算装置来实施其他实施例。实施例不限于这一上下文。
如图15所示,装置1500可以包括具有前部1501和后部1502的壳体。装置1500包括显示器1504、输入/输出(I/O)装置1506以及集成天线1508。装置1500还可以包括导航特征1512。I/O装置1506可以包括用于将信息录入移动计算装置中的任意合适I/O装置。用于I/O装置1506的示例可以包括字符数字键盘、数字小键盘、触摸板、输入键、按钮、开关、麦克风、扬声器、语音识别装置以及软件等。信息也可以通过麦克风(未示出)的方式录入到装置1500中,或者可以通过语音识别装置来数字化。如所示,装置1500可以包括集成到装置1500的后部1502(或别处)的相机1505(例如,包括透镜、孔和成像传感器)以及闪光灯1510。在其他示例中,相机1505和闪光灯1510可以集成到装置1500的前部1501,或者可以提供前部相机和后部相机两者。相机1505和闪光灯1510可以是相机模块的组件,用于创造处理为流视频的图像数据,输送流视频输出至显示器1504和/或经由例如天线1508从装置1500远程传送。
可以使用硬件元件、软件元件或者两者的组合来实施各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、词语、值、符号或它们的任意组合。确定是否使用硬件元件和/或软件元件来实施实施例可能依照任意数目的因素(诸如,期望的计算速率、电力水平、热承受力、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束)而变化。
可以通过存储在机器可读介质上的代表性指令来实施至少一个实施例的一个或多个方面,所述指令表示处理器内的各种逻辑,当由机器读取时该指令引起机器构建起逻辑以执行在此描述的技术。称为IP核心的这样的表示可以被存储在有形的机器可读的介质上并且被供应至各个客户或制造机构以加载到实际地制作逻辑或处理器的制备机器中。
虽然已经参照各种实施方式描述了在此阐述的特定特征,但本说明书并不意图在限制性意义上解释。因此,对于本公开所属的技术领域的技术人员来说清楚的在此描述的实施方式以及其他实施方式的各种修改视为落入本公开的精神和范围内。
以下示例涉及进一步实施例。
在一个或多个第一实施例中,一种用于提供运动估计的计算机实施方法包括:针对具有多个区的像素块,确定种子运动向量;生成针对所述像素块的畸变网格,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及基于所述畸变网格,确定用于所述像素块的最佳运动向量。
进一步针对第一实施例,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,其中,所述多个候选运动向量包括所述种子运动向量。
进一步针对第一实施例,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第一实施例,所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第一实施例,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个,和/或所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第一实施例,生成所述畸变网格包括基于与所述第一区相关联的第一像素区掩蔽,来禁用所述第一区的像素的子集。
进一步针对第一实施例,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,并且所述多个调用中的每一个包括所述种子运动向量。
进一步针对第一实施例,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,所述多个调用中的每一个包括所述种子运动向量,并且对于所述基于块的运动估计引擎的多个调用包括对于所述多个区中的每个区的调用。
进一步针对第一实施例,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,所述多个调用中的每一个包括所述种子运动向量,和/或对于所述基于块的运动估计引擎的多个调用包括对于所述多个区中的每个区的调用。
进一步针对第一实施例,确定所述种子运动向量包括:对所述像素块和参考像素区域进行下采样,以及基于所下采样的像素块和参考像素区域,来生成所述种子运动向量。
进一步针对第一实施例,所述方法还包括:生成针对所述像素块的第二畸变网格,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及基于所述第二畸变网格,来确定用于所述像素块的增强分辨率最佳运动向量。
进一步针对第一实施例,确定所述最佳运动向量包括从多个畸变求和值中确定最小畸变求和值,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
进一步针对第一实施例,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量。
进一步针对第一实施例,所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
在一个或多个第二实施例中,一种用于提供运动估计的系统包括:存储器,配置为接收包括具有多个区的像素块的图像帧;耦合于所述存储器的运动估计引擎电路;以及耦合于所述运动估计引擎电路的控制器电路,所述控制器电路用于基于对所述运动估计引擎电路的多个调用,来生成针对所述像素块的畸变网格,其中,所述畸变网格包括与所述多个区、种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联,所述控制器电路并且用于基于所述畸变网格来确定最佳运动向量,并且所述运动估计引擎电路用于基于来自所述控制器电路的第一调用来生成所述多个畸变值中的并且与所述多个区中的第一区相关联的畸变值的第一阵列。
进一步针对第二实施例,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,并且所述多个候选运动向量包括所述种子运动向量。
进一步针对第二实施例,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第二实施例,所述多个区中的所述第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第二实施例,用于生成所述第一阵列的畸变值的运动估计引擎电路包括用于基于与所述第一区相关联的第一像素区掩蔽来禁用所述第一区的像素的子集的运动估计引擎电路。
进一步针对第二实施例,所述多个区中的所述第一区包括正方形形状、矩形形状或三角形形状中的至少一个,所述多个区中的所述第一区包括正方形形状、矩形形状或三角形形状中的至少一个,和/或生成畸变网格包括基于与所述第一区相关联的第一像素区掩蔽来禁用所述第一区的像素的子集。
进一步针对第二实施例,所述多个调用中的每一个包括所述种子运动向量。
进一步针对第二实施例,所述系统还包括:用于对所述像素块和参考像素区域进行下采样的下采样电路,所述运动估计引擎电路用于基于所下采样的像素块和参考像素区域来生成下采样的种子运动向量,并且所述控制器电路用于基于所述下采样的种子运动向量来确定所述种子运动向量。
进一步针对第二实施例,所述控制器电路还用于基于对所述运动估计引擎电路的多个第二调用来生成针对所述像素块的第二畸变网格,所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联,所述控制器电路并且用于基于所述第二畸变网格来确定用于所述像素块的增强分辨率最佳运动向量。
进一步针对第二实施例,用于确定最佳运动向量的控制器电路包括用于从多个畸变求和值中确定最小畸变求和值的控制器电路,并且所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
进一步针对第二实施例,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
在一个或多个第三实施例中,一种用于提供运动估计的系统包括:用于针对具有多个区的像素块确定种子运动向量的构件;用于生成针对所述像素块的畸变网格的构件,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及用于基于所述畸变网格来确定用于所述像素块的最佳运动向量的构件。
进一步针对第三实施例,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,并且所述多个候选运动向量包括所述种子运动向量。
进一步针对第三实施例,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个,并且其中所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第三实施例,用于生成所述畸变网格的构件包括用于基于与所述第一区相关联的第一像素区掩蔽来禁用所述第一区的像素的子集的构件。
进一步针对第三实施例,用于生成所述畸变网格的构件包括用于对于基于块的运动估计引擎提供多个调用的构件,所述多个调用中的每一个包括所述种子运动向量,并且对于所述基于块的运动估计引擎的所述多个调用包括对于所述多个区中的每个区的调用。
进一步针对第三实施例,用于确定所述种子运动向量的构件包括:用于对所述像素块和参考像素区域进行下采样的构件,以及用于基于所下采样的像素块和参考像素区域来生成所述种子运动向量的构件。
进一步针对第三实施例,所述系统还包括:用于生成针对所述像素块的第二畸变网格的构件,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及用于基于所述第二畸变网格来确定用于所述像素块的增强分辨率最佳运动向量的构件。
进一步针对第三实施例,用于确定所述最佳运动向量的构件包括用于从多个畸变求和值中确定最小畸变求和值的构件,并且所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
进一步针对第三实施例,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
在一个或多个第四实施例中,至少一个机器可读介质包括多个指令,所述多个指令响应于在计算装置上执行而使所述计算装置通过以下步骤来提供运动估计:针对具有多个区的像素块,确定种子运动向量;生成针对所述像素块的畸变网格,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及基于所述畸变网格,来确定用于所述像素块的最佳运动向量。
进一步针对第四实施例,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,其中,所述多个候选运动向量包括所述种子运动向量。
进一步针对第四实施例,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个,并且所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
进一步针对第四实施例,生成所述畸变网格包括基于与所述第一区相关联的第一像素区掩蔽,来禁用所述第一区的像素的子集。
进一步针对第四实施例,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,并且所述多个调用中的每一个包括所述种子运动向量。
进一步针对第四实施例,确定所述种子运动向量包括:对所述像素块和参考像素区域进行下采样,以及基于所下采样的像素块和参考像素区域,来生成所述种子运动向量。
进一步针对第四实施例,所述机器可读介质包括另外的指令,所述另外的指令响应于在计算装置上执行而使所述计算装置通过以下步骤来提供运动估计:生成针对所述像素块的第二畸变网格,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及基于所述第二畸变网格,来确定用于所述像素块的增强分辨率最佳运动向量。
进一步针对第四实施例,确定所述最佳运动向量包括从多个畸变求和值中确定最小畸变求和值,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
进一步针对第四实施例,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
在一个或多个第五实施例中,至少一个机器可读介质可以包括多个指令,所述多个指令响应于在计算装置上执行,使所述计算装置执行根据以上实施例中的任一个的方法。
在一个或多个第六实施例中,一种设备可以包括用于执行根据以上实施例中的任一个的方法的构件。
将认识到,本发明不限于所描述的实施例,而是可以在不偏离所附权利要求的范围的情况下以修改和替代方案来实践。例如,以上实施例可以包括特征的具体组合。然而,以上实施例不限于此,并且在各种实施方式中,以上实施例可以包括进行这样的特征的子集、进行这样的特征的不同顺序、进行这样的特征的不同组合,和/或进行不同于那些明确列出的特征的附加特征。因此,本发明的范围应该参照所附权利要求连同这样的权利要求被赋予给的等同物的全部范围来确定。

Claims (38)

1.一种用于提供运动估计的计算机实施方法,包括:
针对具有多个区的像素块,确定种子运动向量;
生成针对所述像素块的畸变网格,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及
基于所述畸变网格,来确定用于所述像素块的最佳运动向量。
2.根据权利要求1所述的方法,其中,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,并且其中,所述多个候选运动向量包括所述种子运动向量。
3.根据权利要求1所述的方法,其中,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个。
4.根据权利要求1所述的方法,其中,所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
5.根据权利要求1所述的方法,其中,生成所述畸变网格包括基于与所述第一区相关联的第一像素区掩蔽,来禁用所述第一区的像素的子集。
6.根据权利要求1所述的方法,其中,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,并且其中所述多个调用中的每一个包括所述种子运动向量。
7.根据权利要求6所述的方法,其中,对于所述基于块的运动估计引擎的所述多个调用包括对于所述多个区中的每个区的调用。
8. 根据权利要求1所述的方法,其中,确定所述种子运动向量包括:
对所述像素块和参考像素区域进行下采样;以及
基于所下采样的像素块和参考像素区域,来生成所述种子运动向量。
9. 根据权利要求1所述的方法,还包括:
生成针对所述像素块的第二畸变网格,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及
基于所述第二畸变网格,来确定用于所述像素块的增强分辨率最佳运动向量。
10.根据权利要求1所述的方法,其中,确定所述最佳运动向量包括从多个畸变求和值中确定最小畸变求和值,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
11.根据权利要求1所述的方法,其中,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量。
12.根据权利要求1所述的方法,其中,所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
13.一种用于提供运动估计的系统,包括:
存储器,配置为接收包括具有多个区的像素块的图像帧;
耦合于所述存储器的运动估计引擎电路;以及
耦合于所述运动估计引擎电路的控制器电路,所述控制器电路用于基于对所述运动估计引擎电路的多个调用,来生成针对所述像素块的畸变网格,其中,所述畸变网格包括与所述多个区、种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联,所述控制器电路并且用于基于所述畸变网格来确定最佳运动向量,
并且所述运动估计引擎电路用于基于来自所述控制器电路的第一调用来生成所述多个畸变值中的并且与所述多个区中的第一区相关联的畸变值的第一阵列。
14.根据权利要求13所述的系统,其中,所述多个区中的所述第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
15.根据权利要求13所述的系统,其中,用于生成所述第一阵列的畸变值的运动估计引擎电路包括用于基于与所述第一区相关联的第一像素区掩蔽来禁用所述第一区的像素的子集的运动估计引擎电路。
16.根据权利要求13所述的系统,其中,所述多个调用中的每一个包括所述种子运动向量。
17.根据权利要求13所述的系统,还包括:
用于对所述像素块和参考像素区域进行下采样的下采样电路,
其中,所述运动估计引擎电路用于基于所下采样的像素块和参考像素区域来生成下采样的种子运动向量,并且所述控制器电路用于基于所述下采样的种子运动向量来确定所述种子运动向量。
18.根据权利要求13所述的系统,其中,所述控制器电路还用于基于对所述运动估计引擎电路的多个第二调用来生成针对所述像素块的第二畸变网格,其中,所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联,所述控制器电路并且用于基于所述第二畸变网格来确定用于所述像素块的增强分辨率最佳运动向量。
19.根据权利要求13所述的系统,其中,用于确定最佳运动向量的控制器电路包括用于从多个畸变求和值中确定最小畸变求和值的控制器电路,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
20.根据权利要求13所述的系统,其中,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
21.一种用于提供运动估计的系统,包括:
用于针对具有多个区的像素块确定种子运动向量的构件;
用于生成针对所述像素块的畸变网格的构件,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及
用于基于所述畸变网格来确定用于所述像素块的最佳运动向量的构件。
22.根据权利要求21所述的系统,其中,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,并且其中所述多个候选运动向量包括所述种子运动向量。
23.根据权利要求21所述的系统,其中,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个,并且其中所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
24.根据权利要求21所述的系统,其中,用于生成所述畸变网格的构件包括用于基于与所述第一区相关联的第一像素区掩蔽来禁用所述第一区的像素的子集的构件。
25.根据权利要求21所述的系统,其中,用于生成所述畸变网格的构件包括用于对于基于块的运动估计引擎提供多个调用的构件,其中所述多个调用中的每一个包括所述种子运动向量,并且其中对于所述基于块的运动估计引擎的所述多个调用包括对于所述多个区中的每个区的调用。
26. 根据权利要求21所述的系统,其中,用于确定所述种子运动向量的构件包括:
用于对所述像素块和参考像素区域进行下采样的构件;以及
用于基于所下采样的像素块和参考像素区域来生成所述种子运动向量的构件。
27. 根据权利要求21所述的系统,还包括:
用于生成针对所述像素块的第二畸变网格的构件,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及
用于基于所述第二畸变网格来确定用于所述像素块的增强分辨率最佳运动向量的构件。
28.根据权利要求21所述的系统,其中,用于确定所述最佳运动向量的构件包括用于从多个畸变求和值中确定最小畸变求和值的构件,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
29.根据权利要求21所述的系统,其中,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
30.至少一个机器可读介质,包括多个指令,所述多个指令响应于在计算装置上执行而使所述计算装置通过以下步骤来提供运动估计:
针对具有多个区的像素块,确定种子运动向量;
生成针对所述像素块的畸变网格,其中所述畸变网格包括与所述多个区、所述种子运动向量以及多个候选运动向量相关联的多个畸变值,所述多个候选运动向量与所述种子运动向量相关联;以及
基于所述畸变网格,来确定用于所述像素块的最佳运动向量。
31.根据权利要求30所述的机器可读介质,其中,所述多个畸变值中的每个与所述多个区中的一个区以及所述多个候选运动向量中的一个候选运动向量相关联,并且其中,所述多个候选运动向量包括所述种子运动向量。
32.根据权利要求30所述的机器可读介质,其中,所述像素块包括正方形形状、矩形形状或三角形形状中的至少一个,并且其中,所述多个区中的第一区包括正方形形状、矩形形状或三角形形状中的至少一个。
33.根据权利要求30所述的机器可读介质,其中,生成所述畸变网格包括基于与所述第一区相关联的第一像素区掩蔽,来禁用所述第一区的像素的子集。
34.根据权利要求30所述的机器可读介质,其中,生成所述畸变网格包括对于基于块的运动估计引擎的多个调用,并且其中,所述多个调用中的每一个包括所述种子运动向量。
35. 根据权利要求30所述的机器可读介质,其中,确定所述种子运动向量包括:
对所述像素块和参考像素区域进行下采样;以及
基于所下采样的像素块和参考像素区域,来生成所述种子运动向量。
36. 根据权利要求30所述的机器可读介质,所述机器可读介质包括另外的指令,所述另外的指令响应于在计算装置上执行而使所述计算装置通过以下步骤来提供运动估计:
生成针对所述像素块的第二畸变网格,其中所述第二畸变网格包括与所述多个区、所述最佳运动向量以及多个第二候选运动向量相关联的多个第二畸变值,所述多个第二候选运动向量与所述最佳运动向量相关联;以及
基于所述第二畸变网格,来确定用于所述像素块的增强分辨率最佳运动向量。
37.根据权利要求30所述的机器可读介质,其中,确定所述最佳运动向量包括从多个畸变求和值中确定最小畸变求和值,其中所述多个畸变求和值中的每一个与所述多个候选运动向量中的一个候选运动向量或者所述种子运动向量相关联。
38.根据权利要求30所述的机器可读介质,其中,所述种子运动向量是整数运动向量并且所述多个候选运动向量是半像素运动向量,或者所述种子运动向量是半像素运动向量并且所述多个候选运动向量是四分之一像素运动向量。
CN201580063889.0A 2014-12-23 2015-11-20 对于任意形状的运动估计 Active CN107005709B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/580931 2014-12-23
US14/580,931 US9838710B2 (en) 2014-12-23 2014-12-23 Motion estimation for arbitrary shapes
PCT/US2015/061884 WO2016105743A1 (en) 2014-12-23 2015-11-20 Motion estimation for arbitrary shapes

Publications (2)

Publication Number Publication Date
CN107005709A true CN107005709A (zh) 2017-08-01
CN107005709B CN107005709B (zh) 2020-08-21

Family

ID=56131036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580063889.0A Active CN107005709B (zh) 2014-12-23 2015-11-20 对于任意形状的运动估计

Country Status (5)

Country Link
US (1) US9838710B2 (zh)
EP (1) EP3238450A4 (zh)
CN (1) CN107005709B (zh)
BR (1) BR112017010670A2 (zh)
WO (1) WO2016105743A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020073896A1 (en) * 2018-10-08 2020-04-16 Huawei Technologies Co., Ltd. Apparatuses and methods for inter prediction of a triangle partition of a coding block

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469841B2 (en) * 2016-01-29 2019-11-05 Google Llc Motion vector prediction using prior frame residual
US10306258B2 (en) 2016-01-29 2019-05-28 Google Llc Last frame motion vector partitioning
WO2019124191A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN112470476A (zh) * 2018-12-28 2021-03-09 Jvc建伍株式会社 图像编码装置、图像编码方法、图像编码程序、图像解码装置、图像解码方法及图像解码程序
WO2020137850A1 (ja) 2018-12-28 2020-07-02 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
US10944987B2 (en) 2019-03-05 2021-03-09 Intel Corporation Compound message for block motion estimation
KR20240027886A (ko) * 2019-03-08 2024-03-04 가부시키가이샤 제이브이씨 켄우드 동화상 부호화 장치, 동화상 부호화 방법 및, 동화상 부호화 프로그램, 동화상 복호 장치, 동화상 복호 방법, 동화상 복호 프로그램, 격납 방법 및 전송 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010026590A1 (en) * 2000-02-21 2001-10-04 Kang Hyun Soo Motion estimation method and apparatus
CN1177483C (zh) * 2000-03-23 2004-11-24 皇家菲利浦电子有限公司 运动估计算法
CN1607835A (zh) * 2003-09-30 2005-04-20 英特尔公司 矩形运动搜索
WO2008067501A2 (en) * 2006-11-29 2008-06-05 Novafora, Inc. Parallel processing motion estimation for h.264 video codec
EP2343898A1 (en) * 2010-01-08 2011-07-13 Research In Motion Limited Method and device for motion vector estimation in video transcoding using union of search areas
US20130301732A1 (en) * 2001-12-17 2013-11-14 Microsoft Corporation Video coding / decoding with motion resolution switching and sub-block transform sizes
CN103999465A (zh) * 2011-11-18 2014-08-20 高通股份有限公司 自适应性重叠块运动补偿

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW535440B (en) * 2001-10-09 2003-06-01 Vivotek Inc Motion estimation method of video encoding
EP1960967B1 (en) * 2005-12-15 2013-03-13 Analog Devices, Inc. Motion estimation using prediction guided decimated search
US8023562B2 (en) 2007-09-07 2011-09-20 Vanguard Software Solutions, Inc. Real-time video coding/decoding
CN101686393B (zh) * 2008-09-28 2012-10-17 华为技术有限公司 应用于模板匹配的快速运动搜索方法及装置
US10123036B2 (en) * 2014-06-27 2018-11-06 Microsoft Technology Licensing, Llc Motion vector selection for video encoding
US10757437B2 (en) * 2014-07-17 2020-08-25 Apple Inc. Motion estimation in block processing pipelines

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010026590A1 (en) * 2000-02-21 2001-10-04 Kang Hyun Soo Motion estimation method and apparatus
CN1177483C (zh) * 2000-03-23 2004-11-24 皇家菲利浦电子有限公司 运动估计算法
US20130301732A1 (en) * 2001-12-17 2013-11-14 Microsoft Corporation Video coding / decoding with motion resolution switching and sub-block transform sizes
CN1607835A (zh) * 2003-09-30 2005-04-20 英特尔公司 矩形运动搜索
WO2008067501A2 (en) * 2006-11-29 2008-06-05 Novafora, Inc. Parallel processing motion estimation for h.264 video codec
EP2343898A1 (en) * 2010-01-08 2011-07-13 Research In Motion Limited Method and device for motion vector estimation in video transcoding using union of search areas
CN103999465A (zh) * 2011-11-18 2014-08-20 高通股份有限公司 自适应性重叠块运动补偿

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KUHN P: "《Algorithms, Complexity Analysis and VLSI Architectures for MPEG-4 Motion Estimation(excerpts)》", 《1 JANUARY 1999, KLUWER ACADEMIC PUBLISHERS》 *
PACKWOOD R A ET AL: "《Variable size block matching motion compensation for object-based video coding》", 《IMAGE PROCESSING AND ITS APPLICATIONS, 1997, SIXTH INTERNATIONAL CONFERENCE ON DUBLIN, IRELAND 14-17 JULY 1, LONDON, UK, IEE, UK》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020073896A1 (en) * 2018-10-08 2020-04-16 Huawei Technologies Co., Ltd. Apparatuses and methods for inter prediction of a triangle partition of a coding block

Also Published As

Publication number Publication date
WO2016105743A1 (en) 2016-06-30
EP3238450A1 (en) 2017-11-01
BR112017010670A2 (pt) 2018-01-09
US20160182915A1 (en) 2016-06-23
EP3238450A4 (en) 2018-08-22
CN107005709B (zh) 2020-08-21
US9838710B2 (en) 2017-12-05

Similar Documents

Publication Publication Date Title
CN107005709A (zh) 对于任意形状的运动估计
CN104885467B (zh) 用于下一代视频编码的内容自适应参数变换
CN104219524B (zh) 使用感兴趣对象的数据对视频成码的比特率控制
CN109618090A (zh) 对通过使用广角透镜捕获的图像的图像失真校正的方法和系统
CN106170979A (zh) 恒定质量视频编码
CN109391815A (zh) 用于改进的视频编码的参考帧重投影
CN110214447A (zh) 用于360视频的解块滤波
CN104541505B (zh) 层间内部模式预测方法、设备及装置
CN104782124B (zh) 利用编码器硬件对视频内容进行预处理
CN104169971A (zh) 使用非线性缩放和自适应源块大小的分层运动估计
CN104053005B (zh) 使用分级相平面相关性和块匹配的运动估计
CN107851307A (zh) 对用于图像处理的拜耳类型图像数据去马赛克的方法和系统
CN103518227B (zh) 用于随机运动模糊栅格化的深度缓冲器压缩
CN105850133A (zh) 用于下一代视频译码的内容自适应主运动补偿预测
CN107529098A (zh) 实时视频摘要
CN109155856A (zh) 用于视频编解码的利用近邻块模式的运动估计的方法和系统
CN106664412A (zh) 包括目标比特率的视频编码速率控制和质量控制
CN107888928A (zh) 运动补偿预测方法和设备
CN107801039A (zh) 运动补偿预测方法和设备
CN107113435A (zh) 基于视频平坦性的分区模式和变换尺寸确定
CN108235031A (zh) 一种运动矢量解码方法及解码器
CN103167286B (zh) 用于运动估计的详尽的子宏块形状候选保存和恢复协议
CN104322068A (zh) 跨层跨通道残差预测
US20220198628A1 (en) Image processing apparatus and method of processing multi-frames using the same
CN104838652A (zh) 层间运动数据继承

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