发明内容
本发明的目的是克服现有技术的至少一个缺点。为此,本发明涉及一种用于对表示分成块的图像的序列的编码数据流进行解码的方法。解码方法包括针对当前块的以下步骤:
-通过解码与当前块有关的编码数据流的第一部分,来重构残差数据的残差块,
-确定预测块,以及
-通过合并残差块和预测块,来重构当前块。
解码方法还包括步骤:在重构当前块之前,根据预测块的内容来重新组织残差块中的残差数据。
根据特定实施例,重构残差块的步骤包括以下步骤:
-按照根据预测块的内容而确定的解码系数块的扫描顺序,将编码数据流的第一部分解码成解码系数块。
-将解码系数块去量化成去量化系数块,以及
-将去量化系数变换成残差块。
根据本发明的特定特征,扫描顺序是根据以下步骤来确定的:
-对预测块应用高通滤波,
-以与残差块中的残差数据相同的方式,来重新组织滤波后的预测块中的数据,
-将滤波且重新组织后的预测块变换成系数块,
-确定扫描顺序,以使得按照值的降序来扫描系数。
根据本发明的特定方面,重新组织残差块中的残差数据的步骤包括以下步骤:
-针对至少两个空间方向,计算预测数据的空间梯度的能量级别,以及
-根据与最低能量级别相对应的空间方向,来确定残差数据的重新组织。
根据本发明的特定特征,根据以下等式来计算针对给定空间方向d的空间梯度的能量级别:
其中,F
d(i,j)=(B
pred*D
d)(i,j)
其中:-(i,j)表示滤波后的预测块Bpred的像素的坐标,
-*是卷积运算符,
-|.|与标准运算符相对应,以及
-Dd与空间方向d所限定的卷积模板(convolution mask)相对应。
根据本发明的另一特定特征,重新组织残差块中的残差数据的步骤还包括:根据沿着至少两个空间方向计算的空间梯度的能量级别,来计算附加能量级别。
本发明还涉及一种用于对分成块的图像的序列进行编码的方法。编码方法包括针对当前块的以下步骤:
-确定针对当前块的预测块;
-通过从当前块中提取预测块,来确定残差数据的残差块,以及
-对残差块进行编码。
编码方法还包括步骤:在编码残差块之前根据预测块的内容,重新组织残差块中的残差数据。
根据特定实施例,对残差块进行编码的步骤包括以下步骤:
-将残差块变换成系数块,
-将系数块量化成量化系数块,以及
-按照根据预测块的内容而确定的量化系数块的扫描顺序,来编码量化系数。
有利地,扫描的顺序是根据以下步骤来确定的:
-对预测块应用高通滤波,
-以与残差块中的残差数据相同的方式,来重新组织滤波后的预测块中的数据,
-将滤波且重新组织后的预测块变换成系数块,
-确定扫描顺序,以使得按照值的降序来扫描系数。
具体实施方式
本发明涉及一种对表示图像序列的编码数据流F进行解码的方法,以及一种将图像序列编码成编码数据流F的形式的方法。图像序列是若干图像的序列。每个图像包括像素或图像点,其中每个像素或图像点与至少一个图像数据相关联。例如,图像数据是亮度数据或色度数据。
术语“运动数据”应以最广义理解。运动数据包括运动矢量以及可能地参考图像索引,该参考图像索引使得能够在图像序列中识别参考图像。
术语“残差数据”表示提取其他数据之后所获得的数据。该术语与术语“残差”同义。残差块是与残差数据相关联的像素块。
术语“变换残差数据”表示已经应用了变换的残差数据。DCT(离散余弦变换)是在2003年9月J.Wiley & Sons公布的I.E.Richardson的题为“H.264 and MPEG-4 video compression”的书中章节3.4.2.2中描述的这种变换的示例。在I.E.Richardson的书中章节3.4.2.3中描述的小波变换以及哈达玛变换(Hadamard Transform)是其他示例。这种变换将图像数据(例如,残差亮度和/或色度数据)块“变换”成“变换数据块”,该“变换数据块”也被称作“频率数据块”或“系数块”。
术语“预测数据”表示用于预测其他数据的数据。预测块是与预测数据相关联的像素块。预测块是从与该预测块所预测的块相同图像的一个或多个块中获得的(这是空间预测或图像内预测),或者从不同图像的一个块或多个块中获得的(这是时间预测或图像间预测),其中,从一个块中获得预测块是单向预测,从若干块中获得预测块是双向预测。
图3示出了对表示分成块的图像的序列的编码数据流F进行解码的方法。针对当前块Bc描述了该方法,该方法可以应用于图像的若干块。
在步骤10期间,通过对与当前块Bc有关的编码数据流F的第一部分进行解码,来重构残差块Bres。图4示出了步骤10。该步骤10通常包括:根据解码系数块BQ的扫描顺序,将编码数据流F的第一部分熵解码100成块BQ。步骤10通常包括:将解码系数块BQ逆量化或去量化102成去量化系数块BQinv,并且对去量化系数块BQinv进行逆变换104,以获得残差块Bres。根据变型,步骤10仅包括:对解码系数进行逆量化102,以获得残差块Bres。
本发明不仅限于用于重构残差块Bres的方法。
根据特定实施例,对于要重构的每个残差块Bres,扫描顺序是固定的且是相同的。例如,在视频编码标准中定义了扫描顺序,在这种情况下编码方法和解码方法已知扫描顺序。
根据实施例变型,扫描顺序适用于例如要根据与残差块Bres相关联的预测块Bpred的内容来重构的每个残差块Bres。事实上,预测块Bpred的数据和残差块Bres的数据具有结构相似性。
在步骤12期间,针对当前块Bc来确定预测块Bpred。例如,根据在对与当前块Bc有关的编码数据流F的第二部分进行解码中获得的运动数据,来确定预测块Bpred。根据变型,通过模板匹配类型方法根据重构的运动数据来确定预测块Bpred。在Steffen Kamp等人在group ofthe ITU-T的第33次会议期间于2007年10月20日在中国深圳公开的题为Decoder Side Motion Vector Derivation的文献VCEG-AG16中描述了这样的方法。
在步骤14期间,根据预测块Bpred的内容来重新组织残差块Bres。更具体地,重新组织残差块的残差数据。
在步骤16期间,通过合并重新组织的残差块Bres和预测块Bpred来重构当前块Bc。例如,当前块Bc等于残差块Bres和预测块Bpred的逐像素的和。Bc(i,j)=Bres(i,j)+Bpred(i,j),其中,(i,j)是像素坐标。
根据变型,当前块Bc等于残差块Bres与由加权参数wp加权的预测块Bpred的逐像素之和:Bc(i,j)=Bres(i,j)+wp*Bpred(i,j)。根据变型,根据以下等式,当前块Bc等于残差和预测块的滤波后版本的和:
其中,a(.)和b(.)是线性滤波器的系数。(k,I)例如是从-1到1变化的整数。作为简单示例,a()可以采用以下值:
1/64 -10/64 1/64
-10/64 100/64 -10/64
1/64 -10/64 1/64
b()可以采用下值:
1/16 2/16 1/16
2/16 4/16 2/16
1/16 2/16 1/16
图5示出了根据本发明的编码方法的详细步骤14。步骤14包括:沿着至少两个空间方向计算空间梯度的能量级别的计算步骤410,确定最低能量级别Emin的步骤142,以及根据所确定的能量级别Emin来重新组织残差块的残差数据的步骤144。
根据第一实施例,在步骤140期间,针对图6所示的8个空间方向中的每一个方向,来计算空间梯度的能量等级。例如,根据卷积掩蔽,在预测块Bpred上计算空间梯度的能量级别。根据特定实施例,使用以下卷积掩蔽,来计算沿着图6所示8个空间方向上的空间梯度的能量等级。卷积掩蔽的索引表示与其相关的空间方向索引:
利用每个卷积掩蔽对预测块Bpred进行滤波。然后根据按照以下等式所获得的每个滤波器块Fd来计算空间梯度的能量级别:
其中,F
d(i,j)=(B
pred*D
d)(i,j)
其中:-(i,j)表示滤波后的预测块Bpred的像素的坐标,
-d是与不同空间方向相对应的索引,
-*是卷积运算符,
-|.|与所选标准运算符相对应,例如,在L1标准中,|.|与绝对值相对应,在L2标准中,|.|与平方高度(square elevation)相对应,以及
-Dd与空间方向d所限定的Prewitt类型卷积掩蔽相对应。
可以单独对亮度数据或色度数据或者对这两者来计算能量级别。根据第一变型,如下根据8个能量级别E1至E8来计算附加能量级别E0:
其中,λ是加权系数,λ被确定为使得当空间梯度的能量级别沿着所测试的所有方向d非常均匀时能量级别E0最低。等于0.1的λ值是非常适合的。
根据第二变型,计算集合{E1,E2,E3,E4,E5,E6,E7 E8}的至少两个能量级别的子集。例如,如果仅计算能量级别E1、E2、E3和E4。
根据第二变型的变型,根据子集的能量级别,来计算附加能量级别E0。例如,如果仅计算能量级别E1、E2、E3和E4,则如下计算附加能量级别E0:
优选地,λ被确定为使得当空间梯度的能量级别沿着所测试的所有方向d非常均匀时该能量级别最低。等于0.2的λ值是非常适合的。
根据第二实施例,在步骤410期间,针对4个空间方向1、2、3和4中的每一个来计算能量级别。能量级别计算如下:
E2是预测块Bpred的水平梯度的绝对值的和,E1是预测块Bpred的垂直梯度的绝对值的和,E3和E4是预测块Bpred的对角线梯度的绝对值的和。根据第一变型,附加能量级别E0计算如下:
其中,λ是加权系数。优选地,λ被确定为使得当梯度的能量级别沿着所测试所有方向d非常均匀时该能量级别最低。根据该第二实施例的第二变型,可以以如下方式根据4个能量级别E1至E4来计算沿着4个中间方向的能量级别E5、E6、E7、和E8:
E5=(E1+E4)/2
E6=(E4+E2)/2
E7=(E3+E1)/2
E8=(E2+E3)/2
根据该第二变型的变型,附加能量级别E0计算如下:
其中,λ是加权系数。优选地,λ被确定为使得当梯度的能量级别沿着所测试所有方向d非常均匀时该能量级别最低。
在步骤142期间,将所计算的能量级别进行比较,以便确定与最低能量级别Emin相对应的空间方向d
opt:
在步骤144期间,根据比较的结果来重新组织残差块中的残差数据。更具体地,根据与最低能量级别Emin相对应的空间方向dopt,来重新组织残差块中的残差数据。例如,在残差块大小为4×4的情况下,如图7所示重新组织残差数据。每个小写字母表示残差块的像素。当步骤142中所确定的最小能量级别Emin为E0、E1或E2时,不对Bres的残差数据进行重新组织。重新组织包括图15中所示的以下步骤:
-在所讨论的块上从左上角开始放置与对应最低能量级别Emin的空间方向dopt相对应的线,并且移动该线直到该线切割该块的线段最长,
-根据以下方法填充重新组织的块的行:
-扫描线段,将每次遇到的新像素分配给重新组织的块的下个像素,
-然后以向上一个像素或向下一个像素的方式移动线段,以填充重新组织的块前一行或后一行。
根据另一实施例,在方向6的特定情况下,如图8所示,像素的重新组织包括:内插重新组织的像素,这种重新组织是通过以与对应最低能量级别的空间方向的角度相反的角度来旋转源块而实现的,这些角度是相对于水平方向而确定的。在图8的右侧以较浓厚的黑点表示重新组织的块Bres。将转动后的块中主要包含在重新组织的块的像素中的像素分配给图8右侧所示的重新组织的块的所述像素。换言之,将转动块中覆盖重新组织的块的像素的最大部分的像素分配给如图8右侧所示的该像素。
图9示出了一种以编码数据流F的形式对分成块的图像的序列进行编码的方法。针对当前块Bc描述了该方法,该方法可以应用于图像的若干块。
在步骤20期间,针对当前块Bc来确定预测块Bpred。例如,根据通过块匹配类型运动估计方法而获得的运动数据来确定预测块Bpred。
在步骤22期间,通过从当前块Bc中提取预测块Bpred来确定残差块,例如,残差块Bres等于当前块Bc与预测块之间的逐像素差值。
根据变型,根据以下等式,残差块Bres等于当前和预测块的滤波后的版本之间的差值:
其中,a’()是b’()是线性滤波器的系数,可能与先前定义的系数不同。(k,l)是例如从-1到1变化的整数。作为简单示例,a’()可以采用以下值:
1/256 -18/256 1/256
-18/256 324/256 -18/256
1/256 -18/256 1/256
b’()可以采用以下值:
1/64 6/64 1/64
6/64 36/64 6/64
1/64 6/64 1/64
在步骤24期间,根据预测块Bpred的内容,来重新组织残差块Bres。更具体地,重新组织残差块的残差数据。编码方法的步骤24与解码方法的步骤14相同。因此,参照图5、6、7描述的不同实施例及其变型可以以相同方式应用在步骤24中。
在步骤26期间,对残差块Bres进行编码。图10示出了步骤26。该步骤20通常包括:将残差块变换成系数块T(Bres)的步骤260,将系数块T(Bres)量化成量化系数块Q(T(Bres))的步骤262,以及将量化系数块Q(T(Bres))实际编码成编码数据的步骤264。例如,使用DCT(离散余弦变换)对残差块Bres进行变换和量化的目的在于,对残差块中的数据进行压缩,即,以少数非空系数表示该数据。对变换和量化的残差块(即,量化系数块)的实际编码包括:根据量化系数块中系数的扫描顺序,来对量化系数进行熵编码。
残差块的重新组织步骤14和24的结果是,提高变换和量化的效率。事实上,变化和量化块中的数据更精简,根据垂直和水平轴按优先级来重新组织该数据,其中在所述垂直和水平轴上变换最高效(通常能够将变换分为水平和垂直,从而能够先应用水平变换然后再应用垂直变换)。因此,更可能在变换块的顶行和左列上找到具有最高幅度的系数,反之,更可能向着变换块的右下方找到最低值。
为了提高这种效果,根据预测块的内容来确定解码方法的步骤100期间以及编码方法的步骤264期间的系数扫描顺序。事实上,根据已经重新组织残差数据的方式,变换具有特定属性。具体地,如图7所示,在步骤142中确定方向3至8之一的情况下,重新组织像素,以使得数据水平地相干。在这些情况下,优选地,扫描顺序是如图11所示的垂直扫描,这是由于变换将优先集中于第一列上的系数。对于其他方向(0、1和2),可以使用标准之字形扫描。
根据图12所示的变型,根据以残差块Bres的方式重新组织的预测块,来确定扫描顺序。在步骤30中,通过高通滤波器对预测块Bpred进行滤波,高通滤波器即是使得能够设置高频预测块Bpred的像素的滤波器。作为非限制示例,对Bpred应用低通滤波(例如,使用中值滤波器,或者利用线性滤波器的沿水平然后垂直方向的卷积,该卷积可以与系数[1/2,1,1/2]分开)以获得低频预测块。从预测块Bpred中减去低频预测块,以获得滤波后的预测块Filt(Bpred)。
在步骤32期间,以与解码方法的步骤14或编码方法的步骤24中重新组织残差块的方式相同的方式,来重新组织滤波后的预测块Filt(Bpred)。
在步骤34期间,例如,通过DCT将重新组织的滤波预测块Filt(Bpred)变换成系数块T(Filt(Bpred))。
在步骤36期间,根据系数块T(Filt(Bpred))来确定扫描顺序,例如,扫描顺序被确定为使得按照值的降序来扫描系数块T(Filt(Bpred))的系数。
在解码方法的步骤100和编码方法的步骤264期间,应用如此确定的扫描顺序。
本发明还涉及参照图13描述的编码设备12以及参照图14描述的解码设备13。在图13和14中,所示的模块是功能单元,可以与物理上可区分的单元相对应或不相对应。例如,这些模块或者其中的一些可以被一起分组到单个组件中或构成相同软件的功能。反之,一些模块可以由分离的物理实体组成。
参照图13,编码设备12在输入处接收属于图像序列的图像。将每个图像分成像素块,每个像素与至少一个图像数据相关联。编码设备12主要实现利用时间预测的编码。在图12中仅示出了与时间预测编码有关的编码设备12的模块。未示出且视频编码器领域的技术人员公知的其他模块实现了利用或不利用空间预测的帧内编码。编码设备12主要包括:计算模块1200,能够例如通过逐像素减法从当前块Bc中提取预测块Bpred,以产生残差图像数据块或残差块Bres。有利地,根据本发明的编码设备包括:重新组织模块1201,根据预测块Bpred来重新组织残差块Bres的残差数据。重新组织模块1201适合于根据上述任一实施例的编码方法的步骤24。编码设备还包括:能够将残差块Bres变换并量化成量化系数块的模块1202。例如,变换T是离散余弦变换(或DCT)。编码设备12还包括:熵编码模块1204,能够将量化系数块编码成编码数据流F。为此,熵编码模块1204按照给定的扫描顺序对量化系数进行编码。例如,该扫描顺序是固定的。根据图13中虚线所示的变型,例如根据步骤30至36,熵编码模块1204根据预测块Bpred的内容来确定针对要编码的每个块的扫描顺序。编码设备12还包括执行模块1202的逆运算的模块1206。模块1206在执行逆变换T-1之前执行逆量化Q-1。模块1206连接至计算模块1208,计算模块1208能够例如通过逐像素加法来合并来自于模块1206的数据块和预测块Bpred,以产生重构数据块,将该重构数据块存储在存储器1210中。编码设备12还包括:运动估计模块1212,能够估计块Bc与存储在存储器1210中的参考图像Ir的块之间的至少一个运动矢量,该图像是先前已编码然后重构的。根据变型,可以在当前块Bc与原始参考图像Ic之间执行运动估计,在这种情况下存储器1210不连接至运动估计模块1212。根据本领域技术人员公知的方法,运动估计模块在参考图像中搜索运动数据,尤其是运动矢量,以使得当前块Bc与通过运动数据识别的参考图像Ir中的块之间所计算的误差最小化。
运动估计模块1212将所确定的运动数据传送至判定模块1214,判定模块1214能够在预定编码模式集合当中为块Bc选择编码模式。保留的编码模式例如是使比特率失真类型准则最小化的编码模式。然而,本发明不限于该选择方法,并且可以根据另一准则(例如,先验类型准则)来选择保留的模式。将判定模块1214所选的编码模式以及运动数据(例如,在时间预测模式或帧间模式的情况下的一个或多个运动数据)传送至预测模块1216。还可以将所选编码模式以及相反情况下的一个或多个运动数据传送至熵编码模块1214以编码在流F中。预测模块1216根据判定模块1214所确定的编码模式以及可能根据运动估计模块1212所确定(图像间预测)的运动数据,来确定预测块Bpred。
参照图14,解码模块13在输入处接收表示图像序列的编码数据流F。例如,流F是编码设备12经由通道传送的。解码设备13包括:熵解码模块1300,能够根据解码系数块BQ的扫描顺序来产生块BQ。例如,该扫描顺序是固定的。根据图14中虚线所示的变型,,例如根据步骤30至36,熵解码模块1300根据预测块Bpred的内容来确定针对每个块的扫描顺序。解码设备13还适合于对编码模式以及可能地对运动数据进行解码。解码设备13还包括运动数据重构模块。根据第一实施例,运动数据重构模块是熵解码模块1300,熵解码模块1300对表示所述运动数据地流F的一部分进行解码。根据图14中未示出的变型,运动数据重构模块是运动估计模块。这种经由解码设备13重构运动数据的解决方案被称作“时间匹配”。
然后将解码系数块BQ传送至模块1302,模块1302能够在逆变换之前执行逆量化以重构残差块Bres。模块1302与产生编码流F的编码设备12的模块1206相同。模块1302连接至重新组织模块1303,重新组织模块1303根据预测块Bpred来重新组织残差块Bres的残差数据。重新组织模块1303适用于根据上述任一实施例来实现解码方法的步骤14。重新组织模块1303与编码设备12的重新组织模块1201相同。解码设备还包括:计算模块1304,例如能够通过逐像素加法来合并来自于模块1302的块和预测块Bpred,以产生重构的当前块Bc,将该重构的当前块Bc存储在存储器1306中。解码设备13还包括与编码设备12的模块1216相同的预测模块1308。预测模块1308根据熵解码模块1300针对当前块而解码的编码模式,以及可能地根据运动数据重构模块所确定的运动数据,来确定预测块Bpred。
当然,本发明不限于上述实施例示例。
具体地,本领域技术人员可以对现有实施例应用任何变型,并且对这些实施例进行组合,以受益于它们的各个优点。本发明不限于用于计算能量级别的滤波器类型。事实上,还可以根据非线性中值类型滤波器而不是上述线性滤波器D1至D8来计算这些能量级别。简要地,所使用的滤波器必须使得能够确定空间方向,沿着该空间方向信号具有最低频率。