发明内容
总地来说,本发明描述用于译码视频数据的技术。本发明描述用于在视频译码过程期间变换残余视频数据并扫描变换系数的技术。总地来说,可对待译码的图片的块进行帧内模式编码(例如,关于同一图片的其它块而编码)或帧间模式编码(例如,关于先前译码的图片的块而编码)。在任一状况下,视频编码器形成预测数据及残余数据。视频编码器可使用一个或一个以上各种变换(例如离散正弦变换、离散余弦变换、定向变换及/或旋转变换)来变换残余值。视频编码器可经配置以基于特定准则(例如,在对块进行帧内模式编码时所使用的预测方向)来选择待应用的一个或一个以上变换。
视频编码器可通过变换视频数据块的残余数据来计算变换系数,其中所述残余数据对应于原始块与预测块之间的像素差值。变换系数可对应于与所变换的块具有相同大小(就系数的数目来说)的二维矩阵。视频编码器可扫描变换系数以将二维矩阵转化成一维阵列,借此将变换系数串行化。根据本发明的技术,视频编码器可应用基于用以变换所述块的变换所选择的预定扫描模式。在一些实例中,根据本发明的技术,视频编码器可应用自适应扫描模式而非预定扫描模式,其中视频编码器可周期性地更新自适应扫描模式。在一些实例中,扫描模式可基于所述变换及/或用以预测所述块的帧内预测模式。
在一个实例中,一种编码视频数据的方法包括:基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块;及使用从所述帧内预测模式所映射的变换来变换所述残余块。
在另一实例中,一种用于编码视频数据的设备,所述设备包含视频编码器,所述视频编码器经配置以:基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块;且使用从所述帧内预测模式所映射的变换来变换所述残余块。
在另一实例中,一种用于编码视频数据的设备包括:用于基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块的装置;及用于使用从所述帧内预测模式所映射的变换来变换所述残余块的装置。
在另一实例中,一种计算机程序产品包括计算机可读存储媒体,所述计算机可读存储媒体上存储有指令,所述指令在执行时使用于编码视频数据的装置的处理器:基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块;且使用从所述帧内预测模式所映射的变换来变换残余块。
在另一实例中,一种解码视频数据的方法包括:确定将用来预测视频数据块的帧内预测模式;及使用从所述帧内预测模式所映射的逆变换来逆变换所述块的经变换的残余数据。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:确定将用来预测视频数据块的帧内预测模式;且使用从所述帧内预测模式所映射的逆变换来逆变换所述块的经变换的残余数据。
在另一实例中,一种用于解码视频数据的设备包括:用于确定将用来预测视频数据块的帧内预测模式的装置;及用于使用从所述帧内预测模式所映射的逆变换来逆变换所述块的经变换的残余数据的装置。
在另一实例中,一种计算机程序产品包含计算机可读存储媒体,所述计算机可读存储媒体上存储有指令,所述指令在执行时使用于解码视频数据的装置的处理器:确定将用来预测视频数据块的帧内预测模式;且使用从所述帧内预测模式所映射的逆变换来逆变换所述块的经变换的残余数据。
在另一实例中,一种编码视频数据的方法包括:接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的定向变换;及将所述定向变换应用于所述块的残余数据。
在另一实例中,一种用于编码视频数据的设备包括视频编码器,所述视频编码器经配置以:接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的定向变换;且将所述定向变换应用于所述块的残余数据。
在另一实例中,一种用于编码视频数据的设备包括:用于接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示的装置;用于确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式的装置,所述第一帧内预测模式被映射到所述第二帧内预测模式;用于确定所述第二帧内预测模式所映射到的定向变换的装置;及用于将所述定向变换应用于所述块的残余数据的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于编码视频数据的装置的处理器:接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的定向变换;且将所述定向变换应用于所述块的残余数据。
在另一实例中,一种解码视频数据的方法包括:接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的逆定向变换;及将所述逆定向变换应用于所述块的经变换的残余数据。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的逆定向变换;且将所述逆定向变换应用于所述块的经变换的残余数据。
在另一实例中,一种用于解码视频数据的设备包括:用于接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示的装置;用于确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式的装置,所述第一帧内预测模式被映射到所述第二帧内预测模式;用于确定所述第二帧内预测模式所映射到的逆定向变换的装置;及用于将所述逆定向变换应用于所述块的经变换的残余数据的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于解码视频数据的装置的处理器:接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自小于所述第一帧内预测模式集合的第二帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的逆定向变换;且将所述逆定向变换应用于所述块的经变换的残余数据。
在另一实例中,一种编码视频数据的方法包括:选择将用来编码视频数据块的帧内预测模式;及确定所述块是否包括为一大小的子块,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小。当所述块包括为所述大小的所述子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时,所述方法包括:选择多个可能的变换中的一者;使用所述多个可能的变换中的所选变换来变换所述子块;及提供针对所述块的所述大小的所述多个可能的变换中的所选变换的指示。
在另一实例中,一种用于编码视频数据的设备包括视频编码器,所述视频编码器经配置以:选择将用来编码视频数据块的帧内预测模式;确定所述块是否包括为一大小的子块,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的所述子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时,选择多个可能的变换中的一者;使用所述多个可能的变换中的所选变换来变换所述子块;且提供针对所述块的所述大小的所述多个可能的变换中的所选变换的指示。
在另一实例中,一种用于编码视频数据的设备包括:用于选择将用来编码视频数据块的帧内预测模式的装置;用于确定所述块是否包括为一大小的子块的装置,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小;用于在所述块包括为所述大小的所述子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时选择所述多个可能的变换中的一者的装置;用于使用所述多个可能的变换中的所选变换来变换所述子块的装置;及用于提供针对所述块的所述大小的所述多个可能的变换中的所选变换的指示的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于编码视频数据的装置的处理器:选择将用来编码视频数据块的帧内预测模式;确定所述块是否包括为一大小的子块,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的所述子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时,选择多个可能的变换中的一者;使用所述多个可能的变换中的所选变换来变换所述子块;且提供针对所述块的所述大小的所述多个可能的变换中的所选变换的指示。
在另一实例中,一种解码视频数据的方法包括:接收将用来解码视频数据块的帧内预测模式的第一指示;确定所述块是否包括为一大小的子块,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的所述子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时,接收多个可能的逆变换中的一者的第二指示;及使用所述多个可能的逆变换中的所指示逆变换来逆变换所述子块。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:接收将用来解码视频数据块的帧内预测模式的第一指示;确定所述块是否包括为一大小的子块,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的所述子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时,接收多个可能的逆变换中的一者的第二指示;且使用所述多个可能的逆变换中的所指示逆变换来逆变换所述子块。
在另一实例中,一种用于解码视频数据的设备包括:用于接收将用来解码视频数据块的帧内预测模式的第一指示的装置;用于确定所述块是否包括为一大小的子块的装置,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;用于在所述块包括为所述大小的所述子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时接收所述多个可能的逆变换中的一者的第二指示的装置;及用于使用所述多个可能的逆变换中的所指示逆变换来逆变换所述子块的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于解码视频数据的装置的处理器:接收将用来解码视频数据块的帧内预测模式的第一指示;确定所述块是否包括为一大小的子块,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的所述子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时,接收多个可能的逆变换中的一者的第二指示;且使用所述多个可能的逆变换中的所指示逆变换来逆变换所述子块。
在另一实例中,一种编码视频数据的方法包括:扫描变换系数的二维块以产生变换系数的一维向量;确定指示所述一维向量中的变换系数是否重要的值;及使用上下文模型对所述值中的至少一者进行熵编码,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
在另一实例中,一种用于编码视频数据的设备包括视频编码器,所述视频编码器经配置以:扫描变换系数的二维块以产生变换系数的一维向量;确定指示所述一维向量中的变换系数是否重要的值;且使用上下文模型来对所述值中的至少一者进行熵编码,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
在另一实例中,一种用于编码视频数据的设备包括:用于扫描变换系数的二维块以产生变换系数的一维向量的装置;用于确定指示所述一维向量中的变换系数是否重要的值的装置;及用于使用上下文模型来对所述值中的至少一者进行熵编码的装置,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于编码视频数据的装置的处理器:扫描变换系数的二维块以产生变换系数的一维向量;确定指示所述一维向量中的变换系数是否重要的值;且使用上下文模型来对所述值中的至少一者进行熵编码,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
在另一实例中,一种解码视频数据的方法包括:接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值;使用上下文模型来对所述值中的至少一者进行熵解码,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;及逆扫描所述一维向量以产生变换系数的二维块。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值;使用上下文模型来对所述值中的至少一者进行熵解码,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;且逆扫描所述一维向量以产生变换系数的二维块。
在另一实例中,一种用于解码视频数据的设备包括:用于接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值的装置;用于使用上下文模型来对所述值中的至少一者进行熵解码的装置,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;及用于逆扫描所述一维向量以产生变换系数的二维块的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于解码视频数据的装置的处理器:接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值;使用上下文模型来对所述值中的至少一者进行熵解码,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;且逆扫描所述一维向量以产生变换系数的二维块。
在一个实例中,一种编码视频数据的方法包括:使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块;使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;及基于所述所选统计数据集而自适应地扫描变换系数的所述二维块。
在另一实例中,一种用于编码视频数据的设备包括视频编码器,所述视频编码器经配置以:使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块;使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;且基于所述所选统计数据集而自适应地扫描变换系数的所述二维块。
在另一实例中,一种用于编码视频数据的设备包括:用于使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块的装置;用于使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块的装置;用于选择与第一变换及旋转变换中的至少一者相关联的统计数据集的装置,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;及用于基于所述所选统计数据集而自适应地扫描变换系数的所述二维块的装置。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于编码视频数据的装置的处理器:使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块;使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;且基于所述所选统计数据集而自适应地扫描变换系数的所述二维块。
在另一实例中,一种解码视频数据的方法包括:接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;及基于所述所选统计数据集而自适应地逆扫描所接收一维向量以产生所述块的变换系数的二维矩阵,所述所接收一维向量包括所述块的残余数据的编码版本。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;且基于所述所选统计数据集而自适应地逆扫描所接收一维向量以产生所述块的变换系数的二维矩阵,所述所接收一维向量包括所述块的残余数据的编码版本。
在另一实例中,一种用于解码视频数据的设备包括:用于接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示的装置;用于选择与第一变换及旋转变换中的至少一者相关联的统计数据集的装置,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;及用于基于所述所选统计数据集而自适应地逆扫描所接收一维向量以产生所述块的变换系数的二维矩阵的装置,所述所接收一维向量包括所述块的残余数据的编码版本。
在另一实例中,一种计算机程序产品包含计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使用于解码视频数据的装置的处理器:接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的所述二维块中的位置将为非零的可能性;且基于所述所选统计数据集而自适应地逆扫描所接收一维向量以产生所述块的变换系数的二维矩阵,所述所接收一维向量包括所述块的残余数据的编码版本。
在另一实例中,一种解码视频数据的方法包括:接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息;确定边缘是否存在于视频数据的所述块中;在确定所述边缘存在于所述块中之后,确定所述边缘的角度;基于指示所述帧内预测模式为DC帧内预测模式的信息及所述边缘存在于所述块中的所述确定,使用从定向帧内预测模式所映射的定向逆变换来逆变换所述块,所述定向帧内预测模式具有接近所述边缘的角度的角度;及解码所述经逆变换的块。
在另一实例中,一种用于解码视频数据的设备包括视频解码器,所述视频解码器经配置以:接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息;确定边缘是否存在于视频数据的所述块中;在确定所述边缘存在于所述块中之后,确定所述边缘的角度;基于指示所述帧内预测模式为DC帧内预测模式的信息及所述边缘存在于所述块中的所述确定,使用从定向帧内预测模式所映射的定向逆变换来逆变换所述块,所述定向帧内预测模式具有接近所述边缘的角度的角度;且解码所述经逆变换的块。
在另一实例中,一种用于解码视频数据的设备包括:用于接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息的装置;用于确定边缘是否存在于视频数据的所述块中的装置;用于在确定所述边缘存在于所述块中之后确定所述边缘的角度的装置;用于在确定所述边缘的角度之后,基于指示所述帧内预测模式为DC帧内预测模式的信息及所述边缘存在于所述块中的所述确定而使用从定向帧内预测模式所映射的定向逆变换来逆变换所述块的装置,所述定向帧内预测模式具有接近所述边缘的角度的角度;及用于解码所述经逆变换的块的装置。
在另一实例中,一种计算机程序产品包括计算机可读媒体,所述计算机可读媒体上存储有指令,所述指令在执行时使处理器:接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息;确定边缘是否存在于视频数据的所述块中;在确定所述边缘存在于所述块中之后确定所述边缘的角度;且基于指示所述帧内预测模式为DC帧内预测模式的信息及所述边缘存在于所述块中的所述确定,使用从定向帧内预测模式所映射的定向逆变换来逆变换所述块,所述定向帧内预测模式具有接近所述边缘的角度的角度;且解码所述经逆变换的块。
在另一实例中,一种编码视频数据的方法包括:确定待帧内预测编码的块在所述块内含有边缘;基于使用边缘导向式(edgedirected)帧内预测模式计算出的预测值来计算所述块的残余块;基于所述边缘存在于所述块中的确定及对基于边缘的帧内预测模式的选择,使用从定向帧内预测模式所映射的定向变换来变换所述残余块,所述定向帧内预测模式具有接近所述边缘的角度的角度;及输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息。
在另一实例中,一种用于编码视频数据的设备包括视频编码器,所述视频编码器经配置以:确定待帧内预测编码的块在所述块内含有边缘;基于使用边缘导向式帧内预测模式计算出的预测值来计算所述块的残余块;基于所述边缘存在于所述块中的确定及对基于边缘的帧内预测模式的选择,使用从定向帧内预测模式所映射的定向变换来变换所述残余块,所述定向帧内预测模式具有接近所述边缘的角度的角度;且输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息。
在另一实例中,一种用于编码视频数据的设备包括:用于确定待帧内预测编码的块在所述块内含有边缘的装置;用于基于使用边缘导向式帧内预测模式计算出的预测值来计算所述块的残余块的装置;用于基于所述边缘存在于所述块中的确定及对基于边缘的帧内预测模式的选择而使用从定向帧内预测模式所映射的定向变换来变换所述残余块的装置,所述定向帧内预测模式具有接近所述边缘的角度的角度;及用于输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息的装置。
在另一实例中,一种计算机程序产品包括计算机可读存储媒体,所述计算机可读存储媒体上存储有指令,所述指令在执行时使处理器:确定待帧内预测编码的块在所述块内含有边缘;基于使用边缘导向式帧内预测模式计算出的预测值来计算所述块的残余块;基于所述边缘存在于所述块中的确定及对基于边缘的帧内预测模式的选择,使用从定向帧内预测模式所映射的定向变换来变换所述残余块,所述定向帧内预测模式具有接近所述边缘的角度的角度;且输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息。
具体实施方式
一般来说,本发明描述用于译码视频数据的技术。更具体来说,本发明描述关于在视频译码过程期间变换残余数据及扫描变换系数的技术。经编码的视频数据可包括预测数据及残余数据。视频编码器可在帧内预测模式或帧间预测模式期间产生预测数据。帧内预测通常涉及关于同一图片的邻近的先前译码的块来预测所述图片的一块。帧间预测通常涉及关于先前译码的图片的数据来预测图片的一块。
在帧内预测或帧间预测之后,视频编码器可计算所述块的残余值。残余值通常对应于所述块的预测数据与所述块的真值之间的差。为进一步压缩一块的残余值,可将残余值变换为变换系数的集合,所述变换系数将尽可能多的数据(也称为“能量”)压缩为尽可能少的系数。变换系数对应于系数的二维矩阵,所述二维矩阵的大小与原始块相同。换句话说,存在正好与原始块中的像素一样多的变换系数。然而,归因于变换,许多所述变换系数可具有等于零的值。
在一些状况下,可将二次变换(例如旋转变换)应用于通过第一变换所产生的变换系数的子集。举例来说,在将16×16残余块变换为变换系数的16×16矩阵之后,可将旋转变换应用于最低频变换系数的8×8块。尽管此实例将旋转变换描述为二次变换,但也可将其它二次变换(例如,KLT、DCT及其类似者)应用为二次变换。也可基于用于块的用信号通知的帧内预测模式来选择这些二次变换。
对“DCT变换”的参考应理解为包括定点实施方案与浮点实施方案两者。也就是说,DCT变换的实施方案可实际上包含DCT的近似,使得DCT变换具有整数系数(也就是说,定点系数)而非有理数系数。
在一些实例中,变换可包含不可分离变换。不可分离变换通常计算成本很高,且因此视频译码装置可改为应用可分离变换。一般来说,可分离变换包括应用于块的行的水平分量及应用于块的列的垂直分量。以此方式,可分离变换可具有行变换分量及列变换分量,也将其称为两个正交变换分量。可使用两个矩阵来定义可分离变换,所述矩阵中的每一者对应于所述正交变换分量中的一者。不可分离变换可包括仅一个矩阵,所述矩阵在应用时产生在概念上类似于应用可分离变换的结果但经由相对较密集的计算产生所述结果。
变换残余数据块产生所述块的变换系数的集合。视频编码器可接着量化变换系数以进一步压缩视频数据。量化通常涉及将相对大的集合内的值映射到相对小的集合中的值,因此减少表示经量化的变换系数所需的数据的量。在量化之后,视频编码器可扫描变换系数,从而从包括经量化的变换系数的二维矩阵产生一维向量。视频编码器可在扫描之前或之后将特定系数(例如,矩阵的除左上角之外的所有系数,或阵列中从位置N到阵列的结尾的所有系数)清零(zeroout)。
视频编码器可接着对所得阵列进行熵编码,以更进一步压缩数据。在一些实例中,视频编码器可经配置以使用可变长度码(VLC)来表示阵列的各种可能的经量化的变换系数(例如,使用上下文自适应性可变长度译码(CAVLC))。在其它实例中,视频编码器可经配置以使用二进制算术译码来编码所得经量化的系数(例如,使用上下文自适应性二进制算术译码(CABAC))。
本发明描述关于在视频译码过程期间对残余值的变换、量化、扫描及熵编码的几种技术。所述技术可由视频编码单元与视频解码单元两者应用,视频编码单元与视频解码单元包括经配置以执行视频编码及/或解码的视频编码器/解码器(编解码器)及处理单元。对“视频译码单元”或“视频译码装置”的参考应理解为指代能够编码、解码视频数据或既能编码又能解码视频数据的单元或装置。
当前正在进行开发新的视频译码标准(当前被称为高效率视频译码(HEVC))的努力。即将来临的标准也被称为H.265。标准化努力是基于视频译码装置的模型,此模型被称为HEVC测试模型(HM)。HM假定视频译码装置的若干能力胜于根据(例如)ITU-TH.264/AVC的装置。举例来说,H.264提供九种帧内预测编码模式,而HM提供多达三十四种帧内预测编码模式。
HM将视频数据块称为译码单元(CU),CU可包括一个或一个以上预测单元(PU)及/或一个或一个以上变换单元(TU)。位流内的语法数据可定义最大译码单元(LCU),就像素的数目来说,LCU为最大译码单元。一般来说,CU与H.264的宏块具有类似目的,只是CU不具有大小区别。因此,可将CU分割为子CU。一般来说,本发明中对CU的参考可指代图片的最大译码单元或LCU的子CU。可将LCU分割为子CU,且可将每一子CU进一步分割为子CU。位流的语法数据可定义LCU可被分割的最大次数(称为CU深度)。因此,位流也可定义最小译码单元(SCU)。本发明还使用术语“块”来指代CU、PU或TU中的任一者。
LCU可与四元树数据结构相关联。一般来说,四元树数据结构包括每CU一个节点,其中根节点对应于LCU。如果CU被分割为四个子CU,则对应于CU的节点包括四个叶节点,所述叶节点中的每一者对应于所述子CU中的一者。四元树数据结构的每一节点可提供对应CU的语法数据。举例来说,四元树中的节点可包括指示对应于所述节点的CU是否被分割为子CU的分割旗标。CU的语法元素可以递归方式来定义,且可取决于所述CU是否被分割为子CU。如果CU未被进一步分割,则将其称为叶CU。在本发明中,尽管不存在原始叶CU的明确分割,但叶CU的4个子CU也将被称为叶CU。举例来说,如果为16×16大小的CU未被进一步分割,则尽管16x16的CU从未被分割,但四个8×8的子CU将也被称为叶CU。
此外,叶CU的TU也可与相应四元树数据结构相关联。也就是说,叶CU可包括一指示所述叶CU如何被划分为TU的四叉树。本发明将指示LCU如何被划分的四元树称为CU四元树,且将指示叶CU如何被划分为TU的四元树称为TU四元树。TU四元树的根节点通常对应于叶CU,而CU四元树的根节点通常对应于LCU。将TU四元树的未被分割的TU称为叶TU。
叶CU可包括一个或一个以上预测单元(PU)。一般来说,PU表示对应CU的全部或一部分,且可包括用于检索所述PU的参考样本的数据。举例来说,当PU经帧间模式编码时,PU可包括定义所述PU的运动向量的数据。定义运动向量的数据可描述(例如)运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度或八分之一像素精度)、运动向量所指向的参考帧及/或运动向量的参考列表(例如,列表0或列表1)。叶CU的定义所述PU的数据还可描述(例如)所述CU被划分为一个或一个以上PU。划分模式可取决于CU是未经译码、经帧内预测模式编码、或是经帧间预测模式编码而不同。对于帧内译码来说,PU可被视为与下文所描述的叶变换单元相同。
叶CU可包括一个或一个以上变换单元(TU)。如上文所论述,可使用TU四元树结构来规定变换单元。也就是说,一分割旗标可指示叶CU是否被分割为四个变换单元。接着,每一变换单元可被进一步分割为4个子TU。当TU未被进一步分割时,可将其称为叶TU。通常对于帧内译码来说,属于叶CU的所有叶TU共享相同的帧内预测模式。也就是说,通常应用相同的帧内预测模式来计算叶CU的所有TU的预测值。对于帧内译码来说,视频编码器可使用帧内预测模式将每一叶TU的残余值计算为预测值的对应于所述TU的部分与原始块之间的差。可变换、量化及扫描所述残余值。对于帧间译码来说,视频编码器可在PU层级上执行预测且可针对每一PU计算残余。可变换、量化及扫描对应于叶CU的残余值。对于帧间译码来说,叶TU可大于或小于PU。对于帧内译码来说,PU可与对应的叶TU并置。在一些实例中,叶TU的最大大小可为对应的叶CU的大小。
一般来说,除非另外指出,否则本发明使用术语CU及TU分别指代叶CU及叶TU。一般来说,本发明的技术涉及对CU的数据的变换、量化、扫描及熵编码。作为一实例,本发明的技术包括基于用以预测一帧内预测块的帧内预测模式来选择将用来变换所述块的残余值的变换。本发明还使用术语“定向变换”或“经设计的变换”指代取决于帧内预测模式方向的此变换。也就是说,视频编码器可选择待应用于变换单元(TU)的定向变换。如上文所指出,帧内预测包括从同一图片的先前译码的CU及TU来预测所述图片的当前CU的TU。更具体来说,视频编码器可使用特定帧内预测模式来帧内预测一图片的当前TU。
本发明的技术包括使特定变换与帧内预测模式相关联。因此,根据本发明的技术,在帧内预测模式与变换之间可存在一对一的对应。在一些实例中,在帧内预测模式与其变换之间可存在多对一的对应。举例来说,大的帧内预测模式集合可映射到较小的帧内预测模式集合,且较小的帧内预测模式集合中的每一帧内预测模式可一对一地映射到相应变换。
所述变换还可映射到相应扫描模式。在一些实例中,帧内预测模式可映射到变换与扫描两者,而在其它实例中,帧内预测模式可映射到变换,且变换可映射到扫描。在各种实例中,可使用变换与系数扫描的各种组合。举例来说,帧内预测模式可映射到依模式而定的定向变换,且在所有状况下可使用锯齿状扫描(zig-zagscan)。
在一些实例中,视频编码器20可经配置以用信号通知待应用的一个或一个以上变换与一扫描模式的组合,而非将帧内预测模式映射到变换及/或扫描模式。同样,视频解码器30可经配置以基于所接收的指示,而非帧内预测模式与变换及扫描模式之间的映射,来确定待应用的变换及扫描模式。
所述变换可包括离散余弦变换(DCT)及八个定向变换(也称为卡洛变换(Karhunen-Loèvetransform,KLT))。DCT通常为具有不同频率的余弦函数的总和,其中所述函数被应用于残余值。所述KLT通常各自包括两个矩阵。KLT中的每一矩阵与待变换的残余块为相同的大小。可从训练集数据导出所述KLT,或在假定用于视频帧的模型及/或预测残余的情况下以分析方式导出所述KLT。
HM编码器可配置有用于特定块大小的三十四种帧内预测模式。因此,为支持定向帧内预测模式与定向变换之间的一对一映射,HM编码器及解码器将需要针对每一所支持的变换大小而存储多达68个矩阵。此外,针对其支持所有三十四种帧内预测模式的块大小可为相对大的块,例如,16×16个像素、32×32个像素或甚至更大。
在一些实例中,本发明提供用于减少编码器及解码器需要支持的定向变换的数目的技术。也就是说,编码器及解码器可支持比可用帧内预测模式的数目少的定向变换。根据这些技术,编码器(例如)可将相对大的帧内预测模式集合映射到帧内预测模式的子集。所述子集中的帧内预测模式中的每一者可与一定向变换相关联。也就是说,所述子集中的帧内预测模式可与一定向变换集合具有一对一的对应。因此,所述大的集合中的帧内预测模式可与所述定向变换集合具有多对一的对应。
举例来说,34种HM定向帧内预测模式中的每一者可映射到H.264的八种定向帧内预测模式中的一者。视频编码器可因此选择一定向预测模式来对当前TU的值进行帧内预测,确定来自所述所选模式所映射到的子集的帧内预测模式,接着使用映射到来自所述子集的帧内预测模式的定向变换来变换当前TU。另外,所述定向变换中的每一者可与相应扫描模式相关联。因此,编码器可执行与定向变换相关联的扫描以产生变换系数的向量,所述向量可接着被量化。此外,编码器可配置有所述向量的最大大小。也就是说,编码器在达到最大大小后即可停止扫描变换系数,无论待扫描的下一系数是否为非零。
当使用上文所描述的技术时,通过应用上文所描述的技术,编码器无需用信号通知用于特定TU的变换。也就是说,编码器及解码器可各自配置有:大的集合的帧内预测模式到子集的帧内预测模式的多对一映射,及子集的帧内预测模式到定向变换的一对一映射。因此,通过用信号通知来自大的集合的帧内预测模式,解码器可导出用以变换所述块的变换。此外,这些技术可由旧版装置实施,所述旧版装置具有可经分配以存储各种定向变换的矩阵的有限存储器。
HM编码器可经配置以使得用于一块的可用帧内预测模式集合基于所述块的大小而不同。也就是说,CU的大小可确定可用于所述CU的帧内预测模式的数目,编码器可从所述帧内预测模式选择一帧内预测模式来预测用以计算TU的系数的值。下表1说明CU大小与可用于为所述大小的CU的帧内预测模式的数目之间的对应的一个实例。在本发明中,尽管不存在对原始叶CU的明确分割,但也将叶CU的4个子CU称为叶CU。如果叶CU具有最小的CU大小,则这4个子CU可选择不同的帧内预测模式。因此,所述表具有针对4×4的CU大小的一条目。
表1
CU大小 |
帧内预测模式的数目 |
4×4 |
17 |
8×8 |
34 |
16×16 |
34 |
32×32 |
34 |
64×64 |
5 |
一般来说,视频编码器可用信号通知用于一块的预测方向,以便视频解码器恰当地解码所述块。在一些实例中,视频编码器可经配置以确定用于一CU的单一预测方向,其可应用于属于所述CU的所有TU。然而,如上文在表1中所指出,与其它大小的块相比,特定大小的块具有较少的可用帧内预测模式。通过允许在为CU块大小时的预测方向的数目被用于TU块大小,可解决这些状况。或者,可将大的集合的帧内预测模式映射到较小的集合(例如,子集)的帧内预测模式。如上文所论述,在大的集合的帧内预测模式与较小的集合的帧内预测模式之间可存在多对一的关系。
TU四元树结构可导致将大块(CU)分解为较小块(TU)。可在位流中明确地用信号通知根块的空间预测模式(用于CU)。所得的较小TU四元树块(TU)可从TU四元树的根块(其对应于CU)的预测模式继承其预测模式。然而,较小块(TU)所支持的空间预测方向的数目可不同于根块(CU)的空间预测方向的数目。通过允许用于较小块(TU)的更多预测方向,可解决此状况。或者,可根据预定准则(例如最小化用于CU的帧内预测方向与较小块中的所支持预测方向之间的预测方向角度差)通过多对一或一对一的映射从根块(CU)的预测模式导出较小块(TU)的预测模式。可基于此映射来选择定向变换及扫描模式。
以此方式,视频编码器可针对CU用信号通知帧内预测方向一次。假定所述CU包括为不支持用信号通知的帧内预测方向的大小的TU,则视频编码器可基于映射来确定用于所述TU的帧内预测模式。也就是说,视频编码器可使用较小集合的帧内预测模式来对用以计算TU的预测块进行帧内预测,较大集合的用信号通知的帧内预测模式被映射到所述较小集合的帧内预测模式。同样,视频解码器可包括相同配置,使得视频解码器可确定用于所接收CU的每一TU的帧内预测模式。或者,可增加用于TU的预测模式的数目以匹配用于对应的CU的预测模式的数目。
在一些实例中,对于一些帧内预测模式来说,多个变换可能有可能用于为特定大小的TU。在这些状况下,视频解码器可能不能仅从帧内预测模式导出待应用于TU的变换。因此,视频编码器可能需要用信号通知待用于为多个变换有可能用于其的大小的TU的变换。可在CU层级上用信号通知此信息,而非用信号通知用于每一此TU的变换。在此状况下,此变换可应用于CU中所含有的所有TU。对于为如下大小的TU来说,可使用所映射的变换:针对所述大小,仅一个变换被映射到用信号通知的帧内预测模式。
此外,仅当CU包括为多个变换有可能用于其的大小的TU时才需存在规定变换的语法。对于仅一个变换有可能用于其的TU来说,视频编码器及解码器可基于所选的帧内预测模式来确定待使用的变换。然而,对于为多个变换有可能用于其的大小的TU来说,视频编码器可明确地用信号通知待用于CU中的所有类似大小的TU的变换(例如,通过在CU的TU四元树的根处用信号通知待使用的变换)。
以此方式,如果视频解码器遇到为如下大小的TU:基于用于对应于所述TU的CU的帧内预测模式,多个变换有可能用于所述大小,则解码器可基于显式信令来确定待应用的变换。对于其它TU来说,视频解码器可使用与针对所述CU用信号通知的帧内预测模式相关联的变换。
在一些实例中,视频编码器可将一个以上变换(例如,一个以上可分离变换)应用于CU的残余值。举例来说,视频编码器可使用第一变换将所述CU的TU变换一次,从而产生变换系数的第一集合,接着将第二变换应用于变换系数的第一集合,从而产生变换系数的第二集合。将两个或两个以上变换应用于TU的此过程可被称为级联变换(cascadedtransform)。在一些实例中,可将第二变换仅应用于由第一变换产生的系数的子集。应理解,第二变换可包含第二可分离变换,而第一变换可包含第一可分离变换。因此,可通过将总共四个矩阵应用于系数来应用级联变换:两个矩阵是用于第一可分离变换,且另外两个矩阵是用于第二可分离变换。
在一些实例中,第二变换(也就是说,第二可分离变换)可对应于旋转变换(ROT)。通常可认为旋转变换会改变变换基础的坐标系。举例来说,视频编码器可首先将定向变换应用于TU,接着将旋转变换应用于TU。作为另一实例,视频编码器可首先将DCT应用于TU,接着将旋转变换应用于TU。视频编码器可配置有多个旋转变换。视频编码器可进一步经配置以在特定定向变换之后及/或结合特定帧内预测模式而应用旋转变换。也就是说,视频编码器可经配置以针对定向变换与特定帧内预测模式的特定组合而应用旋转变换。可通过一特定值(例如,旋转角度)为不同旋转变换加索引。在一些实例中,并非使用旋转变换来变换所有系数。举例来说,视频编码器可经配置以仅旋转变换TU的低频变换系数。
此外,在一些实例中,本发明的技术包括对在TU内具有检测到的边缘的TU进行帧内模式预测。举例来说,视频译码单元可检测到边缘在邻近块中的存在,且接着确定所述边缘延续到当前TU中。可提供边缘处置预测模式以用于对此TU进行帧内预测。视频编码器可确定是使用基于边缘的预测模式还是另一定向帧内预测模式来预测所述TU。当确定边缘存在于TU中时,且当选择基于边缘的预测模式时,可使用指示DC预测模式的值来用信号通知所使用的帧内预测模式,但归因于对边缘的存在的确定,可解译此值以指示边缘处置预测模式。此外,可确定边缘的角度且以类似于上文所论述的定向帧内预测模式到定向变换的映射的方式将其映射到定向变换。类似地,在此实例中,也可使用映射到定向变换的扫描模式。
本发明还提供用于扫描变换系数以便产生一维向量的技术,所述一维向量可接着被熵编码。根据这些技术,视频编码器可经配置以基于各种因素来选择固定扫描模式,或执行自适应扫描。举例来说,视频编码器可包括一固定扫描模式集合。视频编码器可基于各种准则(例如帧内预测模式、选择用于TU的变换、是否使用级联变换来变换TU、经选择用于TU的旋转变换,或其任何组合)来选择固定扫描模式中的一者。举例来说,视频编码器可基于帧内预测模式、二次变换或其组合来选择预定义扫描集合中的一预定义扫描。在一些实例中,视频编码器可基于上文所论述的因素中的一者或一者以上来选择扫描索引,其中所述扫描索引可对应于固定扫描或自适应扫描。
在一些实例中,视频编码器可经配置以自适应地扫描变换系数。视频编码器可存储初始固定扫描模式。当视频编码器编码图片的块时,视频编码器可自适应地更新扫描模式。视频编码器可(例如)收集指示各位置处的系数是否趋向于为零值的统计数据,且如果特定位置处的系数通常为零值,则视频编码器可选择晚于通常具有非零值的其它系数而扫描所述系数。此外,视频编码器可存储针对因素(例如帧内预测模式、经选择用于TU的变换、是否使用级联变换来变换TU、经选择用于TU的旋转变换,或其任何组合)的各种组合的单独的固定扫描及/或扫描统计数据。在一些实例中,视频编码器可存储针对级联变换(例如,第一变换,后续接着旋转变换)的每一组合的单独的统计数据。在一些实例中,当视频编码器应用级联变换时,视频编码器可使用自适应扫描,且当视频编码器应用单一变换时,视频编码器可使用固定扫描。
如上文所指出,扫描变换系数的二维矩阵产生一维向量,所述一维向量可接着被熵编码。在一些实例中,视频编码器可使用上下文自适应性二进制算术译码(CABAC)来对变换系数进行熵编码。视频编码器还可对语法元素(例如重要系数旗标及最后系数旗标)进行熵编码。当自适应地扫描变换系数时,视频编码器可设定重要系数旗标的值以指示系数是否为重要的。视频编码器可(例如)经配置以当系数的值为非零时确定所述系数是重要的。视频编码器还可设定最后系数旗标的值以指示由自适应扫描产生的向量中的最后系数。视频解码器可使用这些语法元素来更新本地存储的统计数据,以便自适应地逆扫描经熵编码的系数。本发明提供用于当执行CABAC以编码这些语法元素时选择上下文模型的技术。视频编码器可基于(例如)用于正被编码的CU的帧内预测模式及其它要素来选择上下文模型。
图1为说明可利用用于编码及解码一译码单元的变换单元的技术的实例视频编码与解码系统10的框图。如图1中所示,系统10包括源装置12,所述源装置12经由通信信道16将经编码的视频传输到目的地装置14。源装置12及目的地装置14可包含各种各样的装置中的任一者。在一些状况下,源装置12及目的地装置14可包含无线通信装置,例如无线手持机、所谓的蜂窝式或卫星无线电电话,或可经由通信信道16而传达视频信息的任何无线装置,在此种状况下,通信信道16为无线信道。
然而,本发明的与变换单元的编码及解码有关的技术未必受限于无线应用或设定。举例来说,这些技术可适用于空中电视广播、有线电视传输、卫星电视传输、因特网视频传输、编码到存储媒体上的经编码的数字视频或其它情形。因此,通信信道16可包含适合于传输或存储经编码的视频数据的无线或有线媒体的任何组合。
在图1的实例中,源装置12包括视频源18、视频编码器20、调制器/解调器(调制解调器)22及发射器24。目的地装置14包括接收器26、调制解调器28、视频解码器30及显示装置32。根据本发明,源装置12的视频编码器20可经配置以应用本发明的用于变换单元的编码及解码的技术。在其它实例中,源装置及目的地装置可包括其它组件或布置。举例来说,源装置12可从外部视频源18(例如外部相机)接收视频数据。同样,目的地装置14可与外部显示装置介接,而非包括集成显示装置。
图1的所说明系统10仅为一个实例。用于变换单元的编码及解码的技术可由任何数字视频编码及/或解码装置执行。尽管本发明的技术通常是由视频编码装置或视频解码装置执行,但所述技术也可由通常称为“编解码器”的视频编码器/解码器执行。源装置12及目的地装置14仅为这些译码装置的实例,其中源装置12产生经译码的视频数据以供传输到目的地装置14。在一些实例中,装置12、14可以实质上对称的方式操作,使得装置12、14中的每一者包括视频编码及解码组件。因此,系统10可支持视频装置12、14之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
源装置12的视频源18可包括视频俘获装置(例如摄像机)、含有先前俘获的视频的视频档案,及/或来自视频内容提供者的视频馈送。作为另一替代方案,视频源18可产生基于计算机图形的数据作为源视频,或产生实况视频、存档视频及计算机产生的视频的组合。在一些状况下,如果视频源18为摄像机,则源装置12及目的地装置14可形成所谓的相机电话或视频电话。然而,如上文所提及,本发明中所描述的技术一般来说可适用于视频译码,且可应用于无线及/或有线应用。在每一状况下,所俘获、预先俘获或计算机产生的视频可由视频编码器20编码。经编码的视频信息可接着由调制解调器22根据通信标准来调制,且经由发射器24而传输到目的地装置14。调制解调器22可包括各种混频器、滤波器、放大器或经设计以用于信号调制的其它组件。发射器24可包括经设计以用于传输数据的电路,包括放大器、滤波器及一个或一个以上天线。
目的地装置14的接收器26经由信道16接收信息,且调制解调器28解调所述信息。同样,视频编码过程可实施本文中所描述的技术中的一者或一者以上以编码及解码变换单元。经由信道16所传达的信息可包括由视频编码器20定义的还由视频解码器30使用的语法信息,所述语法信息包括描述经译码的视频数据的译码单元或其它单元(例如,图片群组(GOP)、片段、帧及其类似者)的特性及/或处理的语法元素。CU四元树数据结构可形成最大译码单元的语法信息的一部分。也就是说,每一LCU可包括:呈CU四元树的形式的语法信息,其可描述LCU如何被分割为子CU;以及关于如何编码LCU及子CU的信令信息。同样,TU四元树数据结构可形成LCU的叶CU的语法信息的一部分,其可描述相应叶CU如何被分割为TU。
视频解码器30可使用CU四元树及TU四元树来确定如何解码所接收的图片的CU(包括CU的TU)。视频解码器30可接着解码CU且将经解码的视频数据发送到显示装置32。显示装置32向用户显示经解码的视频数据,且可包含多种显示装置中的任一者,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
在图1的实例中,通信信道16可包含任何无线或有线通信媒体,例如射频(RF)频谱或一条或一条以上物理传输线,或无线及有线媒体的任何组合。通信信道16可形成基于包的网络(例如局域网络、广域网络或例如因特网的全球网络)的一部分。通信信道16通常表示用于将视频数据从源装置12传输到目的地装置14的任何合适的通信媒体或不同通信媒体的集合,包括有线或无线媒体的任何合适的组合。通信信道16可包括路由器、交换器、基站或可用于促进从源装置12到目的地装置14的通信的任何其它设备。
视频编码器20及视频解码器30可根据例如ITU-TH.264标准(或者称为MPEG-4第10部分(高级视频译码(AVC))的视频压缩标准而操作。作为另一实例,视频编码器20及视频解码器30可根据高效率视频译码(HEVC)标准而操作,且可遵照HEVC测试模型(HM)。然而,本发明的技术并不限于任何特定译码标准。其它实例包括MPEG-2及ITU-TH.263。虽然图1中未展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器集成,且可包括适当MUX-DEMUX单元或其它硬件及软件以处置一共同数据串流或各单独数据串流中的音频与视频两者的编码。如果适用,则MUX-DEMUX单元可遵照ITUH.223多路复用器协议或例如用户数据报协议(UDP)的其它协议。
ITU-TH.264/MPEG-4(AVC)标准是由ITU-T视频译码专家小组(VCEG)连同ISO/IEC动画专家小组(MPEG)一起阐明为被称为联合视频组(JVT)的集体合作的产品。在一些方面中,本发明中所描述的技术可应用于大体上遵照H.264标准的装置。H.264标准是由ITU-T研究小组描述于ITU-T推荐H.264(用于一般视听服务的高级视频译码)中(日期为2005年3月),其在本文中可被称为H.264标准或H.264规范或者H.264/AVC标准或规范。联合视频组(JVT)继续致力于对H.264/MPEG-4AVC的扩展。
视频编码器20及视频解码器30各自可实施为多种合适的编码器电路中的任一者,例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当所述技术以软件来实施时,装置可将用于软件的指令存储于合适的非暂时计算机可读媒体中,且使用一个或一个以上处理器执行所述指令以执行本发明的技术。视频编码器20及视频解码器30中的每一者可包括于一个或一个以上编码器或解码器中,所述一个或一个以上编码器或解码器中的任一者可集成为相应相机、计算机、移动装置、订户装置、广播装置、机顶盒、服务器或其类似者中的组合式编码器/解码器(编解码器)的一部分。
视频序列通常包括一连串视频帧。图片群组(GOP)通常包含一连串一个或一个以上视频帧。GOP可在GOP的标头、GOP的一个或一个以上帧的标头或别处包括语法数据,其描述GOP中所包括的帧的数目。每一帧可包括帧语法数据,其描述用于相应帧的编码模式。视频编码器20通常对个别视频帧内的译码单元操作以便编码视频数据。译码单元可对应于LCU或子LCU,且术语CU可指代LCU或子CU。LCU的标头信息可描述LCU的大小、LCU可被分割的次数(在本发明中称为CU深度)及其它信息。每一视频帧可包括多个片段,且每一片段可包括多个LCU。
在一些实例中,可针对各种CU大小而执行预测。LCU的大小可由语法信息来定义。假定特定叶节点CU的大小为2N×2N,则帧内预测大小可包括2N×2N或N×N(在一些实例中),且帧间预测对称大小可包括2N×2N、2N×N、N×2N或N×N。在一些实例中,不对称分割可用于具有为2N×nU、2N×nD、nL×2N及nR×2N的大小的帧间预测。在不对称分割中,CU的一个方向未被分割,而另一方向则被分割为25%及75%。通过“n”后续接着“上”、“下”、“左”或“右”的指示来指示CU的哪一部分是25%分割部分。因此,例如,“2N×nU”指代被水平分割的2N×2N的CU,其中.2N×.5N的PU位于顶部且2N×1.5N的PU位于底部。
在本发明中,“N×N”及“N乘N”可互换地用来指代块(例如,CU、PU或TU)的像素尺寸(就垂直尺寸及水平尺寸来说),例如,16×16个像素或16乘16个像素。一般来说,16×16块将在垂直方向上具有16个像素(y=16)且在水平方向上具有16个像素(x=16)。同样,N×N块通常在垂直方向上具有N个像素且在水平方向上具有N个像素,其中N表示非负整数值。块中的像素可布置成行及列。此外,块无需必定在水平方向上与垂直方向上具有相同数目个像素。举例来说,块可包含N×M个像素,其中M未必等于N。
CU的PU可包含空间域(也称为像素域)中的像素数据,而CU的TU可经变换以产生变换域中的系数(例如,在将变换(例如离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换)应用于残余视频数据之后)。残余数据通常表示PU的值与来自输入视频数据的并置的未编码像素的值之间的像素差。可进一步量化所述系数。可称TU的经变换的系数在频域中。
视频编码器20可实施本发明的技术中的任一者或全部以改善对译码单元的变换单元的编码。同样,视频解码器30可实施这些技术中的任一者或全部以改善对译码单元的变换单元的解码。一般来说,本发明的技术是针对在基于帧内模式预测来计算变换单元的系数之后变换所述系数。然而,也可关于帧间预测编码来实施本发明的特定方面。为了举例说明,关于TU的帧内预测编码来描述这些技术。应理解,也可结合帧间预测编码来执行这些技术的特定方面。
视频编码器20可接收LCU,且确定是否将LCU分割为四个象限(每一象限包含一子CU),或是否在不分割的情况下编码LCU。在决定将LCU分割为子CU之后,视频编码器20可确定是否将每一子CU分割为四个象限(每一象限包含一子CU)。视频编码器20可继续以递归方式确定是否分割CU,其中最大分割数目由LCU深度指示。视频编码器20可提供CU四元树数据结构,其指示LCU及LCU的子CU的分割。LCU可对应于CU四元树的根节点。CU四元树的每一节点可对应于LCU的CU。此外,每一节点可包括分割旗标值,其指示对应的CU是否被分割。
例如,如果LCU被分割,则视频编码器20可设定根节点中的分割旗标的值以指示LCU被分割。接着,视频编码器20可设定根节点的子代节点(childnode)的值以指示LCU的哪些子CU(如果有的话)被分割。未被分割的CU可对应于CU四元树数据结构的叶节点,其中叶节点不具有子代节点。此外,每一叶节点CU可包括一个或一个以上TU,如所述叶节点CU的TU四元树所指示。
视频编码器20可编码LCU的每一子CU,其对应于四元树数据结构中的一叶节点。为了举例说明,本发明关于对应于叶节点CU的TU的帧内预测编码来描述所述技术。在帧内模式编码中,视频编码器20可形成对应于TU四元树数据结构中的一叶节点的每一TU的预测单元(PU)。在一些实例中,视频编码器20可选择用于CU的三十四种不同帧内预测模式中的一者,且在TU四元树的根节点中用信号通知所选帧内预测模式。从第一个最大TU(大小等于CU四元树中的叶节点CU)开始,视频编码器20可确定是否划分所述最大TU,且以递归方式确定是否划分所述父代TU的子TU。视频编码器20可进一步在CU的叶节点CU四元树(包括TU四元树)中用信号通知帧内预测模式,其中用信号通知的帧内预测模式可描述将用来计算对应于CU的TU四元树中的所述TU中的每一者的预测值的帧内预测模式。视频编码器20根据所选帧内预测模式而从邻近的先前译码的视频数据检索TU的预测数据。以此方式,使用帧内预测模式所预测的CU的PU与所述CU的TU为相同大小。
根据本发明的技术,如果所选帧内预测模式不可用于当前CU(例如,归因于其大小),则视频编码器20可选择在四元树的根处用信号通知的模式所映射到的帧内预测模式。也就是说,视频编码器20可包括按多对一的对应将大的模式集合的模式中的每一者映射到较小集合(例如,所述大的集合的子集)的模式的信息。视频编码器20可接着使用来自较小集合的帧内预测模式来对CU的一个或一个以上PU进行帧内预测。以此方式,尽管视频编码器20可使用多个模式来对LCU的子CU进行帧内预测而不明确地用信号通知所述模式中的每一者及所述模式所用于的子CU,但视频编码器20仅需用信号通知用于LCU的一个帧内预测模式。因此,可使用多个帧内预测模式而不增加位流中所包括的信息的量,借此减少开销。在另一实施例中,可在CU层级上允许较大数目个预测方向,以使得不论子CU大小或PU大小如何,均能够将相同的帧内预测模式用于LCU。
视频编码器20可进一步配置有基于边缘的预测模式,其用于预测CU中的由视频编码器20确定为包括边缘的TU。一般来说,边缘对应于沿穿过TU的相对直的线的高频改变。举例来说,可沿在TU中表示的对象(与也在TU中表示的背景形成对比)的边界而出现边缘。为检测TU中的边缘,视频编码器20可计算TU中的像素的梯度且确定所述梯度是否识别穿过TU的线。在确定当前TU包括边缘之后,视频编码器20可确定是否使用基于边缘的预测模式。如果检测到此边缘,且当选择了基于边缘的预测模式时,视频编码器20可使用本来将指示对DC预测模式的使用的值来用信号通知对基于边缘的预测模式的使用。也就是说,在检测到边缘在当前块中的存在之后,视频编码器20可从包括基于边缘的预测模式及其它定向预测模式(但不包括DC模式)的集合选择一帧内预测模式,且当选择了基于边缘的预测模式时,用信号通知对基于边缘的预测模式的使用(就如同用信号通知对DC预测模式的使用)。
在进行帧内预测译码或帧间预测译码以产生CU的TU的预测数据之后,视频编码器20可计算残余数据,残余数据包含TU的系数,所述系数表示TU的预测数据与原始数据之间的逐像素差。视频编码器20可以此方式形成包括CU的残余数据的一个或一个以上TU。视频编码器20可接着变换所述TU。根据本发明的技术,视频编码器20可基于用以对TU的数据进行帧内模式预测的帧内预测模式来选择待应用于TU的变换。
在一些实例中,视频编码器20可包括提供大的帧内预测模式集合与较小的帧内预测模式集合之间的多对一映射的配置数据。举例来说,视频编码器20可包括提供HM的34种帧内预测模式与H.264的九种帧内预测模式之间的映射的配置数据。此外,视频编码器20可包括提供较小的帧内预测模式集合与定向变换之间的映射的配置数据。定向变换集合可与较小的帧内预测模式集合为相同大小,使得在较小的帧内预测模式集合与定向变换集合之间存在一对一映射。以此方式,视频编码器20的配置数据可提供大的帧内预测模式集合与定向变换集合之间的间接的多对一映射。或者,在一些实例中,可存在大的定向变换集合到定向变换或其它经设计的变换(例如离散余弦变换、离散正弦变换或其它概念上类似的变换)的大的集合的一对一映射。在任何状况下,使用所述映射,视频编码器20可选择用于每一TU的变换,此选择是基于经选择用于包括所述TU的CU的帧内预测模式。
在一些实例中,可存在可用于为特定大小的TU的多个定向变换。在一些实例中,视频编码器20可在对应于一CU(也就是说,CU四元树中的叶节点CU)的TU四元树数据结构的根处用信号通知所选帧内预测模式(例如,所选帧内预测方向),且所选帧内预测模式可适用于所述CU的所有TU。如果所述CU中的所有TU具有仅一个变换有可能用于其的大小,则视频编码器20可根据上文的实例而继续进行,其中可从用信号通知的用于LCU的帧内预测模式来导出所述变换。然而,如果所述CU中的至少一个TU为多个变换有可能用于其的大小,则视频编码器20可选择可能的变换中的一者,且在TU四元树的根节点中用信号通知所选变换。因此,视频编码器20可使用用信号通知的变换来变换所述CU中具有与多个可能的变换相关联的大小的每一TU。以此方式,视频编码器20可明确地用信号通知一变换,而不消耗过多额外带宽。
在一些实例中,当视频编码器20应用基于边缘的帧内预测模式来预测TU的值时,视频编码器20可基于边缘的角度来选择待应用于TU的变换。如上文所论述,视频编码器20可基于在与当前TU共享边界的邻近TU中检测到边缘来确定边缘存在于当前TU中。根据本发明的技术,视频编码器20可计算边缘的相对角度且以类似于针对帧内预测模式来选择定向变换的方式使用边缘的角度来选择定向变换。举例来说,视频编码器20可比较边缘的角度与定向帧内预测模式的角度,确定具有最接近边缘的角度的角度的定向帧内预测模式,且接着使用映射到所确定的帧内预测模式的变换来变换经基于边缘的预测模式预测的TU。
在一些实例中,视频编码器20可经配置以将一个以上变换应用于TU,本发明将其称为级联变换。举例来说,第一变换可对应于离散余弦变换(DCT)或卡洛变换(KLT)(通常也被称为定向变换)。当基于映射到定向变换的帧内预测模式来选择定向变换时,所述变换可被称为依模式而定的定向变换(MDDT)。本发明还将基于帧内预测模式而选择的变换称为经设计的变换,其可包括定向变换、离散余弦变换、离散正弦变换,或特定地针对预测模式而选择的其它概念上类似的变换。
第二变换可对应于旋转变换。在一些实例中,视频编码器20可配置有多个旋转变换。在一些实例中,视频编码器20可经由计算所述旋转变换中的每一者的位率失真成本(Rate-Distortioncost)而选择所述旋转变换中的一者来应用。与第一变换相比,视频编码器20可经配置以将所述旋转变换应用于较小数目个系数。根据本发明的技术,视频编码器20可包括针对依模式而定的旋转变换(MDROT)的配置数据,其包括列变换矩阵及行变换矩阵。可将帧内预测模式映射到第一变换(例如,MDDT中的一者)以及旋转变换中的一者(例如,MDROT中的一者)两者。因此,用于CU的用信号通知的帧内预测模式还可提供待应用于LCU的TU的第一变换及待应用于所述TU的第二变换的指示。尽管将MDROT描述为实例,但应理解,第二变换可包含例如定向变换的其它变换。
通过变换TU的系数,视频编码器20产生变换系数的矩阵。此矩阵与TU具有相同大小。一般来说,变换过程使残余数据准备被量化,所述量化进一步压缩数据。量化通常指代量化所述变换系数以便可能减少用以表示所述系数的数据的量的过程。量化过程可减少与所述系数中的一些或所有系数相关联的位深度。举例来说,在量化期间可将n位值舍去为m位值,其中n大于m。
在一些实例中,视频编码器20可利用预定义扫描次序来扫描经量化的变换系数以产生向量,所述向量可被熵编码。举例来说,在常规的变换或依模式而定的变换之后,视频编码器20可经配置以应用锯齿状扫描。视频编码器20还可经配置以基于应用于块的帧内预测模式及/或一个或一个以上变换来应用扫描。在一些实例中,视频编码器20可在TU的系数的变换及量化之后执行自适应扫描。在一些实例中,视频编码器20可包含针对每一可能的变换方案而定义不同扫描方案的配置数据。举例来说,视频编码器20可包括包含定向变换的集合与预定义扫描模式的集合之间的一对一映射的配置数据。可在特定定向变换之后基于对扫描的经验性测试来定义所述扫描模式,以在对应的定向变换之后使向量中的变换系数的放置最佳化。或者,视频编码器20可包括定义扫描索引的配置数据,帧内预测模式(或变换方案)可被映射到所述扫描索引,其中所述扫描索引可指示预定义扫描或自适应扫描。
因此,每一定向变换可具有相关联的扫描模式,所述扫描模式是基于经验性测试而针对所述定向变换被相对最佳化。如上文所指出,假定在包括所述TU的CU的TU四元树中用信号通知的帧内预测模式与所述定向变换及扫描模式之间存在映射,则视频编码器20无需用信号通知用于特定TU的定向变换或扫描模式。在各种实例中,扫描模式可取决于所选的第一变换(例如,DCT或MDDT)、所选的第二变换(例如,MDROT、DCT或其它二次可分离变换)或两者的组合。在一些实例中,两个级联变换中的一者可包含在特定方向(例如,水平或垂直)上应用的经设计的变换,且视频编码器20可基于配置数据来选择通常对应于相同方向或正交方向的扫描次序。
在视频编码器20将级联变换应用于TU的实例中,视频编码器20可自适应地扫描由级联变换产生的系数。为执行自适应扫描,视频编码器20可通常追踪统计数据,所述统计数据指示变换系数的矩阵中的特定位置是否更有可能或较不可能为重要的(例如,非零)。视频编码器20可随时间调适扫描模式,使得扫描模式对应于这些统计可能性。也就是说,自适应扫描模式可试图确保为重要(例如,非零)系数的概率相对较高的变换系数是在为重要系数的概率相对较低的变换系数之前得以扫描。或者,视频编码器20可选择级联变换所映射到的扫描索引。
视频编码器20可单独地追踪针对每一可能的级联变换的扫描统计数据。举例来说,变换矩阵中的特定系数位置的可能性可基于在级联变换期间所应用的第一变换及第二变换而不同。因此,视频编码器20可追踪针对每一可能的级联变换的分离的、独立的统计数据集。作为一实例,假定帧内预测模式被映射到MDDT与MDROT(或其它二次可分离变换)两者,则视频编码器20可追踪针对应用于TU的MDDT及MDROT(或其它二次变换)的每一组合的独立统计数据。作为另一实例,视频编码器20可经配置以仅当视频编码器20将DCT应用于TU时才执行级联变换。因此,视频编码器20可执行自适应扫描,且基于在DCT之后所应用的用于TU的所选MDROT(或其它二次可分离变换)来追踪用于执行自适应扫描的独立统计数据。
在一些实例中,不论使用自适应扫描或是预定扫描,视频编码器20均可在扫描之后将阵列中的系数清零。也就是说,视频编码器20可将位置N到阵列结尾的系数的值设定为等于零。N的值可与CU的大小及/或TU的大小有关。在一些实例中,视频编码器20可在扫描矩阵中的变换系数(例如,矩阵中除矩阵的左上角的系数之外的所有系数)之前将所述系数清零。
在扫描变换矩阵以形成一维向量之后,视频编码器20可(例如)根据内容自适应性可变长度译码(CAVLC)、上下文自适应性二进制算术译码(CABAC)、基于语法的上下文自适应性二进制算术译码(SBAC)或另一熵译码方法来对所述一维向量进行熵编码。
为执行CAVLC,视频编码器20可选择用于待传输的符号的可变长度码。VLC中的码字可经建构以使得相对较短的码对应于更有可能的符号,而较长的码对应于较不可能的符号。以此方式,VLC的使用可经由(例如)针对待传输的每一符号使用相等长度的码字来实现位节约。
为执行CABAC,视频编码器20可选择待应用于特定上下文以编码待传输的符号的上下文模型。所述上下文可与(例如)邻近值是否为非零有关。视频编码器20还可对语法元素进行熵编码,所述语法元素例如是在执行自适应扫描时所产生的重要系数旗标及最后系数旗标。根据本发明的技术,视频编码器20可基于(例如)帧内预测方向、对应于语法元素的系数的扫描位置、块类型及/或变换类型以及用于上下文模型选择的其它因素来选择用以编码这些语法元素的上下文模型。
视频解码器30可以基本上与视频编码器20的方式对称的方式操作。举例来说,视频解码器30可接收表示经编码的CU的经熵编码的数据(包括经编码的TU数据)。假定CU经帧内预测编码,则此所接收数据可包括指示用以编码PU数据的帧内预测模式的信息。视频解码器30可对所接收的数据进行逆熵编码,从而形成经编码的量化系数。当视频编码器20使用可变长度码算法来对数据进行熵编码时,视频解码器30可使用一个或一个以上VLC表来确定对应于所接收的码字的符号。当视频编码器20使用算术译码算法来对数据进行熵编码时,视频解码器30可使用上下文模型来解码数据,所述上下文模型可对应于由视频编码器20用以编码所述数据的相同上下文模型。
视频解码器30可接着使用逆扫描来逆扫描经解码的系数,所述逆扫描反映由视频编码器20使用的扫描。为自适应地逆扫描所述系数,视频解码器30可解码包括重要系数旗标及最后系数旗标的语法元素以再生由视频编码器20用来执行自适应扫描的统计数据。视频解码器30可借此从由熵解码过程产生的一维向量形成二维矩阵。
接下来,视频解码器30可逆量化由逆扫描产生的二维矩阵中的系数。视频解码器30可接着将一个或一个以上逆变换应用于所述二维矩阵。所述逆变换可对应于由视频编码器20应用的变换。视频解码器30可基于(例如)用以计算TU的系数的帧内预测模式,且在多个变换可用于为特定大小的TU的情况下基于在对应于包括当前正被解码的所述TU的CU的TU四元树的根处用信号通知的信息,来确定待应用的逆变换。以此方式,视频解码器30可基于针对TU用信号通知的帧内预测模式来选择待应用于所述TU的经逆量化的系数以再生所述TU的一个或一个以上逆变换。此外,视频解码器30可使用对应于用信号通知的对帧内预测模式的指示(例如,在TU四元树中)的帧内预测模式来计算TU的预测值。在一些实例中,视频解码器30可基于在邻近TU中检测到的边缘来确定边缘存在于TU中,且当用信号通知DC模式时改为使用基于边缘的模式来预测TU的值。
视频编码器20及视频解码器30各自可实施为多种合适的编码器或解码器电路中的任一者(在适用时),例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑电路、软件、硬件、固件或其任何组合。视频编码器20及视频解码器30中的每一者可包括于一个或一个以上编码器或解码器中,所述一个或一个以上编码器或解码器中的任一者可集成为组合式视频编码器/解码器(编解码器)的一部分。包括视频编码器20及/或视频解码器30的设备可包含集成电路、微处理器及/或无线通信装置(例如蜂窝式电话)。
图2为说明可实施本发明中所描述的用于编码视频数据的变换单元的技术中的任一者或全部的视频编码器20的实例的框图。视频编码器20可执行视频帧内的CU的帧内译码及帧间译码。帧内译码依赖于空间预测来减少或移除在一给定视频帧内的视频中的空间冗余。帧间译码依赖于时间预测来减少或移除一视频序列的当前帧与先前译码的帧之间的时间冗余。帧内模式(I模式)可指代若干基于空间的压缩模式中的任一者,且帧间模式(例如单向预测(P模式)或双向预测(B模式))可指代若干基于时间的压缩模式中的任一者。
如图2中所示,视频编码器20接收待编码的视频帧内的当前视频块。在图2的实例中,视频编码器20包括运动补偿单元44、运动估计单元42、帧内预测单元46、参考帧存储装置64、求和器50、变换单元52、量化单元54及熵译码单元56。图2中所说明的变换单元52为执行实际变换的单元,而不与CU的TU相混淆。为进行视频块重建构,视频编码器20还包括逆量化单元58、逆变换单元60及求和器62。另外,视频编码器20可包括配置数据(例如映射数据66)。还可包括解块滤波器(图2中未展示)以对块边界进行滤波,从而从重建构的视频移除块效应假影(blockinessartifact)。必要时,解块滤波器将通常对求和器62的输出进行滤波。
在编码过程期间,视频编码器20接收待译码的视频帧或片段。所述帧或片段可划分为多个视频块(例如,最大译码单元(LCU))。运动估计单元42及运动补偿单元44关于一个或一个以上参考帧中的一个或一个以上块来执行所接收的视频块的帧间预测译码,以提供时间压缩。帧内预测单元46可关于与待译码的块在同一帧或片段中的一个或一个以上邻近块来执行所接收的视频块的帧内预测译码,以提供空间压缩。
模式选择单元40可(例如)基于误差结果(有时称为失真)来选择译码模式(帧内或帧间)中的一者,且将所得的经帧内或帧间译码的块提供到求和器50以产生残余块数据且提供到求和器62以重建构经编码的块以供参考帧中使用。一些视频帧可表示为I帧,其中I帧中的所有块是以帧内预测模式被编码。在一些状况下,帧内预测单元46可执行对P帧或B帧中的块的帧内预测编码(例如,当由运动估计单元42执行的运动搜索不产生所述块的充分预测时)。
运动估计单元42及运动补偿单元44可高度集成,但为了概念目的而分开地予以说明。运动估计为产生运动向量的过程,所述运动向量估计视频块的运动。运动向量(例如)可指示当前帧中的预测单元相对于参考帧的参考样本的位移。参考样本为被发现就像素差来说与CU的包括正被译码的PU的部分密切匹配的块,其可通过绝对差总和(SAD)、平方差总和(SSD)或其它不同差度量来确定。由运动补偿单元44执行的运动补偿可涉及基于通过运动估计所确定的运动向量来提取或产生预测单元的值。同样,在一些实例中,可在功能上集成运动估计单元42及运动补偿单元44。
运动估计单元42通过将经帧间译码的帧的预测单元与存储于参考帧存储装置64中的参考帧的参考样本比较来计算所述预测单元的运动向量。在一些实例中,视频编码器20可计算存储于参考帧存储装置64中的参考帧的子整数像素位置的值。举例来说,视频编码器20可计算参考帧的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可关于完整像素位置及分数像素位置来执行运动搜索,且输出具有分数像素精度的运动向量。运动估计单元42将计算出的运动向量发送到熵译码单元56及运动补偿单元44。可将参考帧的由运动向量所识别的部分称为参考样本。运动补偿单元44可(例如)通过检索由PU的运动向量所识别的参考样本来计算当前CU的预测单元的预测值。
作为由运动估计单元42及运动补偿单元44执行的帧间预测的替代,帧内预测单元46可对所接收的块进行帧内预测编码。帧内预测单元46可关于邻近的先前译码的块(例如,在当前块上方的块、在当前块上方及右边的块、在当前块上方及左边的块,或在当前块左边的块,假定块的编码次序为从左到右、从上到下(例如光栅扫描排序))来编码所接收的块。帧内预测单元46可配置有多种不同帧内预测模式。举例来说,帧内预测单元46可基于正被编码的CU的大小而配置有特定数目种定向预测模式(例如,34种定向预测模式)。
帧内预测单元46可通过(例如)计算各种帧内预测模式的误差值及选择产生最低误差值的模式来选择帧内预测模式。定向预测模式可包括用于组合空间上邻近的像素的值及将所述组合值应用于PU中的一个或一个以上像素位置的功能。一旦已计算PU中的所有像素位置的值,帧内预测单元46便可基于PU与待编码的所接收块之间的像素差来计算预测模式的误差值。帧内预测单元46可继续测试帧内预测模式,直到发现产生可接受的误差值的帧内预测模式。帧内预测单元46可接着将PU发送到求和器50。
根据本发明的技术,帧内预测单元46可经配置以使用基于边缘的预测模式来预测包括边缘的块。确切地说,帧内预测单元46可分析邻近的先前译码的块的像素以确定:是否在所述邻近块中的至少一者中检测到边缘,及所述边缘是否与在先前译码的块与当前块之间的界线交叉。为检测边缘,帧内预测单元46可计算邻近的先前译码的块中的像素在水平方向与垂直方向两者上的梯度。当所述邻近块中的一者中的多个像素的梯度相对垂直于与在所述邻近块与当前块之间的界线交叉的共同线时,帧内预测单元46可确定当前块也包括边缘(确切地说,沿如上文所描述而检测到的线的边缘)。应理解,术语“边缘”在本文中指代沿像素的块内的相对直的线的高频改变,而非指代经分开译码的块之间的界线或边界。
因此,当在块中检测到边缘时,帧内预测单元46可确定使用基于边缘的预测模式还是定向帧内预测模式来预测所述块。当帧内预测单元46选择基于边缘的预测模式时,帧内预测单元46可用信号通知DC预测模式被用来预测所述块,以便避免增加用信号通知帧内预测模式所需的值的数目。因此,如关于图3更详细地论述,例如视频解码器30的视频解码器可经配置以:在视频解码器确定边缘存在于块中时,将对DC预测模式被用来预测所述块的指示(例如,信号或语法信息)解译为对基于边缘的预测模式的指示。
视频编码器20通过从正被译码的原始视频块减去由运动补偿单元44或帧内预测单元46计算出的预测数据来形成残余块。求和器50表示执行此减法运算的一个或一个以上组件。残余块可对应于多个值的二维矩阵,其中残余块中的值的数目与对应于残余块的PU中的像素的数目相同。残余块中的值可对应于在PU中与在待译码的原始块中的并置像素之间的差。
变换单元52可自残余块形成一个或一个以上变换单元(TU)。变换单元52将变换(例如离散余弦变换(DCT)、定向变换或概念上类似的变换)应用于TU,从而产生包含变换系数的视频块。根据本发明的技术,帧内预测单元46可(例如)通过在对应于TU的TU四元树的节点中用信号通知经选择用于TU的帧内预测模式而将对所述模式的指示发送到变换单元52。因此,变换单元52可基于从帧内预测单元46接收的对帧内预测模式的指示来选择待应用于TU的变换。
在一些实例中,变换单元52经配置以基于用以预测TU的帧内预测模式来选择待应用于TU的变换(例如定向变换)。也就是说,映射数据66可存储描述基于用以预测TU的帧内预测模式而将应用的变换的配置数据。以此方式,变换单元52可使用映射到用以计算残余块的帧内预测模式的变换来变换残余块。同样,映射数据66可将帧内预测模式、变换或两者映射到特定扫描索引,所述扫描索引可用以选择待应用于块的经量化的变换系数的扫描。
在一些实例中,映射数据66可存储包括大的帧内预测模式集合与较小的帧内预测模式集合之间的多对一映射的配置数据。所述较小的集合可包含帧内预测模式的子集。在一些实例中,所述大的集合可包含HEVC测试模型所支持的帧内预测模式,而所述较小的集合可包含H.264所支持的帧内预测模式。映射数据66还可包括较小的帧内预测模式集合与变换之间的映射(例如一对一映射)。较小的帧内预测模式集合可被一对一映射到定向变换,所述定向变换经设计以针对对应的帧内预测模式提供经验上最佳的变换结果。
在一些实例中,大的集合的帧内预测模式及较小的集合的帧内预测模式可与相应预测角度相关联。可因此通过选择接近大的集合的帧内预测模式的预测角度的较小的集合中的所述帧内预测模式中的一者的预测角度来确定大的预测模式集合与较小的集合之间的映射。用α表示大的集合的所述帧内预测模式中的一者的预测角度,且用βi表示较小的集合的第i种帧内预测模式的预测角度。为将帧内预测模式映射到较小的集合的帧内预测模式中的一者,视频编码器20可在给定α的情况下得到βi,使得满足以下方程式1:
arg{βi}min(min(abs(α-βi),abs(-α-βi)))(1)
变换单元52可从帧内预测单元46接收对所选帧内预测模式的指示,接着询问映射数据66以确定将用来变换包括从求和器50接收的残余值的TU的变换。如果TU为多个可能的变换有可能用于其的大小,则变换单元52或视频编码器20的另一单元可选择用于为所述大小的TU的变换,使得变换单元52可将相同变换应用于相同CU中的为所述大小的所有TU。在一些实例中,变换单元52可进一步经配置以执行接在第一变换之后的旋转变换。也就是说,在第一变换之后,变换单元52可选择旋转变换且将旋转变换应用于变换系数。变换单元52可基于(例如)用以预测当前TU的PU的帧内预测模式来选择旋转变换。
如上文所论述,在一些实例中,帧内预测单元46经配置以确定块是否包括边缘(也就是说,块内的像素之间的高频改变)。当检测到边缘时,帧内预测单元46可选择基于边缘的预测模式或常规的定向帧内预测模式。也就是说,帧内预测单元46可用DC预测模式代替基于边缘的预测模式。在一些实例中,当使用基于边缘的预测模式来预测块时,变换单元52选择映射到具有密切接近所述边缘的角度的角度的帧内预测模式的方向的变换(例如定向变换)。也就是说,在一些实例中,变换单元52确定块内的边缘的角度且选择映射到具有密切接近所述边缘的角度的角度(例如,相对于所述边缘的角度具有最小距离)的定向帧内预测模式的变换。在一些实例中,变换单元52经配置以选择映射到具有密切接近在块中检测到的边缘的角度的角度的定向帧内预测模式的变换。
视频编码器20也可使用本来将用以用信号通知DC预测模式的使用的值来用信号通知基于边缘的预测模式的使用。因此,尽管用信号通知了DC预测模式,但可使用基于边缘的预测模式来预测块。同样,尽管可使用基于边缘的预测模式来预测块,但变换单元52可使用映射到具有接近在块中检测到的边缘的角度的角度的帧内预测模式的变换。
映射数据66可提供配置数据,所述配置数据指示:当在块(针对所述块,用信号通知了DC预测模式)中检测到边缘时,变换单元52将选择具有接近所述边缘的角度的角度的变换。此外,如上文所论述,映射数据66可包括从帧内预测模式及帧内预测模式的角度(所述角度可定义帧内预测模式)到定向变换的映射。因此,变换单元52可询问映射数据66以:确定具有密切接近块中的边缘的角度的角度的帧内预测模式,以及确定映射到所确定的帧内预测模式的变换。
以此方式,视频编码器20为经配置以进行以下操作的视频编码器的实例:基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块;及使用映射到所述帧内预测模式的变换来变换所述残余块。视频编码器20也是经配置以进行以下操作的视频编码器的实例:接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自较小的帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定第二帧内预测模式所映射到的定向变换;及将所述定向变换应用于块的残余数据。
此外,视频编码器20也是经配置以进行以下操作的视频编码器的实例:选择将用来编码视频数据块的帧内预测模式;确定所述块是否包括为一大小的子块,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时,选择多个可能的变换中的一者;使用多个可能的变换中的所选变换来变换所述子块;及提供针对所述块的所述大小的多个可能的变换中的所选变换的指示。
此外,视频编码器20为经配置以进行以下操作的视频编码器的实例:确定待被帧内预测编码的块是否在所述块内含有边缘;基于使用边缘导向式帧内预测模式计算出的预测值来计算块的残余块;使用映射到具有接近所述边缘的角度的角度的定向帧内预测模式的定向变换来变换残余块;及输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息。
变换单元52可将所得变换系数发送到量化单元54。量化单元54可接着量化所述变换系数。在一些实例中,量化单元54可接着执行对包括经量化的变换系数的矩阵的扫描。或者,熵译码单元56可执行扫描。本发明将熵译码单元56描述为执行扫描,但应理解,在其它实例中,其它处理单元(例如量化单元54)可执行扫描。
在一些实例中,熵译码单元56可从帧内预测单元46或从变换单元52接收对所选的帧内预测模式的指示。熵译码单元56可选择待应用于变换系数的矩阵以将二维矩阵转化为一维向量的扫描。在一些实例中,熵译码单元56从预定的扫描集合选择一扫描。映射数据66可将较小的帧内预测模式集合映射到预定的扫描集合。熵译码单元56可基于当前TU的各种特性(例如块类型(帧间或帧内)、帧内预测模式(假定为经帧内译码的块)及/或应用于TU的变换的类型(例如,DCT或KLT))来选择扫描。
在一些实例中,熵译码单元56可经配置以执行自适应扫描。最初(例如,对于当前帧的第一TU来说),熵译码单元56可使用预定扫描模式。随着时间,熵译码单元56可更新扫描模式以执行自适应扫描。一般来说,自适应扫描的目标是确定特定变换系数将为非零的概率。接着,扫描次序通常从为非零的概率为最高的系数进行到为非零的概率为最低的系数。熵译码单元56可使用各种统计数据及计算来确定随时间的这些概率。此外,熵译码单元56可追踪针对每一帧内预测模式、变换、级联变换或其任何组合的单独统计数据。
熵译码单元56可使用高动态范围表及动态更新型扫描表来:确定变换系数为非零的概率,且确定自适应扫描次序。假定为N×N的TU,则这些表中的每一者可为N×N的表,具有对应于TU的变换系数的值。高动态范围表可为提供每一变换系数为非零的概率的固定的预定表。可基于训练数据集来计算此表。此外,可使用此表来提供自适应扫描次序的开始点。
熵译码单元56可随时间更新动态更新型扫描表以反映变换系数的最近所确定的统计数据。熵译码单元56可对N×N的变换矩阵中的特定位置中的每一系数为非零的次数进行计数。也就是说,对于当前帧的每一TU来说,熵译码单元56可递增动态更新型扫描表中(具体来说,与用于当前CU的帧内预测模式、变换及/或级联变换相关联的动态更新型扫描表中)的对应于当前变换块中的非零系数的值。举例来说,如果行2及列1中的变换系数为非零,则熵译码单元56可将1加到动态更新型扫描表中的行2及列1中的值。熵译码单元56还可周期性地正规化动态更新型扫描表中的值,以防止所述值超过最大值。
为执行对当前帧的第一TU的自适应扫描,熵译码单元56可仅基于高动态范围表进行扫描。熵译码单元56还可通过(例如)将动态更新型扫描表中的所有值设定为零来初始化动态更新型扫描表。对于变换块中的每一非零系数来说,熵译码单元56可将1加到与用于当前TU的帧内预测模式及变换或级联变换相关联的动态更新型扫描表中的并置值。对于使用相同的帧内预测模式及变换或级联变换的后续TU来说,熵译码单元56可首先参考动态更新型扫描表以确定变换系数中的哪一者最有可能为非零,接着按系数为非零的可能性的递减次序进行扫描。在一些状况下,动态更新型扫描表中的两个或两个以上值可相等。在此状况下,熵译码单元56参考高动态范围表以确定接下来将扫描哪一系数。以此方式,熵译码单元56可基于高动态范围表及动态更新型扫描表的组合来执行针对每一帧内预测模式、变换或级联变换(或其任何组合)的自适应扫描。
通过扫描变换系数的二维矩阵,熵译码单元56可产生包括变换系数的一维阵列。熵译码单元56可接着扫描TU以形成阵列,且在扫描之后量化所述阵列中的变换系数以进一步减小位速率。所述量化过程可减少与所述系数中的一些或所有相关联的位深度。可通过调节量化参数来修改量化的程度。
熵译码单元56还可在自适应扫描之前或期间对用于矩阵的系数的语法元素进行熵编码。所述语法元素可包括:重要系数旗标,其指示特定系数是否为重要(例如,非零)的;及最后系数旗标,其指示特定系数是否为在自适应扫描中所扫描的最后系数。视频解码器可使用这些语法元素来重建构动态更新型扫描表,使得视频解码器可逆扫描由熵译码单元56编码的系数。
为熵编码所述语法元素,熵译码单元56可执行CABAC且基于(例如)先前扫描的N个系数中的重要系数的数目来选择上下文模型,其中N为可与正被扫描的块的大小有关的整数值。熵译码单元56还可基于用以计算被变换为变换系数的块的残余数据的预测模式及用以将残余数据变换为变换系数的块的变换的类型来选择上下文模型。当使用帧内预测模式来预测对应的预测数据时,熵译码单元56可进一步使对上下文模型的选择基于所述帧内预测模式的方向。
以此方式,视频编码器20表示经配置以进行以下操作的视频编码器的实例:使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块;使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的二维块中的位置将为非零的可能性;及基于所述所选的统计数据集而自适应地扫描变换系数的二维块。
视频编码器20还表示经配置以进行以下操作的视频编码器的实例:扫描变换系数的二维块以产生变换系数的一维向量;确定指示一维向量中的变换系数是否重要的值;及使用上下文模型来对所述值中的至少一者进行熵编码,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
在一些实例中,变换单元52可经配置以将特定变换系数(也就是说,特定位置中的变换系数)清零。举例来说,变换单元52可经配置以在变换之后将在TU的左上方象限外部的所有变换系数清零。作为另一实例,熵译码单元56可经配置以将阵列中在所述阵列中的特定位置之后的变换系数清零。在一些实例中,熵译码单元56可量化二维矩阵,且熵译码单元56可执行扫描。在任何状况下,视频编码器20可经配置以(例如)在扫描之前或之后将变换系数的特定部分清零。词组“清零”用以意谓将系数的值设定为等于零,但未必跳过或舍弃所述系数。
在量化之后,熵译码单元56对经量化的变换系数进行熵译码。举例来说,熵译码单元56可执行内容自适应性可变长度译码(CAVLC)、上下文自适应性二进制算术译码(CABAC)或另一熵译码技术。在通过熵译码单元56进行熵译码之后,可将经编码的视频传输到另一装置或将其存档以供稍后传输或检索。在上下文自适应性二进制算术译码的状况下,上下文可基于邻近块。
在一些状况下,除熵译码之外,熵译码单元56或视频编码器20的另一单元还可经配置以执行其它译码功能。举例来说,熵译码单元56可经配置以确定块的译码块模式(CBP)值。在一些状况下,熵译码单元56还可执行对块中的系数的扫描长度译码。
逆量化单元58及逆变换单元60分别应用逆量化及逆变换,以在像素域中重建构残余块(例如)以供稍后用作参考块。运动补偿单元44可通过将残余块加到参考帧存储装置64的所述帧中的一者的预测性块来计算参考块。运动补偿单元44还可将一个或一个以上内插滤波器应用于经重建构的残余块,以计算供运动估计中使用的子整数像素值。求和器62将经重建构的残余块加到由运动补偿单元44产生的经运动补偿的预测块,以产生经重建构的视频块以供存储于参考帧存储装置64中。经重建构的视频块可由运动估计单元42及运动补偿单元44用作参考块以对后续视频帧中的块进行帧间译码。
图3为说明解码经编码的视频序列的视频解码器30的实例的框图。在图3的实例中,视频解码器30包括熵解码单元70、运动补偿单元72、帧内预测单元74、逆量化单元76、逆变换单元78、参考帧存储装置82及求和器80。在一些实例中,视频解码器30可执行大体上与关于视频编码器20(图2)所描述的编码进程互逆的解码进程。运动补偿单元72可基于从熵解码单元70接收的运动向量而产生预测数据。帧内预测单元74可基于用信号通知的帧内预测模式及来自当前帧的先前已解码的块的数据而产生当前帧的当前块的预测数据。
在一些实例中,熵解码单元70或逆量化单元76可使用扫描来扫描所接收的值,所述扫描反映由视频编码器20使用的扫描。在图3的实例中,视频解码器30包括映射数据84,所述映射数据84可包括与映射数据66的数据类似或相同的数据。因此,视频解码器30可基于(例如)对用于当前块的帧内译码模式的指示(例如,呈现于包括当前块的LCU的四元树的根节点处)、用于当前块的变换、用于当前块的级联变换或由视频编码器20用以选择扫描的其它因素来选择扫描。同样,视频解码器30可经配置以执行自适应扫描,或基于这些因素来选择预定扫描。以此方式,视频解码器30可从所接收的系数的一维阵列产生经量化的变换系数的二维矩阵。
逆量化单元76逆量化(也就是说,解量化)在位流中所提供且由熵解码单元70解码的经量化的变换系数。逆量化过程可包括常规过程(例如,如由H.264解码标准或由HEVC所定义)。逆量化过程可包括使用由视频编码器20针对CU所计算出的量化参数QPY来确定量化的程度,且同样确定应被应用的逆量化的程度。
逆变换单元58应用逆变换(例如,逆DCT、逆整数变换、逆旋转变换或逆定向变换)。在一些实例中,逆变换单元78可基于针对所接收的经帧内预测编码的块而用信号通知的帧内预测模式来确定逆变换。如果所述块为如下大小:基于所述帧内预测模式,一个以上的变换有可能用于所述大小,则逆变换单元78可基于在包括当前块的LCU的四元树的根节点处用信号通知的变换来确定待应用于当前块的变换。在一些实例中,逆变换单元78可应用级联逆变换(例如,首先为逆旋转变换,后续接着逆定向变换)。
在(例如)用信号通知的帧内预测模式为DC预测模式的一些实例中,逆变换单元58(或视频解码器30的另一单元)可确定边缘是否存在于当前块中。逆变换单元58可使用实质上对应于关于图2的视频编码器20所描述的技术的技术来确定边缘是否存在。如果边缘存在于当前块中,则逆变换单元78可确定块内的边缘的角度且选择映射到具有接近所述边缘的角度的角度的帧内预测模式的逆变换。
如上文所论述,映射数据84可提供帧内预测模式的角度及帧内预测模式与逆变换之间的映射。因此,当用信号通知DC预测模式时,逆变换单元78可询问映射数据84以确定映射到具有密切接近所述边缘的角度的角度的帧内预测模式的逆变换。此外,当在块中检测到边缘时,帧内预测单元74可应用基于边缘的预测模式来预测块,而非针对所述块用信号通知的DC预测模式。映射数据84还可提供从帧内预测模式、二次变换(例如旋转变换)或其组合到扫描索引的映射,以选择用于所接收的经量化的变换系数的逆扫描。
运动补偿单元72产生经运动补偿的块,从而有可能基于内插滤波器来执行内插。待用于以子像素精度进行运动估计的内插滤波器的识别符可包括于语法元素中。运动补偿单元72可使用如视频编码器20在视频块的编码期间所使用的内插滤波器来计算参考块的子整数像素的内插值。运动补偿单元72可根据所接收的语法信息来确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测性块。
运动补偿单元72及帧内预测单元74使用语法信息(例如,由四元树提供)中的一些语法信息来确定:用以编码经编码的视频序列的帧的LCU的大小;描述如何分割经编码的视频序列的帧的每一CU(且同样,如何分割子CU)的分割信息;指示如何编码每一分割部分的模式(例如,帧内预测或帧间预测,及对于帧内预测来说的帧内预测编码模式);每一经帧间编码的PU的一个或一个以上参考帧(及/或含有参考帧的识别符的参考列表);及用以解码经编码的视频序列的其它信息。
求和器80组合残余块与由运动补偿单元72或帧内预测单元74产生的对应预测块以形成经解码的块。必要时,还可应用解块滤波器来对经解码的块滤波,以便移除块效应假影。接着将经解码的视频块存储于参考帧存储装置82中,所述参考帧存储装置82提供参考块以用于后续运动补偿且还产生经解码的视频以供呈现于显示装置(例如图1的显示装置32)上。
以此方式,视频解码器30为经配置以进行以下操作的视频解码器的实例:确定将用来预测视频数据块的帧内预测模式;及使用映射到所述帧内预测模式的逆变换来逆变换所述块的经变换的残余数据。视频解码器30也是经配置以进行以下操作的视频解码器的实例:接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自较小的帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定第二帧内预测模式所映射到的逆定向变换;及将所述逆定向变换应用于所述块的经变换的残余数据。
视频解码器30也是经配置以进行以下操作的视频解码器的实例:接收对用以解码视频数据块的帧内预测模式的第一指示;确定所述块是否包括为一大小的子块,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时,接收对多个可能的逆变换中的一者的第二指示;及使用多个可能的逆变换中的所指示逆变换来逆变换所述子块。
视频解码器30也是经配置以进行以下操作的视频解码器的实例:接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值;使用上下文模型来对所述值中的至少一者进行熵解码,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;及逆扫描所述一维向量以产生变换系数的二维块。
视频解码器30也是经配置以进行以下操作的视频解码器的实例:接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的二维块中的位置将为非零的可能性;及基于所述所选的统计数据集而自适应地逆扫描所接收一维向量以产生所述块的变换系数的二维矩阵,所述所接收一维向量包括所述块的残余数据的编码版本。
视频解码器30进一步为经配置以进行以下操作的视频解码器的实例:接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息;基于对用于所述块的DC帧内预测模式的指示来确定视频数据块中的边缘的角度;使用映射到具有接近所述边缘的角度的角度的定向帧内预测模式的定向逆变换来逆变换所述块;及解码经逆变换的块。
图4为说明描绘与各种帧内预测模式相关联的方向的实例集合的图表104的概念图。在图4的实例中,可取决于所选的帧内预测模式而从邻近像素100A到100AG(邻近像素100)预测块106。箭头102A到102AG(箭头102)表示与各种帧内预测模式相关联的方向或角度。图4的实例表示由HM提供的帧内预测模式。然而,在其它实例中,可提供较多或较少的帧内预测模式。尽管块106的实例为8×8的像素块,但一般来说,块可具有任何数目个像素,例如,4×4、8×8、16×16、32×32、64×64、128×128等。尽管HM提供正方形PU,但本发明的技术也可应用于其它块大小(例如,N×M的块,其中N未必等于M)。
可根据预测方向相对于(例如)垂直于块106的垂直侧的水平轴线的角度来定义帧内预测模式。因此,箭头102中的每一者可表示对应的帧内预测模式的预测方向的特定角度。在一些实例中,可由整数对(dx,dy)来定义帧内预测方向模式,所述整数对(dx,dy)可表示对应的帧内预测模式针对上下文像素外插所使用的方向。也就是说,可将帧内预测模式的角度计算为dy/dx。换句话说,可根据水平偏移dx及垂直偏移dy来表示角度。可根据邻近像素100中一条线所穿过的一者来确定在块106中的位置(x,y)处的像素的值,所述线也以dy/dx的角度穿过位置(x、y)。
在一些实例中,对应于由箭头102表示的角度的帧内预测模式中的每一者可被映射到特定变换。在一些实例中,两个或两个以上帧内预测模式可被映射到同一变换。所述变换可对应于定向变换、KLT、旋转变换、离散余弦变换、离散正弦变换、傅里叶变换或针对特定帧内预测模式而特定选择的其它变换。这些变换可通常被称为“经设计的”变换,因为所述变换是针对特定帧内预测模式而选择。
如上文所论述,在一些实例中,帧内预测模式集合可通过多对一的对应而映射到帧内预测模式的较小的集合(例如,子集)。换句话说,大的模式集合中的帧内预测模式的角度可被映射到较小的模式集合中的帧内预测模式的角度。在一些实例中,可使用数学公式来实现所述映射。举例来说,公式可提供使实际预测方向角度(此处称为α)与较小的帧内预测模式集合的预测方向角度(此处称为βi)之间的绝对预测角度差最小化的映射。在给定预测方向角度α的情况下,公式可提供βi以使得满足上文的公式(1)。为方便起见,以下重新陈述公式(1):
arg{βi}min(min(abs(α-βi),abs(-α-βi)))(1)
在一个实例中,较小的帧内预测模式集合可与箭头102E、102I、102M、102Q、102U、102Y、102AC及102AG具有相同的角度。因此,箭头102的角度中的每一者可被映射到箭头102E、102I、102M、102Q、102U、102Y、102AC及102AG的角度中的一者。作为一个实例,箭头102A到102E的角度可被映射到箭头102E的角度,箭头102F到102I的角度可被映射到箭头102I的角度,箭头102J到102M的角度可被映射到箭头102M的角度,箭头102N到102Q的角度可被映射到箭头102Q的角度,箭头102R到102U的角度可被映射到箭头102U的角度,箭头102V到102Y的角度可被映射到箭头102Y的角度,箭头102Z到102AC的角度可被映射到箭头102AC的角度,且箭头102AD到102AG的角度可被映射到箭头102AG的角度。
还可提供其它映射。在一些实例中,视频编码器20及视频解码器30可配置有多种不同映射,且视频编码器20可(例如)在标头数据、序列参数集(SPS)或其它用信号通知的数据中提供指示用于特定位流的映射的信息。
如上文所论述,在一些实例中,视频译码装置(例如视频编码器20或视频解码器30)可经配置以确定边缘是否存在于块中。举例来说,视频译码装置可经配置以基于对一个或一个以上邻近块的像素的分析来确定边缘是否存在于块106中,其中所述邻近块可包括邻近像素100中的一者或一者以上。一般来说,邻近的先前译码的块可与块106共享界线,其中所述界线可对应于邻近像素100中的一者或一者以上。举例来说,块106的左边邻近块可包括邻近像素100I到100P,所述邻近像素100I到100P定义在所述左边邻近块与块106之间的界线。
视频译码装置可经配置以计算邻近的先前译码的块中的像素的梯度以确定边缘是否存在于所述邻近的先前译码的块中。视频译码装置可进一步确定所述边缘是否与在所述邻近的先前译码的块与当前块(例如块106)之间的界线交叉(也就是说,相交)。关于上文所描述的块106的左边邻近块的实例,视频译码装置可确定所述左边邻近块中的像素的梯度是否指示与在所述左边邻近块与块106之间的界线相交的边缘的存在,其中在此实例中,所述界线由像素100I到100P来定义。当视频译码装置确定左边邻近块中的像素的梯度指示边缘的存在且所述边缘与由像素100I到100P定义的界线交叉时,视频译码装置可确定所述边缘延续到块106中,且因而块106包括边缘。
在一些实例中,当视频译码装置确定用信号通知的用于块106的帧内预测模式为DC预测模式且块106包括边缘时,视频译码装置可使用基于边缘的帧内预测模式来预测块106。此外,视频译码装置可确定边缘的角度。视频译码装置可接着确定最密切接近所述边缘的角度的预测模式的角度(大体由箭头102指示)。视频译码装置可接着选择映射到具有最密切接近所述边缘的角度的角度的帧内预测模式的变换(其可对应于解码时的逆变换),且将所选的变换应用于块106的残余数据。在编码过程期间,视频译码装置可将所述变换应用于块106的TU,而在解码过程期间,视频译码装置可将逆变换应用于块106的经变换的残余数据。
图5为说明H.264的帧内预测模式110A到110I(帧内预测模式110)的概念图。帧内预测模式110C对应于DC帧内预测模式,且因此未必与实际角度相关联。剩余的帧内预测模式110可与类似于图4的箭头102的角度的角度相关联。举例来说,帧内预测模式110A的角度对应于箭头102Y,帧内预测模式110B的角度对应于箭头102I,帧内预测模式110D的角度对应于箭头102AG,帧内预测模式110E的角度对应于箭头102Q,帧内预测模式110F的角度对应于箭头102U,帧内预测模式110G的角度对应于箭头102M,帧内预测模式110H的角度对应于箭头102AD,且帧内预测模式110I的角度对应于箭头102E。
并不直接对应于帧内预测模式110中的一者的箭头102的角度可被映射到帧内预测模式110中的一者。举例来说,接近箭头102中的一者的角度的帧内预测模式110中的一者的角度可对应于箭头102中的所述一者所映射到的角度。
帧内预测模式110中的每一者可(例如)以一对一的对应被映射到特定变换。举例来说,视频译码装置(例如视频编码器20或视频解码器30)可包括将帧内预测模式110C映射到DCT且将其它帧内预测模式110中的每一者映射到特定定向变换(例如,KLT)的配置数据。因此,与箭头102(图4)相关联的帧内预测模式中的每一者的角度可被映射到帧内预测模式110(图5)的角度。帧内预测模式110又可被映射到变换(例如,定向变换)。以此方式,与箭头102(图4)相关联的帧内预测模式中的每一者的角度可被映射到定向变换。因此,视频编码器20及视频解码器30可基于经选择用于对应于TU的PU的帧内预测模式来确定待应用于所述TU的定向变换。
图6为说明系数120A到120P(系数120)的实例锯齿状扫描的概念图。系数120通常对应于由对TU的像素的变换及量化而产生的经量化的变换系数。视频编码器20可经配置以在(例如)将DCT应用于残余块之后使用图6的锯齿状扫描来扫描系数的块。在此实例中,锯齿状扫描在系数120A处开始,接着进行到系数120B,接着进行到系数120E,接着进行到系数120I,接着进行到系数120F,接着进行到系数120C,接着进行到系数120D,接着进行到系数120G,接着进行到系数120J,接着进行到系数120M,接着进行到系数120N,接着进行到系数120K,接着进行到系数120H,接着进行到系数120L,接着进行到系数120O,且最后进行到系数120P。
通过执行此扫描,可将像素的系数的二维布置转化为一维阵列,所述一维阵列包括系数120中的每一者的值。可按扫描的次序将这些值布置成阵列。举例来说,系数120A的值可在阵列中的第一个位置,后续接着系数120B、120E、120I、120F等等的值。
也可针对其它变换来定义其它预定义的扫描模式。举例来说,每一定向变换可与经设计以将由定向变换产生的低频系数早于较高频系数而置于阵列中的扫描模式相关联。定向变换中的一者可使较低频系数沿变换系数的块的极左列出现,在所述状况下,可定义对应的扫描,所述扫描在系数120A处开始,接着进行到系数120E,接着进行到系数120I,接着进行到系数120M,接着进行到120B,等等。作为另一实例,定向变换中的另一者可使较低频系数沿变换系数的块的顶行出现,在所述状况下,可定义对应的扫描,所述扫描在系数120A处开始,接着进行到系数120B,接着进行到系数120C,接着进行到系数120D,接着进行到系数120E,等等。
在一些实例中,视频编码器20可经配置以执行自适应扫描而非预定义扫描。自适应扫描可基于指示特定系数(也就是说,对应于系数120的系数)是否重要的统计数据而随时间变化。此外,视频编码器20可基于(例如)经选择以预测块的帧内预测模式、在初始变换之后应用的旋转变换的索引或其它因素来计算分开的若干统计数据集。
在一些实例中,视频编码器20可包括这些统计数据的两个表:高动态范围表及动态更新型扫描表。假定待扫描的块具有N×N个系数,则这两个表中的每一者也可具有N×N的大小。高动态范围表可为提供每一变换系数为非零的概率的固定的预定表。可基于训练数据集来计算此表。此外,可使用此表来提供自适应扫描次序的开始点。一般来说,高动态范围表对于位流来说可为静态的(也就是说,未改变)。
可随时间而更新动态更新型扫描表以反映变换系数的最近确定的统计数据。确切地说,视频编码器20可对每一系数为非零的次数进行计数。也就是说,对于每一变换块来说,视频编码器20可递增动态更新型扫描表中的对应于当前变换块中的非零系数的值。举例来说,如果对应于系数120E的变换系数为非零,则视频编码器20可将1加到动态更新型扫描表中的对应于系数120E的值。也可周期性地正规化动态更新型扫描表中的值,以防止所述值超过最大值。
为执行用于帧的第一变换单元的自适应扫描,视频编码器20可仅基于高动态范围表来进行扫描。视频编码器20还可通过(例如)将动态更新型扫描表中的所有值设定为零来初始化动态更新型扫描表。对于变换块中的每一非零系数来说,视频编码器20可将1加到动态更新型扫描表中的并置值。对于后续块来说,视频编码器20可首先参考动态更新型扫描表以确定变换系数中的哪一者最有可能为非零,接着按系数为非零的可能性的递减次序进行扫描。在一些状况下,动态更新型扫描表中的两个或两个以上值可相等。在此状况下,量化单元54参考高动态范围表以确定接下来将扫描哪一系数。以此方式,量化单元54可基于高动态范围表及动态更新型扫描表的组合来执行自适应扫描。
在一些实例中,高动态范围表对于所有自适应扫描统计数据来说可为相同的。因此,视频编码器20可包括对(例如)所选的帧内预测模式、旋转变换索引或其组合来说为特定的动态更新型扫描表。在一些实例中,视频编码器20可经配置以:在未应用旋转变换时从预定的静态扫描当中进行选择,且在应用旋转变换时执行自适应扫描,且此外,基于所选的帧内预测模式及所选的旋转变换的索引中的任一者或两者来选择用于执行自适应扫描的统计数据。或者,视频编码器20可经配置以基于旋转变换的索引、帧内预测模式或其组合来选择预定义扫描。视频解码器30可与视频编码器20类似地配置以选择适当的扫描。
图7A及7B为说明实例四元树150及对应的最大译码单元172的概念图。图7A描绘实例四元树150,其包括以层级方式布置的节点。四元树(例如四元树150)中的每一节点可为不具有子代的叶节点,或具有四个子代节点。在图7A的实例中,四元树150包括根节点152。根节点152具有四个子代节点,所述四个子代节点包括叶节点156A到156C(叶节点156)及节点154。由于节点154不是叶节点,所以节点154包括四个子代节点,在此实例中,所述四个子代节点为叶节点158A到158D(叶节点158)。
四元树150可包括描述对应的最大译码单元(LCU)(例如此实例中的LCU172)的特性的数据。举例来说,四元树150可通过其结构来描述将LCU分割为子CU。假定LCU172具有2N×2N的大小。在此实例中,LCU172具有四个子CU176A到176C(子CU176)及174,其各自为大小N×N。子CU174被进一步分割为四个子CU178A到178D(子CU178),其各自为大小N/2×N/2。在此实例中,四元树150的结构对应于LCU172的分割。也就是说,根节点152对应于LCU172,叶节点156对应于子CU176,节点154对应于子CU174,且叶节点158对应于子CU178。
四元树150的节点的数据可描述对应于所述节点的CU是否被分割。如果CU被分割,则四个额外节点可存在于四元树150中。在一些实例中,可类似于以下伪码来实施四元树的节点:
split_flag值可为表示对应于当前节点的CU是否被分割的1位值。如果CU未被分割,则split_flag值可为“0”,而如果CU被分割,则split_flag值可为“1”。关于四元树150的实例,分割旗标值的阵列可为101000000。
在一些实例中,可使用相同的帧内预测模式来对子CU176及子CU178中的每一者进行帧内预测编码。因此,视频编码器20可在根节点152中提供对帧内预测模式的指示。此外,特定大小的子CU可具有针对特定帧内预测模式的多个可能的变换。根据本发明的技术,视频编码器20可在根节点152中提供对用于这些子CU的变换的指示。举例来说,大小为N/2×N/2的子CU可具有可用的多个可能的变换。视频编码器20可在根节点152中用信号通知待使用的变换。因此,视频解码器30可基于在根节点152中用信号通知的帧内预测模式及在根节点152中用信号通知的变换来确定待应用于子CU178的变换。
因而,根据本发明的技术,视频编码器20无需在叶节点156及叶节点158中用信号通知待应用于子CU176及子CU178的变换,而是可改为仅在根节点152中用信号通知待应用于特定大小的子CU的帧内预测模式,且在一些实施例中用信号通知待应用于特定大小的子CU的变换。以此方式,这些技术可减少用信号通知用于LCU(例如LCU172)的每一子CU的变换功能的开销成本。
在一些实例中,用于子CU176及/或子CU178的帧内预测模式可不同于用于LCU172的帧内预测模式。视频编码器20及视频解码器30可配置有将在根节点152处用信号通知的帧内预测模式映射到可用于子CU176及/或子CU178的帧内预测模式的功能。所述功能可提供可用于LCU172的帧内预测模式到用于子CU176及/或子CU178的帧内预测模式的多对一映射。
尽管图7A说明CU四元树的实例,但应理解,可将类似的四元树应用于叶节点CU的TU。也就是说,叶节点CU可包括描述对CU的TU的划分的TU四元树。TU四元树可大体上类似于CU四元树,只是TU四元树可个别地用信号通知用于CU的TU的帧内预测模式。
图8为说明一种用于基于经选择用于块的帧内预测模式来选择待应用于所述块的变换及扫描的实例方法的流程图。尽管出于解释的目的而大体上描述为由视频编码器20(图2)的组件来执行,但应理解,其它视频编码单元(例如处理器、处理单元、例如编码器/解码器(编解码器)的基于硬件的译码单元及其类似者)也可经配置以执行图8的方法。
在图8的实例中,变换单元52可最初接收当前TU的残余数据(180)。另外,变换单元52还可接收对经选择用于所述TU的帧内预测模式的指示。根据此指示,变换单元52可确定所述TU的预测方向(182)。举例来说,变换单元52可确定所指示的帧内预测模式的预测方向的角度。
在任何状况下,在确定帧内预测模式之后,变换单元52可基于从帧内预测模式到变换的映射来选择待应用于残余数据的变换(186)。举例来说,变换单元52可通过询问具有帧内预测方向的映射数据66来选择待应用的变换,且确定所述帧内预测方向所映射到的变换。所述变换可对应于离散余弦变换或定向变换(例如依模式而定的定向变换(MDDT))。变换单元52可接着将所选的变换应用于残余数据以变换残余数据(188)。在一些实例中,映射数据66可进一步包括对变换单元52应当应用两个或两个以上变换(例如,在第一变换之后应用旋转变换)的指示,在所述状况下,变换单元52可进一步应用所指示的旋转变换。
通过变换残余数据,变换单元52可产生变换系数的二维矩阵,所述二维矩阵与残余数据具有相同数目个系数。在图8的实例中,量化单元54可接着量化所述变换系数(190)。在一些实例中,量化单元54可(例如)在量化所述系数之前或之后扫描系数的二维矩阵以产生一维阵列。或者,熵译码单元56可扫描所述二维矩阵。
在此实例中,熵译码单元56可询问映射数据66以选择待应用于经量化的变换系数的扫描(192)。在一些实例中,映射数据66可包括将帧内预测模式映射到特定的预定义扫描模式的数据。在一些实例中,映射数据66可包括将变换映射到预定义扫描模式的数据。在(例如)映射数据66指示旋转变换将被应用于变换系数的一些实例中,映射数据66可进一步指示应执行自适应扫描或旋转变换所映射到的预定义扫描。在执行自适应扫描的实例中,映射数据66可进一步包括扫描统计数据,例如,映射到帧内预测模式的高动态范围表及动态更新型扫描表、第一变换的索引、旋转变换的索引、上述各者的组合及/或其它因素。
熵译码单元56可接着使用所选的扫描(例如,基于所选的扫描统计数据的预定义扫描或自适应扫描)来扫描经量化的变换系数(194)。在一些实例中,熵译码单元56可配置有一扫描位置(其可小于或等于变换系数的数目),其后,熵译码单元56可将阵列中的系数值清零。在扫描数目等于所述扫描位置的系数之后,熵译码单元56可将剩余阵列值设定为等于零。在一些实例中,将变换系数清零可发生在扫描之前或之后。
在一些实例中,熵译码单元56在扫描之后可接着对所述阵列中的经扫描的系数进行熵编码(196)。或者,在一些实例中,熵译码单元56可在扫描系数时对所述系数进行熵编码。在任何状况下,熵译码单元56可利用CABAC或CAVLC来对所述系数进行熵编码。
当使用CABAC时,且当执行自适应扫描时,熵译码单元56可对包括重要系数旗标及最后系数旗标的语法元素进行熵编码。熵译码单元56可基于块类型(帧内或帧间)、所选的帧内预测模式(假定所述块是以帧内模式来预测)及/或所应用的变换的类型(例如,DCT或定向/KLT)来选择用于对重要系数旗标进行熵编码的上下文模型。熵译码单元56可基于自适应扫描中的次序索引、块类型、空间预测方向及/或所选的变换来对最后系数旗标进行熵编码。
以此方式,图8的方法表示一种方法的实例,所述方法包括:基于使用帧内预测模式所形成的预测块来计算视频数据块的残余块;及使用映射到所述帧内预测模式的变换来变换残余块。
图9为说明另一种用于选择待应用于残余数据块的变换及扫描的实例方法的流程图。一般来说,图9实质上与图8一致。然而,在图9的实例中,在接收残余数据(180)及对经选择用于TU的帧内预测模式的指示之后,变换单元52可确定用于预测所述TU的第一预测方向(183)。举例来说,变换单元52可确定所指示的帧内预测模式的预测方向的角度。
变换单元52可接着确定映射到第一预测方向的第二方向(184)。举例来说,变换单元52可询问映射数据66以确定第一帧内预测模式所映射到的第二帧内预测模式。在一些实例中,变换单元52可确定接近所指示的帧内预测模式的角度的角度,且选择对应于所确定的角度的第二帧内预测模式。变换单元52可接着选择映射到第二预测数据的变换(185)。在选择变换(其可对应于选择多个变换)之后,视频编码器20大体上以类似于关于图8所描述的对应步骤的方式来执行图9的剩余步骤。
以此方式,图9的方法为一种方法的实例,所述方法包括:接收对用于视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自较小的帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定所述第二帧内预测模式所映射到的定向变换;及将所述定向变换应用于所述块的残余数据。
图10为说明一种用于将帧内预测模式及变换应用于特定大小的子CU的实例方法的流程图。尽管出于解释的目的而大体上描述为由视频编码器20(图2)的组件来执行,但应理解,其它视频编码单元(例如处理器、处理单元、例如编码器/解码器(编解码器)的基于硬件的译码单元及其类似者)也可经配置以执行图10的方法。还应理解,在其它实例中,除图10中所说明的步骤之外,类似的方法可包括额外或替代步骤,或可按不同次序来执行所说明的步骤,而不脱离所描述的技术。
如关于图10所描述的用于选择及应用变换的技术可对应于图8的步骤186及188。可在图8的步骤180之前执行如关于图10所描述的用于将各种帧内预测模式应用于为各种大小的块的技术。
帧内预测单元46可接收像素的块(例如,LCU)(200)。帧内预测单元46可接着确定待应用于LCU的帧内预测模式,且(例如)在对应于LCU的四元树数据结构的根节点处用信号通知所确定的用于LCU的帧内预测模式(201)。帧内预测单元46可接着确定仅帧内预测模式的子集可用于其的子CU的大小(202)。帧内预测单元46可进一步将LCU划分为一个或一个以上子CU且确定所述子CU中的任一者是否具有仅帧内预测模式的子集可用于其的大小(204)。
如果LCU包括为仅帧内预测模式的子集可用于其的大小的子CU(184的“是”分支),则帧内预测单元46可使用经选择用于LCU的帧内预测模式所映射到的帧内预测模式来对所述子CU进行帧内预测(206)。另一方面,如果LCU不包括为此大小的任何子CU(184的“否”分支),则帧内预测单元46可将用信号通知的用于LCU的模式应用于LCU的所有子块(208)。
视频编码器20可接着计算LCU的子CU的残余值。接着,变换单元52可基于用信号通知的用于LCU的帧内预测模式来确定多个变换有可能用于其的子CU大小(210)。变换单元52可进一步确定LCU的子CU中的任一者是否为多个变换有可能用于其的大小(212)。如果至少一个子CU为多个变换有可能用于其的大小(192的“是”分支),则变换单元52可选择并用信号通知待应用于为所述大小的子CU的变换(214)。举例来说,变换单元52可在LCU的四元树的根节点中用信号通知待应用于为所述大小的子CU的变换。变换单元52还可将用信号通知的变换应用于LCU中的为所述大小的所有子块(216)。另一方面,如果LCU不含有多个变换有可能用于其的任何子CU(192的“否”分支),则变换单元52可仅基于用信号通知的用于LCU的帧内预测模式而将变换应用于LCU的子CU(218),使得关于变换的信令是不必要的。
以此方式,图10的方法为一种方法的实例,所述方法包括:选择将用来编码视频数据块的帧内预测模式;确定所述块是否包括为一大小的子块,基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的子块(基于所述子块的大小及所选的帧内预测模式,多个变换有可能用于所述大小)时,选择多个可能的变换中的一者;使用所述多个可能的变换中的所选变换来变换所述子块;及提供针对所述块的所述大小的多个可能的变换中的所选变换的指示。
图11为说明一种用于基于应用于块的所选变换来执行自适应扫描的实例方法的流程图。尽管出于解释的目的而大体上描述为由视频编码器20(图2)的组件来执行,但应理解,其它视频编码单元(例如处理器、处理单元、例如编码器/解码器(编解码器)的基于硬件的译码单元及其类似者)也可经配置以执行图11的方法。
还应理解,在其它实例中,除图11中所说明的步骤之外,类似的方法可包括额外或替代步骤,或可按不同次序来执行所说明的步骤,而不脱离所描述的技术。如图11中所说明的用于在级联变换之后自适应地扫描系数的技术可对应于图8的步骤192及194。可在帧内预测或帧间预测之后将图11的用于自适应地扫描残余系数的技术应用于残余数据。
最初,视频编码器20的变换单元52可接收残余块(230)。残余块可对应于在对CU的帧内预测或帧间预测之后的残余。残余块可与CU的对应预测单元为相同大小或不同大小。变换单元52可接着变换残余块(232)。在一些实例中,根据本发明的技术,变换单元52可应用对应于来自帧内预测模式的子集的帧内预测模式的定向变换。在其它实例中,变换单元52可应用离散余弦变换。
变换单元52可接着将旋转变换应用于经变换的块(234)。对于大小为8×8及更大的变换单元(TU)(变换单元52将DCT应用于所述TU)来说,变换单元52可将旋转变换应用于最低频8×8个DCT系数。对于小于8×8的TU来说,变换单元52可将旋转变换应用于整个TU。如果对应于TU的PU被帧内预测编码,则变换单元52可基于用以预测所述PU的帧内预测模式来选择旋转变换(例如,在帧内预测模式的子集可被映射到旋转变换的情况下)。可将这些旋转变换称为依模式而定的旋转变换(MDROT)。在一些实例中,变换单元52可使旋转变换(或其它二次可分离变换)接在依模式而定的定向变换(MDDT)(其可为KLT)之后。
在一些实例中,在旋转变换之后,量化单元54可量化经变换的系数。接着,熵译码单元56可选择将用来执行变换系数的自适应扫描的统计数据集。所述统计数据集可包括高动态范围(HDR)表及动态更新(DU)表。可针对特定情形(例如,使用帧内预测还是帧间预测来预测PU、当使用帧内预测时用于PU的特定帧内预测模式、将DCT还是KLT应用于对应于PU的TU、所使用的旋转变换的索引或其任何组合),来选择HDR表及DU表中的任一者或两者。以此方式,熵译码单元56可选择在自适应扫描期间使用的HDR及/或DU表(236)。
如上文所论述,HDR表可包括预定义的数据集,其指示矩阵中的每一位置的系数为非零的概率。可使用训练数据集来产生HDR表,且HDR表可贯穿整个位流而保持相同。熵译码单元56可收集帧、片段、图片群组或视频数据的其它单元所特有的统计数据以计算DU表的值。DU表可因此还指示矩阵中的每一位置的系数为非零的概率。
为执行自适应扫描,熵译码单元56可首先使用DU表来确定矩阵中包括非零系数的概率为最高的位置(238)。在一些状况下,矩阵中可存在具有非零系数的概率为相等的两个或两个以上位置。因此,熵译码单元56可确定矩阵中是否存在包括非零系数的概率为相同的多个位置(240)。如果矩阵中存在包括非零系数的概率为相同的多个位置(240的“是”分支),则熵译码单元56可使用HDR表来确定矩阵中包括非零系数的概率为最高的位置(242)。
熵译码单元56可接着扫描并熵编码经确定的位置中的系数(244)。熵译码单元56还可确定经扫描的系数是否事实上为非零,且设定重要系数旗标的值以指示经扫描的系数是否为非零且因此为重要的。熵译码单元56可接着确定是否已扫描矩阵中的所有系数(246)。若非如此(246中的“否”分支),则熵译码单元56可使用DU表(或可能使用HDR表)来确定矩阵中包括非零系数的概率为次最高的位置,且扫描此位置中的系数。
在已扫描所有系数(246的“是”分支)之后,熵译码单元可停止扫描。此外,在一些实例中,熵译码单元56可针对每一系数而设定最后系数旗标的值以在所述旗标中指示对应的系数是否为最后系数。在确定已扫描所有系数(246的“是”分支)之后,熵译码单元56可将对应于最后扫描的系数的最后系数旗标的值设定为等于1。熵译码单元56可使用如下文所描述的图12的技术来编码包括重要系数旗标及最后系数旗标的语法元素。
在一些实例中,在扫描(不论为自适应扫描还是固定扫描)之后,视频编码器20可将通过扫描所产生的阵列中的系数(例如,在阵列中的位置N之后的所有系数,其中N为在零与阵列长度之间的整数)清零。在其它实例中,视频编码器20可在所述变换或量化之后将矩阵的特定位置中的系数清零。这些位置可对应于(例如)矩阵的左上角。一般来说,将这些系数清零可引起将较高频系数清零,此可改善译码效率而不会对质量有很大影响。
以此方式,图11的方法为一种方法的实例,所述方法包括:使用第一变换来变换视频数据块的残余数据以产生变换系数的中间二维块;使用旋转变换来变换变换系数的中间二维块以产生变换系数的二维块;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的二维块中的位置将为非零的可能性;及基于所述所选的统计数据集来自适应地扫描变换系数的二维块。
图12为说明一种用于选择将在扫描并熵编码描述经自适应扫描的系数的语法元素时使用的上下文模型的实例方法的流程图。尽管出于解释的目的而大体上描述为由视频编码器20(图2)的组件来执行,但应理解,其它视频编码单元(例如处理器、处理单元、例如编码器/解码器(编解码器)的基于硬件的译码单元及其类似者)也可经配置以执行图12的方法。
还应理解,在其它实例中,除图12中所说明的步骤之外,类似的方法可包括额外或替代步骤,或可按不同次序来执行所说明的步骤,而不脱离所描述的技术。如图11中所说明的用于选择将在扫描并熵编码描述经自适应扫描的系数的语法元素时使用的上下文模型的技术可对应于图8的步骤192到196。可在执行图11的自适应扫描之前、期间或之后执行图12的技术。
熵译码单元56可(例如)从量化单元54接收经量化的变换系数的矩阵(250)。一般来说,熵译码单元56可使用图12的实例方法来编码描述所接收的系数的语法元素。所述语法元素可针对每一系数而包括重要系数旗标及最后系数旗标。重要系数旗标可指示对应系数是否重要(例如,对应系数的值是否大于零)。最后系数旗标可指示对应系数是否为自适应扫描的最后系数。
熵译码单元56可确定所接收的矩阵中的重要系数的位置。熵译码单元56可形成指示所接收的矩阵中的重要系数的位置的语法元素(252)。举例来说,对于矩阵中的每一系数来说,熵译码单元56可确定所述系数是否大于零,且如果如此,则将语法元素矩阵中与所述系数并置的值设定为等于1,否则,熵译码单元可将与所述系数并置的值设定为等于零。熵译码单元56可接着使用语法元素矩阵来更新动态更新型扫描表(254)。举例来说,熵译码单元56可将语法元素矩阵中的并置的语法元素的值加到动态更新型扫描表中的每一元素的当前值。
熵译码单元56可接着扫描语法元素矩阵中的语法元素中的第一语法元素(256)。熵译码单元56可应用锯齿状扫描(例如图6A中所示的锯齿状扫描)或基于块类型(帧间或帧内预测块)、空间预测方向(如果块为经帧内预测编码的块)及/或所使用的变换的类型(例如,DCT或定向变换)所选择的扫描。接下来,熵译码单元56可选择用于编码经扫描的语法元素的上下文模型(258)。一般来说,可基于先前扫描的N个系数中的重要(例如,非零)系数的数目来选择上下文模型,其中N为非零整数值。可基于块的大小来选择N。
在选择将用来编码当前语法元素的上下文模型之后,熵译码单元56可使用所选的上下文模型来熵编码经扫描的语法元素(260)。熵译码单元56可接着确定经编码的语法元素是否为待编码的最后语法元素(262)。如果所述语法元素为最后语法元素(262的“是”分支),则熵译码单元56可停止扫描系数。另一方面,如果语法元素不是最后语法元素(262的“否”分支),则熵译码单元56可扫描下一语法元素(264),且再次选择用于编码经扫描的语法元素的上下文模型(例如,基于先前扫描的N个系数中的重要系数的数目)。
主要关于描述特定系数是否重要的语法元素来论述图12的实例。这些语法元素可包括(例如)重要系数旗标(例如,指示对应系数是否重要(例如,非零)的1位旗标)。应理解,可关于描述特定系数是否为自适应扫描中的最后系数的语法元素而应用类似的技术。举例来说,可将类似的技术应用于最后系数旗标。当使用CABAC来编码最后系数旗标时,上下文模型可基于自适应扫描中的次序索引,所述自适应扫描是基于块类型、空间预测方向及/或所选的变换。
可通过视频编码装置(例如视频编码器20)来执行图12的技术。视频解码器可使用根据图12而编码的语法元素来执行逆扫描。举例来说,视频解码器30可接收对用以预测经编码的块的帧内预测模式的指示、对用以变换经编码的块的旋转变换的指示,或其它此数据。视频编码器20及视频解码器30可各自配置有相同的高动态范围表。在视频编码器20包括多个高动态范围表的实例中,视频编码器20及视频解码器30可各自配置有相同的高动态范围表集合。在这些实例中,视频解码器30可使用所接收的信息来选择与由视频编码器20用来执行自适应扫描的高动态范围表相同的高动态范围表。
如上文所指出,视频编码器20可基于指示矩阵中的特定位置中的系数为非零的可能性(或概率)的统计数据来执行自适应扫描。视频编码器20可维持指示此可能性的动态更新型扫描表,从而针对每一经扫描的块而更新所述动态更新型扫描表。通过编码语法元素(所述语法元素指示特定块的系数中的哪些系数为重要的及哪一系数为自适应扫描中的最后系数),视频编码器20可给视频解码器30提供可用以逆扫描所接收的系数的信息。
举例来说,视频解码器30可解码语法元素,接着使用所述语法元素来更新动态更新型扫描表的本地版本。视频解码器30可接着熵解码经编码的系数且将经解码的系数放置于矩阵的对应位置中,所述位置为重要(例如,非零)的概率为次最高。以此方式,视频解码器30可使用自适应逆扫描而从所接收的经熵编码的系数的向量来重建构经量化的变换系数的矩阵。
以此方式,图12的方法为一种方法的实例,所述方法包括:扫描变换系数的二维块以产生变换系数的一维向量;确定指示一维向量中的变换系数是否重要的值;及使用上下文模型来对所述值中的至少一者进行熵编码,所述上下文模型是至少基于在所述值中的所述至少一者之前所编码的预定数目个值中重要系数的百分比而选择。
图13为说明一种用于解码已使用本发明的技术中的一者或一者以上来编码的TU的实例方法的流程图。尽管出于解释的目的而大体上描述为由视频解码器30(图3)的组件来执行,但应理解,其它视频解码单元(例如处理器、处理单元、例如编码器/解码器(编解码器)的基于硬件的译码单元及其类似者)也可经配置以执行图13的方法。还应理解,在其它实例中,除图13中所说明的步骤之外,类似的方法可包括额外或替代步骤,或可按不同次序来执行所说明的步骤,而不脱离所描述的技术。
最初,视频解码器30可接收经编码的残余数据(300)。在图13的实例中,出于说明的目的,残余数据对应于包括以帧内预测模式来预测的一个或一个以上PU的CU的残余。根据本发明的技术,视频解码器30可确定与所接收的残余数据相关联的预测数据的第一预测方向(302)。所述预测方向可对应于在对应于所述CU的四元树的根处用信号通知的帧内预测模式。
视频解码器30可确定映射到第一预测方向的第二预测方向(304)。举例来说,映射数据84可提供帧内预测模式集合到帧内预测模式的较小集合(例如,子集)的多对一映射。因此,视频解码器30可参考映射数据84以确定映射到第一预测方向的第二预测方向。视频解码器30的熵编码单元70可接着开始对所接收的系数进行熵解码(306)。
熵解码单元70还可在熵解码期间或之后逆扫描所述系数(308)。在一些实例中,熵解码单元70可逆转第二预测方向所映射到的固定扫描(例如,如由映射数据84所指示)。在其它实例中(例如,当旋转变换接在第一变换之后时),熵解码单元70可逆转动态扫描。如上文所论述,在这些实例中,熵解码单元70可接收并解码语法元素(例如重要系数旗标及最后系数旗标),使得熵解码单元70可产生与在编码器自适应地扫描残余数据时由编码器(例如视频编码器20)使用的动态更新表相同的动态更新表。
在任何状况下,在逆扫描之后,熵解码单元70可产生包括经量化的变换系数的二维矩阵。因此,逆量化单元76可逆量化所述矩阵的经量化的变换系数(310)。逆变换单元78可选择映射到第二预测方向的逆变换(312)且使用所选的逆变换来逆变换所述变换系数(314)。举例来说,逆变换单元76可参考映射数据84以选择所述逆变换。在一些实例中,映射数据84可指示待应用的逆旋转变换及另一逆变换,在所述状况下,逆变换单元78可首先将逆旋转变换应用于变换系数,接着将另一逆变换应用于变换系数。
根据本发明的技术,在一些实例中,可存在多个逆变换有可能用于其的变换系数的子块。在这些实例中,视频解码器30可使用对视频编码器所应用的变换的指示来确定待应用的逆变换。举例来说,视频解码器30可在对应于包括残余数据块的四元树的根节点中接收对用于子块的变换的指示。
在应用所述逆变换之后,视频解码器30获得残余块,所述残余块类似于由视频编码器20在编码视频数据期间所计算出的残余块。帧内预测单元74可将残余数据的预测单元提供到求和器80,所述求合器80可组合预测单元与残余数据以产生经解码的CU(316)。视频解码器30可汇编经解码的帧,其包括参考帧存储装置82中的经解码的CU。可接着再现所述经解码的帧以供显示及/或用于在解码其它帧时参考。
以此方式,图13的方法为一种方法的实例,所述方法包括:接收对用于经编码的视频数据块的第一帧内预测模式集合中的第一帧内预测模式的指示;确定来自较小的帧内预测模式集合的第二帧内预测模式,所述第一帧内预测模式被映射到所述第二帧内预测模式;确定第二帧内预测模式所映射到的逆定向变换;及将所述逆定向变换应用于所述块的经变换的残余数据。
图13的方法也是一种方法的实例,所述方法包括:接收对将用来解码视频数据块的帧内预测模式的第一指示;确定所述块是否包括为一大小的子块,基于所述子块的大小及所指示的帧内预测模式,多个变换有可能用于所述大小;当所述块包括为所述大小的子块(基于所述子块的大小及所指示的帧内预测模式,多个逆变换有可能用于所述大小)时,接收对多个可能的逆变换中的一者的第二指示;及使用所述多个可能的逆变换中的所指示逆变换来逆变换所述子块。
图13的方法也是一种方法的实例,所述方法包括:接收对使用第一变换与旋转变换两者来变换视频数据块的残余数据以产生变换系数的二维块的指示;选择与第一变换及旋转变换中的至少一者相关联的统计数据集,其中所述统计数据集提供变换系数的二维块中的位置将为非零的可能性;及基于所述所选的统计数据集而自适应地逆扫描所接收的一维向量以产生所述块的变换系数的二维矩阵,所述所接收的一维向量包括所述块的残余数据的编码版本。
图13的方法也是一种方法的实例,所述方法包括:接收指示在所接收的经编码的变换系数的一维向量中的经编码的变换系数是否重要的值;使用上下文模型来对所述值中的至少一者进行熵解码,所述上下文模型是至少基于在所述值中的所述至少一者之前所解码的预定数目个值中重要系数的百分比而选择;及逆扫描所述一维向量以产生变换系数的二维块。
图14为说明一种用于选择待应用于包括边缘的经帧内译码的块的变换的实例方法的流程图,针对所述块用信号通知了DC帧内预测模式。尽管关于图3的视频解码器30来描述,但应理解,可由图2的视频编码器20或其它视频译码装置来应用类似(互逆)的技术。
视频编码器30可接收经帧内编码的块(例如,TU)(180)。所述块可包含变换系数的块,变换系数的所述块对应于TU四元树中的节点。所述TU四元树节点可包括对将用来计算所述块的预测值的帧内预测模式的指示。因此,视频解码器30可确定预测模式及是否针对所述块用信号通知了DC预测模式(352)。如果针对所述块用信号通知了DC预测模式(352的“是”分支),则视频解码器30可进一步确定一边缘是否存在于所述块中(354)。举例来说,如上文所论述,视频解码器30可检查邻近的先前译码的块以确定是否在先前译码的块中检测到边缘及所述边缘是否与在先前译码的块与当前块之间的边界相交。
如果确定边缘存在于所述块中(354的“是”分支),则视频解码器30可使用基于边缘的预测模式来计算所述块的预测值(356)。此外,视频解码器30可确定边缘的角度(358)且确定具有密切接近所述边缘的角度的角度的帧内模式(360)。举例来说,视频解码器30可计算可能的帧内预测模式中的一者或一者以上的角度与所述边缘的角度之间的差,且选择具有最小的差的帧内预测模式。
尽管通常仅为了确定映射到所述预测模式的变换而执行确定此预测模式,但是在此实例中,视频解码器30通常使用基于边缘的预测模式来预测所述块的值。也就是说,视频解码器30可接着选择映射到所确定的帧内预测模式(也就是说,具有密切接近所述边缘的角度的角度的帧内预测模式)的变换(362)。视频解码器30可接着使用所选的变换来变换所述块(364)。
另一方面,如果针对所述块未用信号通知DC预测模式(352的“否”分支),则视频解码器30可使用用信号通知的模式来预测所述块(353)。如果当用信号通知了DC预测模式时未确定边缘存在于所述块中(354的“否”分支),则视频解码器30可使用如用信号通知的DC预测模式来预测所述块(366)。视频解码器30还可选择映射到所述预测模式(例如,如用信号通知的DC或定向预测模式)的变换(368),或在一些实例中选择默认变换(例如DCT)。在此状况下,视频解码器30也可使用所选的变换来变换所述块(364)。
在变换所述块(在此实例中,其对应于逆变换所述块)之后,视频解码器30可在空间域中再生残余值的块。为解码所述块,视频解码器30可将残余值的块加到预测块(由步骤353、356或366产生)。为简短起见,图14中未展示将残余值加到预测值的步骤,但可在步骤364之后执行所述步骤。
以此方式,图14的方法为一种方法的实例,所述方法包括:接收指示用于视频数据块的帧内预测模式为DC帧内预测模式的信息;基于对用于视频数据块的DC帧内预测模式的指示来确定所述块中的边缘的角度;使用映射到定向帧内预测模式的定向逆变换来逆变换所述块,所述定向帧内预测模式具有接近所述边缘的角度的角度;及解码经逆变换的块。
如上文所指出,可由(例如)视频编码器20来执行一种类似的方法。此方法可包括:确定待帧内预测编码的块在所述块内含有边缘;基于使用边缘导向式帧内预测模式所计算出的预测值来计算所述块的残余块;使用映射到定向帧内预测模式的定向变换来变换所述残余块,所述定向帧内预测模式具有接近所述边缘的角度的角度;及输出表示经变换的残余块的信息及指示使用DC帧内预测模式来预测所述块的信息。
在一个或一个以上实例中,所描述的功能可用硬件、软件、固件或其任何组合来实施。如果用软件实施,则所述功能可作为一个或一个以上指令或代码而存储于计算机可读媒体上或经由计算机可读媒体来传输,且由基于硬件的处理单元来执行。计算机可读媒体可包括:计算机可读存储媒体,其对应于例如数据存储媒体的有形媒体;或通信媒体,其包括促进计算机程序从一处传送到另一处(例如,根据通信协议)的任何媒体。以此方式,计算机可读媒体通常可对应于:(1)非暂时性的有形计算机可读存储媒体;或(2)例如信号或载波的通信媒体。数据存储媒体可为可由一个或一个以上计算机或者一个或一个以上处理器存取以检索用于实施本发明中所描述的技术的指令、代码及/或数据结构的任何可用媒体。计算机程序产品可包括计算机可读媒体。
作为实例且非限制,这些计算机可读存储媒体可包含RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、闪存,或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。又,将任何连接恰当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤缆线、双绞线、数字用户线(DSL),或例如红外线、无线电及微波的无线技术而从网站、服务器或其它远程源传输指令,则同轴电缆、光纤缆线、双绞线、DSL或例如红外线、无线电及微波的无线技术包括于媒体的定义中。然而,应理解,计算机可读存储媒体及数据存储媒体不包括连接、载波、信号或其它暂时媒体,而是改为针对非暂时的有形存储媒体。如本文中所使用,磁盘及光盘包括压缩光盘(CD)、激光光盘、光盘、数字激光光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再生数据,而光盘通过激光以光学方式再生数据。以上各者的组合也应包括于计算机可读媒体的范畴内。
可由一个或一个以上处理器(例如,一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路)来执行指令。因此,如本文中所使用的术语“处理器”可指代上述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供于经配置以用于编码及解码的专用硬件模块及/或软件模块内,或并入于组合式编解码器中。又,所述技术可完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可实施于包括无线手持机、集成电路(IC)或IC组(例如,芯片组)的广泛多种装置或设备中。在本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但所述各种组件、模块或单元未必需要通过不同硬件单元来实现。相反,如上文所描述,各种单元可组合于编解码器硬件单元中,或由互操作性硬件单元的集合(包括如上文所描述的一个或一个以上处理器)结合合适的软件及/或固件来提供。