确定用于比较运动补偿视频编码中的图像块的度量的方法和系统的制作方法

文档序号:6479922阅读:146来源:国知局
专利名称:确定用于比较运动补偿视频编码中的图像块的度量的方法和系统的制作方法
技术领域
本发明涉及运动补偿视频编码领域,具体地,涉及确定用于比较运动补偿视频编 码中的图像块的度量的改进的方法和系统。
背景技术
对于网络运营商而言,包含各种内容类型(包括文本、音频和视频)的多媒体提供 了巨大的商机和收入机会。高带宽的可用性和分组交换的因特网协议(IP)技术的使用使 得传输丰富的内容(包括如下各种的组合文本、话音、静止图片和动画、照片、视频剪辑以 及音乐)成为可能。为了利用这种市场潜能,网络运营商必须满足客户对于质量和可靠性 的期望。对于在现今的包括移动终端、蜂窝电话、计算机以及其它电子设备的异构网络中呈 现多媒体应用而言,服务器级的媒体的转码是至关重要的。因为各种设备经常是资源受限 的,并且很少能够自己改变媒体,所以必须在服务提供商级执行媒体的适配以及转换。这对 于服务提供商而言是很重要的问题,因为他们将不得不在今后的几年中面对特别急剧的业 务量增长;这种增长远超出可以单独从新的硬件获得的速度提升。使用增加服务器数量的 硬办法(brute-force approach)是不够的。此外,服务器数量的增加将导致功耗、散热和 空间方面成比例的增加。改善系统性能并处理业务量的大量增长的另外的方法是设计用于 视频编码的智能技术,视频编码形成多媒体改变的重要的和资源密集的方面。运动补偿视频编码处理包括块的景象,每个块包括多个像素。本质上所有的现代 视频编解码器使用运动补偿编码,其中相对于多个先前帧来对帧进行编码,从而利用时间 上的依赖性并获得更好的压缩。运动补偿视频编码的最密集的运算方面是运动估计方面。 这通过估计景象的对象从一个帧到下一个帧的位移的运动估计算法来执行。这些估计用于 创建合成帧,其中使得所述景象变形以匹配对象的估计的运动。这种合成帧用作差分编码 的当前帧的预测器。这样的运动估计算法计算量巨大,占编码器的运行时间的绝大部分,分 辨率也随之增加,从而是优化的自然目标。相当大的努力涉及基于块的运动估计问题,该问题是对从参考帧复制的小矩形区 域构造预测帧的一般问题的简化。下面将提供基于块的运动估计的讨论。对于在本文件中 提供的说明,假定基本块是16X16像素。注意到相同的构思可应用于不同大小的块。系统 的目的是产生用于正在被编码的当前帧的预测帧。通过根据给定参考帧来差分编码当前帧 而生成该预测帧。对于当前帧中的每个16X16块,系统查寻参考帧中的最匹配的块。该搜 索检查参考帧中的大量块(不必排列在16X16的边界上)并选择最小化与当前帧的区别 的块。运动矢量(作为运动估计过程中的关键元素)是相对于(在当前帧中的)当前块的 位置仅仅对(参考帧中的)最匹配的块的偏移。于是将最匹配的块复制到补偿帧或预测帧 中的当前块的位置处。在这种处理之后,预测帧是考虑到仅允许复制块时可以从参考帧建 立的最佳近似(根据选择的衡量图像块之间的区别的度量)。补偿帧用作差分编码当前帧 的预测器。
现在将在下面简要讨论选择的现有技术文献。研究沿着不同的方向进行。 S. Bormanλ Μ. Robertson、R. L Stevenson 的 “Block Matching Sub-pixel Motion Estimation from Noisy, Undersampled Frames,, (SPIEVisual Communications and Image Processing Conference 1999)介绍了涉及在SAD、MSE和NCF中的噪音和釆样误 差的效果的实验研究。W. Li、E. Salari 的文章 “Successive Elimination Algorithm for Motion Estimation,,(IEEE Transactions on Image Processing,Volume 4,Issue 1, January 1995,第105-107页)探讨了用于设计针对快速运动估计的动态编程等的方法的 SAD和MSE的属性。该作者致力于算法,该算法不需要在解空间中穷举搜索,并讨论将使用 现有的度量的怎样的属性;它们并没有提出任何新的度量。F. Tombari, S. Mattocia, L. di Stefano 的"Template Matching Based on Lp Norm Using Sufficient Conditions with Incremental Approximation,, (IEEE International Conference on Video and Signal Based Surveillance,November 2006,第 20 页)扩展了 Li 和 Salari 的工作。该文章使用 类似的动态编程方法来计算快速版本的度量。U. Koc 和 K. J.R.Liu 的 “ Interpolation—free Subpixel Motion Estimation Technique in DCT Domain,, (IEEE Transactions on Circuits and Systems for Video Technology, Volume 8, Issue 4,August l"8,第 460_487 页)致力于子像素级,并通过 使用DCT域中的技术试图来避免空间域中的子像素内插,DCT域中的技术至少和在空间 域中使用的技术一样的复杂。适当地扩展度量以处理到DCT域的变换。S. Lee、Soo-Ik Chae 的另一篇文章"Two-step Motion Estimation Algorithm using Low Resolution Quantization,, (International Conference on Image Processing,Volume 3,September 1996,第795-798页)致力于运动估计技术。该文章介绍了 SAD匹配的“失败的快速”方法。 首先对图像进行量化,从而减少了每个像素的精度,例如从每个像素8位到每个像素4位。 第一函数使用减少的精度版本比较两个块。如果结果是可接受的,进行到使用全精度度量。 尽管该研究在概念上通过硬件实现来呈现,但是当运行代码的处理器提供这样的装置时它 没有考虑有效利用包括SAD的单指令多数据(SIMD)指令集。本发明的重要方面是通过使 用优化SIMD指令集的这种性能来减少在计算度量中所需的时间,该指令集设置在当今的 市场中可用的商用处理器中。在 C. -K. Cheung> L. -Μ. Po 的“A Hierarchical Block Motion Estimation Algorithm using Partial Distortion Measure,, (International Conference on Image Processing, Volume 3,October 1997,第606-609页)中报告的研究通过使用规则网格采 样来使用像素采样,其完全等同于普通的二次采样。他们使用(或者在五点形模式中的,或 者一个在两列中的,一个在两行中的)1/2或1/4像素来计算SAD/MSE。对照1/4网格SAD 来检验块。如果SAD/MSE是η个较好的中之一,它将保持到下一轮,在下一轮将使用1/2网 格密度。如果属于从之前轮中获得的η个较好的,m将维持,并通过全SAD来彻底检验。不 幸地,由Cheung和Po提出的方法不能有效利用SIMD类型并行操作。在 Y. -L. Chan> W. -C. Siu 的 "New Adaptive Pixel Decimation for Block Motion Vector Estimation,, (IEEE Transactions on Circuits and Systems for Video Technology, Volume 6,Issue 1, February 1996,第 113-118 页)中报告的研究与 Cheung 和Po的文章类似。然而,Chan和Siu使用不同的采样模式规则的但排除五点形。他们考虑密度1/4和1/9的模式(1在2X2中或一个在3X3中),并且他们不考虑子像素估计。因此,已经在用于块比较的现有编解码器中使用了衡量图像块之间的区别的各种 类型的度量,在下面的讨论中也称为度量。无论使用什么具体的度量,其计算的结果都是计
算量巨大。因此,在业界需要一种改进和有效的方法和系统,用于快速计算衡量图像块之间 的区别的度量。

发明内容
因此,本发明的目的是提供一种改进的方法和系统,用于计算衡量在运动补偿视 频编码期间用于比较块的两个图像块之间的区别的度量。根据本发明的一个方面,提供一种确定用于景象的运动补偿视频编码中的度量的 方法,所述景象包括帧,所述度量衡量包含在参考帧中的第一图像块和包含在当前帧中的 第二图像块之间的区别,所述第一和第二图像块包括相同数量的行和列的像素,所述方法 包括(al)生成具有相同数量的行和列的模式矩阵作为所述第一和第二图像块,用于选择 所述第一和第二图像块中的像素的子集;(bl)获得在步骤(al)中生成的所述像素的子集 中的每个像素的特性;以及(Cl)处理所述像素的子集的所述特性以确定所述度量。步骤(al)进一步包括(^)生成所述景象的全局运动特性,其指示所述景象中的 对象的运动方向;以及( )生成与CPU架构对应的所述模式矩阵,其用于所述运动补偿视 频编码、在步骤(^)中生成的所述全局运动特性和像素预算,所述像素预算是所述像素的 子集中的像素数量的估计。步骤(a2)进一步包括(a3)确定所述景象的平均运动矢量,所述平均运动矢量具有幅度和方向;以及 (b3)将所述平均运动矢量的幅度与无运动的给定阈值比较,包括(c3)当所述平均运动 矢量的幅度小于所述阈值时,将所述全局运动特性确定为表示没有对象运动的静态;以及 (d3)当所述平均运动矢量的幅度等于或大于所述阈值时,基于在步骤(a3)中确定的所述 平均运动矢量的方向将所述全局运动特性确定为水平运动、垂直运动或斜线运动中的一 种。步骤( )进一步包括(a4)基于用于所述运动补偿视频编码、所述全局运动特性 和所述像素预算的所述CPU架构从一系列预定的模式矩阵中选择所述模式矩阵。步骤(a4)进一步包括(a5)在执行运动补偿之前生成模式矩阵的库,在所述库中 的每个模式矩阵与用于所述运动补偿视频编码、所述全局运动特性和所述像素预算的所述 CPU架构对应。步骤(始)进一步包括对于所述模式矩阵的库中的每个模式矩阵(a6)在所述模 式矩阵的单元中存储布尔值,每个单元与在所述第一和第二图像块中占据相同的位置的像 素对应;以及(b6)在所述模式矩阵的所述单元中存储“真”或“假”布尔值中的一个,其与 来自所述第一和第二图像块的、包括在所述度量的计算中的所述像素对应,以及在所述模 式矩阵的所述单元中存储另一个布尔值,其与所述第一和第二图像块中的、排除在所述度 量的计算外的所述像素对应。步骤(bl)包括(a7)获得所述特性,其是亮度值;(b7)将所述第一图像块中的像素的亮度值存储在第一矩阵中的单元中;以及(c7)将所述第二图像块中的像素的亮度值 存储在第二矩阵中的单元中。步骤(cl)进一步包括(a8)使用所述模式矩阵选择所述第一和第二矩阵中的单元;以及(b8)对存储在所述步骤(a8)中选择的所述单元中的所述亮度值施加绝对误差和 函数(SAD)。步骤(cl)进一步包括(a9)使用所述模式矩阵选择所述第一和第二矩阵中的 单元;以及(b9)对存储在所述步骤(a9)中选择的所述单元中的所述亮度值施加平均平方
误差函数。还提供一种计算机可读介质,其上存储有计算机可读程序代码装置,当由计算机 执行时所述计算机可读程序代码装置执行如上所述的方法的步骤。根据本发明的另外的方面,提供一种快速计算用于景象的运动补偿视频编码的度 量的方法,所述景象包括具有像素的块,所述度量衡量第一和第二图像块之间的区别,所述 方法包括(al7)生成用于选择所述第一和第二图像块中的像素的子集的模式矩阵;(bl7) 获得在所述像素的子集中的每个像素的特性;以及(cl7)处理所述像素的子集的所述特性 以确定所述度量。步骤(al7)进一步包括(al8)生成所述景象的全局运动特性,其指示所述景象中 的对象的运动方向;以及(bl8)生成与CPU架构对应的所述模式矩阵,其用于所述运动补偿 视频编码和所述全局运动特性。步骤(al8)进一步包括(al9)确定所述景象的平均运动矢量,所述平均运动矢量 具有幅度和方向;(bl9)将所述平均运动矢量的幅度与无运动的给定阈值比较;(cl9)当所 述平均运动矢量的幅度小于所述阈值时,将所述全局运动特性确定为表示没有对象运动的 静态;以及(dl9)当所述平均运动矢量的幅度等于或大于所述阈值时,基于所述平均运动 矢量的方向将所述全局运动特性确定为水平运动、垂直运动或斜线运动中的一种。步骤(bl8)进一步包括(a20)从一系列预定模式矩阵中选择所述模式矩阵。步骤 (bl7)包括(a21)获得所述特性,其是亮度值;(b21)将所述第一图像块中的像素的亮度值 存储在第一矩阵中的单元中;以及(c21)将所述第二图像块中的像素的亮度值存储在第二 矩阵中的单元中。例如,步骤(C17)可包括(a2》使用所述模式矩阵选择第一和第二矩阵 中的单元;以及( 对存储在所述步骤(a22)中选择的所述单元中的所述亮度值施加绝 对误差和函数(SAD)。可替换地,步骤(cl7)可包括(a2;3)使用所述模式矩阵选择第一和 第二矩阵中的单元;以及(b2!3)对存储在所述步骤(a8)中选择的所述单元中的所述亮度值 施加平均平方误差函数。所述像素的子集包括组,在所述第一和第二图像块中的所述组的位置最大化块覆 盖的跨度。优选地,所述组是等距的,以及优选地每个组中的所述像素占据所述像素行中的 一个的连续位置。根据本发明的另外的方面,提供一种确定用于景象的运动补偿视频编码中的度量 的系统,所述系统具有处理器和存储器,所述景象包括帧,所述度量衡量包含在参考帧中的 第一图像块和包含在当前帧中的第二图像块之间的区别,所述第一和第二图像块包括相同 数量的行和列的像素,所述系统包括(al0)模式矩阵生成单元,产生用于选择所述第一和 第二图像块中的像素的子集的模式矩阵,所述模式矩阵具有与第一和第二图像块相同的行和列的数目;(blO)图像取得单元,取得每个像素的特性;以及(ClO)度量计算单元,通过处 理所述像素的子集的所述特性来确定所述度量。所述模式矩阵生成单元(alO)进一步包括(all)全局运动特性确定单元,计算所 述景象的全局运动特性,其指示所述景象中的对象的运动方向;以及(bll)矩阵确定单元, 基于所述景象的全局运动特性、所述运动补偿视频编码中使用的CPU架构和像素预算生成 所述模式矩阵,所述像素预算是所述像素的子集中的像素数量的估计。所述矩阵确定单元(bll)进一步包括(aU)模式矩阵库,存储一系列预定的模式 矩阵,所述模式矩阵库中的每个模式矩阵与用于运动补偿视频编码、所述景象的全局运动 特性和像素预算的所述CPU架构对应;以及(bU)模式矩阵选择单元,从所述模式矩阵库选 择所述模式矩阵。在所述系统中,所述特性是亮度值。所述度量计算单元(ClO)包括绝对误差和计算单元,所述绝对误差和计算单元对 所述像素的子集中的所述亮度值施加绝对误差和函数。所述度量计算单元(ClO)包括平均 平方误差计算单元,所述平均平方误差计算单元对所述像素的子集中的所述亮度值施加平 均平方误差函数。所述像素的子集包括组,在所述第一和第二图像块中的所述组的位置最大化块覆 盖的跨度。因此,提供了确定用于运动补偿视频编码的度量的改进的系统和方法。


仅通过实例并参考附图,根据下面的实施例的说明,本发明的另外的特征和优点 将变得显而易见,其中图1例示了用于运动补偿视频编码的现有技术的系统;图2更详细地呈现了图1中的核心子系统10 ;图3示出例示了在补偿视频编码中用于运动估计的现有技术的方法的步骤的流 程图;图4(a)呈现了根据本发明的实施例的例示基于CPU架构的连续的像素选择的实 例,所述CPU架构用于减少确定度量的计算成本;图4(b)呈现了本发明的实施例的改进的核心子系统102b ;图4(c)示出图4(b)的改进的度量确定模块214b中的单元;图5示出例示了由本发明的实施例执行的方法的步骤的流程图,所述方法用于确 定衡量图像块之间的区别的度量。图6例示了用于在本发明的实施例中确定景象的全局运动特性的过程;以及图7示出例示了图5的步骤“计算P-SAD”的流程图。
具体实施例方式因为基于块的运动估计算法基于这样的近似正确的假定,即,衡量两个图像块之 间的区别(通常在文献中称为误差)的度量围绕最优区域呈凹形,它们仅宽松地取决于实 际的度量,因此应该返回到有效的、低成本的、近似的度量。这个发明通过仅考虑正在比较 的块中的选择的像素来减少与确定衡量图像块之间的区别的度量关联的计算成本。虽然用于确定度量所需的时间急剧地减少,但是不存在图像质量上的巨大下降。在详细讨论本发明之前,通过图1示出的系统100来提供运动补偿编码的一般说 明。核心子系统10 包括帧缓冲模块104,其连接到运动估计模块106和运动补偿模块 108。而运动估计模块106连接到运动补偿模块108。帧缓冲模块104存储其他模块所需的 大量的之前的帧,以创建运动补偿帧用作在处理的当前帧的预测器。在图2中详细说明生 成运动补偿图像的核心子系统10 的另外的细节。从当前图像(由图1中的减法运算符114所示)中减去来自运动补偿模块108的 运动补偿帧,并将残差(图像区别)送到变换步骤以进行编码。帧源110产生帧,帧源110可以是将图像帧馈送到编码器的任何设备(例如照相 机或文件)。在帧源110中存储帧的过程取决于所选择的模式。模式选择模块112向编解 码器指示是否将使用运动补偿对输入帧进行编码或是否将使用“内部模式”。内部模式与不 能相对于其他帧来解码的帧(例如作为关键帧)一起使用。他们使用一些单独的编码,这 些编码限于完全包含在该图像中的数据。模式选择在模式补偿之外,因为这是基于流级策 略的特性。模式选择在内插的帧(运动补偿)和“关键帧”之间选择,“关键帧”可以凭借自 己解码而无需补偿或引用其他帧。此外,使用关键帧,以寻求视频中的特定位置而无需解码 之前的帧。解压缩可仅在关键帧处开始,而运动补偿帧取决于其他帧,因此不能作为初始解 压缩点。当模式选择模块112选择内预测模块116,该模块116在当前帧中预测像素而无需 利用其他帧。这准备了关键帧来进行编码。如前所述,码内帧(intra-coded frame)不依 赖于其他帧以用于它的压缩/解压缩。内预测的其他细节超出了本讨论的范围。如果模式 选择模块112选择执行变换操作,则根据模式补偿模块108的输出,处理后的帧馈送到变换 模块118。变换是特定于编解码器的步骤,其中图像从空间(像素)域变换为频域。这种变 换通常是离散余弦变换(DCT)或类似变换。变换编码是众所周知的,在本发明的情境中不 需要进一步讨论。在将像素变换到频域后,通过量化模块1 量化生成数据。量化基本是 准确度降低(因此而不可逆)步骤,其在实践中意味着较少的位将用于代表该数据。量化 的类型和粗度分别取决于编解码器和特定用户的目标质量/比特率。量化模块1 的输出 由逆量化模块126和熵编码模块130来处理,熵编码模块130也从运动估计模块106接收 运动矢量。熵编码是特定于编解码器的步骤,在此通过使用可变长度代码和其他压缩技术 来编码来自量化模块1 的减少的精度的数据。在该级别上,没有损失精度,仅仅使用更有 效的数据表示。典型地,其是霍夫曼编码的变型,并使用预先计算的静态码或一些自适应码 (如同自己对数据进行编码),对于更先进的编解码器,例如H.沈4,使用更复杂的技术。熵编码模块130的输出由传输编码模块132处理。这个模块基于该输出是否存储 为存储模块136中的文件或作为数据由发送模块134发送来将熵编码的数据“包装”为传 输格式。典型的传输文件格式是MPEG TS、AVI、3GP等。传输可以通过RTP/RTSP,其用于经 由因特网流传输视频的实时传输协议。逆量化模块1 接收量化模块128的输出并恢复由量化模块1 执行的步骤。然 而,这并不是完全的逆操作,因为量化不可逆的去除信息;逆量化产生原始数据的简化精度 的近似值。于是这个数据由逆变换模块IM处理。这个模块执行变换步骤的逆操作,并将 数据从频域变换到像素域。因此,具有在变换模块118中进行的图像的减少的精度的近似值。
在图1的上部中间,第二模式选择开关120(开关112的逆开关)决定增加到帧缓 冲模块104的图像是否是内部帧或运动补偿帧。如果是内部帧,则逆变换模块124的输出 已经是完全图像,因此可以如在帧缓冲模块104中那样来增加。如果是运动补偿帧,则将来 自逆变换的差值加回运动补偿帧(该操作由图中的加法运算符122来表征),生成增加到帧 缓冲模块104的最终的编码的图像。核心子系统10 通过图2来解释。最后的编码图像202是由图1的逆变换模块 IM产生的图像,并被插入存储大量帧的帧缓冲模块104。典型地,帧缓冲模块104限于存 储很少的缓冲帧208,其典型地包括最后一个或两个编码的图像。当增加新的帧时,最旧的 帧(在缓冲器中最长时间的那个)就被丢弃,以确保缓冲器不会无限增长。然而,在某些编 解码器中,例如H.沈4,帧的数量可以多达16个,但是一般而言它仅限于之前的帧。取决于 来自运动估计算法216的帧选择输出,选择帧模块210选择合适的帧以用于下一模块。到编码器212的当前图像和由选择帧模块210选择的帧由运动估计模块106处 理,运动估计模块106采用执行实际运动估计的运动估计算法216。它使用度量确定模块 21 ,产生用于衡量两个图像块之间的区别的度量。取决于运动估计算法216的复杂度,帧 选择可以与“获得最后的帧”一样简单,或者可以如在选择交织的模式中的半帧中一样更为 复杂。帧选择还取决于支持的特定的编解码器。一些编解码器仅支持最后的帧作为参考帧, 但是一些编解码器(例如H.沈4),允许补丁(patches)来自大量图像(在这个例子中直到 16个)。这个模块返回运动矢量(其还可包括引用多个之前的帧)。运动估计算法216的输出由运动补偿模块108来使用。这个模块应用由运动矢量 描述的变换(以及引用之前的帧)。运动补偿模块108如运动矢量指定的那样根据部分参 考帧来连接预测图像。由典型的运动估计算法执行的方法的步骤通过图3中呈现的流程图300来说明。 当开始(框30 时,过程300设置变量最佳度量为任意大的值(框304)并初始化搜索位 置(框306)。搜索位置是块在参考帧中的位置,参考帧与当前块比较以在处理的当前帧中 进行补偿。运动估计算法生成大量参考帧中的这样的位置,并通过将其与当前帧中的当前 块进行比较来检验在这些位置的块。于是过程300检验搜索位置(框308)。通过对存储 在两个矩阵a和b中的相应单元中的每个像素的亮度值施加绝对误差和函数来检验该搜索 位置。来自参考帧的在检验的块称为第一块,其像素的亮度值存储在下面的公式中的符号 a表示的第一矩阵中。在处理的、来自当前帧的块称为第二块,其像素的亮度值存储在由下 面的公式中的符号b表示的第二矩阵中。这两个矩阵中行i和列j中的单元分别称为a[i, j]和 b[i,j]。因此SAD = Σ (i,j)|a[i,j]_b[i,j]将由该SAD函数计算的这两个块之间的结果差别的大小(也称为度量)与最佳度 量比较(框310)。如果度量小于最佳度量,则过程300从框310的“是”退出并根据这个搜 索位置计算运动矢量(框314)。否则,过程300从框310的“否”退出并检查是否需要生 成附加的搜索位置(框312)。如果不,则过程300从框312的“否”退出并结束(框322)。 否则,生成新的搜索位置(框315),过程300循环回到框308的入口。在框314计算运动矢 量之后,过程300将度量的值存储在最佳度量中,将在框314计算的运动矢量存储在称为最 佳矢量的变量中(框316)。接下来检查最佳度量是否小于预定的阈值(框318)。如果没
10有,则过程300从框318的“否”退出,并循环回到框312的入口。否则,过程300从框318 的“是”退出,将最佳矢量增加到运动矢量缓冲器(框320)并结束(框322)。例如,通过使用SAD函数来计算衡量两个图像块之间的区别的度量,是耗时的,因 为其基于两个块中的每个像素。本发明通过使用两个不同的技术极大地减少计算复杂度。 在计算度量中仅使用选择的像素的子集P-SAD = Σ a,JeP)|a[i,j]_b[i,j]|。P-SAD是基于优化的模式的SAD函数,其仅仅使用包括在P中的像素的子集,并基 于用于选择该像素的子集的模式矩阵。P-SAD的计算复杂度直接与包括在计算中的i,j对 的数量成正比。由i,j标识的像素以这样的方式来选择结果图像中的失真是可忽略的小。 P-SAD过程接受三种自变量矩阵a、矩阵b和模式矩阵。模式是布尔矩阵,并在特定i和j的组合包括“真”或“假”以指示像素亮度值a[i, j]和b[i,j]的特定集合是否包括在P-SAD计算中模式[i,j]的“真”值指示相应的a[i, j]和b[i,j]对包括在P-SAD计算中,而“假”值意味着相应的a[i,j]和b[i,j]对排除在 该计算外。通过减少使用在P-SAD计算中的项的数量,极大地减少了计算复杂度。通过选 择行中的连续的像素(称为组)来进一步优化P-SAD计算的执行时间。大量可用的CPU可 以通过单指令来操作这样的组。市场中可见的一些CPUl包括单指令多数据(SIMD)指令集 来执行这样的操作。实例包括因特尔的PentiUm(奔腾)111系列处理器,其包括对x86架 构的流SIMD扩展(SSE)。3DNow !是对于AMD1K6处理器的多媒体扩展,其提供了从字节组 成字的打包的SAD指令(PSADBW)。在图4(a)中显示的图350示出具有5组的实例,其中灰度单元指示用于针对实例 16x 16块的P-SAD计算中选择的像素。该实例中的每个组包括8个像素。请注意,模式矩 阵以这样的方式来构造组(在水平和垂直方向上)尽可能等距,并且块覆盖的跨度最大 化(参见图4(a))。图4(a)的任意两个临近的组之间的垂直距离近似相等,而任意两个临 近的组之间的水平距离彼此相等。通过在块中这样的位置,块覆盖的跨度被最大化。即,图 4(a)的组没有集中在该块中的一个区域,而是以覆盖尽可能多的块的方式来放置。例如,具 有其SSE的Pentium 111处理器可以处理由8个连续灰度单元的集合表示的组,其在CPU 指令中占据相同的行。模式矩阵中的“真”值(可替换地,“假”值)的数量直接控制与P-SAD计算关联的 成本,并基于像素预算。像素预算是由P-SAD处理的、所选的像素的子集中的像素的数量的 估计。其可具有预定固定值或可由用户指定。基于该像素预算、CPU架构和在处理的景象 的全局运动特性来选择模式矩阵。图4 (a)的实例与像素预算40对应。假定具有其SSE的 因特尔PentiumIll处理器用于在一个指令中操作包括8个像素的组,组的数量是40/8 = 5,因此5个组用于图4(a)的实例中。通过改进度量确定模块214a,本发明的实施例减少度量确定的计算复杂度。在本 发明的实施例的图4(b)的系统370中示出执行P-SAD函数的改进的核心子系统102b,其合 并了改进的度量确定模块214b。注意到,改进的核心子系统的除了 214b的所有组件与在 图2中的核心子系统10 示出的组件相同。本发明的实施例的系统370包括具有CPU和 计算机可读介质(例如存储器、DVD、CD-ROM或其他介质)的通用或专用计算机,计算机可 读介质存储由该CPU执行的计算机可读指令。可选地,该系统可以固件实施,或固件和专用计算机的组合来实施。系统370的各种模块(包括改进的度量确定模块214b)实现为存储 在计算机可读介质中的由该CPU执行的计算机可读指令。通过图4(c)中呈现的图214来解释改进的度量确定模块214b。如上所述,改进的 度量确定模块214b可以通过固件来实现,或可选择的,通过存储在计算机可读介质中的计 算机软件代码来实现。包括存储在计算机可读介质中的计算机可读指令的改进的度量确定模块214b包 括三个单元图像取得单元404、模式矩阵生成单元402和度量计算单元406。通过图像取 得单元404取得在该景象中的所有像素的特性(例如其亮度值)以执行运动补偿视频编 码。这些特性由模式矩阵生成单元402来使用以生成合适的模式矩阵,并由度量计算单元 406来使用,该单元406确定衡量包含在参考帧中的第一图像块和包含在正在处理的当前 帧中的第二图像块之间的区别。在本发明的一个实施例中,度量计算单元包括实施如上所 述的PSAD函数的绝对误差和(SAD)计算单元。而包括存储在计算机可读介质中的计算机 可读指令的模式矩阵生成单元402包括两个单元全局运动特性确定单元408和矩阵确定 单元409。全局运动特性确定单元408计算指示景象中的对象的运动方向的该景象的全局 运动特性。这个信息由矩阵确定单元409使用以选择在该景象的运动补偿视频编码中使用 的模式矩阵。模式矩阵确定单元409包括两个单元存储在计算机可读介质中的模式矩阵 库412和矩阵选择单元410。模式矩阵库412存储一系列预定的模式矩阵,其每个与CPU架 构和景象的全局运动特性对应。模式矩阵选择单元410负责基于在运动补偿视频编码中使 用的CPU架构、在处理的景象的全局运动特性和像素预算,从模式矩阵库412中选择模式矩 阵。该模式矩阵库包括多个模式矩阵,其每个与如下的特定组合对应在运动补偿视频编 码中使用的CPU架构、景象的全局运动特性和像素预算。对于呈现在图4(a)的情境中的实 例,该模式矩阵库将包括4个特定模式矩阵,其与具有其SSE扩展的因特尔Pentium 111处 理器和40个的像素预算对应。这四个模式矩阵中的每个与景象的特定全局运动特性对应 静态、水平运动、垂直运动和斜线运动。一旦已知对于所有这三个因素的值,则可找出并从 该库中取得特定模式矩阵。接下来讨论用于实现这些单元的方法。通过在图5中示出的流程图500来说明由度量计算单元406执行的、计算P-SAD的 值的方法的步骤。当开始(框502)时,基于CPU架构来选择组中的像素的数量h-group (框 504)。如上所述,组指的是由一个CPU指令处理的行中的连续像素。例如,如果CPU支持可 以一次处理η个像素的指令,则In-group设置为η。于是计算使用的称为无组(no-group) 的这样的组的数量(框506)。Floor函数产生等于或小于其自变量的最大整数。基于 h-group、no-group和景象的全局运动特性,确定要使用的模式矩阵(框508)。在本发明 的一个实施例中,从一组存储的矩阵中选择模式矩阵。一旦确定了模式矩阵,则过程500计 算P-SAD值(框510)并退出(框512)。接下来讨论各种模式矩阵的存储器和在框508中 选择模式矩阵。之后讨论用于计算P-SAD的方法。通过模式矩阵生成矩阵单元402实现生成模式矩阵。简要地讨论选择模式矩阵。 可以通过许多不同的方式表征景象。本发明的一个实施例使用景象的全局运动特性以将其 表征为静态、垂直运动、斜线运动或水平运动。注意到这种表征表达对象运动的近似方向, 其静态是对应于不运动或几乎不运动的特殊的情况。图6中示出的图600用于解释在确定 景象的全局运动特性中使用的过程。通过将该景象中的不同的块的运动矢量相加以及将该和除以块的数量来计算景象的平均运动矢量(具有幅度和方向)。将平均运动矢量的幅度 (长度)与由用户设置的给定“没有运动的阈值”602相比较。如果该矢量幅度小于该阈值, 则将该景象分类为静态。例如,平均运动矢量604具有小于没有运动的阈值的幅度,并被确 定为静态。类似地,因为该平均运动矢量606的幅度大于没有运动的阈值,则考虑其方向。在图6的实例中景象特征空间划分为8个区域区域612和620对应水平运动,区 域608和616对应垂直运动以及区域610、614、618和622对应斜线运动。取决于平均运动 矢量属于的区域,该景象分类为水平运动、垂直运动或斜线运动(参见图6)。在图6中,由 于平均运动矢量606的幅度大于没有运动的阈值,以及其落在该图的垂直运动区域608,因 此该景象被分类为垂直运动。在本发明的一个实施例中,生成在P-SAD计算中要使用的大 量模式矩阵,并在执行运动补偿视频编码之前将其存储在库中。每个这样的模式矩阵对应 In-group、no-group和景象的全局运动特性的特定组合。在运行时间,分析正在处理的景 象的平均运动矢量,于是从模式矩阵的库中取得合适的模式矩阵(框508),并将其使用在 下面描述的P-SAD计算中。通过图7中示出的流程图700来说明图5的框510中执行的方法的步骤。在使用 具有16x 16像素的图像块的系统的情境中来进行说明,该系统容易扩展到具有其它块大 小的图像。当开始(框70 时,过程700执行初始化步骤(框704)。在这个步骤中,存储 当前行和列的索引的i和j的初始值分别设置为1,以及变量和初始化为0。在初始化步骤 之后,过程700检查模式矩阵的第i行和第j列处的单元中存储的布尔值(框706)。如果 其是“真”,过程700从框706的“是”退出,以及如框708所示a[i,j]和b[i,j]用于P-SAD 计算中。否则,过程700从框706的“否”退出,以及将a[i,j]和b[i,j]值排除在P-SAD 计算外。因此跳过框708中执行的操作,以及过程700检查是否考虑用于当前行的所有列 (框710)。如果没有,则过程700从框710的“否”退出,将j的值加1(框712)以进行到 下一列并循环回到框706的入口。否则,过程700从框710的“是”退出,并检查是否已经 走完所有行(框716)。如果已经走完所有行,则过程700从框716的“是”退出,返回总和 值(框718)以及结束(框720)。否则,过程700从框716的“否”退出,将i的值加1以及 设置j的值为1(框714)以进行到下一行并循环回到框706的入口。虽然已经详细描述了本发明的具体实施例,但是应该理解所述实施例旨在为例示 性的而非限制性的。可以在所附权利要求的范围内对附图中示出和说明书中描述的实施 例进行各种修改和改变而不偏离本发明更广泛意义的范围。例如,在确定度量中代替使用 P-SAD函数,可以使用基于优化模式的平均平方误差(P-MSE)函数P-MSE = Σ (i,JeP)(a[i,j]_b[i,j])2。正如在P-SAD实例中一样,在计算度量中仅使用选择的像素特性。在确定度量中 需要时也可使用其他函数,例如分贝。当使用用户允许的、比像素预算稍大的数量的像素 时,代替Floor函数,也可以在确定no-group (参见图5)中使用Ceiling函数。在某些实 施例中,在改进的度量确定模块214b中可以使用与图4(c)中所示的那些不同的单元,以实 现期望的功能。此外,这样的单元可以在一个计算机上执行,或者可分布在多个计算机上。还提供一种计算机可读介质,其上存储有一样执行本发明的实施例的方法的步骤 的指令,该介质包括计算机存储器、DVD,⑶-ROM、软盘等。在需要时可以进行各种其他修改。因此,可以理解在给定系统特性的范围内,可以
13通过与在此详述的不同方式来实施本发明。 虽然已经详细描述本发明的具体实施例,但是应该理解,所述实施例旨在为例示 性的而非限制性的。可以在所附权利要求的范围内对附图中示出和说明书中描述的实施例 进行各种修改和改变而不偏离本发明更广泛意义的范围。
权利要求
1.一种确定用于景象的运动补偿视频编码中的度量的方法,所述景象包括具有像素的 块,所述度量衡量第一图像块和第二图像块之间的区别,所述方法包括(al)生成用于选择所述第一和第二图像块中的像素的子集的模式矩阵; (bl)获得在步骤(al)中生成的所述像素的子集中的每个像素的特性;以及 (cl)处理所述像素的子集的所述特性以确定所述度量。
2.如权利要求1所述的方法,其中所述第一图像块、所述第二图像块和所述模式矩阵 包括相同数量的行和列的像素。
3.如权利要求1或2所述的方法,其中所述步骤(al)进一步包括(a2)生成所述景象的全局运动特性,其指示所述景象中的对象的运动方向;以及 (b2)生成与CPU架构对应的所述模式矩阵,其用于所述运动补偿视频编码和所述全局 运动特性。
4.如权利要求3所述的方法,其中所述步骤( )进一步包括基于像素预算生成所述模 式矩阵,所述像素预算是所述像素的子集中的像素数量的估计。
5.如权利要求3或4所述的方法,其中所述步骤(b2)进一步包括(a3)确定所述景象的平均运动矢量,所述平均运动矢量具有幅度和方向; (b3)将所述平均运动矢量的幅度与无运动的给定阈值比较,包括 (c3)当所述平均运动矢量的幅度小于所述阈值时,将所述全局运动特性确定为表示没 有对象运动的静态;以及(d3)当所述平均运动矢量的幅度等于或大于所述阈值时,基于在步骤(a3)中确定的 所述平均运动矢量的方向将所述全局运动特性确定为水平运动、垂直运动或斜线运动中的 一种。
6.如权利要求3至5中任一项所述的方法,其中所述步骤( )进一步包括(a4)从在执行运动补偿之前生成的模式矩阵的库中选择所述模式矩阵,在所述库中的 每个模式矩阵与用于运动补偿视频编码、全局运动特性和像素预算的所述CPU架构对应。
7.如权利要求6所述的方法,其中所述步骤(a4)进一步包括 对于在所述的模式矩阵的库中的每个模式矩阵(a6)在所述模式矩阵的单元中存储布尔值,每个单元与在所述第一和第二图像块中占 据相同的位置的像素对应;以及(b6)在所述模式矩阵的所述单元中存储“真”或“假”布尔值中的一个,其与来自所述 第一和第二图像块的、包括在所述度量的计算中的所述像素对应,以及在所述模式矩阵的 所述单元中存储另一个布尔值,其与所述第一和第二图像块中的、排除在所述度量的计算 外的所述像素对应。
8.如权利要求1至7中任一项所述的方法,其中所述步骤(bl)包括 (a7)获得所述特性,其是亮度值;(b7)将所述第一图像块中的像素的亮度值存储在第一矩阵中的单元中;以及 (c7)将所述第二图像块中的像素的亮度值存储在第二矩阵中的单元中。
9.如权利要求1至8中任一项所述的方法,其中所述步骤(cl)进一步包括 (a8)使用所述模式矩阵选择所述第一和第二矩阵中的单元;以及(b8)对存储在所述步骤(a8)中选择的所述单元中的所述亮度值施加绝对误差和函数或平均平方误差函数中之一。
10.如权利要求1至9中任一项所述的方法,其中所述像素的子集包括组,在所述第一 和第二图像块中的所述组的位置最大化块覆盖的跨度。
11.一种确定用于景象的运动补偿视频编码中的度量的系统,所述系统具有处理器和 计算机可读介质,在所述介质上存储有计算机可读指令,所述景象包括具有像素的块,所述 度量衡量第一图像块和第二图像块之间的区别,所述系统包括(alO)模式矩阵生成单元,产生用于选择所述第一和第二图像块中的像素的子集的模 式矩阵;(blO)图像取得单元,取得每个像素的特性;以及(clO)度量计算单元,通过处理所述像素的子集的所述特性来确定所述度量。
12.如权利要求11所述的系统,其中所述第一图像块、所述第二图像块和所述模式矩 阵包括相同数量的行和列的像素。
13.如权利要求11或12所述的系统,其中所述模式矩阵生成单元(alO)进一步包括(all)全局运动特性确定单元,计算所述景象的全局运动特性,其指示所述景象中的对象的运动方向;以及(bll)矩阵确定单元,基于所述景象的全局运动特性、所述运动补偿视频编码中使用的 CPU架构和像素预算生成所述模式矩阵,所述像素预算是所述像素的子集中的像素数量的 估计。
14.如权利要求13所述的系统,其中所述矩阵确定单元(bll)进一步包括(al2)模式矩阵库,存储一系列预定的模式矩阵,所述模式矩阵库中的每个模式矩阵与 用于运动补偿视频编码、所述景象的全局运动特性和像素预算的所述CPU架构对应;以及(bl2)模式矩阵选择单元,从所述模式矩阵库选择所述模式矩阵。
15.如权利要求11至14中任一项所述的系统,其中所述度量计算单元(clO)包括绝对 误差和计算单元或平均平方误差计算单元中之一,所述绝对误差和计算单元对所述像素的 子集中的所述特性的值施加决定误差和函数,所述平均平方误差计算单元对所述像素的子 集中的所述特性的值施加平均平方误差函数。
16.如权利要求11至15中任一项所述的系统,其中所述像素的子集包括组,在所述第 一和第二图像块中的所述组的位置最大化块覆盖的跨度。
17.一种计算机可读介质,其上存储有计算机可读程序代码装置,当由计算机执行时所 述计算机可读程序代码装置执行如权利要求1至10中任一项所述的方法的步骤。
全文摘要
描述了这样的方法和系统,其确定衡量用于景象的运动补偿视频编码中的两个图像块之间的区别的度量。仅处理所述景象中的块中的选择的像素以提高所述度量计算的速度。
文档编号G06T9/00GK102113328SQ200880130583
公开日2011年6月29日 申请日期2008年10月16日 优先权日2008年8月2日
发明者S·皮金 申请人:高等技术学校
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1