质量感知视频优化中的宏块级自适应量化的制作方法

文档序号:7991498阅读:311来源:国知局
质量感知视频优化中的宏块级自适应量化的制作方法
【专利摘要】一种优化包括一个或多个视频帧的编码视频流的方法,每个视频帧包括多个宏块,每个宏块包括多个像素。所述方法包括接收编码宏块、对所述编码宏块解码以及提取第一量化参数。所述第一量化参数对应于原始用于压缩所述编码宏块的量化设定。该方法还包括至少部分基于所述第一量化参数计算第二量化参数、基于所述第二量化参数对解码的宏块重编码以及提供重编码的宏块。
【专利说明】质量感知视频优化中的宏块级自适应量化
[0001]相关发明的交叉引用
本申请要求于2011年6月10日递交的、名称为“Application of AdaptiveQuantization in Quality-Aware Video Optimization” 的美国临时专利申请 N0.61/495,951的优先权及权益,通过引用将该申请的全部内容结合于此。
【背景技术】
[0002]暈化对照知觉质暈
在视频处理中,量化是有损的压缩技术,其通过将一个范围内的值压缩至单个量子值而实现。当视频帧在任何系统中被量化时,信息被丢失。例如,典型的视频编码器(例如MPEG-2、MPEG-4、H.264,VC-1等)可通过丢弃信息来压缩视频流,该信息被预期是在知觉上最不重要的-即在没有其的情况下解码(解压缩)的视频仍可接近地相似于原始视频的信息。由量化产生的在原始视频与解压缩视频之间的差别有时被称为“量化噪声”。在编码期间所丢弃的信息的量取决于视频流是如何被量化的。每个视频压缩格式定义了量化设定的离散集合,并且每种量化设定具有抽象的标识符,其被表示为量化参数(QP)。QP可任意地被定义,例如被定义为索引量化设定阵列的整数,使得由更小的QP值X引入的量化噪声小于由更大的QP值X+1引入的量化噪声。对于每个视频编码解码器,由给定QP值索引的量化设定可不同。
[0003]如果在量化期间丢弃了过多信息,则当视频流在重放期间被解压缩时其可能出现失真。这捕捉了量化与知觉质量之间的关系。因此,由于QP指示在对视频流编码时多少信息被丢弃,QP可被用作知觉质量的指示器。特别地,当QP值较小时,更多信息被保留。然而,随QP值增加,由于信息中的一些被集合起来使得比特率下降,所以更多信息被丢弃,这导致了 一些质量损失以及一些失真增加。
[0004]暈化对照比特率
在视频处理中,比特率指每单位重放时间被用于在编码(数据压缩)之后重现连续视频的比特的数量。视频流的不同分段可能自然地需要不同数量的比特以被重现,即使它们由相同数量的像素组成并且以相同的QP被编码。然而,假定所有其他编码参数维持不变并且假定更高的QP值表示更粗糙的量化(更多信息丢失),以更高的QP值X+1进行量化的视频流的给定分段将永远不会比以更小的QP值X进行量化的同一分段需要更多的比特。在实践中,这意味着在QP增加时平均比特率需求减小。图4示出编码视频流的比特率如何随QP增加而减小。图4中的比特率数字和QP值仅为示例。在实践中,所述数字和所述值可以是不同的并且对于不同的视频序列,QP值与比特率之间的关联可以变化。
[0005]QP的值可贯穿整个视频流被视频编码器动态地改变。例如,可为视频流内的每个帧分配其自己的QP值,并且该值将被用于量化该帧内的所有像素。相比于以更低的QP值量化的类似的帧,被分配更高QP值的帧将因此经历更粗糙的量化并且产生更少的编码比特。在帧一级改变QP值被一些视频编码器使用,例如用于将编码流的平均比特率维持在相对恒定的水平-在比特率开始超出预定义水平时,后续的(一个或多个)帧的(一个或多个)QP值可被增加,并且反之亦然,当比特率下降到该预定义水平以下时,后续的(一个或多个)帧的(一个或多个)QP值可被减小。
[0006]然而,帧一级的QP修正并没有将这一事实考虑在内:即包括在给定帧中的视觉信息很少跨这个帧相等地分布。更典型地,视频帧将有一些具有相对恒定的颜色和亮度的“平坦”区域(例如天空、草地、水、墙),而其他区域可能具有更多的细节(例如人脸、文本或以突变的颜色和/或亮度变化表征的任何其他对象)。由不同水平的细节或像素方差表征的区域在可压缩性方面也可能明显不同,可压缩性也就是它们可被压缩到何种程度而不会有知觉质量的明显降低。
【专利附图】

【附图说明】
[0007]图1示意了示例性系统的框图。
[0008]图2是示意了图1的示例性系统中的示例性宏块级质量感知视频优化器的实施例的框图。
[0009]图3是示意了图2的实施例中的示例性过程流的功能图。
[0010]图4示意了对于各种视频流而言比特率与QP之间的示例性关联。
[0011]图5是表示宏块级质量感知视频优化的示例性方法的流程图。
【具体实施方式】
[0012]现将对示例性实施例进行详细参考,示例性实施例的示例在附图中被示意。在任何可能的地方,将贯穿附图使用相同的参考标号来表示相同或相似的部分。
[0013]本文所公开的示例性实施例针对用于宏块级质量感知视频优化的方法和系统。宏块级质量感知视频优化是在宏块级修正编码视频流使得编码视频流的字节大小(比特率)被尽可能多地缩减而同时将知觉质量降低限定到可控水平的技术。
[0014]宏块级质量感知视频优化的构架可调节图像量化,通过经验测试,其允许对字节缩减内容中的质量降低进行精细的控制。通过进一步的经验测试,也可能将量化调节优化应用到代码转换场景中,在所述场景中输入和输出压缩格式是不同的。
[0015]如今,高级的视频压缩标准有利地允许视频编码器不仅为每个帧分配不同的QP值,还为帧中的每个宏块分配不同的QP值。宏块是帧内的像素块,例如16*16像素的块。视频编码器和解码器可将一个帧划分成多个相邻的、非重叠的宏块,并且进而一次一个块地处理(编码或解码)该帧。对块编码例如包括基于在同一帧内(在内部预测模式下)或在(一个或多个)先前/未来的帧内(在交互预测模式下)的相似的像素数据“预测”该宏块、获得预测像素数据与实际像素数据之间的差别、例如使用离散余弦变换(DCT)将该差别转换到频域中、使用固定的量化矩阵和可调节的QP值量化所转换的数据、对所量化的数据进行熵编码等。编码数据进而与被用于对其编码的编码参数一起被存储或传输。
[0016]编码参数例如包括被用于量化宏块的QP值、指示交互预测中的(一个或多个)预测块的位置的一个或多个运动矢量以及视频编码器可能随后为可靠地对该宏块的编码数据解码所需要的任何附加信息。
[0017]视频解码器可使用编码参数对包含在宏块中的编码数据解码。对宏块解码例如包括执行熵解码、使用相同的固定量化矩阵和相同的可调节QP值去量化熵解码的数据、例如使用逆离散余弦变换(IDCT)将去量化的数据转换回空间域中、获得预测数据并且将其加回以及在给定压缩标准下所需要的或可选的任何附加步骤。
[0018]图1示意了示例性系统100的框图。示例性系统100可以是通过本地连接或诸如无线网络、因特网、广播网络等的网络提供视频内容的任何类型的系统。除其他以外,示例性系统100可包括用户装置102、网关104、一个或多个网络106和110、视频优化器108以及一个或多个媒体服务器112-114。
[0019]用户装置102可以是硬件装置,诸如计算机、PDA、手机、膝上型电脑、桌上型电脑、VCR、激光影碟机、DVD播放器、蓝光碟播放器、包括广播调谐器的电视机或能够访问数据网络和/或能够播放视频的任何电子装置。用户装置102可包括允许用户装置102与例如网络106的数据网络通信并且从其接收视频内容的软件应用。例如,用户装置102可向媒体服务器发送请求数据以下载特定的视频流送文件,而媒体服务器可将该视频流送文件传输至用户装置102。在一些实施例中,视频流送文件可经由视频优化器108被发送。用户装置102可提供显示器以及一个或多个软件应用,诸如媒体播放器,用于向用户装置的用户显示视频流。
[0020]在一些实施例中,用户装置102也可以是或包括用于存储或归档视频内容的存储装置。例如,存储装置可以被提供为视频CD、DVD、蓝光碟、硬盘、磁带、闪存存储卡/驱动器、易失性或非易失性存储器、全息数据存储器或任何其他存储介质。
[0021]网关104是充当访问的入口或途径并且可以或可以不将在一种类型的网络中提供的格式化数据转换至对于另一类型的网络所需要的特定格式的一个或多个装置。网关104例如可以是服务器、路由器、防火墙服务器、主机或视频优化器。例如,网关104可具有将从用户装置102接收的信号转换成网络106或100可理解的信号的能力,并且反之亦然。然而,这种转换能力在一些数据网络中并不需要,例如第四代移动通信技术(4G)或全球微波互联接入(WiMax)。网关104可能能够独立地或以任何组合地处理音频、视频和T.120传输,并且能够进行全双工媒体翻译。而且,网关104可包括视频优化器108以进行质量感知视频优化。
[0022]网络106和110可包括广域网(WAN)、局域网(LAN)、或适合于诸如因特网通信的分组型通信的无线网络、或适合于分发视频内容的广播网络的任何组合。
[0023]视频优化器108可以被实现为提供质量感知视频优化的软件程序和/或硬件装置。视频优化器108是提供用户装置102与媒体服务器112-114之间的通信的服务器。视频优化器108可对先前编码的视频帧序列执行单程的、动态及时的质量感知优化,如在下面所描述的那样。由于所述视频优化方法仅需要在视频帧序列上的一次通过,视频优化器108很好地适合于在各种各样的环境中操作。例如,视频优化器108可以是媒体服务器112-114中的任何一个的部分,或是在用户装置102与媒体服务器112-114之间的任何网络装置。以这种方式,视频优化器108在实时视频输送通过低容量的网络段之前对它们进行优化。视频优化器108也可被安装在存储阵列的前面以在监视视频被归档之前对它们进行优化,从而节省存储空间。
[0024]视频优化器108可具有一个或多个处理器以及用于存储程序指令的至少一个存储器。所述(一个或多个)处理器可以是能够执行特定指令集合的单个或多个微处理器、现场可编程门阵列(FPGA)或数字信号处理器(DSP)。计算机可读的指令可被存储在有形的非易失性计算机可读介质上,诸如软盘、硬盘、⑶-ROM(光盘只读存储器)以及MO (磁光盘)、DVD-R0M (数字多功能盘只读存储器)、DVD-RAM (数字多功能盘随机存取存储器)或半导体存储器。备选地,所述方法可用硬件组件或硬件与软件的组合来实现,举例来说诸如为ASIC、专用计算机或通用计算机。
[0025]媒体服务器112-114可以是计算机服务器,其从用户装置102接收针对视频内容的请求、处理该请求并且在一些实施例中通过视频优化器108提供视频内容给用户装置102。例如,媒体服务器112-114可以是网页服务器、企业服务器或任何其他类型的计算机服务器。媒体服务器112-114可以是被编程用于从用户装置102接收请求(例如HTTP、RSTP或可发起视频会话的其他协议)以及向用户装置102提供视频流的计算机。同样地,媒体服务器可以是PDA、手机、膝上型电脑、桌上型电脑或被配置为在一些实施例中通过一个或多个网络106和110向用户装置102传递视频内容的任何装置。另外,媒体服务器112-114可以是用于在一些实施例中通过视频优化器108向用户装置102分发视频内容的广播设施,例如免费接收、电缆、卫星及其他广播设施。而且,媒体服务器112-114可以是视频源,诸如被配置为捕获视频并且在一些实施例中通过视频优化器108向用户装置102传递所捕获的视频的监视装置。同样地,作为图1所示的系统100的配置的备选,媒体服务器112-114中的任何一个可包括视频优化器108以进行质量感知视频优化。
[0026]图2是示意了图1的示例性系统中的示例性宏块级质量感知视频优化器108的实施例的框图。为简化起见,图2仅示意了视频优化器108、作为输入的编码视频流202以及作为输出的重编码视频流204。除其他以外,视频优化器108可包括解码器210、QP调节模块220和编码器230。所示意的视频优化器108的配置仅为示例性的,并且可被修改以提供离散的元件或将多个元件组合成单--个,以及可以被提供为硬件与软件组件的任何组
口 ο
[0027]解码器210可以是被配置为对输入的编码`视频流210解码的软件程序和/或硬件装置。编码视频流202包含一个或多个帧,其中每个帧由一个或多个宏块组成。例如,具有1920*1080像素的分辨率的高清晰度帧可被划分为120*68=8160个宏块,每个具有16*16像素,其中最后一行宏块部分地“越界”。一秒的视频流可例如包含30个这样的帧,即244,800个宏块。
[0028]在一实施例中,解码器210对输入的编码视频流202 —次一个宏块地进行解码。在提取嵌入在编码宏块内的输入信息(这个输入信息将在下面进一步描述)的情况下,解码器210逐个宏块地对编码视频流202解码并且将解码的宏块转送到编码器230。在一些实施例中,一些解码的宏块可临时地被存储在数据存储器(未示出)中,诸如数据库或高速缓冲存储器。该数据存储器可存储可能对于解码未来的编码宏块所需要的、解码的宏块,例如用于获得内部预测或交互预测信息。解码器210也可向QP调节模块220提供输入信息(包括从其获得的任何信息)。
[0029]QP调节模块220可以是具有调节由视频优化器接收的输入QP值以及输出经调节的QP值的能力的软件程序和/或硬件装置。可根据从解码器210接收的输入信息、从编码器230接收的输出信息(将在下面进一步描述)以及在视频优化过程期间生成的测量信息(将在下面进一步描述)来调节输入QP值。在调节QP值之后,QP调节模块220向编码器230提供输出QP值(即经调节的QP值)。[0030]编码器230可以是被配置为在从解码器210接收解码的视频流以及从QP调节模块220接收输出QP值之后逐个宏块地对视频流重编码的软件程序和/或硬件装置。在对视频流的宏块重编码之后,编码器230输出重编码的宏块作为重编码视频流204的部分。编码器230还向QP调节模块220提供输出信息。
[0031]图3是示意了图2的实施例中的示例性过程流的功能图。可改变该示例性过程流以删除步骤、改变步骤的顺序或包括附加的步骤,而不背离示例性实施例。
[0032]在从数据网络接收编码视频流202后之后,视频优化器108可将编码视频流202导向解码器210。解码器210 —次一个宏块地对编码视频流解码并且提取嵌入在每个编码宏块内的输入信息。输入信息可包括输入编码参数302和视觉特征304。一被提取,该输入信息就被传递至QP调节模块220。
[0033]输入编码参数302可包括在编码宏块中所包含的任何压缩相关的信息,诸如在宏块首次被编码时被用于对其进行量化的原始QP值("QPlnput")或在使用交互预测对宏块编码的情况下指示一个或多个预测块的相对位置的一个或多个运动矢量。输入编码参数302也可包括压缩相关的统计信息,诸如被用于对编码宏块编码的比特的数量。
[0034]在一些实施例中,解码器210在对编码宏块解码的同时还提取视觉特征304,所述视觉特征304进而被传递至QP调节模块220。视觉特征304包括关于宏块的实际(解码)的像素数据的任何信息,诸如宏块的像素的方差或平均亮度。
[0035]除了接收输入信息之外,QP调节模块220还可接收输出信息。输出信息可包括从重编码视频流204中提取的输出编码参数310。在一些实施例中,编码器230向QP调节模块220传递从组成重编码视频流204的重编码宏块中提取的输出编码参数310。输出编码参数310包括由编码器230并入重编码宏块中的任何压缩相关的信息,诸如QPtxitput值、运动矢量、预测模式等等。(代替从编码器230接收先前计算的QPtxitput值,在一些实施例中,QP调节模块220可例如在内部缓冲器中临时存储这些值。)输出编码参数310也可包括与重编码宏块的压缩相关的统计信息,诸如重编码宏块所占据的比特的数量。
[0036]包括在输入编码参数302中的参数的类型可与或可不与包括在输出编码参数310中的参数的类型匹配,这取决于在编码视频流202中使用哪些类型的参数以及在重编码视频流204中使用哪些类型的参数,以及取决于QP调节模块220要求哪种信息。例如,可能已使用不支持宏块级QP调节的压缩标准对编码视频流202编码,而同时正被编码器230用于重编码视频流的标准支持宏块级QP调节。在这个示例中,输入编码参数302可仅包括帧级的QP值(对于每个解码的宏块被重复,如在下面所描述的那样),而如果为QP调节模块220所要求,则输出编码参数310可包括所有单个的宏块级QP值。
[0037]在一些实施例中,编码视频流202不包括用于其宏块的单个QP值,而仅包括帧级QP值,其中每个帧被分配单个QP值,并且该值被用于量化该帧内的所有宏块。在这种情况下,为促进视频优化器108的逐个宏块的操作,解码器210仍可通过为属于该帧的每个宏块传递相同的帧级QP值而为每个解码的宏块提供QPlnput值作为输入编码参数302的部分。
[0038]在一些实施例中,QP调节模块220也可对从解码器210接收的输入编码参数302进行预处理。例如,QP调节模块220可跨属于某个帧的所有先前解码的宏块执行统计分析并且获得QPlnput的平均值或平均运动矢量长度。类似地,QP调节模块220可例如跨属于某个帧的所有先前解码的宏块计算每一编码宏块的比特的平均数量。[0039]在一些实施例中,QP调节模块220也能对从编码器230接收的输出编码参数310进行预处理。例如,QP调节模块220可跨属于某个帧的所有先前重编码的宏块执行统计分析并且获得每一宏块的比特的平均数量。类似地,QP调节模块220可跨属于某个帧的所有先前重编码的宏块计算QPtxitput值(或者从内部缓冲器获得或者从编码器230获得)的平均值。
[0040]在一些实施例中,QP调节模块220也可对从解码器210接收的视觉特征进行预处理。例如,QP调节模块可执行统计分析并且获得属于某个帧的所有先前解码的宏块的像素方差和/或亮度的平均值。
[0041]获得统计信息可能需要访问先前接收(“历史”)的信息。为能够访问历史信息,QP调节模块220可包括数据库(未示出)以临时存储预定义数量的最近接收的参数。
[0042]在一些实施例中,输入编码参数302、输出编码参数310和/或视觉特征304的预处理可在QP调节模块220外部发生。例如,输入编码参数302和/或视觉特征304的一些或全部预处理可由解码器210执行并且被传递到QP调节模块220。作为另一实例,输出编码参数302的一些或全部预处理可由编码器230执行并且被传递到QP调节模块220。
[0043]质暈感知视频优化:QP调节
QP调节模块220可计算待被编码器230用于量化解码的视频流206的宏块的宏块级?Vtput值。如在上面所讨论的那样,QPtotput值可基于下列数据的任何组合来计算:输入编码参数302、视觉特征304和输出编码参数310。
[0044]在一些实施例中,QP调节模块220基于给定宏块的QPlnput得出该宏块的QP0utput,该宏块的QPlnput可在输入编码`参数302中被接收。由于可在用于量化宏块的QP值与该宏块的知觉质量之间以及还可在QP值与比特率(用来对该宏块进行编码的字节数)之间建立关系,QP调节模块220可使用QPlnput与QP0utput之间的差别来同时控制重编码视频流204中的宏块的比特率缩减和知觉质量降低。
[0045]参数Λ QP可例如被定义为:
A QP-QPoutpUt_QPinput
QP调节模块220可选择△ QP值以得出可满足字节大小缩减的要求并且保持原始知觉质量至尽可能程度的9Ρ__。AQP值越小,QPaitput值越小,并且因此在编码期间将丢弃更少的信息-知觉质量更少地降低。相反,Λ QP值越大,QPtxitput值越大,并且因此在编码期间将丢弃更多的信息-知觉质量更多地降低。
[0046]可采用图4所示的QP对照比特率的曲线的两个特性来实现输入视频流的优化。将采用的第一特性是这一事实:即小的AQP在QPlnput高时对比特率有很小的影响。这在最右边示出,图3中的曲线的平坦部分。考虑到这种特性,当给定宏块的QPlnput高时,QP调节模块220可决定将Λ QP维持在O处(也就是说,保持QPtxitput=QPlnput),这是因为增大的Λ QP将会对比特率有很小的影响,但可能会对宏块的感知质量有不利的影响。
[0047]有时,为O的AQP仍可导致降低的知觉质量。在一些实施例中,编码器230可使用与编码视频流202采用其原始被编码的压缩标准完全不同的压缩标准对解码的视频流206重编码。在其他实施例中,编码器230可使用原始使用的相同的压缩标准,但它可能使用完全不同的编码特征或编码决策集合。例如,编码视频流202可能已经以半像素的精度被编码以进行运动补偿,而编码器230可选择使用1/4像素("Qpel")的精度对该流重编码。在一些实施例中,编码器230也可改变流的帧速率。原始编码与重编码技术之间的任何这样的差异的结果可能是,对于给定宏块而言,与原始编码器所量化的像素数据不同的像素数据正被编码器230量化。因此,以相同的QP值量化宏块将不一定导致相同的比特率和知觉质量降低。因而,为减小不想要的知觉质量降低的可能性,QP调节模块有时可选择负值Δ QP,即选择低于QPlnput的值的QPtxitput值。
[0048]将采用的第二特性是:小的Λ QP在QPlnput低时对比特率有大的影响。这在最左边示出,图4中曲线的陡峭部分。当QPlnput低时,即使小的正值Λ QP也将导致大的字节缩减。因而,在一些实施例中,QP调节模块220将为较低值的QPlnput选择较高的AQP(即输出较高的QPcxltput值)。为了确定特定宏块的QPlnput是低还是高,QP调节模块220可将QPlnput与一个或多个预定义的阈值比较。备选地,QP调节模块220可将QPlnput与例如跨属于某个帧的所有宏块的、QPlnput的平均值比较。
[0049]在一些实施例中,在计算宏块的QPtxitput时,QP调节模块220考虑多少比特被用于对编码视频流(202)中的宏块编码。例如,对于已经以非常少的比特被编码的宏块,可选择AQP ^ O以避免知觉质量的进一步降低。
[0050]在一些实施例中,编码比特的数量结合宏块的QPlnput值一起被考虑。例如,当QP调节模块确定宏块以低QPlnput (其可能引起高QPtxitput)被量化,但尽管如此宏块仍然导致小数量的编码比特时,QP调节模块220可“不顾”基于QPlnput的选择并且选择AQPS0。相反地,当QP调节模块220确定高的QPlnput值导致不同寻常地大的数量的编码比特时,可选择正值的AQP。为了确定特定宏块的比特的数量是大还是小,QP调节模块220可例如将其与一个或多个预定义的阈值比较或与被用于对属于先前编码的帧中的一个或多个的宏块编码的比特的平均数量比较。
[0051]在一些实施例中,QP调节模块220可将宏块的像素方差(即宏块的像素值间的方差)考虑在内,其可作为视觉特征304中的一个从解码器210被接收。高的像素方差可指示该宏块可以知觉质量的最小降低进一步被压缩并且反之亦然,以低像素方差压缩宏块更有可能降低知觉质量。例如,当两个宏块的量化都被增加时,具有低像素方差的两个宏块之间的边缘更有可能变得可见,这可导致以“分块”假象形式的图像退化。这样,其像素方差例如低于预定义阈值或显著低于先前编码的宏块的平均像素方差的宏块能够以低于具有高方差的宏块的QPtxitput被量化。
[0052]在一些实施例中,QP调节模块220将宏块的像素的平均亮度考虑在内,其可作为视觉特征304中的一个从解码器210被接收。可在图像的明亮区域更容易地感知质量缺陷。因此,在宏块的像素的平均亮度低时,QP调节模块220可更激进地(aggressively)对宏块重新量化(采用更高的QPtxitput),并且反之亦然。
[0053]在一些实施例中,QP调节模块220将宏块的运动矢量考虑在内,其可作为输入编码参数302的部分从解码器210被接收。例如,非常短的运动矢量指示视频流内的低运动区域,QP调节模块220可选择通过例如选定Λ QP < O而小心地对其进行处理。
[0054]在计算QPtxitput时,输出编码参数310也可被QP调节模块220考虑。例如,QP调节模块220可监控重编码视频流204的结果得到的比特率并且相应地调节后续的QPtxitput计算。例如,如果重编码视频流204的平均比特率过高(例如高于第一预定义目标比特率),则QP调节模块220可通过选择更高的QPtxitput值开始对后续的宏块更激进地进行压缩,并且反之亦然,如果重编码视频流204的平均比特率过低(例如低于第二预定义目标比特率),则QP调节模块220可通过选择更低的QPtxitput值开始对后续的宏块不那么激进地进行压缩。
[0055]在一些实施例中,通过分析从输出编码参数310获得的信息,QP调节模块220可提高其后续的QPftltput计算的精确性。例如,它可计算将某个QPftltput应用于具有特定数量的原始编码比特的宏块平均会产生多少比特。QP调节模块220进而可例如针对相似的后续宏块使用该信息来调节其QPtxitput计算。通常说来,QP调节模块220可使用从输出编码参数310获得的信息来分析过去的量化决策并且基于该分析来修正其未来的量化决策。修正未来决策的一种方式是通过调节上面提及的各个阈值。
[0056]图5是表示宏块级质量感知视频优化的示例性方法的流程图。可改变示例性的过程流以删除步骤、改变步骤的顺序或包括附加的步骤而不背离示例性的实施例。
[0057]在接收502编码宏块之后,视频优化器(例如视频优化器108)对该编码宏块解码504并且在该过程中提取输入编码参数(例如输入编码参数302)。此外,如果在步骤510处计算时考虑视觉特征,则视频优化器可从解码的宏块中提取506视觉特征(例如视觉特征304)。此外,如果在步骤510处计算QPaitput时考虑输出编码参数,则视频优化器可从由视频优化器先前重编码的宏块中提取508输出编码参数(例如输出编码参数310)。
[0058]在步骤510处,视频优化器基于在步骤504处提取的输入编码参数来计算QPftjtpi^输入编码参数可包括QPlnput-在宏块原始被编码时所使用的量化参数。在一些实施例中,QPlnput对应于帧的QP,该QP已被应用于该帧的所有宏块。视频优化器可例如在QPlnput低(例如低于预定义的低阈值)时增加QP0utput,而在QPlnput高(例如高于预定义的高阈值)时减小在一些情况下,例如当QP一非常高时,视频优化器可将QPftltput设置为等于或低于QPlnput的值。
`[0059]在一些实施例中,输入编码参数可包括由编码宏块所消耗的比特的数量。视频优化器可在比特的数量低(例如低于预定义的低阈值)时减小QPtxitput,而在比特的数量高(例如高于预定义的高阈值)时增加QPaltpuP在一些情况下,当比特的数量非常低时,视频优化器可将QPftltput设置为等于或低于QP一的值。此外,视频优化器可结合QP一值一起考虑比特的数量,例如在QPlnput和比特的数量两者都低时减小QPtxitput以及在QPlnput和比特的数量两者都高时增加QPtxitpi^
[0060]在一些实施例中,输入编码参数可包括编码宏块的像素间的方差。视频优化器可在该方差低(例如低于预定义的低阈值)时减小QPftltput而在该方差高(例如高于预定义的高阈值)时增加QP<_ut。在一些情况下,当该方差非常低时,视频优化器可将QPtxitput设置为等于或低于QPlnput的值。
[0061]在一些实施例中,输入编码参数可包括用于对编码宏块原始编码的运动矢量。视频优化器可在运动矢量短(例如短于预定义的低阈值)时减小QPftltput而在运动矢量长(例如长于预定义的高阈值)时增加QPaltpuP在一些情况下,当运动矢量非常短时,视频优化器可将QPautput设置为等于或低于QP一的值。
[0062]在一些实施例中,在计算QPtxitput时,视频优化器可将在步骤508处提取的视觉特征考虑在内。视觉特征可例如包括编码宏块的像素的平均亮度。视频优化器可在平均亮度高(例如高于预定义的低阈值)时减小QPftltput而在平均亮度低(例如低于预定义的高阈值)时增加QPtxitput。[0063]在一些实施例中,在计算QPtxitput时,视频优化器可将在步骤508处提取的输出编码参数考虑在内。输出编码参数可例如包括先前重编码的宏块的平均比特率。视频优化器可在平均比特率高于预定义目标比特率时增加QPaitput而在平均比特率低于预定义目标比特率时减小QPftltputt5视频优化器也可使用先前重编码的宏块的输出编码参数来基于实际结果分析输入编码参数、视觉特征、所选择的QPftltput以及结果得到的输出编码参数之间的关系。例如,视频优化器可分析当使用某个QPtxitput值对具有某个数量的原始编码比特的宏块重编码时平均会获得多少比特。作为该分析的结果,视频优化器可调节其后续的QPtxitput计算以实现更高的精确性。所述调节可例如通过修改上面提及的各个阈值来完成。
[0064]在计算QPtxitput之后,视频优化器可通过基于对应于所计算的QPtxitput的量化设定对解码的宏块编码而对解码的宏块重编码512。所述重编码可优化解压缩的宏块使得所压缩的宏块的字节大小被尽可能多地缩减,而同时将知觉质量降低限定到可控水平。视频优化器可将重编码的宏块传输514至目的地。该方法进而可结束516。
[0065]本文所公开的方法可被实现为计算机程序产品,即在信息载体中有形地具体化的计算机程序,例如在机器可读的存储装置中,供数据处理设备执行或控制数据处理设备的操作,数据处理设备例如为可编程处理器、计算机或多个计算机。计算机程序能够以任何形式的编程语言编写,包括编译或解释语言,并且它能够以任何形式被部署,包括作为独立的程序或作为适合于供在计算环境中使用的模块、组件、子例程或其他单元。计算机程序能够被部署以在一个计算机上或在处于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上被执行。
[0066]本文所公开的方法的部分或全部也可由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、印刷电路板(PCB)、数字信号处理器(DSP)、可编程逻辑组件与可编程互连的组合、单个中央处理单元(CPU)芯片、结合在母板上的CPU芯片、通用计算机或能够执行本文所公开的质量感知视频优化的装置或模块的任何其他组合来实现。
[0067]在前述的说明书中,已参考具体的示例性实施例描述了本发明。然而,将显而易见的是可做出各种修正和变化而不背离在随后的权利要求中阐述的本发明的更宽的精神和范围。说明书及附图相应地应被认为是示意性的而非限定性的。根据对本说明书的考虑以及对本文所公开的本发明的实践,其他实施例对于本领域的技术人员而言可能是明显的。
【权利要求】
1.一种优化包括一个或多个视频帧的编码视频流的方法,每个视频帧包括多个宏块,每个宏块包括多个像素,所述方法包括: 接收编码宏块; 对所述编码宏块解码; 提取第一量化参数,其中所述第一量化参数对应于原始用于压缩所述编码宏块的量化设定; 至少部分基于所述第一量化参数计算第二量化参数; 基于所述第二量化参数对解码的宏块重编码;以及, 提供重编码的宏块。
2.根据权利要求1所述的方法,其中计算所述第二量化参数包括在所述第一量化参数高于第一阈值时将所述第二量化参数设定为等于或低于所述第一量化参数,以及在所述第一量化参数低于第二阈值时将所述第二量化参数设定为高于所述第一量化参数。
3.根据权利要求2所述的方法,所述方法还包括将所述第一阈值和所述第二阈值定义为过去的输入量化参数的函数,其中所述过去的输入量化参数对应于原始用于压缩多个先前接收的编码宏块的量化设定。
4.根据权利要求 1所述的方法,其中计算所述第二量化参数部分基于由所述编码宏块占据的比特的数量。
5.根据权利要求1所述的方法,其中计算所述第二量化参数部分基于所述宏块的视觉特征。
6.根据权利要求5所述的方法,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的方差。
7.根据权利要求5所述的方法,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的平均亮度。
8.根据权利要求1所述的方法,其中计算所述第二量化参数部分基于从编码器接收的输出编码参数。
9.根据权利要求8所述的方法,其中所述输出编码参数包括对应于用于对先前接收的编码宏块重编码的量化设定的、一个或多个过去的输出量化参数。
10.根据权利要求8所述的方法,其中所述输出编码参数包括输出比特率,其中所述输出比特率对应于由多个先前重编码的宏块占据的比特的平均数量。
11.根据权利要求10所述的方法,其中计算所述第二量化参数包括如果所述输出比特率高于第一预定义目标比特率,则增加所述第二量化参数,以及如果所述输出比特率低于第二预定义目标比特率,则减小所述第二量化参数。
12.—种非暂时性计算机可读介质,其存储指令,当由计算机执行所述指令时,所述指令使所述计算机执行一种优化包括一个或多个视频帧的编码视频流的方法,每个帧包括多个宏块,并且每个宏块包括多个像素,所述方法包括: 接收编码宏块; 对所述编码宏块解码; 提取第一量化参数,其中所述第一量化参数对应于原始用于压缩所述编码宏块的量化设定;至少部分基于所述第一量化参数计算第二量化参数; 基于所述第二量化参数对解码的宏块重编码;以及, 提供重编码的宏块。
13.根据权利要求12所述的非暂时性计算机可读介质,其中计算所述第二量化参数包括在所述第一量化参数高于第一阈值时将所述第二量化参数设定为等于或低于所述第一量化参数,以及在所述第一量化参数低于第二阈值时将所述第二量化参数设定为高于所述第一量化参数。
14.根据权利要求13所述的非暂时性计算机可读介质,其中所述方法还包括将所述第一阈值和所述第二阈值定义为过去的输入量化参数的函数,其中所述过去的输入量化参数对应于原始用于压缩多个先前接收的编码宏块的量化设定。
15.根据权利要求12所述的非暂时性计算机可读介质,其中计算所述第二量化参数部分基于由所述编码宏块占据的比特的数量。
16.根据权利要求12所述的非暂时性计算机可读介质,其中计算所述第二量化参数部分基于所述宏块的视觉特征。
17.根据权利要求16所述的非暂时性计算机可读介质,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的方差。
18.根据权利要求16所述的非暂时性计算机可读介质,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的平均亮度。
19.根据权利要求12所述的非暂时性计算机可读介质,其中计算所述第二量化参数部分基于从编码器接收的输出编码参数。
20.根据权利要求19所述的非暂时性计算机可读介质,其中所述输出编码参数包括对应于用于对先前接收的编码宏块重编码的量化设定的、一个或多个过去的输出量化参数。
21.根据权利要求19所述的非暂时性计算机可读介质,其中所述输出编码参数包括输出比特率,其中所述输出比特率对应于由多个先前重编码的宏块占据的比特的平均数量。
22.根据权利要求21所述的非暂时性计算机可读介质,其中计算所述第二量化参数包括如果所述输出比特率高于第一预定义目标比特率,则增加所述第二量化参数,以及如果所述输出比特率低于第二预定义目标比特率,则减小所述第二量化参数。
23.一种用于优化包括一个或多个视频帧的编码视频流的视频优化器,每个视频帧包括多个宏块,并且每个宏块包括多个像素,所述视频优化器包括: 解码器,其被配置为接收编码宏块、对所述编码宏块解码以及提取第一量化参数,其中所述第一量化参数对应于原始用于压缩所述编码宏块的量化设定; 量化参数调节模块,其被配置为至少部分基于所述第一量化参数计算第二量化参数;以及 编码器,其被配置为基于所述第二量化参数对解码的宏块重编码以及提供重编码的宏块。
24.根据权利要求23所述的视频优化器,其中计算所述第二量化参数包括在所述第一量化参数高于第一阈值时将所述第二量化参数设定为等于或低于所述第一量化参数,以及在所述第一量化参数低于第二阈值时将所述第二量化参数设定为高于所述第一量化参数。
25.根据权利要求24所述的视频优化器,其中所述量化参数调节模块还被配置为将所述第一阈值和所述第二阈值定义为过去的输入量化参数的函数,其中所述过去的输入量化参数对应于原始用于压缩多个先前接收的编码宏块的量化设定。
26.根据权利要求23所述的视频优化器,其中计算所述第二量化参数部分基于由所述编码宏块占据的比特的数量。
27.根据权利要求23所述的视频优化器,其中计算所述第二量化参数部分基于所述宏块的视觉特征。
28.根据权利要求27所述的视频优化器,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的方差。
29.根据权利要求27所述的视频优化器,其中所述宏块的视觉特征包括或者所述编码宏块或者所述解码的宏块的多个像素的平均亮度。
30.根据权利要求23所述的视频优化器,其中计算所述第二量化参数部分基于从编码器接收的输出编码参数。
31.根据权利要求30所述的视频优化器,其中所述输出编码参数包括对应于用于对先前接收的编码宏块重编码的量化设定的、一个或多个过去的输出量化参数。
32.根据权利要求30所述的视频优化器,其中所述输出编码参数包括输出比特率,其中所述输出比特率对应于由多个先前重编码的宏块占据的比特的平均数量。
33.根据权利要求32所述的视频优化器,其中计算所述第二量化参数包括如果所述输出比特率高于第一预定义目标比特率,则增加所述第二量化参数,以及如果所述输出比特率低于第二预定义目标比特率,`则减小所述第二量化参数。
【文档编号】H04N19/40GK103828369SQ201280039090
【公开日】2014年5月28日 申请日期:2012年6月8日 优先权日:2011年6月10日
【发明者】J.泰德曼, A.彭纳 申请人:茨特里克斯系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1