数字图像运动估计的早期退出技术的制作方法

文档序号:7856033阅读:121来源:国知局
专利名称:数字图像运动估计的早期退出技术的制作方法
技术领域
本发明设计数字视频处理,尤其涉及数字视频数据的编码。
背景数字视频能力可以包括在大量设备内,包括数字电视、数字直接广播系统、无线通信设备、个人数字助手(PDA)、手提电脑、台式机、数码像机、数字记录设备、蜂窝或卫星无线电电话等。这些和其他数字图像设备可以通过建立、修改、发送、存储、记录和重播全运动视频序列而提供对常规模拟视频系统的重大改善。
已经为发送数字视频序列建立了多种不同的视频编码标准。移动图片专家组(MPEG)例如已经研发了包括MPEG-1、MPEG-2以及MPEG4的多种标准。其他标准诸如Cupertino California的苹果公司研发的ITU H.263,QuickTimeTM技术、Redmond,Washington的微软公司研发的Video for WindowsTM,英特尔公司研发的IndeoTM,Seattle的RealNetworks公司研发的RealVideoTM,SuperMac公司研发的CinepakTM。这些和其他标准包括被研发的标准会继续发展。
视频编码标准通过以压缩的方式对数据编码而获得增加的传输速率。压缩可以减少为图像帧的有效传输需要的总数据量。例如MPEG标准使用一些图像和视频压缩技术,该图像和视频压缩技术设计为比起没有压缩可以获得的情况而言,可以方便地在更窄的带宽上传输视频和图像。特别是,MPEG标准包括视频编码技术,该技术使用连续图像帧间的类似性,这被称为时域或帧间相关性,以提供帧间压缩。帧间压缩技术通过将基于象素的图像帧表示转换成运动表示而利用帧间数据冗余性。另外,视频编码技术可以使用图像帧内的类似性,这被称为空间或帧内相关性,以获得帧内压缩,其中图像帧内的运动表示可以被进一步经压缩。帧内压缩一般基于常规过程用于压缩静止图像,诸如离散余弦变换(DCT)编码。
为了支持压缩技术,许多数字视频设备包括用于压缩数字视频序列的编码器,以及用于对数字视频序列解压缩的解码器。在许多情况下,编码器和解码器包括一集成编码器/解码器(CODEC),它在定义视频图像序列的帧内的象素块上操作。在MPEG-4标准内,例如,发送设备的编码器一般将要发送的视频图像帧分成包括更小图像块的宏块(macroblock)。对于图像帧内的每个宏块,编码器搜索先前紧接的视频帧的宏块以识别最类似的宏块,并对宏块间的差异进行编码以用于传输,连同指示来自先前帧的哪个宏块用于编码的运动向量。接收设备的解码器接收运动向量以及经编码的差异,并实现运动补偿以生成视频序列。
视频编码过程计算强度很强。特别是,将视频块与先前发送的视频块比较的过程需要大量计算。非常需要改善编码技术,特别是用于无线设备或其他可携带视频设备,在这些情况下,计算资源更有限且功耗也是一个考虑因子。
概述描述一视频编码技术,可以当确定对于有效视频编码不需要附加计算时,通过中止计算而改善视频编码。例如,视频编码技术可以涉及为视频编码例程定义阀值,并在计算的差值超过阀值时中止视频编码例程的至少一部分。
如以下将详细描述的,阀值可以被定义在任务层、迭代层或两者。例如,任务阀值可以建立阀值差值。在该情况下,当与任务相关的差值大于阀值时,中止视频编码例程的至少一部分可以包括中止估计与当前视频帧相关联的当前视频块以及与不同视频帧相关的不同视频块之间的差值任务。与不同视频帧相关的不同视频块可以是先前视频帧的先前视频块,或帧序列的相继视频帧的相继视频块。
另外,迭代阀值可以在视频编码期间为给定迭代定义可接受值。在该情况下,一当识别了定义小于阀值的差值的一不同视频块后,中止视频编码例程的至少部分可以包括中止任务,即中止将与当前视频帧相关的当前视频块与和不同视频帧相关的不同视频块的比较。
这些技术可以以硬件、软件、固件或其任何组合实现。所述技术在无线数字视频设备或其他可携带视频设备内特别有利,其中计算资源较有限,且要考虑到功耗。如果以软件实现,这些技术可以引入计算机可读媒质,它包括程序代码,在执行时实现上述的一个或多个编码技术。各种实施例的附加细节在附图和以下描述中提出。其他特征、目标和优势会从以下的描述和附图以及权利要求书变得明显。
附图的简要描述

图1是说明示例系统的框图,其中源设备发送编码后的视频数据序列到接收设备。
图2是包括压缩数字视频序列的视频编码器的示例数字视频设备框图。
图3是视频数据的示例宏块的概念图。
图4是示例搜索空间的概念说明。
图5是更详细说明示例视频编码器的框图。
图6是更详细说明视频编码器的示例比较引擎的框图。
图7-12是说明视频编码技术的流图。
详细描述一般揭示了可以用于改变数字视频数据编码的编码技术。所述技术可以由数字视频设备编码器执行以减少计算数目,且可能减少视频编码期间的功耗。这样,所述技术根据诸如MPEG-4的标准可以改善视频编码,且可以方便在计算资源更有限,且要考虑功耗的无线设备内实现视频编码。另外,所述技术可以不影响公共标准或其他实现运动估计的标准的可互操作性。
尤其是,描述了一些视频编码技术,当计算不可能改善编码时,它们使用一个或多个可编程阀值以中止执行各种计算。通过实现中止计算,视频编码需要的处理量会减少,且可以保存功率。可编程阀值可以被选用以获得期望的编码质量。在一些情况下,阀值只会在当知道附加计算不会有什么帮助情况下中止计算。在其他情况下,阀值还会在编码被认为可接受时中止,即使附加计算可能别识当前视频块和搜索空间内的视频块间更优化的视频块匹配。在后者情况中,减少计算的好处超过在编码期间标识更优视频块匹配的好处,即从增加处理速度、减少功耗或两者的角度而言。
以下更详细地说明多种实施例。不同的实施例被表征为或任务中止技术或迭代中止技术。在该揭示中,“任务”一词指用于将当前视频块与搜索空间内不同视频块相比较的计算公共集合。换而言之,任务指当前视频块和搜索空间内不同视频块间的单个比较。例如,任务可以涉及实现多次计算以将当前视频块的象素数与不同视频块的象素数比较。例如,64次计算(图像块情况)或256次计算(宏块情况)可以组成一任务。在每次任务中,计算经累加以为任务定义当前差值(有时被称为差异度量)。是否中止任何给定任务的决定可以在每次计算后做出,或者在计算子集合之后,即定义任务子集的计算整数。在后者情况中,整数可以经编程以向编码例程提供附加灵活性。
如以下详细讨论,一些技术可以用于标识何时给定任务的附加计算是不必要的。例如,当第二任务计算子集一起产生大于与先前计算的第一任务相关的差值时,可知第二任务的附加计算是不必要的,因为第二任务完成不会导致比第一任务低的差值。在该情况下,第二任务可以不牺牲编码性能而被中止,且执行第三任务可以更快地开始。
其他实施例在以下可以被表征为“迭代中止技术”。在该揭示中,“迭代”一词指在视频编码期间实现的公共任务集合。与当前视频块相关的完整任务序列是迭代。换而言之,迭代是比较集合,其中当前视频块与搜索空间内的先前视频块(或相继视频块)集合比较。每单个比较是涉及多次计算的任务。因此,搜索空间定义视频空间集合,该集合在迭代期间与当前视频块比较。迭代的每次比较被称为任务,且每个任务即每次比较可以涉及多次计算。在一些情况下,迭代可以包括在搜索空间上定义第一搜索,标识搜索空间内的第一匹配,基于第一匹配在搜索空间子集合上定义第二搜索,并标识子集内的第二匹配。在该情况下,可能在标识第一匹配、第二匹配或两者过程中发生中止。
中止技术可以如上所述在任务层被执行或可以在迭代层被执行,或可以在任务层和迭代层被执行。在一示例中,迭代阀值定义可接受阀值,即有效视频编码足够的阀值。在该情况下,如果实现迭代,它以迭代阀值可接受的方式匹配当前视频块的不同视频块,迭代可以被中止,且要被编码的下一视频块可以与搜索空间比较。在该情况下,可以避免多个不必要任务的执行。
以下所述技术可以在将要编码的视频块与先前视频帧的先前视频块比较的背景中描述。然而可以理解,可以在将要编码的视频块与相继视频帧的视频块比较时使用相同技术。在一些情况下,可以使用双向运动估计,其中要被编码的视频块与一个或多个先前视频帧的各个视频块以及相继视频帧的各个视频块比较。简而言之,可以在要被编码的视频块与不同视频块比较时使用所述技术,不同视频块诸如先前视频帧的视频块或相继视频帧的视频块。
这些技术可以提供多个优势。例如,这些技术可以减少视频编码需要的计算次数并加快编码过程。另外,减少的计算次数可能减少功耗,这对于电池供能的设备尤其有优势。技术对于实现运动估计的大量数字视频编码标准的任何一种均有用。然而在此说明在MPEG-4标准背景中许多细节。
图1是说明示例系统2的框图,其中源设备4在通信链路6上发送编码后的视频数据序列到接收设备8。源设备4和接收设备8是数字视频设备。尤其是,源设备4使用多个视频压缩标准的任何一种对视频数据编码并发送,所述标准诸如移动图像专家组研发的MPEG-4。其他标准可以包括MPEG-1、MPEG-2或移动图像专家组研发的其他MPEG标准,Cupertino California的苹果公司研发的ITU H.263,QuickTimeTM技术、Redmond,Washington的微软公司研发的Video for WindowsTM,英特尔公司研发的IndeoTM,SuperMac公司研发的CinepakTM。
通信链路6可以包括无线链路、物理传输线、诸如本地局域网、广域网或如因特网的全球网、公共交换电话网(PSTN)或各种链路和网络组合的基于分组的网络。换而言之,通信链路6表示任何合适的通信媒质,或可能不同网络和链路的集合,用于将视频数据从源设备4发送到接收设备8。
源设备4可以是能编码和发送视频数据的任何数字视频设备。例如,源设备4可以包括存储器22用于存储数字视频序列,视频编码器20用于对序列编码,还包括发射机14,用于在通信链路6发送编码后序列。在一些情况下,源设备4还可以包括图像传感器(未在图1中示出),诸如用于捕获视频序列并在存储器22内存储捕获序列的摄像机。接收设备8可以是能接收并解码视频数据的任何数字视频设备。例如,接收设备8可以包括接收机15用于接收编码后数字视频序列,解码器16用于对序列解码并将序列显示给用户的显示器18。
源设备4和接收设备8的示例设备包括位于计算机网络上的服务器,工作站或其他台式机计算设备以及诸如笔记本电脑的移动计算设备。其他示例包括数字电视广播卫星和接收设备,诸如数字电视、数字摄像机、数字视频摄像机或其他数字记录设备、数字视频电话,诸如蜂窝无线电电话和带有无线电能力的卫星无线电电话、其他无线视频设备等。
在一些情况下,源设备4和接收设备8每个包括编码器/解码器(CODEC)(未示出),用于对数字视频数据编码和解码。在该情况下,源设备和接收设备可以包括发射机和接收机以及存储器和显示器。以下描述的许多编码技术在包括编码器的数字视频设备环境中描述。然而可以理解编码器可以形成CODEC的一部分。
例如源设备4在视频图像序列内对象素模块操作以对视频数据编码。例如,源设备4的编码器20可以分割视频图像帧以发送到包括多个更小图像块的宏块。对于图像帧内的每个宏块,源设备4的编码器20为已经发送的先前视频帧(或相继视频帧)搜索存储器22内存储的宏块以标识类似宏块,并对宏块之差以及运动向量编码,所述运动向量从用于编码的先前帧中标识宏块。源设备4可以支持可编程阀值,这会引起在编码过程中各种任务和迭代的中止,以减少计算数量并保存功率,如在此描述。
接收设备8的接收机15接收运动向量和编码后的视频数据,且解码器16实现运动补偿技术以生成视频序列用于通过显示18对用户显示。接收设备8的解码器16还可以被实现为编码器/解码器(CODEC)。在该情况下,源设备和接收设备能对数字视频序列编码、发送、接收并解码。
图2是说明示例数字视频设备10的框图,所述设备诸如包括视频编码器20的源设备4,所述编码器根据在此描述的技术压缩数字视频序列。示例数字视频设备10被说明为无线设备,诸如移动计算设备、个人数字助理(PDA)、无线通信设备、无线电电话等。然而,在此揭示的技术不限于无线设备,且可以被应用到其他包括非无线设备的数字视频设备上。
在图2的示例中,数字视频设备10通过发射机14和天线12发送压缩后的数字视频序列。视频编码器20对视频序列编码并在传输前在视频存储器22内缓冲编码后的数字视频序列。存储器22还可以存储计算机可读指令和数据,为视频编码器20在编码过程中使用。存储器22可以包括同步动态随机访问存储器(SDRAM)、闪存、电可擦除可编程只读存储器(EEPROM)等。在一些情况下,数字视频设备10包括图像传感器23,用于捕获视频序列。例如,图像传感器23可以捕获视频序列并将其存储在存储器22用于编码。图像传感器23还可以直接耦合到视频编码器20以改善“实时”视频编码。
如以下详细描述,编码器20实现数字信号处理器(DSP)24,它可以接收定义或限制视频编码器20实现的编码算法的可编程阀值。DSP 24和运动估计器26可以执行编码算法,并可以基于可编程阀值执行各种任务或迭代。结果是,可以简化视频编码,去除不必要的计算,且可能在编码被认为不可接受时减少计算。
图3说明可以被存储在存储器22内的示例宏块31。MPEG标准以及其他视频编码方案在视频编码期间使用宏块。相应地,在此描述的改善视频编码的编码技术可以同样对宏块操作。在MPEG标准内,术语宏块指形成视频图像帧子集的象素值的16×16集合。每个象素值可以由一数据字节表示,虽然还可以使用更大或更少数量的比特定义每个象素以获得期望的图像质量。宏块可以包括多个更小的8×8象素图像块32。一般,在此描述的编码技术可以使用任何定义大小的模块操作,诸如16字节乘16字节宏块、8字节乘8字节图像块或不同大小的视频块,如果期望的话。
在编码期间,与要编码的当前图像帧相关的当前视频块与先前图像帧的各种视频块比较。在标识到先前帧内的类似视频块时,当前视频块和先前帧中的类似视频块之差可以连同运动向量一起被发送,该运动向量标识先前帧内的类似视频块。这样,可以大大减少视频数据流传输需要的带宽。在此描述的编码技术可以通过引起各种任务或迭代的提早中止而改变编码过程,以减少编码期间的计算次数和功耗。
在接收到编码后视频块后,接收设备8(图1)实现运动补偿技术以生成视频序列通过显示18显示给用户。例如,接收设备8在存储器内存储先前接收到图像帧的先前接收到模块(未示出)。接收设备8的解码器16可以通过访问由发送的运动向量标识的先前接收到视频块而对视频块解码,并根据运动向量发送的差异修改标识的视频块。这样,视频序列可以在比不需要编码时可获得的带宽更小的带宽上被发送。
图4说明可以被存储在存储器内的示例搜索空间41。搜索空间41是对应先前发送图像帧的视频块缓冲集合(或帧序列的相继图像帧)。搜索空间可以包括完整的先前图像帧或先前图像帧的一个子集,如果期望。一般,较大的搜索空间会导致在视频编码期间更多的计算,因为更大的搜索空间定义更多可以与要编码的当前模块比较的模块,即每迭代更多任务。同样,当前图像帧与搜索空间41内模块相比,以标识充分匹配,使得先前帧内先前当前块和先前类似图像块之差可以连同运动向量一起被发送,运动向量标识先前帧的类似图像块。
图5是更详细地说明视频编码器20的示例组件框图。如示出,示例视频编码器20包括耦合到运动估计器26的数字信号处理器(DSP)。例如,运动估计器26可以包括设计成加速视频编码过程的硬件组件。分开的运动估计器26可能不是对于所有实施例必须的,如硬件功能可以经编程入数字信号处理器24。然而,包括比较引擎56的专用运动估计器26可以大大加快在视频编码期间实现的计算执行。DSP 24和运动估计器26可以耦合到存储器22,它存储各种要编码的模块以及模块在编码过程期间比较的搜索空间。存储器22还可以在通过发射机14发送之前缓冲编码后视频数据(图2)。
DSP 24可以执行各种视频编码算法,诸如根据MPEG-4标准操作的视频压缩算法。DSP 24可以访问运动估计器26以加速视频编码过程。运动估计器26可以包括接口控制单元52,它从DSP 24接收硬件可执行指令,并在执行指令后将比较结果报告给DSP 24。运动估计器26还包括存储器控制单元54以访问且可能划分存储器22内存储的视频数据,以进行当前图像块和搜索空间间的比较。
DSP 24存储定义各种情况的一个或多个阀值,其中视频编码过程期间可能发生任务中止或迭代中止。阀值可以是可编程阀值,它定义在完全执行任务前可以中止特定任务的计算。而且,阀值还可以是可编程阀值,它可以在合适迭代已经标识时定义对于有效视频编码可接受的先前视频块。在该情况下,可以中止迭代的附加任务,且当前视频块可以使用被认为可接受的先前视频块经编码。
接口控制单元52可以接收DSP 24发送的接收指令,它使得在运动估计器26硬件内执行视频编码算法的各个方面。尤其是,运动估计器26可以实现比较引擎56,它将要编码的当前视频块与和已经发送的先前视频帧相关的先前视频块比较。先前视频块可以是存储器控制单元54内定义的搜索空间内的视频块。同样,当相继图像帧形成搜索空间时可以使用所述技术。在任何情况下,在从DSP 24接收到指令时,接口控制单元52和存储器控制单元54可以对要在比较引擎56内比较的数据排队。比较引擎56可以使用比较技术将要编码的当前视频块与先前视频块比较,所述比较技术诸如绝对差值求和(SAD)技术、平方差求和(SSD)技术,这在视频编码领域内众知的。还可以使用其他比较技术。
SAD技术涉及在要编码的当前块象素值间用当前块与之比较的先前块的象素值实现绝对差计算任务。这些绝对差计算结果经求和,即经累加以定义指示当前视频块和当前视频块要与之比较的先前视频块之差的差值。对于8乘8的象素图像块,可以计算并求和64种差值,且对于16乘16象素宏块,可以计算和对256种差值求和。如下所述,可以定义和/或更新任务阀值。然后,任务计算可以在累加的差值超过任务阀值时被中止。在该情况下,附加计算是不必要的。因此,当该任务的差值超过任务阀值时中止任务,从而避免不必要的计算。
例如比较引擎56可以包括一个或多个阀值寄存器以存储并更新阀值。存储在阀值寄存器内的值可以与比较引擎56内实现的当前和比较以确定是否可以提前中止任务计算或整个迭代。这样,可以避免计算,可以增加视频编码速度,且可以保存功率。
SSD技术还涉及用当前模块与之比较的先前模块象素值在要编码的当前块象素值之间实现差值计算任务。在SSD技术中,平方绝对差计算结果,然后求和平方值即累加,以定义指示当前视频块和当前视频块与之比较的先前视频块之差的差值。任务阀值还可以在使用SSD技术时被定义和/或被更新。然后,可以在累加的差值超过任务阀值时中止任务计算。
任务阀值还可以经初始化并在实现任务时在比较引擎56的阀值寄存器内经更新。例如,DSP 24可以用编程后值载入阀值寄存器,该值在迭代过程中经更新。如果实现计算小于阀值的差值的任务,则阀值可以用该差值经更新。如果在计算期间,计算的差值超过阀值,则任务可以被中止,且可以开始下一任务。在一些情况下,任务阀值可以用原始差值经初始化,如果第一任务计算超过阀值,这甚至会使得第一任务中止。在其他情况下,任务阀值可以由为第一任务计算的差值初始化。后者情况可能是一些情况需要的,因为只有在较早任务被认为生成较低差值时才发生相继任务的中止。
除了建立任务阀值外,DSP 24还可以用迭代阀值进行编程。同样,在该揭示中,迭代指任务集合,即在任何要编码的给定当前视频块上实现比较。换而言之,包括多个计算的任务用于将当前视频块与先前视频块比较,且迭代的相继任务用于将相同的当前视频块与搜索空间内的不同先前视频块比较。在实现了迭代的所有任务之后,可以标识是当前视频块的最佳匹配的先前视频块。换而言之,产生最佳匹配的先前视频块是一视频块,对于该视频模块比较要编码的当前视频块的任务产生了最低差值。
通过将迭代阀值编程入DSP 24,在标识到一先前视频块后,该模块产生被认为足以用最小质量恶化对模块编码的匹配,迭代可以提早被中止。编码质量水平可以通过选择合适阀值而被选择。例如,如果将当前视频块与先前视频块比较的任务生成小于迭代阀值的差值时,该先前视频块可以被称为对于视频编码可接受。相应地,当前视频块可以通过缓冲当前视频块和先前视频块之差,该差异被声明对于视频编码可接受。当前视频块然后可以通过发送差值以及标识先前视频块的运动向量而被发送。
通过中止迭代,处理速度可以被改善,且需要的计算数目可以被大大减少。尤其是,可以避免所有与该迭代相继任务相关的计算。该种编码技术有时可以生成次优编码,因为迭代的相继任务(如果实现的话)可以实际上标识比视频块生成可接受的更优的匹配。仍然,减少的计算量优势补偿了编码可能是次优的劣势。如果编码可接受,节省计算和节省相关功耗优势补偿了更优编码可以提供的好处,诸如视频分辨率。在一些实施例中,迭代阀值值可以被选用平衡与改善的分辨率和图像质量相关的优势,其优势在于减少的计算和减少的功耗。
图6是可以实现以加速视频编码需要的比较的比较引擎的详细框图。比较引擎56包括两个内置高速存储器60、62,用于缓冲要被编码的当前块以及当前块与之比较的先前视频块。特别是,比较引擎56包括当前模块存储器60以存储要编码的当前块。另外,比较引擎56包括搜索空间存储器62以存储所有数据,从这些数据标识最近的已经发送的视频块。在支持MPEG标准的实施例中,例如模块存储器60可以存储要发送的宏块,而搜索空间存储器62可以存储多个先前发送的宏块,诸如先前发送的视频帧。作为示例,典型的块可以包括8乘8象素的块,宏块可以包括16乘16象素的模块,且搜索空间可以包括48乘48象素的块,虽然该揭示不限于这些方面。
差值单元64包括地址发生逻辑,用于从存储器60、62获取视频数据。在编码过程中,存储器控制单元54(图5)从存储器接收当前要编码的块,并在比较引擎56的存储器60内存储当前块。另外,存储器控制单元54接收先前视频帧内的搜索空间,并对应搜索空间存储器62内的搜索空间存储视频数据。例如,DSP 24可以使得存储器控制单元54将规定的视频数据转发到相应的比较引擎56的内部存储器60、62。
差值单元64实现视频数据间的象素比较以计算一个或多个差值(有时被称为差值度量)。通过内部地缓冲要编码的当前块以及存储器60和62内相应的整个搜索空间,比较引擎不需要在各搜索之间访问存储器22。因此,视频编码器20可以相对于常规的结构获得增加的编码速度。
为了计算差值,即差值度量,差值单元64可以实现多种算法的任何一种以生成指明存储器60内存储的当前块和搜索空间存储器62内的各种块间差值的输出。如上所述,差值单元64可以计算要被编码的块和先前视频帧内块间的绝对差值之和(SAD)或平方差异之和(SSD)。或者,差值计算器64可以实现均方误差(MSE)、归一化互相关函数(NCCF)或其他合适的比较算法。一旦差值单元64已经计算了差值,且为搜索空间内的块标识了对应的运动向量,它产生最低的差值,则该未决结果可以被发送到DSP 24。
为了减少计算数量、增加编码速度并减少功耗,DSP 24执行的编码算法和运动估计器26可以支持一个或多个阀值,它们引起编码例程期间任务中止、迭代中止或任务和迭代中止。如上所述,阀值可以被表征为任务阀值或迭代阀值。如期望的,阀值可以在比较引擎56的一个或多个阀值寄存器内被载入或被更新。阀值比较单元66可以实现以将存储在阀值寄存器65内的阀值与差值单元64求和的当前差值比较。这样,与诸如任务阀值或迭代阀值的阀值比较可以非常快地进行,因为差异单元64根据SAD或SSD技术计算和。以下依次讨论涉及任务阀值和迭代阀值的不同实施例。
图7是说明视频编码技术的流程图,其中视频帧模块使用先前发送帧的块间之差和运动向量经编码。如示出,DSP 24定义一个或多个编码阀值(71)。例如DSP 24可以用一个或多个任务阀值或迭代阀值经编程。响应于超过任务阀值而中止任务以及响应于超过迭代阀值中止迭代的附加细节在以下列出。编码阀值定义何时发生中止以改善编码过程。
视频编码器20执行任务以将要编码的当前块(M)与先前块(N)72,诸如通过调用运动估计器26内比较引擎56进行比较。每个相应比较被称为一任务,且一般涉及多个差值计算,其中根据诸如通过实现差值单元64的已知SSD或SAD技术,将块(M)的象素值从先前块(N)的象素值中减去。任务以递增方式实现。即在实现每个单个任务之后,视频编码器20确定是否有更多的任务要实现(73)且如果是则实现附加任务(72)。为给定迭代实现多个任务的递增过程在以下流图中通过环路说明,其中值N随着实现每个任务以考虑先前块的下一个而递增(74)。任务数即比较数由搜索空间大小定义。因此,如果搜索空间包括X个要与当前块(M)比较的X个先前块,为该迭代实现X个任务,即给定块的迭代会在N=X时中止。如以下更详细列出的,任何单个任务的计算可以在超过任务阀值时中止。
一旦实现了给定迭代的所有任务,即已经实现了模块(M)和搜索空间内先前块间的每个比较(73的否分支),可以对块(M)编码(75)。当前块(M)可以通过标识对此任务生成更低的差值的先前块(N)而经编码。块(M)使用生成最低差值的块(M)和块(N)之差以及以及运动向量经编码,该运动向量标识了用于编码的模块(N)。
视频编码器20然后确定是否需要实现更多的迭代(76),即是否在当前被编码的帧内有附加的块。如果这样,附加块以类似于以上描述的技术与搜索空间比较。执行相继迭代在流图内说明为递增值(M)以标识另一要被编码的块(77)、如果希望则更新搜索空间,并重设值(N)(79)。对于每个迭代,如上所述实现多个任务,且对于给定迭代当前块(M)使用产生最低差值的给定当前块(M)和搜索空间内块之差以及运动向量而经编码,运动向量标识用于编码给定块(M)的块(N)。如以下将更详细讨论的,迭代的计算可以在超过迭代阀值时被中止。在该情况下,可以避免执行多次任务。
一旦为给定视频帧实现了所有迭代,即一旦所有视频帧块经编码(76的否分支),视频编码器20可以将视频数据转发给发射机14,且发射机14可以发送视频帧的编码后块(80)。
图8是说明任务执行的详细流图,其中块(N)与搜索空间内先前块比较。换而言之,图8内说明的技术可以对应图7内项72。如示出,差值单元64实现任务计算(81),诸如绝对差计算或平方差计算,然后对计算求和以生成由任务定义的当前差值(82)。换而言之,求和可以包括在块(N)和与块(N)比较的搜索空间内视频块间差值的当前估计(有时被称为差值度量)。如果求和大于任务阀值(83的是分支),任务中止。
例如,阀值比较单元66可以周期性地将阀值寄存器65内存储的任务阀值与存储在差值单元64内的差值当前和比较。根据MPEG-4标准,如果宏块由差值单元比较,则阀值比较单元66可以根据一起定义较大宏块的较小图像块的差值和周期性地实现任务比较。如果该和,即由差值单元64计算的当前差值大于存储在阀值寄存器65内的任务阀值(83的是分支),则任务中止。因此,迭代的下一次任务可以开始地更快,因为避免了中止任务的计算。这样,中止可以减少计算量,从而节省时间和编码过程中的功率。
只要该求和不大于任务阀值(83的否分支),附加计算经迭代实现直到对于任务不再有计算(84的是分支)。存储在阀值寄存器65内的任务阀值可以用该求和更新(85)。如上所述,64次计算(在图像块情况下)或256次计算(在宏块情况下)可以包括完整任务。通过标识何时该求和即差值变得大于任务阀值,可以避免一些这样的计算,因为可以提早中止任务(83的是分支)。而且,通过避免计算,可以增加编码过程的速率,且可以保存功率。通过载入并更新比较引擎56的本地阀值寄存器65内的任务阀值,可以很快地进行当前比较。
任务阀值可以在迭代期间经更新。在图8示例中,即第一计算集合会初始化阀值。此后对于该迭代,相继任务会与任务阀值比较,且如果与相继任务相关的差值大于任务阀值,则任务可以被中止,因为已知任务将不会标识用于对当前视频块编码的更优视频块。图8内说明的例程可以导致特别好的编码,因为阀值只在当已知附加计算没有好处情况下才会引起任务中止。
在一些情况下,任务阀值的求和比较不会发生在每次计算之后。例如,为了简化结构,可能期望在将求和与任务阀值比较前对多个计算结果求和。另外,在将该求和与任务阀值比较前实现的计算数是可编程的。例如,如果256个计算包括完整任务,则当前任务的差值比较可能发生在8个计算的子集之后。在该情况下,定义在比较求和之前实现的计算数的可编程值会被设定为8。
图9说明图8内说明的任务例程的微小变化。在该情况中,建立初始任务阀值(91),诸如通过将初始任务阀值编程入DSP 24。在该情况下,即使如果第一任务的差值之和超过初始化的任务阀值,也可以中止第一任务。实现诸如绝对差值计算或平方差值计算的任务计算(92),且对计算求和(93)。同样,求和可以包括块(N)和正在与块(N)比较的搜索空间内视频块之间差值的当前估计。如果该求和变得大于任务阀值(94的是分支),则任务被中止。然而,只要该求和不大于任务阀值(94的否分支),迭代地实现附加计算直到任务没有计算(95)。任务阀值然后可以用该求和更新(96)。该特定迭代的所有相继任务与更新的阀值比较。因此,在为给定迭代实现了所有任务之后(图7),可以标识产生最佳匹配例如最低差值的视频块。很重要的是,由于无论何时当任务的差值大于先前任务的差值时,发生各种任务的中止(如由周期性更新的阀值定义的),发生最佳匹配标识的计算次数可以减少。
图8和9说明通过标识所述情况而中止单个任务,该情况即该任务的附加计算不会导致标识更佳的视频块匹配(在图8的情况下)或该任务的附加计算很不可能标识更好的视频块匹配(图9情况)。图10说明另一中止技术,可以独立或与图8和9内说明的任务中止技术一起使用。
图10的技术被称为迭代中止技术,因为它被用于标识何时可以中止迭代。例如,可以建立迭代阀值,它确定何时被标识的先前视频块是有效编码的可接受匹配。在该情况下,迭代可以提早被中止,且对于当前要被编码的视频块可接受的匹配的被标识视频块可以用于编码。图10内说明的技术会导致次优编码,因为迭代的相继任务(如果被执行)可能实际上标识比视频块声称足够好的要更好的匹配。仍然,减少的计算次数和功耗的节省优势超过编码可能是次优的劣势。
参考图7,编码过程可能开始于定义编码阀值(71)。例如,迭代阀值可以通过将迭代阀值编程入DSP 24而定义。编码过程然后开始于要被编码的第一模块(N),并在图7内示出的多个迭代上每迭代实现多次任务。图10更详细地说明一个迭代的执行。视频编码器20将当前模块与先前模块(N)相比(101),诸如通过如上述调用运动估计器26的比较引擎56。在一些情况下,将当前模块与先前模块(N)比较的任务可以根据图8或9的原理被执行,其中任务阀值可能引起任务的计算提早中止。
在实现每个单个任务后,视频编码器20确定与任务相关的差值是否小于迭代阀值(102)。同样,比较引擎56可以包括载入有迭代阀值的一个或多个本地阀值寄存器65,使得计算的差值和迭代阀值间的比较可以在硬件内非常快地进行。在该情况下,在每个任务后,阀值比较单元66可以将存储在阀值寄存器65内的迭代阀值与差值单元64生成的差值比较。该差值可以由不同先前视频块定义,例如存储在搜索空间存储器62内的宏块。在任何情况下,视频编码器20将给定任务计算的差值与迭代阀值比较。如果任务的差值小于迭代阀值,即如果当前块和块(N)间的差值小于迭代阀值,块(N)被称为可接受,且用于根据运动估计技术对当前模块码(105)。换而言之,当在搜索空间内标识可接受匹配时,迭代提早被中止,避免该迭代的相继任务。只要任务不生成小于迭代阀值的差值,视频编码器20迭代地实现迭代任务,诸如通过将当前块与先前块(N)(101)比较然后当搜索空间定义更多任务时(103的是分支)递增(N)值(104)。
在实现了迭代的所有任务之后(103的否分支),可以标识最佳匹配用于对当前模块码(105)。然而,在一些情况下,如果在实现了迭代的所有任务后(103的否分支),运动编码技术可以被有意地避免,因为没有标识小于阀值的带有差值的视频块。在该情况下,对当前视频块的过程(105)可能只涉及帧内编码技术,诸如领域内已知的帧内或空间相关技术。在任何情况下,编码后模块可以被存储在存储器22内,因为相继迭代可以为正在经编码的视频帧实现。
最佳匹配指当实现差值计算且由差值单元64求和时,产生最低差值的搜索空间存储器62内存储的先前视频块(或相继视频块)。当使用运动估计技术时,该产生当前视频块最佳匹配的先前(或相继)视频块可以用于对当前数据模块编码(105)。在该情况下,当前视频块可以通过存储差值以及标识用于编码的先前视频块的运动向量而经编码。
如果发生迭代的提早中止(102的是分支),则可能没有标识最佳匹配。仍然,一充分匹配被标识,因为超过了迭代阀值。因此,当响应于生成小于迭代阀值的差值的任务而发生迭代的提早中止时,与引起提早中止的任务相关的先前视频块可能对于有效视频编码是可接受的,即“足够接近”。组成“足够接近匹配”可能取决于迭代阀值,且可以在不同情况和不同数字视频设备下改变。例如,在一些情况下,可能更期望以视频分辨率为代价限制编码计算,且在其他情况下,可能更期望找到最佳匹配,即使如果需要更大量的计算。在其他情况下,迭代阀值可能基于带宽或其他视频传输参数测量而经动态选择。
图11是说明作为示例视频传输参数函数的迭代阀值的动态选择流程图。在该情况下,传输参数是可用带宽。如示出,数字视频设备10标识用于视频传输的可用带宽(111),并基于可用带宽选择迭代阀值(112)。数字视频设备10然后使用选定的迭代阀值实现编码例程(113)。这样,当可用带宽有允许执行所有计算的充分时间时可以获得更高的质量编码,而当带宽是一限止因素时可以使用较低质量的编码。
图12是说明可以用于改善视频编码的附加技术的流程图。在该情况下,迭代包括在搜索空间上的多个搜索。搜索空间由先前视频帧、先前视频帧子集、相继视频帧或相继视频帧的子集定义。如所示,数字视频设备10在搜索空间上定义第一搜索(121),并执行第一任务集合以定位第一匹配(122)。数字视频设备10然后基于第一匹配定义第二搜索(123)并执行第二任务集合以定位第二匹配(124)。第二搜索可以在搜索空间子集上执行,其中子集由位于第一匹配临近的搜索空间的图像块定义。第二匹配可以优于第一匹配。图12的技术可以用于更快地为视频编码定位有效可接受匹配。
例如,第一任务集合可以对应在搜索空间上实现的粗搜索。特别是,粗搜索可以只将要被编码的视频块与搜索空间的每第N个视频块相比。第二任务集合可以对应在搜索空间子集合上实现的细搜索,其中子集在第一匹配周围被定义。因此,第一搜索可以用于大致定位搜索空间区域,它可能包括用于视频编码的类似视频块,且第二搜索可以用于确定有效视频编码可接受的搜索空间内的视频块。作为示例,在第一搜索期间实现的任务可以包括将搜索空间的每第10个视频块与要编码的视频块相比。在第二搜索期间,实现的任务可以包括将来自子集的所有或一些视频块与要编码的视频块相比较。作为示例,第二搜索期间实现的任务可以包括将搜索空间的子集内每第5个视频块与被编码的视频块相比。另外,该技术还可以包括基于第二匹配定义第三搜索,并实现第三任务集合以定位图像块搜索空间,它是要被编码的图像块的第三匹配,其中第三匹配优于第二匹配。还可以实现第四、第五和第六搜索等。
在此描述的各种中止技术可以连同图12内说明的搜索技术一起使用。例如,在执行图12内说明的技术时,可以在与任务相关的差值超过任务阀值时中止任务。而且,图12内说明的技术可以进一步包括在标识第一搜索内的匹配图像块后中止第一任务集合的执行,该模块产生小于迭代阀值的差值。另外,技术可以包括在标识第二搜索内的匹配图像块后中止第二任务集合的性能,该模块产生小于另一迭代阀值的差值。这样,在此描述的一个或多个中止技术可以连同图12内说明的搜索技术一起使用。
已经描述了多个不同的实施例。描述的技术可以减少视频编码需要的计算数量,且可以加快编码过程。另外,减少的计算量会导致减少的功耗,这对于消耗电池的设备特别有利。这些技术可能对于多种数字视频编码标准的任何一种均有效,所述标准包括MPEG-4标准。如描述的,中止计算可能发生在任务层、迭代层或两者。而且,在一些情况下,中止阀值可以被动态地定义为诸如带宽的一个或多个传输参数的函数。虽然已经在将当前视频块与先前视频帧的先前视频块比较的背景下描述许多细节,可以理解可以在当前视频块与相继视频帧的相继视频块比较时使用。换而言之,可以在视频编码中使用所述技术,其中要编码的视频块与先前或相继图像帧的视频块或双向运动估计例程相比较,其中要被编码的视频块与先前和相继图像帧的视频块相比较。
这些技术可以以硬件、软件、固件或任何其组合实现。如果以软件实现,这些技术可以导入计算机可读媒质内,这包括程序代码,当在对符合MPEG-4标准的视频流编码的设备内执行时,实现上述的一个或多个方法。在该情况下,计算机可读媒质可以包括随机访问存储器(RAM),诸如同步动态随机访问存储器(SDRAM)、只读存储器(ROM)、非易失性随机访问存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、FLASH存储器等。
程序代码可以以计算机可读指令的形式存储在存储器内。在该情况下,诸如DSP 24的处理器可以执行存储在存储器内的指令以执行一个或多个上述的技术。如上所述,DSP 24可以调用运动估计器26的各种硬件组件以加速编码过程。这些和其他实施例在以下权利要求书的范围内。
权利要求
1.一种减少视频编码例程内计算的方法,其特征在于包括为视频编码例程存储阀值;以及当计算的差值超过阀值时,中止视频编码例程的至少一部分。
2.如权利要求1所述的方法,其特征在于所述阀值是建立阀值差值的任务阀值,且其中当计算的差值超过阀值时所述中止视频编码例程的至少一部分包括在与任务相关的差值变为大于阀值时中止估计与当前视频帧相关联的当前视频块以及与不同视频帧相关的不同视频块之差的任务。
3.如权利要求1所述的方法,其特征在于所述阀值是定义可接受值的迭代阀值,且其中在计算的差值大于阀值时中止视频编码例程的至少一部分,这包括在标识了定义了一差值小于阀值的不同视频块时,中止将与当前视频帧相关联的当前视频块与和不同视频帧相关的不同视频块的比较。
4.一方法,其特征在于包括对第一多个差值计算进行求和以建立第一差值,其中第一差值是与当前视频帧相关联的视频块和与不同视频帧相关联的第一不同视频块之间的差值的测量;将第一差值建立为阀值;对第二多个差值计算进行求和以建立第二差值,其中第二差值是与当前视频帧相关联的当前视频块和与不同视频帧相关联的第二不同视频块之间值差的测量;以及在第二差值超过阀值时中止对第二多个差值计算的求和。
5.一方法,其特征在于包括为任务存储差值阀值;对第一多个差值计算进行求和以建立第一差值,其中第一差值是与当前视频帧相关联的视频块和与不同视频帧相关联的第一不同视频块之间的差值的测量;在第一差值超过阀值时中止第一多个差值计算的求和;以及如果第一差值从不超过定义的差值阀值,则用第一差值更新所述差值阀值。
6.如权利要求5所述的方法,其特征在于还包括对第二多个差值计算进行求和以建立第二差值,其中第二差值是与当前视频帧相关联的当前视频块和与不同视频帧相关的第二不同视频块之间差值的测量;当第二差值超过阀值时,中止第二多个差异计算的求和;以及如果第二差值从不超过阀值,则用第二差值更新阀值。
7.一减少视频编码例程内计算的方法,其特征在于包括存储迭代阀值,所述阀值为视频编码建立一可接受值;以及在标识了与不同视频帧相关联的不同视频块后中止与当前视频帧相关联的当前视频块的编码,所述不同视频帧定义了小于阀值的一差值。
8.如权利要求7所述的方法,其特征在于所述差值是指示当前视频块和不同视频块之差的值。
9.如权利要求7所述的方法,其特征在于包括通过发送当前视频块和不同视频块之差并发送标识不同视频块的运动向量而发送当前视频块。
10.一设备,其特征在于包括发射机,发送编码后视频块;以及编码器,通过定义一迭代阀值而对视频块编码,所述迭代阀值为视频编码建立可接受值,并且一当标识了与不同视频帧相关联的不同视频块后中止对与当前视频帧相关联的视频块的编码,所述不同视频帧定义了小于阀值的差值。
11.一对符合MPEG-4的视频流编码的设备,其特征在于包括发射机,发送编码后视频块;以及编码器,通过为视频编码例程定义一阀值对视频块编码,并在计算的差值超过该阀值时中止视频编码例程至少一部分。
12.如权利要求11所述的设备,其特征在于所述阀值是一建立阀值差值的任务阀值,且其中当计算的差值超过该阀值时,编码器中止视频编码例程的至少一部分,其实现是通过在与任务相关联的差值大于该阀值时中止估计与当前视频帧相关联的当前视频块以及与不同视频帧相关的不同视频块之差的任务。
13.如权利要求11所述的方法,其特征在于所述阀值是定义足够低值的迭代阀值,且其中在计算的差值大于阀值时,编码器中止视频编码例程的至少一部分,其实现是通过一当标识了定义了一差值小于阀值的不同视频块时,中止将与当前视频帧相关联的当前视频块与和不同视频帧相关的不同视频块的比较。
14.如权利要求11所述的设备,其特征在于所述编码器还为视频编码例程定义多个阀值,并在一当超过不同阀值后中止视频编码例程的不同部分。
15.如权利要求11所述的设备,其特征在于所述设备是从以下组中选出数字电视、无线通信设备、个人数字助理、手提电脑、台式机、数字摄像机、数字记录设备、带有视频能力的蜂窝无线电电话以及带有视频能力的卫星无线电电话。
16.一方法,其特征在于包括标识与无线设备相关联的带宽;基于带宽为视频编码选择阀值;执行视频编码例程;以及当计算的差值超过阀值时中止视频编码例程的至少部分。
17.一方法,其特征在于包括在视频编码例程内的搜索空间上定义第一搜索;执行第一任务集合以定位搜索空间内的对要编码的图像块具有第一匹配的图像块;基于第一匹配在搜索空间子集合上定义第二搜索;以及执行第二任务集合以定位子集合内对要编码的图像块具有第二匹配的图像块,其中所述第二匹配优于第一匹配。
18.如权利要求17所述的方法,其特征在于还包括当与一个任务相关联的差值超过任务阀值时中止至少一个任务。
19.如权利要求17所述的方法,其特征在于包括一当标识了第一搜索内的产生小于阀值的差值的一匹配图像块时,中止第一任务集合的执行。
20.如权利要求19所述的方法,其特征在于还包括一当标识了第二搜索内产生小于另一阀值的差值的一匹配图像块后中止第二任务集合的执行。
21.如权利要求17所述的方法,其特征在于还包括基于第二匹配定义在搜索空间的子集合的一子集合上的第三搜索;以及执行第三任务集合以定义子集合的子集合内的图像块,所述图像块是对要被编码的图像块的第三匹配,其中第三匹配优于第二匹配。
22.一设备,其特征在于包括发射机,发送编码后视频块;以及编码器,通过定义在视频编码例程内的搜索空间上的第一搜索对视频块编码,执行第一任务集合以定位为要被编码的图像块的第一匹配的搜索空间内的图像块,基于第一匹配在搜索空间的子集合上定义第二搜索,并执行第二任务集合以定位子集合内对要被编码的图像块具有第二匹配的图像块,其中所述第二匹配优于第一匹配。
23.一装置对符合MPEG-4标准的视频块编码,其实现通过在视频编码例程内搜索空间上定义第一搜索,执行第一任务集合以定位搜索空间内对要编码的图像块具有第一匹配的图像块,基于第一匹配在搜索空间的子集合上定义第二搜索,并执行第二任务集合以定位子集合内对要编码的图像块具有第二匹配的图像块,其中所述第二匹配优于第一匹配。
24.对符合MPEG-4的视频流编码的装置,其实现通过对第一多个差值计算进行求和以建立第一差值,其中第一差值是与当前视频帧相关联的当前视频块和与不同视频帧相关联的第一不同视频块之间的差值的测量;将第一差值建立为阀值;对第二多个差值计算进行求和以建立第二差值,其中第二差值是与当前视频帧相关联的当前视频块以及与不同视频帧相关联的第二不同视频块之间的差值的测量;以及在第二差值超过阀值时中止对第二多个差值计算的求和。
25.对符合MPEG-4的视频流编码的装置,其特征在于其实现通过为一任务接收可编程的差值阀值;对第一多个差值计算进行求和以建立第一差值,其中第一差值是与当前视频帧相关联的当前视频块和与不同视频帧相关联的第一不同视频块之间的差值的测量;当第一差值超过阀值时,中止对第一多个差值计算的求和;以及如果第一差值从不超过定义的差值阀值,则用第一差值更新差值阀值。
26.对符合MPEG-4的视频流编码的装置,其特征在于其实现通过接收为视频编码建立一可接受值的迭代阀值的可编程值;以及一当标识了与不同视频帧相关联的不同视频块后中止对与当前视频帧相关联的当前视频块的编码,所述不同视频帧定义小于阀值的一差值。
27.一符合MPEG-4标准的视频流编码的装置,其特征在于其实现通过标识与无线设备相关联的带宽;基于带宽为视频编码例程选择一阀值;执行视频编码例程;以及当计算的差值大于阀值时,中止视频编码例程的至少一部分。
全文摘要
该揭示涉及用于改善数字视频数据编码的编码技术。所述技术可以由数字视频设备编码器实现以减少计算数目,并可能减少视频编码期间的功耗。尤其是,描述了视频编码技术,它利用一个或多个可编程阀值以在计算不可能改善编码时中止执行各种计算。通过提前中止计算,视频编码需要的处理量可以被减少,且可以保存功率。
文档编号H04N7/26GK1659887SQ03813004
公开日2005年8月24日 申请日期2003年5月2日 优先权日2002年5月3日
发明者A·P·马洛二世, C·常, K·-C·赖 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1