重叠变化处理中的减少的DC增益失配和DC泄漏
背景
变换编码是在许多音频、图像和视频压缩系统中使用的一种压缩技术。未压缩的数字图像和视频通常作为以二维(2D)网格排列的图像或视频帧中各位置处的图元或色彩的样本来表示或捕捉。这在常规上被称为图像或视频的空间域表示。例如,矩形形状的图像的典型格式包括8位色彩样本的三个二维阵列。每一样本都是表示网格中的空间位置处的色彩分量的值的数字,其中每一个色彩分量都表示沿着诸如RGB或YUV等色彩空间中的轴的幅度。这些阵列中的一个中的单独样本可被称为像素。(在其他常见用途中,术语像素被用来指在空间上位于同处的n个色彩分量样本的n元组—例如,指给定空间位置的R、G和B色彩分量值的3元组分组—然而,该术语在此处可另选地用来指标量值样本)。各种图像和视频系统可使用不同的色彩、空间和时间分辨率的采样。类似地,数字音频通常被表示为时间采样的音频信号流。例如,典型的音频格式由表示有规律间隔的时刻处的音频信号幅度的16位音频信号幅度样本流构成。
未压缩的数字音频、图像和视频信号可消耗大量的存储和传输能力。变换编码可以与其他编码技术一起用来减少表示这种数字音频、图像和视频所需的数据量,例如通过将信号的空间域(或时域)表示变换成频域(或其他类似的变换域)表示,以使得能够随后减少表示信号所需的数据量。数据量的减少通常通过应用被称为量化的过程或者通过选择性地丢弃变换域表示的特定频率分量(或者两者的组合),之后通过应用诸如自适应霍夫曼编码或自适应算术编码等熵编码技术来实现。量化过程可以基于各频率分量的估算出的知觉敏感度或基于其他准则来选择性地应用。对于给定比特率的输出,与直接在空间域中降低图像或视频的色彩样本保真度或空间分辨率、或者在时域中降低音频的样本保真度相比,适当地应用变换编码通常产生低得多的可察觉的数字信号降级。
更具体而言,典型的基于块变换的编码技术将数字图像的未压缩像素分成固定大小的二维块(X1……Xn)。
对给定块应用进行空间-频率分析的线性变换,这将块内时域样本转换成一般表示块间隔上相应的频带内的数字信号的强度的一组频率(或变换)系数。为了压缩,变换系数可被量化(即,诸如通过丢弃系数值的最低有效位或将较高精度数字集中的值映射到较低精度来降低精度),并且还被熵编码或可变长度编码成已压缩数据流。在解码时,变换系数将被逆量化和逆变换回到空间域以便几乎重构原始的色彩/空间采样的图像/视频信号(重构块
)。
利用块中的样本的相关并由此最大化压缩能力的能力是变换设计中的主要要求。在许多基于块变换的编码应用中,变换应当是可逆的以取决于在变换域中应用的量化运算既支持有损压缩又支持无损压缩。例如,在不应用量化的情况下,利用可逆变化的编码可使得能够在应用对应的解码时确切地重现输入数据。然而,这些应用中的可逆性的要求约束了对用于设计编码技术的变换的选择。变换的实现复杂性是另一重要的设计约束。因此,通常选择变换设计以使得应用正变换和逆变换只涉及小整数的乘法以及其他简单的数学运算,诸如加法、减法和移位运算(通过2的幂,诸如4、8、16、32等实现乘法或除法),以使得可获取具有最少动态范围扩展的快速整数实现。
诸如JPEG(ITU-T T.81|ISO/IEC 10918-1)和MPEG-2(ITU-T H.262|ISO/IEC 13818-2)等许多图像和视频压缩标准利用基于离散余弦变换(DCT)的变换。已知DCT具有有利的能量压缩特性,但在许多实现中也具有缺点。DCT由N.Ahmed,T.Natarajan和K.R.Rao所著的“Discrete Cosine Transform(离散余弦变换)”,IEEE计算机学报,C-23(1974年一月),第90-93页描述。
在压缩静止图像(或视频序列中的内编码帧)时,诸如JPEG和MPEG-2等许多常见标准将表示图像的阵列划分成8×8样本块并且对每一个这样的图像块应用块变换。这些设计中的给定块中的变换系数只受到块区域中的样本值的影响。在图像和视频编码中,这些独立构造的块中的样本的量化可导致块边界不连续性,并由此产生被称为块伪像或块效应的可见的恼人伪像。对于音频数据类似地,在非重叠的块被独立地进行变换编码时,在解码器处重构音频信号之际,量化误差将在信号中的块边界处产生不连续性。对于音频,可以听到周期性微小静电干扰声(clicking)效应。
用于缓解块伪像的技术包括使用解块滤波器来平滑跨块间边缘边界的信号值。这些技术并非没有缺陷。例如,解块技术可能需要大量计算实现资源。
另一种方法是通过使用如在H.Malvar所著的“Signal Processing withLapped Transforms(具有互搭变换的信号处理)”,Artech House,Norwood MA,1992中描述的重叠变换来减少块效应。一般而言,互搭变换是具有除了当前块中的样本之外还跨越相邻块中的某些相邻样本的输入区域的变换。同样,在重构侧,逆互搭变换影响相邻块中的某些已解码样本以及当前块的样本。由此,即使存在量化,逆变换也可保持跨块边界的连续性,由此导致块效应减少。互搭变换的另一优点是它能够利用跨块相关,这产生更好的压缩能力。在某些互搭变换实现中,样本的重叠块在正和逆变换中处理。在其他实现中,重叠处理与变换处理分开;对于编码,重叠处理在对非重叠块执行的正变换之前跨块边界执行,而对于解码,对非重叠块执行逆变换并且然后跨块边界执行重叠变换。
对于二维数据的情况,一般而言,互搭二维变换是当前块、以及在当前块的左侧、上面、右侧、下面的块的选择元素、以及可能当前块的左上、右上、左下和右下的块的函数。用于为当前块计算互搭变换的相邻块中的样本的数量被称为重叠或支持量。
概述
总而言之,详细描述涉及用于数字媒体压缩和解压缩的各种技术。例如,应用解决编码和/或解码期间的重叠处理操作中的DC增益失配和/或DC泄漏现象的各种技术。
根据所公开的技术的一方面,数字媒体解码设备在解码数字媒体时执行逆重叠变换。数字媒体解码设备对数字媒体执行逆频率变换。设备然后对逆频率变换的结果应用多个重叠算子。多个重叠算子中的第一个是内部重叠算子,而多个重叠算子中的第二个是边缘或角落重叠算子。多个重叠算子中的每一个都由基本上等价的DC增益来表征。这减少了算子之间的DC增益失配。
在对应的编码中,数字媒体编码设备在编码数字媒体时执行重叠变换。在预处理时,设备对数字媒体数据样本或对来自编码这种数字媒体数据样本的较早阶段的结果应用多个重叠算子。多个重叠算子中的第一个是内部重叠算子,而多个重叠算子中的第二个是边缘或角落重叠算子。同样,多个重叠算子中的每一个都由基本上等价的DC增益来表征,这减少了算子之间的DC增益失配,并由此提高了压缩性能。数字媒体编码设备对重叠预处理的结果执行频率变换。除了DC增益失配减少之外,多个重叠算子在许多情况下显示出减少的DC泄漏。
根据所公开的技术的另一方面,数字媒体解码设备在已编码比特流中接收指示所选小块边界选项的信息,其中该所选小块边界选项指示对重叠算子的硬小块边界处理以及对重叠算子的软小块边界处理中的一个。至少部分地基于所选小块边界选项,数字媒体解码设备执行逆重叠处理。例如,软小块边界处理由跨小块边界的重叠处理来表征,而硬小块边界处理由这一跨小块边界的重叠处理的缺失来表征。在某些实现中,逆重叠处理可包括应用被设计成具有减少的DC增益失配和/或DC泄漏的重叠算子。
在对应的编码中,数字媒体编码设备在使用对重叠算子的硬小块边界处理和对重叠算子的软小块边界处理之间进行选择。数字媒体编码设备根据所选小块边界选项来执行重叠处理。该设备还在已编码比特流中发信号通知指示所选小块边界选项的信息。在某些实现中,这允许在第一模式(硬小块)和第二模式(软小块)之间进行切换,其中第一模式通常具有较低压缩效率但不具有小块之间的依赖关系,第二模式通常具有较高压缩效率但具有小块之间的依赖关系。
以上概述只是简要概览并且并不旨在描述此处所呈现的本发明的所有特征。参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
附图简述
图1是包括利用可逆重叠算子的互搭变换的编码器的流程图。
图2是包括对应的逆互搭变换的解码器的流程图。
图3是示例实现中的块排列的图示,描绘了示例实现中的供在第一阶段重叠变换中使用的以及用于重叠变换的第二阶段中的全分辨率通道的4x4内部重叠算子、4x1边缘重叠算子和2x2角重叠算子的布局。所描绘的重叠算子还在示例实现中的逆重叠变换的对应阶段中使用。
图4是示例实现中的块排列的图示,描绘了示例实现中的供在用于4:2:2下采样色度通道的第二阶段重叠变换中使用的2x2内部重叠算子、2x1边缘重叠算子和1x1角重叠算子的布局。所描绘的重叠算子还在示例实现中的逆重叠变换的对应阶段中使用。
图5是示例实现中的块排列的图示,描绘了示例实现中的供在用于4:2:0下采样色度通道的第二阶段重叠变换中使用的2x2内部重叠算子、2x1边缘重叠算子和1x1角重叠算子的布局。所描绘的重叠算子还在示例实现中的逆重叠变换的对应阶段中使用。
图6A是描绘用于选择和发信号通知硬或软小块边界以便进行重叠处理的示例方法的流程图。
图6B是描绘用于接收所选择的硬或软小块边界指示符以便进行逆重叠处理的示例方法的流程图。
图7A是描绘用于使用重叠算子来执行具有减少的DC增益失配和减少的DC泄漏的重叠变换的示例方法的流程图。
图7B是描绘用于使用重叠算子来执行具有减少的DC增益失配和减少的DC泄漏的逆重叠变换的示例方法的流程图。
图8是用于实现此处所描述的技术的合适计算环境的框图。
详细描述
以下描述涉及数字媒体压缩或解压缩系统,即编码器或解码器,其利用解决DC增益失配和/或DC泄漏现象的正/逆重叠变换设计。出于说明的目的,结合这些技术的压缩/解压缩系统的实施例是图像或视频压缩/解压缩系统。或者,此处所描述的技术可被结合到用于其他二维数据或其他媒体数据的压缩或解压缩系统,即编码器或解码器中。此处所描述的技术不要求数字媒体压缩系统以特定的编码格式来编码压缩的数字媒体数据。
以下呈现的示例实现示出了解决图像编码和解码中的DC增益失配和/或DC泄漏问题的解决方案。例如,这些解决方案可被结合到JPEG XR图像编码标准(ITU-T T.832|ISO/IEC 29199-2)中。另外,对第一和第二示例实现的各种选择使用在JPEG XR标准中参考和/或定义的算子。
这些实现还参考解决用于图像编码和解码中的重叠处理的4x4算子中的DC泄漏问题的各种方式,如在2008年6月30日提交的第12/165,474号美国专利申请中描述的。
1.编码器/解码器
如下示出并描述了代表性但一般化且简化的数据编码器和解码器。
图1和图2是在代表性二维数据编码器100和对应的解码器200中采用的过程的一般化图示。编码器100和解码器200包括使用解决DC增益失配和/或DC泄漏的技术的互搭变换处理。这些图示呈现了在结合二维数据编码器和解码器的压缩系统和解压缩系统中的对此处所描述的技术的使用和应用的一般化或简化说明。在基于这些减少的DC增益失配和DC泄漏技术的替换编码器和解码器中,比在该代表性编码器和解码器中示出的更多或更少的过程可用于二维数据压缩。例如,某些编码器/解码器还可包括色彩转换、任何种类的色彩格式处理、可缩放编码等。所述压缩和解压缩系统(编码器和解码器)可提供无损和/或有损的二维数据压缩,这取决于可基于一个或多个量化控制参数的量化的应用,量化控制参数控制在大范围的可选择保真度上的已编码表示中的保真度损失程度,范围从完美无损到非常粗糙的(高压缩比)表示。
二维数据编码器100产生压缩比特流120,压缩比特流220是作为输入提供给编码器100的二维数据110的更紧凑表示(对于典型输入)。例如,二维数据输入可以是图像、视频序列的帧、或具有两个维度的一般被称为图像的其它数据。在区域排列阶段130中,编码器100将输入数据组织成块以供稍后处理。例如,块是4x4样本块、2x4样本块或2x2样本块。或者,块具有其他大小。
在正重叠处理的第一阶段140,编码器对输入数据块应用重叠算子。在一示例性实施例中,正重叠算子(被示为阴影块142)是四个重叠变换算子。编码器100然后对各个块执行块变换150。
编码器100将与各个块的DC系数AC系数分开以便随后编码。编码器100对DC系数执行重叠处理和正频率变换的附加步骤。可跳过重叠处理的附加步骤,并且该附加步骤可使用和第一阶段相同的重叠算子或不同的重叠算子。例如,在某些实现中,编码器100可选择是否执行重叠处理的附加步骤,并且在已编码数据中发信号通知该决定供解码器用于决定执行哪一个逆重叠处理。编码器量化170DC系数的附加重叠变换的结果,并且该编码器量化AC系数。编码器然后对这些系数进行熵编码180,并且分组化经熵编码的信息以便于在比特流120中连同指示解码器200将在解码时使用的编码决定的辅助信息一起发信号通知。
参考图2,作为简要概览,解码器200执行逆过程。在解码器侧,从其在压缩比特流205中的各自的分组中提取210变换系数位,从中DC和AC系数本身被解码220和解量化230。DC系数240通过应用逆变换来重新生成,并且在使用跨DC块边缘应用的合适的算子的后变换滤波中“逆重叠”DC系数的平面。随后,通过向从比特流中解码的DC系数和AC系数242应用逆变换250来重新生成样本块。最后,对所得图像平面中的块边缘进行逆重叠滤波260。逆重叠处理的第二阶段可使用和重叠处理的第一阶段相同的重叠算子或不同的重叠算子。这产生重构的二维数据输出290。
2.所述技术的一般示例
本节包含提高重叠变换编码和对应的解码的性能的技术的一般示例。
图6A描绘了用于选择和发信号通知硬或软小块边界以便进行重叠处理的示例方法600。诸如参考图1解释的编码器执行该技术。或者,另一编码器执行该技术。
在610,编码器选择硬小块边界和软小块边界中的一个来在重叠变换编码期间执行重叠处理时使用。例如,该选择可以基于存在于要编码的图像中的小块的数量、所期望的解码的计算复杂性、所期望的输出质量、用户设置、各个小块的单独解码(不具有小块间依赖关系)是否是所需应用特征、或另一因素。一般而言,使用图像中的硬小块边界导致更少的小块间依赖关系,因为小块的边缘被视作供进行重叠处理的图像边界。这方便以可能的压缩效率成本解码各个小块(与整个图像形成对比)(因为可能需要更多的位来缓解本可用重叠处理来避免的块伪像,并且因为重叠操作一般还改进被称为编码增益的变换压缩特性)。另一方面,使用软小块边界准许进行跨小块边界的重叠处理,但创建供解码的小块之间的依赖关系。在作出小块边界决定之后,编码器相应地执行重叠变换处理。
在620,编码器在已编码比特流中发信号通知所选小块边界决定。例如,所选小块边界决定可被发信号通知为单独的句法元素(例如,作为图像首部中的指示选择硬小块边界还是软小块边界来对给定图像进行重叠处理的单个位)。所选小块边界还可结合或联合其他句法元素来发信号通知,并且可以在除了逐个图像之外的基础上发信号通知。
图6B描绘了用于接收所选硬或软小块边界指示符的示例方法630。诸如参考图2解释的解码器执行该技术。或者,另一解码器执行该技术。
在640,解码器在已编码比特流中接收指示用于逆重叠处理的所选小块边界选项的信息。所选小块边界选项指示硬小块边界选项和软小块边界选项中的一个用于逆重叠处理。例如,所选小块边界选项可被接收作为单独的句法元素或联合编码的句法元素,并且该信息可以在图像的图像首部中接收或者在某一其他句法层面接收。
在650,解码器至少部分地基于所选小块边界选项来执行逆变换解码。例如,解码器执行、选择性地执行、或不执行跨小块边界的逆重叠处理,这取决于使用软小块还是硬小块。
小块边界决定指示符也可与所选重叠模式组合,以使得重叠模式选项指示重叠阶段和硬/软小块化决定的组合。例如,重叠模式选项的一个值可指示未应用重叠(例如,在具有两个阶段的分层重叠变换方案中未应用第一和第二重叠阶段),重叠模式选项的另一个值可指示只对软小块化应用两个重叠阶段中的第一个,重叠模式选项的另一个值可指示对软小块化应用两个重叠阶段,重叠模式选项的另一个值可指示只对硬小块化应用两个重叠阶段中的第一个,而重叠模式选项的又一个值可指示对硬小块化应用两个重叠阶段。这一重叠模式选项可以在执行重叠变换编码时选择、使用并在已编码比特流中发信号通知。已编码比特流由对应的解码器接收,并且所选重叠模式选项在执行逆重叠变换解码时被解码和使用。
图7A描绘了用于在编码期间在重叠变换中使用具有减少的DC增益失配和减少的DC泄漏的重叠算子的示例方法700。诸如参考图1解释的编码器执行该技术。或者,另一编码器执行该技术。
在710,编码器编码数字媒体,其中该编码包括使用具有减少的DC增益失配和减少的DC泄漏的多个重叠算子的重叠变换处理。具体而言,第一重叠算子(用于内部区域)具有第一DC增益,而第二重叠算子(用于边缘或角区域)具有基本上等价于第一DC增益的第二DC增益。在下文中为处于不同分辨率的亮度样本和色度样本块提供具有基本上等价的DC增益的内部重叠算子、边缘重叠算子和角重叠算子的示例。
在720,编码器产生已编码比特流。例如,该比特流遵循JPEG XT格式或另一格式。
图7B描绘了用于在解码期间在逆重叠变换中使用具有减少的DC增益失配和减少的DC泄漏的重叠算子的示例方法730。诸如参考图2解释的编码器执行该技术。或者,另一解码器执行该技术。
在740,解码器接收已编码比特流。例如,该比特流遵循JPEG XT格式或另一格式。
在750,解码器执行使用具有减少的DC增益失配和减少的DC泄漏的多个重叠算子的逆重叠变换处理。具体而言,第一重叠算子(用于内部区域)具有第一DC增益,而第二重叠算子(用于边缘或角区域)具有基本上等价于第一DC增益的第二DC增益。在下文中为处于不同分辨率的亮度样本和色度样本块提供具有基本上等价的DC增益的内部重叠算子、边缘重叠算子和角重叠算子的示例。
术语“基本上等价的DC增益”并不意味着重叠算子必须具有恰好相同的DC增益。而是在考虑操作约束和计划应用的情况下,DC增益差异应足够小以减少(或甚至消除)由于重叠算子之间的DC增益差异而导致的不合需要的伪像。DC增益的目标相似性水平可取决于目标实现复杂性对比所需质量以及其他因素而变化。作为示例,以下呈现的重叠算子的集合在各个集合中具有基本上等价的DC增益。
3.示例实现
这些示例实现包括互搭变换技术。
3.1理论基础
如上所述,互搭变换(也被称为重叠变换)在概念上与块变换相似。常规的块变换具有以下两个步骤:
1.将输入数据划分成块区域(包括一维系列的样本串或具有诸如图像等二维数据集中的矩形块形状的样本阵列串的区域),以及
2.对每一块应用变换过程以分析/分解其频率内容。
对于压缩应用程序而言,量化块变换的输出,并且对结果应用熵编码。这些步骤有时与诸如预测过程和概率估算过程等其他操作组合。在解码期间,解码器对这些处理阶段中的每一个应用逆操作或似逆操作。
与块变换相关联的公知现象是产生块伪像,块伪像是可出现在从解码过程中产生的重构近似中的知觉不连续性。缓解块伪像的公知方法是使用互搭变换。如上所述,在互搭变换中,形成对变换过程的输入的数据块彼此重叠。在使用互搭变换时引发的一个问题是如何处理信号边缘。在输入数据样本集的边缘(诸如图像边缘)处,最初是对编码器的互搭变换输入的一部分的一些数据不存在。系统设计者必须确定如何处理这些边缘情况。
在图像编码技术中,关键概念是将较大的图像分解成多个小块。小块是恰好或近似地对应图片的特定(最初为矩形的)空间图像区域的数据集。通过将图像分割成小块并单独地编码每一个小块,可能访问图像的一部分并且在不解码整个图像的情况下解码该部分。访问图像的特定区域的能力在图像很大时可以尤其有用。然而,将大图像分割成较小的小块区域可以在图片中创建更多边缘——即,将小块与图像中的其他小块分开的边缘。在这些边缘中的每一个处,可能出现直接类似于块伪像的小块边界现象。
在JPEG XR标准的现有版本中,重叠操作在被启用时跨图像小块边界以及跨块变换的各个块边界应用。虽然该方法在某些情况下具有优点,但该设计选择的结果是,和不跨图像小块边界应用重叠操作的情况相比,基于小块的图像编码和检索在访问小块对齐的图像区域时具有更多的计算复杂性。这多出的计算成本是由于通过变换区域的重叠处理引入的跨相邻小块的数据依赖关系,这具有以下结果:为了解码特定小块区域,必须还访问并且至少部分地解码为空间上相邻的小块存储的数据。
相反,在此处呈现的示例实现中,小块边界被归类为两种类型中的一种,如下:
-“硬”小块边界,以使得小块的边缘以与图像边缘相同的方式处理,因此不存在跨小块边界应用的变换块的重叠,或者
-“软”小块边界,其中变换块的重叠跨小块边界应用。
在诸如JPEG 1和JPEG 2000等现有设计中,所有小块边界都作为硬小块边界来处理。相反,在FPEG XR标准的现有版本中,小块边界作为软小块边界来处理。每一种类型的边界处理实际上在某些情况下都是有用的。在此处呈现的示例实现中,编码器可选择使用硬或软小块边界作为其判断,并且连同图像数据的压缩表示一起发信号通知该选择。此外,在此处呈现的示例实现中,即使在使用硬小块边界时,但给定小块中的接近小块边界的至少一些边缘样本用边缘算子来进行重叠处理,以便减少可由于在小块中应用内部重叠算子而导致问题的DC增益失配。
示例实现还使用基于提升的变换操作。被称为“DC泄漏”的现象有时可以是这些变换中的问题。如果变换显示出DC泄漏,则正变换的输出可能包含某些恒定值输入信号的显著的非DC变换系数(对于其理论上DC系数应当仅是非零频率系数)。DC泄漏有时可导致已解码输出中的压缩性能损失和可察觉的伪像(诸如平滑区域中的波或失真)。
在大图像中,只在图像的外边界附近出现某些压缩性能损失和可察觉伪像在压缩编码设计中可以是可接受的。然而,因为使用硬小块边界的小块分割创建引发这一现象的更多区域,所以在设计可包括硬小块边界支持时仔细地设计边缘区域的处理变得更重要。
图像编码器中的小块支持引发的问题还可引发系统层面的对大“元图像”的更高级的支持,其中元图像从各自被单独地编码的多个较小图像中被构造成较大数据集。同样,在这一使用情况下,仔细地处理图像边缘更得更加重要。
由此,期望具有硬小块边界编码选项,以使得每一个图像小块都可进行独立处理。一种解决方案是与总图像边界相同地处理小块边界。然而,在某些情况下,变换设计在图像边缘附近使用的操作中具有不合需要地高的DC泄漏现象。另外,并且甚至更重要地,在边缘处理操作的输出和对图像的内部区域的处理之间存在DC增益差异。
识别几个点能帮助解决靠近图像边界的重叠变换中的DC增益失配和DC泄漏。首先,在现有实现中,重叠算子受到内部算子和角及边算子之间的DC增益失配的损害,从而造成降低的压缩效率和显著的视觉伪像。其次,在现有实现中,边、角、以及色度内部算子也受到DC泄漏的损害,这也造成降低的压缩效率和显著的视觉伪像。另外,在现有实现中,在4:2:0和4:2:2色度的情况下,用于处理图像的内部区域的DC泄漏特性也是有问题的。
3.2示例实现的概览
各示例实现使用分层互搭的变换。该变换具有四个阶段:
1.第一阶段重叠处理;
2.第一阶段核心变换;
3.第二阶段重叠处理;
4.第二阶段核心变换。
重叠阶段相对于核心变换算子作用于倾斜网格。即,核心变换作用于在与图像中的左上像素对齐的网格中排列的4x4块。重叠阶段作用于相似大小的网格,但距左上角像素有2个像素的水平偏移和2个像素的垂直偏移。对应的逆重叠变换也具有四个阶段:第一阶段逆核心变换,第一阶段逆重叠处理,第二阶段逆核心变换,以及第二阶段逆重叠处理。
不幸的是,如先前实现的,重叠算子拥有DC增益失配和DC泄漏的缺点。具体而言,边缘重叠算子(在重叠阶段的网格偏移引入的2个像素宽的边缘中操作的算子)是有问题的。因为硬小块化涉及将这些边缘算子大量用于图像的中央区域(作为允许硬小块化的最自然的方案),所以这些算子所带的问题导致的伪像变得太过明显。即使没有硬小块化,以前的重叠算子也在图像中产生不可接受的可见伪像量。
在本文呈现的示例实现中,重叠变换是通过6个不同的算子来实现的。它们被编组成两组三个算子,全分辨率组和色度组。这三个全分辨率重叠算子是:
1.Overlap4x4算子——内部重叠处理运算;
2.Overlap4x1算子——边缘重叠处理运算;
3.CornerOverlap2x2算子——角重叠处理运算。
图3描绘这些算子的布局的示图300。图3描绘样本的2块x2块区域。点表示样本,并且中央的水平和垂直虚线指示用于变换编码和解码的块边界。圆角框表示支持各重叠算子的每一个的区域。中央4x4样本区域周围的圆角框310表示内部Overlap4x4算子,四个角2x2样本区域周围的圆角框(例如,320)表示CornerOverlap2x2算子,并且其他8个4x1(或1x4)样本区域周围的圆角框(例如,330)表示Overlap4x1算子。这三个全分辨率算子被用于第一阶段重叠变换中的所有通道以及第二阶段重叠变换中的全分辨率通道(即,4:4:4采样模式中的亮度和色度)。
这三个色度算子是:
1.Overlap2x2算子——内部重叠处理运算;
2.Overlap2x1算子——边重叠处理运算;
3.CornerOverlap1x1算子——角重叠处理运算。
这些色度算子被用于下采样(4:2:2或4:2:0重新采样)的色度通道的第二阶段重叠变换。
图4示出这些色度算子在应用于使用4:2:2重新采样的色度通道时的布局的示图400。图4描绘用于4:2:2下采样的色度通道的第二阶段重叠变换的重叠算子。对于2x2的块排列,重叠色度算子的布局被应用于4:2:2样本。点表示样本,并且中央的水平和垂直虚线指示用于变换编码和解码的块边界。圆角框(以及圆圈)因而表示各重叠算子的域/支持。中央2x2样本区域周围的圆角框410表示内部Overlap2x2算子,四个角1x1样本区域周围的圆角框(例如,420)表示CornerOverlap1x1算子,并且其他8个2x1(或1x2)样本区域周围的圆角框(例如,430)表示Overlap2x1算子。
图5示出这些色度算子在应用于使用4:2:0重新采样的色度通道时的布局的示图500。图5描绘用于4:2:0下采样的色度通道的第二阶段重叠变换的重叠算子。对于2x2的块排列,重叠色度算子的布局被应用于4:2:0样本。点表示样本,并且虚线指示用于变换编码和解码的块边界。圆角框(以及圆圈)因而表示各重叠算子的域/支持。中央2x2样本区域周围的圆角框510表示内部Overlap2x2算子,四个角1x1样本区域周围的圆角框(例如,520)表示CornerOverlap1x1算子,并且其他4个2x1(或1x2)样本区域周围的圆角框(例如,530)表示Overlap2x1算子。
设计这些算子时产生了两个问题:DC增益失配和DC泄漏。理想地,在这两个算子集合(全分辨率和色度)的每一个中,所有三个算子的DC增益因子应当是相等的。在三个DC增益不匹配时,产生DC增益失配的问题。
DC泄漏是对变换的完全平坦输入造成DC和AC系数的现象。DC泄漏由所产生的AC系数的大小来测量。
作为这两个问题的结果,只使用其DC系数(忽略所有高频系数)来编码的完全平坦的图像将不具有完全平坦的重构。经重构的像素值中的差可被看作两项的和:a)缩放的DC增益失配,以及b)DC泄漏。
差=缩放增益失配+DC泄漏。
Overlap4x4算子中的DC泄漏问题的一个解决方案在美国专利申请第12/165,474号中提出。
在本文呈现的示例实现中,对于其余5个算子(除Ovelap4x4全分辨率算子之外的5个算子)提出了降低或甚至消除DC增益失配和DC泄漏的多个解决方案。对于其余5个算子,DC增益失配的大小通常比DC泄漏的大小大得多,但DC泄漏造成的可察觉伪像一般更讨厌。因此,需要解决的主要问题是重叠算子之间的DC增益失配。次要问题是重叠算子中的DC泄漏。
下一章节描述启用软/硬小块边界决策的若干解决方案的句法和语义。再后章节描述被设计成消除现有重叠算子所造成的伪像的新重叠算子。除硬小块化场景之外,这些新重叠算子在“缝合”场景中也是有用的,在“缝合”场景中单个大型图像被分解成被独立地压缩的小的块。稍后,通过根据各图像的原始关系将各图像相邻地显示来将图像“缝合”在一起。
3.3硬/软小块化决策的句法的概览
示例实现支持硬和软小块边界。软小块边界对处理小块化图像中的大量小块而言更高效,并且缓解块伪像。硬小块边界允许对图像中的有限数量的小块进行更高效的处理。参考硬/软小块边界决策的句法和语义描述了两个类别的选项。
分块改变句法。第一类别的选项改变现有实现的句法。第一选项是添加指示是使用硬小块化还是软小块化的新句法元素。例如,新句法元素是图像首部中的一标志。
第二选项是添加已经指示重叠模式信息的重叠水平句法标志(OVERLAP_MODE)的值。在现有实现中,OVERLAP_MODE(重叠模式)是具有以下三个可能的值和对应解释的2位句法元素。
1.OVERLAP_MODE=0意味着重叠处理的任一阶段都不被应用。
2.OVERLAP_MODE=1意味着两个重叠处理阶段只有第一重叠处理阶段被应用。
3.OVERLAP_MODE=2意味着应用重叠处理的两个阶段。
第二个选项将OVERLAP_MODE句法元素更改为3位句法元素。以上重叠模式被更改为对应软小块化模式(至少对于OVERLAP_MODE=1或OVERLAP_MODE=2,因为OVERLAP_MODE=0是默认硬小块边界,且不具有重叠处理),并且添加以下附加值和解释。
4.OVERLAP_MODE=3意味着只应用第一个重叠处理阶段,并且以硬小块化格式执行重叠处理。
5.OVERLAP_MODE=4意味着应用两个重叠处理阶段,并且以硬小块化格式执行重叠处理。
不支持3位OVERLAP_MODE句法元素的解码器无法使用该句法元素来成功解码图像。因此,添加新位将导致传统解码器无法解码图像。
向后兼容句法。为了允许传统解码器处理新比特流(即使解码导致显著的伪像),可使用子版本号句法元素(在JPEG XR规范中被标记为RESERVED_C)的用途。例如,包含美国专利申请第12/165,474号中呈现的改变的比特流具有子版本值1,否则具有子版本值0。该子版本号的次低有效位可用于发信号通知硬或软小块化。在该方案中,对软件小块的使用通过将次低有效位设为零来发信号通知,而对硬小块的使用通过将次低有效位设为一来发信号通知。忽略子版本值的传统解码器将成功解码硬和软小块化图像两者,但显著的伪像可产生硬小块图像,因为默认使用软小块边界重叠处理。更先进的解码器将能够响应子版本号的值并且在使用硬小块化时正确地解码图像而没有伪像。
硬小块化设置将如下编码:
HardTilingTrueFlag(硬小块化真标志)=(RESERVED_C>>1)&1。
3.4现有重叠算子的概览
在解码器处,现有Overlap4x4算子被设计成具有缩放1/(s^2),其中s=0.8272。换言之,Overlap4x4算子按大致1.4614的比例放大。(这是如在美国专利申请第12/165,474号中描述的Overlap4x4算子)。现有Overlap4x1算子被设计成具有DC值的缩放1/s。换言之,Overlap4x1算子按大致1.2089的比例放大DC。现有角算子CornerOverlap2x2为空(不执行操作),因此对应的DC值具有隐式缩放1.0。应进行关于这些现有算子的若干观察。首先,对现有算子进行缩放通常确保逆重叠的基础是平滑的并且提供除了较少的显著伪像之外的更多的编码增益。第二,由算子执行的实际缩放由于整数化的实现而稍微不同。第三,对应的编码器重叠算子对解码器的重叠算子执行逆缩放。第四,编码器处的这一按比例缩小具有对无损编码的某些暗示。对于无损编码,甚至完全平坦的图像也需要产生AC系数(并由此一定损失某一压缩效率)。第五,整数化实现中使用的舍入对某些分析和经验结果具有小效果。具体而言,诸如ScalingGainMismatch(缩放增益失配)和DCLeakageRatio(DC泄漏比)等许多数量只是接近线性。
在以下对重叠算子的描述中,为算子计算DC泄漏和DC增益失配。以下使用的用于计算DC泄漏的方法给出与基于矩阵系数的理论分析大致相同的结果,并且该方法更简单且更快速。最终,为了示出DC泄漏和DC增益失配的范围,通过考虑其中所有像素值都等于1000000(10^6)的输入块来为每一个重叠算子导出DC缩放增益比和DC泄漏。该输入被称为值X1。
用于全分辨率的现有Overlap4x4算子。对于示例的现有Overlap4x4算子,如果给定输入X1,则输出像素具有值1461540或1461547。由此,Overlap4x4算子的ScalingGainRatio(缩放增益比)大约是1.461543。输出值中的差异(即,|1461540-1461547|=7)是由于DC泄漏。现有Overlap4x4算子的DCLeakageRatio(DC泄漏比)是7/10^6。
对于8位样本图像,最大范围是+/-128/(缩放增益比)。由此,8位图像上的4x4算子的最大DC泄漏是(7/10^6)x128/缩放增益比=0.000896/缩放增益比=0.000614。16位图像上的最大DC泄漏是256x 0.000614~0.157。
用于全分辨率的现有Overlap4x1算子。对于示例现有Overlap4x1算子,如果给定输入X1,则数据像素具有值1206726或1205078。Overlap4x1的缩放增益比大约是1.2058。如果对逆Overlap4x1算子的输入全都是相同的值,则一对输入值上的该算子的缩放阶段的矩阵表示可被表示为:
其中x=3/32and y=3/16。对一个输入的缩放是1+xy+x(2+xy)=19771/16384~1.206726,而对另一输入的缩放是y+1+xy=617/512~1.205078。DC泄漏比是19771/16384-617/512=27/16384=0.001648。输出值中的差异(1206726-1205078=1648)是由于DC泄漏。DC泄漏比是(1648/10^6)。该DC泄漏是小的,但仍旧显著。
对于8位图像,最大DC泄漏是127/缩放增益比x(1648/10^6)~0.1788/缩放增益比~0.12247。对于16位样本图像,最大DC泄漏可以是+/-46/缩放增益比~31.35。
用于全分辨率的现有CornerOverlap2x2算子。在现有实现中,不存在用于角的重叠算子。缩放增益比为1.0,而DC泄漏比为0.0。
对于现有全分辨率算子的DC增益失配效应。在现有实现中,按照大小,主要问题是DC增益失配(如果不是知觉显著性的话),并且最坏情况效应可如下在理论上进行量化。对于8位样本图像,在边缘处,最坏情况ScalingGainMismatch(缩放增益失配)将会是(1.4615-1.205)x 128/缩放增益比~22.48。对于8位样本图像,在角处,最坏情况缩放增益失配将会是(1.4615-1.0)x 128/缩放增益比~59/缩放增益比~40.46。对于16位样本图像,边缘和角处的最坏情况缩放增益失配将会分别是22.4x256和40.46x256=10,393.6。总最坏情况差异可被逼近为缩放增益失配和DC泄漏的总和。
现有Overlap2x2色度算子。对于示例的现有Overlap2x2算子,如果对逆Overlap2x2算子的输入全都是相同的值,则一对输入值上的该算子的缩放阶段的矩阵表示可被表示为:
其中x=1/4且y=1/2。对一个输入的缩放是1+xy+x(2+xy)=53/32=1.656235,而对另一输入的缩放是y+1+xy=13/8=1.625。
DC泄漏比是53/32-13/8=1/32=0.03125。
现有Overlap2x1色度算子。对于示例的现有Overlap2x1算子,如果对逆Overlap2x1算子的输入全都是相同的值,则一对输入值上的该算子的缩放阶段的矩阵表示可被表示为:
其中x=1/8且y=1/4。对一个输入的缩放是1+xy+x(2+xy)=329/256=1.28515625,而对另一输入的缩放是y+1+xy=41/32。DC泄漏比是329/256-41/32=1/256=0.003906。
现有CornerOverlap1x1色度算子。在现有实现中,不存在用于角的1x1重叠算子。缩放增益比为1.0,而DC泄漏比为0.0。
3.5用于Overlap4x1算子的解决方案
呈现了用于Overlap4x1算子的三种解决方案,其中这三种解决方案中的一种具有多个变形。对其像素应用现有Overlap4x1算子被表示为Overlap4x1(a,b,c,d)。
用于Overlap4x1算子的解决方案1。因为现有Overlap4x1算子的DC增益大致是Overlap4x4的DC增益的平方根,所以第一种解决方案是应用现有Overlap4x1算子两次。Overlap4x1Solution1(a,b,c,d)被指定为:
1.Overlap4x1(a,b,c,d);
2.Overlap4x1(d,c,b,a)。
通过颠倒对算子的两次应用之间的次序,第一阶段所引入的DC泄漏可由第二阶段来取消。重复该排序将招致泄漏累积。不幸的是,该解决方案仍旧遭受显著的DC增益失配。
如果该Overlap4x1Solution1取得输入X1,则输出样本具有值1454061或1453548或1454852或1454340。缩放增益比大致是1.4542。DC泄漏比是(1454852-1453548)/10^6=1304/10^6。对于8位样本图像,8位图像的最坏情况缩放增益失配是(1.4615-1.4542)x128/缩放增益比=0.9344/缩放增益比~0.64。最坏情况DC泄漏可以是127/缩放增益比x1304/10^6~0.16561/缩放增益比。对于16位样本图像,最坏情况缩放增益失配是0.9344x256/缩放增益比~239.2064/缩放增益比~163。最坏情况DC泄漏可以是256x0.16561/缩放增益比~42.39/缩放增益比~28.76。按照复杂性,该解决方案大致具有两倍于现有Overlap4x1算子的复杂性。
用于Overlap4x1算子的解决方案2。解决方案2在精神上类似于解决方案1-它涉及对相同的样本应用单个算子两次。但对于该解决方案,现有Overlap4x1算子的缩放通过添加附加提升步骤来更改。如前,Overlap4x1 Solution2(a,b,c,d)被指定为:
1.Overlap4x1 Altered(a,b,c,d);
2.Overlap4x1 Altered(d,c,b,a)。
这些修改在缩放阶段中使用6个额外提升步骤,其中每一个提升步骤具有一个加法和一个移位。
该解决方案2背后的思路是改变x和y以使得最小化DC泄漏和DC缩放增益失配两者。(如此出所使用的,“最小化”意味着减少至可接受操作水平。)用于最小化DC泄漏的条件如下
1+xy+x(2+xy)=y+1+xy。
对y求解得到在这种情况下,Overlap4x1 Altered算子的一个阶段的缩放增益比可被计算为:
令Overlap4x4算子的DC增益的平方根被表示为k。因此,最小化缩放增益失配的x的值由下式给出:
或者:
一旦已经确定使用该等式的最小化缩放增益失配的x的值,就可使用早先的等式
来确定y(最小化DC泄漏)的值。在这种情况下,Overlap4x4 operator的缩放增益比
因此,k的值
并且DC缩放增益必须逼近该值以最小化DC缩放增益失配。因此,x的值必须逼近0.094589554,而y的值应根据早先的等式来选择。
实际上,x可由可使用二元提升步骤来实现的值来逼近;可选择y的值,并且然后y可由可使用二元提升步骤来实现的值来逼近。实验结果示出最小化DC泄漏的目标比最小化DC缩放增益失配的目标更重要。因此,对于给定x值的y的逼近应当比x的最初逼近更准确。
用于Overlap4x1算子的解决方案2a。选择x=3/32且y=775/4096=3/16+1/512-1/4096。该解决方案具有最少DC泄漏。该解决方案的DC增益是:
因此,该解决方案仍旧具有少量缩放增益失配。与现有Overlap4x1算子相比,不存在用于实现x的附加提升步骤。与现有Overlap4x1算子相比,y的实现使用两个附加提升步骤。
用于Overlap4x1算子的解决方案2b。选择x=97/1024=3/32+1/1024且y=49/256=3/16+1/256。该解决方案具有最少DC泄漏。该解决方案的DC增益是:
因此,该解决方案仍旧具有少量缩放增益失配,但少于用于Overlap4x1算子的解决方案2a。注意,与现有Overlap4x1算子相比,有一个用于实现x的附加提升步骤。与现有Overlap4x1算子相比,y的实现使用一个附加提升步骤。因为缩放阶段要求应用x两次,且应用y一次,所以在用于Overlap4x1算子的新解决方案2b中存在3个额外的提升步骤。
用于Overlap4x1算子的解决方案2c。选择x=775/8192,3/32+1/1024-1/8192且y=391/2048=3/32+1/512-1/2048。该解决方案的DC增益是:
因此,该解决方案具有最少量的缩放增益失配。在实现x时存在两个额外的提升步骤。在实现y时存在两个额外的提升步骤。因为缩放阶段要求应用x两次,且应用y一次,所以该新解决方案中存在6个额外的提升步骤。
对Overlap4x1的修改具有进一步减少DC增益失配和DC泄漏两者的优点。通过保留解决方案1的精神,其所有益处同样得到保留。如果该算子取得输入X1,则输出像素全都具有值1464631。缩放增益比接近1.4616。DC泄漏比接近0(比2-16小得多)。
对于8位样本图像,最坏情况缩放增益失配是(1.461543-1.461631)x128/缩放增益比=0.000088/缩放增益比。最坏情况DC泄漏是0。对于16位样本图像,最坏情况缩放增益失配是0.000088x 256/缩放增益比=0.022528/缩放增益比。最坏情况DC泄漏是0。
按照用于Overlap4x1算子的解决方案2c的复杂性,Overlap4x1 Altered(更改)中的六个附加步骤使其复杂性比Overlap4x1高1.5倍。由此,总解决方案Overlap4x1 Solution 2的复杂性大致是现有Overlap4x1算子的3倍。
用于Overlap4x1算子的解决方案3。对于该解决方案,通过现有Overlap4x4算子的缩放阶段来替换现有Overlap4x1算子的缩放阶段以形成新算子Overlap4x1 Solution 3。该解决方案是单步骤解决方案,并由此不必重复任何算子。这些修改确保Overlap4x1 Solution3的DC增益和DC泄漏与Overlap4x1算子的大致相同。然而,由于缩放阶段之外的操作的舍入效应而仍旧存在某些小差异。
如果该Overlap4x1 Solution3算子取得该输入X1,则输出像素具有值1461552、1461547、1461540和1461535。缩放增益比率接近1.45615435。DC泄漏比是(1461552-1461535)/10^6。
对于8位样本图像,最坏情况缩放增益失配是(1.461543-1.45615435)x128/缩放增益比~0.000064/缩放增益比。最坏情况DC泄漏是(1461552-1461535)/10^6x 128=0.002176/缩放增益比。
对于16位样本图像,最坏情况缩放增益失配是0.000064x 256/缩放增益比=0.022528/缩放增益比。最坏情况DC泄漏是0.002176x256=0.557056/缩放增益比<1/2。
例如,在一个现有实现中,对于边缘4x1样本块的重叠后滤波使用在下表中示出的运算。
在用于重叠4x1边缘算子的解决方案3之后,对缩放作出改变,如下表所示。
OverlapPostFilter4(a,b,c,d){ |
a+=d; |
b+=c; |
d-=((a+1)>>1); |
c-=((b+1)>>1); |
InvScale(a,d); |
InvScale(b,c); |
a+=((d x 3+4)>>3); |
b+=((c x 3+4)>>3); |
d-=(a>>1); |
c-=(b>>1); |
a+=d; |
b+=c; |
d x=-1; |
c x=-1; |
InvRotate(c,d); |
d+=((a+1)>>1); |
c+=((b+1)>>1); |
a-=d; |
b-=c; |
} |
其中InvScale()和InvRotate()如下定义。
InvScale(a,b){ |
a+=b; |
b=(a>>1)-b; |
a+=(b x 3+0)>>3; |
b+=((a x 3+0)>>4; |
b+=(a>>7); |
b-=(a>>10); |
} |
InvRotate(a,b){ |
a-=((b+1)>>1); |
b+=((a+1)>>1); |
} |
用新缩放阶段来替换Overlap4x1算子的旧缩放阶段使复杂性增加了两个额外缩放步骤。这大致将复杂性增加到对于边缘的现有Overlap4x1算子的复杂性的1.2倍。
3.6用于CornerOverlap2x2算子的解决方案
呈现了用于CornerOverlap2x2算子的两种可能的解决方案。
用于CornerOverlap2x2算子的解决方案1。解决方案1是为角形成新的Overlap6x1算子,将角像素与相邻边缘像素合并。该解决方案是不合需要的一个理由是因为它涉及消除DC增益失配和DC泄漏的复杂设计。另外,如果这些算子的定向是水平的,则图像宽度小于3个宏块,且该解决方案分解。类似地,如果这些算子的定向是垂直的,则高度小于3个宏块的4:2:0图像以及高度小于2个宏块的4:2:2图像不适用于该解决方案。
用于CornerOverlap2x2算子的解决方案2。解决方案2是以光栅扫描次序对角像素应用对边缘应用的相同的Overlap4x1算子。因为两个算子都操作4个像素,所以该解决方案的好处在于角算子将具有与边缘算子恰好相同的DC增益失配和DC泄漏特性。该解决方案被表示为:CornerOverlap2x2(a,b,c,d)=Overlap4x1 AppliedSolution(左上,右上,左下,右下)
在一具体实现中,对于每一个角,以相同的像素次序应用CornerOverlap2x2算子。这具有允许跨所有角的统一实现的优点。该实现的缺点在于旋转可引入某一小差错。对于Overlap4x1 Solution3,该差错将只在舍入中。或者,能够在每一个角使用旋转排序。
3.7用于对于色度的Overlap2x2算子的解决方案
在现有实现中,Overlap2x2算子的主要问题是DC泄漏。在本节中,呈现该算子的缩放阶段的重新设计,以使得减少DC泄漏。在以下章节中,Overlap2x1和CornerOverlap2x1算子被重新设计成对该新Overlap2x2算子进行增益匹配。
解码器处的该新Overlap2x2算子的DC泄漏可通过将对该算子的所有输入设为相同值来估算。如果对逆Overlap2x2算子的输入全都是相同的值,则一对输入值上的该算子的效应可被表示为:
对于没有DC泄漏,该条件是:
1+xy+y=x(2+xy)+1+xy,其中对y求解得到:
y=x(2+xy),于是
y=2*x/(1-x2)
DC泄漏的量可被量化为:
y-x(2+xy)。
现有Overlap2x2算子设置值x=1/4且y=1/2,并因此输入是(1+xy+y)=13/8且(x(2+xy)+1+xy)=53/32,并且该差异是1/32的DC泄漏的原因。对于色度的现有Overlap2x2算子的复杂性是小的,因为x和y的值服从使用非常简单的二元提升步骤的实现。
虽然通用解决方案可以改变x和y以缓解DC泄漏,但这些解决方案通常具有比对于色度的现有Overlap2x2算子更大的复杂性。因此,已经开发出一种在限制复杂性增加的同时减少DC泄漏的解决方案。
在一种可能的解决方案中,保留值x=1/4且调整y的值以使得减少DC泄漏。注意,使用y的提升发生,并因此该解决方案将具有与改变x同时保留现有y值的解决方案相比更小的复杂性。
对于色度的解决方案1 Overlap2x2算子。消除DC泄漏的y的值是y=2x(1/4)/(1-1/16)=8/15。该解决方案中的DC泄漏为零。然而,y=8/15无法使用二元提升步骤来实现。因此该解决方案具有较高复杂性,因为它需要除法运算。
对于色度的解决方案2a Overlap2x2算子。将值设为y=17/32,并且该解决方案可通过将二元提升步骤用作1/2+1/32来实现(没有乘数)。该值具有DC泄漏1/512。
对于色度的解决方案2b Overlap2x2算子。将y的值设为273/512。该解决方案可通过将二元提升步骤用作1/2+1/32+1/512来实现(没有乘数)。DC泄漏的值是1/8192。
对于色度的解决方案2c Overlap2x2算子。将y的值设为4369/8192。该解决方案可通过将二元提升步骤用作1/2+1/32+1/512+1/8192来实现(没有乘数)。DC泄漏的值是1/131072,即1/(2^17)。
注意。
因此,DC泄漏已经从1/32(0.03125)减少至1/(2^17)。因此,DC泄漏被减少至低于16位精度。这种情况下的DC缩放增益比是1+xy+y=54613/32768~1.666656494。
例如,在一个现有实现中,色度样本的内部2x2块的重叠后滤波使用在下表中示出的运算。
OverlapPostFilter2x2(a,b,c,d){ |
a+=d; |
b+=c; |
d-=((a+1)>>1); |
c-=((b+1)>>1); |
b+=((a+2)>>2); |
a+=((b+1)>>1); |
b+=((a+2)>>2); |
d+=((a+1)>>1); |
c+=((b+1)>>1); |
a-=d; |
b-=c; |
} |
在用于对于色度的overlap 2x2算子的解决方案2c之后,添加具有因子1/32、1/512和1/8192的二元提升运算,如下表所示。左移(>>)5、9和13位分别对应除以32、512和8192。
OverlapPostFilter2x2(a,b,c,d){ |
a+=d; |
b+=c; |
d-=((a+1)>>1); |
c-=((b+1)>>1); |
b+=((a+2)>>2); |
a+=((b+1)>>1); |
a+=(b>>5); |
a+=(b>>9); |
a+=(b>>13); |
b+=((a+2)>>2); |
d+=((a+1)>>1); |
c+=((b+1)>>1); |
a-=d; |
b-=c; |
} |
3.8用于Overlap2x1算子的解决方案
类似于用于Overlap4x1算子的解决方案,呈现了用于Overlap2x1算子的3种解决方案,其中一种解决方案具有多种变形。
用于Overlap2x1算子的解决方案1。因为现有Overlap2x1算子的DC增益大致是现有Overlap2x2算子的DC增益的平方根,所以第一种解决方案是应用现有Overlap2x1算子两次。Overlap2x1 Solution1(a,b)被指定为:
3.Overlap2x1(a,b);
4.Overlap2x1(b,a)。
通过颠倒对算子的两次应用之间的次序,第一阶段所引入的DC泄漏可由第二阶段来消除。重复该排序将招致泄漏累积。不幸的是,该解决方案仍旧遭受显著的DC增益失配。按照复杂性,该解决方案大致具有两倍于现有Overlap2x1算子的复杂性。
用于Overlap2x1算子的解决方案2。解决方案2在精神上类似于用于Overlap2x1算子的解决方案1-它涉及对相同的样本应用单个算子两次。但对于该解决方案,现有Overlap2x1算子的缩放通过添加附加提升步骤来更改。如前,Overlap2x1 Solution2(a,b)被指定为:
3.Overlap2x1 Altered(a,b);
4.Overlap2x1 Altered(b,a)。
用于Overlap2x1算子的解决方案2背后的思路是改变x和y以使得最小化DC泄漏和DC缩放增益失配两者。用于最小化DC泄漏的条件如下
1+xy+x(2+xy)=y+1+xy。
对y求解得到
在这种情况下,Overlap2x1 Altered算子的一个阶段的缩放增益比可被计算为:
令Overlap2x2算子的增益的平方根被表示为k。因此,最小化DC缩放增益失配的x的值由下式给出:
或者:
一旦确定使用该等式的最小化缩放增益失配的x的值,就可使用早先的等式
来确定y(最小化DC泄漏)的值。在这种情况下,Overlap4x4 operator的缩放增益比
因此,k的值
并且DC缩放增益必须逼近该值以最小化DC缩放增益失配。因此,x的值必须逼近0.127015153,而y的值应根据早先的等式来选择。
实际上,x可由可使用二元提升步骤来实现的值来逼近;可选择y的值,并且然后y可由可使用二元提升步骤来实现的值来逼近。对于该算子,实验结果示出最小化DC泄漏的目标比最小化DC缩放增益失配的目标要重要得多。因此,对于给定值x的y的逼近应当比x的初始逼近准确得多。
用于Overlap2x1算子的解决方案2a。选择x=1/8且y=65/256=1/4+1/256。该解决方案具有最少DC泄漏。该解决方案的DC缩放增益是:
因此,该解决方案仍旧具有少量的DC缩放增益失配。与现有Overlap2x1算子相比,不存在用于实现x的附加提升步骤。与现有Overlap2x1算子相比,y的实现使用一个附加提升步骤。
用于Overlap2x1算子的解决方案2b。选择x=65/512=1/8+1/512且y=33/128=1/4+1/128。该解决方案具有最少DC泄漏。该解决方案的DC缩放增益是:
因此,该解决方案仍旧具有少量缩放增益失配,但少于用于Overlap2x1算子的解决方案2a。与现有Overlap2x1算子相比,存在一个用于实现x的附加提升步骤。与现有Overlap2x1算子相比,y的实现要求一个附加提升步骤。因为缩放阶段要求应用x两次,且应用y一次,所以在用于Overlap2x1算子的新解决方案2b中存在3个额外的提升步骤。
用于Overlap2x1算子的解决方案2c。选择x=2081/16384且y=33/128。该解决方案的DC缩放增益是
因此,该解决方案具有最少量的DC缩放增益失配。在实现x时存在两个额外的提升步骤。在实现y时存在一个额外的提升步骤。因为缩放阶段要求应用x两次,且应用y一次,所以在用于Overlap2x1算子的新解决方案2b中存在5个额外的提升步骤。按照复杂性,Overlap2x1 Altered中的五个附加提升步骤使其复杂性比现有Overlap2x1算子大1.5倍。由此,总解决方案Overlap2x1 Solution2的复杂性大致是现有Overlap2x1算子的3倍。
用于Overlap2x1算子的解决方案3。在该解决方案中,通过现有Overlap2x1算子的缩放阶段来替换现有Overlap2x2算子的缩放阶段以形成新算子Overlap2x1 Solution3。该解决方案是单步骤解决方案,并由此不必重复任何算子。这些修改确保Overlap2x1 Solution3的DC增益和DC泄漏与Overlap2x2算子大致相同。然而,由于缩放阶段之外的操作的舍入效应而仍旧存在某些小差异。
例如,在一个现有实现中,对于边缘2x1色度样本块的重叠后滤波使用在下表中示出的运算。
OverlapPostFilter2(a,b){ |
b+=((a+4)>>3); |
a+=((b+2)>>2); |
b+=((a+4)>>3); |
} |
在用于对于色度的overlap2x1算子的解决方案3之后,添加具有因子1/32、1/512和1/8192的二元提升运算,如下表所示。左移(>>)5、9和13位分别对应除以32、512和8192。
OverlapPostFilter2(a,b){ |
b+=((a+2)>>2); |
a+=((b+1)>>1); |
a+=(b>>5); |
a+=(b>>9); |
a+=(b>>13); |
b+=((a+2)>>2); |
} |
用新缩放阶段来替换Overlap2x1算子的旧缩放阶段使复杂性增加了三个额外缩放步骤。这大致将复杂性增加到对于边缘的现有Overlap2x1算子的复杂性的1.2倍。
3.9用于CornerOverlap1x1算子的解决方案
CornerOverlap1x1算子呈现了特定设计挑战,因为它只作用于单个样本。DC泄漏因此不是问题,而DC增益失配是显著问题。以下描述若干可能的解决方案。
严格意义上说,CornerOverlap1x1算子在与其他重叠算子相同的意义上不是算子。“1x1”算子在单个样本之外将不具有支持区域。另一方面,以下示例1x1算子解决方案中的许多都涉及单个样本和从1x1区域之外的至少一个样本中确定的预测符之间的预测。为简明起见,这些角算子被称为角重叠1x1算子。
DC缩放是以下呈现的示例1x1算子解决方案中的许多不同于其他重叠算子的另一种方式。对于先前的4x4、4x1、2x2和2x1算子,缩放直接从重叠运算中产生。以下描述的对于某些示例CornerOverlap1x1算子的样本预测运算不导致相同方式的缩放。但这可能导致背离对于集合中的所有算子具有相同的DC增益的目标,实际上相似的缩放对于这些1x1角算子产生大多数时间,如下所述。
用于CornerOverlap1x1算子的解决方案1。类似于用于CornerOverlap2x2算子的解决方案1,一种解决方案是涉及一种新的Overlap3x1算子。该解决方案具有相似的缺点。该解决方案遭受最小图像大小要求(沿着算子的方向的3个宏块)以及附加DC增益失配和DC泄漏问题的可能性。
用于CornerOverlap1x1算子的解决方案2。对于该解决方案,利用角样本很可能与其相邻样本高度相关的事实。重要的是,考虑其在对DC系数进行重叠处理时的使用,该算子对每一个原始图像块的均值进行操作。因此,在1x1角重叠算子之前,角样本及其相邻样本的值具有高相似概率。如果消除DC增益失配,则角样本值将也在重叠变换后非常类似于其相邻样本。
因此,该解决方案使用基于对角样本的预测的方案。考虑左上角作为示例并且如下标记这些样本:
A B....
C D...
左上样本被标记为A,A的右侧的样本被标记为B,并且A下面的样本被标记为C。如下实现预测方案,假设使用就地计算。
1.在应用第二阶段重叠算子之前:
a.值(A)=值(A)-(值(B)+值(C)+1)>>1。
2.在应用第二阶段重叠算子之后:
a.值(A)=值(A)+(值(B)+值(C)+1)>>1。
因为A在步骤之后的剩余值很有可能很小,所以该运算大致等价于对角样本应用相同的增益。(而B和C可具有显著值,差异值A通常为零或接近零。在步骤1后,对相邻的B和C样本应用缩放(例如,通过应用边缘重叠算子)。当经缩放的B和C在步骤2中被加回差异值A时,所得值A在大多数情况下已经有效地被缩放成与B和C值相同的程度。)对其他三个角应用该解决方案是直接的。
用于CornerOverlap1x1算子的解决方案2具有相对于旋转对称的优点。一个缺点是该解决方案要求图像至少具有2个宏块的宽度和2个宏块的高度(仅仅对于4:2:0,而非4:2:2),否则预测方案变为不切实际的。
用于CornerOverlap1x1算子的解决方案3。呈现用于CornerOverlap1x1算子的与解决方案2的方案相似的第二方案。某些实现可以不单次执行重叠变换的每一阶段,而是使这些阶段交错。这可使得难以在重叠变换之前或之后同时访问B和C两者。为该解决方案提出以下方案:
1.在对B应用第二阶段重叠算子之前:
a.值(A)=值(A)-值(B)>>1。
2.在对C应用第二阶段重叠算子之前:
a.值(A)=值(A)-值(C)>>1。
3.在对B应用第二阶段重叠算子之后:
a.值(A)=值(A)+值(B)>>1。
4.在对C应用第二阶段重叠算子之后:
a.值(A)=值(A)+值(C)>>1。
步骤的排序仅仅必须使1出现在3之前且2出现在4之前。只要满足这两个条件,任何重新排序都是可接受的。用于CornerOverlap1x1算子的解决方案3在各种实现中允许与定时问题解耦。不幸的是,该解决方案也可能具有不存在于解决方案2中的某些舍入问题。另外,该解决方案共享与用于CornerOverlap1x1算子的解决方案2相同的特性。
用于CornerOverlap1x1算子的解决方案4。在该解决方案中,解决方案3被修改成只对水平方向操作,如下:
1.在对B应用第二阶段重叠算子之前:
a.值(A)=值(A)-值(B)。
2.对B应用第二阶段重叠算子之后:
a.值(A)=值(A)+值(B)。
该解决方案的优点是它涉及更少的存储器存取。因为它与用于CornerOverlap1x1算子的解决方案2和3的样本的一半多的样本交互,所以复杂性较低。该解决方案的缺点是它缺少对称性并因此具有旋转问题。该问题在考虑下采样引入比非对称更多的损失时得到缓解。如同用于CornerOverlap1x1算子的其他解决方案,在解决方案4中,图像(或硬小块)具有至少2个宏块的宽度。但一个优点是所有下采样的色度运算都是相似的。类似于解决方案2(以及解决方案3、5、6和7),用于计算A的差异的相邻样本预期具有与A非常相似的值。在步骤1之后,作为边缘重叠处理的一部分缩放相邻样本,并且然后将其加回步骤2中的角的差异A。因为差异A预期为零或接近零,所以角值被缩放成大致与相邻样本相同的程度。
用于CornerOverlap1x1算子的解决方案5。在该解决方案中,解决方案3被修改成只对垂直方向操作,如下:
1.在对C应用第二阶段重叠算子之前:
a.值(A)=值(A)-值(C)。
2.在对C应用第二阶段重叠算子之后:
a.值(A)=值(A)+值(C)。
该解决方案的优点是它涉及较少的存储器存取。因为它与用于CornerOverlap1x1算子的解决方案2和3的样本的一半多的样本交互,所以复杂性较低。如同解决方案4,该解决方案的缺点是它缺少对称性并因此具有旋转问题。该问题在考虑下采样引入比非对称更多的损失时得到缓解。如同用于CornerOverlap1x1算子的其他解决方案,在解决方案5中,4:2:0图像具有至少2个宏块的高度。该解决方案未引发其他大小要求。因此,4:2:0和4:2:2运算不是并行的,即该解决方案的另一缺点。
用于CornerOverlap1x1算子的解决方案6。用于CornerOverlap1x1算子的该解决方案是解决方案4和5的组合。具体而言,句法元素被添加到比特流以指定对于CornerOverlap1x1算子预测是水平的还是垂直的。该解决方案具有仅支持旋转的优点。句法元素的添加是该解决方案的缺点。
用于CornerOverlap1x1算子的解决方案7。该最终解决方案类似于解决方案4,不同之处在于将D的值用作A的预测符,而不是将B的值用作预测符。将D用作预测符的好处是旋转对称。然而,使用D的缺点是它可能是比B或C更糟的匹配。
4.计算环境
上述重叠处理发明可以在其中执行数字媒体信号处理的各种设备(例如,数字媒体编码和/或解码设备)中的任一种上实现,包括计算机、图像和视频记录、传输和接收设备、便携式视频播放器、数字媒体播放器、视频会议等。重叠处理发明可用硬件电路实现,以及用在计算机或在其他计算环境中执行的数字媒体处理软件实现,诸如图8中所示。
图8示出了其中可实现所描述的实施例的合适计算环境(800)的一个一般示例。计算环境(800)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可以在完全不同的通用或专用计算环境中实现。
参考图8,计算环境(800)包括至少一个处理单元(810)和存储单元(820)。在图8中,此最基本配置(830)包括在虚线内。处理单元(810)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(820)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等等),或两者的某种组合。存储器(820)存储实现所述具有用于重叠处理的多个小块边界选项的编码器/解码器和/或具有减少的DC增益失配的重叠算子的软件(880)。
计算环境可以具有附加特征。例如,计算环境(800)包括存储器(840)、一个或多个输入设备(850)、一个或多个输出设备(860),以及一个或多个通信连接(870)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(800)的各组件互连。通常,操作系统软件(未示出)为在计算环境(800)中执行的其它软件提供操作环境,并协调计算环境(800)的各组件的活动。
存储(840)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、CD-RW、DVD或可用于储存信息并可在计算环境(800)内访问的任何其它介质。存储器(840)存储实现所述具有用于重叠处理的多个小块边界选项的编码/解码和/或具有减少的DC增益失配的重叠算子的软件(880)。
输入设备(850)可以是诸如键盘、鼠标、笔或轨迹球之类的触摸输入设备、语音输入设备、扫描设备、或向计算环境(800)提供输入的另一设备。对于音频,输入设备(850)可以是声卡或接受模拟或数字形式的音频输入的类似设备,或向计算环境提供音频样本的CD-ROM读取器。对于图像或视频,输入设备(850)可以是超相继、TV调谐器或以模拟或数字形式提供输入视频的其他设备。输出设备(860)可以是显示器、打印机、扬声器、CD-写入器,或从计算环境(800)提供输出的另一设备。
通信连接(870)允许通过通信介质与另一计算实体进行通信。通信介质在已调制数据信号中传达诸如压缩音频或视频信息、或其它数据等信息。已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括利用电、光、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。
此处的数字媒体处理技术可在计算机可读介质的一般上下文中描述。计算机可读介质是可以是在计算环境内访问的任何可用介质。作为示例而非限制,对于计算环境(800),计算机可读介质包括存储器(820)、存储(840)、以及两者的组合。计算机可读介质是有形介质。计算机可读介质不包括已调制数据信号。
此处的数字媒体处理技术可在诸如程序模块中所包括的、在计算环境中的目标真实或虚拟处理器上执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。
出于表示的目的,详细描述使用了如“确定”、“生成”、“调整”和“应用”等术语来描述计算环境中的计算机操作。这些术语是对于由计算机执行的操作的高级抽象,不应该与人执行的动作相混淆。与这些术语相对应的实际计算机操作随着实现不同而不同。
在详细描述和附图中描述并例示本发明的原理之后,可以认识到,各实施方式可以在排列和细节上进行修改而不脱离这些原理。应该理解,此处所描述的程序、进程或方法未涉及或仅限于任何特定类型的计算环境,除非另外特别声明。根据此处所描述的原理,可以使用各种类型的的通用或专门的计算环境,或执行操作。可以以硬件实现以软件示出的实施例的元件,反之亦然。
鉴于可以应用本发明的原理的许多可能的实施例,作为本发明我们声明所有这样的实施例都在下面的权利要求书以及又等效内容的范围和精神内。