CN101409835B - 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 - Google Patents
利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 Download PDFInfo
- Publication number
- CN101409835B CN101409835B CN200810087854.2A CN200810087854A CN101409835B CN 101409835 B CN101409835 B CN 101409835B CN 200810087854 A CN200810087854 A CN 200810087854A CN 101409835 B CN101409835 B CN 101409835B
- Authority
- CN
- China
- Prior art keywords
- value
- lagrange multiplier
- quantizer
- values
- video image
- 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 - Fee Related
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种在视频编码器中通过模式选择来控制速率-失真折中的方法和装置。本发明的***首先在期望的失真值附近选择失真值D。接下来,该***利用选定的失真值D确定量化器值Q。该***然后利用量化器值Q计算拉格朗日乘子lambda。利用选定的拉格朗日乘子lambda和量化器值Q,该***开始对象素模块进行编码。如果***检测到潜在的缓存区溢出,则该***将增加拉格朗日乘子lambda。如果拉格朗日乘子lambda超过最大的lambda阈值,则***将增加量化器值Q。如果***检测到潜在的缓存区下溢,则***将减小拉格朗日乘子lambda。如果拉格朗日乘子lambda降到最小的lambda阈值以下,则***将减小量化器值Q。
Description
技术领域
本发明涉及多媒体压缩和编码***领域。本发明尤其公开了用于控制数字视频编码器中速率-失真折中的方法和***。
背景技术
基于数字的电子介质格式正在完全取代传统的模拟电子介质格式。在音频领域,多年前数字压缩盘(CD)取代了模拟乙烯树脂唱片。模拟的盒式磁带也变得愈加稀少。第二和第三代数字音频***诸如基于小型磁盘和mp3(MPEG音频-层3)的格式正同第一代数字音频格式的压缩盘夺取市场份额。
基于数字的静态摄影正迅速地取代基于胶片的静态摄影。通过因特网为用户提供了具有不可抗拒的特点的图像的及时利用性以及图像分配。
然而,视频领域向数字存储和传输格式发展的速度要比音频和静态摄影的发展速度慢。这主要是由于以数字格式精确表示视频需要大量的数字信息。精确表示视频所需的大量数字信息需要非常高容量的数字存储***和高带宽的传输***。
但是视频领域最终采用数字存储和传输格式。更快的计算机处理器、高密度的存储***、高带宽的光传输线以及新的高效视频编码算法最终使得数字视频***在消费价格方面变得实用。DVD(数字通用光盘)、数字视频***已经成为销售最快的消费电子产品之一。由于其杰出的视频质量、高质量的5.1信道数字音频、便利以及其它特点,DVD已经迅速代替了录像机(VCR),成为选择的预先录制视频重放***。在视频传输***领域,过时的模拟NTSC(国家电视标准委员会)视频传输标准最终由使用数字压缩和编码技术的数字ATSC(高级电视标准委员会)视频传输***所代替。
多年来,计算机***已经使用各种不同的数字视频编码格式。由计算机***使用的最好的数字视频压缩和编码***是公知的由其缩写为MPEG的运动图像专家组支持的数字视频***。MPEG的三种最公知并且使用率非常高的数字视频格式是已知简单的MPEG-1、MPEG-2和MPEG-4。视频CD以及用户标准数字视频编辑***使用早期的MPEG-1格式。数字通用光盘(DVD)以及碟形网络牌(Dish Network brand)直播***广播***(DBS)使用MPEG-2数字视频压缩和编码***。基于最新计算机的数字视频编码器和相关的数字视频播放器正迅速地采用了MPEG-4编码***。
MPEG-2和MPEG-4标准对一系列视频帧或视频字段进行压缩,然后将压缩的帧或字段编译成数字比特流。必须严密监控数字比特流的速率,以使其不溢出缓存区、不下溢出缓存区或不超出传输信道容量。因此,必须使复杂的速率控制***与数字视频编码器一起应用,所述的数字视频编码器在分配信道容量中提供了尽可能最好的图像质量,而不溢出或下溢缓存区。
发明内容
本发明公开了一种在视频编码器中通过模式选择来控制速率-失真折中的方法和装置。本发明的***首先在期望的失真值附近选择失真值D。接下来,该***利用选定的失真值D确定量化器值Q。该***然后利用量化器值Q计算拉格朗日乘子lambda。利用选择的拉格朗日乘子lambda和量化器值Q,该***开始对象素模块进行编码。
如果***检测到潜在的缓存区溢出,则该***将增加拉格朗日乘子lambda。当缓存区的占有率值超过溢出阈值时,可以检测到潜在的缓存区溢出。如果拉格朗日乘子lambda超过最大的lambda阈值,则***将增加量化器值Q。
如果***检测到潜在的缓存区下溢,则***将减小拉格朗日乘子lambda。当缓存区的占有率值降到缓存区下溢阈值以下时,可以检测到潜在的缓存区下溢。如果拉格朗日乘子lambda降到最小的lambda阈值以下,则***将减小量化器值Q。
通过附图以及下列的详细描述,本发明的其它目的、特点以及优点将会显而易见。
附图说明
通过下面的详细描述,本发明的目的、特点以及优点对本领域的技术人员来讲将会是显而易见的,其中:
图1描述的是一个可能的数字视频编码***的高级框图;
图2描述的是一系列将要显示的视频图片,其中连接不同图片的箭头表示利用运动补偿生成的交互图片的相关性;
图3表示将图2中的视频图片重新排列得到的优选传输顺序的视频图片,其中连接不同图片的箭头表示利用运动补偿生成的交互图片的相关性;
图4描述的是一族R、D曲线,每个曲线对应量化器Q的每个不同的值。
具体实施方式
本发明公开了在视频编码器中通过模式选择来控制速率-失真折中的模式。在下列的描述中,为了便于解释,提出具体的术语来提供对本发明的完整的理解。然而,对本领域技术人员来讲显而易见的是:为了实施本发明并不需要这些具体的细节。例如,参照MPEG-4部分10(H.264)多媒体压缩和编码***对本发明进行了描述。但是,相同的技术可以很容易地应用到其它类型的压缩和编码***。
多媒体压缩和编码综述
图1描述的是现有技术中公知的典型的数字视频编码器100的高级框图。数字视频编码器100接收位于框图左方的输入视频流105。每个视频帧由离散余弦转换(DCT)单元110进行处理。可以对视频帧独立进行处理(帧内)或者利用运动估计单元160参照来自其它帧(帧间)的信息对其进行处理。然后量化器(Q)单元120对来自离散余弦转换(DCT)单元110的信息进行量化。然后通过熵编码器(H)180对量化的帧进行编码以生成编码的视频比特流。
由于参照其它附近的视频帧来确定帧间编码的视频帧,数字视频编码器100需要对参考的数字视频帧如何真正出现在数字视频解码器内进行拷贝,以使得可以对帧间进行编码。因而,数字视频编码器100的下部实际上是数字视频解码器。特别地,反向量化器(Q-1)130使帧信息的量化反转,并且反向离散余弦变换(DCT-1)单元140使视频帧信息的离散余弦变换反转。毕竟DCT系数是从反向离散余弦变换重建的,运动补偿单元将利用该信息连同运动向量来重建视频帧,其中该视频帧可以作为用于其它视频帧的运动估计的参考视频帧。
解码的视频帧可以用来对帧间进行编码,所述的帧间是相对于解码的视频帧中的信息定义的。特别地,运动补偿(MC)单元150以及运动估计(ME)单元160用来确定运动向量并产生用作对帧间进行编码的微分值。
速率控制器190接收数字视频编码器100中来自许多不同部件的信息,并利用该信息为每个将被编码的视频帧分配比特预算。以能产生最高质量的数字比特流的方式分配比特预算,所述的比特流遵守特定的一套限定。特别地,速率控制器190试图产生最高质量的压缩视频流而不溢出缓存区(以比视频帧信息被显示并随后被删除更快的速度来发送视频帧信息的方式来超过可利用的缓存区的量)或下溢缓存区(发送的视频帧信息不够快以使得正接收的数字视频解码器用完了显示的视频帧信息)。
象素模块编码
许多数字视频编码算法首先将每个视频图像分割成通常被称作象素模块的小的象素子集。特别地,视频图像被分成矩形象素模块网格。术语宏块(macroblock)、块、子块也通常用于象素子集。本文档将使用术语象素模块来包括所有这些不同但相似的概念。不同尺寸的象素模块可以由不同的数字视频编码***使用。例如,所使用的不同的象素模块尺寸包括8×8象素模块、8×4象素模块、16×16象素模块、4×4象素模块等。
为了编码视频图像,使用某种编码方法对视频图像的每个独立的象素模块进行编码。不用参照任何其它象素模块就可对有些被称作内部模块的象素模块进行编码。利用诸如运动补偿的某种预测的编码方法对其它的象素模块进行编码,其中所述的运动补偿参考在相同或不同的视频图像中的最接近地匹配的象素模块。
对视频图像中的每个独立的象素模块独立进行压缩和编码。一些视频编码标准,例如ISO MPEG或ITU.264,使用不同类型的预测象素模块来编码数字视频图像。在一个方案中,象素模块可以是以下3种类型之一:
1、I象素模块——内部(I)象素模块,在其编码中不使用任何其它视频图像的信息(因而,内部象素模块宽全是自定义的);
2、P象素模块——单向的预测(P)象素模块参考来自于较早视频图像的图像信息;或
3、B象素模块——双向的预测(B)象素模块,其利用较早视频图像或稍后的视频图像的信息。
如果编码的数字视频图像中的所有象素模块是内部象素模块(I象素模块),则编码的数字视频图像帧称作帧内。注意帧内并不参考任何其它视频图像,使得帧内数字视频图像完全自定义。
如果数字视频图像帧只包括单向预测象素模块(P象素模块)以及内部象素模块(I象素模块)但不包括双向的预测象素模块(B象素模块),则该视图像称作P帧。当使用预测的编码(P象素模块编码)比独立编码象素模块(I象素模块)需要更多的比特时,I象素模块可以出现在P帧中。
如果数字视频图像帧包括任何双向预测象素模块(B象素模块),则视频图像帧称作B帧。为了简化,本申请将考虑到在给定的图像区域内所有的象素模块都是相同类型的情形。(帧内只包括I象素模块,P帧只包括P象素模块,B帧只包括B象素模块。)
将要被编码的视频图像的序列的例子可以表示为:
I1B2B3B4P5B6B7B8B9P10B11P12B13I14……
其中如果数字视频图像帧是I帧、P帧或B帧则用字母I、P或B表示,并且数字下标表示在视频图像序列中的视频图像的拍摄顺序。拍摄顺序是摄影机记录视频图像的顺序,因而也是视频图像应该被显示的顺序(显示顺序)。
在图2中对前述的实施例的一系列视频图像进行了概念描述。参照附图2,箭头表示来自存储的图片的象素模块(在这种情况下为I帧或P帧)用在了其它数字视频图片(B帧和P帧)的运动补偿预测中。
参照附图2,没有来自于任何其它的视频图片的信息用在了第一视频图片帧、帧内视频图片I1的编码中。视频图像P5是P帧,其在编码中利用来自于前一个视频图像I1的视频信息,因此箭头从帧内视频图像I1绘制到P帧视频图像P5。在其编码中,视频图像B2、视频图像B3和视频图像B4全部都是利用来自视频图像I1和视频图像P5的信息,所以信息相关性箭头从视频图像I1和视频图像P5绘制到视频图像B2、视频图像B3和视频图像B4。
由于B帧视频图像利用来自于后面的视频图像(随后显示的图像)的信息,一组数字视频图像的传输顺序通常与数字视频图像的显示顺序不同。特别地,需用来构建其它视频图像的参考视频图像应当在由参考视频图像所决定的视频图像之前传输。因而,对于图2中的显示顺序,优选的传输顺序可以是:
I1P5B2B3B4P10B6B7B8B9P12B11I14B13……
图3描述的是图2中的视频图像的优选的传输顺序。图中的箭头表示来自于参考视频图像的象素模块(在这种情况下的I帧或P帧视频图像)用在了其它视频图像的运动补偿预测中(P帧和B帧视频图像)。
参照图3,传输***首先传输并不依赖任何其它视频帧的I帧I1。接下来,该***传输P帧视频图像P5,其只依赖先前传输的视频图像I1。接下来,即使视频图像B2在视频图像P5之前显示,该***在视频图像P5之后传输B帧视频图像B2。原因是当要解码并递交相关的视频图像B2时,数字视频解码器已经接收到、并解码了视频图像I1和视频图像P5中的解码相关的视频图像B2所必需的信息。同样,解码的视频图像I1和解码的视频图像P5准备用于解码并递交下两个相关的视频图像:相关的视频图像B3和相关的视频图像B4。
接收器/解码器***然后记录视频图像合适的显示顺序。在该项操作中,参考视频图像I1以及参考视频图像P5称作“存储的图像”。存储的图像用于重构其它的参考该存储的图像的相关的视频图像。(注意某些数字视频编码***也允许B帧用作存储图像。)
子母画面(P-picture)
子母画面的编码典型地利用了运动补偿(MC),其中为当前视频图像中的每个象素模块计算指向前一个视频图像中某个位置的运动向量(MV)。运动向量参考在参考视频图像中的接近匹配的象素模块。利用运动向量,预测象素模块可以通过转换上述的前一个视频图像中参考象素来形成。然后将子母画面中的实际的象素模块与预测象素模块之间的差异进行编码用于传输。然后用该差异来精确构建初始的象素模块。
每个运动向量也可以通过预测编码方法进行传输。例如,可以利用邻近的运动向量来形成运动向量预测。在这种情况下,实际运动向量与预测运动向量之间的差异然后被编码用于传输。然后将该差异用于生成来自于预测运动向量的实际运动向量。
双向画面(B-picture)
B帧中的每个B象素模块使用两个不同的运动向量:第一运动向量和第二运动向量,其中第一运动向量参考较早的视频图像中的象素模块,第二运动向量参考稍后的视频图像中的另一个象素模块。根据这两个运动向量,计算两个预测象素模块。利用某种函数将这两个预测象素模块联合在一起以形成最终预测象素模块。(可以对这两个象素模块一起简单地进行平均。)与P象素模块一样,B帧视频图像的实际期望的象素模块和最终预测象素模块之间的差异被编码用于传输。该象素模块差异然后用于精确重建初始的期望象素模块。
与P象素模块一样,B象素模块的每个运动向量(MV)也可以通过预测编码方法进行传输。特别地,可以利用邻近的运动向量的某种组合来形成预测运动向量。然后,实际运动向量与预测运动向量之间的差异被编码用于传输。然后利用该差异重新创造来自于预测的运动向量的实际运动向量。
然而,对于B象素模块,存在内插运动向量的机会,所述的运动向量来自于配置的或邻近存储的图像象素模块中的运动向量。这样的运动向量的内插是在数字视频编码器和数字视频解码器中执行的。(注意数字视频编码器一直包括数字视频解码器。)
在一些情况下,内插的运动向量足够好,不需对该内插的运动向量做任何类型的修正就可使用。在这样情况下,不需要发送运动向量数据。在ITU H.263以及H.264数字视频编码标准中,这称为“直接模式”。
该运动向量内插技术在来自于由摄影机生成的视频序列的一系列视频图像运作得尤其好,其中所述的摄影机缓慢地随动拍摄(panning)静态的背景。实际上,这样的运动向量内插足够好可以单独使用。特别地,这意味着对这些利用运动向量内插编码的B象素模块运动向量来讲不需要微分的运动向量信息来进行计算或传输。
象素模块编码
在每个视频图像内象素模块也可以以不同的方式进行编码。例如,可以将象素模块分成更小的子块,对每个子块计算并传输运动向量。子块的形状也可以不同,并且可以不一定是正方形。
在子母画面或双向画面内,如果在存储的参考的图像内没有找到接近匹配的象素模块,不用运动补偿就可以对一些象素模块进行高效的编码。这样的象素模块然后被编码为内部象素模块(I象素模块)。在双向画面中,利用单向运动补偿代替双向运动补偿可以对一些象素模块更好地进行编码。因此,根据最接近匹配的象素模块是否在较早的视频图像或较后的视频图像中找到,将那些象素模块编码为向前预测象素模块(P象素模块)或向后预测象素模块。
在传输之前,象素模块或子模快的预测错误典型地由正交转换诸如离散余弦转换或其近似值来进行转换。转换操作的结果是一组转换系数,其在数值上等于被转换的象素模块或者子模快中的象素个数。在接收器/解码器处,将接收到的转换系数进行反转换以恢复在解码中进一步用到的预测错误值。并不是所有的转换系数都需要传输为可接受的视频质量。根据可利用的传输比特率,一半或者有时多于一半的转换系数可以被删除和不传输。在解码器处,在反变换操作之前,被删除的系数值由0来代替。
而且,在传输之前,典型地对转换系数进行如图1所述的量化和熵编码。量化包括用可能值的有限子集来表示转换系数值,这降低了传输的精确度。而且,该量化经常使得小的转换系数值为0,因而进一步减小了被传输的转换系数值的数量。
在量化步骤中,每个转换系数值典型地由量化器步长Q进行分割并四舍五入为最接近的整数。例如,利用下列公式可将初始的转换系数C量化为量化的系数值Cq:
Co=(C+Q/2)/Q 截为整数。
在量化步骤之后,利用诸如霍夫曼编码的变长编码或算术编码对这些整数进行熵编码。由于许多转换系数值被截为0,由从量化和变长编码步骤将获得大量的压缩。
利用拉格朗日函数选择比特率和失真值
数字视频编码器必须在所有可能的编码方法(或编码模式)中确定最好的编码方法,以用于对视频图像中的每个象素模块进行编码。这种编码问题通常称作模式选择问题。许多特定的方法用在了不同的数字视频编码器的实施中以处理模式选择问题。转换系数删除、传输的转换系数的量化以及模式选择的结合使得用于传输的比特率R减少。然而,这些比特率R减少技术也导致解码的视频图像中的失真D。
理想地,当设计视频编码器时,人们愿意或者将比特率R固定为常量值并减小编码失真D或者将编码失真D固定为常量值同时减小比特率R。然而,特别是在象素模块级,比特率R和/或失真D值可以与期望的固定值具有相当大的差别,因而使得限定的最优化方法站不住脚。
然而可以做的是利用拉格朗日乘子将限定的最优化问题转化为无限定的最优化问题。因而,不是固定其中一个变量(比特率R或失真D)并最优化另一个变量,而是可以只最小化拉格朗日方程:
D+lambda×R
其中lambda是拉格朗日乘子。因而对于视频图像中的每个象素模块,编码器选择象素模块编码模式来最小化拉格朗日方程D+lambda×R。
理论上,通过重复利用所有可能的lambda值来实现对每个单独的视频图像的完全最优化,每个lambda生成{D,R}对。期望的比特率R(或失真D)、相应的失真D(或比特率R)以及lambda值都可以从其中得到。然后再一次利用该选定的lambda值将视频图像最终编码,其将会生成期望的结果。
实际上,对每个视频图像来讲,这种理想的方法通常太复杂并且太资源密集而不能执行。为了确定lambda、失真D和量化器Q之间近似的关系,通常的做法是以宽范围的lambda值,利用完整的最优化方法执行具有多个视频图像的许多初步的实验。
以宽范围的lambda值利用完整的最优化方法初步试验多个视频图像来确定lambda、失真D和量化器Q之间近似的关系。在这些实验中,在改变lambda拉格朗日乘子的同时保持量化器Q为常量通常是有利的。如果在每个实验中保持量化器Q为常量,最终结果是一族R、D曲线,一条曲线对应量化器Q的每个不同值。图4描述的是这样一族R、D曲线的一个实例。对于每个不同的常量Q曲线,在由lambda的某个值得到的特定的{R,D}点,曲线的斜率是(-lambda)。最佳的{R,D}关系是通过提取所有的R、D曲线的最小值来获得的。
此后,对于每个不同的量化器Q值,选定典型的lambda值诸如lambdaQ。例如,lambdaQ可以是在图4的Q+1和Q-1的交叉点之间的半路部分提供失真D值的值。用来选择典型的lambda值的其它方法包括lambdaQ=0.85Q2以及lambdaQ=0.85×2Q/3。对于多个双向画面,通常选定更大的lambdaQ值。因而,我们有
lambdaQ=f(Q)
DQ=g(Q) 从中可以获得Q=h(DQ)
然后为了编码带有期望的失真D的视频图像序列,可以首先找出最接近的DQ,从中可以获得Q=h(DQ)。然后,利用相应的lambdaQ=f(Q)对视频图像执行编码,这提供了失真DQ的最优的比特率R。
在许多应用中,作为结果的比特率R可能太大或太小,迫使使用速率控制以确保不发生缓存区溢出或缓存区下溢。和大多数速率控制算法一样,通常的方法是将量化器Q从象素模块改变为象素模块和/或从视频图像改变为视频图像。当编码器缓存区有可能变得太满(并可能溢出)的征兆时,增加量化器Q的值以减小比特率R。当编码器缓存区可能太空(并且将可能下溢)时,减小量化器Q的值以增加比特率R。
然而,量化器Q的值的改变可能导致比特率R的太大的变化。而且,量化器Q值的改变需要发信号到解码器,这增加了必须要传输到解码器的附加位的量。而且,改变量化器Q可能具有其它有关视频图像质量的影响诸如回路滤波。
为了获得期望的速率控制,改变量化器Q另一可选择的办法是改变拉格朗日乘子lambda。较小的拉格朗日乘子lambda值导致较大的比特率R(以及较小的失真D),同样地较大的拉格朗日乘子lambda值降低了比特率R(并增加失真D)。拉格朗日乘子lambda中的变化可以随意地细微,这与被数字化并编码的量化器Q中的变化相反,使得量化器Q只限定于某些值。在许多数字视频压缩与编码***中,包括所有的MPEG视频压缩与编码标准,并不是量化器Q的所有整数值都允许发送,在这种情况下比特率R的突然变化可以更显著。
当需要拉格朗日乘子lambda大于某个阈值lambda_max(Q)以得到某一比特率减小量时,量化器Q将增加,并且利用新增加的量化器Q值,拉格朗日乘子lambda将返回其名义上的值f(Q)。当需要拉格朗日乘子lambda小于某个阈值lambda_min(Q)以得到某一比特率增加时,量化器Q将减小,并且利用新减小的量化器Q,拉格朗日乘子lambda将返回其名义上的值f(Q)。
lambda_max(Q)和lambda_min(Q)的值是由图4中的比特率——失真关系上的交叉点来决定的。如果将D(lambda,Q)确定为当用拉格朗日乘子lambda和量化器步长Q编码时获得的失真,则操作关系为:
D(lambda_min(Q+1),Q+1)=D(lambda_max(Q),Q)
lambda_min(Q)<=f(Q)<=lambda_max(Q)
在以下的伪代码中对视频编码***的这样的速率控制算法的详细操作进行了阐述:
通常的比特率控制算法的变化可以包括编码器缓存区值的多种不同的阈值,由此如果编码器缓存区大大超过Tfull阈值,则不用等到拉格朗日乘子lambda超过其阈值就可以立即增加量化器Q。类似地,如果编码器缓存区显著低于Tempty阈值,则可以立即减小量化器Q。可替代地,如果编码器缓存区极大地超过Tfull阈值或者远没达到Tempty阈值,则可以增加deltalambda的步长。
Deltalambda和deltaQ的值可以随着量化器Q或随着视频图像类型(单一画面、子母画面或双向画面)而变化。而且,增加拉格朗日乘子lambda的操作可以由乘法来代替,其可以将拉格朗日乘子lambda改变某一百分量。例如,可以利用下列的增加lambda的操作的等式来改变拉格朗日乘子lambda:
Lambda=(1+deltalambda)×lambda
同样地,可以利用下列的等式进行减小lambda的操作
Lambda=(1-deltalambda)×lambda
这个简单的速率控制算法描述了用于该应用的不同的lambda。也设计了其它的更复杂的速率控制算法,并且这些其它的速率控制算法也可以得益于不同的拉格朗日乘子lambda。
视觉失真折中
不同的拉格朗日乘子lambda的另一个应用是在视觉失真标准的使用中。通常通过对原始的象素值和解码的象素值之间的平方误差进行求和来对失真D进行测量。然而,这种简单的失真测量方法并不能较好地调整视频图像中象素错误的实际的可见性。因而,这样简单的失真测量方法可以使得先前的最小化得出小于最佳结果的结果。因而,将主观的影响考虑进去的算法通常是更有用的。
可以通过对每个将被编码在视频图像中的象素模块或子模块的视觉掩蔽值M进行计算来将编码噪音的可见性考虑进去。视觉掩蔽值M是基于该区域内的象素的空间变化和时间变化的。
更大的视觉掩蔽值M表示更大的掩蔽,其使得失真更难于视觉上检测到。在这样的区域,可以增加失真D并减少比特率R。这是在编码优化算法中利用M×lambda(拉格朗日乘子)而不是只利用拉格朗日乘子lambda来方便地完成的。下面的伪代码描述了修改的算法。
第二个简单的视觉掩蔽算法描述了不同的lambda在该应用中的使用。也设计了其它的更复杂的视觉掩蔽算法,并且这些其它的视觉掩蔽算法也可以得益于不同的拉格朗日乘子lambda。
拉格朗日乘子lambda的变化在其它编码决策中也可以是有用的。例如当编码一系列视频图像时,要确定有多少双向画面要编码通常是非常难以回答的。对于特定值的量化器Q和lambdaQ=f(Q),每个子母画面带一个双向画面的编码结果可以是R1、D1,而每个子母画面带两个双向画面的编码结果可以是R2、D2。
如果R2<R1并且D2<D1,则显然最好的答案是两个双向画面较好。然而,结果经常是R2<R1并且D2>D1,这样不清楚双向画面的数量较好。在这种情况下,我们可以使用具有较小的lambda的每一子母画面两个双向画面来重新编码,该lambda给定的D2近似等于D1。然后我们可以简单地将结果值R2和R1进行对比,看那个比特率更小。
其它方案可以相似地类比,例如交织编码对连续编码、不同的运动搜索范围的编码、带有或者不带有某种编码模式的编码等。
总而言之,我们提供了一种简单但有效的速率-失真折中的方法,其在视频编码中具有多种应用。以上描述了在多媒体压缩和编码***中通过编码模式选择来控制速率-失真折中的***。预期本领域的普通技术人员在不背离本发明的范围的情况下可以对本发明的元件的材料和配置作出改变和修改。
Claims (51)
1.一种用于在编码多个视频图像期间控制比特率的方法,每个视频图像包括一组象素模块,所述方法包括:
选择最接近期望失真值的失真值;
利用所述失真值确定量化器值;
利用所述量化器值计算拉格朗日乘子;
利用所述量化器值和所述拉格朗日乘子编码象素模块;
当缓冲区超过溢出阈值时,增大用于编码下一个象素模块的拉格朗日乘子,并且,当所述拉格朗日乘子超过最大拉格朗日乘子阈值时,增大量化器值;
当缓冲区降到下溢阈值以下时,减小用于编码下一个象素模块的拉格朗日乘子,并且,当所述拉格朗日乘子降到最小拉格朗日乘子阈值以下时,减小量化器值;
当缓冲区大大超过溢出阈值时,增大用于编码下一象素模块的量化器值而不等到拉格朗日乘子超过最大拉格朗日乘子阈值;以及
当缓冲区显著低于下溢阈值时,减小用于编码下一象素模块的量化器值而不等到拉格朗日乘子降到最小拉格朗日乘子阈值以下。
2.根据权利要求1所述的方法,其中,增大拉格朗日乘子被执行以减小比特率值。
3.根据权利要求1所述的方法,其中,减小拉格朗日乘子被执行以增加比特率值。
4.根据权利要求1所述的方法,其中,增大量化器值被执行以减小比特率值。
5.根据权利要求1所述的方法,其中,减小量化器值被执行以增加比特率值。
6.根据权利要求1所述的方法,其中,增大或减小拉格朗日乘子包括,将拉格朗日乘子增大或减小从多个拉格朗日delta值中选择的特定的拉格朗delta值。
7.根据权利要求6所述的方法,其中,所使用的特定的拉格朗日delta值是基于从多个量化器值中选择的特定的量化器值。
8.根据权利要求1所述的方法,其中,增大或减小量化器值包括,将量化器值增大或减小从多个量化器delta值中选择的特定的量化器delta值。
9.根据权利要求8所述的方法,其中,所使用的特定的量化器delta值是基于从多个量化器值中选择的特定的量化器值。
10.根据权利要求1所述的方法,其中,增大或减小拉格朗日乘子包括,将拉格朗日乘子增大或减小与特定的乘法系数相乘后的特定的拉格朗日delta值。
11.根据权利要求10所述的方法,其中,所使用的特定的拉格朗日delta值是基于视频图像类型。
12.根据权利要求8所述的方法,其中,所使用的特定的量化器delta值是基于视频图像类型。
13.一种用于在编码多个视频图像期间控制比特率的方法,所述方法包括:
选择最接近期望失真值的失真值;
利用所述失真值确定量化器值;
利用所述量化器值计算拉格朗日乘子;
为视频图像计算视觉掩蔽值,所述视觉掩蔽值为所述视频图像定义编码噪音的可见性;
当所述视觉掩蔽值与所述拉格朗日乘子的乘积大于最大拉格朗日乘子阈值时,通过增大所述量化器值,来对所述视频图像的编码进行调整;以及
利用计算的视觉掩蔽值与所述拉格朗日乘子的乘积和所述量化器值,对所述视频图像进行编码。
14.根据权利要求13所述的方法,其中,将所述量化器值增大从多个量化器delta值中选择的特定量化器delta值。
15.根据权利要求14所述的方法,其中,所使用的所述特定量化器delta值是基于从多个量化器值中选择的特定量化器值。
16.根据权利要求14所述的方法,其中,所使用的所述特定量化器delta值是基于视频图像类型。
17.根据权利要求13所述的方法,还包括通过增大或减小拉格朗日乘子来调整对视频图像的编码。
18.根据权利要求17所述的方法,其中,将拉格朗日乘子增大或减小从多个拉格朗日delta值中选择的拉格朗日delta值。
19.根据权利要求18所述的方法,其中,所使用的拉格朗日delta值是基于视频图像类型。
20.根据权利要求13所述的方法,其中,视觉掩蔽值是基于视频图像的区域内的至少一个象素的空间变化。
21.根据权利要求13所述的方法,其中,视觉掩蔽值是基于视频图像的区域内的至少一个象素的时间变化。
22.一种编码器,包括:
量化器单元,用于对视频图像进行量化;以及
速率控制器,适用于(i)利用量化器单元所使用的量化器值来计算拉格朗日乘子值,(ii)当将拉格朗日乘子值增大拉格朗日乘子delta值会得到小于最大拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值增大该拉格朗日乘子delta值,(iii)当将拉格朗日乘子值增大该拉格朗日乘子delta值会得到大于最大拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值增大量化器delta值,(iv)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到大于最小拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值减小该拉格朗日乘子delta值,(v)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到小于最小拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值减小所述量化器delta值。
23.根据权利要求22所述的编码器,
其中,在增大量化器值之前增大拉格朗日乘子,
其中,在减小量化器值之前减小拉格朗日乘子。
24.根据权利要求22所述的编码器,还包括用于存储视频图像的缓冲区。
25.根据权利要求22所述的编码器,其中,速率控制器在缓冲区占有率值大于溢出阈值时增大拉格朗日乘子。
26.根据权利要求22所述的编码器,其中,速率控制器在缓冲区占有率值小于下溢阈值时减小拉格朗日乘子。
27.根据权利要求22所述的编码器,其中,速率控制器在缓冲区占有率值大于溢出阈值时增大量化器值。
28.根据权利要求22所述的编码器,其中,速率控制器在缓冲区占有率值小于下溢阈值时减小量化器值。
29.一种用于在编码多个视频图像期间控制比特率的方法,所述方法包括:
选择最接近期望失真值的失真值;
利用所述失真值确定量化器值;
利用所述量化器值计算拉格朗日乘子;
基于所述量化器值和所述拉格朗日乘子值,对视频图像进行编码;以及
通过(i)当将拉格朗日乘子值增大拉格朗日乘子delta值会得到小于最大拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值增大该拉格朗日乘子delta值,(ii)当将拉格朗日乘子值增大该拉格朗日乘子delta值会得到大于最大拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值增大量化器delta值,(iii)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到大于最小拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值减小该拉格朗日乘子delta值,(iv)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到小于最小拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值减小所述量化器delta值,来对所述视频图像的编码进行调整。
30.根据权利要求29所述的方法,其中,量化器值和拉格朗日乘子值被改变以获得最接近期望失真值的失真值。
31.根据权利要求29所述的方法,其中,对编码的所述调整是基于缓冲区是否超过溢出阈值或降到下溢阈值以下。
32.根据权利要求29所述的方法,其中,当缓冲区值超过溢出阈值时,执行对编码的所述调整。
33.根据权利要求29所述的方法,其中,当缓冲区值降到下溢阈值以下时,执行对编码的所述调整。
34.根据权利要求29所述的方法,其中,增大拉格朗日乘子值被执行以减小比特率值。
35.根据权利要求29所述的方法,其中,减小拉格朗日乘子值被执行以增加比特率值。
36.根据权利要求29所述的方法,其中,增大量化器值被执行以减小比特率值。
37.根据权利要求29所述的方法,其中,减小量化器值被执行以增加比特率值。
38.根据权利要求29所述的方法,其中,所述拉格朗日乘子delta值是从多个拉格朗日乘子delta值中选择的。
39.根据权利要求38所述的方法,其中,所使用的拉格朗日乘子delta值是基于从多个量化器值中选择的特定的量化器值。
40.根据权利要求29所述的方法,其中,所述量化器delta值是从多个量化器delta值中选择的。
41.根据权利要求40所述的方法,其中,所使用的量化器delta值是基于从多个量化器值中选择的特定的量化器值。
42.一种用于在编码多个视频图像期间控制比特率的方法,所述方法包括:
选择最接近期望失真值的失真值;
利用所述失真值确定第一量化器值;
设置第一量化器值作为用于对视频图像进行编码的指定量化器值,所述第一量化器值与拉格朗日乘子值相关联;
计算所述视频图像的视觉掩蔽值,所述视觉掩蔽值为所述视频图像定义编码噪音的可见性;
当视觉掩蔽值乘以拉格朗日乘子值超过最大拉格朗日乘子阈值时,增加第一量化器值并且将经增加的第一量化器值设置为用于对所述视频图像进行编码的指定量化器值;以及
基于视觉掩蔽值与所述拉格朗日乘子的乘积和所述指定量化器值,对所述视频图像进行编码。
43.根据权利要求42所述的方法,还包括:
通过增大或减小所述指定量化器值来调整对所述视频图像的编码。
44.根据权利要求42所述的方法,还包括:
通过增大或减小拉格朗日乘子来调整对所述视频图像的编码。
45.根据权利要求42所述的方法,其中,视觉掩蔽值是基于视频图像的区域内的至少一个象素的空间变化。
46.根据权利要求42所述的方法,其中,视觉掩蔽值是基于视频图像的区域内的至少一个象素的时间变化。
47.根据权利要求42所述的方法,其中,增大第一量化器值包括:将第一量化器值增大量化器delta值。
48.一种用于在编码多个视频图像期间控制比特率的设备,每个视频图像包括一组象素模块,所述设备包括:
用于选择最接近期望失真值的失真值的装置;
用于利用所述失真值确定量化器值的装置;
用于利用所述量化器值计算拉格朗日乘子的装置;
用于利用所述量化器值和所述拉格朗日乘子编码象素模块的装置;
用于当缓冲区超过溢出阈值时,增大用于编码下一个象素模块的拉格朗日乘子,并且,当所述拉格朗日乘子超过最大拉格朗日乘子阈值时,增大量化器值的装置;
用于当缓冲区降到下溢阈值以下时,减小用于编码下一个象素模块的拉格朗日乘子,并且,当所述拉格朗日乘子降到最小拉格朗日乘子阈值以下时,减小量化器值的装置;
用于当缓冲区大大超过溢出阈值时,增大用于编码下一象素模块的量化器值而不等到拉格朗日乘子超过最大拉格朗日乘子阈值的装置;以及
用于当缓冲区显著低于下溢阈值时,减小用于编码下一象素模块的量化器值而不等到拉格朗日乘子降到最小拉格朗日乘子阈值以下的装置。
49.一种用于在编码多个视频图像期间控制比特率的设备,所述设备包括:
用于选择最接近期望失真值的失真值的装置;
用于利用所述失真值确定量化器值的装置;
用于利用所述量化器值计算拉格朗日乘子的装置;
用于为视频图像计算视觉掩蔽值的装置,所述视觉掩蔽值为所述视频图像定义编码噪音的可见性;
用于当所述视觉掩蔽值与所述拉格朗日乘子的乘积大于最大拉格朗日乘子阈值时,通过增大所述量化器值,来对所述视频图像的编码进行调整的装置;以及
用于利用计算的视觉掩蔽值与所述拉格朗日乘子的乘积和所述量化器值,对所述视频图像进行编码的装置。
50.一种用于在编码多个视频图像期间控制比特率的设备,所述设备包括:
用于选择最接近期望失真值的失真值的装置;
用于利用所述失真值确定量化器值的装置;
用于利用所述量化器值计算拉格朗日乘子的装置;
用于基于所述量化器值和所述拉格朗日乘子值,对视频图像进行编码的装置;以及
用于通过以下操作对所述视频图像的编码进行调整的装置:(i)当将拉格朗日乘子值增大拉格朗日乘子delta值会得到小于最大拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值增大该拉格朗日乘子delta值,(ii)当将拉格朗日乘子值增大该拉格朗日乘子delta值会得到大于最大拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值增大量化器delta值,(iii)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到大于最小拉格朗日乘子阈值的拉格朗日乘子值时,将拉格朗日乘子值减小该拉格朗日乘子delta值,(iv)当将拉格朗日乘子值减小该拉格朗日乘子delta值会得到小于最小拉格朗日乘子阈值的拉格朗日乘子值时,将量化器值减小所述量化器delta值。
51.一种用于在编码多个视频图像期间控制比特率的设备,所述设备包括:
用于选择最接近期望失真值的失真值的装置;
用于利用所述失真值确定第一量化器值的装置;
用于设置第一量化器值作为用于对视频图像进行编码的指定量化器值的装置,所述第一量化器值与拉格朗日乘子值相关联;
用于计算所述视频图像的视觉掩蔽值的装置,所述视觉掩蔽值为所述视频图像定义编码噪音的可见性;
用于当视觉掩蔽值乘以拉格朗日乘子值超过最大拉格朗日乘子阈值时,增加第一量化器值并且将经增加的第一量化器值设置为用于对所述视频图像进行编码的指定量化器值的装置;以及
用于基于视觉掩蔽值与所述拉格朗日乘子的乘积和所述指定量化器值,对所述视频图像进行编码的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42473802P | 2002-11-08 | 2002-11-08 | |
US60/424,738 | 2002-11-08 | ||
US10/615,117 US7042943B2 (en) | 2002-11-08 | 2003-07-07 | Method and apparatus for control of rate-distortion tradeoff by mode selection in video encoders |
US10/615,117 | 2003-07-07 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200380101963.0A Division CN1708991B (zh) | 2002-11-08 | 2003-10-31 | 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101409835A CN101409835A (zh) | 2009-04-15 |
CN101409835B true CN101409835B (zh) | 2014-09-17 |
Family
ID=35581914
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200380101963.0A Expired - Fee Related CN1708991B (zh) | 2002-11-08 | 2003-10-31 | 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 |
CN200810087854.2A Expired - Fee Related CN101409835B (zh) | 2002-11-08 | 2003-10-31 | 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200380101963.0A Expired - Fee Related CN1708991B (zh) | 2002-11-08 | 2003-10-31 | 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN1708991B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2070048B1 (en) * | 2006-09-29 | 2010-11-10 | Thomson Licensing | Spatial masking using a spatial activity metric |
CN101861735B (zh) * | 2008-09-18 | 2013-08-21 | 松下电器产业株式会社 | 图像解码装置及方法、图像编码装置及方法 |
CA2837755C (en) * | 2011-06-01 | 2019-04-09 | Zhou Wang | Method and system for structural similarity based perceptual video coding |
KR20140090999A (ko) * | 2011-10-14 | 2014-07-18 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 영역-기반 이미지 압축 |
CN104320657B (zh) * | 2014-10-31 | 2017-11-03 | 中国科学技术大学 | Hevc无损视频编码的预测模式选择方法及相应的编码方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1157080A (zh) * | 1995-04-25 | 1997-08-13 | 菲利浦电子有限公司 | 用于编码视频图像的装置和方法 |
US5790131A (en) * | 1996-05-15 | 1998-08-04 | Iterated Systems, Inc. | System and method for lossy compression of data with output file size control |
US5872598A (en) * | 1995-12-26 | 1999-02-16 | C-Cube Microsystems | Scene change detection using quantization scale factor rate control |
CN1292978A (zh) * | 1999-01-15 | 2001-04-25 | 皇家菲利浦电子有限公司 | 编码和噪声过滤图象序列 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6111991A (en) * | 1998-01-16 | 2000-08-29 | Sharp Laboratories Of America | Method and apparatus for optimizing quantizer values in an image encoder |
-
2003
- 2003-10-31 CN CN200380101963.0A patent/CN1708991B/zh not_active Expired - Fee Related
- 2003-10-31 CN CN200810087854.2A patent/CN101409835B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1157080A (zh) * | 1995-04-25 | 1997-08-13 | 菲利浦电子有限公司 | 用于编码视频图像的装置和方法 |
US5691770A (en) * | 1995-04-25 | 1997-11-25 | U.S. Philips Corporation | Device and method for coding video pictures |
US5872598A (en) * | 1995-12-26 | 1999-02-16 | C-Cube Microsystems | Scene change detection using quantization scale factor rate control |
US5790131A (en) * | 1996-05-15 | 1998-08-04 | Iterated Systems, Inc. | System and method for lossy compression of data with output file size control |
CN1292978A (zh) * | 1999-01-15 | 2001-04-25 | 皇家菲利浦电子有限公司 | 编码和噪声过滤图象序列 |
Also Published As
Publication number | Publication date |
---|---|
CN1708991B (zh) | 2010-08-18 |
CN101409835A (zh) | 2009-04-15 |
CN1708991A (zh) | 2005-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5021502B2 (ja) | ビデオ・エンコーダのモード選択によるレート歪みトレードオフの制御方法および装置 | |
KR100804335B1 (ko) | 분할 연산의 필요성을 감소시킨 디지털 비디오 엔코딩을 위해 가변 정확도 화상간 타이밍 특정을 위한 방법 및 장치 | |
US9420279B2 (en) | Rate control method for multi-layered video coding, and video encoding apparatus and video signal processing apparatus using the rate control method | |
JP5385233B2 (ja) | デジタルビデオ符号化処理における可変精度ピクチャ間タイミング指定方法及び装置 | |
JP5173409B2 (ja) | 符号化装置および符号化装置を備えた動画像記録システム | |
JP2010154568A5 (zh) | ||
WO1994024822A1 (en) | Method and apparatus for coding image, and image recording medium | |
CN102986211A (zh) | 视频编码中的速率控制 | |
WO2000045602A1 (en) | Optimal encoding scheme for motion compensated video | |
KR20000071026A (ko) | 코딩 시스템내에서 속도 제어를 최적화하기 위한 장치 및 방법 | |
KR20060036934A (ko) | 비디오 데이터 부호화 장치 및 비디오 데이터 부호화 방법 | |
US7451080B2 (en) | Controlling apparatus and method for bit rate | |
CN101409835B (zh) | 利用拉格朗日乘子和视觉掩蔽来控制速率-失真折中的方法和装置 | |
US7804897B1 (en) | Method for implementing an improved quantizer in a multimedia compression and encoding system | |
JPH05183872A (ja) | 動画像符号化装置および方法 | |
JP2004056677A (ja) | 画像情報符号化装置及び画像情報符号化方法 | |
JP3507042B2 (ja) | 動画像圧縮装置 | |
US20050201458A1 (en) | Image encoding system and method | |
JP2004140854A (ja) | 可変転送レート符号化方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140917 Termination date: 20151031 |
|
EXPY | Termination of patent right or utility model |