具体实施方式
本原理致力于具有变换选择的视频编码和解码的约束变换的方法和装置。
本说明书图示了本原理。因此,将要理解,本领域的技术人员能够设想出尽管本文未显性描述或示出,但体现本原理和包含在其精神和范畴之内的各种布置。
本文叙述的所有示例和条件语言是教学性的,旨在辅助读者理解(多个)发明人为推动技术进步而贡献的原理和概念,并且应当理解为不局限于这样具体叙述的示例和条件
而且,本文叙述本原理的原理、方面和实施例、以及其特定示例的所有语句旨在涵盖其结构和功能两者的等效物。另外,这样的等效物旨在包括当前已知的等效物、以及将来开发的等效物两者,即,与结构无关,开发出来执行相同功能的任何元件。
因此,例如,本领域技术人员将会理解,本文给出的方框图代表体现本原理的例示性电路的概念图。类似地,将会理解,任何流程图、流程图表、状态转移图、伪码等代表基本上可以表示在计算机可读介质中并因此可被计算机或处理器执行的各种处理,无论这样的计算机或处理器是否显性示出。
显示在图中的各种元件的功能可以通过使用专用硬件以及能够与适当软件相关联地执行软件的硬件来提供。当由处理器提供时,这些功能可以由单个专用处理器,单个共享处理器,或其中一些可以共享的多个单独处理器提供。此外,术语“处理器”或“控制器”的显性使用不应该理解为唯一地指代能够执行软件的硬件,也可以不受限制地隐性包括数字信号处理器(“DSP”)硬件、存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、和非易失性存储设备。
也可以包括常规的和/或定制的其它硬件。类似地,显示在图中的任何开关都只是概念性的。它们的功能可以通过程序逻辑运算,通过专用逻辑,通过程序控制和专用逻辑的交互,或甚至人工实现,正如从上下文中更具体理解到的那样,具体技术可由实现者选择。
在本文的权利要求书中,表达成执行特定功能的部件的任何元件旨在包含执行那种功能的任何方式,例如,包括a)执行那种功能的电路元件的组合,或b)任何形式的软件,因此,包括固件、微码等,与执行那种软件的适当电路组合在一起来执行那种功能。如这样的权利要求书定义的本原理基于各种所述部件提供的功能以权利要求书要求的方式组合和聚集在一起的事实。因此,认为可以提供那些功能的任何部件都等效于本文所示的那些部件。
在说明书中提到本原理的“一个实施例”或“实施例”,以及其其它变体,意味着结合该实施例所描述的具体特征、结构、特性等包括在本原理的至少一个实施例中。因此,出现在整个说明书的各个地方的短语“在一个实施例中”或“在实施例中”,以及任何其它变体的出现未必都指代相同实施例。而且,将要注意,本文相互交换地使用短语“实施例”和“实现方式”。
将要理解,如下“/”、“和/或”、和“至少一个”的任何一种的使用,例 如,在“A/B”、“A和/或B”、和“A和B的至少一个”的情况下,旨在包含只选择第一列出选项(A),或只选择第二列出选项(B),或选择两个选项(A和B)。作为进一步的示例,在“A、B和/或C”和“A、B和C的至少一个”的情况下,这样的措词旨在包含只选择第一列出选项(A),或只选择第二列出选项(B),或只选择第三列出选项(C),或只选择第一和第二列出选项(A和B),或只选择第一和第三列出选项(A和C),或只选择第二和第三列出选项(B和C),或选择所有三个选项(A、B和C)。本领域及相关领域的普通技术人员容易明白,这可以推广到许多列出项目。
为了图示和描述的目的,本文使用MPEG-4AVC标准作为描述和解释超出MPEG-4AVC标准的改进和扩展的基线,在MPEG-4AVC标准的改进的上下文中描述示例。然而,要认识本原理不单独限于MPEG-4AVC标准和/或其扩展。本文给出提供的本原理的教导,本领域和相关领域的普通技术人员将容易理解,本原理是等效可应用的并且当应用于其他标准的扩展或者当应用和/或并入仍未开发的标准内时将至少提供类似的益处。还要认识,本技术还应用于不符合标准但符合专用定义的视频编码器和视频解码器。
此外,如本文中所使用的,词语“画面”和“图像”得以相互交换地使用并且指代自视频序列的静止图像或画面。如所知的,画面可以是一帧或一场。
参考图1,能够按照MPEG-4AVC标准进行视频编码的视频编码器一般地用附图标号100表示。视频编码器100包括帧排序缓冲器110,其具有与组合器185的非反向输入端进行信号通信的输出端。组合器185的输出端与变换器和量化器125的第一输入端进行信号通信连接。变换器和量化器125的输出端与熵编码器145的第一输入端以及逆变换器和逆量化器150的第一输入端进行信号通信连接。熵编码器145的输出端与组合器190的第一非反向输入端进行信号通信连接。组合器190的输出端与输出缓冲器135的第一输入端进行信号通信连接。
编码器控制器105的第一输出端与帧排序缓冲器110的第二输入端、逆变换器和逆量化器150的第二输入端、画面类型判定模块115的输入端、宏块类型(MB-型)判定模块120的第一输入端、帧内预测模块160的第二输入端、去块滤波器165的第二输入端、运动补偿器170的第一输入端、运动估计器175的第一输入端以及参考画面缓冲器180的第二输入端进行信号通 信连接。
编码器控制器105的第二输出端与补充增强信息(SEI)插入器130的第一输入端、变换器和量化器125的第二输入端、熵编码器145的第二输入端、输出缓冲器135的第二输入端以及序列参数组(SPS)和画面参数组(PPS)插入器140的输入端进行信号通信连接。
SEI插入器130的输出端与组合器190的第二非反向输入端进行信号通信连接。
画面类型判定模块115的第一输出端与帧排序缓冲器110的第三输入端进行信号通信连接。画面类型判定模块115的第二输出端与宏块型判定模块120的第二输入端进行信号通信连接。
序列参数组(SPS)和画面参数组(PPS)插入器140的输出端与组合器190的第三非反向输入端进行信号通信连接。
逆量化器和逆变换器150的输出端与组合器119的第一非反向输入端进行信号通信连接。组合器119的输出端与帧内预测模块160的第一输入端和去块滤波器165的第一输入端进行信号通信连接。去块滤波器165的输出端与参考画面缓冲器180的第一输入端进行信号通信连接。参考画面缓冲器180的输出端与运动估计器175的第二输入端和运动补偿器170的第三输入端进行信号通信连接。运动估计器175的第一输出端与运动补偿器170的第二输入端进行信号通信连接。运动估计器175的第二输出端与熵编码器145的第三输入端进行信号通信连接。
运动补偿器170的输出端与开关197的第一输入端进行信号通信连接。帧内预测模块160的输出端与开关197的第二输入端进行信号通信连接。宏块型判定模块120的输出端与开关197的第三输入端进行信号通信连接。开关197的第三输入端确定开关的“数据”输入端(与控制输入端相比较,即,第三输入端)是否将由运动补偿器170或帧内预测模块160来提供。开关197的输出端与组合器119的第二非反向输入端和组合器185的反向输入端进行信号通信连接。
帧排序缓冲器110的第一输入端和编码器控制器105的输入端可用作编码器100的用于接收输入画面的输入端。而且,补充增强信息(SEI)插入器130的第二输入端可用作编码器100的用于接收元数据的输入端。输出缓冲器135的输出端可用作编码器100的用于输出位流的输出端。
参考图2,能够按照MPEG-4AVC标准进行视频解码的视频解码器一般地用附图标号200表示。视频解码器200包括输入缓冲器210,其具有与熵解码器245的第一输入端进行信号通信连接的输出端。熵解码器245的第一输出端与逆变换器和逆量化器250的第一输入端进行信号通信连接。逆变换器和逆量化器250的输出端与组合器225的第二非反向输入端进行信号通信连接。组合器225的输出端与去块滤波器265的第二输入端以及帧内预测模块260的第一输入端进行信号通信连接。去块滤波器265的第二输出端与参考画面缓冲器280的第一输入端进行信号通信连接。参考画面缓冲器280的输出端与运动补偿器270的第二输入端进行信号通信连接。
熵解码器245的第二输出端与运动补偿器270的第三输入端以及去块滤波器265的第一输入端进行信号通信连接。熵解码器245的第三输出端与解码器控制器205的输入端进行信号通信连接。解码器控制器205的第一输出端与熵解码器245的第二输入端进行信号通信连接。解码器控制器205的第二输出端与逆变换器和逆量化器250的第二输入端进行信号通信连接。解码器控制器205的第三输出端与去块滤波器265的第三输入端进行信号通信连接。解码器控制器205的第四输出端与帧内预测模块260的第二输入端、运动补偿器270的第一输入端以及参考画面缓冲器280的第二输入端进行信号通信连接。
运动补偿器270的输出端与开关297的第一输入端进行信号通信连接。帧内预测模块260的输出端与开关297的第二输入端进行信号通信连接。开关297的输出端与组合器225的第一非反向输入端进行信号通信连接。
输入缓冲器210的输入端可用作解码器200的用于接收输入位流的输入端。去块滤波器265的第一输出端可用作解码器200的用于输出输出画面的输出端。
注意到,图1的编码器或者图2的解码器没有执行变换选择。
转到图3,利用变换选择的示例性视频编码器一般地用附图标号300表示。视频编码器300包括帧排序缓冲器310,其具有与组合器385的非反向输入端进行信号通信的输出端。组合器385的输出端与变换器和量化器1 325的输入端、变换器和量化器2 326的输入端、以及变换器和量化器n 327的输入端进行信号通信连接。变换器和量化器1 325的输出端与变换选择器329的第一输入端进行信号通信连接。变换器和量化器2 326的输出端与变换选 择器329的第二输入端进行信号通信连接。变换器和量化器n 327的输出端与变换选择器329的第三输入端进行信号通信连接。变换选择器329的输出端与熵编码器345的第一输入端以及逆变换器和逆量化器350的第一输入端进行信号通信连接。熵编码器345的输出端与组合器390的第一非反向输入端进行信号通信连接。组合器390的输出端与输出缓冲器335的第一输入端进行信号通信连接。
编码器控制器305的第一输出端与帧排序缓冲器310的第二输入端、逆变换器和逆量化器350的第二输入端、画面类型判定模块315的输入端、宏块类型(MB型)判定模块320的第一输入端、帧内预测模块360的第二输入端、去块滤波器365的第二输入端、运动补偿器370的第一输入端、运动估计器375的第一输入端以及参考画面缓冲器380的第二输入端进行信号通信连接。
编码器控制器305的第二输出端与补充增强信息(SEI)插入器330的第一输入端、熵编码器345的第二输入端、输出缓冲器335的第二输入端以及序列参数组(SPS)和画面参数组(PPS)插入器340的输入端进行信号通信连接。
SEI插入器330的输出端与组合器390的第二非反向输入端进行信号通信连接。
画面型判定模块315的第一输出端与帧排序缓冲器310的第三输入端进行信号通信连接。画面型判定模块315的第二输出端与宏块型判定模块320的第二输入端进行信号通信连接。
序列参数组(SPS)和画面参数组(PPS)插入器340的输出端与组合器390的第三非反向输入端进行信号通信连接。
逆量化器和逆变换器350的输出端与组合器319的第一非反向输入端进行信号通信连接。组合器319的输出端与帧内预测模块360的第一输入端和去块滤波器365的第一输入端进行信号通信连接。去块滤波器365的输出端与参考画面缓冲器380的第一输入端进行信号通信连接。参考画面缓冲器380的输出端与运动估计器375的第二输入端和运动补偿器370的第三输入端进行信号通信连接。运动估计器375的第一输出端与运动补偿器370的第二输入端进行信号通信连接。运动估计器375的第二输出端与熵编码器345的第三输入端进行信号通信连接。
运动补偿器370的输出端与开关397的第一输入端进行信号通信连接。帧内预测模块360的输出端与开关397的第二输入端进行信号通信连接。宏块型判定模块320的输出端与开关397的第三输入端进行信号通信连接。开关397的第三输入端确定开关的“数据”输入端(与控制输入端相比较,即,第三输入端)是否将由运动补偿器370或帧内预测模块360提供。开关397的输出端与组合器319的第二非反向输入端和组合器385的反向输入端进行信号通信连接。
帧排序缓冲器310的第一输入端和编码器控制器305的输入端可用作编码器300的用于接收输入画面的输入端。而且,补充增强信息(SEI)插入器330的第二输入端可用作编码器300的用于接收元数据的输入端。输出缓冲器335的输出端可用作编码器300的用于输出位流的输出端。
参考图4,利用变换选择的示例性视频解码器一般地用附图标号400表示。视频解码器400包括输入缓冲器410,其具有与熵解码器445的第一输入端进行信号通信连接的输出端。熵解码器445的第一输出端与逆变换器和逆量化器i 450的第一输入端进行信号通信连接。逆变换器和逆量化器i 450的输出端与组合器425的第二非反向输入端进行信号通信连接。组合器425的输出端与去块滤波器465的第二输入端和帧内预测模块460的第一输入端进行信号通信连接。去块滤波器465的第二输出端与参考画面缓冲器480的第一输入端进行信号通信连接。参考画面缓冲器480的输出端与运动补偿器470的第二输入端进行信号通信连接。
熵解码器445的第二输出端与运动补偿器470的第三输入端以及去块滤波器465的第一输入端进行信号通信连接。熵解码器445的第三输出端与解码器控制器405的输入端进行信号通信连接。解码器控制器405的第一输出端与熵解码器445的第二输入端进行信号通信连接。解码器控制器405的第二输出端与逆变换器和逆量化器i 450的第二输入端进行信号通信连接。解码器控制器405的第三输出端与去块滤波器465的第三输入端进行信号通信连接。解码器控制器405的第四输出端与帧内预测模块460的第二输入端、运动补偿器470的第一输入端和参考画面缓冲器480的第二输入端进行信号通信连接。
运动补偿器470的输出端与开关497的第一输入端进行信号通信连接。帧内预测模块460的输出端与开关497的第二输入端进行信号通信连接。开 关497的输出端与组合器425的第一非反向输入端进行信号通信连接。
输入缓冲器410的输入端可用作解码器400的用于接收输入位流的输入端。去块滤波器465的第一输出端可用作解码器400的用于输出输出画面的输出端。
如上所述,本原理致力于具有变换选择的视频编码和解码的约束变换的方法和装置。根据本原理的方法和装置有利地致力于前述“窗口化图案”、已经在利用变换选择方法编码的序列中观察到的新伪像(即使通过改进PSNR)。如上所述,该图案主要在低位率中发现并且可能是讨厌的。
有利地,本原理提供方法和装置以设计或者选择变换选择方法中的替代变换,从而避免“窗口化图案”伪像的出现。对于我们的最佳知识,在其他工作中还未认识到由于使用变换选择方法(还已知为可切换变换或者替代变换)出现的“窗口化图案”或者相关伪像。
第五和其他现有技术途径涉及在计算上简单或者获得良好客观结果的替代变换。然而,这样的现有技术途径还未认识到方法引入的图案、评定主观质量并且因此提出根据本原理提出的解决图案的变换。
根据本原理,变换选择方法使用从每个块的一组变换中选择的一个变换。通常通过检验该组中每个变换的率失真性能并且选择给出最佳性能来确定使用的变换。编码器用信号发送该选择到解码器。图3示出利用选择的视频编码器300的示例,以及图4示出使用图3的视频编码器300的视频解码器400的示例。视频解码器400使用与视频编码器300的所选变换对应的逆变换。
给出DCT的普遍使用以及DCT已经广泛示出在视频编码中执行良好,认识到包括DCT作为该组中的一个变换是合理的。然后,获得第二(或更多)变换,其在变换选择工具内对与DCT工作良好。
可以使用KLT和基于稀疏的算法确定最佳可能第二变换(与DCT工作)。KLT是给出数据的最优线性变换。先前工作的路线致力于最大化PSNR性能。然而,当做出主观质量评定时,值得注意的是,通过这些方法获得的给出良好PSNR改进的变换也引入低位率的令人讨厌的伪像。这些伪像呈现为重构视频上的窗口化图案。进一步研究这些问题,可以发现这些伪像出现由于两个原因:
1.在低速率,经常的情形是:仅仅一个变换系数没有被量化为0。该稀疏通常是最低频率系数。这如果出现在连续块中,那么最低频 率系数的图案出现在所有连续块中,以创建窗口化图案。
2.对于DCT情形,最低频率系数是直流(DC)分量,也就是,仅仅矩形或方块图案。因此,在低速率,编码一个非零系数导致块化伪像。这些伪像大多数通过去块滤波器(例如,图1中的去块滤波器165)事后清除。对于清除本文描述的窗口化伪像这样的滤波器是不存在的。
本原理提出通过修改第二变换以使得其与事后用来重构数据的去块滤波器能够配合使用来解决前述问题。
在一个实施例中,强加第二变换的最低频率分量非常平滑,使得其创建的任何窗口伪像足够靠近块伪像。在该情况下,去块滤波器可以考虑消除这些伪像,并且不需要其他滤波器或者附加处理。图3和图4是分别示出编码器和解码器的方块图,其图示在该实施例中,是否选择的变换是DCT以及剩余变换(2到n)是KLT(或者某些其他变换),并且强行使KLT的第一基矢量为平滑约束。
根据本原理,块变换T可以由矩阵表示。当应用于一维(1-D)输入数据x,块变换T生成(变换系数的)输出y。该操作被如下规定:y=T*x。矩阵T由n行组成,每行称作矢量基。变换系数y是矢量基的变换域中数据x的表示。在视频编码中,通常,第一基矢量(T中的顶部基)是具有最低频率分量的那个。例如,DCT最低频率分量是DC分量,也就是,常量。然后,在视频编码中,变换系数被量化、扫描并且熵编码。清楚地,矢量基的顺序在以下意义上不是严格的:其可以被改变并且如果相应地改编熵编码,则最终编码位流应该不被影响。然而,在现有技术中的常规是,放置最低频率矢量,具有较少变化并且接近常量的矢量,作为块变换T中的第一矢量。
频率分量通常理解为傅立叶变换域中的矢量的频率分布。平滑信号的傅立叶变换(或者矢量)具有较低频率的多数能量,而具有高变化性的信号具有所有频率中分布的能量(或者高频率中更多的)。
在另一个实施例中,使用视频数据以获得最优KLT。然后,强行使第一矢量基的总变化低于阈值。总变化是每个系数减去下一系数的差值的绝对值的和。此后,修改剩余矢量,以另外强行使变换为正交。在变换选择方法中使用作为结果的变换。
在另一个实施例中,通过强加其傅立叶变换的能量的约束低于某一频率强行使KLT的第一矢量基非常平滑。该约束是必须高于阈值的能量。修改剩余矢量,使得变换是正交的。在类似的实施例中,第一矢量基被强加为频率低于阈值的离散余弦。
在另一个实施例中,选择变换作为第二变换,而强加矢量基为常量(即,平的)。
参考图5,使用变换选择编码画面的块残差数据的示例性方法一般地用附图标号500来表示。方法500包括将控制传递到功能块510的起始块505。功能块510接收块残差数据,并且将控制传递到功能块515、功能块535和功能块545。功能块515使用离散余弦变换(DCT)变换和量化块残差数据,并且将控制传递给功能块520。功能块535使用KLT 1利用平滑第一基变换和量化块残差数据,并且将控制传递给功能块540。功能块545使用KLT 2利用常量第一基变换和量化块残差数据,并且将控制传递给功能块550。功能块520根据功能块515的输出执行率失真(RD)分析,并且将控制传递到功能块525。功能块540根据功能块535的输出执行率失真(RD)分析,并且将控制传递到功能块525。功能块550根据功能块545的输出执行率失真(RD)分析,并且将控制传递到功能块525。功能块525执行功能块520、540和550执行的率失真分析结果的比较,基于这样的结果选择与功能块515、535和545对应的一个特定的变换,并且将控制传递给功能块530。功能块530输出变换选择以及量化系数并且将控制传递给结束块599。
转到图6,使用变换选择解码画面的块残差数据的示例性方法一般地用附图标号600来表示。方法600包括将控制传递到功能块610的起始块605。功能块610接收变换选择和量化系数,并且将控制传递到功能块615和功能块620。功能块615解析(并由此确定)变换选择,并且将控制传递到功能块625、功能块630以及功能块635中对应的一个。功能块620解析(并由此确定)量化系数,并且将控制传递到功能块625、功能块630以及功能块635中对应的一个。功能块625基于离散余弦变换(DCT)执行去量化和逆变换,并且将控制传递到功能块640。功能块630基于KLT 1利用平滑第一基执行去量化和逆变换,并且将控制传递给功能块640。功能块635基于KLT 2利用常量第一基执行去量化和逆变换,并且将控制传递给功能块640。功能块640输出逆变换系数(残差数据),并且将控制传递到结束块699。
要认识图5和6的实施例使用变换选择方法中的三个变换。第一变换是DCT。第二变换是强行使第一基矢量平滑的一个KLT。第三变换是强行使第一基矢量常量的另一个KLT。
现在将给出本发明的许多随附优点/特征的一些的描述,其中一些优点/特征已在上面提到。例如,一个优点/特征是具有视频编码器的装置,用于通过以下来编码画面的至少一个块:从至少第一变换和与第一变换不同的第二变换中选择特定变换,以及将该特定变换应用于块的残差,其中响应于视频编码中存在的去块滤波器选择第二变换的变换系数。
另一优点/特征是具有如上所描述的编码器的装置,其中变换系数与第二变换的第一基矢量对应。
再另一优点/特征是具有如上所描述的其中变换系数与第二变换的第一基矢量对应的编码器的装置,其中平滑约束被强加在第一基矢量上。
另一优点/特征是具有如上所描述的其中变换系数与第二变换的第一基矢量对应的编码器的装置,其中与第一基矢量对应的变换系数的变化被约束在规定阈值之下。
此外,又另一优点/特征是具有如上所描述的其中变换系数与第二变换的第一基矢量对应的编码器的装置,其中傅立叶变换在给定频率之下的能量在规定阈值之上,傅立叶变换与第二变换对应。
再者,另一优点/特征是具有如上所描述的其中变换系数与第二变换的第一基矢量对应的编码器的装置,其中与第一矢量基对应的变换系数是常量。
另外,另一优点/特征是具有如上所描述的视频编码器的装置,其中第一变换是离散余弦变换。
相关领域的普通技术人员可以根据本文的教导容易地弄清本原理的这些和其它特征和优点。将要理解,本原理的教导可以以硬件、软件、固件、专用处理器或它们的组合体的各种形式实现。
更优选的是,将本原理的教导实现成硬件和软件的组合体。此外,软件可以实现成有形地具体化在程序存储单元上的应用程序。应用程序可以上载到包含任何适当结构的机器,并由该机器执行。优选的是,机器是在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)、和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现的。计算机平台也可以包括操作系统和微指令代码。本文所述的各种处理和功能可以是可以由CPU执 行的微指令代码的一部分或应用程序的一部分,或其任何组合。另外,诸如附加数据存储单元和打印单元之类的各种外围单元可以与计算机平台连接。
将要进一步理解,由于描绘在附图中的组成系统部件和方法的一些优选用软件实现,因此,取决于编程本原理的方式,系统部件或处理功能块之间的实际连接可能不同。在本文的教导下,相关领域的普通技术人员将能够设想出本原理的这些和类似实现方式或配置。
尽管本文已经参考附图描述了例示性实施例,但是将要理解,本原理不限于那些精确的实施例,并且在不背离本原理的范围或精神的情况下,相关领域的普通技术人员可以在其中做出各种变化和修改。所有这种变化和修改意欲包含在如所附权利要求中阐述的本原理的范围之内。