具体实施方式
在假设在解码过程期间没有或只有很少固有图像性质可以被进一步开发的情况下,压缩数据通常被视作随机数据。即,图像是利用明确或隐含地编码在压缩数据中的信息来重建的。
然而,关于视频的某些先验知识可以在解码器处被用于增强所解码的视频质量。例如,可以应用去块滤波器以移除强的块效应(blockiness),因为大多图像被已知为具有平滑的内容。
在另一示例中,基于视频信号可以稀疏地呈现的先验知识,标题为“Video codingusing compressive sensing”的共同所有的PCT申请No.PCT/US11/000064提出了在视频压缩中使用压缩感知。压缩感知是以小数目的测量呈现信号的一种技术,并且其可以在耐奎斯特采样率以下高效地呈现多种信号。利用在邻近像素之间的差通常在自然图像中很小并且因此梯度稀疏的先验知识,发展出了压缩感知模式来以变换系数的子集重建块。
当前实施例提供了一种方法和装置,其采用图像细化来改进视频压缩效率。诸如平滑度和奇异性的普通图像性质,可以被用于设计图像细化工具。奇异性指的是图像中可能存在边缘和纹理(即,邻近像素的灰度值可能显著变化)的图像性质。良好的图像细化工具应该在考虑平滑度的同时保留图像的奇异性。
图1A示出了利用图像特性来细化当前块的示例,其中,图像块140是待编码或解码的当前块,并且图像块110、120和130已经被编码或解码。图像块140可以初始地利用现有方法来重建。例如,其可以通过根据H.264标准的逆变换、去量化来重建。
利用早先编码过的相邻块(110,120,130)可以细化初始重建的块(140)。在一个实施例中,阴影区域150、160和170可以用于细化图像块140。阴影区域邻近于当前块并且其是早先编码的相邻块的部分。将由当前块(140)和阴影区域(150,160,170)形成的块记做扩展块(180),其中当前块(140)具有B*B个像素,并且扩展块(180)具有m*m(m=B+W)个像素。在一个更普遍的示例中,具有Bv*Bh个像素的当前块可以被扩展为(Bv+Wv)*(Bh+Wh)块。即,当前块的宽度(Bh)和高度(Bv)可以是不同的,并且在水平和竖直方向上的扩展的长度(分别为Wh和Wv)也可以是不同的。
在图1A的示例中,来自上方和左方的块的像素被用于形成扩展块。这是因为,大多现有的视频压缩标准按照格栅扫描顺序来编码图像块,并且上方和左方的块在当前块之前被编码或解码。从而,这些块可以按相同的方式在编码器和解码器两者处重建。当使用不同的编码顺序时,来自其它位置的块、例如右方的块和下方的块可以被选来细化当前块。
块尺寸(Bv*Bh)可以基于编码配置而变化(分辨率,比特率等)。其还可以在帧内从块到块地变化。例如,其可以被选为4*4、8*8、16*16、8*4或者4*8,或者其可以被选择为具有与变换或量化相同的尺寸。
扩展块(180)可以被看做由于压缩而被噪声劣化的图像块,并且因此其质量可以通过图像增强技术来细化。在所扩展的区域中,当前块(140)中的边界像素可以与该块内的其它像素一样大地受益于滤波器支持域。
去噪声滤波器或者其它图像处理方法可以用于细化扩展块,例如但不限于可以使用中值滤波器、双边滤波器或者SA-DCT(适形DCT)方法。滤波器长度可以基于计算复杂度和性能来选择,并且扩展区域的尺寸可以设计为适配于滤波器长度,例如W=(滤波器长度-1)/2。
参考图1B,示出了利用滑动窗口滤波进行图像细化的一个示例。在一个示例中,对于扩展块(180),采用双边滤波器来处理滑动窗口(190)内的像素。将滑动窗口的尺寸记做(2n+1)*(2n+1),然后对滑动窗口的中间像素I(x,y)的滤波过程如下进行:
步骤1:在滑动窗口中对于每个像素I(i,j)计算亲密度参数:
其中,σd是空间参数。
步骤2:在滑动窗口中对于每个像素I(i,j)计算相似度参数:
其中,σr是范围参数并且I(x,y)是像素值。
步骤3:在滑动窗口中对于每个像素I(i,j)计算滤波器系数:
步骤4:对于像素I(x,y)计算滤波后的结果:
在像素I(x,y)被滤波后,滑动窗口移至下一位置以继续滤波过程。当滤波完成时,对于与当前块和阴影区域对应的像素位置获得滤波后的结果。请注意,在以滤波后结果更新当前块内的像素的同时,对于阴影区域保持像素不变。
可以迭代地应用滤波器。即,在当前块被滤波后,可以形成新的扩展块,并且可以将所滤波的块再次滤波。可以选择迭代的数目,以均衡性能增益和计算复杂度。
在一个实施例中,B=8,W=n=2,并且双边滤波器的参数(σd和σr)被适应性地基于量化参数(QP)来计算:
上面等式中的计算对于H.264是特别合适的。当通过其它标准压缩视频序列时,可以因此而调整该等式。
如在图1A和1B中示出那样,可以细化初始重建的图像块。定义新的编码模式、即协作编码模式,以指代该将扩展块用于细化当前块的新编码方法。
给定在协作编码模式中的图像细化,则可能的是例如利用丢弃一些非零变换系数(即,将一些非零变换系数设定为0)的系数截断(truncation)或者系数阈值处理来发送较少的变换系数以维持视频质量。
当应用系数截断时,较少的非零变换系数需要被熵编码并且比特率降低。当然,由所丢弃的变换系数代表的信息也在解码器处丢失并且所解码的视频质量可能受累。通过以图像细化补偿这种质量损失,可以在降低的比特率上获得相同的质量,从而改进视频压缩效率。
为了获得良好的视频压缩效率,开发出一种用于确定多少非零系数应该通过数据训练而保持在块中的策略。尤其,估计剩余的非零系数的、记做nc的数目如何相关于块的图像特征。
在一个实施例中,将量化参数(QP)和块的方差(σ2)看做图像特征,并且推导函数f(.)以描述QP和σ2如何相关于nc。在数学上,该关系可以描述为nc=f(QP,σ2)。
为了获得函数f(.),将新的协作编码模式集成到编码器中。每个宏块被通过现有方法和其中实现系数阈值处理和图像细化的协作模式两者来编码。
为了收集用于训练的足够统计数据,在不同的QP上编码不同的视频序列。对于视频序列和QP的各个组合,还可以改变在截断后剩余的非零变换系数的数目。在一个示例中,将高频系数设定为0以用于系数截断,并且将非零系数的剩余数目对于8*8块从10变化为36。
在编码过程期间,现有的H.264方法的率失真代价被对于块计算为RDcost0,并且协作模式的率失真代价被对于块计算为RDcost(k),其中k是在截断后剩余的非零系数的数目。在两个率失真代价之间的差被计算为
ΔRDcost(k)=RDCost(k)-RDCostO。
用于各个编码的数据集(QP,σ2,k,ΔRDcost(k))被记录为训练数据集中的项。训练集中的数据项通过方差的对数(log10(σ2))来聚类。对于每个QP和每个方差的聚类,计算ΔRDcost(k)的平均值,并且引起最小平均ΔRDcost(k)的最优的k被作为nc与QP和σ2一起存储。从而,对于{QRσ2,nc}获得许多数据集。利用曲线拟合方法,可以导出nc对QP和σ2之间的关系。
将理解的是,训练数据集和所导出的关系高度相关于视频和编码参数。在一个示例设置中,视频通过H.264编解码器进行压缩,仅8*8变换被使能,并且将双边滤波用于图像细化。用于该示例性设置的函数被导出为:
nC=3.59log10σ2-0.86QP+43 (1)
当使用其它设置时,例如使用其它视频压缩标准,或者替代于8*8变换而使用4*4变换,或者应用并非双边滤波的其它图像细化,则应构建对应的训练数据集,并且可以获得新的函数或者新的函数参数。
在另一实施例中,在推导函数f(.)时可以将QP、非零系数的数目(ρ)以及扫描顺序(例如,折线扫描顺序)中最后的非零系数的索引(Ilast)考虑为图像特征。即,该关系可以描述为nc=f(QP,ρ,Ilast)。该实施例更简单,因为无需计算方差。
图2示出了利用系数阈值处理和图像细化进行视频编码的示例性方法200。该新的协作编码模式被包括在方法200中。H.264编码器被用于解释可以如何集成新的编码模式。然而,该新的模式可以被包括到符合其它视频编码标准的编码器中。
方法200在步骤205开始,该步骤将控制传递给循环限制步骤210。在步骤215,对于块执行帧内或帧间预测。预测残差、即在原始图像块和所预测的块之间的差在步骤220被变换为变换系数。在生成变换系数之后,编码过程可以根据H.264行进或者以协作模式行进。更高效的、例如具有较低率失真代价的模式将被选择以编码块。
图像块的根据H.264的压缩和重建在步骤232、236、240、244和248中执行。在步骤232,将变换系数量化为量化的变换系数,其在步骤236被熵编码。在步骤240对量化的变换系数进行逆量化,以获得去量化的变换系数,其在步骤244被逆变换以获得重建的预测残差。利用重建的预测残差和所预测的块(来自帧内/帧间预测),该块在步骤248被重建。然后可以在步骤265计算率失真代价(J2)。
另一方面,在步骤225、230、234、238、242、246和250执行利用协作编码模式来压缩和重建块。在量化步骤(230)之前,截断一些非零变换系数。在一个实施例中,可以将系数安排到折线扫描顺序中,并且在该扫描顺序末尾的非零系数可被设定为0。可以如之前所讨论那样基于量化参数、块方差、非零系数的数目或者最后的非零系数的索引来计算精确而言应截断多少系数。
所截断的系数然后在步骤230被量化并且在步骤234被熵编码。在步骤238的逆量化和步骤242的逆变换之后,在步骤246获得初始块重建。请注意,协作模式中的步骤230、234、238、242和246分别对应于步骤232、236、240、244和248。初始重建的块在步骤250例如利用如在图1A和1B中讨论那样的双边滤波器来细化。图像细化可以迭代地执行。例如,当对于图像细化使用滤波时,可以使用迭代滤波(即,可以再次滤波所滤波的像素)。当将其它图像处理工具用于图像细化时,可以为了迭代细化而再次处理所处理的像素。虽然图像细化可以使用来自相邻块的像素,但仅更新当前块的像素并且来自相邻块的像素保持未改变。然后在步骤260计算率失真代价(J1)。
在步骤270,检验协作编码模式是否具有较小的率失真代价、即其是否更高效。如果协作模式更高效,则在步骤280选择协作编码方法。否则,在步骤285选择根据H.264的编码方法。编码器明确地或隐含地信号告知是否选择了协作模式。如果使用协作模式,则关于图像细化的信息、例如滤波器系数应该被信号告知给解码器或者在解码器处预先确定。
当编码剩余块时可以使用所重建的块。例如,在利用图像细化编码块140之后,下一块可以将其用于图像细化。在每个块都被编码后,循环限制在步骤290结束并且过程在步骤299结束。
在方法200中,在协作编码模式中考虑系数阈值处理和图像细化两者。在其它实施例中,系数阈值处理和图像细化可以被分开应用。例如,系数阈值处理(225)可以在编码器中被跳过。在另一示例中,可以跳过图像细化(250)。
方法200测试协作编码模式和H.264编码模式两者以决定选择哪个编码模式。在其它实施例中,编码器可以在不测试两个模式的情况下基于例如图像性质、编码条件和编码器速度要求来决定使用哪个编码模式。
图3示出了与编码方法200对应的用于视频解码的示例方法300。方法300在步骤305开始,该步骤305将控制传递给循环限制步骤310。压缩数据在步骤320被熵解码以获得变换系数和其它编码信息。所编码的变换系数在步骤330被去量化,并且在步骤340被逆变换以形成预测残差。利用来自帧内或帧间预测的预测残差和所预测的块,该块在步骤350被重建。在步骤360,检验是否使用了协作模式。编码器可以隐含地或明确地信号告知是否选择了协作模式,并且解码器应该相应地得到该信息。如果使用了协作模式,则所重建的块在步骤370被细化。否则,控制被传递给步骤380。
在各个块被解码后,循环限制在步骤380结束,并且过程在步骤399结束。请注意,解码过程基本上与编码器内的重建过程相同。例如,步骤330、340和350分别对应于步骤240、244和248,并且应该在编码(250)和解码(370)处使用相同的图像细化。
图4示出了使用上面描述的系数阈值处理和/或图像细化的示例性视频编码器400的框图。装置400的输入包括待编码的视频。
在示例性编码器400中,待编码的帧以宏块为单位被处理。每个宏块都利用帧内或帧间模式来编码。当在帧内模式中编码宏块时,在方框460中执行帧内预测。在帧间模式中,宏块执行动作估计(475)和补偿(470)。编码器决定将帧内模式或帧间模式中的哪个用于编码宏块(440),并且通过将所预测的块从原始图像块减去(410)来计算预测残差。
然后在方框425处变换和量化预测残差。所量化的变换系数,以及动作矢量和其它语法元素被熵编码(445)以输出比特流。
编码器解码所编码的块以为进一步的预测提供基准。所量化的变换系数被去量化和逆变换,以在方框450处解码预测残差。在将所解码的预测残差和所预测的块组合(455)的情况下,重建图像块。例如,将滤波器或图像处理器应用于所重建的块或所重建的图片(465),以执行减少块效应伪影的去块滤波。所滤波或处理的图像被残差在基准图片缓冲器(480)处。
为了将系数阈值处理和/或图像细化集成到编码器400中,变换和量化模块(425)将执行如在步骤225中描述的适配性系数截断,并且滤波器(465)可以执行双边滤波以用于如在步骤250中描述的图像细化。请注意,滤波器/处理器(465)可以在各个图像块被重建后而不是在整个图像被重建后来执行图像细化。此外,滤波器/处理器(465)可以在整个图像被重建后执行其它滤波,例如去块。
图5示出了利用当前原理的示例性视频解码器500的框图。装置500的输入包括可以由视频编码器400生成的视频比特流。
比特流首先被熵解码(545)以获得变换系数、动作矢量和其它被编码的信息。变换系数被去量化和逆变换以在方框550处解码预测残差。在将所解码的预测残差和所预测的块组合(525)的情况下,图像块被重建。所预测的块可以根据帧内预测(560)或动作补偿的预测(570)来获得。滤波器或常用图像处理器(565)可以应用于所重建的块或所重建的图像。所滤波或处理的图像被存储在基准图片缓冲器(580)处。
类似于编码器,为了将图像细化集成到解码器400中,滤波器/处理器(565)可以执行双边滤波或者其它图像处理技术以用于如在步骤370中描述的图像细化。请注意,系数截断并不在解码器处执行。
现在参考图6,示出了数据传输系统或装置600,可以将上面描述的特征和原理应用于其。数据传输系统或装置600例如可以是头端或用于利用诸如卫星、电缆、电话线或地面广播的多种介质中的任一个来传送信号的传输系统。数据传输系统或装置600也可以,或者可替代地可以例如用于提供用于存储的信号。传输可以通过因特网或某其它网络来提供。数据传输系统或装置600能够生成和递送例如视频内容和其它内容。
数据传输系统或装置600从处理器601接收处理过的数据和其它信息。在一个实现方式中,处理器601训练一组视频序列以获得剩余的非零系数的数目与图像特征之间的关系。处理器601还提供元数据给600,以指示例如来自相邻块的像素被如何用于图像细化和双边滤波器系数。
数据传输系统或装置600包括编码器602和能够传送所编码的信号的传送器604。编码器602从处理器601接收数据信息。编码器602生成所编码的(多个)信号。编码器602可以执行系数阈值处理和图像细化。
编码器602可以包括子模块,包括例如集合单元,用于接收不同的信息和将其集合成结构化的格式以用于存储或传输。不同的信息可以包括例如已编码的或未编码的视频,已编码的或未编码的元素(诸如,例如指示是否使用了协作编码模式的标签),以及其它语法元素。在一些实施方式中,编码器602包括处理器601并且因此执行处理器601的操作。
传送器604从编码器602接收所编码的(多个)信号,并且将该所编码的(多个)信号在一个或多个输出信号中传送。传送器604可以例如适配于传送节目信号,其具有代表所编码的图片和/或与其相关的信息的一个或多个比特流。典型的传送器执行的功能诸如如下中的一个或多个:提供误差校正编码,在信号中交织数据,在信号中将能量随机化,以及利用调制器606将信号调制到一个或多个载波中。传送器604可以包括或接口于天线(未示出)。此外,传送器604的实现方式可以限于调制器606。
数据传输系统或装置600还可通信地耦接至存储单元608。在一个实现方式中,存储单元608耦接至编码器602,并且存储来自编码器602的所编码的比特流。在另一实现方式中,存储单元608耦接至传送器604,并且存储来自传送器604的比特流。来自传送器604的比特流可以包括例如已经被传送器604进一步处理过的一个或多个所编码的比特流。存储单元608在不同的实现方式中是标准DVD、蓝光盘、硬盘或者某其它存储设备中的一个或多个。
参考图7,示出了数据接收系统或装置700,可以将上面描述的特征和原理应用于其。数据接收系统或装置700可以配置为通过多种介质接收信号,诸如,例如,存储设备、卫星、电缆、电话线、或地面广播。信号可以通过因特网或某其它网络来接收。
数据接收系统或装置700可以例如是手机、计算机、机顶盒、电视或其它设备,其接收所编码的视频并且提供例如解码过的视频信号以用于显示(例如显示给用户),用于处理或用于存储。因此,数据接收系统或装置700可以将其输出提供给例如电视屏幕、计算机监视器、计算机(用于存储、处理或显示)、或者某其它存储、处理或显示设备。
数据接收系统或装置700包括接收器702,用于接收所编码的信号,诸如,例如在本申请的实现方式中描述的信号。接收器702可以接收来自图6的输出传输系统600的信号输出。
接收器702可以例如适配于接收节目信号,其具有代表所编码的图片的多个比特流。典型的接收器执行诸如,例如,如下功能中的一个或多个:接收所调制和所编码的数据信号,利用解调器704从一个或多个载波解调数据信号,将信号中的能量去随机化,将数据中的信号去交织,以及误差校正解码该信号。接收器702可以包括或接口于天线(未示出)。接收器702的实现方式可以限于解调器704。
数据接收系统或装置700包括解码器706。接收器702将所接收的信号提供给解码器706。由接收器702提供给解码器706的信号可以包括一个或多个所编码的比特流。解码器706输出所解码的信号,诸如,例如包括视频信息的所解码的视频信号。解码器706例如可以是图5中描述的解码器500。
数据接收系统或装置700也可通信地耦接至存储单元707。在一个实现方式中,存储单元707耦接至接收器702,并且接收器702访问来自存储单元707的比特流。在另一实现方式中,存储单元707耦接至解码器706,并且解码器706访问来自存储单元707的比特流。所访问的、来自存储单元707的比特流在不同的实现方式中包括一个或多个所编码的比特流。存储单元707在不同的实现方式中是标准DVD、蓝光盘、硬盘或某其它存储设备中的一个或多个。
来自解码器706的输出数据在一个实现方式中被提供给处理器708。在一些实现方式中,解码器706包括处理器708并且因此执行处理器708的操作。在其它实施方式中,处理器708是诸如,例如机顶盒或电视的下游设备的部分。
因此提供具有特定特征和方面的一个或多个实现方式。尤其,提供与利用图像细化的视频编码和解码相关的数个实现方式,其可以被用于改进视频压缩效率。然而,考虑这些实施方式的变型和附加应用,并且它们被包含在本公开中,所描述的实现方式的特征和方面可以适配于其它实现方式。
本申请中描述的实现方式和特征中的数个可以使用在MPEG HEVC标准和其扩展的上下文中。此外,这些实现方式和特征可以使用在(现有的或未来的)其它标准上下文中,或者在并不包括标准的上下文中。
当前原理中对于“一个实施例”或“实施例”或“一个实现方式”或“实现方式”的参考,及其其它变型意味着,结合该实施例描述的特定特征、结构、特性等包括在当前原理的至少一个实施例中。因此,在本说明书中不同位置出现的用语“在一个实施例中”或“在实施例中”或“在一个实现方式中”或“在实现方式中”以及任何其它变型,不必全都指相同的实施例。
此外,本申请或其权利要求可以涉及“确定”不同的信息。确定信息可以包括例如如下中的一个或多个:估计信息,计算信息,预测信息,或者从存储器取回信息。
将理解的是,下面的“/”、“和/或”和“至少一个”中的任一个例如在“A/B”、“A和/或B”和“A和B中的至少一个”的情况下的使用旨在包括仅选择首先列出的选项(A),或仅选择第二列出的选项(B),或选择两个选项(A和B)。作为进一步的示例,在“A、B和/或C”和“A、B和C中的至少一个”以及“A、B或C中的至少一个”的情况下,这样的用语旨在包括仅选择首先列出的选项(A),或仅选择第二列出的选项(B),或仅选择第三列出的选项(C),或仅选择首先和第二列出的选项(A和B),或仅选择首先和第三列出的选项(A和C),或仅选择第二和第三列出的选项(B和C),或选择所有三个选项(A和B和C)。这可以如已经显然那样由本领域和相关领域普通技术人员对于所列出那样多的项进行扩展。
此外,许多实现方式可以在如下中的一个或多个中实现:编码器(例如,编码器602)、解码器(例如,解码器706)、处理来自解码器的输出的后处理器(例如处理器708),或者给编码器提供输入的前处理器(例如,处理器601)。此外,本公开考虑其它实现方式。
在此描述的实现方式可以例如在方法或过程、装置、软件程序、数据流、或信号中实现。即使仅在实现方式的单一形式(例如仅作为方法来讨论)的上下文中进行了讨论,所讨论的特征的实现方式仍可以以其它形式(例如装置或程序)实现。装置可以在例如合适的硬件、软件和固件中实现。方法可以在例如在诸如,例如处理器的装置中实现,该处理器指的是通用的处理设备,其包括例如计算机、微处理器、集成电路或者可编程的逻辑设备。处理器也包括通信设备,诸如,例如,计算机、手机、便携式/个人数字助理(“PDA”)、以及有助于终端用户之间的信息通信的其它设备。
在此描述的不同过程和特征的实现方式可以在多种不同的设备或应用中具体化,特别是,例如,与视频编码、视频解码和视频数据的其它处理相关联的设备或应用。这种设备的示例包括编码器、解码器、处理来自解码器的输出的后处理器、将给编码器提供输入的前处理器、视频编码器、视频解码器、视频编解码器、网络服务器、机顶盒、笔记本电脑、个人计算机、手机、PDA、游戏机、或者其它通信设备。如应该清楚的,设备可以是移动式的,或者甚至安装在移动车辆中。
此外,方法可以通过由处理器执行的指令来实现,并且这种指令(和/或由实现方式产生的数据值)可以存储在处理器可读介质上,诸如,例如,集成电路、软件载体或者其它存储设备,该其它存储设备诸如,例如,硬盘、紧致盘(“CD”)、光盘(诸如,例如,DVD,通常称作数字多功能盘或者数字视频盘)、随机存取存储器(“RAM”)、或只读存储器(“ROM”)。指令可以形成有形地具体化在处理器可读介质上的应用程序。指令可以例如在硬件、固件、软件或组合中。指令可以例如在操作系统、单独的应用或两者的组合中找到。因此,处理器的特征可以在于例如配置为实施过程的设备和包括具有用于实施过程的指令的处理器可读介质(诸如存储设备)的设备两者。此外,处理器可读介质可以附加于或替代于指令地存储由实现方式产生的数据值。
如将对于本领域技术人员显然的,实现方式可以产生多种信号,其被格式化为承载例如可以被存储或传送的信息。该信息可以包括例如用于执行方法的指令、或者由上述实现方式之一产生的数据。例如,信号可以被格式化为将用于写或读所描述的实施例的语法的规则作为数据承载,或者将通过所描述的实施例写的实际语法值作为数据承载。这种信号可以被格式化为例如电磁波(例如,利用光谱的射频部分)或者格式化为基带信号。该格式化可以包括例如编码数据流和以所编码的数据流调制载波。信号承载的信息可以例如是模拟或数字信息。如已知那样,该信号可以通过多种不同的有线的或无线的链路来传送。信号可以存储在处理器可读的介质上。
已经描述了大量实现方式。然而,将理解的是,可以作出多种修改。例如,不同实现方式的元素可以被组合、补充、修改或移除以产生其它实现方式。此外,普通技术人员将理解的是,可以用其它结构和过程替代所公开的,并且所得到的实现方式将至少以基本上相同的方式来执行至少基本上相同的功能,以实现与所公开的实现方式基本上相同的结果。从而,通过本申请考虑这些和其它实现方式。