CN101454990B - 视频压缩方法 - Google Patents

视频压缩方法 Download PDF

Info

Publication number
CN101454990B
CN101454990B CN2004800200197A CN200480020019A CN101454990B CN 101454990 B CN101454990 B CN 101454990B CN 2004800200197 A CN2004800200197 A CN 2004800200197A CN 200480020019 A CN200480020019 A CN 200480020019A CN 101454990 B CN101454990 B CN 101454990B
Authority
CN
China
Prior art keywords
current block
frame
vector
coding
pixel
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.)
Expired - Lifetime
Application number
CN2004800200197A
Other languages
English (en)
Other versions
CN101454990A (zh
Inventor
E·阿米尔斯
J·班克基
S·拉瓦恩韦
Y·许
D·米勒
A·格兰奇
P·威尔金
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN101454990A publication Critical patent/CN101454990A/zh
Application granted granted Critical
Publication of CN101454990B publication Critical patent/CN101454990B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/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/117Filters, e.g. for pre-processing or post-processing
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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/172Methods 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 picture, frame or field
    • 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/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/177Methods 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 a group of pictures [GOP]
    • 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/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明涉及一种压缩视频数据的方法,该视频数据至少包含一个含有至少一个块的帧,并且每个块包含一个提供的象素阵列。该方法将每个块的象素转化为系数并且创建一个最佳的系数的传输顺序。该方法也通过分段数据比特流同时独立编码每个分段来优化压缩处理的速度。该方法也通过基于至少一个与给定的块相关的度量值为每个给定的块或象素选择一个插值方法来预测子象素并且从块到块改变此方法。该方法也通过使用在当前帧的前一个帧之前的帧作为唯一的参考帧来增强对当前帧的误差恢复,以便减少在视频压缩期间的质量损失。同时也提供了增强的运动向量的编码。

Description

视频压缩方法
相关申请 
本申请要求了于2003年5月12日申请的申请号为60/649,187的美国临时专利申请以及于2003年11月14日申请的申请号为10/713,807的美国专利申请的优先权。 
发明领域
本发明涉及视频数据尤其是尽可能地以有效的方式编码、解码、压缩和传输视频数据的方法和系统。 
背景技术
数据的传输通常受到带宽和吞吐限制的约束。无法在极短的时间内发送或接收无限的数据。为了使被传输的信息的数量和质量达到最大化,在一些情况下,信息在传输时被压缩或编码并且在接收时被解压缩或解码。 
在视频数据的传输中数据压缩是必须的。普通的文本,除非非常庞大,可以被轻易而快捷的传输。然而,视频数据包括色度特征、亮度特征,并且经常包含立体声音频信息。即使是非常短的视频片断也需要大量的数据来定义。这些数据的传输和编码必须尽可能的有效,也就是它必须需要尽可能少的被传输的信息。 
视频压缩是数据压缩的通用技术的一个子集,因此一个信号被挤压或压缩成一个很小的数集。这些数字将占用硬盘上较少的空间,或者占用较少的网络传输时间。在这些数字被再次使用之前,会使用一个解压缩的算法将数字串扩展成它们原来的(或者至少是类似的)形态。 
为了增加压缩率,或者可用于将被存储或传输的数字串的挤压量,视频压缩利用了信号是数字化的视频的来源这一事实。视频和音频数据的有效压缩被认为是有损算法,因为它们丢弃或者丢失了部分的原始信息;重建的数字串不能精确地匹配原始信息。这是可接受的,因为我们感受视频和音频时的精确度与数字化处理的清晰度相比较并不完美。当视频信号变 得轻微失真时,其仍是可识别的。压缩算法在最小的失真和损失下准确重现原始信号的程度是衡量算法成功的标准。 
有一些很好的压缩视频和音频信号的理由,包括技术问题和设备成本。一个最重要的问题是传输数据的成本。随着互联网发展成为21世纪事实上的数据传输平台,诸如录像带、电影和广播的模拟媒介将被基于互联网和互联网相关技术的数字化媒介代替。只要愿意,这个数字化的基础将允许数据在星球上任意两台计算机之间传输。然而,数据能够被发送的速度将依赖于很多因素。在极限情况下,一个多世纪前被铺设的并且用于模拟语音通信的铜缆使用modem(modem代表调制/解调)技术以9600比特/秒的低速率来传输数据。类似的速度被用于在诸如蜂窝的无限网路上承载语音。最近,线缆调制解调器、DSL和卫星技术为家庭用户提供了6位数的数据速率(100,000到1兆比特/秒)。对于高端应用,光纤可以使数据速率达到G比特(十亿比特/秒)以及更高的范围。 
对于给定的应用,不管有多大的数据速率,传输数据都要耗费金钱。现在,在互联网上发送一兆字节(八百万比特)的开销无论如何也要从低量时的5分钱,便宜到非常极其高量时的1分钱(这个数字不包括接收端的开销)。因此,将一兆字节的数据从一个地方传送到另一个地方的开销总是要超过一便士的。 
在视频数据压缩的领域中已经完成了很多工作。本发明的受让人,纽约克利夫顿公园(最初以Duck公司闻名)的On2技术早就出品了诸如VP3和VP5的编解码器,并且微软公司已经出品了诸如MPEG的编码。现有的视频编解码器的一些特点包括离散余弦变换压缩、熵编码和运动向量的差分编码。早期的编码都使用了参考帧,从而如果一个数据包丢失或被破坏,数据可以通过参考参考帧而恢复。所有这些特点和其中的差异都将在下面进行详细地讨论。 
在基于DCT(离散余弦变换)的视频压缩系统中,一个8×8的象素块或者预测误差信号数据被转换成一组64个频率系数(一个DC值和63个AC值),之后被量化和转换成一个标志(token)集。 
典型的较高频率的AC系数较少,并且因此在量化后不太可能是非零的(也就是更有可能是零)。因此,在标志化之前,系数经常以升序排列即从最低频率的系数(DC值)开始到最高频率的AC系数结束。这个扫描顺 序,有时表示为“之字形顺序”,其有助于在开始处集合非零值并将零值集合到末尾处的游程中,并且这样做促进了更有效的压缩。 
然而这种固定的扫描顺序不是最理想的。例如,当编码交错视频材料时,某些高频系数会更加突出。这个事实反映在例如编解码器(例如MPEG2)的现有技术中,其命令在编码交错视频时使用可选择的扫描顺序。 
当为一个特殊的硬件装置优化编解码器时,确保全部的应用是由任何可由装置使用以便并行完成多个任务的功能组成的并且限定解码处理的个别部分成为瓶颈的程度是很重要的。 
和其它视频编解码器一样,本发明的比特流一般地说可以描述为包含着可以被分为两大类熵编码的标志:预测或P标志以及预测误差或E标志。P标志是描绘对图像的一个块或区域进行编码的方法或模式并且描述帧间运动的标志。E标志用于编码由不完全的预测产生的残留误差。 
熵编码是一种处理方法,因此依照标志在比特流中的频率或者它出现在特殊位置的可能性,比特流中特定的P标志或E标志的表示都是最佳的。例如,一个经常出现的标志将使用比不经常出现的标志少的比特来表示。 
两种主要的熵编码技术是霍夫曼编码和算术编码。在霍夫曼编码中每个标志都使用可变长度的比特模式(或编码)来表示。算术编码是一种计算更加复杂的技术但是它消除了使用每个标志的全部比特的约束。当使用算术编码时,非常有可能以1/2比特数的平均开销来编码一个非常常见的标志。 
许多多媒体装置都具有非常适于熵编码任务的协处理器单元以及一个非常通用的主处理器。因此,为了并行性的目的,编码或解码一个比特流的处理常常分割为熵相关的任务和无关熵的任务。然而随着数据速率的增加,对于一个给定的视频片断,用于编/解码的标志的数量急剧增加并且熵编码有可能成为瓶颈。 
对于一个常规的比特流重新分配熵编码的计算负载从而避免该瓶颈是非常困难的。通常,在解码端,标志通常必须每次解码一个并且是按照它们被编码时的顺序进行的。不同于在帧的级别上,混合方法或熵编码(例如霍夫曼和算术编码)是极其困难的。 
按照常规,许多现代的视频编解码器使用差分编码方案来编码运动向量的(x,y)分量。也就是,每个向量相对于之前的向量进行编码。例如,考虑两个向量(7,3)和(8,4)。这时第二个向量将被编码为(1,1),也就是(7+1,3+1)。 
如果许多其中的一个运动向量被编码了的块或区域所表示的运动与它们的邻里相类似,那么这种方案是适用的。例如在拍摄全景时,可以经常出现这种情况。然而,如果运动画面是不规则的或者经常在具有不同运动特性的背景和前景区域间出现转换,那么这种方案就不太适用。 
对于许多现代的视频编解码器,运动预测是压缩处理中一个非常重要的部分。运动预测是一种处理方法,因此物体或图像区域的运动在一个或多个帧上被模型化并且一个或多个“运动向量”被转换为比特流以表示该运动。在多数情况下,不太可能精确地模型化图像中的运动,因此就有必要编码除运动信息之外的残留误差信号。 
本质上,每个运动向量指向之前已编码的帧的一个区域,该区域与当前帧内将被编码的区域相类似。残留误差信号通过从当前帧的实际数值中减去每个象素的预测值而获得。 
许多现代的视频编解码器通过提供对达到亚象素级精度的运动预测(例如,半象素或四分之一象素的运动估计)的支持来扩展其处理。为了创建小象素数据点,必须使用一些形式的插值函数或者对实际的数据点(也就是全象素排列的)进行过滤。 
早期的编解码器通常使用如这里所示的简单的双线性插值。在这个示例中,A、B、C和D是全象素排列的数据点并且x、y和z是半象素排列的点。点x在X方向上是半象素排列的并且可以根据如下等式计算: 
x=(A+B/2)                        (1) 
点y在Y方向上是半象素排列的并且可以根据如下等式计算: 
y=(A+C/2)                        (2) 
点z在X和Y方向上是半象素排列的并且可以根据如下等式计算: 
z=(A+B+C+D/2)                    (3) 
较新的编解码器趋向于使用更为复杂的不易于使图像模糊的插值过滤,诸如双三次过滤。在该例子中,x是一个位于全象素排列的点B和C之间的半象素点。当双三次使用整数表示时,其可以通过如下等式计算: 
x=(-A+9B+9C-D)/16                                (4) 
虽然诸如上述例子的过滤有助于产生看起来准确的结果,它们在多个帧上重复应用时能在某些情况下导致诸如错误纹理或错误轮廓的不希望的人造假象。 
当在一个不可靠或者有问题的数据链路上传输压缩后的视频数据时,因为视频编解码器对比特流中的错误经常极其敏感,所以存在一个在数据丢失或损坏时进行恢复的机制是很重要的。 
对于这种链路上的可靠的数据传输存在着多种技术和协议,并且其依赖于对误差的检测并且重新传输或使用额外的数据位以允许某些类型的误差发生。在许多情况下已有的技术是适用的,但是当在有限带宽的链路上进行视频会议时,前面提到的处理都是没有用处的。对丢失的数据包的重新传输可能并不实际,因为其有可能引起端对端的延迟增加,而在带宽已经严格限制的情况下,使用误差检测位或数据包可能是无法接受的。 
一种可选择的方法是在解码器处简单地检测误差并报告给编码器。编码器接着可以发送一个恢复帧给解码器。注意到如果这条链路上的误差率非常高的话,例如每隔10-20帧就出现多次错误时,这种处理可能不太适合。 
最简单的恢复帧的形式是一个关键帧(或者是仅帧内编码的帧)。这是一个与前一个帧或其中的数据没有任何关系的帧。关键帧的问题是它们常常比较大。 
发明内容
本发明的目标是提供一种有效而可靠的视频压缩方法和编解码器。 
本发明的另一个目标是提供一种能够以适合的方式进行离散余弦变换的视频压缩方法和编解码器。 
本发明的另一个目标是提供一种进行优化所使用的硬件装置资源的熵编码的视频压缩方法和编解码器。 
本发明的另一个目标是提供一种增强运动向量编码的视频压缩方法和编解码器。 
本发明的另一个目标是提供一种精确并有效地进行子象素预测的视频压缩方法和编解码器。 
本发明的另一个目标是提供一种即使在视频会议的环境中也可以有效地进行误差恢复的视频压缩方法和编解码器。 
前述和其它目标由本方面实现,其是一种压缩视频数据的方法,该视频数据至少包含一个含有至少一个块的帧,并且每个块包含一个象素阵列。本发明方法包含至少一个如下的步骤:I)将每个块的象素变换为系数并且创建一个最佳的系数传输顺序;I)通过将数据比特流分段并且单独编码每个分段来优化压缩视频数据的处理速度;III)通过基于至少一个与每个给定的块有关的度量值为多个给定的多数象素选择插值方法的预测子象素的方法;并且V)增强对当前帧的误差恢复以便减少在视频压缩期间的质量损失,其使用一个在当前帧的前一个帧之前的帧作为唯一的参考帧。 
作为本发明的重新排列系数的方面,该方法将每个块的系数转换为系数,每个系数具有一个系数位置和一个数值并且确定与每个系数的位置相关的位置值。之后基于每个系数位置的位置值创建一个最佳的系数传输顺序,并且系数按照确定的顺序传输。优选地,系数的传输顺序是为视频数据的每个帧动态的重新排列的。该转化步骤优选地将象素转化为离散余弦系数。系数的传输顺序可以和系数一起传输。优选地,每个块具有同样数量的系数和系数位置,并且每个分别对应的系数位置从块到块分别传送同样的信息。 
在降低将被传输的数据量的工作中,系数顺序数据的传输可以限制为从一个帧到下一个帧的系数顺序的变化。可选择的或者额外的,传输顺序可以考虑进系数条带(band)中,每个条带包含多个按照之前确定的数字顺序排列的象素。在这种情况下,只有条带信息可以和系数一起传输。优选地,当系数从一个帧到下一个帧改变条带时,只有条带信息会被传输。作为另一种可选择的,所有的条带信息总是被传输。 
重新排序系数还可以包括关键帧的提供。本发明方法还可以提供例如关键帧,该关键帧完全独自编码并且不需要来自于或者有关于之前的帧的信息。在这种情况下,编码器确定给定的帧是否是关键帧。如果确定给定的帧是关键帧,则传输用于关键帧的整个的系数传输顺序。如果确定给定的帧不是关键帧,则只传输从之前的帧向给定的帧的系数传输顺序的变化。 
如上所述,本发明期望通过分割比特流并且独立编码各个分段来优化压缩视频数据的处理速度。特别地,本发明将视频数据分割为至少两个数 据分段并且为每个数据分段选择一个最佳的熵编码方法。从而选定的熵编码方法被分别用于各个数据分段。在一个实施例中,视频数据被划分为一个预测标志数据分段和一个误差标志数据分段;优选地,每一个数据分段经受不同的熵编码方法,诸如霍夫曼编码和算术编码。不同的数据分段的各个解码处理可以异步地和/或独立地进行。这可以通过在硬件中提供至少两个协处理器来实现,其中一个数据分段被一个协处理器解码并且另一个数据分段被另一个协处理器解码。对于给定的数据分段确定使用哪一个熵编码方法是基于数据分段的大小的。 
在该方法和编解码器的一个优选实施例中,预测标志数据分区被读出并被转换为预测块。误差标志数据分段也被读出并被转换为系数并由此转换为误差块。预测块和误差块相加以形成一个图像块。如上所述,其优选为提供至少两个协处理器,其中一些步骤在一个协处理器上执行并且剩下的步骤在另一个协处理器上执行。特别地,读取误差标志数据分段并且将误差标志数据分段转换为系数的步骤优选为在一个快速的熵优化的协处理器上执行,并且其它步骤优选为在一个通用协处理器上执行。 
本发明方法通过避免数据和编码缓存丢失的方法优化了比特流的解码性能。存储了尽可能多的能够适合编码缓存的解码器代码的专用函数。该步骤的代码为尽可能多的能够适应数据缓存的块而运行。然后收集解码器代码的下一组专用函数,该过程被重复直到所有的比特流都被读取并且每一个数据块都已经形成。 
优化比特流的解码器的性能的另一个方面通过为单独的处理器分配子任务来优化协处理器的使用。优选地,解码器中从比特流中读出误差标识并将它们转化为系数的部分运行在一个快速熵优化的协处理器上。解码器中从比特流中读出预测标识并从这些标识中构建过滤后的预测块的部分运行在可以快速访问存储器的协处理器上。解码器中将上一步骤的变换系数转换为误差信号的部分运行在具有变换编码器的最佳实施例的协处理器上,并且解码器中将预测块添加至误差信号的部分运行在为运动补偿而优化的协处理器上。 
视频数据可以被划分为两个数据分段,第一个数据分段表示帧的第一个区域并且第二个数据分段表示帧的第二个区域(也就是上半部分和下半部分或者左半部分和右半部分)。可选择的,视频数据可以划分为三个数据 分段,每个分段分别表示帧的平坦度(level)、饱和度和色调信息。在另一个版本中,三个数据分段可以分别表示帧的青色、绛红色和黄色信息。 
如上所述,本方面包含通过基于至少一个与给定的块有关的度量值为给定的多个象素选择插值方法来预测子象素运动的方面。特别地,确定至少一个与给定的多个将被编码的象素有关的度量度的值,并且基于确定的至少一个度量值的值选择将给定的多个象素进行编码的插值方法。由此选择的插值方法应用于给定的多个象素以便编码,并且该处理对于连续的多个象素是重复的步骤。该至少一个度量值至少是运动向量长度和复杂因子中的一个。该插值方法可以包含双线性、双三次、二次和B样条插值。给定的多个象素可以是一个完整的帧或其中的一部分。如果确定与给定的多个象素有关的运动向量长度小于预测的长度值并且与给定的多个象素有关的复杂因子被确定小于预测的复杂因子,则选择双三次插值。对于给定数量的多个象素,预测的长度值和复杂因子优选为设置一次,并且可以每个帧设置一次。 
复杂系数优选为给定的多个象素的方差,可以这样计算: 
C = ( nΣ x i 2 - ( Σ x i ) 2 ) / n 2 - - - ( 4 )
如上所述,本发明包含了增强当前帧的误差恢复,其对于给定的帧使用在上一帧之前被编码的一个帧作为唯一的参考帧,以便减少数据传输期间的质量损失。特别地,本发明包含使用在上一帧之前被编码的一个帧作为唯一的参考帧,以便减少与线路传输相关的产生数据包丢失或损坏的质量损失。该步骤被限制于至少一个周期性的(每一个F帧)和随机性(基于一些其它的标准)。 
本发明的这个方面特别适合于视频会议。特别地,视频会议的每一方压缩视频数据的帧并且将压缩的视频数据传输至另一方,该数据包具有可以检测数据包丢失或损坏的标记。如果任何部分检测到数据包丢失或损坏,检测方发信号通知发送方发送一个使用已经被成功接收并被所有剩余方解码的参考帧编码的更新帧。 
在如下的方式中本发明可以更好的使用参考帧。一个固定间隔F的视频帧可以被编码器选择并传输至解码器。每一个第F帧只使用之前被编码的第F个帧作为参考来编码。每一个非第F帧使用之前的帧作为参考来编码。视频的每一个帧被传输至解码器这样丢失和损坏可以被检测到。所有的这些步骤优选为发生在编码器上。在解码器端,编码的视频数据从编码器上接收并 且被解码器解码。如果一个数据包被丢失并且该数据包与一个非第F帧相关联,则解码器将等待下一个第F帧以恢复丢失的数据包。 
作为另一种选择,本发明周期性或者随机性地,以高于由从该帧和之前帧提取的统计测量确定的周围质量的质量来编码当前帧,并且存储编码了的当前帧以便由之后的帧用作第二参考帧。 
具体实施例
本发明的几个不同方面将在下文中进行描述。 
动态系数重新排列
在基于DCT(离散余弦变换)的视频压缩系统中,一个8×8的象素块或者预测误差信号数据被变换成一组64个频率系数(一个DC值和63个AC值)中,之后被量化并转换成一组标志。 
典型的较高频率的AC系数量值较小,并且因此在量化后不太可能是非零的。因此,在标志化之前,系数经常以升序排列即从最低频率的系数(DC值)开始到最高频率的AC系数结束。这个扫描顺序,有时表示为“之字形顺序”,有助于在开始处集合非零值并将零值集合到末尾处的游程中,并且这样做促进了更有效地压缩。 
然而这种固定的扫描顺序不是最理想的。例如,当编码交错视频材料时,某些高频系数会更加突出。这个事实反映在例如编解码器(例如MPEG2)的现有技术中,该编码器命令在编码交错视频时的可选择的扫描顺序。 
本发明的一个方面是编解码器用以随意地定制扫描顺序的方法,系数按照该顺序被编码以便最佳地反映特定数据集的特性。 
依照本发明,编解码器维护着一个有关每个DCT系数的零值和非零值在视频的一个或多个帧中分布的记录。这个记录用于创建一个定制的扫描顺序,其中越有可能编码为非零值的系数越早地出现在列表中。 
编解码器可以随意地收集诸如每个系数的非零值的平均数量的额外信息并且使用该数量来进一步地优化扫描顺序。 
传送一个新定制的扫描顺序或者更新一个之前传送的扫描顺序的开销,可能在一些情况下抵消从增加系数的编码效率中获得的收益。因此, 对确定更新是否提供了净收益而言,对开销和收益的分析是必须的。 
影响这个分析的主要因素是更新的开销、将被编码的块(以及因此产生的系数)的数量以及新的扫描顺序与标准扫描顺序或原有扫描顺序之间的偏差程度。 
对于一个8×8单位的DCT,编码一个“完全的”定制扫描顺序(也就是64个系数中的每一个都有一个新的位置),将需要384比特(64个系数×6比特/个)。这个开销可能是高昂的,除非将被编码的块(和因此产生的系数)的数量非常大或者适合的扫描顺序与默认的扫描顺序(可以是一个标准扫描顺序或原有扫描顺)的差别非常小。这个陈述背后的基本原理是如果默认的扫描顺序与定制的扫描顺序相似,则存储每个编码的块的平均比特数可能会变小,因此大量的块必须被编码以证明更新扫描顺序的开销是值得的。相反,如果默认的扫描顺序与定制的扫描顺序不同,则存储每个块的平均数可能变高。 
一种简单地改善这一状况的方法将会是只编码扫描顺序的变化。例如对于每个系数,编码一个比特来表明它是否改变了扫描顺序中的位置以及其是否适合于其新的位置。虽然这通常会导致较低的更新开销,但是假设当新的扫描顺序对所有的系数都不同的话将出现最坏的情况,这时更新的开销将达到448比特(64×7)。 
这样的一个方法其吸引人的一个方面是,当定制和默认的扫描顺序非常相似的时候,更新的开销是最低的(并且因此存储每个块的可能的开销也是最低的);而当它们非常不同时,更新的开销是最高的。 
这种状况可以通过在单独的系数或系数对的级别上进一步考虑“性价比”来改善。例如,考虑两个系数在扫描顺序中彼此相邻并且它们非零值的可能性几乎相等的情况。对于两个系数中的一个或另一个而言,其非零值数量的很小变化将导致它们交换在定制扫描顺序中的位置。编码该变化就意味着要用14比特(假设是前述的更新方式)的开销来更新两个系数的扫描位置。然而,所获得的节约的比特也许会被忽略。 
这个问题与高位的AC系数特别有关。这里,非零值的频率通常非常小并且即使一个细微的变化都可能引起系数在扫描顺序中的位置很大的变化。 
虽然定制扫描顺序的计算完全以每个系数的零值和非零值分布的计算 为基础确实是可行的,但是其它一些因素也是有关系的。如前所述,其中一个因素是非零值的平均数量。另一个因素是在一些情况下一个或多个系数的数值间存在正相关的事实。例如,在一个低位的“纯水平”AC系数和高位的“纯水平”AC系数之间。在这种情况下,除非在非零值的普遍性上存在实质的差别,否则可以优先保持它们原有的顺序(从低频到高频)。 
本发明的这个方面的优选实施例对于解决这样的结果同时降低更新扫描顺序的开销有用。 
创建一个定制的扫描顺序的过程主要如下所示: 
·DC系数总是被第一个编码(位置0) 
·其它的AC系数依照每个系数的非零值的比例进入降序排列 
·将扫描列表划分为16个可变大小的条带(参见表1) 
·其中每个条带重新排列为之字形扫描顺序。 
注意到细分为如表1所示的16个条带是基于对一系列不同的测试片断的经验观察的,并且不需要优化。 
表1首选扫描顺序的系数条带 
  条带   第一个系数   最后一个系数
  0   1   1
  1   2   4
  2   5   10
  3   11   12
  4   13   15
  5   16   19
  6   20   21
  7   22   26
  8   27   28
  9   29   34
  10   35   36
  11   37   42
  12   43   48
  13   49   53
  14   54   57
  15   58   63
[0085] 根据经验的试验表明该条带化策略使得其几乎等于并且经常优于通过使用完全基于非零值的比例的扫描顺序而获得的结果;即使在考虑了更新的开销之前也是如此。 
第二个优点是极大地降低了更新扫描顺序的开销,因为当从一个条带移动到另一个条带时不需要更新数值。此外,只需要4个比特来编码条带中的一个变化。 
使用在优选实施例中的最终的优化是基于观察与其它系数相比较更为频繁地变化条带的系数的。例如,高位的AC系数变化条带的系数常常比低位的系数小。 
例如,如果一个特定的系数只更新了当时的2%,那么在一个给定的帧上用一个比特来表示其是否被更新了就有些浪费了。通过使用算术编码技术并且为每个系数分配根据经验确定的更新概率,就有可能获得小于每个系数1比特的平均更新开销。 
下面的C语言代码详细地支持了本发明的这个方法的优选实施例: 
//Work out a new″preferred″scan order using the zero/non-zero frequency data 
//that has been collected. 
void CalculateScanOrder(CP~INSTANCE*cpi) 
UINT32 i,j,k; 
UINT32 Sum; 
UINT32 tmp[2]; 
UINT32 NzValue[BLOCK_SIZE][2]; 
UINT32 GroupStartPoint,GroupEndPoint; 
//For each coefficient,calculate the proportion of the values that 
//were as a scaled number from 0-255. 
for(i=l;i<BLOCK;i++) 
    Sum=cpi->FrameNzCount[i][0]+cpi->FrameNzCount[i][1]; 
    if(Sum) 
         NzValue[i][0]=(cpi->FrameNzCount[i][1]*255)/Sum; 
    else 
         NzValue[i][0]=0; 
    NzValue[i][1]=i; 
//sort into decending order. 
for(i=I;i<BLOCK,i++) 
    for(j=i+1;j>;j--) 
    { 
           if(NzValue[j][0]>NzValue[j-1][0]) 
           { 
                //Swap them over 
                tmp[0]=NzValue[j-1][0] 
                tmp[1]=NaValue[j-a][1]; 
                NzValue[j-1][0]=NzValue[j][0]; 
                NzValue[j-1][1]=NzValue[j][1]; 
                NzValue[j][0]=tmp[0]; 
                NzValue[j][1]=tmp[1]; 
           ) 
      } 
  } 
//Split into bands and then re-sort within each band 
//into ascending order upon zig-zag scan position 
GroupEndPoint=0; 
for(k=0;k<SCANORDERBANDS;k++) 
     { 
     GroupStartPoint=GroupEndPoint+1; 
     GroupEndPoint=EndpointLookup[k]; 
     for(i=GroupStartPoint;i<GroupEndPoint;i++) 
     { 
          for(j=i+1;j>GroupStartPoint;j--) 
          { 
              if(NzValue[0][1]<NzValue[j-1][1]) 
              { 
                  //Swap them over 
                  tmp[0]=NzValue[j-1][0]; 
                  tmp[1]=NzValue[j-1][1]; 
                  NzValue[j-1][0]=NzValue[j][0]; 
                  NzValue[j-1][1]=NzValue[j][1]; 
                  NzValue[j][0]=tmp[0]; 
                  NzValue[j][1]=tmp[1]; 
              } 
         } 
     } 
     //For each coefindex mark its band number 
     for(i=GroupStartPoint;i<=GroupEndPoint;i++) 
     { 
         //Note the new scan band number for each coef. 
         //NaValue[i][1]is the position of the coef in the traditional 
         //zig-zag scan order,i is the position in the new scan order and 
         //k is the band number. 
         cpi->NewScanOrderBands[NzValue[i][1]]=k; 
     } 
 } 
//This structure gives scan order update probabilities(scaled to the range of 1-255) 
//for each of the dct coefficients(in traditional zig-zag order).The values are passed 
//to the function″nDecodeBool indicate the probability that the result will be 0 
//(FALSE) 
// 
const UINT8 ScanBandUpdateProbs[BLOCK_SIZE]= 
255,132,132,159,153,151,161,170, 
164,162,136,110,103,114,129,118, 
124,125,132,136,114,110,142,135, 
134,123,143,126,153,183,166,161, 
171,180,179,164,203,218,225,217, 
215,206,203,217,229,241,248,243, 
253,255,253,255,255,255,255,255, 
255,255,255,255,255,255,255,255 
}; 
//Reads updates to the scan order if they are available for this frame. 
void UpdateScanOrder(PB~INSTANCE*pbi) 
//Is scan order being updated this frame? 
if(nDecodeBool(128)) 
     { 
     //Read in the those scan bands that have been updated 
     for(i=1;i<BLOCK_SIZE;i++) 
     { 
          //Has the band for this coefficient been updated? 
          if(nDecodeBool(ScanBandUpdateProbs[i])) 
     { 
     pbi->ScanBands[i]=VP6_bitread(SCAN_BAND_UPDATE_BITS); 
     } 
//build the new scan order from the scan bands data 
BuildScanOrder(pbi,pbi->ScanBands) 
//Builds a custom scan order from a set of scan band data. 
void BuildScanOrder{PB_INSTANCE*pbi,UNIT8*ScanBands) 
UINT32i,j; 
UINT32 ScanOrderIndex=1; 
//DC is fixed 
pbi->ModifiedScanOrder[0]=0; 
//Create a scan order where within each band the coefs are in ascending order 
//(in terms of their original″zig-zag″scan order positions). 
for(i=0 i<SCAN_ORDER_BANDS;i++) 
     for(j=1;j<BLOCK_SIZE;j++) 
     { 
          if(ScanBands[j]=1) 
          { 
               pbi->ModifiedScanOrder[ScanOrderlndex]=j; 
               ScanOrderlndex++; 
为促进编码和解码的优化使用单独比特流分段,且使用混合模式的熵编码
当为一个特殊的硬件装置优化编解码器时,确保全部的应用是由任何可由装置使用以便并行完成多个任务的功能组成的,以及限定解码处理的个别部分成为瓶颈的程度是很重要的。 
和其它视频编解码器一样,本发明的比特流一般地说可以描述为包含着可以被分为两大类的熵编码的标志。 
预测标志(下文中称为P标志)。例如,描绘用于对图像的一个块或区域进行编码的方法或模式并且描述帧间运动的标志。 
预测误差信号标志(下文中称为E标志)。其用于编码由不完全的预测产生的任何残留误差。 
熵编码是一种处理方法,因此依照标志在比特流中的频率或者它出现在特殊位置的可能性,比特流中特定的P标志和E标志的表示都是最佳的。例如,一个经常出现的标志将使用比不经常出现的标志少的比特来表示。 
两种主要的熵编码技术是霍夫曼编码和算术编码。在霍夫曼编码中每个标志都使用可变长度的比特(或编码)模式来表示。算术编码是一种计算更加复杂的技术但是它消除了使用每个标志的全部比特的约束。例如,当使用算术编码时,非常有可能以1/2比特数的平均开销来编码一个非常常见的标志。 
许多多媒体装置都具有非常适于熵编码任务的协处理器以及一个非常通用的主处理器。因此,为了并行性的目的,编码或解码一个比特流的处理常常分割为有关熵的任务和无关熵的任务。 
然而,随着数据速率的增加,对于一个给定的视频片断,用于编/解码 的标志的数量急剧增加并且熵编码有可能成为瓶颈。 
对于一个常规的比特流重新分配熵编码的计算负载从而避免该瓶颈是非常困难的。通常,在解码端,标志通常必须一次解码一个并且是按照它们被编码时的顺序进行。不同于在帧的级别上,混合方法或熵编码(例如霍夫曼和算术编码)是极其困难的。 
本发明的这个方面是一个用来使分发熵编码的计算负载变得容易,并且通过比特流的结构变化促进混合模式的熵编码使用的方法。 
依照这个方法比特流中的每个帧被划分为两个或多个完全独立的数据分段。可以并行写入或读出的分段不必受限于使用同样的熵编码机制。这使得优化编码或解码的处理以避免在高码率时出现熵有关的瓶颈变得容易。 
在一个单独的帧中同时使用霍夫曼和算术编码或者是两者的混合编码的能力,为编码器提供了更好地优化压缩量与计算复杂程度之间的平衡的能力。例如,如果一个帧预计的大小超过了给定的门限,那么一个编码器可以设置为在它的一个或多个部分中使用不太复杂的霍夫曼编码。 
本发明的这个方面的特定实施例支持使用一个或两个主数据分段。此外还有一个小的头分段。 
当使用单独的数据分段时编解码器以传统方式运行。P标志和E标志在单独的分段分段中通过使用专用的算术编码器来编码。这种方法具有非常低的开销(每帧使用几个比特)但是缺乏灵活性。 
例如: 
      分段1 
(块1)    P,P,E,E,E 
(块2)    P,E,E 
(块3)    P,E,E,E,E 
然而在第二种情况下,P标志和E标志被写入单独的分段例如: 
         分段1   分段2 
(块1)    PP      EEE 
(块2)    P       EE 
(块3)    PP      EEEE 
第一个分段的大小不能趋向于和数据速率一样多,并且是相当小的,因此这个分段总是使用算术编码器来编码的。第二个分段可以使用算术编码器或者霍夫曼编码器进行编码。 
对于对第二分段进行霍夫曼或是算术编码的选择可以在帧的级别上进行。在优选实施例中,该选择基于目标解码器平台的性能和帧的比特的预计大小。特别地,如果帧的尺寸超过了门限值,将出现一些危险即解码器在实时地解码帧的时候会出现问题,那么就使用霍夫曼编码。 
当需要实时地编码时编码器的性能也将是一个关键,但是对关键帧可能例外(关键帧变得很大而且与其它帧没有依赖),熵编码的开销常常是编码的全部计算开销中很小的一部分。 
下面的C语言代码详细地支持了本发明的这个方法的优选实施例: 
//This function packs the encoded video data for a frame using either one arithmetically 
//coded data partition,two arithmetically coded data partitions,or one arithmetically 
//coded data partition and one Huffman data partition. 
// 
//The argument″cpi″is a pointer to the main encoder instance data structure. 
void PackCodedVideo(CP_INSTANCE*cpi) 
    UINT32 PartitionTwoOffset; 
    BOOL_CODER*bc=&cpi->bc;   //Aritmetic coder instance data sturcture 
    BOOL_CODER*bc2=&cpi->bc2; //Aritmetic coder instance sturcture 
    PB_INSTANC*pbi=&cpi->pb;//instance data structure 
    //Initialise the raw buffer i/o used for the header partition. 
    InitAddRawBitsToBuffer(&cpi->RawBuffer,pbi->DataOutputPtr); 
    //Start the arithmetic and or Huffman coders 
    //If we are using two data partitions... 
    if(pbi->MultiStream‖(pbi->VpProfile=SIMPLE_PROFILE)) 
    { 
        //Start the first arithmetic coder:Allow for the raw header bytes. 
        VP6_StarEncode(bc,(pbi->DataOutputPtr+(KeyFrame)?4:3))); 
        //Create either a second arithmetic or Huffman partition 
        //This is initially written to a holding buffer″cpi->OutputBuffer2″ 
        if(pbi->UseHuffman) 
            InitAddRawBitsToBuffer(&pbi->HuffBuffer,cpi->OutputBuffer2) 
    else 
         VP6_StarEncode(bc2,cpi->OutputBuffer2); 
//We are only using a single data partition coded using the arithmetic coder. 
else 
    //Start the arithmetic coder:Allow for the raw header bytes. 
    VP6_StarEncode(bc,(pbi->DataOutputPrt+(KeyFrame)?2:1))); 
//Write out the frame header information including size. 
WriteFrameHeader(...) 
if(pbi->UseHuffman) 
    PackHuffmanCoeffs(...); 
else 
    PackArithmeticCoeffs(...) 
//Stop the arithmetic coder instance used for the first data partition 
VP6StopEncode(bc); 
//Work out the offsets to the data partitions and write them into 
//the space reserved for this information in the raw header partition. 
// 
//If we are using two data partitions.... 
if(pbi->MultiStream‖(=(pbi->VpProfile=SIMPLE_PROFILE)) 
    //Offset to first data partition from start of buffer 
    PartitionTwoOffset=4+bc->pos; 
    //Write offset to second data partition partition. 
    AddRawBitsToBuffer(&cpi->RawBuffer,PartitionTwoOffset,16) 
    //If Huffman was used for the second data partition... 
    if(pbi->UseHuffman) 
    { 
        //Flush the buffer for the Huffman coded output partition 
        EndAddRawBitsToBuffer(&pbi->HuffBuffer); 
            //Copy the Huffman coded data from the holding buffer into 
            //the output buffer. 
            memcpy(&cpi->RawBuffer.Buffer[PartionTwoOffest], 
                pbi->HuffBuffer.Buffer,pbi->HuffBuffer.pos); 
        } 
        else 
        { 
            //Stop the arithmetic coder instance used by the second data 
            //partition. 
            VP6StopEncode(bc2); 
            //Copy over the contents of the holding used by 
            //the second partition into the output buffer. 
            memcpy(&pbi->DataOutputInPtr[PartionTwoOffest], 
                bc2.buffer,bc2.pos); 
        } 
    } 
    //Stop and flush the raw bits encoder used for the header 
    EndAddRawBitsToBuffer(&cpi->RawBuffer); 
    //This function is called to select the coding strategy when using two data partitions. 
    void SelectMultiStreamMethod(CP_INSTANCE*cpi) 
    { 
    //Calculate an estimated cost(Shannon entropy)for the frame using 
    //the information gathered re.the distribution of tokens in the frame. 
    //add in thepreviously calculated cost estimate for coding any mode and 
    //motion vector information. 
    EstimatedFrameCost=VP6_ShannonCost(cpi)+ModeMvCost; 
    //Decide whether to drop using Huffman coding for the second data partition. 
    if(EstimatedFrameCost>HuffmanCodingThreshold) 
        pbi->UseHuffman=TRUE; 
    else   
        pbi->UseHuffman=FALSE; 
使用多个过滤以增强视频编解码器中的子象素运动预测
对于许多现代的视频编解码器,运动预测是压缩处理中一个非常重要的部分。运动预测是一种处理方法,因此物体或图像区域的运动在一个或多个帧上被模型化并且一个或多个“运动向量”以比特流传输以表示该运动。在许多情况下,不太可能精确地模型化图像中的运动,因此就有必要编码除运动信息之外的残留误差信号。 
本质上,每个运动向量指向之前已编码的帧的一个区域,该区域与当前帧内将被编码的区域相类似。残留误差信号通过从当前帧的实际数值中减去每个象素的预测值而获得。 
许多现代的视频编解码器通过提供对达到亚象素级精度的运动预测的支持来扩展其处理。例如,半象素或四分之一象素的运动估计。为了创建小象素数据点,必须使用一些形式的插值函数或者对实际的数据点(也就是全象素排列的)进行过滤。 
早期的编解码器通常使用简单的双线性插值。 
A    x    B 
y    z 
C         D 
在这个示例中,A、B、C和D是全象素排列的数据点,并且x、y和z是半象素排列的点。点x在X方向上是半象素排列的并且可以根据如下等式计算:x=(A+B/2)。点y在Y方向上是半象素排列的并且可以根据如下等式计算:y=(A+C/2)。点z在X和Y方向上是半象素排列的并且可以根据如下等式计算:z=(A+B+C+D/2)。 
较新的编解码器趋向于使用更为复杂的不易于使图像模糊的插值过滤,诸如双三次过滤。在如下的示例中,x是一个位于全象素排列的点B和C之间的半象素点。对双三次使用整数表示时,其可以通过如下等式计算:x=(-A+9B+9C-D)/16 
  A            B      x     C            D 
虽然诸如上述例子的过滤有利于产生看起来准确的结果,但是它们在多个帧上重复应用时能在某些情况下导致诸如错误纹理或错误轮廓的不希望的人造假象。 
本发明的这个方面是一个方法,通过该方法编解码器可以使用混合的 过滤技术来创建更加最佳的子象素预测器并在片断级别、帧级别、块级别甚至在单独的象素级别选择这些技术。 
在优选实施例中,可以在每一帧的基础上是否只使用双线性过滤、只使用双三次过滤或者在块级别上容许选择而作出选择。 
在块或区域级别上的选择可以通过依靠比特流中的显示信号位获得,但是在优选实施例中,是通过已经存在于比特流中的上下文的信息并且依靠对将被过滤的全象素排列的数值的复杂程度而作出选择。 
在运动预测器的质量较差的情况下(例如在原有帧的重建中不可能为一个块发现好的预测),双线性过滤常常是最好的选择。特别当预测较差时,双三次过滤的准确的特性可以导致增加残留误差信号内容的高频部分,并且使其难以编码。 
当比特流中缺少显示信号位时,多个可以示出的与上下文有关的可用值与较差的预测质量或多或少有关系。其中最简单的是运动向量长度。特别在增加运动向量的长度时预测的质量趋向于降低。平滑的运动画面是另一个可能的指示(也就是相邻块的运动向量如何相似)。 
在向量的选择是不可靠的情况下,双线性过滤也趋向于一种较佳的选择(例如,图像中没有非常多的细节并且有许多具有相似的误差分数的候选向量)。特别地,在许多帧上对一个相对平坦和平淡区域重复双三次过滤时,将出现不需要的人造假象(artefact)。 
当选择过滤方法时在优选实施例中有两个因素被考虑到。第一个是运动向量的长度。第二个是通过分析将被过滤的全象素排列的数据点集合计算出的复杂程度C。 
只有在如下的测试条件满足时才使用双三次过滤: 
1、在X和Y中运动向量短于门限值L。 
2、复杂度C大于门限值T。 
在优选实施例中C是n个数据点xi通过如下公式计算的方差: 
C = ( nΣ x i 2 - ( Σ x i ) 2 ) / n 2
在优选实施例中,复杂度门限T和运动向量长度门限L可以被编码器基于每一帧进行设置。 
下面的C语言代码详细地支持了本发明的这个方法的优选实施例: 
PredictBlockFunction(…) 
if(pbi->PredictinFilterMode=AUTO_SELECT_PM) 
//Use if vectors are above a threshold length in X or Y 
if((pbi->mbi.Mv[bp].x)>BicMvSizeLimit)‖ 
  ((pbi->mbi.Mv[bp].y)>BicMvSizeLimit)) 
     FiIterBlockBilinear(...) 
else 
     //Calculate a complexity metric(variance). 
     //Note:for performance reasons the variance function only 
     //examines 16 data points(every other point in X and Y 
     //for an 8x8 block). 
     Var=Var16Point(DataPtr,Stride); 
     //If the complexity is above the given threshold 
     //use bicubic 
     if(Var>=pbi->PredictionFilterVarThresh) 
          FilterBlockBilcubic(...); 
     else 
          FilterBlockBiliner(...); 
     } 
UINT32 Var16Point(UINT8*DataPtr,INT32 Stride) 
UINT32 i,j; 
UINT32 XSum=0,XXSum=0; 
UINT8*DiffPtr=DataPtr; 
//Use every other point in X and Y 
for(i=0;i<BLOCK_LEIGHT_WIDTH;i+=2) 
     for(j=0;j<BLOCK_LEIGHT_WIDTH;j+=2) 
     { 
          XSum+=DiffPtr[j]; 
          XXSum+=DiffPtr[j]*DiffPtr[j] 
     } 
     //Step to next row of 
     DiffPtr=+(SourceStride<<1) 
//Compute population va as mis-match metric. 
return(((XXSum*16)-(XSum*XSum))/256); 
增强的运动向量编码
按照常规,许多现代的视频编解码器使用不同的编码方案来编码运动向量的(x,y)分量。也就是,每个向量相对于之前的向量被编码。例如,考虑两个向量(7,3)和(8,4)。这时第二个向量将被编码为(1,1),也就是(7+1,3+1)。 
如果许多个其中的一个运动向量被编码了的块或区域所表示的运动与它们的邻里相类似,那么这种方案是适用的。例如在拍摄全景时,可以经常出现这种情况。然而,如果运动画面是不规则的或者经常在具有不同运动特性的背景和前景区域间出现转换,那么这种方案就不太适用。 
本发明的这个方面是一个用于编码运动向量的可选择的策略,其保留了不同的编码在更为容忍不规则的画面以及背景前景的转换时的优点。 
依照本发明,编解码器维护着两个或多个与将被编码的运动向量有关的参考向量。编解码器可以通过比特流中的显示信号位在这些参考向量间切换,但是在优选实施例中其决定于编码方法和块的直接近邻所使用的运动向量。 
在优选实施例中,块可以作为帧内块(与任何前一个帧没有依赖),或者是帧间块被编码,这依赖于前一个帧的重建或者仅周期性更新的可选择的参考帧。 
当考虑到前一个帧的重建或者可选择的参考帧而编码时,本发明支持如下编码方法的选择: 
·没有运动向量的编码(也就是说一个隐含的(0,0)向量) 
·和“最近”的邻里使用同样的向量的编码 
·和“下一个最近”的邻里使用同样的向量的编码 
·使用新的运动向量的编码 
当定义最近的或者下一个最近的邻里时,只有那些编码时考虑了和当前块相同的参考帧并且使用了非零的运动向量的块才会被考虑。其它的块都被忽略。 
当定义下一个最近的邻里时,在编码时使用了和最近的块相同的向量的块也被忽略了。 
当编码一个新的运动向量时,编解码器可以使用(0,0)或是最近的向量作为参考向量。在优选实施例中,如果推导出最近的向量的块紧邻于当前块的左侧或上方(假设块的编码是从左至右,自上而下的),则使用该最近的向量。在其它所有情况下,新的向量参考(0,0)来编码。 
对该基本方法的一些扩展是可能的。如果最近的或下一个最近的块分别紧邻于当前块的左侧和上方,那么从这两个块推导出来的某种复合向量可以被用作编码新向量的参考。可选地,最近的块”用于预测x分量而“下一个最近的”用于预测y分量。 
仍然假设最近的或下一个最近的块分别紧邻于当前块的左侧和上方,则另一个可能的扩展将特别考虑最近的和下一个最近的向量不相似的情况,并且在这种情况下用于x、y或者x和y的参考值将归零。 
在有规则或者缓慢变化的运动图像的情况下,本方法保留了简单差分编码的优点用特殊的“没有向量”、“最近的”、“下一个最近的”的模式,有利于实现更有效地对前景和背景间的转换进行编码以及提供为使编码方法更为容忍不规则的运动画面而在多个编码源之间自动切换的能力。 
下面的C语言代码详细地支持了本发明的这个方法的优选实施例: 
//This function determines whether or not there is a qualifying nearest and next 
//nearest neighbour for the current block,what the motion vectors are for those 
//and how close the nearest neighbour is. 
// 
void VP6_FindNearestandNextNearest(PB INSTANCE*pbi, 
                   UINT32 MBrow, 
                   UINT32 MBcol, 
                   UINT8 ReferenceFrame 
                   INT32*Type) 
int i; 
UINT32 OffsetMB; 
UINT32 BaseMB=MBOffset(MBrow,MBcol); 
MOTION VECTORThisMv; 
//Set default outcome 
*Type=NONEAREST; 
//Search for a qualifying″nearest″block 
for(i=0;i<12;i++) 
     { 
     OffsetMB=pbi->mvNearOffset[i]+BaseMB; 
     //Was coded with respect to the same reference frame? 
     if(VP6_Mode2Frame[pbi->predictionMode[OffsetMB]]!ReferenceFrame) 
     continue; 
     //What if any motion vector did it use 
     ThisMv.x=pbi->MBMotionVector[OffsetMB].x; 
     ThisMv.y=pbi->MBMotionVector[OffsetMB].y; 
     //If it was non-zero then we have a qualifying neighbour 
     if(ThisMv.xThisMv.y) 
     { 
         Nearest.x=ThisMv.x; 
         Nearest.y=ThisMv.y;*Type;break; 
     ) 
pbi->mbi.NearestMvIndex i; 
//Search for a qualifying″next 
for(i=i+1;i<12;i++) 
    OffsetMB=[i]+BaseMB; 
       //Was the block coded with respect to the same reference frame? 
    if(VP6Mode2Frame[pbi->predictionMode[OffsetMBj]ReferenceFrame) 
       continue; 
       //What if any motion vector did it use 
       ThisMv.x=pbi->MBMotionVector[OffsetMB].x; 
       ThisMv.y=pbi->MBMotionVector[OffsetMB].y; 
     //If vector is the same as the″nearest″vector then ignore it. 
if(ThisMv.x=Nearest.x)&&(ThisMv.y=Nearest.y) 
     continue; 
     //If it was non-zero then we have a qualifying neighbour 
     if(ThisMv.x‖ThisMv.x) 
     { 
          NextNearest.x=ThisMv.x; 
          NextNearest.y=ThisMv.y; 
          *Type=MACROBLOCK; 
          break; 
在误差恢复中使用可选择的参考帧
当在一个不可靠数据链路上传输压缩后的视频数据时,因为视频编解码器对比特流中的误差经常极其敏感,所以存在一个在数据丢失或损坏时进行恢复的机制是很重要的。 
对于这种链路上的可靠的数据传输存在着多种技术和协议,并且其依赖于对误差的检测以及重新传输或使用额外的数据位以允许某些类型的误差发生。 
在许多情况下已有的技术是适用的,但是当在有限带宽的链路上进行视频会议时,前面提到的处理都是没有用处的。对丢失的数据包的重新传输可能是不实际的,因为其有可能引起端对端的延迟增加,而在带宽已经严格限制的情况下,使用误差检测位可能是无法接受的。 
一种可选择的处理是在解码器处简单地检测误差并报告给编码器。编码器接着可以发送一个恢复帧给解码器。注意到如果这条链路上的误差率非常高的话,例如每隔10-20帧就出现多次误差时,这种处理可能不太适合。 
最简单的恢复帧的形式是一个关键帧(或者是仅帧内编码的帧)。这是一个与前一个帧或其中的数据没有任何依赖的帧。关键帧的问题是它们常常比较大。 
发明的主题5是一种机制,编解码器由此维护一个或多个额外的用于在更有效地编码恢复帧时可以作为起始点使用的参考帧(不同于先前编码的帧的构建)。 
在本发明的优选实施例中,编解码器维护着第二个参考帧,无论是关键帧还是平时的随便的一个帧,该参考帧通过帧头部的一个标志位被更新。例如,编码器可以选择每隔“X”秒或者在误差恢复帧被编码时更新该第二参考帧。 
假设第二参考帧的内容至少在某些方面与当前帧的内容相似,则相对于第二参考帧的差分编码可能比编码一个关键帧的开销小的多。 
现在有一些方法,其中一个或多个可选择的参考帧可以用于增强压缩的质量或效率。在现有技术中被忽视了的一个显而易见的用途是用在一种两个或多个不同的场景间前后摇摆的视频序列中。例如,考虑在一次采访中,视频画面在采访者和被采访者之间前后切换。通过为每个摄像机的视角存储单独的作为基线的参考帧,在这些角度间前后切换的开销可以被极大地降低,特别是在场景完全不同时。 
当本发明具有这样的可选参考帧的选择时,本发明的主题是在视频中具有缓慢的渐进变化的情况下,使用周期性更新的可选参考帧来增强压缩视频的质量。其恰当的例子是缓慢地摇动镜头、放大画面或推拉镜头。 
依照本发明的这个方面,在缓慢地摇动镜头或者其它类似的缓慢的渐进变化过程中,编码器会周期性插入一些帧,这些帧按照远远高于周围帧的质量被编码并且导致第二或可选择的参考帧被更新。 
这些较高质量的“第二参考帧更新”的帧的目的在于恢复自最后一个关键帧或倒数第二参考帧起被越来越多地丢失的细节,并且为接下来的帧中的帧间预测提供更好的基础。可以看出,这个周期性提升质量(及由此产生的数据速率)并且同时更新第二参考帧的的策略在以下情况中可以比使用同样的质量编码全部的帧提供更好的开销与质量间的平衡。 
有效实施例的关键是用于确定适合的第二参考帧更新间隔以及应该被提升的质量或数据速率的数量的方法。 
在本发明的这个方面的优选实施例中,一些因素被考虑到了。包括: 
·在之前的几个帧中的运动向量的平均幅度,其表示运动的速度。 
·运动画面关联的程度。例如相当类似的运动向量 
·第二参考帧在之前的几个帧中被用作优先于之前帧的重建的预测符的程度。 
·周围的质量或量化设置。 
在使用的运动向量的平均幅度较高的情况下(表明快速的运动),第二参考帧之间的更新间隔和质量的提升都会降低。相反地,当运动缓慢时将使用较高的质量提升和较长的更新间隔。 
在运动画面高度关联的情况下,也就是有许多相似的运动向量时,将增加用于第二参考帧的更新的质量提升。相反地,当运动画面很少关联时,提升的程度将降低。 
当第二参考帧经常优先于之前的帧的重建使用时,将增加质量提升。相反地,当第二参考帧不经常使用时,质量提升将降低。 
质量提升的程度也依赖于一些周围的质量程度,当周围的质量程度较差时将使用较大的质量提升而当周围质量程度较高时将使用较小的质量提升。 
下面的伪码对本方面的这个方面的优选实施例给出了更详细的说明。 
对于每个帧 
计算限定在1/4象素单元中的运动向量的X和Y分量的平均幅度(AvX和AvY)。 
MotionSpeed=AvX和AvY中较大的一个 
计算运动向量的X和Y分量的方差数(VarianceX和VarianceY) 
MaxVariance=VarianceX和VarianceY中较大的一个 
MotionComplexity=MotionSpeed+(VarianceX/4)+(VarianceY/4)如果第二参考帧是由于该帧更新的,则 
计算基于预测质量索引确实量化器设置的帧的以数据速率的百分比表示的提升数(Boost)。该数值介于最高质量的0%和非常低质量的1250%之间。 
用Boost乘以一个MotionSpeed的修正系数,该系数可以在表示MotionSpeed非常小时的1与表示MotionSpeed非常大时的0之间变化。 
对Boost进一步应用一个修正系数,该系数基于第二参考帧在之前的几个帧中的使用程度。其可以在表示第二参考帧根本没有在之前的几个帧中使用的1/16一直到表示在15%或者更多的帧中使用了第二参考帧的1之间变化。 
接着使用了一系列的测试以确定是否继续并使用计算出的Boost百分比来升级该第二参考帧。 主要的测试是: 
(Boost>MinBoostThreshold)并且 
(MotionSpeed<MaxMotionSpeedThreshold)并且 
(MaxVariance<MaxVarianceThreshold) 
其中MinBoostThreshold、MaxMotionSpeedThreshold、MaxVarianceThreshold是可设置的参数。 
本发明具有一些特殊的“向量再用”的模式,当同样的运动向量在其紧邻的帧中被使用时,该模式允许块的运动向量被更容易地编码。进一步的测试被用于这些模式的利用率低于一个门限值水平的不能完全使用的情况。 
如果确定了将应用提升并更新第二参考帧,则将数据速率设置为基准值+Boost%,同时基于MotionSpeed计算下一次更新的间隔。 
如果决定不应用提升并且不更新第二参考帧,则依照正常的0%的数据速率提升来更新该帧。 
其它的,如果第二参考帧没有得到更新,则 
计算一个当第二参考帧在上一次更新时应用的提升的级别和当前的帧更新间隔的降低的帧的数据速率目标(负向提升)。 
在可选择的方法中使用重建的误差度进行选择以便创建子象素预测
许多现代的视频编解码器提供达到亚象素级精度的运动预测。例如,半象素或四分之一象素的运动估计。为了创建子象素数据点,必须使用一些形式的插值函数或者对实际的数据点(也就是全象素排列的)进行过滤。 
早期的编解码器通常使用简单的双线性插值。 
A    x    B 
y    z 
C         D 
在这个示例中,A、B、C和D是全象素排列的数据点并且x、y和z是半象素排列的点。 
*点x在X方向上是半象素排列的并且可以根据等式(A+B/2)计算。 
*点y在Y方向上是半象素排列的并且可以根据等式(A+C/2)计算。 
*点z在x和Y方向上是半象素排列的并且可以根据等式 
(A+B+C+D/2)计算。 
较新的编解码器趋向于使用更为复杂的不易于使图像模糊的插值过滤,诸如双三次过滤。在如下的例子中,x是一个位于全象素排列的点B和C之间的半象素点。其可以通过如下等式计算(-A+9B+9C-D)/16 
A         B         x          C         D 
虽然诸如上述例子的过滤有助于产生看起来准确的结果,它们在多个帧上重复应用时能在某些情况下导致诸如错误纹理或错误轮廓的不希望的人造假象。 
本发明的这个方面是一个方法,通过该方法编解码器可以使用混合的双线性和双三次过滤来计算更加优化的子象素预测并在帧级别、单独的块级别或者在使用运动向量的区域上选择这些技术。 
在块或区域级别上的选择可以通过依靠比特流中的显示信号位获得,但是在优选实施例中,选择是通过已经存在于比特流中的上下文的信息并且依靠对将被过滤的全象素排列的数值的复杂程度作出的。 
依照这种方法,使用双三次的方法来过滤具有复杂度数超过门限“T”的块或区域,而使用双线性方法来过滤具有较低复杂程度的数。 
在优选实施例中,复杂程度值是n个全象素排列的将被过滤的数据点的方差,该方差可以定义为: 
(n?x2-(?x)2)/n2 
在优选实施例中,门限值“T”可以在每一帧的基础上被更新。 

Claims (18)

1.一种压缩视频数据的至少一个帧的像素的当前块的方法,该方法包含:
检查多个候选运动向量,其中所述多个候选运动向量的每一个对应于之前编码的块集合中的至少一个之前编码的块;
从所述多个候选运动向量中选择第一向量,该第一向量具有非零值;
从所述多个候选运动向量中选择第二向量,该第二向量具有非零值且具有与所述第一向量不同的值;以及
确定是否使用所述第一向量和所述第二向量中的至少一个来对所述当前块进行编码。
2.如权利要求1所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中所述之前编码的块集合为所述当前块的十二个相邻的之前编码的块。
3.如权利要求1或2所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中选择所述第一向量包括:
从所述多个候选运动向量中选择所述第一向量,所述第一向量为编码时考虑了和所述当前块相同的参考帧和具有非零值的至少一个。
4.如权利要求1至2中任意一项所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中所述选择第二向量包括:
从所述多个候选运动向量中选择所述第二向量,所述第二向量为编码时考虑了和所述当前块相同的参考帧,具有非零值以及具有与第一参考向量不同的值中的至少其中一个。
5.如权利要求1至2中任意一项所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
从基于所述第一向量和所述第二向量中的至少一个的编码模式的选择中选择一个编码模式。
6.如权利要求5所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
对用于所述当前块的所选择的编码模式进行编码;以及
基于所述所选择的编码模式对用于所述当前块的运动向量选择性地编码。
7.如权利要求5所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中编码模式的选择至少包括:
第一编码模式,表示没有利用运动向量对所述当前块进行编码;
第二编码模式,表示利用新的运动向量对所述当前块进行编码,基于所述当前块和之前编码的帧中的参考块之间的差分来计算所述新的运动向量;
第三编码模式,表示利用所述第一向量对所述当前块进行编码;
第四编码模式,表示利用所述第二向量对所述当前块进行编码。
8.如权利要求7所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中对所述运动向量选择性地编码包括如下其中之一:
当选择所述第二编码模式时,对用于所述当前块的所述新的运动向量进行编码;以及
当选择所述第一、第三或第四编码模式时,针对所述当前块不对运动向量进行编码。
9.如权利要求8所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中对用于所述当前块的所述新的运动向量进行编码包括如下其中之一:
基于相邻块的运动向量对用于所述当前块的所述新的运动向量进行差分编码;以及
直接编码所述新的运动向量。
10.如权利要求9所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中所述相邻块为紧邻于所述当前块的左侧的块和紧邻于所述当前块上方的块的其中之一。
11.如权利要求9所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中对所述新的运动向量进行差分编码包括:
从紧邻于所述当前块的左侧的块的运动向量和紧邻于所述当前块的上方的块的运动向量确定复合向量;以及
利用复合运动向量对用于所述当前块的所述新的运动向量进行差分编码。
12.如权利要求1至2中任意一项所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
基于所述当前块和所述之前编码的帧的参考块之间的差分来计算用于所述当前块的新的运动向量。
13.如权利要求12所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中计算用于所述当前块的所述新的运动向量包括:
从所述之前编码的帧中找到与所述当前块最匹配的块;
确定所述当前块的行和列与所述之前编码的帧中的所述最匹配的块的行和列之间的差分。
14.如权利要求12所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
确定所述新的运动向量是否等于所述第一向量和所述第二向量中的至少一个。
15.如权利要求14所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中选择编码模式进一步包括:
基于确定所述新的运动向量是否等于所述第一向量和所述第二向量中的至少一个,从编码模式的选择中选择编码模式。
16.如权利要求3所述的压缩视频数据的至少一个帧的像素的当前块的方法,其中所述选择第二向量包括:
从所述多个候选运动向量中选择所述第二向量,所述第二向量为编码时考虑了和所述当前块相同的参考帧,具有非零值以及具有与第一参考向量不同的值中的至少其中一个。
17.如权利要求3所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
从基于所述第一向量和所述第二向量中的至少一个的编码模式的选择中选择一个编码模式。
18.如权利要求3所述的压缩视频数据的至少一个帧的像素的当前块的方法,进一步包括:
基于所述当前块和所述之前编码的帧的参考块之间的差分来计算用于所述当前块的新的运动向量。
CN2004800200197A 2003-05-12 2004-05-12 视频压缩方法 Expired - Lifetime CN101454990B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US46918703P 2003-05-12 2003-05-12
US60/469,187 2003-05-12
US10/713,807 US8824553B2 (en) 2003-05-12 2003-11-14 Video compression method
US10/713,807 2003-11-14
PCT/US2004/015025 WO2004102946A2 (en) 2003-05-12 2004-05-12 Video compression method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN2012101402633A Division CN103037214A (zh) 2003-05-12 2004-05-12 视频压缩方法

Publications (2)

Publication Number Publication Date
CN101454990A CN101454990A (zh) 2009-06-10
CN101454990B true CN101454990B (zh) 2012-09-05

Family

ID=33423828

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2004800200197A Expired - Lifetime CN101454990B (zh) 2003-05-12 2004-05-12 视频压缩方法
CN2012101402633A Pending CN103037214A (zh) 2003-05-12 2004-05-12 视频压缩方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2012101402633A Pending CN103037214A (zh) 2003-05-12 2004-05-12 视频压缩方法

Country Status (7)

Country Link
US (8) US8824553B2 (zh)
EP (1) EP1656791A2 (zh)
JP (5) JP4568887B2 (zh)
KR (6) KR101140947B1 (zh)
CN (2) CN101454990B (zh)
CA (1) CA2525390C (zh)
WO (1) WO2004102946A2 (zh)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
US7471724B2 (en) * 2003-06-23 2008-12-30 Vichip Corp. Limited Method and apparatus for adaptive multiple-dimensional signal sequences encoding/decoding
JP2006086964A (ja) * 2004-09-17 2006-03-30 Toshiba Corp ビットレート変換装置およびビットレート変換方法
US7817723B2 (en) * 2004-12-14 2010-10-19 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E. V. Apparatus and method of optimizing motion estimation parameters for encoding a video signal
US7324708B2 (en) * 2004-12-23 2008-01-29 Primax Electronics Ltd. Interpolation method for digital pictures
US8634413B2 (en) 2004-12-30 2014-01-21 Microsoft Corporation Use of frame caching to improve packet loss recovery
KR100727969B1 (ko) * 2005-08-27 2007-06-14 삼성전자주식회사 영상의 부호화 및 복호화 장치와, 그 방법, 및 이를수행하기 위한 프로그램이 기록된 기록 매체
KR100727970B1 (ko) * 2005-08-30 2007-06-13 삼성전자주식회사 영상의 부호화 및 복호화 장치와, 그 방법, 및 이를수행하기 위한 프로그램이 기록된 기록 매체
KR100667815B1 (ko) * 2005-09-22 2007-01-12 삼성전자주식회사 영상 부호화 및 복호화 장치와, 그 방법, 및 이를 수행하기위한 프로그램이 기록된 기록 매체
JP2007189518A (ja) * 2006-01-13 2007-07-26 Matsushita Electric Ind Co Ltd 信号処理装置、撮像装置、ネットワークカメラシステム及び映像システム
KR100834757B1 (ko) 2006-03-28 2008-06-05 삼성전자주식회사 엔트로피 부호화 효율을 향상시키는 방법 및 그 방법을이용한 비디오 인코더 및 비디오 디코더
JP5248802B2 (ja) * 2006-06-16 2013-07-31 カシオ計算機株式会社 動画符号化装置および動画符号化方法と、動画復号化装置および動画復号化方法と、動画記録装置
KR101086435B1 (ko) * 2007-03-29 2011-11-25 삼성전자주식회사 영상 데이터 스트림의 에러 검출 방법 및 그 장치
US20100325255A1 (en) * 2007-04-05 2010-12-23 Gene Cheung Data transmission system and method
US8605786B2 (en) * 2007-09-04 2013-12-10 The Regents Of The University Of California Hierarchical motion vector processing method, software and devices
US8542748B2 (en) 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
KR20100011628A (ko) * 2008-07-25 2010-02-03 삼성전자주식회사 코딩 방법 및 코딩 장치
US8311111B2 (en) * 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US8325796B2 (en) * 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8326075B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video encoding using adaptive loop filter
US8385404B2 (en) 2008-09-11 2013-02-26 Google Inc. System and method for video encoding using constructed reference frame
US20100074336A1 (en) * 2008-09-25 2010-03-25 Mina Goor Fractional motion estimation engine
CN102158678A (zh) * 2010-05-20 2011-08-17 王洪剑 一种运动向量场插值方法
EP3907999B1 (en) * 2010-09-02 2023-11-22 LG Electronics, Inc. Inter prediction
US8503528B2 (en) 2010-09-15 2013-08-06 Google Inc. System and method for encoding video using temporal filter
US8344917B2 (en) 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
EP2606648A1 (en) 2010-10-05 2013-06-26 General instrument Corporation Coding and decoding utilizing adaptive context model selection with zigzag scan
US8611415B1 (en) 2010-11-15 2013-12-17 Google Inc. System and method for coding using improved motion estimation
US9532066B2 (en) * 2011-01-21 2016-12-27 Qualcomm Incorporated Motion vector prediction
KR101760333B1 (ko) * 2011-03-02 2017-07-21 삼성전자주식회사 다중 사용자 다중 안테나 전송에서 그룹 아이디 관리를 위한 타겟 단말 및 액세스 포인트의 통신 방법
FR2972588A1 (fr) 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
EP3139611A1 (en) * 2011-03-14 2017-03-08 HFI Innovation Inc. Method and apparatus for deriving temporal motion vector prediction
US8780971B1 (en) 2011-04-07 2014-07-15 Google, Inc. System and method of encoding using selectable loop filters
US8638854B1 (en) 2011-04-07 2014-01-28 Google Inc. Apparatus and method for creating an alternate reference frame for video compression using maximal differences
US8781004B1 (en) 2011-04-07 2014-07-15 Google Inc. System and method for encoding video using variable loop filter
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
US9154799B2 (en) 2011-04-07 2015-10-06 Google Inc. Encoding and decoding motion via image segmentation
CN102811346B (zh) * 2011-05-31 2015-09-02 富士通株式会社 编码模式选择方法和系统
JP5336004B2 (ja) * 2011-06-17 2013-11-06 パナソニック株式会社 動画像復号化装置
FR2977111A1 (fr) 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
CN102956027B (zh) * 2011-08-30 2016-08-03 安凯(广州)微电子技术有限公司 基于摄像头图像处理芯片的图像增强处理系统及处理方法
US8885706B2 (en) 2011-09-16 2014-11-11 Google Inc. Apparatus and methodology for a video codec system with noise reduction capability
BR112014010966A2 (pt) * 2011-11-08 2017-06-06 Samsung Electronics Co Ltd método para determinar vetor de movimento para previsão inter, aparelho determinador de vetor de movimento para previsão inter, e mídia de gravação legível por computador
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
US9100657B1 (en) 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US9262670B2 (en) 2012-02-10 2016-02-16 Google Inc. Adaptive region of interest
US9131073B1 (en) 2012-03-02 2015-09-08 Google Inc. Motion estimation aided noise reduction
US9609341B1 (en) 2012-04-23 2017-03-28 Google Inc. Video data encoding and decoding using reference picture lists
WO2013162980A2 (en) 2012-04-23 2013-10-31 Google Inc. Managing multi-reference picture buffers for video data coding
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9014266B1 (en) 2012-06-05 2015-04-21 Google Inc. Decimated sliding windows for multi-reference prediction in video coding
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US9344729B1 (en) 2012-07-11 2016-05-17 Google Inc. Selective prediction signal filtering
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
US9756331B1 (en) 2013-06-17 2017-09-05 Google Inc. Advance coded reference prediction
GB2516426B (en) * 2013-07-17 2015-10-07 Gurulogic Microsystems Oy Encoder, decoder and method of operation using interpolation
CA2916892A1 (en) * 2013-07-22 2015-01-29 Sony Corporation Information processing apparatus and method
US11425395B2 (en) 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
US9392288B2 (en) 2013-10-17 2016-07-12 Google Inc. Video coding using scatter-based scan tables
US9179151B2 (en) 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
US10236906B2 (en) 2013-10-22 2019-03-19 Schlumberger Technology Corporation Compression and timely delivery of well-test data
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9392272B1 (en) 2014-06-02 2016-07-12 Google Inc. Video coding using adaptive source variance based partitioning
US9578324B1 (en) 2014-06-27 2017-02-21 Google Inc. Video coding using statistical-based spatially differentiated partitioning
US10102613B2 (en) 2014-09-25 2018-10-16 Google Llc Frequency-domain denoising
US10462480B2 (en) * 2014-12-31 2019-10-29 Microsoft Technology Licensing, Llc Computationally efficient motion estimation
US9787332B2 (en) * 2015-09-15 2017-10-10 Intel Corporation Error-checking compressed streams in heterogeneous compression accelerators
TWI546779B (zh) 2015-11-06 2016-08-21 財團法人工業技術研究院 串流資料的編碼排程方法、裝置與電腦可讀取媒體
US10334276B2 (en) * 2015-12-28 2019-06-25 Ati Technologies Ulc Method and apparatus for determining the severity of corruption in a picture
US9794574B2 (en) 2016-01-11 2017-10-17 Google Inc. Adaptive tile data size coding for video and image compression
US10542258B2 (en) 2016-01-25 2020-01-21 Google Llc Tile copying for video compression
KR101742258B1 (ko) 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
KR101895294B1 (ko) * 2017-03-03 2018-09-05 주식회사 칩스앤미디어 프리 스캔을 이용한 블록 기반 동영상 복호화 방법 및 그 장치
US10326994B2 (en) * 2017-08-15 2019-06-18 Google Llc Modifying a scan order to limit scan distance
CN107846263B (zh) * 2017-11-01 2020-07-14 南京莱斯电子设备有限公司 一种基于分段计算的信源二进制算术编码方法和编码系统
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
CN108230487A (zh) * 2017-12-21 2018-06-29 上海新案数字科技有限公司 共享摄像头资源的方法及设备
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
US11212520B2 (en) * 2018-12-04 2021-12-28 Ati Technologies Ulc Region-based reference frame management
EP3700210A1 (en) 2019-02-21 2020-08-26 Ateme Method and apparatus for image encoding
EP3713235B1 (en) * 2019-03-19 2023-08-02 Axis AB Methods and devices for encoding a video stream using a first and a second encoder
CN113795861B (zh) * 2019-05-05 2024-08-02 浙江宇视科技有限公司 发送端和接收端的隐私保护方法、电子设备、以及计算机可读存储介质
CN110582022B (zh) * 2019-09-27 2022-12-30 腾讯科技(深圳)有限公司 视频编解码方法和装置及存储介质
KR102153661B1 (ko) * 2019-11-29 2020-09-08 국방과학연구소 위성탑재용 영상레이더 및 위성탑재용 영상레이더의 텔레메트리 데이터 축소 방법
KR20210136476A (ko) 2020-05-07 2021-11-17 삼성전자주식회사 쿼드 트리 방법의 파라미터들을 이용하여 압축하는 장치 및 방법
EP3962091B1 (en) * 2020-08-26 2024-08-28 Tata Consultancy Services Limited Methods and systems for maintaining quality of experience in real-time live video streaming
US12120296B2 (en) 2021-03-23 2024-10-15 Tencent America LLC Method and apparatus for video coding
CN115881140A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 编解码方法、装置、设备、存储介质及计算机程序产品
US12113996B2 (en) * 2021-12-06 2024-10-08 Tencent America LLC Arrangement of adaptive loop filter coefficients for fast vectorized transpositions
CN114640853B (zh) * 2022-05-18 2022-07-29 滨州市人防工程与指挥保障中心 一种无人机巡航图像处理系统
CN115865099B (zh) * 2022-12-01 2024-04-16 河南大学 基于霍夫曼编码的多类型数据分段压缩方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5461423A (en) * 1992-05-29 1995-10-24 Sony Corporation Apparatus for generating a motion vector with half-pixel precision for use in compressing a digital motion picture signal
US6072831A (en) * 1996-07-03 2000-06-06 General Instrument Corporation Rate control for stereoscopic digital video encoding
US6125144A (en) * 1996-03-08 2000-09-26 Oki Electric Industry Co., Ltd. Picture coding method and picture coder
CN1333634A (zh) * 2001-01-12 2002-01-30 北京航空航天大学 快速视频运动估计方法

Family Cites Families (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60186179A (ja) * 1984-03-06 1985-09-21 Nec Corp 画像信号の予測符号化方式とその装置
JPS6192073A (ja) 1984-10-12 1986-05-10 Hitachi Ltd 画像デ−タ圧縮方式
DE3629472A1 (de) * 1986-08-29 1988-03-03 Licentia Gmbh Verfahren zur bewegungskompensierten bild-zu-bild-praediktionscodierung
ATE74219T1 (de) * 1987-06-02 1992-04-15 Siemens Ag Verfahren zur ermittlung von bewegungsvektorfeldern aus digitalen bildsequenzen.
US6563875B2 (en) 1987-12-30 2003-05-13 Thomson Licensing S.A. Adaptive method of encoding and decoding a series of pictures by transformation, and devices for implementing this method
JP2743434B2 (ja) 1989-02-17 1998-04-22 日本ビクター株式会社 動き補償フレーム間予測符号化回路
JPH02272970A (ja) 1989-04-14 1990-11-07 Sony Corp データ処理回路
US5091782A (en) * 1990-04-09 1992-02-25 General Instrument Corporation Apparatus and method for adaptively compressing successive blocks of digital video
DE69029999T2 (de) * 1990-07-20 1997-08-14 Philips Electronics Nv Vorrichtung zur Verarbeitung von Bewegungsvektoren
SE469866B (sv) 1991-04-12 1993-09-27 Dv Sweden Ab Metod för estimering av rörelseinnehåll i videosignaler
EP0533195A2 (en) * 1991-09-20 1993-03-24 Sony Corporation Picture signal encoding and/or decoding apparatus
JP3263960B2 (ja) * 1991-10-22 2002-03-11 ソニー株式会社 動きベクトル符号器および復号器
US5442458A (en) 1991-12-18 1995-08-15 Eastman Kodak Company Method and associated apparatus for encoding bitplanes for improved coding efficiency
US5289276A (en) 1992-06-19 1994-02-22 General Electric Company Method and apparatus for conveying compressed video data over a noisy communication channel
US5377018A (en) * 1992-06-22 1994-12-27 Media Vision Video compression and decompression using block selection and subdivision
US5365280A (en) * 1992-06-26 1994-11-15 U.S. Philips Corporation Method and apparatus for discriminating between movie film and non-movie film and generating a picture signal processing mode control signal
US5371841A (en) 1992-07-31 1994-12-06 Eastman Kodak Company Progressive bit plane reconstruction method
US5717394A (en) 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5586285A (en) 1993-02-19 1996-12-17 Intel Corporation Method and circuitry for increasing reserve memory in a solid state memory disk
US6327304B1 (en) 1993-05-12 2001-12-04 The Duck Corporation Apparatus and method to digitally compress video signals
US6181822B1 (en) 1993-05-12 2001-01-30 The Duck Corporation Data compression apparatus and method
FI94306C (fi) 1993-07-15 1995-08-10 Nokia Technology Gmbh Menetelmä televisiokuvan pienten kuvasegmenttien liikevektoreiden määrittämiseksi
US5398068A (en) * 1993-09-02 1995-03-14 Trustees Of Princeton University Method and apparatus for determining motion vectors for image sequences
JPH07135660A (ja) 1993-11-12 1995-05-23 Matsushita Electric Ind Co Ltd 動きベクトル符号化装置
US5999641A (en) 1993-11-18 1999-12-07 The Duck Corporation System for manipulating digitized image objects in three dimensions
KR100213018B1 (ko) 1994-07-30 1999-08-02 윤종용 동화상 부호화장치
US5706059A (en) * 1994-11-30 1998-01-06 National Semiconductor Corp. Motion estimation using a hierarchical search
EP0721287A1 (en) * 1995-01-09 1996-07-10 Daewoo Electronics Co., Ltd Method and apparatus for encoding a video signal
DE69619002T2 (de) * 1995-03-10 2002-11-21 Kabushiki Kaisha Toshiba, Kawasaki Bildkodierungs-/-dekodierungsvorrichtung
JPH08275160A (ja) * 1995-03-27 1996-10-18 Internatl Business Mach Corp <Ibm> 離散余弦変換方法
KR0178198B1 (ko) 1995-03-28 1999-05-01 배순훈 영상 신호 부호화 장치
WO1996033558A1 (en) 1995-04-18 1996-10-24 Advanced Micro Devices, Inc. Method and apparatus for hybrid vlc bitstream decoding
US5812197A (en) * 1995-05-08 1998-09-22 Thomson Consumer Electronics, Inc. System using data correlation for predictive encoding of video image data subject to luminance gradients and motion
US5936673A (en) * 1995-05-26 1999-08-10 Intel Corporation Temporal tile staggering for block based video compression
JP3364074B2 (ja) 1995-06-05 2003-01-08 株式会社リコー ビットプレーン符号化装置
US5568200A (en) 1995-06-07 1996-10-22 Hitachi America, Ltd. Method and apparatus for improved video display of progressively refreshed coded video
JP3618833B2 (ja) 1995-07-14 2005-02-09 キヤノン株式会社 画像処理装置及び方法
KR0153671B1 (ko) * 1995-06-30 1998-11-16 배순훈 고선명 텔레비젼 엔코더의 레이트 콘트롤러
MY121607A (en) * 1995-07-10 2006-02-28 Hyundai Curitel Inc Grid moving method of object image and apparatus using the same and compaction/motion estimation method using the same and apparatus thereof
JPH11513205A (ja) 1995-07-11 1999-11-09 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) ビデオ符号化装置
EP1274254B1 (en) * 1995-08-29 2011-07-06 Sharp Kabushiki Kaisha Video coding device and video decoding device with a motion compensated interframe prediction
US5835138A (en) 1995-08-30 1998-11-10 Sony Corporation Image signal processing apparatus and recording/reproducing apparatus
JP3068002B2 (ja) 1995-09-18 2000-07-24 沖電気工業株式会社 画像符号化装置、画像復号化装置及び画像伝送システム
GB9519923D0 (en) * 1995-09-29 1995-11-29 Philips Electronics Nv Motion estimation for predictive image coding
JPH09102954A (ja) 1995-10-04 1997-04-15 Matsushita Electric Ind Co Ltd 1つまたは2つの予測ブロックからブロックの画素値を計算する方法
KR0181069B1 (ko) 1995-11-08 1999-05-01 배순훈 움직임 추정장치
GB2308262B (en) 1995-12-16 1999-08-04 Paul Gordon Wilkins Method for analysing the content of a video signal
KR100197368B1 (ko) * 1995-12-23 1999-06-15 전주범 영상 에러 복구 장치
US5912676A (en) 1996-06-14 1999-06-15 Lsi Logic Corporation MPEG decoder frame memory interface which is reconfigurable for different frame store architectures
US5926226A (en) * 1996-08-09 1999-07-20 U.S. Robotics Access Corp. Method for adjusting the quality of a video coder
US6075875A (en) 1996-09-30 2000-06-13 Microsoft Corporation Segmentation of image features using hierarchical analysis of multi-valued image data and weighted averaging of segmentation results
JP3967405B2 (ja) * 1996-10-09 2007-08-29 テキサス インスツルメンツ インコーポレイテツド 画像信号の符号化方法
US7453490B2 (en) * 1997-01-31 2008-11-18 Gyrus Acmi, Inc. Correction of image signals characteristic of non-uniform images in an endoscopic imaging system
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5991447A (en) * 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6385341B1 (en) 1997-04-17 2002-05-07 Microsoft Corporation Technique for decoding variable length data codes
JP3351705B2 (ja) * 1997-04-25 2002-12-03 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び記録媒体への記録方法
DE19721728C2 (de) 1997-05-24 2001-07-12 Byk Chemie Gmbh Dispergiermittel für Pigmente oder Füllstoffe auf der Basis von Acrylsäurealkylester-Polymeren, Verwendung und Verfahren zur Herstellung
JP3381827B2 (ja) * 1997-06-04 2003-03-04 富士ゼロックス株式会社 カラー画像符号化装置およびカラー画像復号装置
US6359929B1 (en) * 1997-07-04 2002-03-19 Matsushita Electric Industrial Co., Ltd. Image predictive decoding method, image predictive decoding apparatus, image predictive coding apparatus, and data storage medium
DE19730305A1 (de) 1997-07-15 1999-01-21 Bosch Gmbh Robert Verfahren zur Erzeugung eines verbesserten Bildsignals bei der Bewegungsschätzung von Bildsequenzen, insbesondere eines Prädiktionssignals für Bewegtbilder mit bewegungskompensierender Prädiktion
KR100244291B1 (ko) * 1997-07-30 2000-02-01 구본준 동영상 움직임 벡터 코딩 방법
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
EP0953254B1 (en) * 1997-11-17 2006-06-14 Koninklijke Philips Electronics N.V. Motion-compensated predictive image encoding and decoding
JP2891253B1 (ja) * 1997-12-10 1999-05-17 日本電気株式会社 画像圧縮処理装置
KR100523908B1 (ko) * 1997-12-12 2006-01-27 주식회사 팬택앤큐리텔 격행주사 영상에 대한 영상신호 부호화 장치 및 그 방법
US5903382A (en) 1997-12-19 1999-05-11 Rockwell International Corporation Electrodeposition cell with high light transmission
US6501860B1 (en) * 1998-01-19 2002-12-31 Canon Kabushiki Kaisha Digital signal coding and decoding based on subbands
KR100328417B1 (ko) * 1998-03-05 2002-03-16 마츠시타 덴끼 산교 가부시키가이샤 화상부호화장치및화상복호화장치, 화상부보화방법 및 화상복호화방법, 및 데이터기억매체
JP3856262B2 (ja) 1998-03-09 2006-12-13 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び動き補償符号記録媒体
JPH11289544A (ja) 1998-04-02 1999-10-19 Sony Corp 動き検出装置およびその方法
JP3553363B2 (ja) 1998-04-03 2004-08-11 京セラミタ株式会社 デジタル画像読取装置
JPH11341496A (ja) * 1998-05-28 1999-12-10 Matsushita Electric Ind Co Ltd 画像処理方法,画像処理装置,及びデータ記憶媒体
US6411651B1 (en) 1998-06-26 2002-06-25 Compaq Information Technologies Group, L.P. Method and system for distributed video compression in personal computer architecture
JP3808241B2 (ja) * 1998-07-17 2006-08-09 富士写真フイルム株式会社 データ圧縮方法および装置並びに記録媒体
JP3606306B2 (ja) * 1998-10-08 2005-01-05 沖電気工業株式会社 画像符号化装置、画像復号化装置及び画像伝送システム
US20020141501A1 (en) * 1998-11-20 2002-10-03 Philips Electronics North America Corporation System for performing resolution upscaling on frames of digital video
US6570924B1 (en) * 1998-11-20 2003-05-27 Interval Research Corp Low cost video compression using fast, modified Z-coding of wavelet pyramids
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6389072B1 (en) * 1998-12-23 2002-05-14 U.S. Philips Corp. Motion analysis based buffer regulation scheme
JP3660513B2 (ja) 1998-12-25 2005-06-15 沖電気工業株式会社 画像通信装置およびローカルデコード処理方法
JP2002536746A (ja) 1999-02-01 2002-10-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 動画シーケンスを表す記述子とその記述子を使用する画像検索システム
US6400763B1 (en) * 1999-02-18 2002-06-04 Hewlett-Packard Company Compression system which re-uses prior motion vectors
US6222174B1 (en) 1999-03-05 2001-04-24 Hewlett-Packard Company Method of correlating immediately acquired and previously stored feature information for motion sensing
JP3302939B2 (ja) 1999-03-12 2002-07-15 アールシーエー トムソン ライセンシング コーポレイシヨン 独立に圧縮された偶数および奇数フィールド・データ用のビデオ信号圧縮解除装置
EP1035735A3 (en) * 1999-03-12 2007-09-05 Kabushiki Kaisha Toshiba Moving image coding and decoding apparatus optimised for the application of the Real Time Protocol (RTP)
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
US6381371B1 (en) 1999-03-17 2002-04-30 Hewlett-Packard Company Method and apparatus for processing image files
JP3591712B2 (ja) 1999-04-02 2004-11-24 松下電器産業株式会社 動画送信装置及び動画受信装置
WO2001010135A1 (en) * 1999-07-29 2001-02-08 Mitsubishi Denki Kabushiki Kaisha Moving vector detecting method
US6735249B1 (en) * 1999-08-11 2004-05-11 Nokia Corporation Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding
BR0014954A (pt) 1999-10-22 2002-07-30 Activesky Inc Sistema de vìdeo baseado em objetos
US6671319B1 (en) 1999-12-28 2003-12-30 Sony Corporation Methods and apparatus for motion estimation using neighboring macroblocks
JP2001203897A (ja) * 2000-01-18 2001-07-27 Nec Corp パタンマッチング符号化装置及び方法
JP2001251627A (ja) * 2000-03-03 2001-09-14 Matsushita Electric Ind Co Ltd 符号化装置、符号化方法及びプログラムを記録した記録媒体
JP3960451B2 (ja) 2000-03-06 2007-08-15 Kddi株式会社 シーン特性検出型動画像符号化装置
US6661925B1 (en) * 2000-03-22 2003-12-09 Board Of Supervisors Of Louisiana State University & Agricultural & Mechanical College Functional set compression
US6522784B1 (en) * 2000-04-11 2003-02-18 International Business Machines Corporation Enhanced compression of gray-level images
JP3677192B2 (ja) * 2000-04-19 2005-07-27 シャープ株式会社 画像処理装置
US6711211B1 (en) * 2000-05-08 2004-03-23 Nokia Mobile Phones Ltd. Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder
GB2403618A (en) 2000-05-10 2005-01-05 Picturetel Corp Video coding using multiple buffers
KR100708091B1 (ko) * 2000-06-13 2007-04-16 삼성전자주식회사 양방향 움직임 벡터를 이용한 프레임 레이트 변환 장치 및그 방법
JP2002010265A (ja) 2000-06-20 2002-01-11 Sony Corp 送信装置およびその方法と受信装置およびその方法
US6661842B1 (en) * 2000-09-22 2003-12-09 General Dynamics Decision Systems, Inc. Methods and apparatus for error-resilient video coding
JP4607305B2 (ja) * 2000-09-27 2011-01-05 株式会社東芝 映像符号化装置及び映像符号化方法
US9143546B2 (en) * 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7224840B2 (en) 2000-10-26 2007-05-29 International Business Machines Corporation Method, system, and program for error recovery while decoding compressed data
JP2002141806A (ja) 2000-10-31 2002-05-17 Hitachi Ltd 可変長符号復号装置
JP3699910B2 (ja) * 2000-10-31 2005-09-28 株式会社東芝 データ伝送装置、データ伝送方法及びプログラム
CN1237465C (zh) * 2001-01-10 2006-01-18 皇家菲利浦电子有限公司 编码
EP1360841A1 (en) * 2001-02-06 2003-11-12 Koninklijke Philips Electronics N.V. Preprocessing method applied to textures of arbitrarily shaped objects
US20030012287A1 (en) 2001-03-05 2003-01-16 Ioannis Katsavounidis Systems and methods for decoding of systematic forward error correction (FEC) codes of selected data in a video bitstream
KR20040035593A (ko) * 2001-03-07 2004-04-29 피티에스 코포레이션 모션 매칭을 위한 국부적 제약
JP2002271788A (ja) * 2001-03-08 2002-09-20 Monolith Co Ltd 画像符号化方法と装置および画像復号方法および装置
JP2002290743A (ja) 2001-03-23 2002-10-04 Ricoh Co Ltd 画像情報符号化方法、符号化装置、ディジタル複写機、ディジタルファクシミリ装置、及び、ディジタルファイリング装置
US6819803B2 (en) 2001-07-02 2004-11-16 International Business Machines Corporation Faster lossless rotation of JPEG images
JP2003046944A (ja) 2001-08-02 2003-02-14 Sony Corp 信号処理装置および方法、記録装置および方法、再生装置および方法、記録再生装置および方法、ビデオカメラ、ならびに、映像モニタ装置
FR2828614A1 (fr) * 2001-08-07 2003-02-14 Koninkl Philips Electronics Nv Methode de codage et de decodage video pour pallier les pertes de donnees dans un signal video code transmis sur un canal
DE60141961D1 (de) * 2001-09-10 2010-06-10 Texas Instruments Inc Verfahren und Vorrichtung zur Bewegungsvektorenabschätzung
KR100642043B1 (ko) 2001-09-14 2006-11-03 가부시키가이샤 엔티티 도코모 부호화 방법, 복호 방법, 부호화 장치, 복호 장치, 화상 처리 시스템, 및 저장 매체
US6856701B2 (en) * 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
FI112424B (fi) 2001-10-30 2003-11-28 Oplayo Oy Koodausmenetelmä ja -järjestely
SG152047A1 (en) 2002-01-18 2009-05-29 Toshiba Kk Video encoding method and apparatus and video decoding method and apparatus
JP3864098B2 (ja) 2002-02-08 2006-12-27 日本電信電話株式会社 動画像符号化方法、動画像復号方法、及びこれらの方法の実行プログラムとこれらの実行プログラムを記録した記録媒体
US20030161398A1 (en) * 2002-02-21 2003-08-28 Meir Feder Improving static picture quality in compressed video
US7596179B2 (en) 2002-02-27 2009-09-29 Hewlett-Packard Development Company, L.P. Reducing the resolution of media data
PT1486065E (pt) 2002-03-15 2016-03-30 Nokia Technologies Oy Método para codificação de movimento numa sequência de vídeo
WO2003084235A1 (en) 2002-03-28 2003-10-09 British Telecommunications Public Limited Company Video pre-processing
US7110459B2 (en) * 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7116831B2 (en) * 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
JP4355156B2 (ja) 2002-04-16 2009-10-28 パナソニック株式会社 画像復号化方法及び画像復号化装置
JP4102973B2 (ja) * 2002-04-24 2008-06-18 日本電気株式会社 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
PT1467491E (pt) 2002-05-02 2007-03-30 Fraunhofer Ges Forschung Codificação aritmética de coeficientes de transformação
MXPA05000335A (es) * 2002-07-09 2005-03-31 Nokia Corp Metodo y sistema para seleccionar tipo de filtro de interpolacion en codificacion de video.
WO2004008733A2 (en) 2002-07-15 2004-01-22 Nokia Corporation Method for error concealment in video sequences
KR100865034B1 (ko) * 2002-07-18 2008-10-23 엘지전자 주식회사 모션 벡터 예측 방법
US7068722B2 (en) 2002-09-25 2006-06-27 Lsi Logic Corporation Content adaptive video processor using motion compensation
US20040120398A1 (en) * 2002-12-19 2004-06-24 Ximin Zhang System and method for adaptive field and frame video encoding using rate-distortion characteristics
US20040131117A1 (en) * 2003-01-07 2004-07-08 Sheraizin Vitaly S. Method and apparatus for improving MPEG picture compression
WO2004064373A2 (en) * 2003-01-09 2004-07-29 The Regents Of The University Of California Video encoding methods and devices
JP4419458B2 (ja) * 2003-07-14 2010-02-24 リコープリンティングシステムズ株式会社 インクジェットヘッドの製造方法
JP4198608B2 (ja) 2004-01-15 2008-12-17 株式会社東芝 補間画像生成方法および装置
US20050271186A1 (en) 2004-06-02 2005-12-08 Audiopoint, Inc. System, method and computer program product for interactive voice notification
JP4852868B2 (ja) 2005-04-04 2012-01-11 トヨタ自動車株式会社 精密加工方法
JP4662171B2 (ja) 2005-10-20 2011-03-30 ソニー株式会社 符号化装置および方法、復号化装置および方法、プログラム、並びに記録媒体
CN104125464A (zh) 2005-12-08 2014-10-29 维德约股份有限公司 用于视频通信系统中的差错弹性和随机接入的系统和方法
US7924925B2 (en) 2006-02-24 2011-04-12 Freescale Semiconductor, Inc. Flexible macroblock ordering with reduced data traffic and power consumption
US9300956B2 (en) 2006-04-20 2016-03-29 Thomson Licensing Method and apparatus for redundant video encoding
US8488915B2 (en) 2006-05-01 2013-07-16 Georgia Tech Research Corporation Automatic video quality measurement system and method based on spatial-temporal coherence metrics
US20080170793A1 (en) 2007-01-12 2008-07-17 Mitsubishi Electric Corporation Image encoding device and image encoding method
US20090103635A1 (en) 2007-10-17 2009-04-23 Peshala Vishvajith Pahalawatta System and method of unequal error protection with hybrid arq/fec for video streaming over wireless local area networks
CN101414348A (zh) 2007-10-19 2009-04-22 三星电子株式会社 多角度人脸识别方法和系统
US8130823B2 (en) 2007-12-19 2012-03-06 Broadcom Corporation Channel adaptive video transmission system for use with layered video coding and methods for use therewith
AU2008259744B2 (en) 2008-12-18 2012-02-09 Canon Kabushiki Kaisha Iterative DVC decoder based on adaptively weighting of motion side information
CA2824754A1 (en) 2009-09-26 2011-03-31 Disternet Technology Inc. System and method for micro-cloud computing
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
US8249361B1 (en) 2010-04-22 2012-08-21 Google Inc. Interdependent learning of template map and similarity metric for object identification
US20120082225A1 (en) 2010-10-01 2012-04-05 Qualcomm Incorporated Selective indication of transform sizes
RU2010140334A (ru) 2010-10-01 2012-04-10 ЭлЭсАй Корпорейшн (US) Внутрикадровое режимное предсказание для видеотранскодера
US8749565B2 (en) 2010-11-19 2014-06-10 Apple Inc. Error check-only mode
US8630341B2 (en) 2011-01-14 2014-01-14 Mitsubishi Electric Research Laboratories, Inc. Method for training and utilizing separable transforms for video coding
JP2014522506A (ja) 2011-05-28 2014-09-04 イグニス・イノベイション・インコーポレーテッド ディスプレイのピクセルの速い補償プログラミングためのシステムと方法
US8775672B2 (en) 2012-06-13 2014-07-08 Hulu, LLC Architecture for simulation of network conditions for video delivery

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5461423A (en) * 1992-05-29 1995-10-24 Sony Corporation Apparatus for generating a motion vector with half-pixel precision for use in compressing a digital motion picture signal
US6125144A (en) * 1996-03-08 2000-09-26 Oki Electric Industry Co., Ltd. Picture coding method and picture coder
US6072831A (en) * 1996-07-03 2000-06-06 General Instrument Corporation Rate control for stereoscopic digital video encoding
CN1333634A (zh) * 2001-01-12 2002-01-30 北京航空航天大学 快速视频运动估计方法

Also Published As

Publication number Publication date
JP2014099905A (ja) 2014-05-29
US20200236357A1 (en) 2020-07-23
KR101167006B1 (ko) 2012-07-27
US20120320992A1 (en) 2012-12-20
US11240498B2 (en) 2022-02-01
US20120320989A1 (en) 2012-12-20
JP5480775B2 (ja) 2014-04-23
CN101454990A (zh) 2009-06-10
KR101118456B1 (ko) 2012-03-22
JP2007520912A (ja) 2007-07-26
KR20060025528A (ko) 2006-03-21
JP5341024B2 (ja) 2013-11-13
KR101133321B1 (ko) 2012-07-02
KR101131689B1 (ko) 2012-04-23
US20220132116A1 (en) 2022-04-28
US20120320991A1 (en) 2012-12-20
KR20110028562A (ko) 2011-03-18
KR20110028561A (ko) 2011-03-18
CN103037214A (zh) 2013-04-10
JP5606591B2 (ja) 2014-10-15
JP2013211908A (ja) 2013-10-10
CA2525390A1 (en) 2004-11-25
KR101140947B1 (ko) 2012-07-03
KR20110028564A (ko) 2011-03-18
US8942290B2 (en) 2015-01-27
WO2004102946A3 (en) 2009-01-22
US20040228410A1 (en) 2004-11-18
US10616576B2 (en) 2020-04-07
US20120320978A1 (en) 2012-12-20
KR20110028560A (ko) 2011-03-18
JP4568887B2 (ja) 2010-10-27
JP2010239640A (ja) 2010-10-21
WO2004102946A2 (en) 2004-11-25
US20120320987A1 (en) 2012-12-20
KR20110028563A (ko) 2011-03-18
US8824553B2 (en) 2014-09-02
KR101118438B1 (ko) 2012-03-13
JP2011050090A (ja) 2011-03-10
EP1656791A2 (en) 2006-05-17
CA2525390C (en) 2014-07-15

Similar Documents

Publication Publication Date Title
CN101454990B (zh) 视频压缩方法
CN102150428B (zh) 用于使用自适应分段的视频编码的系统和方法
CN100362863C (zh) 在视频编码器中选择宏块量化参数的方法和装置
CN105049864A (zh) 根据像素分类使用偏移调整的视频解码方法及其设备
CN103238334A (zh) 图像帧内预测方法和设备
CN107864380A (zh) 基于dct的3d‑hevc快速帧内预测决策方法
US20070140576A1 (en) Data processing apparatus, the method and coding apparatus
CN105103546A (zh) 编码多个输入图像的方法及装置、存放程序的存储介质
CN103260090B (zh) 一种用于p2p三维流媒体系统中的视频段调度及传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ON2 TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: ON2 TECHNOLOGIES

Effective date: 20101227

Owner name: GOOGLE INC.

Free format text: FORMER OWNER: ON2 TECHNOLOGY CO., LTD.

Effective date: 20101227

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: NEW YORK, USA TO: CALIFORNIA, USA

TA01 Transfer of patent application right

Effective date of registration: 20101227

Address after: California, USA

Applicant after: GOOGLE Inc.

Address before: California, USA

Applicant before: ON2 Technologies Ltd.

Effective date of registration: 20101227

Address after: California, USA

Applicant after: ON2 Technologies Ltd.

Address before: American New York

Applicant before: On2 Technologies

C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Google Inc.

Address before: California, USA

Patentee before: Google Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20120905