具体实施方式
本发明致力于帧内预测视频的照明补偿方法和装置。
本描述例示本发明的原理。因此,应该懂得,本领域的普通技术人员能够设想出尽管本文未显性描述或示出,但体现本发明的原理和包括在本发明的精神和范围内的各种布置。
本文叙述的所有例子和条件语言是教学性的,旨在帮助读者理解本发明原理人为推动技术进步而贡献的原理和概念,应该理解为不局限于这样具体叙述的例子和条件。
此外,本文叙述本发明的原理、方面和实施例,以及本发明的特定例子的所有语句旨在包含本发明在结构和功能上的等效物。另外,这样的等效物旨在包括当前已知的等效物、以及将来开发的等效物两者,即,与结构无关,开发出来执行相同功能的任何元件。
因此,例如,本领域的普通技术人员应该懂得,本文给出的方块图代表体现本发明的例示性电路的概念图。类似地,应该懂得,任何流程图、流向图、状态转移图、伪码等代表基本上可以表示在计算机可读媒体中因此可被计算机或处理器执行的各种进程,无论这样的计算机或处理器是否显性示出。
显示在图中的各种元件的功能可以通过使用专用硬件以及能够与适当软件相联系来执行软件的硬件来提供。当由处理器提供时,这些功能可以由单个专用处理器,单个共享处理器,或其中一些可以共享的多个单独处理器提供。此外,术语“处理器”或“控制器”的显性使用不应该理解为唯一地指能够执行软件的硬件,也可以不受限制地隐性包括数字信号处理器(“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-4 AVC标准来描述本发明的一个或多个实施例,但本发明不只局限于这种标准,因此,可以在保持本发明精神的同时,基于其它视频编码标准、推荐标准、以及包括MPEG-4 AVC标准的扩充标准在内的它们扩充标准来使用。
并且,应该懂得,虽然本文针对亮度Y分量来描述本发明的一个或多个实施例,但本发明不只局限于这个分量,因此,可以在保持本发明精神的同时用于其它分量(例如,画面、图像、和/或视频数据的其它分量)。例如,本发明可以应用于RGB颜色分量、色度分量、景深分量等。
如本文所使用的那样,“高级语法”指的是出现在分层地位于宏块层之上的位流中的语法。例如,如本文所使用的高级语法可以指,但不局限于,在切片首标级、补充增强信息(SEI)级、画面参数集(PPS)级、序列参数集(SPS)和网络抽象层(NAL)单元首标级上的语法。
转到图5,使用显性照明补偿编码画面数据的示范性编码器用附图标记500笼统表示。
编码器500包括帧排序缓冲器510,帧排序缓冲器510含有与组合器585的非反相输入端信号通信的输出端。组合器585的输出端连接成与变换器和量化器525的第一输入端信号通信。变换器和量化器525的输出端连接成与熵编码器545的第一输入端以及逆变换器和逆量化器550的第一输入端信号通信。熵编码器545的输出端连接成与组合器590的第一非反相输入端信号通信。组合器590的输出端连接成与输出缓冲器535的第一输入端信号通信。
编码器控制器505的第一输出端连接成与帧排序缓冲器510的第二输入端、逆变换器和逆量化器550的第二输入端、画面类型判定模块515的输入端、宏块类型(MB类型)判定模块520的第一输入端、帧内预测模块560的第二输入端、分块滤波器565的第二输入端、运动补偿器570的第一输入端、运动估计器575的第一输入端、和参考画面缓冲器580的第二输入端信号通信。
编码器控制器505的第二输出端连接成与补充增强信息(SEI)插入器530的第一输入端、变换器和量化器525的第二输入端、熵编码器545的第二输入端、输出缓冲器535的第二输入端、和序列参数集(SPS)和画面参数集(PPS)插入器540的输入端信号通信。
SEI插入器530的输出端连接成与组合器590的第二非反相输入端信号通信。
画面类型判定模块515的第一输出端连接成与帧排序缓冲器510的第三输入端信号通信。画面类型判定模块515的第二输出端连接成与宏块类型判定模块520的第二输入端信号通信。
序列参数集(SPS)和画面参数集(PPS)插入器540的输出端连接成与组合器590的第三非反相输入端信号通信。
逆变换器和逆量化器550的输出端连接成与组合器519的第一非反相输入端信号通信。组合器519的输出端连接成与帧内预测模块560的第一输入端和分块滤波器565的第一输入端信号通信。分块滤波器565的输出端连接成与参考画面缓冲器580的第一输入端信号通信。参考画面缓冲器580的第一输出端连接成与运动估计器575的第二输入端以及与运动补偿器570的第三输入端信号通信。运动估计器575的第一输出端连接成运动补偿器570的第二输入端信号通信。运动估计器575的第二输出端连接成与熵编码器545的第三输入端信号通信。
运动补偿器570的输出端连接成与开关597的第一输入端信号通信。帧内预测模块560的输出端连接成与开关597的第二输入端信号通信。宏块类型判定模块520的输出端连接成与开关597的第四输入端信号通信。开关597的第四输入端确定开关的“数据”输入(与控制输入、即第四输入端相比)是否将由运动补偿器570或帧内预测模块560提供。开关597的输出端连接成与组合器519的第二非反相输入端以及与组合器585的反相输入端信号通信。
参考画面缓冲器580的第二输出端连接成与显性照明补偿参数计算器561的第一输入端和带有照明补偿的非局部帧内预测器563的第一输入端信号通信。编码器控制器505的第三输出端连接成与显性照明补偿参数计算器561的第二输入端和带有照明补偿的非局部帧内预测器563的第二输入端信号通信。显性照明补偿参数计算器561的第一输出端连接成与带有照明补偿的非局部帧内预测器563的第三输入端信号通信。显性照明补偿参数计算器561的第二输出端连接成与熵编码器545的第四输入端信号通信。带有照明补偿的非局部帧内预测器563的输出端连接成与开关597的第三输入端信号通信。
帧排序缓冲器510的第一输入端和编码器控制器505的输入端可用作编码器500的输入端,用于接收输入画面。此外,补充增强信息(SEI)插入器530的第二输入端可用作编码器500的输入端,用于接收元数据。输出缓冲器535的输出端可用作编码器500的输出端,用于输出位流。
转到图6,使用显性照明补偿解码画面数据的示范性解码器用附图标记600笼统表示。
视频解码器600包括输入缓冲器610,输入缓冲器610含有连接成与熵解码器645的第一输入端信号通信的输出端。熵解码器645的第一输出端连接成与逆变换器和逆量化器650的第一输入端信号通信。逆变换器和逆量化器650的输出端连接成与组合器625的第二非反相输入端信号通信。组合器625的输出端连接成与分块滤波器665的第二输入端和帧内预测模块660的第一输入端信号通信。分块滤波器665的第二输出端连接成与参考画面缓冲器680的第一输入端信号通信。参考画面缓冲器680的第一输出端连接成与运动补偿器670的第二输入端信号通信。
熵解码器645的第二输出端连接成与运动补偿器670的第三输入端和分块滤波器665的第一输入端信号通信。熵解码器645的第三输出端连接成与解码器控制器605的输入端信号通信。解码器控制器605的第一输出端连接成与熵解码器645的第二输入端信号通信。解码器控制器605的第二输出端连接成与逆变换器和逆量化器650的第二输入端信号通信。解码器控制器605的第三输出端连接成与分块滤波器665的第三输入端信号通信。解码器控制器605的第四输出端连接成与帧内预测模块660的第二输入端、与运动补偿器670的第一输入端、与带有照明补偿的非局部帧内预测器663的第三输入端、以及与参考画面缓冲器680的第二输入端信号通信。
运动补偿器670的第一输出端连接成连接成与开关697的第一输入端信号通信。帧内预测模块660的输出端连接成与开关697的第二输入端信号通信。开关697的输出端连接成与组合器625的第一非反相输入端信号通信。
熵解码器645的第四输出端连接成与带有照明补偿的非局部帧内预测器663的第一输入端信号通信。参考画面缓冲器680的第二输出端连接成与带有照明补偿的非局部帧内预测器663的第二输入端信号通信。带有照明补偿的非局部帧内预测器663的输出端连接成与开关697的第三输入端信号通信。
输入缓冲器610的输入端可用作解码器600的输入端,用于接收输入位流。带有几何扩充部分的分块滤波器665的第一输出端可用作解码器600的输出端,用于输出输出画面。
转到图7,使用隐性照明补偿编码画面数据的示范性编码器用附图标记700笼统表示。
编码器700包括帧排序缓冲器710,帧排序缓冲器710含有与组合器785的非反相输入端信号通信的输出端。组合器785的输出端连接成与变换器和量化器725的第一输入端信号通信。变换器和量化器725的输出端连接成与熵编码器745的第一输入端以及逆变换器和逆量化器750的第一输入端信号通信。熵编码器745的输出端连接成与组合器790的第一非反相输入端信号通信。组合器790的输出端连接成与输出缓冲器735的第一输入端信号通信。
编码器控制器705的第一输出端连接成与帧排序缓冲器710的第二输入端、逆变换器和逆量化器750的第二输入端、画面类型判定模块715的输入端、宏块类型(MB类型)判定模块720的第一输入端、帧内预测模块760的第二输入端、分块滤波器765的第二输入端、运动补偿器770的第一输入端、运动估计器775的第一输入端、和参考画面缓冲器780的第二输入端信号通信。
编码器控制器705的第二输出端连接成与补充增强信息(SEI)插入器730的第一输入端、变换器和量化器725的第二输入端、熵编码器745的第二输入端、输出缓冲器735的第二输入端、以及序列参数集(SPS)和画面参数集(PPS)插入器740的输入端信号通信。
SEI插入器730的输出端连接成与组合器790的第二非反相输入端信号通信。
画面类型判定模块715的第一输出端连接成与帧排序缓冲器710的第三输入端信号通信。画面类型判定模块715的第二输出端连接成与宏块类型判定模块720的第二输入端信号通信。
序列参数集(SPS)和画面参数集(PPS)插入器740的输出端连接成与组合器790的第三非反相输入端信号通信。
逆变换器和逆量化器750的输出端连接成与组合器719的第一非反相输入端信号通信。组合器719的输出端连接成与帧内预测模块760的第一输入端和分块滤波器765的第一输入端信号通信。分块滤波器765的输出端连接成与参考画面缓冲器780的第一输入端信号通信。参考画面缓冲器780的第一输出端连接成与运动估计器775的第二输入端以及与运动补偿器770的第三输入端信号通信。运动估计器775的第一输出端连接成与运动补偿器770的第二输入端信号通信。运动估计器775的第二输出端连接成与熵编码器745的第三输入端信号通信。
运动补偿器770的输出端连接成与开关797的第一输入端信号通信。帧内预测模块760的输出端连接成与开关797的第二输入端信号通信。宏块类型判定模块720的输出端连接成与开关797的第四输入端信号通信。开关797的第四输入端确定开关的“数据”输入(与控制输入、即第四输入端相比)是否将由运动补偿器770或帧内预测模块760提供。开关797的输出端连接成与组合器719的第二非反相输入端以及与组合器785的反相输入端信号通信。
参考画面缓冲器780的第二输出端连接成与隐性照明补偿参数计算器761的第一输入端和带有照明补偿的非局部帧内预测器763的第一输入端信号通信。编码器控制器705的第三输出端连接成与隐性照明补偿参数计算器761的第二输入端和带有照明补偿的非局部帧内预测器763的第二输入端信号通信。隐性照明补偿参数计算器761的输出端连接成与带有照明补偿的非局部帧内预测器763的第三输入端信号通信。带有照明补偿的非局部帧内预测器763的输出端连接成与开关797的第三输入端信号通信。
帧排序缓冲器710的第一输入端和编码器控制器705的输入端可用作编码器700的输入端,用于接收输入画面。此外,补充增强信息(SEI)插入器730的第二输入端可用作编码器700的输入端,用于接收元数据。输出缓冲器735的输出端可用作编码器700的输出端,用于输出位流。
转到图8,使用隐性照明补偿解码画面数据的示范性解码器用附图标记800笼统表示。
视频解码器800包括输入缓冲器810,输入缓冲器810含有连接成与熵解码器845的第一输入端信号通信的输出端。熵解码器845的第一输出端连接成与逆变换器和逆量化器850的第一输入端信号通信。逆变换器和逆量化器850的输出端连接成与组合器825的第二非反相输入端信号通信。组合器825的输出端连接成与分块滤波器865的第二输入端和帧内预测模块860的第一输入端信号通信。分块滤波器865的第二输出端连接成与参考画面缓冲器880的第一输入端信号通信。参考画面缓冲器880的第一输出端连接成与运动补偿器870的第二输入端信号通信。
熵解码器845的第二输出端连接成与运动补偿器870的第三输入端和分块滤波器865的第一输入端信号通信。熵解码器845的第三输出端连接成与解码器控制器805的输入端信号通信。解码器控制器805的第一输出端连接成与熵解码器845的第二输入端信号通信。解码器控制器805的第二输出端连接成与逆变换器和逆量化器850的第二输入端信号通信。解码器控制器805的第三输出端连接成与分块滤波器865的第三输入端信号通信。解码器控制器805的第四输出端连接成与帧内预测模块860的第二输入端,与运动补偿器870的第一输入端、与带有照明补偿的非局部帧内预测器863的第三输入端、与参考画面缓冲器880的第二输入端、与隐性照明补偿参数计算器861的第一输入端、以及与开关897的控制输入端(用于控制第一、第二、和第三输入端之间的选择)信号通信。
运动补偿器870的第一输出端连接成连接成与开关897的第一输入端信号通信。帧内预测模块860的输出端连接成与开关897的第二输入端信号通信。开关897的输出端连接成与组合器825的第一非反相输入端信号通信。
参考画面缓冲器880的第二输出端连接成与带有照明补偿的非局部帧内预测器863的第二输入端以及与隐性照明补偿参数计算器861的第二输入端信号通信。隐性照明补偿参数计算器861的输出端连接成与带有照明补偿的非局部帧内预测器863的第三输入端信号通信。带有照明补偿的非局部帧内预测器863的输出端连接成与开关897的第三输入端信号通信。
输入缓冲器810的输入端可用作解码器800的输入端,用于接收输入位流。带有几何扩充部分的分块滤波器865的第一输出端可用作解码器800的输出端,用于输出输出画面。
如上所述,本发明致力于帧内预测视频的照明补偿方法和装置。
依照一个或多个实施例,我们提出了用于帧内预测的自适应照明补偿(IC)技术,以便模拟画面、图像、和视频数据(本文统称为“画面”)的至少一个的空间变化。尤其,提出了旨在解决解码器如何可以检索照明补偿模型的参数的两种示范性方案。在第一种方案中,在位流中显性地用信号通知参数。因此,解码器可以解码相关语法并获取参数。在第二种方案中,不用信号通知参数。取而代之,使用已经重构像素导出参数。
视频编码器、解码器以及相应方法为将自适应照明补偿用于每种方案地编码输入画面或图像块提供了保证。示范性编码器包括计算照明补偿模型中的参数的元件、和将照明补偿模型应用于预测数据的元件。示范性方法包括接收基本未压缩图像块,计算照明补偿参数,进行位移帧内预测和/或模板匹配预测以获得预测块,将照明补偿参数应用在预测块上以获得照明补偿块,从基本未压缩图像块中减去照明补偿块,以及编码基本未压缩图像块与位移帧内预测或模板匹配预测块之差。
因此,依照一个或多个实施例,我们提出了帧内预测的自适应照明补偿。我们将把重点放在非局部帧内预测技术上,把模板匹配预测(TMP)和位移帧内预测(DIP)作为例子来说明本发明。
转到图9,非局部帧内预测的例子用附图标记900笼统表示。关于记号,重构画面用附图标记960表示,非预测画面用附图标记950表示,原始块用Y表示,以及它的相应重构块和模板分别用
(未示出)和X表示。Y的预测块表示成P,以及P的相应模板表示成Q。残差信号表示成R,以及重构残差信号表示成
因此,P
1和P
2分别代表第一预测和第二预测,以及Q
1和Q
2分别代表第一和第二预测的模板。
依照本发明,取代在编码器上应用R=Y-P,或在解码器上应用
我们建议在编码器上应用R=Y-Ψ(P),或在解码器上应用
其中Ψ[·]在一个实施例中表示IC/加权函数。我们也可以在Ψ[·]内应用某种过滤,或Ψ[·]可以代表对P的线性和/或非线性运算。为了简化说明,过滤可以是Ψ[·]的组成部分,或我们假设Ψ[·]是过滤步骤。
在Ψ[·]的一个实施例中,为了简单起见,我们建议使用多项式函数y=a0+a1x+a2x2…+anxn,其中,n=-1,0,1,…。注意,n=-1意味着未使用上面的方法。多项式的阶n可以在首标中或使用一些高级语法来规定。如果n=1,则是线性模型。
在下文中,我们将把线性模型用作一个例子来说明本发明如何致力于自适应照明补偿。在一个实施例中,我们可以按如下表示照明补偿预测信号:
其中,a是相乘加权因子,和b是相加偏移,其中两者可以联合补偿对比度和亮度。在另一个实施例中,当将照明补偿应用于非常小区域时,我们可以假设对比度自适应不是那么重要,这意味着我们可以将参数设置成a=1。因此,方程(1)中的模型按如下转变成只有偏移模型:
至于模型参数的信号通知,我们提出了两种方案:显性信号通知;或隐性导出。在一个实施例中,可以在块级上,或像例如但不局限于在切片首标、画面参数集(PPS)、序列参数集(SPS)、网络抽象层(NAL)单元首标、或补充增强信息(SEI)消息中那样,通过使用一种或多种高级语法元素显性信号通知方程(1)中的参数。我们将这种方法叫做显性照明补偿。在另一个实施例中,可以在编码器和解码器两者上隐性导出方程(1)中的参数。我们将这种方法叫做隐性照明补偿。
在下文中,我们将块级照明补偿用作例子。考虑到这一点,我们进一步示出显性和隐性照明补偿如何工作的例子。
显性照明补偿
我们首先说明显性照明补偿如果对DIP工作。
在一个实施例中,在编码器方,在搜索过程期间,我们寻找使如下成本/距离最小的预测块:
D=‖Y-(aP+b)‖ (3)
其中,a是相乘加权因子,和b是相加偏移,其中两者可以联合补偿对比度和亮度。关于方程(3),可以使用最小平方拟合/线性回归求解a和b。当然,本发明不局限于前述成本测量,因此,在保持本发明精神的同时,也可以依照本文提供的本发明的教导应用其它成本测量。如果使用像方程(2)中那样的简化模型,可以使用减去均值(mean-removed)距离准则,即,b=E(Y)-E(P),其中E[·]表示期望函数。找出距离最小的最佳预测。然后,通过一些数据语法信号通知相应参数。语法值可以绝对地编码或差分地/可预测地编码。表1示出了用于照明补偿偏移的示范性语法。可以针对方程(2)信号通知语法。
表1
mb_pred(mb_type){ |
C |
描述符 |
|
|
|
if(ic_enable&&NumMbPart(mb_type)=1){ |
|
|
mb_ic_flag |
2 |
u(1)|ae(v) |
if(mb_ic_flag) |
|
|
dpcm_of_ic_offset |
2 |
se(v)|ae(v) |
} |
|
|
|
|
|
} |
|
|
等于1的mb_ic_flag规定将照明补偿用于当前宏块。等于0的mb_ic_flag规定不将照明补偿用于当前宏块。mb_ic_flag的默认值是零。
dpcm_of_ic_offset规定要用于当前宏块的照明补偿。与可用在解码器上的周围相邻数据的功能有关地差分编码照明补偿。
在一个实施例中,我们的示范性编码器中的整个过程如下。对于每个预测候选者,我们通过使方程(3)中的模板距离最小,使用线性回归计算补偿参数a和b。通过使定义在方程(3)中的失真最小计算补偿距离。选择所有预测候选者当中具有最小距离的最佳预测。通过方程(1)生成照明补偿预测信号。生成并编码残差。在块级上信号通知照明补偿参数和位移向量。
在一个实施例中,在解码器上,从位流中接收并解码位移向量和照明补偿模型参数。然后,使用照明补偿模型参数和位移向量,通过方程(1)生成照明补偿预测信号。将解码残差加入照明补偿预测信号中。
对于模板匹配预测,如果只使用一个模板,除了搜索基于模板之外,过程与位移帧内预测情况相同。因此,取代使用方程(3),我们使用如下方程找出最佳预测:
D=‖X-(aQ+b)‖ (4)
其中,a是相乘加权因子,和b是相加偏移,其中两者可以联合补偿对比度和亮度。由于X和Q两者都可用在编码器和解码器上,对于每次模板搜索,我们可以使用线性回归计算相应a和b。的确,X和Q是分别正在预测(Y)和用于预测(P)的实际数据的相邻数据。在我们找到最佳模板之后,我们将使用方程(3)来计算在块级上信号通知的模型参数。该手段可以直接应用于多个模板情况。
在一个实施例中,我们的示范性编码器中的整个过程如下。对于每个预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(4)计算补偿距离。选择所有预测候选者当中具有最小模板距离的最佳预测。通过方程(3)计算并在块级上信号通知参数a和b。通过方程(1)生成照明补偿预测信号。生成并编码残差。
在一个实施例中,在解码器上,从位流中接收并解码参数。然后,执行编码器上的相同模板搜索过程。也就是说,对于每个预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(4)计算补偿模板距离。选择所有预测候选者当中具有最小模板距离的最佳预测。使用解码IC参数,通过方程(1)生成照明补偿预测信号。将解码残差加入照明补偿预测信号中。
转到图10,使用位移帧内预测(DIP)和显性照明补偿编码画面数据的示范性方法用附图标记1000笼统表示。
方法1000包括将控制移交给循环限制块1010的开始块1005。循环限制块1010使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1015。判定块1015确定当前模式是否是DIP模式。如果是,将控制移交给功能块1020。否则,将控制移交给功能块1045。
针对DIP下的每个搜索候选者,功能块1020计算照明补偿参数,并进行照明补偿以便最接近当前块,然后将控制移交给功能块1025。给定当前块,功能块1025选择成本最低的候选者,并将控制移交给功能块1030。给定当前块,功能块1030计算所选候选者的预测残差,并将控制移交给功能块1035。功能块1035熵编码位移向量、照明补偿参数、残差、和其它语法,并将控制移交给循环限制块1040。循环限制块1040结束循环,并将控制移交给结束块1099。
功能块1045执行非DIP模式的编码进程,并将控制移交给循环限制块1040。
转到图11,使用位移帧内预测(DIP)和显性照明补偿解码画面数据的示范性方法用附图标记1100笼统表示。
方法1100包括将控制移交给功能块1110的开始块1105。功能块1110分析位流,并将控制移交给循环限制块1115。循环限制块1115使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1120。判定块1120确定当前模式是否是DIP模式。如果是,将控制移交给功能块1125。否则,将控制移交给功能块1145。
功能块1125解码位移向量、照明补偿参数、残差、和其它语法,并将控制移交给功能块1130。功能块1130对当前块进行照明补偿,并将控制移交给功能块1135。功能块1135将残差加入当前块中,并将控制移交给循环限制块1140。循环限制块1140结束循环,并将控制移交给结束块1199。
功能块1145执行非DIP模式的解码进程,并将控制移交给循环限制块1140。
转到图12,使用模板匹配预测(TMP)和显性照明补偿编码画面数据的示范性方法用附图标记1200笼统表示。
方法1200包括将控制移交给循环限制块1210的开始块1205。循环限制块1210使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1215。判定块1215确定当前模式是否是TMP模式。如果是,将控制移交给功能块1220。否则,将控制移交给功能块1250。
针对TMP下的每个搜索候选者,功能块1220计算照明补偿参数,并进行照明补偿以便最接近当前块,然后将控制移交给功能块1225。给定当前块,功能块1225选择成本最低的候选者,并将控制移交给功能块1230。功能块1230计算当前块的照明补偿参数,进行当前块的照明补偿,并将控制移交给功能块1235。功能块1235计算当前块的残差,并将控制移交给功能块1240。功能块1240熵编码照明补偿参数、残差、和其它语法,并将控制移交给循环限制块1245。循环限制块1245结束循环,并将控制移交给结束块1299。
功能块1250执行非TMP模式的编码进程,并将控制移交给循环限制块1245。
转到图13,使用模板匹配预测(TMP)和显性照明补偿解码画面数据的示范性方法用附图标记1300笼统表示。
方法1300包括将控制移交给功能块1310的开始块1305。功能块1310分析位流,并将控制移交给循环限制块1315。循环限制块1315使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1320。判定块1320确定当前模式是否是TMP模式。如果是,将控制移交给功能块1325。否则,将控制移交给功能块1355。
功能块1325解码照明补偿参数、残差、和其它语法,并将控制移交给功能块1330。针对TMP下的每个搜索候选者,功能块1320计算照明补偿参数,并进行照明补偿以便最接近当前块,并将控制移交给功能块1335。针对当前块模板,功能块1335选择成本最低的候选者,并将控制移交给功能块1340。功能块1340对当前块进行照明补偿,并将控制移交给功能块1345。功能块1345将残差加入当前块中,并将控制移交给循环限制块1350。循环限制块1350结束循环,并将控制移交给结束块1399。
功能块1355执行非TMP模式的解码进程,并将控制移交给循环限制块1350。
隐性照明补偿
我们将首先使用TMP说明隐性照明补偿如何工作。在TMP下,由于使用基于模板的自动回归搜索,并可以在编码器和解码器两者中执行相同搜索过程,因此,我们可以将对于每个模板候选者通过对方程(4)取极小导出参数a和b的步骤嵌入模板搜索中。然后,可以将相同参数用于像方程(1)中那样的预测。
示范性编码器中的整个过程如下。对于每个预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(4)计算补偿距离。选择所有预测候选者当中具有最小模板距离的最佳预测。将从模板匹配预测中计算的相同参数a和b用在方程(1)中,以便生成照明补偿预测信号。生成并编码残差。
在示范性解码器中,执行编码器上的相同模板搜索过程。也就是说,对于每个预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(4)计算补偿距离。选择所有预测候选者当中具有最小模板距离的最佳预测。将从模板匹配预测中计算的相同参数a和b用在方程(1)中,以便生成照明补偿预测信号。将解码残差加入照明补偿预测信号中。
对于DIP,我们可以按与TMP相同的方式使用当前信号和预测信号的模板估计参数。
在一个实施例中,示范性编码器中的整个过程如下。对于每个预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(3)计算补偿距离。选择所有预测候选者当中具有按照方程(3)的最小距离的最佳预测。使用方程(1)生成照明补偿预测信号。生成并编码残差。信号通知位移向量。
在解码器上,接收并解码位移向量。然后,对于通过位移向量生成的目标预测候选者,我们通过使方程(4)中的模板距离最小,使用线性回归计算补偿参数a和b。使用方程(1)生成照明补偿预测信号。将解码残差加入照明补偿预测信号中。
转到图14,使用模板匹配预测(TMP)和隐性照明补偿编码画面数据的示范性方法用附图标记1400笼统表示。
方法1400包括将控制移交给循环限制块1410的开始块1405。循环限制块1410使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1415。判定块1415确定当前模式是否是TMP模式。如果是,将控制移交给功能块1420。否则,将控制移交给功能块1450。
针对TMP下的每个搜索候选者,功能块1420计算照明补偿参数,并针对当前块的模板进行照明补偿,并将控制移交给功能块1425。功能块1425针对当前块的模板选择成本最低的候选者,存储相应照明补偿参数,并将控制移交给功能块1430。功能块1430对当前块进行照明补偿,并将控制移交给功能块1435。功能块1435计算当前块的残差,并将控制移交给功能块1440。功能块1440熵编残差和其它语法,并将控制移交给循环限制块1445。循环限制块1445结束循环,并将控制移交给结束块1499。
功能块1450执行非TMP模式的编码进程,并将控制移交给循环限制块1445。
转到图15,使用模板匹配预测(TMP)和隐性照明补偿解码画面数据的示范性方法用附图标记1500笼统表示。
方法1500包括将控制移交给功能块1510的开始块1505。功能块1510分析位流,并将控制移交给循环限制块1515。循环限制块1515使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1520。判定块1520确定当前模式是否是TMP模式。如果是,将控制移交给功能块1525。否则,将控制移交给功能块1555。
功能块1525解码残差和其它语法,并将控制移交给功能块1530。针对TMP下的每个搜索候选者,功能块1530计算照明补偿参数,并进行照明补偿以便最接近当前块,然后将控制移交给功能块1535。功能块1535针对当前块的模板,选择成本最低的候选者,存储相应照明补偿参数,并将控制移交给功能块1540。功能块1540对当前块进行照明补偿,并将控制移交给功能块1545。功能块1545将残差加入当前块中,并将控制移交给循环限制块1550。循环限制块1550结束循环,并将控制移交给结束块1599。
功能块1555执行非TMP模式的解码进程,并将控制移交给循环限制块1550。
转到图16,使用位移帧内预测(DIP)和隐性照明补偿编码画面数据的示范性方法用附图标记1600笼统表示。
方法1600包括将控制移交给循环限制块1610的开始块1605。循环限制块1610使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1615。判定块1615确定当前模式是否是DIP模式。如果是,将控制移交给功能块1620。否则,将控制移交给功能块1645。
针对DIP下的每个搜索候选者,功能块1620使用模板计算照明补偿参数,并对当前块进行照明补偿,并将控制移交给功能块1625。功能块1625为当前块选择成本最低的候选者,并将控制移交给功能块1630。功能块1630计算当前块的的残差,并将控制移交给功能块1635。功能块1635熵编码位移向量、残差、和其它语法,并将控制移交给循环限制块1640。循环限制块1640结束循环,并将控制移交给结束块1699。
功能块1645执行非DIP模式的编码进程,并将控制移交给循环限制块1640。
转到图17,使用位移帧内预测(DIP)和隐性照明补偿解码画面数据的示范性方法用附图标记1700笼统表示。
方法1700包括将控制移交给功能块1710的开始块1705。功能块1710分析位流,并将控制移交给循环限制块1715。循环限制块1715使用变量i开始循环,其中i具有从0到宏块的数量-1(num_MBs_minus 1)的范围,并将控制移交给判定块1720。判定块1720确定当前模式是否是DIP模式。如果是,将控制移交给功能块1725。否则,将控制移交给功能块1750。
功能块1725解码位移向量和其它语法,并将控制移交给功能块1730。功能块1730使用模板计算照明补偿参数,并将控制移交给功能块1735。功能块1735对当前块进行照明补偿,并将控制移交给功能块1740。功能块1740将残差加入当前块中,并将控制移交给循环限制块1745。循环限制块1745结束循环,并将控制移交给结束块1799。
功能块1750执行非DIP模式的解码进程,并将控制移交给循环限制块1745。
现在对其中一些上面已经提到过的本发明的随之而来附带优点/特征的一些加以描述。例如,一种优点/特征是含有使用非局部帧内预测来编码画面的编码器的装置。该编码器包括将照明补偿应用于从非局部帧内预测中获得的预测数据的照明补偿处理单元(照明补偿部分)。
另一种优点/特征是如上所述含有编码器的装置,其中照明补偿自适应地应用于预测数据。编码数据包括位移帧内预测和模板匹配预测的至少一种。
又一种优点/特征是如上所述的含有编码器的装置,其中模拟照明补偿以获得最终模型。最终模型基于多项式函数、线性函数、和非线性函数中的至少一个。
再一种优点/特征是如上所述的模拟照明补偿以获得最终模型的含有编码器的装置,其中最终模型是基于一阶多项式的线性模型。
此外,另一种优点/特征是如上所述的最终模型是基于一阶多项式的线性模型的含有编码器的装置,其中一阶多项式是基于相加性常数的仅偏移函数(offset only function)。
并且,另一种优点/特征是如上所述的模拟照明补偿以获得最终模型的含有编码器的装置,其中使用最小平方函数求解最终模型的参数。
此外,另一种优点/特征是如上所述的模拟照明补偿以获得最终模型的含有编码器的装置,其中将非局部帧内预测应用于亮度数据、颜色数据和景深数据中的至少一个。
另外,又一种优点/特征是如上所述的含有编码器的装置,其中模拟照明补偿以获得最终模型。使用至少一个块级语法元素和至少一个高级语法元素的至少一个显性地信号通知(signal)最终模型的参数。
此外,另一种优点/特征是如上所述的含有编码器的装置,其中模拟照明补偿以获得最终模型。从应用于画面的当前块和与当前块有关的相应预测块的模板匹配过程中导出最终模式的参数。
相关领域的普通技术人员可以根据本文的教导容易地弄清本发明的这些和其它特征和优点。应该明白,本发明的教导可以以硬件、软件、固件、专用处理器或它们的组合体的各种形式实现。
更可取的是,将本发明的教导实现成硬件和软件的组合体。此外,软件可以实现成有形地具体化在程序存储单元上的应用程序。应用程序可以上载到包含任何适当结构的机器,并由该机器执行。可取的是,机器是在含有像一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)、和输入/输出(“I/O”)接口那样的硬件的计算机平台上实现的。计算机平台也可以包括操作系统和微指令代码。本文所述的各种进程和功能可以是可以由CPU执行的微指令代码的一部分或应用程序的一部分,或两者的任何组合体。另外,像附加数据存储单元和打印单元那样,各种外围单元可以与计算机平台连接。
还要进一步明白,由于描绘在附图中的组成系统部件和方法的一些最好用软件实现,因此,取决于编程本发明的方式,系统部件或进程功能块之间的实际连接可能不同。在本文的教导下,相关领域的普通技术人员能够设想出本发明的这些和类似实现或配置。
尽管本文参照附图对例示性实施例作了描述,但应该明白,本发明不局限于那些确切实施例,相关领域的普通技术人员可以不偏离本发明的范围或精神地作出各种改变和修改。所有这样的改变或修改都意欲包括在如所附权利要求书所述的本发明的范围之内。