CN113950830A - 使用次级变换的图像编码/解码方法和装置以及存储比特流的记录介质 - Google Patents

使用次级变换的图像编码/解码方法和装置以及存储比特流的记录介质 Download PDF

Info

Publication number
CN113950830A
CN113950830A CN202080040520.9A CN202080040520A CN113950830A CN 113950830 A CN113950830 A CN 113950830A CN 202080040520 A CN202080040520 A CN 202080040520A CN 113950830 A CN113950830 A CN 113950830A
Authority
CN
China
Prior art keywords
transform
current block
block
skip mode
inverse
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080040520.9A
Other languages
English (en)
Inventor
林成昶
姜晶媛
李河贤
李镇浩
金晖容
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Electronics and Telecommunications Research Institute ETRI
Original Assignee
Electronics and Telecommunications Research Institute ETRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Electronics and Telecommunications Research Institute ETRI filed Critical Electronics and Telecommunications Research Institute ETRI
Publication of CN113950830A publication Critical patent/CN113950830A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开提供了一种视频解码方法,包括:获得指示变换跳过模式是否可被应用于当前块的变换跳过模式标志的步骤;当根据所述变换跳过模式标志可对所述当前块应用变换跳过模式时,确定可不对所述当前块应用次级变换/逆变换的步骤;以及当根据所述变换跳过模式标志可不对所述当前块应用变换跳过模式时,获得适用于所述当前块的次级变换/逆变换的变换矩阵索引的步骤,以及根据所述变换矩阵索引确定是否可对所述当前块应用次级变换/逆变换的步骤。

Description

使用次级变换的图像编码/解码方法和装置以及存储比特流 的记录介质
技术领域
本发明涉及一种图像编码/解码方法和设备以及用于存储比特流的记录介质。更具体地,本发明涉及一种基于变换对视频进行编码/解码的方法和设备。
背景技术
近来,在各种应用中,对高分辨率和高质量图像(诸如高清晰度(HD)或超高清晰度(UHD)图像)的需求已经增加。随着图像的分辨率和质量的提高,数据量相应地增加。当通过现有传输介质(诸如有线或无线宽带信道)传输图像数据时或者当存储图像数据时,这是传输成本和存储成本增加的原因之一。为了解决高分辨率和高质量图像数据的这些问题,需要高效的图像编码/解码技术。
存在各种视频压缩技术,诸如,从先前画面或后续画面内的像素的值预测当前画面内的像素的值的帧间预测技术、从当前画面的一区域内的像素的值预测当前画面的另一区域内的像素的值的帧内预测技术、压缩残差信号的能量的变换和量化技术以及为频繁出现的像素值分配较短码而为较少出现的像素值分配较长码的熵编码技术。
发明内容
技术问题
为了提高图像的客观质量和主观质量,本发明提供了一种基于一维变换类型、二维变换组合以及变换是否被使用(仍然基于帧内预测模式、预测模式、颜色分量、尺寸和形状)中的至少一个来确定减少的次级变换/逆变换矩阵集、减少的次级变换/逆变换矩阵以及是否执行减少的次级变换/逆变换中的至少一个的视频编码/解码方法和设备。
技术方案
本公开提供了一种视频解码方法,包括:获得指示变换跳过模式是否被应用于当前块的变换跳过模式标志;当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,获得所述当前块的次级变换/逆变换的变换矩阵索引,并基于所述变换矩阵索引确定是否对所述当前块应用次级变换/逆变换。
根据实施例,所述的视频解码方法还可包括:当对所述当前块应用次级变换/逆变换时,根据所述变换矩阵索引确定所述当前块的次级变换矩阵;以及根据所述次级变换矩阵,对所述当前块应用次级变换/逆变换。
根据实施例,确定所述当前块的所述次级变换矩阵的步骤可包括:根据所述变换矩阵索引、所述当前块的变换矩阵集索引和所述当前块的尺寸中的至少一个来确定所述当前块的所述次级变换矩阵。
根据实施例,所述视频解码方法可包括:获得关于帧内残差DPCM方法是否被用于所述当前块的信息;以及当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法被用于所述当前块时,确定对所述当前块应用变换跳过模式。获得所述变换跳过模式标志的步骤可包括:当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法未被用于所述当前块时,获得所述变换跳过模式标志。
根据实施例,当根据不是基于矩阵的帧内预测模式的帧内预测模式对所述当前块进行预测时,获得所述当前块的次级变换/逆变换的所述变换矩阵索引。
根据实施例,获得所述变换跳过模式标志的步骤可包括:获得亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是单树类型,所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是双树亮度类型并且所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是双树色度类型,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,基于所述变换矩阵索引确定是否对所述当前块应用次级变换/逆变换的步骤可包括:基于所述变换矩阵索引、所述当前块的尺寸和所述变换跳过模式标志中的至少一个来确定是否对所述当前块应用次级变换/逆变换。
本公开提供了一种视频编码方法,所述方法包括:对指示变换跳过模式是否被应用于当前块的变换跳过模式标志进行熵编码;当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,确定是否对所述当前块应用次级变换/逆变换,并根据是否对所述当前块应用次级变换/逆变换对所述当前块的次级变换/逆变换的变换矩阵索引进行熵编码。
根据实施例,对所述变换矩阵索引进行熵编码的步骤可包括:当对所述当前块应用次级变换/逆变换时,确定所述当前块的次级变换矩阵;以及根据是否对所述当前块应用次级变换/逆变换,对所述变换矩阵索引进行熵编码。
根据实施例,确定所述当前块的所述次级变换矩阵的步骤可包括:根据所述变换矩阵索引、所述当前块的变换矩阵集索引和所述当前块的尺寸中的至少一个来确定所述当前块的所述次级变换矩阵。
根据实施例,所述视频编码方法可包括:对关于帧内残差DPCM方法是否被用于所述当前块的信息进行熵编码;以及当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法被用于所述当前块时,确定对所述当前块应用变换跳过模式。对所述变换跳过模式标志进行熵编码的步骤可包括:当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法未被用于所述当前块时,对所述变换跳过模式标志进行熵编码。
根据实施例,对所述当前块的次级变换/逆变换的所述变换矩阵索引进行熵编码的步骤可包括:当根据不是基于矩阵的帧内预测模式的帧内预测模式对所述当前块进行预测时,对所述变换矩阵索引进行熵编码。
根据实施例,对所述变换跳过模式标志进行熵编码的步骤可包括:对亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志进行熵编码。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是单树类型,所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是双树亮度类型并且所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,确定不对所述当前块应用次级变换/逆变换的步骤可包括:当所述当前块的树结构是双树色度类型,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
根据实施例,基于所述变换矩阵索引、所述当前块的尺寸和所述变换跳过模式标志中的至少一个来确定是否对所述当前块应用次级变换/逆变换。
本公开提供了一种用于存储比特流的计算机可读记录介质,所述比特流通过视频编码方法对视频进行编码而被产生。这里,所述视频编码方法包括:对指示变换跳过模式是否被应用于当前块的变换跳过模式标志进行熵编码;当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,确定是否对所述当前块应用次级变换/逆变换,并根据是否对所述当前块应用次级变换/逆变换对所述当前块的次级变换/逆变换的变换矩阵索引进行熵编码。
有益效果
本发明可通过提供一种基于一维变换类型、二维变换组合以及变换是否被使用(仍然基于帧内预测模式、预测模式、颜色分量、尺寸和形状)中的至少一个来确定减少的次级变换/逆变换矩阵集、减少的次级变换/逆变换矩阵以及是否执行减少的次级变换/逆变换中的至少一个的图像编码/解码方法和设备,来提高图像的客观质量和主观质量。
附图说明
图1是示出根据应用了本发明的实施例的编码设备的配置的框图。
图2是示出根据应用了本发明的实施例的解码设备的配置的框图。
图3是示意性地示出当对图像进行编码和解码时图像的分区结构的示图。
图4是示出帧内预测处理的示图。
图5是示出画面间预测处理的实施例的示图。
图6是示出变换和量化处理的示图。
图7是示出能够用于帧内预测的参考样点的示图。
图8a是示出根据本发明的在DCT-2的频域中的基本矢量的示图。
图8b是示出根据本发明的在DCT-7的每个频域中的基本矢量的示图。
图9是示出根据按照帧间模式预测的8×8编码单元(CU)的2N×2N预测单元(PU)内的位置的平均残差值的分布的示图,其中,“Cactus”序列通过低延迟P简档环境下的测试被获得。
图10是示出按照帧间预测模式(帧间模式)预测的8×8编码单元(CU)的2N×2N预测单元(PU)内的残差信号的分布特征的三维图表。
图11是示出根据本发明的在编码单元(CU)的2N×2N预测单元(PU)模式下的残差信号的分布特征的示图。
图12是示出根据本发明的在2N×2N预测单元(PU)的重排之前和之后的残差信号的分布特征的示图。
图13是示出根据本发明的子块的4×4残差数据重布置的示例的示图。
图14a和图14b是示出根据预测单元(PU)模式和变换单元(TU)的重排方法的编码单元(CU)的变换单元(TU)分区结构的实施例的示图。
图15是示出根据2N×2N预测单元(PU)的残差信号的分布执行DCT-2变换和SDST变换的结果的示图。
图16是示出根据本发明的SDST处理的示图。
图17是示出根据本发明的针对帧间预测的编码单元(CU)的每个预测单元(PU)分区模式的变换单元(TU)的分区和残差绝对值的大小的分布特征的示图。
图18是示出根据本发明的实施例的在预测单元(PU)内的深度0的变换单元(TU)的残差信号扫描顺序和重布置顺序的示图。
图19是示出根据本发明的通过率失真优化(RDO)的DCT-2或SDST选择编码处理的流程图。
图20是示出根据本发明的选择用于解码的DCT-2或SDST的处理的流程图。
图21是示出根据本发明的使用SDST的解码处理的流程图。
图22和图23分别示出根据本发明的残差信号重布置(残差重布置)在编码器和解码器中执行的位置。
图24是示出根据本发明的使用SDST的解码方法的实施例的示图。
图25是示出根据本发明的使用SDST的编码方法的实施例的示图。
图26是示出在翻转之后执行变换的方法中的编码处理的实施例的示图。
图27是示出在逆变换之后执行翻转的方法中的解码处理的实施例的示图。
图28是示出在变换之后执行翻转的方法中的编码处理的实施例的示图。
图29是示出在翻转之后执行逆变换的方法中的解码处理的实施例的示图。
图30是示出在量化之后执行翻转的方法中的编码处理的实施例的示图。
图31是示出在翻转之后执行反量化的方法中的解码处理的实施例的示图。
图32是示出对残差块执行翻转的示图。
图33是示出用于将对8×8的尺寸的残差块执行翻转实现为硬件的实施例的示图。
图34是示出对残差块执行翻转和变换的示图。
图35至图37是示出根据本发明的第一子块分区模式的实施例的示图。
图38是示出根据本发明的第二子块分区模式的实施例的示图。
图39是示出对角线扫描的实施例的示图。
图40是示出水平扫描的实施例的示图。
图41是示出垂直扫描的实施例的示图。
图42是示出基于块的对角线扫描的实施例的示图。
图43是示出基于块的水平扫描的实施例的示图。
图44是示出基于块的垂直扫描的实施例的示图。
图45是示出基于块的水平扫描的实施例的示图。
图46是示出基于块的垂直扫描的实施例的示图。
图47是示出基于块的形状的扫描的各种实施例的示图。
图48是示出帧内预测模式的示图。
图49至图53是示出根据本发明的实施例的使用变换的编码处理或解码处理的示例的示图。
图54示出在编码器/解码器中执行次级变换和/或次级逆变换的实施例。
图55示出次级变换矩阵的实施例。
图56示出减少的次级变换/逆变换处理。
图57至图68示出变换矩阵根据块尺寸、变换矩阵集索引和变换矩阵索引而被推导的多个实施例。
图69至图72示出根据本发明的实施例的被应用于使用变换的编码/解码方法和设备以及存储比特流的记录介质的比特流的语法。
图73至图90提供用于用信号发送变换矩阵索引的状况的各种实施例。
图91示出根据本发明的实施例的被应用于使用变换的编码/解码方法和设备以及存储比特流的记录介质的比特流的语法。
图92示出根据本发明的实施例的视频解码方法。
图93示出根据本发明的实施例的视频编码方法。
具体实施方式
最优模式
本发明提供了一种视频解码方法,包括:获得指示是否对当前块应用变换跳过模式的变换跳过模式标志;当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,获得所述当前块的次级变换/逆变换的变换矩阵索引,并基于所述变换矩阵索引确定是否对所述当前块应用次级变换/逆变换。
发明模式
可以对本发明进行各种修改,并且存在本发明的各种实施例,其中,现在将参照附图来提供本发明的各种实施例的示例并对其进行详细描述。然而,本发明不限于此,尽管示例性实施例可被解释为包括本发明的技术构思和技术范围内的所有修改、等同或替代。在各个方面,相似的附图标号指代相同或相似的功能。在附图中,为了清楚,可夸大元件的形状和尺寸。在本发明的以下详细描述中,参照了附图,其中,附图以图示的方式示出了可实践本发明的特定实施例。足够详细地描述了这些实施例以使本领域技术人员能够实施本公开。应当理解的是,本公开的各种实施例尽管不同,但不一定是互斥的。例如,在不脱离本公开的精神和范围的情况下,结合一个实施例在此描述的特定特征、结构和特征可在其它实施例中被实现。另外,应当理解,在不脱离本公开的精神和范围的情况下,可修改每个公开的实施例内的各个元件的位置或布置。因此,以下详细描述不应被视为具有限制意义,并且本公开的范围仅由所附权利要求(在合适的解释的情况下,还连同权利要求所要求保护的等同物的全部范围)来限定。
说明书中使用的术语“第一”、“第二”等可用于描述各种组件,但是组件不应解释为限于这些术语。这些术语仅用于区分一个组件与其它组件。例如,在不脱离本发明的范围的情况下,“第一”组件可被命名为“第二”组件,并且“第二”组件也可被相似地命名为“第一”组件。术语“和/或”包括多个项的组合或多个项中的任意一项。
将理解的是,在本说明书中,当元件被简单称为“连接到”或“耦接到”另一元件而不是“直接连接到”或“直接耦接到”另一元件时,元件可“直接连接到”另一元件或“直接耦接到”另一元件,或者在元件与另一元件之间介入有其它元件的情况下连接到或耦接到另一元件。相反,应当理解,当元件被称为“直接耦接”或“直接连接”到另一元件时,不存在中间元件。
另外,本发明的实施例中所示的构成部分被独立地示出,以表示彼此不同的特征功能。因此,这并不表示每个构成部分都以单独的硬件或软件的构成单元构成。换言之,为了方便,每个构成部分包括列举的构成部分中的每一个。因此,每个构成部分的至少两个构成部分可被组合以形成一个构成部分,或者一个构成部分可被划分为多个构成部分以执行每种功能。如果没有脱离本发明的实质,则将每个构成部分被组合的实施例和一个构成部分被划分的实施例也包括在本发明的范围内。
本说明书中使用的术语仅用于描述特定实施例,而不旨在限制本发明。除非在上下文中具有明显不同的含义,否则以单数形式使用的表述包括复数形式的表述。在本说明书中,将理解,诸如“包括”、“具有”等的术语旨在指示存在说明书中公开的特征、编号、步骤、动作、元件、部件或其组合,而并不旨在排除可存在或可添加一个或更多个其它特征、编号、步骤、动作、元件、部件或其组合的可能性。换言之,当特定元素被称为“被包括”时,并不排除除了相应元素之外的元素,而是可在本发明的实施例或本发明的范围中包括附加的元素。
另外,某些构成部分可能不是执行本发明的基本功能的必不可少的构成部分,而是仅提高其性能的选择性构成部分。可通过仅包括用于实现本发明的本质的必不可少的构成部分而不包括用于提高性能的构成部分来实现本发明。仅包括必不可少的构成部分而不包括仅用于提高性能的选择性构成部分的结构也包括在本发明的范围内。
在下文中,将参照附图详细描述本发明的实施例。在描述本发明的示例性实施例时,将不详细描述公知的功能或构造,因为它们可能不必要地模糊对本发明的理解。附图中相同的构成元件由相同的附图标号表示,并且对相同元件的重复描述将被省略。
在下文中,图像可指构成视频的画面,或者可指视频本身。例如,“对图像进行编码或解码或者进行编码和解码两者”可指“对运动画面进行编码或解码或者进行编码和解码两者”,并且可指“对运动画面的图像中的一个图像进行编码或解码或者进行编码和解码两者”。
在下文中,术语“运动画面”和“视频”可用作相同的含义并且可彼此替换。
在下文中,目标图像可以是作为编码目标的编码目标图像和/或作为解码目标的解码目标图像。另外,目标图像可以是输入到编码设备的输入图像、以及输入到解码设备的输入图像。这里,目标图像可与当前图像具有相同的含义。
在下文中,术语“图像”、“画面”、“帧”和“屏幕”可被用作相同的含义并且可彼此替换。
在下文中,目标块可以是作为编码目标的编码目标块和/或作为解码目标的解码目标块。另外,目标块可以是作为当前编码和/或解码的目标的当前块。例如,术语“目标块”和“当前块”可被用作相同的含义并且可彼此替换。
在下文中,术语“块”和“单元”可被用作相同的含义并且可彼此替换。或者“块”可表示特定单元。
在下文中,术语“区域”和“片段”可彼此替换。
在下文中,特定信号可以是表示特定块的信号。例如,原始信号可以是表示目标块的信号。预测信号可以是表示预测块的信号。残差信号可以是表示残差块的信号。
在实施例中,特定信息、数据、标志、索引、元素和属性等中的每个可具有值。信息、数据、标志、索引、元素和属性的值等于“0”可表示逻辑假或第一预定义值。换言之,值“0”、假、逻辑假和第一预定义值可彼此替换。信息、数据、标志、索引、元素和属性的值等于“1”可表示逻辑真或第二预定义值。换言之,值“1”、真、逻辑真和第二预定义值可彼此替换。
当变量i或j用于表示列、行或索引时,i的值可以是等于或大于0的整数、或者是等于或大于1的整数。即,列、行、索引等可从0开始计数,或者可从1开始计数。
术语描述
编码器:表示执行编码的设备。即,表示编码设备。
解码器:表示执行解码的设备。即,表示解码设备。
块:是M×N的样点阵列。这里,M和N可表示正整数,并且块可表示二维形式的样点阵列。块可指单元。当前块可表示在编码时成为目标的编码目标块,或者在解码时成为目标的解码目标块。另外,当前块可以是编码块、预测块、残差块和变换块中的至少一个。
样点:是构成块的基本单元。根据比特深度(Bd),样点可被表示为从0到2Bd-1的值。在本发明中,样点可被用作像素的含义。即,样点、pel、像素可具有彼此相同的含义。
单元:可指编码和解码单元。当对图像进行编码和解码时,单元可以是通过对单个图像进行分区而产生的区域。另外,当在编码或解码期间将单个图像分区为子划分单元时,单元可表示子划分单元。即,图像可被分区为多个单元。当对图像进行编码和解码时,可以执行针对每个单元的预定处理。单个单元可被分区为尺寸小于该单元的尺寸的子单元。依据功能,单元可表示块、宏块、编码树单元、编码树块、编码单元、编码块、预测单元、预测块、残差单元、残差块、变换单元、变换块等。另外,为了将单元与块区分开,单元可包括亮度分量块、与亮度分量块相关联的色度分量块、以及每个颜色分量块的语法元素。单元可具有各种尺寸和形状,具体地,单元的形状可以是二维几何图形,诸如正方形、矩形、梯形、三角形、五边形等。另外,单元信息可包括指示编码单元、预测单元、变换单元等的单元类型以及单元尺寸、单元深度、单元的编码和解码的顺序等中的至少一个。
编码树单元:被配置有亮度分量Y的单个编码树块以及与色度分量Cb和Cr相关的两个编码树块。另外,编码树单元可表示包括块和每个块的语法元素。可通过使用四叉树分区方法、二叉树分区方法和三叉树分区方法中的至少一个对每个编码树单元进行分区,以配置诸如编码单元、预测单元、变换单元等的下级单元。编码树单元可被用作用于指定在对作为输入图像的图像进行编码/解码时成为处理单元的样点块的术语。这里,四叉树可表示四叉分树。
当编码块的尺寸在预定范围内时,可以仅使用四叉树分区进行划分。这里,预定范围可被定义为能够仅使用四叉树分区进行划分的编码块的最大尺寸和最小尺寸中的至少一个。可通过比特流用信号发送指示允许四叉树分区的编码块的最大/最小尺寸的信息,并且可在序列、画面参数、并行块组或条带(片段)中的至少一个单元中用信号发送所述信息。可选地,编码块的最大/最小尺寸可以是编码器/解码器中预定的固定尺寸。例如,当编码块的尺寸与256×256至64×64相应时,仅使用四叉树分区来进行划分是可能的。可选地,当编码块的尺寸大于最大转换块的尺寸时,仅使用四叉树分区来进行划分是可能的。这里,将被划分的块可以是编码块和变换块中的至少一个。在这种情况下,指示编码块的划分的信息(例如,split_flag)可以是指示是否执行四叉树分区的标志。当编码块的尺寸落在预定范围内时,仅使用二叉树或三叉树分区来进行划分是可能的。在这种情况下,四叉树分区的以上描述可以以相同方式被应用于二叉树分区或三叉树分区。
编码树块:可用作用于指定Y编码树块、Cb编码树块和Cr编码树块中的任意一个的术语。
邻近块:可表示与当前块相邻的块。与当前块相邻的块可表示与当前块的边界接触的块、或者位于距当前块预定距离内的块。邻近块可表示与当前块的顶点相邻的块。这里,与当前块的顶点相邻的块可表示与水平相邻于当前块的邻近块垂直相邻的块、或者与垂直相邻于当前块的邻近块水平相邻的块。
重建邻近块:可表示与当前块相邻并且已经在空间/时间上被编码或解码的邻近块。这里,重建邻近块可表示重建邻近单元。重建空间邻近块可以是在当前画面内并且已经通过编码或解码或者编码和解码两者而被重建的块。重建时间邻近块是在参考图像内的与当前画面的当前块相应的位置处的块或所述块的邻近块。
单元深度:可表示单元的分区程度。在树结构中,最高节点(根节点)可与未被分区的第一单元相应。另外,最高节点可具有最小深度值。在这种情况下,最高节点的深度可以为等级0。深度为等级1的节点可表示通过对第一单元进行一次分区而产生的单元。深度为等级2的节点可表示通过对第一单元进行两次分区而产生的单元。深度为等级n的节点可表示通过对第一单元进行n次分区而产生的单元。叶节点可以是最低节点并且是不能被进一步分区的节点。叶节点的深度可以是最大等级。例如,最大等级的预定义值可以是3。根节点的深度可以是最低的,并且叶节点的深度可以是最深的。另外,当单元被表示为树结构时,单元所存在于的等级可表示单元深度。
比特流:可表示包括编码图像信息的比特流。
参数集:与比特流内的配置之中的头信息相应。视频参数集、序列参数集、画面参数集和自适应参数集中的至少一个可被包括在参数集中。此外,参数集可包括条带(slice)头、并行块(tile)组头和并行块头信息。术语“并行块组”表示一组并行块并且与条带具有相同的含义。
自适应参数集可表示可通过在不同画面、子画面、条带、并行块组、并行块或分块中被参考而被共享的参数集。另外,可通过参考用于画面内的子画面、条带、并行块组、并行块或分块的不同自适应参数集来使用自适应参数集中的信息。
另外,关于自适应参数集,可以通过使用用于画面内的子画面、条带、并行块组、并行块或分块的不同自适应参数集的标识符来参考不同的自适应参数集。
另外,关于自适应参数集,可以通过使用用于子画面内的条带、并行块组、并行块或分块的不同自适应参数集的标识符来参考不同的自适应参数集。
另外,关于自适应参数集,可以通过使用用于条带内的并行块或分块的不同自适应参数集的标识符来参考不同的自适应参数集。
另外,关于自适应参数集,可以通过使用用于并行块内的分块的不同自适应参数集的标识符来参考不同的自适应参数集。
关于自适应参数集标识符的信息可被包括在子画面的参数集或头中,并且与自适应参数集标识符对应的自适应参数集可被用于子画面。
关于自适应参数集标识符的信息可被包括在并行块的参数集或头中,并且与自适应参数集标识符对应的自适应参数集可被用于并行块。
关于自适应参数集标识符的信息可被包括在分块的头中,并且与自适应参数集标识符对应的自适应参数集可被用于分块。
画面可被分区为一个或更多个并行块行和一个或更多个并行块列。
子画面可被分区为画面内的一个或更多个并行块行和一个或更多个并行块列。子画面可以是画面内具有矩形/正方形形式的区域,并且可包括一个或更多个CTU。另外,至少一个或更多个并行块/分块/条带可被包括在一个子画面内。
并行块可以是画面内具有矩形/正方形形式的区域,并且可包括一个或更多个CTU。另外,并行块可以被分区为一个或更多个分块。
分块可以表示并行块内的一个或更多个CTU行。并行块可以被分区为一个或更多个分块,并且每个分块可以具有至少一个或更多个CTU行。未被分区为两个或更多个的并行块可以表示分块。
条带可包括画面内的一个或更多个并行块,并且可包括并行块内的一个或更多个分块。
解析:可表示通过执行熵解码来确定语法元素的值,或者可表示熵解码本身。
符号:可表示编码/解码目标单元的语法元素、编码参数和变换系数值中的至少一个。此外,符号可表示熵编码目标或熵解码结果。
预测模式:可以是指示利用帧内预测而被编码/解码的模式或利用帧间预测而被编码/解码的模式的信息。
预测单元:可表示当执行预测(诸如帧间预测、帧内预测、帧间补偿、帧内补偿和运动补偿)时的基本单元。单个预测单元可被分区为具有更小尺寸的多个分区,或者可被分区为多个下级预测单元。多个分区可以是在执行预测或补偿时的基本单元。通过划分预测单元而产生的分区也可以是预测单元。
预测单元分区:可表示通过对预测单元进行分区而获得的形状。
参考画面列表可指包括用于帧间预测或运动补偿的一个或更多个参考画面的列表。存在若干类型的可用参考画面列表,包括LC(列表组合)、L0(列表0)、L1(列表1)、L2(列表2)、L3(列表3)。
帧间预测指示符可以指当前块的帧间预测的方向(单向预测、双向预测等)。可选地,帧间预测指示符可指用于产生当前块的预测块的参考画面的数量。可选地,帧间预测指示符可指在对当前块执行帧间预测或运动补偿时使用的预测块的数量。
预测列表利用标志指示是否使用特定参考画面列表中的至少一个参考画面来产生预测块。可使用预测列表利用标志来推导帧间预测指示符,并且相反地,可使用帧间预测指示符来推导预测列表利用标志。例如,当预测列表利用标志具有第一值零(0)时,它表示参考画面列表中的参考画面不被用于产生预测块。另一方面,当预测列表利用标志具有第二值一(1)时,它表示参考画面列表被用于产生预测块。
参考画面索引可指的是指示参考画面列表中的特定参考画面的索引。
参考画面可表示由特定块参考以用于特定块的帧间预测或运动补偿的目的的参考画面。可选地,参考画面可以是包括由当前块参考以用于帧间预测或运动补偿的参考块的画面。在下文中,术语“参考画面”和“参考图像”具有相同的含义并且可以互换。
运动矢量可以是用于帧间预测或运动补偿的二维矢量。运动矢量可表示编码/解码目标块与参考块之间的偏移。例如,(mvX,mvY)可表示运动矢量。这里,mvX可以表示水平分量,并且mvY可以表示垂直分量。
搜索范围可以是在帧间预测期间被搜索以检索运动矢量的二维区域。例如,搜索范围的尺寸可以是M×N。这里,M和N都是整数。
运动矢量候选可以指在对运动矢量进行预测时的预测候选块或预测候选块的运动矢量。另外,运动矢量候选可以被包括在运动矢量候选列表中。
运动矢量候选列表可表示由一个或更多个运动矢量候选组成的列表。
运动矢量候选索引可表示指示运动矢量候选列表中的运动矢量候选的指示符。可选地,它可以是运动矢量预测因子的索引。
运动信息可表示包括运动矢量、参考画面索引、帧间预测指示符、预测列表利用标志、参考画面列表信息、参考画面、运动矢量候选、运动矢量候选索引、合并候选和合并索引中的至少一项的信息。
合并候选列表可表示由一个或更多个合并候选组成的列表。
合并候选可表示空间合并候选、时间合并候选、组合合并候选、组合双预测合并候选或零合并候选。合并候选可以包括诸如帧间预测指示符、每个列表的参考画面索引、运动矢量、预测列表利用标志和帧间预测指示符的运动信息。
合并索引可表示指示合并候选列表中的合并候选的指示符。可选地,合并索引可指示在空间上/时间上与当前块相邻的重建块中的块,其中,已从该块推导出合并候选。可选地,合并索引可指示合并候选的至少一条运动信息。
变换单元:可表示在对残差信号执行编码/解码(诸如变换、逆变换、量化、反量化、变换系数编码/解码)时的基本单元。单个变换单元可被分区为具有更小尺寸的多个下级变换单元。这里,变换/逆变换可包括初级变换/初级逆变换和次级变换/次级逆变换中的至少一个。
缩放:可表示将量化的等级乘以因子的处理。可通过对量化的等级进行缩放来产生变换系数。缩放也可被称为反量化。
量化参数:可表示当在量化期间使用变换系数来产生量化的等级时使用的值。量化参数还可表示当在反量化期间通过对量化的等级进行缩放来产生变换系数时使用的值。量化参数可以是被映射在量化步长上的值。
增量量化参数:可表示预测的量化参数与编码/解码目标单元的量化参数之间的差值。
扫描:可表示对单元、块或矩阵内的系数进行排序的方法。例如,将系数的二维矩阵改成为一维矩阵可被称为扫描,将系数的一维矩阵改成为二维矩阵可被称为扫描或逆扫描。
变换系数:可表示在编码器中执行变换之后产生的系数值。变换系数可表示在解码器中执行熵解码和反量化中的至少一个之后产生的系数值。通过对变换系数或残差信号进行量化而获得的量化的等级或者量化的变换系数等级也可落入变换系数的含义内。
量化的等级:可表示在编码器中通过对变换系数或残差信号进行量化而产生的值。可选地,量化的等级可表示作为在解码器中经历反量化的反量化目标的值。相似地,作为变换和量化的结果的量化的变换系数等级也可落入量化的等级的含义内。
非零变换系数:可表示具有除零之外的值的变换系数、或者具有除零之外的值的变换系数等级或量化的等级。
量化矩阵:可表示在为了提高主观图像质量或客观图像质量而执行的量化处理或反量化处理中使用的矩阵。量化矩阵也可被称为缩放列表。
量化矩阵系数:可表示量化矩阵内的每个元素。量化矩阵系数也可被称为矩阵系数。
默认矩阵:可表示在编码器或解码器中预先定义的预定量化矩阵。
非默认矩阵:可表示在编码器或解码器中未被预先定义而是由用户用信号发送的量化矩阵。
统计值:针对具有可计算的特定值的变量、编码参数、常量值等之中的至少一个的统计值可以是相应特定值的平均值、求和值、加权平均值、加权和值、最小值、最大值、最频繁出现的值、中值、插值之中的一个或更多个。
图1是示出根据应用了本发明的实施例的编码设备的配置的框图。
编码设备100可以是编码器、视频编码设备或图像编码设备。视频可包括至少一个图像。编码设备100可顺序地对至少一个图像进行编码。
参照图1,编码设备100可包括运动预测单元111、运动补偿单元112、帧内预测单元120、切换器115、减法器125、变换单元130、量化单元140、熵编码单元150、反量化单元160、逆变换单元170、加法器175、滤波器单元180和参考画面缓冲器190。
编码设备100可通过使用帧内模式或帧间模式或者帧内模式和帧间模式两者来执行输入图像的编码。此外,编码设备100可通过对输入图像进行编码来产生包括编码信息的比特流,并输出产生的比特流。产生的比特流可被存储在计算机可读记录介质中,或者可通过有线/无线传输介质被流传输。当帧内模式被用作预测模式时,切换器115可切换到帧内。可选地,当帧间模式被用作预测模式时,切换器115可切换到帧间模式。这里,帧内模式可表示帧内预测模式,帧间模式可表示帧间预测模式。编码设备100可产生针对输入图像的输入块的预测块。此外,编码设备100可在产生预测块之后使用输入块和预测块的残差对残差块进行编码。输入图像可被称为作为当前编码目标的当前图像。输入块可被称为作为当前编码目标的当前块,或者被称为编码目标块。
当预测模式是帧内模式时,帧内预测单元120可使用已被编码/解码并与当前块相邻的块的样点作为参考样点。帧内预测单元120可通过使用参考样点来对当前块执行空间预测,或者通过执行空间预测来产生输入块的预测样点。这里,帧内预测可表示帧内部的预测。
当预测模式是帧间模式时,运动预测单元111可在执行运动预测时从参考图像检索与输入块最匹配的区域,并且通过使用检索到的区域来推导运动矢量。在这种情况下,搜索区域可被用作所述区域。参考图像可被存储在参考画面缓冲器190中。这里,当执行对参考图像的编码/解码时,参考图像可被存储在参考画面缓冲器190中。
运动补偿单元112可通过使用运动矢量对当前块执行运动补偿来产生预测块。这里,帧间预测可表示帧之间的预测或运动补偿。
当运动矢量的值不是整数时,运动预测单元111和运动补偿单元112可通过将插值滤波器应用于参考画面的部分区域来产生预测块。为了对编码单元执行画面间预测或运动补偿,可确定跳过模式、合并模式、高级运动矢量预测(AMVP)模式和当前画面参考模式之中的哪个模式被用于对包括在相应编码单元中的预测单元的运动预测和运动补偿。然后,依据所确定的模式,可不同地执行画面间预测或运动补偿。
减法器125可通过使用输入块和预测块的差来产生残差块。残差块可被称为残差信号。残差信号可表示原始信号和预测信号之间的差。此外,残差信号可以是通过对原始信号与预测信号之间的差进行变换或量化或者变换和量化而产生的信号。残差块可以是块单元的残差信号。
变换单元130可通过对残差块执行变换来产生变换系数,并输出产生的变换系数。这里,变换系数可以是通过对残差块执行变换而产生的系数值。当变换跳过模式被应用时,变换单元130可跳过对残差块的变换。
可通过将量化应用于变换系数或应用于残差信号来产生量化的等级。在下文中,量化的等级在实施例中也可被称为变换系数。
量化单元140可通过根据参数对变换系数或残差信号进行量化来产生量化的等级,并输出产生的量化的等级。这里,量化单元140可通过使用量化矩阵对变换系数进行量化。
熵编码单元150可通过根据概率分布对由量化单元140计算出的值或者对在执行编码时计算出的编码参数值执行熵编码来产生比特流,并输出产生的比特流。熵编码单元150可对图像的样点信息和用于对图像进行解码的信息执行熵编码。例如,用于对图像进行解码的信息可包括语法元素。
当熵编码被应用时,符号被表示为使得较少数量的比特被分配给具有高产生可能性的符号,并且较多数量的比特被分配给具有低产生可能性的符号,因此,可减小用于将被编码的符号的比特流的大小。熵编码单元150可使用诸如指数哥伦布、上下文自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)等的用于熵编码的编码方法。例如,熵编码单元150可通过使用变长编码/码(VLC)表来执行熵编码。此外,熵编码单元150可推导目标符号的二值化方法和目标符号/二进制位的概率模型,并且通过使用推导的二值化方法和上下文模型来执行算术编码。
为了对变换系数等级(量化的等级)进行编码,熵编码单元150可通过使用变换系数扫描方法将二维块形式的系数改成为一维矢量形式。
编码参数可包括在编码器中被编码并且被用信号发送到解码器的诸如语法元素的信息(标志、索引等)以及在执行编码或解码时推导出的信息。编码参数可表示在对图像进行编码或解码时所需要的信息。例如,以下项中的至少一个值或组合形式可被包括在编码参数中:单元/块尺寸、单元/块深度、单元/块分区信息、单元/块形状、单元/块分区结构、是否进行四叉树形式的分区、是否进行二叉树形式的分区、二叉树形式的分区方向(水平方向或垂直方向)、二叉树形式的分区形式(对称分区或非对称分区)、当前编码单元是否通过三叉树分区被分区、三叉树分区的方向(水平方向或垂直方向)、三叉树分区的类型(对称类型或非对称类型)、当前编码单元是否通过多类型树分区被分区、多类型树分区的方向(水平方向或垂直方向)、多类型树分区的类型(对称类型或非对称类型)、多类型树分区的树(二叉树或三叉树)结构、预测模式(帧内预测或帧间预测)、亮度帧内预测模式/方向、色度帧内预测模式/方向、帧内分区信息、帧间分区信息、编码块分区标志、预测块分区标志、变换块分区标志、参考样点滤波方法、参考样点滤波器抽头、参考样点滤波器系数、预测块滤波方法、预测块滤波器抽头、预测块滤波器系数、预测块边界滤波方法、预测块边界滤波器抽头、预测块边界滤波器系数、帧内预测模式、帧间预测模式、运动信息、运动矢量、运动矢量差、参考画面索引、帧间预测角度、帧间预测指示符、预测列表利用标志、参考画面列表、参考画面、运动矢量预测因子索引、运动矢量预测因子候选、运动矢量候选列表、是否使用合并模式、合并索引、合并候选、合并候选列表、是否使用跳过模式、插值滤波器类型、插值滤波器抽头、插值滤波器系数、运动矢量大小、运动矢量的表示精度、变换类型、变换尺寸、初级(第一)变换是否被使用的信息、次级变换是否被使用的信息、初级变换索引、次级变换索引、残差信号是否存在的信息、编码块样式、编码块标志(CBF)、量化参数、量化参数残差、量化矩阵、是否应用帧内环内滤波器、帧内环内滤波器系数、帧内环内滤波器抽头、帧内环内滤波器形状/形式、是否应用去块滤波器、去块滤波器系数、去块滤波器抽头、去块滤波器强度、去块滤波器形状/形式、是否应用自适应样点偏移、自适应样点偏移值、自适应样点偏移类别、自适应样点偏移类型、是否应用自适应环内滤波器、自适应环内滤波器系数、自适应环内滤波器抽头、自适应环内滤波器形状/形式、二值化/逆二值化方法、上下文模型确定方法、上下文模型更新方法、是否执行常规模式、是否执行旁路模式、上下文二进制位、旁路二进制位、有效系数标志、最后有效系数标志、针对系数组的单元的编码标志、最后有效系数的位置、关于系数的值是否大于1的标志、关于系数的值是否大于2的标志、关于系数的值是否大于3的标志、关于其余系数值的信息、符号信息、重建亮度样点、重建色度样点、残差亮度样点、残差色度样点、亮度变换系数、色度变换系数、量化的亮度等级、量化的色度等级、变换系数等级扫描方法、在解码器侧的运动矢量搜索区域的尺寸、在解码器侧的运动矢量搜索区域的形状、在解码器侧的运动矢量搜索的次数、关于CTU尺寸的信息、关于最小块尺寸的信息、关于最大块尺寸的信息、关于最大块深度的信息、关于最小块深度的信息、图像显示/输出顺序、条带标识信息、条带类型、条带分区信息、并行块标识信息、并行块类型、并行块分区信息、并行块组标识信息、并行块组类型、并行块组分区信息、画面类型、输入样点的比特深度、重建样点的比特深度、残差样点的比特深度、变换系数的比特深度、量化的等级的比特深度、以及关于亮度信号的信息或关于色度信号的信息。
这里,用信号发送标志或索引可表示由编码器对相应标志或索引进行熵编码并将其包括在比特流中,并且可表示由解码器从比特流对相应标志或索引进行熵解码。
当编码设备100通过帧间预测执行编码时,编码的当前图像可被用作用于随后被处理的另一图像的参考图像。因此,编码设备100可对编码的当前图像进行重建或解码,或者将重建或解码的图像作为参考图像存储在参考画面缓冲器190中。
量化的等级可在反量化单元160中被反量化,或者可在逆变换单元170中被逆变换。可由加法器175将经过反量化或逆变换的系数或者经过反量化和逆变换两者的系数与预测块相加。通过将经过反量化或逆变换的系数或者经过反量化和逆变换两者的系数与预测块相加,可产生重建块。这里,经过反量化或逆变换的系数或经过反量化和逆变换两者的系数可表示执行了反量化和逆变换中的至少一个的系数,并且可表示重建残差块。
重建块可通过滤波器单元180。滤波器单元180可将去块滤波器、样点自适应偏移(SAO)和自适应环内滤波器(ALF)中的至少一个应用于重建样点、重建块或重建图像。滤波器单元180可被称为环内滤波器。
去块滤波器可去除在块之间的边界中产生的块失真。为了确定是否应用去块滤波器,可基于块中所包括的若干行或列中包括的样点来确定是否将去块滤波器应用于当前块。当将去块滤波器应用于块时,可根据所需的去块滤波强度来应用另一滤波器。
为了补偿编码误差,可通过使用样点自适应偏移将合适的偏移值与样点值相加。样点自适应偏移可以以样点为单位对经过去块的图像与原始图像的偏移进行校正。可使用考虑关于每个样点的边缘信息来应用偏移的方法,或者可使用以下方法:将图像的样点分区为预定数量的区域,确定偏移被应用的区域,并对确定的区域应用偏移。
自适应环内滤波器可基于经滤波的重建图像和原始图像的比较结果来执行滤波。可将包括在图像中的样点分区为预定组,可确定将被应用于每个组的滤波器,并且可对每个组执行差异化滤波。是否应用ALF的信息可通过编码单元(CU)被用信号发送,并且将被应用于每个块的ALF的形式和系数可变化。
已经通过滤波器单元180的重建块或重建图像可被存储在参考画面缓冲器190中。由滤波器单元180处理的重建块可以是参考图像的一部分。即,参考图像是由滤波器单元180处理的重建块组成的重建图像。存储的参考图像可稍后在帧间预测或运动补偿中被使用。
图2是示出根据实施例并且应用了本发明的解码设备的配置的框图。
解码设备200可以是解码器、视频解码设备或图像解码设备。
参照图2,解码设备200可包括熵解码单元210、反量化单元220、逆变换单元230、帧内预测单元240、运动补偿单元250、加法器255、滤波器单元260和参考画面缓冲器270。
解码设备200可接收从编码设备100输出的比特流。解码设备200可接收存储在计算机可读记录介质中的比特流,或者可接收通过有线/无线传输介质被流传输的比特流。解码设备200可通过使用帧内模式或帧间模式对比特流进行解码。此外,解码设备200可产生通过解码而产生的重建图像或解码图像,并输出重建图像或解码图像。
当在解码时使用的预测模式是帧内模式时,切换器可被切换到帧内。可选地,当在解码时使用的预测模式是帧间模式时,切换器可被切换到帧间模式。
解码设备200可通过对输入比特流进行解码来获得重建残差块,并产生预测块。当重建残差块和预测块被获得时,解码设备200可通过将重建残差块与预测块相加来产生成为解码目标的重建块。解码目标块可被称为当前块。
熵解码单元210可通过根据概率分布对比特流进行熵解码来产生符号。产生的符号可包括量化的等级形式的符号。这里,熵解码方法可以是上述熵编码方法的逆处理。
为了对变换系数等级(量化的等级)进行解码,熵解码单元210可通过使用变换系数扫描方法将单向矢量形式的系数改成为二维块形式。
可在反量化单元220中对量化的等级进行反量化,或者可在逆变换单元230中对量化的等级进行逆变换。量化的等级可以是进行反量化或逆变换或者进行反量化和逆变换两者的结果,并且可被产生为重建残差块。这里,反量化单元220可将量化矩阵应用于量化的等级。
当使用帧内模式时,帧内预测单元240可通过对当前块执行空间预测来产生预测块,其中,空间预测使用与解码目标块相邻并且已经被解码的块的样点值。
当使用帧间模式时,运动补偿单元250可通过对当前块执行运动补偿来产生预测块,其中,运动补偿使用运动矢量以及存储在参考画面缓冲器270中的参考图像。
加法器225可通过将重建残差块与预测块相加来产生重建块。滤波器单元260可将去块滤波器、样点自适应偏移和自适应环内滤波器中的至少一个应用于重建块或重建图像。滤波器单元260可输出重建图像。重建块或重建图像可被存储在参考画面缓冲器270中并且在执行帧间预测时被使用。由滤波器单元260处理的重建块可以是参考图像的一部分。即,参考图像是由滤波器单元260处理的重建块组成的重建图像。存储的参考图像可稍后在帧间预测或运动补偿中被使用。
图3是示意性地示出当对图像进行编码和解码时图像的分区结构的示图。图3示意性地示出将单个单元分区为多个下级单元的示例。
为了有效地对图像进行分区,当进行编码和解码时,可使用编码单元(CU)。编码单元可被用作当对图像进行编码/解码时的基本单元。此外,编码单元可被用作用于在对图像进行编码/解码时区分帧内预测模式与帧间预测模式的单元。编码单元可以是用于预测、变换、量化、逆变换、反量化、或对变换系数的编码/解码处理的基本单元。
参照图3,图像300按照最大编码单元(LCU)被顺序地分区,并且LCU单元被确定为分区结构。这里,LCU可以以与编码树单元(CTU)相同的含义被使用。单元分区可表示对与该单元相关联的块进行分区。在块分区信息中,可包括单元深度的信息。深度信息可表示单元被分区的次数或程度或者单元被分区的次数和程度两者。可基于树结构将单个单元分区为与深度信息分层地相关联的多个下级单元。换言之,单元和通过对该单元进行分区而产生的下级单元可分别与节点和该节点的子节点相应。分区出的下级单元中的每个可具有深度信息。深度信息可以是表示CU的尺寸的信息,并且可被存储在每个CU中。单元深度表示与对单元进行分区相关的次数和/或程度。因此,下级单元的分区信息可包括关于下级单元的尺寸的信息。
分区结构可表示LCU 310内的编码单元(CU)的分布。可根据是否将单个CU分区为多个(等于或大于2的包括2、4、8、16等的正整数)CU来确定这样的分布。通过分区产生的CU的水平尺寸和垂直尺寸可分别是分区之前的CU的水平尺寸和垂直尺寸的一半,或者可根据分区的次数而分别具有小于进行分区之前的水平尺寸和垂直尺寸的尺寸。CU可以被递归地分区为多个CU。通过递归分区,与分区之前的CU的高度和宽度之中的至少一个相比,分区之后的CU的高度和宽度之中的至少一个可减小。可递归地执行CU的分区,直到预定义的深度或预定义的尺寸为止。例如,LCU的深度可以是0,最小编码单元(SCU)的深度可以是预定义的最大深度。这里,如上所述,LCU可以是具有最大编码单元尺寸的编码单元,并且SCU可以是具有最小编码单元尺寸的编码单元。分区从LCU 310开始,当CU的水平尺寸或垂直尺寸或者水平尺寸和垂直尺寸两者通过分区而减小时,CU深度增加1。例如,对于每个深度,未被分区的CU的尺寸可以为2N×2N。此外,在被分区的CU的情况下,可将尺寸为2N×2N的CU分区为尺寸为N×N的四个CU。随着深度增加1,N的大小可减半。
另外,可通过使用CU的分区信息来表示CU是否被分区的信息。分区信息可以是1比特信息。除SCU之外的所有CU可包括分区信息。例如,当分区信息的值为第一值时,可不对CU进行分区,当分区信息的值为第二值时,可对CU进行分区。
参照图3,具有深度0的LCU可以是64×64的块。0可以是最小深度。具有深度3的SCU可以是8×8的块。3可以是最大深度。32×32的块和16×16的块的CU可分别被表示为深度1和深度2。
例如,当单个编码单元被分区为四个编码单元时,分区出的四个编码单元的水平尺寸和垂直尺寸可以是CU在被分区之前的水平尺寸和垂直尺寸的一半尺寸。在一个实施例中,当尺寸为32×32的编码单元被分区为四个编码单元时,分区出的四个编码单元中的每一个可具有16×16的尺寸。当单个编码单元被分区为四个编码单元时,可称编码单元可被分区为四叉树形式。
例如,当一个编码单元被分区为两个子编码单元时,该两个子编码单元中的每个子编码单元的水平尺寸或垂直尺寸(宽度或高度)可以是原始编码单元的水平尺寸或垂直尺寸的一半。例如,当具有32×32的尺寸的编码单元被垂直分区为两个子编码单元时,该两个子编码单元中的每一个可具有16×32的尺寸。例如,当具有8×32的尺寸的编码单元被水平分区为两个子编码单元时,该两个子编码单元中的每一个可具有8×16的尺寸。当一个编码单元被分区为两个子编码单元时,可称编码单元被二分区或者按照二叉树分区结构被分区。
例如,当一个编码单元被分区为三个子编码单元时,可以以1:2:1的比例对编码单元的水平尺寸或垂直尺寸进行分区,从而产生水平尺寸或垂直尺寸的比例为1:2:1的三个子编码单元。例如,当尺寸为16×32的编码单元被水平分区为三个子编码单元时,该三个子编码单元以从最上方子编码单元到最下方子编码单元的顺序可分别具有16×8、16×16和16×8的尺寸。例如,当尺寸为32×32的编码单元被垂直划分为三个子编码单元时,该三个子编码单元以从左侧子编码单元到右侧子编码单元的顺序可分别具有8×32、16×32和8×32的尺寸。当一个编码单元被分区为三个子编码单元时,可称编码单元被三分区或者根据三叉树分区结构被分区。
在图3中,编码树单元(CTU)320是四叉树分区结构、二叉树分区结构和三叉树分区结构全都被应用于其的CTU的示例。
如上所述,为了对CTU进行分区,可应用四叉树分区结构、二叉树分区结构和三叉树分区结构中的至少一个。可根据预定的优先级顺序将各种树分区结构顺序地应用于CTU。例如,可将四叉树分区结构优先应用于CTU。不能再使用四叉树分区结构进行分区的编码单元可与四叉树的叶节点相应。与四叉树的叶节点相应的编码单元可用作二叉树和/或三叉树分区结构的根节点。即,与四叉树的叶节点相应的编码单元可根据二叉树分区结构或三叉树分区结构被进一步分区,或者可不被进一步分区。因此,通过防止从与四叉树的叶节点相应的编码单元的二叉树分区或三叉树分区得到的编码单元经历进一步的四叉树分区,块分区操作和/或用信号发送分区信息的操作可被有效执行。
可使用四分区信息用信号发送与四叉树的节点相应的编码单元被分区的事实。具有第一值(例如,“1”)的四分区信息可指示当前编码单元按照四叉树分区结构被分区。具有第二值(例如,“0”)的四分区信息可指示当前编码单元未按照四叉树分区结构被分区。四分区信息可以是具有预定长度(例如,一个比特)的标志。
在二叉树分区与三叉树分区之间可能没有优先级。即,与四叉树的叶节点相应的编码单元可进一步经历二叉树分区和三叉树分区中的任意分区。另外,通过二叉树分区或三叉树分区产生的编码单元可经历进一步的二叉树分区或进一步的三叉树分区,或者可不被进一步分区。
在二叉树分区和三叉树分区之间不存在优先级的树结构被称为多类型树结构。与四叉树的叶节点相应的编码单元可用作多类型树的根节点。可使用多类型树分区指示信息、分区方向信息和分区树信息中的至少一个来用信号发送是否对与多类型树的节点相应的编码单元进行分区。为了对与多类型树的节点相应的编码单元进行分区,可顺序地用信号发送多类型树分区指示信息、分区方向信息和分区树信息。
具有第一值(例如,“1”)的多类型树分区指示信息可指示当前编码单元将经历多类型树分区。具有第二值(例如,“0”)的多类型树分区指示信息可指示当前编码单元将不经历多类型树分区。
当与多类型树的节点相应的编码单元按照多类型树分区结构被进一步分区时,所述编码单元可包括分区方向信息。分区方向信息可指示当前编码单元将在哪个方向上针对多类型树分区被分区。具有第一值(例如,“1”)的分区方向信息可指示当前编码单元将被垂直分区。具有第二值(例如,“0”)的分区方向信息可指示当前编码单元将被水平分区。
当与多类型树的节点相应的编码单元按照多类型树分区结构被进一步分区时,当前编码单元可包括分区树信息。分区树信息可指示将被用于对多类型树的节点进行分区的树分区结构。具有第一值(例如,“1”)的分区树信息可指示当前编码单元将按照二叉树分区结构被分区。具有第二值(例如,“0”)的分区树信息可指示当前编码单元将按照三叉树分区结构被分区。
分区指示信息、分区树信息和分区方向信息均可以是具有预定长度(例如,一个比特)的标志。
四叉树分区指示信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个可被熵编码/熵解码。为了对那些类型的信息进行熵编码/熵解码,可使用关于与当前编码单元相邻的邻近编码单元的信息。例如,当前编码单元的左侧邻近编码单元和/或上方邻近编码单元的分区类型(被分区或不被分区、分区树和/或分区方向)与当前编码单元的分区类型相似的可能性很高。因此,可从关于邻近编码单元的信息推导用于对关于当前编码单元的信息进行熵编码/熵解码的上下文信息。关于邻近编码单元的信息可包括四分区信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个。
作为另一示例,在二叉树分区和三叉树分区中,可优先执行二叉树分区。即,当前编码单元可首先经历二叉树分区,并且随后可将与二叉树的叶节点相应的编码单元设置为用于三叉树分区的根节点。在这种情况下,对于与三叉树的节点相应的编码单元,可既不执行四叉树分区也不执行二叉树分区。
不能按照四叉树分区结构、二叉树分区结构和/或三叉树分区结构被分区的编码单元成为用于编码、预测和/或变换的基本单元。即,所述编码单元不能被进一步分区以用于预测和/或变换。因此,在比特流中可能不存在用于将编码单元分区为预测单元和/或变换单元的分区结构信息和分区信息。
然而,当编码单元(即,用于分区的基本单元)的尺寸大于最大变换块的尺寸时,可递归地对编码单元进行分区,直到将编码单元的尺寸减小到等于或小于最大变换块的尺寸为止。例如,当编码单元的尺寸为64×64时并且当最大变换块的尺寸为32×32时,可将编码单元分区为用于变换的四个32×32的块。例如,当编码单元的尺寸为32×64并且最大变换块的尺寸为32×32时,可将编码单元分区为用于变换的两个32×32的块。在这种情况下,不单独用信号发送编码单元的用于变换的分区,并且可通过编码单元的水平尺寸或垂直尺寸与最大变换块的水平尺寸或垂直尺寸之间的比较来确定编码单元的用于变换的分区。例如,当编码单元的水平尺寸(宽度)大于最大变换块的水平尺寸(宽度)时,可将编码单元垂直地二等分。例如,当编码单元的垂直尺寸(高度)大于最大变换块的垂直尺寸(高度)时,可将编码单元水平地二等分。
编码单元的最大和/或最小尺寸的信息以及变换块的最大和/或最小尺寸的信息可以在编码单元的上级被用信号发送或确定。所述上级可以是例如序列级、画面级、条带级、并行块组级、并行块级等。例如,编码单元的最小尺寸可以被确定为4×4。例如,变换块的最大尺寸可以被确定为64×64。例如,变换块的最小尺寸可以被确定为4×4。
与四叉树的叶节点相应的编码单元的最小尺寸(四叉树最小尺寸)的信息和/或从多类型树的根节点到叶节点的最大深度(多类型树的最大树深度)的信息可在编码单元的上级被用信号发送或确定。例如,所述上级可以是序列级、画面级、条带级、并行块组级、并行块级等。四叉树的最小尺寸的信息和/或多类型树的最大深度的信息可针对画面内条带和画面间条带中的每一个被用信号发送或确定。
可在编码单元的上级用信号发送或确定CTU的尺寸与变换块的最大尺寸之间的差信息。例如,所述上级可以是序列级、画面级、条带级、并行块组级、并行块级等。可基于编码树单元的尺寸和所述差信息来确定与二叉树的各个节点相应的编码单元的最大尺寸(在下文中,称为二叉树的最大尺寸)的信息。与三叉树的各个节点相应的编码单元的最大尺寸(在下文中,称为三叉树的最大尺寸)可依据条带的类型而变化。例如,针对画面内条带,三叉树的最大尺寸可以是32×32。例如,针对画面间条带,三叉树的最大尺寸可以是128×128。例如,与二叉树的各个节点相应的编码单元的最小尺寸(在下文中,称为二叉树的最小尺寸)和/或与三叉树的各个节点相应的编码单元的最小尺寸(在下文中,称为三叉树的最小尺寸)可被设置为编码块的最小尺寸。
作为另一示例,可在条带级用信号发送或确定二叉树的最大尺寸和/或三叉树的最大尺寸。可选地,可在条带级用信号发送或确定二叉树的最小尺寸和/或三叉树的最小尺寸。
依据上述各种块的尺寸和深度信息,四分区信息、多类型树分区指示信息、分区树信息和/或分区方向信息可被包括在比特流中或可不被包括在比特流中。
例如,当编码单元的尺寸不大于四叉树的最小尺寸时,编码单元不包括四分区信息。因此,四分区信息可被推断为第二值。
例如,当与多类型树的节点相应的编码单元的尺寸(水平尺寸和垂直尺寸)大于二叉树的最大尺寸(水平尺寸和垂直尺寸)和/或三叉树的最大尺寸(水平尺寸和垂直尺寸)时,编码单元可不被二叉树分区或三叉树分区。因此,可不用信号发送多类型树分区指示信息,但多类型树分区指示信息可被推断为第二值。
可选地,当与多类型树的节点相应的编码单元的尺寸(水平尺寸和垂直尺寸)与二叉树的最大尺寸(水平尺寸和垂直尺寸)相同和/或是三叉树的最大尺寸(水平尺寸和垂直尺寸)的两倍大时,编码单元可不被进一步二分区或三分区。因此,可不用信号发送多类型树分区指示信息,而是多类型树分区指示信息可被推断为第二值。这是因为当按照二叉树分区结构和/或三叉树分区结构分区编码单元时,产生小于二叉树的最小尺寸和/或三叉树的最小尺寸的编码单元。
可选地,可以基于虚拟流水线数据单元的尺寸(在下文中,流水线缓冲器尺寸)来限制二叉树分区或三叉树分区。例如,当通过二叉树分区或三叉树分区将编码单元划分为不适合流水线缓冲器尺寸的子编码单元时,相应的二叉树分区或三叉树分区可能受到限制。流水线缓冲器尺寸可以是最大变换块的尺寸(例如,64×64)。例如,当流水线缓冲器尺寸是64×64时,可以限制下面的划分。
-用于编码单元的N×M(N和/或M是128)三叉树分区
-用于编码单元的水平方向的128×N(N<=64)二叉树分区
-用于编码单元的垂直方向的N×128(N<=64)二叉树分区
可选地,当与多类型树的节点相应的编码单元的深度等于多类型树的最大深度时,编码单元可不被进一步二分区和/或三分区。因此,可不用信号发送多类型树分区指示信息,但多类型树分区指示信息可被推断为第二值。
可选地,仅当垂直方向二叉树分区、水平方向二叉树分区、垂直方向三叉树分区和水平方向三叉树分区中的至少一个对于与多类型树的节点相应的编码单元是可能的时,可用信号发送多类型树分区指示信息。否则,编码单元可以不被二分区和/或三分区。因此,可不用信号发送多类型树分区指示信息,但多类型树分区指示信息可被推断为第二值。
可选地,仅当垂直方向二叉树分区和水平方向二叉树分区两者或垂直方向三叉树分区和水平方向三叉树分区两者对于与多类型树的节点相应的编码单元是可能的时,才可用信号发送分区方向信息。否则,可不用信号发送分区方向信息,但是分区方向信息可被推断为指示可能的分区方向的值。
可选地,仅当垂直方向二叉树分区和垂直方向三叉树分区两者或水平方向二叉树分区和水平方向三叉树分区两者对于与多类型树的节点相应的编码树是可能的时,才可用信号发送分区树信息。否则,可以不用信号发送分区树信息,而是分区树信息可被推断为指示可能的分区树结构的值。
图4是示出帧内预测处理的示图。
图4中从中心到外部的箭头可表示帧内预测模式的预测方向。
可通过使用当前块的邻近块的参考样点来执行帧内编码和/或解码。邻近块可以是重建邻近块。例如,可通过使用包括在重建邻近块中的参考样点的值或编码参数来执行帧内编码和/或解码。
预测块可表示通过执行帧内预测而产生的块。预测块可与CU、PU和TU中的至少一个相应。预测块的单元可具有CU、PU和TU中的一个的尺寸。预测块可以是尺寸为2×2、4×4、16×16、32×32或64×64等的正方形块,或者可以是尺寸为2×8、4×8、2×16、4×16和8×16等的矩形块。
可根据针对当前块的帧内预测模式来执行帧内预测。当前块可具有的帧内预测模式的数量可以是固定值,并且可以是根据预测块的属性不同地确定的值。例如,预测块的属性可包括预测块的尺寸和预测块的形状等。
无论块尺寸为多少,可将帧内预测模式的数量固定为N。或者,帧内预测模式的数量可以是3、5、9、17、34、35、36、65或67等。可选地,帧内预测模式的数量可根据块尺寸或颜色分量类型或者块尺寸和颜色分量类型两者而变化。例如,帧内预测模式的数量可根据颜色分量是亮度信号还是色度信号而变化。例如,随着块尺寸变大,帧内预测模式的数量可增加。可选地,亮度分量块的帧内预测模式的数量可大于色度分量块的帧内预测模式的数量。
帧内预测模式可以是非角度模式或角度模式。非角度模式可以是DC模式或平面模式,并且角度模式可以是具有特定方向或角度的预测模式。帧内预测模式可由模式号、模式值、模式编号、模式角度和模式方向中的至少一个来表示。帧内预测模式的数量可以是大于1的M,包括非角度模式和角度模式。为了对当前块进行帧内预测,可执行确定是否可将包括在重建邻近块中的样点用作当前块的参考样点的步骤。当存在不能用作当前块的参考样点的样点时,通过对包括在重建邻近块中的样点中的至少一个样点值进行复制或执行插值或者执行复制和插值两者而获得的值可被用于替换样点的不可用样点值,因此替换后的样点值被用作当前块的参考样点。
图7是示出能够用于帧内预测的参考样点的示图。
如图7所示,参考样点线0至参考样点线3中的至少一个可以用于当前块的帧内预测。在图7中,片段A和片段F的样点可以分别利用最接近片段B和片段E的样点被填充,而不是从重建邻近块进行检索。可以用信号发送指示将被用于当前块的帧内预测的参考样点线的索引信息。例如,在图7中,参考样点线指示符0、1和2可作为指示参考样点线0、1和2的索引信息而被用信号发送。在当前块的上方边界是CTU的边界时,仅参考样点线0可以是可用的。因此,在这种情况下,可以不用信号发送索引信息。当使用除了参考样点线0之外的参考样点线时,可以不执行稍后将描述的针对预测块的滤波。
当进行帧内预测时,可基于帧内预测模式和当前块尺寸/形状将滤波器应用于参考样点和预测样点中的至少一个。
在平面模式的情况下,当产生当前块的预测块时,根据预测目标样点在预测块内的位置,可通过使用当前块的上方参考样点与左侧参考样点以及当前块的右上方参考样点与左下方参考样点的加权和来产生预测目标样点的样点值。另外,在DC模式的情况下,当产生当前块的预测块时,可使用当前块的上方参考样点与左侧参考样点的平均值。另外,在角度模式的情况下,可通过使用当前块的上方参考样点、左侧参考样点、右上方参考样点和/或左下方参考样点来产生预测块。为了产生预测样点值,可执行实数单元的插值。
在颜色分量之间的帧内预测的情况下,可以基于第一颜色分量的相应重建块来产生第二颜色分量的当前块的预测块。例如,第一颜色分量可以是亮度分量,并且第二颜色分量可以是色度分量。对于颜色分量之间的帧内预测,可基于模板推导第一颜色分量与第二颜色分量之间的线性模型的参数。模板可包括当前块的上方和/或左侧邻近样点以及与其相应的第一颜色分量的重建块的上方和/或左侧邻近样点。例如,可使用模板中的样点中具有最大值的第一颜色分量的样点值及与其相应的第二颜色分量的样点值,以及模板中的样点中具有最小值的第一颜色分量的样点值及与其相应的第二颜色分量的样点值推导线性模型的参数。当推导线性模型的参数时,可将相应重建块应用于线性模型以产生当前块的预测块。根据视频格式,可对第一颜色分量的重建块和相应重建块的邻近样点执行子采样。例如,当第二颜色分量的一个样点与第一颜色分量的四个样点相应时,可对第一颜色分量的四个样点进行子采样以计算一个相应样点。在这种情况下,可基于相应的子采样的样点执行线性模型的参数推导和颜色分量之间的帧内预测。是否执行颜色分量之间的帧内预测和/或模板的范围可作为帧内预测模式被用信号发送。
当前块可在水平方向或垂直方向上被分区为两个子块或四个子块。可顺序地重建分区的子块。即,可以对子块执行帧内预测以产生子预测块。另外,可以对子块执行反量化和/或逆变换以产生子残差块。可通过将子预测块与子残差块相加来产生重建子块。重建子块可以用作后续子块的帧内预测的参考样点。子块可以是包括预定数量(例如,16)或更多个样点的块。因此,例如,在当前块是8×4块或4×8块时,当前块可被分区为两个子块。此外,在当前块是4×4块时,当前块可不被分区为子块。在当前块具有其它尺寸时,当前块可被分区为四个子块。可以用信号发送关于是否基于子块和/或分区方向(水平或垂直)执行帧内预测的信息。可以限于仅在使用参考样点线0时执行基于子块的帧内预测。当执行基于子块的帧内预测时,可以不执行稍后将描述的针对预测块的滤波。
可以通过对被帧内预测的预测块执行滤波来产生最终预测块。可以通过将预定权重应用于滤波目标样点、左侧参考样点、上方参考样点和/或左上方参考样点来执行滤波。可以基于块尺寸、帧内预测模式和预测块中的滤波目标样点的位置中的至少一个来确定用于滤波的权重和/或参考样点(范围、位置等)。可以仅在预定的帧内预测模式(例如,DC、平面、垂直、水平、对角线和/或相邻对角线模式)的情况下执行滤波。相邻对角线模式可以是给对角线模式加上k或从对角线模式减去k的模式。例如,k可以是8或更小的正整数。
可通过预测与当前块相邻存在的块的帧内预测模式来对当前块的帧内预测模式进行熵编码/熵解码。在当前块与邻近块的帧内预测模式相同时,可通过使用预定标志信息来用信号发送当前块与邻近块的帧内预测模式相同的信息。另外,可用信号发送多个邻近块的帧内预测模式之中的与当前块的帧内预测模式相同的帧内预测模式的指示符信息。在当前块与邻近块的帧内预测模式不同时,可通过基于邻近块的帧内预测模式执行熵编码/熵解码来对当前块的帧内预测模式信息进行熵编码/熵解码。
图5是示出画面间预测处理的实施例的示图。
在图5中,矩形可以表示画面。在图5中,箭头表示预测方向。根据画面的编码类型,可将画面分类为帧内画面(I画面)、预测画面(P画面)和双预测画面(B画面)。
可在不需要画面间预测的情况下通过帧内预测对I画面进行编码。可通过使用在针对当前块的一个方向(即,前向或后向)上存在的参考画面,通过画面间预测来对P画面进行编码。可通过使用在针对当前块的两个方向(即,前向和后向)上存在的参考画面,通过画面间预测来对B画面进行编码。当使用画面间预测时,编码器可执行画面间预测或运动补偿,并且解码器可执行相应运动补偿。
在下文中,将详细描述画面间预测的实施例。
可使用参考画面和运动信息来执行画面间预测或运动补偿。
可通过编码设备100和解码设备200中的每一个在画面间预测期间推导当前块的运动信息。可通过使用重建的邻近块的运动信息、同位置块(也称为col块或同位块)的运动信息和/或与同位块相邻的块的运动信息来推导当前块的运动信息。同位块可表示先前重建的同位置画面(也称为col画面或同位画面)内的在空间上与当前块位于相同位置的块。同位画面可以是包括在参考画面列表中的一个或更多个参考画面中的一个画面。
运动信息的推导方法可依据当前块的预测模式而不同。例如,应用于帧间预测的预测模式包括AMVP模式、合并模式、跳过模式、具有运动矢量差的合并模式、子块合并模式、几何分区模式、组合帧间帧内预测模式、仿射模式等。这里,合并模式可以被称为运动合并模式。
例如,当AMVP被用作预测模式时,可将重建的邻近块的运动矢量、同位块的运动矢量、与同位块相邻的块的运动矢量和(0,0)运动矢量中的至少一个确定为针对当前块的运动矢量候选,并且通过使用运动矢量候选产生运动矢量候选列表。可通过使用产生的运动矢量候选列表来推导当前块的运动矢量候选。可基于推导的运动矢量候选来确定当前块的运动信息。同位块的运动矢量或与同位块相邻的块的运动矢量可被称为时间运动矢量候选,并且重建的邻近块的运动矢量可被称为空间运动矢量候选。
编码设备100可计算当前块的运动矢量与运动矢量候选之间的运动矢量差(MVD),并且可对运动矢量差(MVD)执行熵编码。另外,编码设备100可对运动矢量候选索引执行熵编码并产生比特流。运动矢量候选索引可指示包括在运动矢量候选列表中的运动矢量候选之中的最佳运动矢量候选。解码设备可对包括在比特流中的运动矢量候选索引执行熵解码,并且可通过使用经过熵解码的运动矢量候选索引从包括在运动矢量候选列表中的运动矢量候选中选择解码目标块的运动矢量候选。另外,解码设备200可将经过熵解码的MVD与通过熵解码而提取的运动矢量候选相加,从而推导解码目标块的运动矢量。
另外,编码设备100可对计算出的MVD的分辨率信息执行熵编码。解码设备200可使用MVD分辨率信息来调整被熵解码的MVD的分辨率。
另外,编码设备100基于仿射模型计算当前块中的运动矢量和运动矢量候选之间的运动矢量差(MVD),并对MVD执行熵编码。解码设备200通过根据被熵解码的MVD和仿射控制运动矢量候选的总和推导解码的目标块的仿射控制运动矢量来基于每个子块推导运动矢量。
比特流可包括指示参考画面的参考画面索引。参考画面索引可通过编码设备100被熵编码,并且随后作为比特流被用信号发送到解码设备200。解码设备200可基于推导出的运动矢量和参考画面索引信息来产生解码目标块的预测块。
推导当前块的运动信息的方法的另一示例可以是合并模式。合并模式可表示合并多个块的运动的方法。合并模式可表示从邻近块的运动信息推导当前块的运动信息的模式。当应用合并模式时,可使用重建的邻近块的运动信息和/或同位块的运动信息来产生合并候选列表。运动信息可包括运动矢量、参考画面索引和画面间预测指示符中的至少一个。预测指示符可指示单向预测(L0预测或L1预测)或双向预测(L0预测和L1预测)。
合并候选列表可以是存储的运动信息的列表。包括在合并候选列表中的运动信息可以是以下至少一个:与当前块相邻的邻近块的运动信息(空间合并候选)、参考画面中的当前块的同位块的运动信息(时间合并候选)、通过合并候选列表中存在的运动信息的组合产生的新运动信息、在当前块之前被编码/解码的块的运动信息(基于历史的合并候选)和零合并候选。
编码设备100可通过对合并标志和合并索引中的至少一个执行熵编码来产生比特流,并且可将比特流用信号发送到解码设备200。合并标志可以是指示是否针对每个块执行合并模式的信息,并且合并索引可以是指示当前块的邻近块中的哪个邻近块是合并目标块的信息。例如,当前块的邻近块可包括位于当前块的左侧的左侧邻近块、被布置在当前块上方的上方邻近块和在时间上与当前块相邻的时间邻近块。
另外,编码设备100对合并候选的运动信息中的用于校正运动矢量的校正信息执行熵编码,并将其用信号发送到解码设备200。解码设备200可以基于校正信息校正通过合并索引选择的合并候选的运动矢量。这里,校正信息可以包括关于是否执行校正的信息、校正方向信息和校正尺寸信息中的至少一个。如上所述,基于用信号发送的校正信息对合并候选的运动矢量进行校正的预测模式可以被称为具有运动矢量差的合并模式。
跳过模式可以是将邻近块的运动信息照原样应用于当前块的模式。当应用跳过模式时,编码设备100可对哪个块的运动信息将被用作当前块的运动信息的事实的信息执行熵编码,以产生比特流,并且可将比特流用信号发送到解码设备200。编码设备100可不将关于运动矢量差信息、编码块标志和变换系数等级中的至少任意一个的语法元素用信号发送到解码设备200。
子块合并模式可以表示以编码块(CU)的子块为单位推导运动信息的模式。当应用子块合并模式时,可使用参考图像中的与当前子块同位的子块的运动信息(基于子块的时间合并候选)和/或仿射控制点运动矢量合并候选来产生子块合并候选列表。
几何分区模式可以表示这样的模式:通过按预定方向对当前块进行分区来推导运动信息,使用推导出的运动信息中的每一个来推导每个预测样点,并且通过对推导出的预测样点中的每一个进行加权来推导当前块的预测样点。
帧间-帧内组合预测模式可以表示通过对由帧间预测产生的预测样点和由帧内预测产生的预测样点进行加权来推导当前块的预测样点的模式。
解码设备200可自行校正推导的运动信息。解码设备200可基于由推导的运动信息指示的参考块搜索预定区域,并推导具有最小SAD的运动信息作为校正的运动信息。
解码设备200可使用光流对经由帧间预测推导的预测样点进行补偿。
图6是示出变换和量化处理的示图。
如图6中所示,对残差信号执行变换处理和/或量化处理,以产生量化的等级信号。残差信号是原始块与预测块(即,帧内预测块或帧间预测块)之间的差。预测块是通过帧内预测或帧间预测产生的块。所述变换可以是初级变换、次级变换或者初级变换和次级变换两者。对残差信号的初级变换产生变换系数,并且对变换系数的次级变换产生次级变换系数。
从预先定义的各种变换方案中选择的至少一种方案被用于执行初级变换。例如,所述预定义的变换方案的示例包括离散余弦变换(DCT)、离散正弦变换(DST)和Karhunen-Loève变换(KLT)。通过初级变换产生的变换系数可经历次级变换。可根据当前块和/或当前块的邻近块的编码参数来确定用于初级变换和/或次级变换的变换方案。可选地,可用信号发送指示变换方案的变换信息。基于DCT的变换可以包括例如DCT-2、DCT-8等。基于DST的变换可包括例如DST-7。
可以通过对残差信号或执行初级变换和/或次级变换的结果执行量化来产生量化的等级信号(量化的系数)。依据块的帧内预测模式或块尺寸/形状,可以根据对角线右上方扫描、垂直扫描和水平扫描中的至少一个来扫描量化的等级信号。例如,当按照对角线右上方扫描来扫描系数时,块形式的系数改变为一维矢量形式。除了对角线右上方扫描之外,依据帧内预测模式和/或变换块的尺寸,可以使用水平地扫描二维块形式的系数的水平扫描或垂直地扫描二维块形式的系数的垂直扫描。扫描的量化的等级系数可以被熵编码以插入比特流中。
解码器对比特流进行熵解码以获得量化的等级系数。量化的等级系数可以通过反向扫描以二维块形式被布置。对于反向扫描,可以使用对角线右上方扫描、垂直扫描和水平扫描中的至少一个。
然后可以对量化的等级系数进行反量化,然后根据需要进行次级逆变换,最后根据需要进行初级逆变换,以产生重建残差信号。
可在环内滤波之前针对通过帧内预测或帧间预测重建的亮度分量执行动态范围中的逆映射。动态范围可以被划分为16个相等的片段,并且可以用信号发送针对每个片段的映射函数。可在条带级或并行块组级用信号发送映射函数。可以基于映射函数推导用于执行逆映射的逆映射函数。在逆映射区域中执行环内滤波、参考画面存储和运动补偿,并且经由使用映射函数的映射将通过帧间预测产生的预测块被转换到映射区域,然后被用于产生重建块。然而,由于在映射区域中执行帧内预测,因此经由帧内预测产生的预测块可以被用于产生重建块而无需映射/逆映射。
在当前块是色度分量的残差块时,可以通过对映射区域的色度分量执行缩放来将残差块转换到逆映射区域。可在条带级或并行块组级用信号发送缩放的可用性。只有当针对亮度分量的映射可用并且亮度分量的划分和色度分量的划分遵循相同的树结构时,才可以应用缩放。可基于与色差块相应的亮度预测块的样点值的平均值来执行缩放。在这种情况下,在当前块使用帧间预测时,亮度预测块可表示映射的亮度预测块。可通过使用亮度预测块的样点值的平均值所属的片段的索引参考查找表来推导缩放所需的值。最后,通过使用推导的值对残差块进行缩放,可以将残差块转换到逆映射区域。然后,可以在逆映射区域中执行色度分量块恢复、帧内预测、帧间预测、环内滤波和参考画面存储。
可以通过序列参数集用信号发送指示亮度分量和色度分量的映射/逆映射是否可用的信息。
可以基于指示当前画面中的当前块与参考块之间的位移的块矢量来产生当前块的预测块。以这种方式,用于参考当前画面产生预测块的预测模式被称为帧内块复制(IBC)模式。IBC模式可被应用于M×N(M<=64,N<=64)编码单元。IBC模式可包括跳过模式、合并模式、AMVP模式等。在跳过模式或合并模式的情况下,构建合并候选列表,并且用信号发送合并索引,使得可以指定一个合并候选。指定的合并候选的块矢量可以用作当前块的块矢量。合并候选列表可包括空间候选、基于历史的候选、基于两个候选的平均值的候选和零合并候选中的至少一个。在AMVP模式的情况下,可用信号发送差块矢量。另外,可从当前块的左侧邻近块和上方邻近块推导预测块矢量。可以用信号发送将使用的邻近块的索引。IBC模式中的预测块被包括在当前CTU或左侧CTU中并且被限于已重建的区域中的块。例如,可以限制块矢量的值,使得当前块的预测块按照编码/解码顺序位于当前块所属的64×64块之前的三个64×64块的区域中。通过以这种方式限制块矢量的值,可减少根据IBC模式实施方案的存储器消耗和装置复杂度。
以下,将描述通过改进作为视频编码处理之一的变换方法来增强视频压缩效率的方法。更具体地,传统视频编码中的编码示意性地包括:帧内/帧间预测步骤,预测作为当前原始图像的一部分的原始块;变换和量化步骤,用于作为预测的预测块与原始块之间的差的残差块;熵编码步骤,是基于已执行变换和量化的块的系数和在先前步骤处获得的压缩信息的概率的无损压缩方法。因此,作为原始图像的压缩形式的比特流被产生,并被发送到解码器或存储在记录介质中。将在本说明书中以下描述的重排离散正弦变换(以下,称为“SDST”)意于通过提高变换效率来增强压缩效率。
根据本发明的SDST方法使用离散正弦变换类型7(以下,称为“DST-VII”或“DST-7”)而不是作为在视频编码中广泛使用的变换核的离散余弦变换类型2(以下,称为“DCT-II”或“DCT-2”),从而更好地反映图像共有的频率特征。
根据本发明的变换方法,与传统视频编码方法相比,即使在相对低的比特率时也可获得高客观性视频质量。
可将DST-7应用于残差块的数据。可基于与残差块相应的预测模式来执行将DST-7应用于残差块。例如,可应用于按照帧间模式编码的残差块。根据本发明的实施例,可在重布置或重排残差块的数据之后应用DST-7。这里,重排可表示图像数据的重布置,并可等价于残差信号重布置或翻转。这里,残差块可具有与残差、剩余块、剩余信号、残差信号、剩余数据或残差数据相同的含义。此外,残差块可具有与以残差块在编码器和解码器中的重建形式的重建残差、重建剩余块、重建剩余信号、重建残差信号、重建剩余数据或重建残差数据相同的含义。
根据本发明的实施例,SDST可使用DST-7作为变换核。这里,SDST的变换核不限于DST-7,并可使用各种类型的DST和DCT中的至少一个,诸如,离散正弦变换类型-1(DST-1)、离散正弦变换类型-2(DST-2)、离散正弦变换类型-3(DST-3)、…、离散正弦变换类型-n(DST-n)、离散余弦变换类型-1(DCT-1)、离散余弦变换类型-2(DCT-2)、离散余弦变换类型-3(DCT-3)、…、离散余弦变换类型-n(DCT-n)等(这里,n可以为1或更大的正整数)。
以下等式1可表示根据本发明的实施例的执行一维DCT-2的方法。这里,N可表示块的尺寸,k可表示频率分量的位置,xn可表示空间域中的第n系数的值。
[等式1]
Figure BDA0003384621360000371
可通过使用以上等式1对残差块执行水平变换和垂直变换来实现二维域中的DCT-2。
DCT-2变换核可定义为以下等式2。这里,xk可表示根据频域中的位置的基本矢量,并且N可表示频域的大小。
[等式2]
Figure BDA0003384621360000372
同时,图7是示出根据本发明的DCT-2的频域中的基本矢量的示图。图7示出频域中的DCT-2的频率特征。这里,通过DCT-2的X0基本矢量计算得到的值可表示DC分量。
DCT-2可用在针对尺寸为4×4、8×8、16×16、32×32等的残差块的变换处理中。
同时,可基于残差块的尺寸、残差块的颜色分量(例如,亮度分量和色度分量)和与残差块相应的预测模式中的至少一个来选择性地使用DCT-2。例如,当残差块的尺寸为4×4且按照帧内模式被编码并且残差块的分量是亮度分量时,使用DCT-2。例如,当按照帧内模式被编码的残差块的水平长度(宽度)在预定范围内(例如,等于或大于四个像素且等于或小于16个像素)并且水平长度(宽度)不长于垂直长度(高度)时,可使用初级变换核用于水平变换。否则,可使用次级变换核用于水平变换。例如,当按照帧内模式被编码的残差块的垂直长度(高度)等于或大于四个像素且等于或小于16个像素并且垂直长度(高度)不长于水平长度(高度)时,可使用初级变换核用于垂直变换。否则,可使用次级变换核用于垂直变换。初级变换核可不同于次级变换核。也就是说,可在预定条件下基于块的形状来隐式地确定针对按照帧内模式被编码的块的水平变换和垂直变换方法。例如,初级变换核可以是DST-7,并且次级变换核可以是DCT-2。这里,残差块是变换目标,故其可具有与变换块相同的含义。这里,预测模式可表示帧间预测或帧内预测。此外,在帧内预测的情况下,预测模式表示帧内预测模式或帧内预测方向。
通过DCT-2变换核的变换可针对具有邻近像素之间的变化小的特征的块(如图像的背景)实现高压缩效率。然而,其可能并不适合作为针对区域(诸如,具有复杂图案的纹理图像)的变换核。这是由于当邻近像素之间具有低相关性的块通过DCT-2被变换时,大量变换系数出现在频域的高频分量中。当变换系数频繁在高频域中产生时,图像的压缩效率可降低。为了增强压缩效率,具有大值的系数需要出现在低频分量附近,并且系数的值需要在高频分量处接近零。
以下等式3可表示根据本发明的实施例的执行一维DST-7的方法。这里,N可表示块的尺寸,k可表示频率分量的位置,xn可表示空间域中的第n系数的值。
[等式3]
Figure BDA0003384621360000381
可通过使用以上等式3对残差块执行水平变换和垂直变换来实现二维域中的DST-7。
DST-7变换核可定义为以下等式4。这里,xk可表示DST-7的第k基本矢量,i可表示频域中的位置,并且N可表示频域的大小。
[等式4]
Figure BDA0003384621360000382
DST-7可用在针对尺寸为2×2、4×4、8×8、16×16、32×32、64×64、128×128等中的至少一个的残差块的变换处理中。
同时,DST-7可应用于矩形块而非正方形块。例如,DST-7可应用于水平尺寸不同于垂直尺寸(诸如,8×4、16×8、32×4、64×16等)的矩形块的垂直变换和水平变换中的至少一个。当可选择性地应用多个变换方法时,DCT-2被应用于正方形块的垂直变换和水平变换。当可选择性地应用多个变换方法时,DST-7被应用于正方形块的垂直变换和水平变换。
此外,可基于残差块的尺寸、残差块的颜色分量(例如,亮度分量和色度分量)、与残差块相应的预测模式、帧内预测模式(方向)和残差块的形状中的至少一个来选择性地使用DST-7。例如,当残差块的尺寸为4×4且按照帧内模式被编码并且残差块的分量是亮度分量时,使用DST-7。这里,预测模式可表示帧间预测或帧内预测。此外,在帧内预测的情况下,预测模式表示帧内预测模式或帧内预测方向。例如,对于色度分量,基于块形状的变换方法的选择可能会不可用。例如,当帧内预测模式是颜色分量之间的预测时,基于块形状的变换方法的选择可能会不可用。例如,可通过经由比特流用信号发送的信息来指定针对色度分量的变换方法。当当前块被分区为多个子块并且对每个子块执行帧内预测时,基于帧内预测模式和/或块尺寸(水平尺寸和/或垂直尺寸)来确定针对当前块的变换方法。例如,当帧内预测模式是非方向性(DC或平面)并且水平长度(宽度)(或垂直长度(高度))在预定范围内时,初级变换核用于水平变换(垂直变换)。否则,可使用次级变换核。初级变换核可不同于次级变换核。例如,初级变换核可以是DST-7,并且次级变换核可以是DCT-2。预定范围可范围在例如四个像素至16个像素。当块的尺寸不在预定范围内时,相同核(例如,次级变换核)用于水平变换和垂直变换。当块的尺寸在预定范围内时,不同变换核用于彼此相邻的帧内预测模式。例如,当次级变换核和初级变换核分别用于模式27下的水平变换和垂直变换时,初级变换核和次级变换核分别用于与模式27相邻的模式26和28下的水平变换和垂直变换。
同时,图8是示出根据本发明的在DST-7的每个频域中的基本矢量的示图。参照图8,DST-7的第一基本矢量(x0)的形状为曲线。通过此,预测出相比于DCT-2,DST-7针对图像中具有大空间变化的块将示出更高的变换性能。
在帧内预测的编码单元(CU)内的4×4变换单元(TU)的变换中,可使用DST-7。通过反映误差量随着距参考样点的距离增加而增加的帧内预测的特性,可使用具有更高变换效率的DST-7。也就是说,在残差信号量随着距空间域中的块内的位置(0,0)的距离增加而增加的块的情况下,可使用DST-7来有效地对块进行压缩。
如上所述,为了增加变换效率,使用适合于图像的频率特征的变换核是重要的。具体地,由于原始块的残差块被执行变换,故可通过检查CU或PU或TU块内的残差信号的分布特征来感知DST-7和DCT-2的变换效率。
图9是示出根据按照帧间模式预测的8×8编码单元(CU)的2N×2N预测单元(PU)内的位置的平均残差值的分布的示图,其中,“Cactus”序列通过低延迟P简档环境下的测试被获得。
参照图9,图9的左侧示出了作为块内的平均残差信号值之中的前30%的标记的相对大值。右侧示出了作为如左侧示出的相同块内的平均残差信号值之中的前70%的标记的相对大值。
如图9所示,按照帧间模式预测的8×8CU的2N×2N PU内的残差信号的分布具有以下特征:小残差信号值主要集中在块的中心附近并且残差信号值随着远离块的中心点而增加。也就是说,残差信号值在块边界处大。如上所述的残差信号的分布特征可以是PU内的残差信号的共同特征,而与帧间预测的CU可具有的CU和PU分区模式(2N×2N、2N×N、N×2N、N×N、nR×2N、nL×2N、2N×nU和2N×nD)的尺寸无关。
图10是示出按照帧间预测模式(帧间模式)预测的8×8编码单元(CU)的2N×2N预测单元(PU)内的残差信号的分布特征的三维图形。
参照图10,发现具有相对小值的残差信号以靠近块的中心的集中方式分布并且靠近块边界的残差信号具有相对较大的值。
基于图9和图10中示出的残差信号的分布特征,当使用DST-7而非DCT-2时,帧间预测的CU的PU内的残差信号的变换更有效。
以下,将描述作为将DST-7用作变换核的变换方法之一的SDST。
以下,块可表示CU、PU和TU之一。
根据本发明的SDST可按照两个步骤执行。第一个步骤是对按照帧间模式或帧内模式预测的CU的PU内的残差信号执行重排。第二个步骤是将DST-7应用于块内的已执行了重排的残差信号。
当前块(例如,CU、PU或TU)内布置的残差信号可按照第一方向被扫描并可按照第二方向被重布置。也就是说,当前块内布置的残差信号可按照第一方向被扫描并可按照第二方向被重布置以执行重排。这里,残差信号可表示指示原始信号与预测信号之间的差信号的信号。也就是说,残差信号可表示在执行变换和量化中的至少一个之前的信号。可选地,残差信号可表示执行了变换和量化中的至少一个的信号形式。此外,残差信号可表示重建残差信号。也就是说,残差信号可表示已执行了逆变换和反量化中的至少一个的信号。此外,残差信号可表示执行逆变换和反量化中的至少一个之前的信号。
同时,第一方向(或扫描方向)可以是光栅扫描顺序、右上对角线扫描顺序、水平扫描顺序和垂直扫描顺序之一。此外,第一方向可定义为以下(1)至(10)中的至少一个。
从上方行到下方行的扫描,并且在一行中从左侧到右侧的扫描
从上方行到下方行的扫描,并且在一行中从右侧到左侧的扫描
从下方行到上方行的扫描,并且在一行中从左侧到右侧的扫描
从下方行到上方行的扫描,并且在一行中从右侧到左侧的扫描
从左侧列到右侧列的扫描,并且在一列中从上方到下方的扫描
从左侧列到右侧列的扫描,并且在一列中从下方到上方的扫描
从右侧列到左侧列的扫描,并且在一列中从上方到下方的扫描
从右侧列到左侧列的扫描,并且在一列中从下方到上方的扫描
按照螺旋形状的扫描:从块的内部(或外部)到块的外部(或内部)的扫描,并且按照顺时针/逆时针方向的扫描
对角线扫描:从块内的一个角开始,按照左上、右上、左下或右下方向的对角地扫描
同时,关于第二方向(或重布置方向),可选择性地使用(1)至(10)扫描方向中的至少一个。第一方向和第二方向可相同,或者可彼此不同。
可以以当前块为单位执行针对残差信号的扫描和重布置处理。
这里,重布置可表示块内按照第一方向扫描的残差信号在相同尺寸的块中按照第二方向被布置。这里,按照第一方向扫描的块的尺寸可不同于按照第二方向重布置的块的尺寸。
此外,扫描和重布置被描述为根据第一方向和第二方向单独地执行,但是扫描和重布置可作为针对第一方向的一个处理被执行。例如,针对块内的残差信号,扫描可从上方行到下方行被执行并且扫描在一列中从右侧到左侧被执行,以用于块中的存储(重布置)。
同时,针对残差信号的扫描和重布置处理可按照当前块内的子块的预定单元被执行。这里,子块可以是在尺寸上等于或小于当前块的块。子块可以是从按照四叉树、二叉树形式等对当前块的分区得到的块。
子块单元可具有固定尺寸和/或形状(例如,4×4、4×8、8×8、…、N×M,其中,N和M是正整数)。此外,可不同地推导出子块单元的尺寸和/或形状。例如,可根据当前块的尺寸、形状和/或预测模式(帧间和帧内)来确定子块单元的尺寸和/或形状。
可根据子块的位置自适应地确定扫描方向和/或重布置方向。在这种情况下,不同扫描方向和/或重布置方向可用于子块,或者当前块的全部子块或部分子块可使用相同的扫描方向和/或相同的重布置方向。
图11是示出根据本发明的在编码单元(CU)的2N×2N预测单元(PU)模式下的残差信号的分布特征的示图。
参照图11,PU按照四叉树结构被分区为四个子块,每个子块的箭头方向示出残差信号的分布特征。具体地,每个子块的箭头方向指示残差信号增加的方向。这归因于PU内的残差信号共有的分布特征,而与PU分区模式无关。因此,用于重布置每个子块的残差信号的重排操作可被执行以具有适合于DST-7变换的分布特征。
图12是示出根据本发明的在2N×2N预测单元(PU)的重排之前和之后的残差信号的分布特征的示图。
参照图12,上方块示出按照帧间模式预测的8×8CU的2N×2N PU内的残差信号的重排之前的分布。以下等式5示出根据图12中的上方块内的每个残差信号的位置的值。
[等式5]
Figure BDA0003384621360000421
由于按照帧间模式预测的CU的PU内的残差信号的分布特征,故具有相对小值的许多残差信号在图12中分布在上方块内的中心区域,并且具有较大值的许多残差信号分布为靠近上方块内的边界。
图12中的下方块示出在执行重排之后的2N×2N PU内的残差信号的分布特征。这示出了已执行重排的PU的每个子块的残差信号的分布是适合于DST-7的第一基本矢量的残差信号的分布。也就是说,由于每个子块内的残差信号随着远离位置(0,0)而具有更大的值,故当执行变换时,频率通过DST-7被变换的变换系数值聚集在低频域中。
以下等式6表示根据PU内的四个子块中的每个子块的位置执行重排的方法,其中,所述四个子块通过按照四叉树结构对PU的分区而被获得。
[等式6]
S0
a′(x,y)=a(Wblk0-1-x,Hblk0-1-y)
S1
b′(x,y)=b(x,Hblk1-1-y)
S2
c′(x,y)=c(Wblk2-1-x,y)
S3
d′(x,y)=d(x,y)
0≤x≤Wk,0≤y≤Hk,k∈{blk0,blk1,blk2,blk3}
这里,Wk和Hk分别表示PU中的第k子块(k∈{blk0,blk1,blk2,blk3})的宽度和高度,并且blk0至blk3分别表示通过按照四叉树结构对PU的分区而被获得的子块。此外,x和y分别表示子块内的水平位置和垂直位置。如图12中的上方块中所示,在执行重排之前的残差信号的位置由a(x,y)、b(x,y)、c(x,y)和d(x,y)指定。如图12中的下方块中所示,通过重排改变的残差信号的位置由a′(x,y)、b′(x,y)、c′(x,y)和d′(x,y)表示。
图13是示出根据本发明的子块的4×4残差数据重布置的示例的示图。
参照图13,子块可表示属于8×8预测块的多个子块之一。图13(a)示出重布置之前的原始残差数据的位置,并且图13(b)示出残差数据的重布置的位置。
参照图13(c),残差数据的值可从位置(0,0)到位置(3,3)逐渐增加。这里,每个子块内的水平和/或垂直一维残差数据可具有以图8中所示的基本矢量的形式的数据分布。
也就是说,关于根据本发明的重排,每个子块的残差数据可被重布置使得残差数据的分布适合于DST-7基本矢量的形式。在对每个子块进行重排之后,DST-7变换可被应用于按照每个子块单元重布置的数据。
同时,子块可基于TU的深度按照四叉树结构被进一步分区,或者可选择性地进行重布置处理。例如,当TU的深度是2时,属于2N×2N PU的N×N子块被分区为N/2×N/2块,并且重布置处理被应用于每个N/2×N/2块。这里,基于四叉树的TU分区可被重复执行直到到达最小TU尺寸为止。
此外,当TU的深度是0时,DCT-2变换被应用于2N×2N块。这里,可不执行残差数据的重布置。
同时,根据本发明的SDST方法使用PU块内的残差信号的分布特征,使得执行SDST的TU的分区结构可被定义为基于PU按照四叉树结构进行分区。
图14a和图14b是示出根据预测单元(PU)模式和变换单元(TU)的重排方法的编码单元(CU)的变换单元(TU)分区结构的实施例的示图。图14a和图14b示出针对每个非对称分区模式(2N×nU、2N×nD、nR×2N和nL×2N)根据TU的深度的TU的四叉树分区结构。
参照图14a和图14b,每个块的粗实线指示CU内的PU,细实线指示TU。此外,每个TU内的S0、S1、S2和S3指示在上述等式6中定义的TU内的残差信号的重排方法。
同时,在图14a和图14b中,每个PU的深度0的TU在块尺寸上可与PU相同(例如,在2N×2N PU中,深度0的TU的尺寸可与PU的尺寸相同)。这里,后面将参照图18描述针对深度0的TU内的残差信号的重排。
此外,当CU、PU和TU中的至少一个是矩形形状(例如,2N×nU、2N×nD、nR×2N和nL×2N)时,在残差信号重布置之前,CU、PU和TU中的至少一个被分区为N个子块,诸如,两个、四个、六个、八个、16个子块等,随后残差信号重布置被应用于从分区获得的子块。
此外,当CU、PU和TU中的至少一个是正方形形状(例如,2N×2N和N×N)时,在残差信号重布置之前,CU、PU和TU中的至少一个被分区为N个子块,诸如,四个、八个、16个子块等,随后残差信号重布置被应用于从分区获得的子块。
此外,当从CU或PU和TU的分区获得的TU具有最高深度(未分区)时,TU被分区为N个子块,诸如,两个、四个、六个、八个、16个子块等,随后残差信号重布置以从分区获得的子块为单位而被执行。
在上述示例中,当CU、PU和TU具有不同形状或不同尺寸时,残差信号重布置被执行。然而,当CU、PU和TU中的至少两个具有相同形状或相同尺寸时,也可应用残差信号重布置。
同时,在图14a和图14b中,描述了帧间预测的PU的非对称分区模式但不对其进行限制,TU的分区和TU的重排可应用于PU的对称分区模式(2N×N和N×2N)。
可对已执行重排的PU内的每个TU执行DST-7变换。这里,当CU、PU和TU具有相同形状和相同尺寸时,对一个块执行DST-7变换。
考虑到帧间预测的PU块的残差信号的分布特征,在无关于CU和PU分区模式的尺寸的重排之后执行DST-7变换会比执行DCT-2变换更有效。
在变换之后,当许多变换系数分布为靠近低频分量(尤其是,DC分量)时,相比于以下两方面的相对情况,残差信号的分布具有更高的压缩效率:i)量化之后的能量损失最小化,以及ii)在熵编码处理中比特使用减少。
图15是示出根据2N×2N预测单元(PU)的残差信号的分布执行DCT-2变换和SDST变换的结果的示图。
在图15的左侧示出的示图示出当CU的PU分区模式是2N×2N时的分布,残差信号从中心到边界增加。此外,在图15的中间示出的示图示出对PU内的深度为1的TU执行了DCT-2变换的残差信号的分布。在图15的右侧示出的示图示出在对PU内的深度为1的TU执行重排之后执行了DST-7的残差信号的分布。
参照图15,与对具有上述的残差信号的分布特征的PU的TU执行DCT-2的情况相比,当执行SDST时,更多的系数集中靠近低频分量并且高频分量上的系数具有更小的值。根据变换特征,发现当对帧间预测的PU的残差信号进行变换时,执行SDST而不是执行DCT-2在压缩效率方面更有优势。
执行DST-7变换的块的单元是执行SDST的在PU中定义的TU单元。如上参照图14所述,TU可以从按照四叉树或按照二叉树具有最大深度的PU单元的分区而被获得。这意味着在重排之后不仅可对正方形块执行DST-7变换,还可对矩形块执行DST-7变换。
例如,对于帧间预测的块,具有与该块相同尺寸的残差块可被解码,或者与该块的一部分相应的子残差块可被解码。用于此的信息可被用信号发送以用于该块,并且该信息可以是例如标志。当具有与该块相同尺寸的残差块被解码时,可通过对包含在比特流中的信息进行解码来确定关于变换核的信息。当与该块的一部分相应的子残差块被解码时,基于用于指定子残差块的类型和/或在该块内的位置的信息来确定用于子残差块的变换核。例如,关于子残差块的类型和/或在该块内的位置的信息可被包含在比特流中以用于用信号发送。这里,当该块大于32×32时,不执行基于子残差块的类型和/或在该块内的位置的变换核的确定。例如,针对大于32×32的块,可应用预定变换核(例如,DCT-2),或者可显式地用信号发送关于变换核的信息。可选地,当该块的宽度或高度大于32时,不执行基于子残差块的类型和/或在该块内的位置的变换核的确定。例如,针对64×8块,可应用预定变换核(例如,DCT-2),或者可显式地用信号发送关于变换核的信息。
关于子残差块的类型的信息可以是块的分区信息。块的分区信息可以是例如指示水平分区与垂直分区之间的一个的分区方向信息。可选地,块的分区信息可包含分区率信息。例如,分区率可包括1:1、1:3和/或3:1。分区方向信息和分区率信息可作为分开的语法元素或作为单个语法元素被用信号发送。
关于子残差块的位置的信息可指示在块内的位置。例如,当块的分区是垂直分区时,关于位置的信息指示左侧与右侧之间的一个。此外,当块的分区是水平分区时,关于位置的信息指示上方与下方之间的一个。
可基于类型信息和/或位置信息来确定子残差块的变换核。可独立地针对水平变换和垂直变换确定变换核。例如,可基于分区方向来确定变换核。例如,在垂直分区的情况下,可对垂直变换应用第一变换核。在水平分区的情况下,可对水平变换应用第一变换核。例如,在垂直分区的情况下,可将第一变换核或第二变换核应用于水平变换,在水平分区的情况下,可将第一变换核或第二变换核应用于垂直变换。例如,在垂直分区的情况下,可在左侧位置将第二变换核应用于水平变换,并在右侧位置将第一变换核应用于水平变换。此外,在水平分区的情况下,可在上方位置将第二变换核应用于垂直变换,并可在下方位置将第一变换核应用于垂直变换。例如,第一变换核和第二变换核可以分别是DST-7和DCT-8。例如,第一变换核和第二变换核可以分别是DST-7和DCT-2。然而,不限于此,在说明书中描述的各种变换核中,任意两个不同的变换核可用作为第一变换核和第二变换核。这里,所述块可表示CU或TU。此外,子残差块可表示子TU。
图16是示出根据本发明的SDST处理的示图。
在步骤S1610,输入作为变换目标的TU的残差信号。这里,TU可以是从预测模式是帧间模式的PU的分区获得的TU。在步骤S1620,可对作为变换目标的TU执行重排。接下来,在步骤S1630,对已执行重排的TU执行DST-7变换,在步骤S1640,执行量化,并且执行一系列随后的处理,从而按此顺序执行SDST处理。
同时,可对预测模式是帧内模式的块执行重排和DST-7变换。
以下,作为用于在编码器中实现SDST变换的实施例,将描述以下方法:i)对帧间预测的PU内的所有TU执行SDST的方法,以及ii)通过率失真优化选择性地执行SDST或DCT-2的方法。在以下方法中,描述了帧间预测块,但不限于此,以下方法可应用于帧内预测块。
图17是示出根据本发明的针对帧间预测的编码单元(CU)的每个预测单元(PU)分区模式的变换单元(TU)的分区和残差绝对值的大小的分布特征的示图。
参照图17,在帧间预测模式下,TU可从按照四叉树或按照二叉树具有至高最大深度的CU的分区而被获得,并且可存在PU的总共K个分区模式。这里,K是正整数,并且例如,在图17中,K是18。
如上参照图10所述,根据本发明的SDST使用帧间预测的CU内的PU中的残差信号的分布特征。此外,TU可从按照四叉树或按照二叉树的PU的分区而被获得。也就是说,深度0的TU可相应于PU,深度1的TU可相应于通过按照四叉树结构或按照二叉树结构对PU分区一次而获得的每个子块。
图17中的每个块示出以下形式:TU从针对帧间预测的CU的每个PU分区模式按深度2进行分区而获得。这里,粗实线可指示PU,细实线可指示TU,并且每个TU的箭头方向可指示TU内的残差信号值增加的方向。每个TU可进行如上关于根据PU内的位置的重排步骤所述的重排。
具体地,在深度0的TU的情况下,除了针对所述重排步骤提出的方法之外,还可按照各种方法执行重排。
这些方法中的一种方法如下:从PU块的中心位置处的残差信号开始扫描,并且附近的残差信号在块的边界方向上按照环形方式被扫描,并且扫描的残差信号从PU中的位置(0,0)开始按照Z字形扫描顺序被重布置。
图18是示出根据本发明的实施例的预测单元(PU)内的深度0的变换单元(TU)的残差信号扫描顺序和重布置顺序的示图。
图18(a)和图18(b)示出用于重排的扫描顺序,并且图18(c)示出用于SDST的重布置顺序。
可对经过重排的每个TU内的残差信号执行DST-7变换,并且可执行量化、熵编码等。该重排方法使用根据PU分区模式的TU内的残差信号的分布特征,从而可优化残差信号的分布以提高作为下一步骤的DST-7变换的效率。
在编码器中,可根据图16中示出的SDST处理对帧间预测的PU内的所有TU执行SDST。根据帧间预测的CU的PU分区模式,可按照如图17中示出的相同形式从PU执行TU分区直到深度2。通过使用图17中的TU内的残差信号的分布特征,可对每个TU内的残差信号执行重排。之后,可执行使用DST-7变换核的变换,随后可执行量化、熵编码等。
当对帧间预测的PU内的TU的残差信号进行重建时,解码器对帧间预测的PU内的每个TU执行DST-7逆变换,并对重建的残差信号执行逆重排,从而获得重建的残差信号。在该SDST方法中,SDST被应用于帧间预测的PU内的所有TU的变换方法,从而不存在需要被进一步用信号发送到解码器的标志或信息。也就是说,可执行SDST方法而无需任何用信号发送SDST方法。
同时,即使对帧间预测的PU内的所有TU执行SDST,编码器也将上面关于重排步骤描述的用于残差信号的重布置方法的一部分确定为最优重布置方法,并且关于确定的重布置方法的信息可被用信号发送到解码器。
作为执行SDST的另一实施例,两个或更多个变换方法(例如,DCT-2和SDST)中的至少一个可被选择用于应用以对PU进行变换。根据此方法,与对帧间预测的PU内的所有TU执行SDST的实施例相比,编码器的计算会增加。然而,在DCT-2和SDST中选择更有效的变换方法,从而可增强压缩效率。
图19是示出根据本发明的通过率失真优化(RDO)的DCT-2或SDST选择编码处理的流程图。
参照图19,在步骤S1910,可输入作为变换目标的TU的残差信号。在步骤S1950,可将通过在步骤S1920对以帧间模式预测的PU内的每个TU执行DCT-2而获得的TU的代价与通过在步骤S1930执行重排和在步骤S1940执行DST-7而获得的TU的代价相比较,从而确定TU在率失真方面的最优变换模式(例如,DST-2或SDST)。接下来,在步骤S1960,根据确定的变换模式,可对变换的TU执行量化,并可执行熵编码。
同时,仅当TU满足以下条件之一时,才从SDST和DCT-2中选择最优变换模式。
i)TU无论PU分区模式如何均需要是CU或者需要从按照四叉树或按照二叉树的CU的分区而被获得。
ii)TU需要是根据PU分区模式的PU或者需要从按照四叉树或按照二叉树的PU的分区而被获得。
iii)无论PU分区模式如何,TU均不是从CU的分区被获得。
条件i)是如下方法:针对无论PU分区模式如何均按照四叉树或按照二叉树分区的CU或者针对通过分区为CU尺寸而获得的TU,在率失真优化方面选择DCT-2或SDST作为变换模式。
条件ii)是关于对帧间预测的PU内的所有TU执行SDST的实施例。也就是说,根据PU分区模式,对按照四叉树或按照二叉树分区的PU或者通过分区为PU尺寸而获得的TU执行DCT-2或SDST,并考虑每个代价,确定TU的变换模式。
条件iii)是无论PU分区模式如何,CU或TU均不按照具有与TU相同尺寸的CU单元被分区,并执行DCT-2和SDST以确定TU的变换模式。
在对针对特定PU分区模式下的深度0的TU块的率失真代价(RD代价)进行比较中,将对深度0的TU执行SDST的结果的代价与对深度0的TU执行DCT-2的结果的代价进行比较,并且可选择深度0的TU的变换模式。
图20是示出根据本发明的选择用于解码的DCT-2或SDST的处理的流程图。
参照图20,在步骤S2010,可针对每个TU参考用信号发送的SDST标志。这里,SDST标志可以是指示SDST是否用作变换模式的标志。
当在步骤S2020-是,SDST标志为真时,将TU的变换模式确定为SDST模式。随后,在步骤S2030,对TU内的残差信号执行DST-7逆变换。在步骤S2040,针对已执行DST-7逆变换的TU内的残差信号,根据PU内的TU的位置来执行使用上述等式6的逆重排。最后,在步骤S2060,获得重建的残差信号。
同时,当在步骤S2020-否,SDST标志不为真时,将TU的变换模式确定为DCT-2模式。随后,在步骤S2050对TU内的残差信号执行DCT-2逆变换,并且在步骤S2060获得重建的残差信号。
当使用SDST方法时,残差数据被重布置。这里,残差数据可表示与帧间预测的PU相应的残差数据。可将使用可分离属性从DST-7推导出的整数变换用作SDST方法。
同时,针对DCT-2或DST-7的选择性使用,可用信号发送sdst_flag。以TU为单位来执行sdst_flag的信号发送。sdst_flag可指示需要识别SDST是否被执行。
图21是示出根据本发明的使用SDST的解码处理的流程图。
参照图21,在步骤S2110,可以以TU为单位对sdst_flag进行熵解码。
首先,当在步骤S2120-是,TU的深度是0时,在步骤S2170和S2180不使用SDST而使用DCT-2以重建TU。这是由于可在TU的深度1与TU的最大深度值之间执行SDST。
此外,虽然在步骤S2120-否,TU的深度不是0,但是当在步骤S2130-是,TU的变换模式是变换跳过模式且/或TU的编码块标志(cbf)值是0时,在步骤S2180,对TU进行重建而不执行逆变换。
同时,当在步骤S2120-否,TU的深度不是0时,并且当在步骤S2130-否,TU的变换模式不是变换跳过模式且TU的cbf值不是0时,在步骤S2140,检查sdst_flag值。
这里,当在步骤S2140-是,sdst_flag值是1时,在步骤S2150,执行基于DST-7的逆变换,在步骤S2160,对TU的残差数据执行逆重排,并在步骤S2180,对TU进行重建。相反,当在步骤S2140-否,sdst_flag值不是1时,在步骤S2170,执行基于DCT-2的逆变换,并在步骤S2180,对TU进行重建。
这里,作为重排或重布置的目标的信号可以是逆变换之前的残差信号、反量化之前的残差信号、逆变换之后的残差信号、反量化之后的残差信号、重建的残差信号和重建的块信号中的至少一个。
同时,在图21中,描述了以TU为单位来用信号发送sdst_flag,但是可基于TU的变换模式和TU的cbf值中的至少一个选择性地用信号发送sdst_flag。例如,当TU的变换模式是变换跳过模式且/或TU的cbf值是0时,不用信号发送sdst_flag。此外,即使当TU的深度是0时,也不用信号发送sdst_flag。
同时,描述了以TU为单位来用信号发送sdst_flag,但是可以按照预定单元来用信号发送sdst_flag。例如,可以以视频、序列、画面、条带、并行块、编码树单元、编码单元、预测单元和变换单元中的至少一个为单位来用信号发送sdst_flag。
如图20中的SDST标志和图21中的SDST标志的实施例,可以以TU为单位通过n比特标志或索引(n是等于或大于1的正整数)对选择的变换模式信息进行熵编码/熵解码。变换模式信息可指示是否通过DCT-2对TU执行变换、是否通过SDST对TU执行变换、是否通过DST-7对TU执行变换等中的至少一个。
在仅帧间预测的PU内的TU的情况下,可通过旁路模式对变换模式信息进行熵编码/熵解码。此外,在变换跳过模式、残差差分PCM(RDPCM)模式和无损模式中的至少一个的情况下,省略对变换模式信息的熵编码/熵解码并且不用信号发送变换模式信息。
此外,当块的编码块标志是0时,省略对变换模式信息的熵编码/熵解码并且不用信号发送变换模式信息。当编码块标志是0时,在解码器中省略逆变换处理。因此,即使当在解码器中不存在变换模式信息时,也可以进行块的重建。
然而,变换模式信息不限于通过标志表示变换模式,并可以以预定义的表和索引的形式实现。这里,预定义的表可以是定义针对每个索引的可用变换模式。
同时,在图18至图21中,描述了SDST或DCT-2的选择性使用,但是不限于此,可应用DCT-n或DST-n(n是正整数)代替DCT-2。
此外,可在水平方向和垂直方向上单独地执行DCT-2或SDST的变换。相同变换模式可用于水平方向和垂直方向,或者可使用不同变换模式。
此外,可分别对关于DCT-2是否用于水平方向和垂直方向、SDST是否被使用以及DST-7是否被使用的变换模式信息进行熵编码/熵解码。变换模式信息可以例如作为索引被用信号发送。由相同索引指示的变换核针对帧内预测的块和帧间预测的块可相同。
此外,可以以CU、PU、TU和块中的至少一个为单位对变换模式信息进行熵编码/熵解码。
此外,可根据亮度分量或色度分量来用信号发送变换模式信息。换句话说,可根据Y分量、Cb分量或Cr分量来用信号发送变换模式信息。例如,当针对Y分量用信号发送关于是DCT-2还是SDST被执行的变换模式信息时,针对Y分量用信号发送的变换模式信息可用作块的变换模式,而无需针对Cb分量和Cr分量中的至少一个用信号发送任何变换模式信息,
这里,可通过使用上下文模型的算术编码方法来对变换模式信息进行熵编码/熵解码。当变换模式信息以预定义的表和索引的形式实现时,通过使用上下文模型的算术编码方法来对多个二进制位中的全部二进制位或部分二进制位进行熵编码/熵解码。
此外,可根据块尺寸选择性地对变换模式信息进行熵编码/熵解码。例如,当当前块的尺寸等于或大于64×64时,不对变换模式信息进行熵编码/熵解码。当尺寸等于或小于32×32时,对变换模式信息进行熵编码/熵解码。
此外,当非零变换系数或L个量化的等级存在于当前块内时,不对变换模式信息进行熵编码/熵解码,并且执行DCT-2、DST-7和SDST方法中的一个方法。这里,无论块内的非零变换系数或量化的等级的位置如何,可不对变换模式信息进行熵编码/熵解码。此外,仅当非零变换系数或量化的等级存在于块内的左上方位置时,才不会对变换模式信息进行熵编码/熵解码。这里,L可以为包括0的正整数,并且可以是例如1。
此外,当非零变换系数或者J个或更多个量化的等级存在于当前块内时,对变换模式信息进行熵编码/熵解码。这里,J是正整数。
此外,变换模式信息是一些变换模式的使用根据同位块的变换模式而受限或者同位块的变换模式由几个比特表示的方法,可改变变换方法的二值化方法。
可基于当前块的预测模式、帧内预测模式、帧间预测模式、TU深度、尺寸和形状中的至少一个来有限制地使用上述SDST。
例如,当当前块按照帧间模式被编码时使用SDST。
可定义允许SDST的最小/最大深度。在这种情况下,当当前块的深度等于或大于最小深度时,使用SDST。可选地,当当前块的深度等于或小于最大深度时,使用SDST。这里,最小/最大深度可以是固定值,或者可以基于指示最小/最大深度的信息而被可变地确定。可从编码器用信号发送指示最小/最大深度的信息,并可基于当前/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导指示最小/最大深度的信息。
可定义允许SDST的最小/最大尺寸。类似地,当当前块的尺寸等于或大于最小尺寸时,使用SDST。可选地,当当前块的尺寸等于或小于最大尺寸时,使用SDST。这里,最小/最大尺寸可以是固定值,或者可以基于指示最小/最大尺寸的信息而被可变地确定。可从编码器用信号发送指示最小/最大尺寸的信息,并可基于当前/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导指示最小/最大尺寸的信息。例如,当当前块是4×4时,DCT-2被用作变换方法,并且不对关于是DCT-2还是SDST被使用的变换模式信息进行熵编码/熵解码。
可定义允许SDST的块的形状。在这种情况下,当当前块的形状是定义的块形状时,使用SDST。此外,可定义不允许SDST的块的形状。在这种情况下,当当前块的形状是定义的块形状时,不使用SDST。可固定允许或不允许SDST的块的形状,并且可从编码器用信号发送关于此的信息。可选地,其可基于当前/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导。允许或不允许SDST的块的形状可表示例如M×N块、M、N和/或M与N之间的比率。
此外,当TU的深度是0时,将DCT-2或DST-7用作变换方法,并且对关于已使用哪个变换方法的变换模式信息进行熵编码/熵解码。当DST-7被用作变换方法时,执行残差信号的重布置处理。此外,当TU的深度是1或更大时,将DCT-2或SDST用作变换方法,并且对关于已使用哪个变换方法的变换模式信息进行熵编码/熵解码。
此外,可基于CU和PU的分区形状或当前块的形状选择性地使用变换方法。
根据实施例,当CU和PU的分区形状或当前块的形状是2N×2N时,使用DCT-2。针对剩余的分区形状和块形状,可选择性地使用DCT-2或SDST。
此外,当CU和PU的分区形状或当前块的形状是2N×N或N×2N时,使用DCT-2。针对剩余的分区形状和块形状,可选择性地使用DCT-2或SDST。
此外,当CU和PU的分区形状或当前块的形状是nR×2N、nL×2N、2N×nU或2N×nD时,使用DCT-2。针对剩余的分区形状和块形状,可选择性地使用DCT-2或SDST。
同时,当以从当前块的分区获得的块为单元执行SDST或DST-7时,可以以从分区获得的块为单元对变换系数(量化的等级)执行扫描和逆扫描。此外,当以从当前块的分区获得的块为单元执行SDST或DST-7时,可以以未分区的当前块为单元对变换系数(量化的等级)执行扫描和逆扫描。
此外,可根据当前块的帧内预测模式(方向)、当前块的尺寸、和当前块的分量(亮度分量或色度分量)中的至少一个来执行使用SDST或DST-7的变换/逆变换。
此外,在使用SDST或DST-7的变换/逆变换中,可使用DST-1代替DST-7。此外,在使用SDST或DST-7的变换/逆变换中,可使用DST-4代替DST-7。
此外,在使用DCT-2的变换/逆变换中,可应用用于SDST或DST-7的残差信号的重布置的重布置方法。也就是说,即使当使用DCT-2时,也可执行使用预定角度的残差信号的重布置或残差信号的旋转。
以下,将描述针对重排方法和信号发送方法的各种修改和实施例。
本发明的SDST意于通过改变变换、重排、重布置和/或翻转来增强图像压缩效率。通过残差信号的重排执行DST-7有效地反映了PU内的残差信号的分布特征,从而实现高压缩效率。
在以上涉及重排步骤的描述中,已经描述了残差信号重布置方法。以下,除了用于残差信号的重布置的重排方法之外,将描述其它实现方法。
以下描述的重布置方法可应用于与以上描述的SDST方法相关的实施例中的至少一个。
为了在实现残差信号的重布置中最小化硬件复杂度,可通过水平翻转方法和垂直翻转方法来实现残差信号重布置处理。可通过以下(1)至(4)中所示的翻转来实现残差信号重布置方法。以下所述的重布置可表示翻转。
(1)r'(x,y)=r(x,y);不翻转
(2)r'(x,y)=r(w-1-x,y);水平翻转
(3)r'(x,y)=r(x,h-1-y);垂直翻转
(4)r'(x,y)=r(w-1-x,h-1-y);水平和垂直翻转
表达式r'(x,y)指示重布置之后的残差信号,表达式r(x,y)指示重布置之前的残差信号。块的宽度和高度分别由w和h指定。块内的残差信号的位置由x和y表示。可以以与重布置方法相同的处理来执行使用翻转的重布置方法的逆重布置方法。也就是说,可通过再次执行水平翻转将使用水平翻转重布置的残差信号重建为原始残差信号布置。由编码器执行的重布置方法和由解码器执行的逆重布置方法可以是相同的翻转方法。
例如,如下所示,当对已经执行了水平翻转的残差块执行水平翻转时,获得执行翻转之前的残差块。
r’(w-1-x,y)=r(w-1-(w-1-x),y)=r(x,y)
例如,如下所示,当对已经执行了垂直翻转的残差块执行垂直翻转时,获得执行翻转之前的残差块。
r’(x,h-1-y)=r(x,h-1-(h-1-y))=r(x,y)
例如,如下所示,当对已经执行了水平和垂直翻转的残差块执行水平和垂直翻转时,获得执行翻转之前的残差块。
r’(w-1-x,h-1-y)=r(w-1-(w-1-x),h-1-(h-1-y))=r(x,y)
可在不对当前块进行分区的情况下使用基于翻转的残差信号重排/重布置方法。也就是说,在SDST方法中,描述了当前块(TU等)被分区为子块并且针对每个子块使用DST-7。然而,当使用基于翻转的残差信号重排/重布置方法时,不将当前块分区为子块并且对全部当前块或当前块的一部分执行翻转,随后执行DST-7变换。此外,当使用基于翻转的残差信号重排/重布置方法时,不将当前块分区为子块,并且在执行DST-7逆变换之后,对全部当前块或当前块的一部分执行翻转。
可定义能够执行基于翻转的残差信号重排/重布置的块的最大尺寸(M×N)和/或最小尺寸(O×P)。这里,所述尺寸可包括作为水平尺寸(M或O)的宽度和作为垂直尺寸(N或P)的高度中的至少一个。M、N、O和P可以是正整数。块的最大尺寸和/或块的最小尺寸可以是在编码器/解码器中预定义的值,或者可以是从编码器用信号发送到解码器的信息。
例如,当当前块的尺寸小于能够执行翻转方法的最小尺寸时,不执行翻转和DST-7变换并且仅执行DCT-2变换。这里,可不用信号发送作为指示翻转和DST-7是否用作变换模式的变换模式信息的SDST标志。
例如,当块的宽度小于能够执行翻转方法的最小宽度并且块的高度大于能够执行翻转方法的最小高度时,仅使用DCT-2执行水平方向上的一维变换。关于垂直方向上的一维变换,在垂直翻转之后使用DST-7执行一维垂直变换,或者在不翻转的情况下使用DST-7执行一维垂直变换。这里,可仅针对垂直方向上的一维变换用信号发送作为指示翻转是否用作变换模式的变换模式信息的SDST标志。
例如,当块的高度小于能够执行翻转方法的最小高度并且块的宽度大于能够执行翻转方法的最小宽度时,关于水平方向上的一维变换,在水平翻转之后使用DST-7执行一维水平变换,或者在不翻转的情况下使用DST-7执行一维水平变换。可仅使用DCT-2执行垂直方向上的一维变换。这里,可仅针对水平方向上的一维变换用信号发送作为指示翻转是否用作变换模式的变换模式信息的SDST标志。
例如,当当前块的尺寸大于能够执行翻转方法的最大尺寸时,不使用翻转和DST-7变换并且仅使用DCT-2变换。这里,可不用信号发送作为指示翻转和DST-7变换是否用作变换模式的变换模式信息的SDST标志。
例如,当当前块的尺寸大于能够执行翻转方法的最大尺寸时,仅使用DCT-2变换或DST-7变换。
例如,当能够执行翻转方法的最大尺寸是32×32并且最小尺寸是4×4时,对尺寸为64×64的块使用翻转和DST-7变换并且仅使用DCT-2变换。这里,对于尺寸为64×64的块,可不用信号发送作为指示翻转和DST-7是否用作变换模式的变换模式信息的SDST标志。此外,对于尺寸为4×4至32×32的块,可用信号发送作为指示翻转和DST-7是否用作变换模式的变换模式信息的SDST标志。在这种情况下,DST-7变换不用于尺寸为64×64的块,从而可节省存储用于尺寸为64×64的块的DST-7变换的存储器空间。
例如,当能够执行翻转方法的最大尺寸是32×32并且最小尺寸是4×4时,对尺寸为64×64的块不仅使用翻转方法,还使用DCT-2或DST-7变换。
例如,可按照四叉树将尺寸为M×N的正方形块分区为四个子块,并且可使用翻转对每个子块执行重排/重布置方法,随后可执行DST-7变换。这里,可针对每个子块显式地用信号发送翻转方法。翻转方法可作为两个比特的定长码被用信号发送,并可作为截断一元码被用信号发送。此外,可使用基于根据从分区获得的每个块的翻转方法的出现概率的二值化方法。这里,M和N可以是正整数,例如,64×64。
例如,可按照四叉树将尺寸为M×N的正方形块分区为四个子块,并且可使用翻转对每个子块执行重排/重布置方法,随后可执行DST-7变换。可隐式地确定针对每个子块的翻转方法。例如,可针对第一(左上方)子块确定水平和垂直翻转,可针对第二(右上方)子块确定垂直翻转,可针对第三(左下方)子块确定水平翻转,并可针对第四(右下方)子块确定不翻转。如上所述,当翻转方法被隐式地确定时,不需要用信号发送翻转方法。这里,M和N可以是正整数,例如,64×64。
例如,可按照二叉树将尺寸为2M×N的矩形块分区为两个M×N正方形块,并且可使用翻转对两个块中的每一个执行重排/重布置方法,随后可执行DST-7变换。这里,可针对每个子块显式地用信号发送翻转方法。翻转方法可作为两个比特的定长码被用信号发送,并可作为截断一元码被用信号发送。此外,可使用基于根据每个子块的翻转方法的出现概率的二值化方法。这里,M和N可以是正整数,例如,8×8。
例如,可按照二叉树将尺寸为2M×N的矩形块分区为两个M×N正方形块,并且可使用翻转对每个子块执行重排/重布置方法,随后可执行DST-7变换。可隐式地确定针对每个子块的翻转方法。例如,可针对第一(左侧)子块确定水平翻转,并可针对第二(右侧)子块确定不翻转。如上所述,当翻转方法被隐式地确定时,不需要用信号发送翻转方法。这里,M和N可以是正整数,例如,4×4。
例如,可按照二叉树将尺寸为M×2N的矩形块分区为两个M×N正方形块,并且可使用翻转对每个子块执行重排/重布置方法,随后可执行DST-7变换。可隐式地确定针对每个子块的翻转方法。可针对第一(上方)子块确定垂直翻转,并可针对第二(下方)子块确定不翻转。如上所述,当翻转方法被隐式地确定时,不需要用信号发送翻转方法。这里,M和N可以是正整数,例如,4×4。
可应用以下两种方法中的至少一种方法:对尺寸为M×N的块执行DCT-2变换/逆变换的方法;以及块按照四叉树或者按照二叉树被分区以产生子块并对每个子块执行翻转,随后执行DST-7变换/逆变换的方法。这里,可根据作为子块的母块的块中的相对位置来不同地执行翻转方法,并且这可被隐式地确定。这里,M和N可以是正整数,并且例如,M和N可以是64。也就是说,尺寸为M×N的块在尺寸上可以是相对大的块。
在左上方子块的情况下,可将水平和垂直翻转确定为针对子块的翻转。
在右上方子块的情况下,可将垂直翻转确定为针对子块的翻转。
在左下方子块的情况下,可将水平翻转确定为针对子块的翻转。
在右下方子块的情况下,可确定不执行针对子块的翻转。
可使用变换模式信息对关于基于翻转的残差信号重排/重布置方法的使用的信息(sdst_flag或sdst标志)进行熵编码/熵解码。也就是说,通过用信号发送变换模式信息,可在解码器中执行在编码器中执行的相同方法。例如,当指示变换模式信息的标志比特具有第一值时,将基于翻转的残差信号重排/重布置方法和DST-7用作变换/逆变换方法。当标志比特具有第二值时,使用另一变换/逆变换方法。这里,可针对每个块对变换模式信息进行熵编码/熵解码。这里,另一变换/逆变换方法可以是DCT-2变换/逆变换方法。此外,在变换跳过模式、残差差分PCM(RDPCM)模式和无损模式中的一个的情况下,省略对变换模式信息的熵编码/熵解码,并且不用信号发送变换模式信息。
可使用当前块的深度、当前块的尺寸、当前块的形状、邻近块的变换模式信息、当前块的编码块标志和关于当前块的变换跳过模式是否被使用的信息中的至少一个来对变换模式信息进行熵编码/熵解码。例如,当当前块的编码块标志是0时,省略对变换模式信息的熵编码/熵解码并且不用信号发送变换模式信息。此外,可在熵编码/熵解码期间从与当前块相邻的重建块的变换模式信息预测性地对变换模式信息进行编码/解码。此外,可基于当前块和邻近块的编码参数中的至少一个用信号发送变换模式信息。
此外,使用翻转方法信息,可按照标志或索引(flipping_idx)的形式来对四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的至少一种进行熵编码/熵解码。也就是说,通过用信号发送翻转方法信息,可在解码器中执行在编码器中执行的相同翻转方法。变换模式信息可包括翻转方法信息。
此外,在变换跳过模式、残差差分PCM(RDPCM)模式和无损模式中的一个的情况下,省略对翻转方法信息的熵编码/熵解码并且不用信号发送翻转方法信息。可使用当前块的深度、当前块的尺寸、当前块的形状、邻近块的翻转方法信息、当前块的编码块标志和关于当前块的变换跳过模式是否被使用的信息中的至少一个来对翻转方法信息进行熵编码/熵解码。例如,当当前块的编码块标志是0时,省略对翻转方法信息的熵编码/熵解码并且不用信号发送变换模式信息。此外,可在熵编码/熵解码期间从与当前块相邻的重建块的翻转方法信息预测性地对翻转方法信息进行编码/解码。此外,可基于当前块和邻近块的编码参数中的至少一个用信号发送翻转方法信息。
此外,残差信号重布置方法不限于上述残差信号重布置,并可通过以预定角度旋转块内的残差信号来实现重排。这里,所述预定角度可表示0度、90度、180度、-90度、-180度、270度、-270度、45度、-45度、135度、-135度等的角度。这里,可按照标志或索引的形式来对关于角度的信息进行熵编码/熵解码,并且可与变换模式信息的信号发送方法类似地执行关于角度的信息。
此外,可在熵编码/熵解码期间从与当前块相邻的重建块的角度信息预测性地对角度信息进行编码/解码。当使用角度信息执行重布置时,可在当前块的分区之后执行SDST或DST-7,但也可以在不对当前块进行分区的情况下以当前块为单位执行SDST或DST-7。
可根据子块的位置不同地确定所述预定角度。可以以限制的方式使用通过仅旋转子块中的特定位置处的子块(例如,第一子块)的重布置的方法。此外,可将使用预定角度的重布置应用于整个当前块。这里,作为重布置的目标的当前块可以是逆变换之前的残差块、反量化之前的残差块、逆变换之后的残差块、反量化之后的残差块、重建的残差块和重建块中的至少一个。
同时,为了实现与残差信号的重布置或旋转相同的效果,可重布置或旋转用于变换的变换矩阵的系数,并且这可应用于先前布置的残差信号以执行变换。也就是说,取代于残差信号的重布置,变换矩阵的重布置被用于执行变换,从而可实现与对残差信号执行重布置和变换的方法相同的效果。这里,可按照与上述残差信号重布置方法相同的方式执行变换矩阵的系数的重布置,并且可按照与上述残差信号重布置方法所需的用信号发送信息的方法相同的方式来执行变换矩阵的系数的重布置所需的用信号发送信息的方法。
同时,可将上述关于重排步骤的一部分残差信号重布置方法确定为编码器的最优重布置方法,并且可将关于确定的重布置方法的信息(重排方法信息)用信号发送到解码器。例如,当四个重布置方法被使用时,编码器将多达两个比特的关于残差信号重布置方法的信息用信号发送到解码器。
此外,当使用的重布置方法具有不同出现概率时,使用几个比特对具有高出现概率的重布置方法进行编码,并使用相对更多的比特对具有低出现概率的重布置方法进行编码。例如,按照出现概率的降序排列四个重布置方法,并可作为截断一元码(例如,(0,10,110,111)或(1,01,001,000))用信号发送。
此外,重布置方法的出现概率可根据编码参数(诸如,当前CU的预测模式、PU的帧内预测模式(方向)、邻近块的运动矢量等)而改变。因此,可根据编码参数不同地使用关于重布置方法的信息(翻转方法信息)的编码方法。例如,重布置方法的出现概率可根据帧内预测的预测模式而改变。因此,对于每个帧内模式,可将较少比特分配给具有高出现概率的重布置方法,并可将许多比特分配给具有低出现概率的重布置方法。可选地,根据情况,可不使用具有极低出现概率的重布置方法并可不对其分配任何比特。
可根据当前块的预测模式(帧间模式或帧内模式)、帧内预测模式(包括方向性模式和非方向性模式)、帧间预测模式、块尺寸、块形状(正方形形状或非正方形形状)、亮度/色度信号、变换模式信息等中的至少一个来构建包括残差信号重布置方法中的至少一个残差信号重布置方法的重布置集。重布置可表示翻转。此外,基于当前块和邻近块的编码参数中的至少一个,可构建包括残差信号重布置方法中的至少一个残差信号重布置方法的重布置集。
此外,根据当前块的预测模式、帧内预测模式、帧间预测模式、块尺寸、块形状、亮度/色度信号、变换模式信息等中的至少一个,可选择以下重布置集中的至少一个。此外,基于当前块和邻近块的编码参数中的至少一个,可选择重布置集中的至少一个。
重布置集可包括“不翻转”、“水平翻转”、“垂直翻转”以及“水平和垂直翻转”中的至少一个。如下示出重布置集的示例。
1、不翻转
2、水平翻转
3、垂直翻转
4、水平和垂直翻转
5、不翻转、以及水平翻转
6、不翻转、以及垂直翻转
7、不翻转、以及水平和垂直翻转
8、水平翻转、以及垂直翻转
9、水平翻转、以及水平和垂直翻转
10、垂直翻转、以及水平和垂直翻转
11、不翻转、水平翻转、以及垂直翻转
12、不翻转、水平翻转、以及水平和垂直翻转
13、不翻转、垂直翻转、以及水平和垂直翻转
14、水平翻转、垂直翻转、以及水平和垂直翻转
15、不翻转、水平翻转、垂直翻转、以及水平和垂直翻转
基于重布置集,可使用残差信号重布置方法中的至少一个用于当前块的重布置。
此外,根据当前块的预测模式、帧内预测模式、帧间预测模式、块尺寸、块形状、亮度/色度、变换模式信息、翻转方法信息等中的至少一个,可在重布置集中选择残差信号重布置方法中的至少一个。此外,基于当前块和邻近块的编码参数中的至少一个,可在重布置集中选择残差信号重布置方法中的至少一个。
根据当前块的预测模式,可构建至少一个重布置集。例如,当当前块的预测模式是帧内预测时,构建多个重布置集。当当前块的预测模式是帧间预测时,构建一个重布置集。
根据当前块的帧内预测模式,可构建至少一个重布置集。例如,当当前块的帧内预测模式是非方向性模式时,构建一个重布置集。当当前块的帧内预测模式是方向性模式时,构建多个重布置集。
根据当前块的尺寸,可构建至少一个重布置集。例如,当当前块的尺寸大于16×16时,构建一个重布置集。当当前块的尺寸等于或小于16×16时,构建多个重布置集。
根据当前块的形状,可构建至少一个重布置集。例如,当当前块的形状是正方形形状时,构建一个重布置集。当当前块的形状是非正方形形状时,构建多个重布置集。
根据当前块的亮度/色度信号,可构建至少一个重布置集。例如,当当前块是色度信号时,构建一个重布置集。当当前块是亮度信号时,构建多个重布置集。
此外,基于重布置集,可对残差信号重布置方法的索引进行熵编码/熵解码。这里,可将索引熵编码/熵解码为可变长码或定长码。
此外,基于重布置集,可执行残差信号重布置方法的索引的二值化和反二值化。这里,索引可被二值化和反二值化为可变长码或定长码。
此外,重布置集在编码器和解码器中可以是表的形式,并可通过等式被计算。
此外,重布置集可以以具有对称性的方式被构建。例如,针对重布置集的表可以以具有对称性的方式被构建。这里,所述表可以以针对帧内预测模式具有对称性的方式被构建。
此外,可根据帧内预测模式是奇数还是偶数以及帧内预测模式是否在特定范围内中的至少一个来构建重布置集。
以下表示出根据当前块的预测模式和帧内预测模式(方向)对残差信号重布置方法进行编码/解码的方法的示例。
此外,在下表中,可使用翻转方法信息来指示残差信号重布置方法中的至少一个残差信号重布置方法的使用。
[表1]
Figure BDA0003384621360000621
在表1中,残差信号重布置方法的列(1)至(4)指定残差信号重布置方法,诸如,用于上述残差信号重布置的扫描/重布置顺序的索引、用于预定角度值的索引、用于预定翻转方法的索引等。在表1中,残差信号重布置方法的列中的记号*表示在不用信号发送的情况下隐式地使用相应的重布置方法,记号-表示在相应的情况下不使用相应的重布置方法。隐式地使用重布置方法的含义可以是在不对残差信号重布置方法的索引进行熵编码/熵解码的情况下使用变换模式信息(sdst_flag或sdst标志)来使用重布置方法。残差信号重布置方法的列(1)至(4)可分别指的是(1)不翻转、(2)水平翻转、(3)垂直翻转以及(4)水平和垂直翻转。此外,数字0、1、10、11、110、111等可以是用于对残差信号重布置方法进行熵编码/熵解码的二值化/反二值化的结果。作为二值化/反二值化方法,可使用定长码、截断一元码、一元码等。如表1中所示,当当前块相应于预测模式和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。这里,45度角的对角线方向可表示朝向当前块中的左上方位置的方向或从当前块中的左上方位置朝向当前块的方向。
[表2]
Figure BDA0003384621360000631
作为另一示例,如表2中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表3]
Figure BDA0003384621360000632
作为另一示例,如表3中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表4]
Figure BDA0003384621360000641
作为另一示例,如表4中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。例如,当当前块处于帧内模式并且帧内预测方向是偶数时,将不翻转、水平翻转以及垂直翻转方法中的至少一个用作残差信号重布置方法。此外,当当前块处于帧内模式并且帧内预测方向是奇数时,将不翻转、垂直翻转、水平和垂直翻转方法中的至少一个用作残差信号重布置方法。
[表5]
Figure BDA0003384621360000642
作为另一示例,如表5中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表6]
Figure BDA0003384621360000643
Figure BDA0003384621360000651
作为另一示例,如表6中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表7]
Figure BDA0003384621360000652
作为另一示例,如表7中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表8]
Figure BDA0003384621360000653
作为另一示例,如表8中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表9]
Figure BDA0003384621360000661
作为另一示例,如表9中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表10]
Figure BDA0003384621360000662
作为另一示例,如表10中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。这里,135度角的对角线方向可表示朝向当前块中的右上方位置的方向或从当前块中的右上方位置朝向当前块的方向。例如,135度角的对角线方向模式的值可以是6。这里,-45度角的对角线方向可表示朝向当前块中的右下方位置的方向或从当前块中的右下方位置朝向当前块的方向。例如,-45度角的对角线方向模式的值可以是2。
[表11]
Figure BDA0003384621360000671
作为另一示例,如表11中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表12]
Figure BDA0003384621360000672
Figure BDA0003384621360000681
作为另一示例,如表12中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。
[表13]
Figure BDA0003384621360000682
作为另一示例,如表13中所示,当当前块相应于预测模式中的至少一个和帧内预测模式(方向)中的至少一个时,在编码器和解码器中使用至少一个重布置方法。这里,残差信号重布置方法可表示变换的类型。例如,当残差信号重布置方法是(1),水平变换和垂直变换两者表示第一变换核。作为另一示例,当残差信号重布置方法是(2),水平变换和垂直变换分别表示第二变换核和第一变换核。作为另一示例,当残差信号重布置方法是(3),水平变换和垂直变换分别表示第一变换核和第二变换核。作为另一示例,当残差信号重布置方法是(4),水平变换和垂直变换分别表示第二变换核和第二变换核。例如,第一变换核可以是DST-7,第二变换核可以是DCT-8。当帧内预测模式是平面模式或DC模式时,使用基于出现概率的截断一元码对关于四个重布置方法的信息(重排方法信息)进行熵编码/解码。当帧内预测方向是水平方向或靠近水平方向的模式时,重布置方法(1)和/或重布置方法是(3)的概率高。在这种情况下,一个比特可用于两个重布置方法中的每一个,并可对关于重布置方法的信息进行熵编码/熵解码。这里,靠近水平方向的模式的含义可以是特定模式的值在水平方向模式的值-K与水平方向模式的值+K之间。这里,K可以是整数。例如,当水平方向模式的值是18并且K是4并且特定模式是20时,所述特定模式是靠近水平方向的模式。例如,当水平方向模式的值是18并且K是4并且特定模式是26时,所述特定模式不是靠近水平方向的模式。
当帧内预测方向是垂直方向或靠近垂直方向的模式时,重布置方法(1)和/或重布置方法是(2)的概率高。在这种情况下,一个比特可用于两个方法中的每一个,并可对关于重布置方法的信息进行熵编码/熵解码。这里,靠近垂直方向的模式的含义可以是特定模式的值在垂直方向模式的值-K与垂直方向模式的值+K之间。这里,K可以是整数。例如,当垂直方向模式的值是50并且K是2并且特定模式是51时,所述特定模式是靠近垂直方向的模式。例如,当垂直方向模式的值是50并且K是8并且特定模式是20时,所述特定模式不是靠近垂直方向的模式。
当帧内预测方向是45度角的对角线方向或靠近45度角的对角线方向的模式时,与重布置方法(1)的概率相比,重布置方法(2)、(3)和(4)的概率非常低。在这种情况下,仅应用上述方法之一,并可在不用信号发送关于重布置方法的信息的情况下隐式地使用该方法。这里,靠近45度角的对角线方向的模式的含义可以是特定模式的值在45度角的对角线方向模式的值-K与45度角的对角线方向模式的值+K之间。这里,K可以是整数。例如,当45度角的对角线方向模式的值是34并且K是2并且特定模式是36时,所述特定模式是靠近45度角的对角线方向模式的模式。例如,当45度角的对角线方向模式的值是34并且K是8并且特定模式是10时,所述特定模式不是靠近45度角的对角线方向模式的模式。
当帧内预测模式是偶数时,仅针对重布置方法(1)、(2)和(3),将关于重布置方法的信息熵编码/熵解码为截断一元码或一元码。
当帧内预测模式是奇数时,仅针对重布置方法(1)、(3)和(4),将关于重布置方法的信息熵编码/熵解码为截断一元码或一元码。
对于其它帧内预测方向,重布置方法(4)的出现概率会低,故仅针对重布置方法(1)、(2)和(3),将关于重布置方法的信息熵编码/熵解码为截断一元码或一元码。
在帧间预测的情况下,重布置方法(1)至(4)的出现概率会被认为相同,并可将关于重布置方法的信息熵编码/熵解码为两个比特的定长码。
算术编码/解码可用于所述码。此外,可不使用针对所述码的使用上下文模型的算术编码,并且可在旁路模式下进行熵编码/熵解码。
可针对画面内的区域或CTU、整个画面、或画面组内的当前块执行使用DST-7的变换/逆变换而不进行翻转,或者可通过在使用DCT-2执行变换/逆变换的两种方法中选择一种来执行变换/逆变换。在这种情况下,可对指示以当前块为单位使用DST-7还是DCT-2的一比特标志信息(变换模式信息)进行熵编码/熵解码。该方法可用于距参考样点的距离越长而残差信号的能量越大的情况,或可用于减小编码和解码中的计算复杂度。可以以CTU、条带、PPS、SPS或其它特定区域为单位用信号发送关于使用该方法的区域的信息,并可以以开/关(on/off)形式用信号发送一比特标志。
对于画面内的区域或CTU、整个画面、或画面组内的当前块,可通过在以下三种方法中选择一种来执行变换/逆变换:DCT-2变换/逆变换、不进行翻转的DST-7变换/逆变换、以及执行垂直翻转之后的DST-7变换/逆变换。可使用当前块的附近信息隐式地选择关于三种方法中的哪种方法将被选择的信息,或可通过用信号发送索引(变换模式信息或翻转方法信息)显式地选择关于三种方法中的哪种方法将被选择的信息。可以以DCT-2为0、不进行翻转的DST-7为10并且垂直翻转之后的DST-7为11的方式将索引用信号发送为截断一元码。此外,根据当前块的尺寸和附近信息,可交换DCT-2的二值化和DST-7的二值化以用于用信号发送。此外,可以以CU为单元来用信号发送二进制数中的第一二进制数,并可以以TU或PU为单位来用信号发送剩余的二进制数。可以以CTU、条带、PPS、SPS或其它特定区域为单位用信号发送关于使用该方法的区域的信息,并可以以开/关形式用信号发送一比特标志。
对于画面内的区域或CTU、整个画面、或画面组内的当前块,可通过在以下四种方法中选择一种来执行变换/逆变换:DCT-2变换/逆变换、不进行翻转的DST-7变换/逆变换、执行水平翻转之后的DST-7变换/逆变换、以及执行垂直翻转之后的DST-7变换/逆变换。可使用当前块的附近信息隐式地选择关于四种方法中的哪种方法将被选择的信息,或可通过用信号发送索引(变换模式信息或翻转方法信息)显式地选择关于四种方法中的哪种方法将被选择的信息。可以以DCT-2为0、不进行翻转的DST-7为10、水平翻转之后的DST-7为110并且垂直翻转之后的DST-7为111的方式将索引用信号发送为截断一元码。此外,根据当前块的尺寸和附近信息,可交换DCT-2的二值化和DST-7的二值化以用于用信号发送。此外,可以以CU为单元来用信号发送二进制数中的第一二进制数,并可以以TU或PU为单位来用信号发送剩余的二进制数。根据帧内预测模式,可仅使用四种方法中的一部分。例如,当帧内预测模式在数值上小于对角线预测模式、是DC模式或者是平面模式时,仅使用三种方法:DCT-2、不进行翻转的DST-7、以及垂直翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10并且垂直翻转之后的DST-7为11的方式用信号发送变换模式信息或翻转方法信息。例如,当帧内预测模式在数值上大于对角线预测模式时,仅使用三种方法:DCT-2、不进行翻转的DST-7、以及水平翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10并且水平翻转之后的DST-7为11的方式用信号发送变换模式信息或翻转方法信息。可以以CTU、条带、PPS、SPS或其它特定区域为单位用信号发送关于使用该方法的区域的信息,并可以以开/关形式用信号发送一比特标志。
对于画面内的区域或CTU、整个画面、或画面组内的当前块,可通过在以下五种方法中选择一种来执行变换/逆变换:DCT-2变换/逆变换、不进行翻转的DST-7变换/逆变换、执行水平翻转之后的DST-7变换/逆变换、执行垂直翻转之后的DST-7变换/逆变换、以及执行水平和垂直翻转之后的DST-7变换/逆变换。可使用当前块的附近信息隐式地选择关于五种方法中的哪种方法将被选择的信息,或可通过用信号发送索引(变换模式信息或翻转方法信息)显式地选择关于五种方法中的哪种方法将被选择的信息。可以以DCT-2为0、不进行翻转的DST-7为10、水平翻转之后的DST-7为110、垂直翻转之后的DST-7为1110并且水平和垂直翻转之后的DST-7为1111的方式将索引用信号发送为截断一元码。此外,根据当前块的尺寸和附近信息,可交换DCT-2的二值化和DST-7的二值化以用于用信号发送。此外,可以以CU为单元来用信号发送二进制数中的第一二进制数,并可以以TU或PU为单位来用信号发送剩余的二进制数。此外,可通过在二进制数(第一二进制数、第二二进制数和第三二进制数)中进行区分来将信息用信号发送为定长码。例如,可以以DCT-2为0、不进行翻转的DST-7为000、水平翻转之后的DST-7为001、垂直翻转之后的DST-7为010并且水平和垂直翻转之后的DST-7为011的方式用信号发送变换模式信息或翻转方法信息。此外,根据帧内预测模式,可仅使用五种方法中的一部分。例如,当帧内预测模式是靠近水平方向预测模式的预测模式时,仅使用三种变换方法:DCT-2、不进行翻转的DST-7、以及垂直翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10并且垂直翻转之后的DST-7为11的方式用信号发送变换模式信息或翻转方法信息。
例如,当帧内预测模式是靠近垂直方向预测模式的预测模式时,仅使用三种变换方法:DCT-2、不进行翻转的DST-7、以及水平翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10并且水平翻转之后的DST-7为11的方式用信号发送变换模式信息或翻转方法信息。
例如,当帧内预测模式是靠近对角线方向预测模式的预测模式时,仅使用两种变换方法:DCT-2和不进行翻转的DST-7。在这种情况下,可以以DCT-2并且不进行翻转的DST-7为1的方式用信号发送变换模式信息或翻转方法信息。
例如,在除了上述三种情况之外的情况下,可使用所有五种变换方法:DCT-2、不进行翻转的DST-7、水平翻转之后的DST-7、垂直翻转之后的DST-7、以及水平和垂直翻转之后的DST-7。可将用于变换方法的索引用信号发送为截断一元码方案、定长码方案或其它方案。
例如,当帧内预测模式是非方向模式时,使用所有五种变换方法:DCT-2、不进行翻转的DST-7、水平翻转之后的DST-7、垂直翻转之后的DST-7、以及水平和垂直翻转之后的DST-7。可将用于变换方法的索引用信号发送为截断一元码方案、定长码方案或其它方案。
例如,当帧内预测模式是奇数模式时,使用四种变换方法:DCT-2、不进行翻转的DST-7、垂直翻转之后的DST-7、以及水平和垂直翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10、垂直翻转之后的DST-7为110并且水平和垂直翻转之后的DST-7为111的方式用信号发送变换模式信息或翻转方法信息。
例如,当帧内预测模式是偶数模式时,使用四种变换方法:DCT-2、不进行翻转的DST-7、水平翻转之后的DST-7、以及垂直翻转之后的DST-7。在这种情况下,可以以DCT-2为0、不进行翻转的DST-7为10、水平翻转之后的DST-7为110并且垂直翻转之后的DST-7为111的方式用信号发送变换模式信息或翻转方法信息。可以以CTU、条带、PPS、SPS或其它特定区域为单位用信号发送关于使用该方法的区域的信息,并可以以开/关形式用信号发送一比特标志。
图22和图23分别示出根据本发明的残差信号重布置(残差重布置)在编码器和解码器中执行的位置。
参照图22,在编码器中,可在DST-7变换处理之前执行残差信号重布置。虽然在图22中未示出,但是在编码器中,可在变换处理与量化处理之间执行残差信号重布置,或者可在量化之后执行残差信号重布置。
参照图23,在解码器中,可在DST-7逆变换处理之后执行残差信号重布置。虽然在图23中未示出,但是在解码器中,可在反量化处理与逆变换处理之间执行残差信号重布置,或者可在反量化之前执行残差信号重布置。
以上已经参照图7至图23描述了根据本发明的SDST方法。以下,将参照图24和图25详细描述应用了根据本发明的SDST方法的解码方法、编码方法、解码器、编码器和比特流。
图24是示出根据本发明的使用SDST方法的解码方法的实施例的示图。
参照图24,首先,在步骤S2401,可确定当前块的变换模式,在步骤S2402,可根据当前块的变换模式对当前块的残差数据执行逆变换。
接下来,在步骤S2403,可对当前块的已根据当前块的变换模式执行了逆变换的残差数据执行重布置。
这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
SDST模式可指示按照DST-7变换模式执行逆变换并且对已执行逆变换的残差数据执行重布置的模式。
SDCT模式可指示按照DCT-2变换模式执行逆变换并且对已执行逆变换的残差数据执行重布置的模式。
DST模式可指示按照DST-7变换模式执行逆变换并且不对已执行逆变换的残差数据执行重布置的模式。
DCT模式可指示按照DCT-2变换模式执行逆变换并且不对已执行逆变换的残差数据执行重布置的模式。
因此,仅当当前块的变换模式是SDST和SDCT之一时,才执行残差数据的重布置。
虽然如上所述描述了针对SDST和DST模式按照DST-7变换模式执行逆变换,但是可使用基于其它DST(诸如,DST-1、DST-2等)的变换模式。
同时,在步骤S2401的当前块的变换模式的确定可包括:从比特流获得当前块的变换模式信息;并且基于变换模式信息确定当前块的变换模式。
此外,在步骤S2401的当前块的变换模式的确定中,可基于当前块的预测模式、当前块的深度信息、当前块的尺寸和当前块的形状中的至少一个来进行确定。
具体地,当当前块的预测模式是帧间预测模式时,将SDST和SDCT之一确定为当前块的变换模式。
同时,在步骤S2403的当前块的已执行了逆变换的残差数据的重布置可包括:以按照第一方向的顺序扫描布置在当前块中的已执行了逆变换的残差数据;以按照第二方向的顺序重布置当前块中已执行了逆变换的按照第一方向扫描的残差数据。这里,按照第一方向的顺序可以是光栅扫描顺序、右上对角线扫描顺序、水平扫描顺序和垂直扫描顺序中的一个。此外,可如下定义按照第一方向的顺序。
(1)从上方行到下方行的扫描,并且在一行中从左侧到右侧的扫描
(2)从上方行到下方行的扫描,并且在一行中从右侧到左侧的扫描
(3)从下方行到上方行的扫描,并且在一行中从左侧到右侧的扫描
(4)从下方行到上方行的扫描,并且在一行中从右侧到左侧的扫描
(5)从左侧列到右侧列的扫描,并且在一列中从上方到下方的扫描
(6)从左侧列到右侧列的扫描,并且在一列中从下方到上方的扫描
(7)从右侧列到左侧列的扫描,并且在一列中从上方到下方的扫描
(8)从右侧列到左侧列的扫描,并且在一列中从下方到上方的扫描
(9)按照螺旋形状的扫描:从块的内部(或外部)到块的外部(或内部)的扫描,并且按照顺时针/逆时针方向的扫描
同时,关于按照第二方向的顺序,可选择性地使用上述方向之一。第一方向和第二方向可以相同,或可彼此不同。
此外,在步骤S2403的当前块的已执行了逆变换的残差数据的重布置中,以当前块内的子块为单位执行重布置。在这种情况下,可基于当前块内的子块的位置来重布置残差数据。由于上面已经在等式6中详细描述了基于子块的位置的残差数据的重布置,故将省略重复描述。
此外,在步骤S2403的当前块的已执行了逆变换的残差数据的重布置中,可按照预定义的角度来旋转当前块内布置的已执行了逆变换的残差数据以用于重布置。
此外,在步骤S2403的当前块的已执行了逆变换的残差数据的重布置中,根据翻转方法,可对当前块内布置的已执行了逆变换的残差数据执行翻转以用于重布置。在这种情况下,在步骤S2401的当前块的变换模式的确定可包括:从比特流获得翻转方法信息;并且基于翻转方法信息确定用于当前块的翻转方法。
图25是示出根据本发明的使用SDST方法的编码方法的实施例的示图。
参照图25,在步骤S2501,可确定当前块的变换模式。
接下来,在步骤S2502,可根据当前块的变换模式对当前块的残差数据进行重布置。
接下来,在步骤S2503,可对当前块的已根据当前块的变换模式被重布置的残差数据进行变换。
这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。由于已经参照图24描述了SDST、SDCT、DST和DCT,故将省略重复描述。
同时,仅当当前块的变换模式是SDST和SDCT之一时,才执行残差数据的重布置。
此外,在步骤S2501的当前块的变换模式的确定中,可基于当前块的预测模式、当前块的深度信息、当前块的尺寸和当前块的形状中的至少一个来进行确定。
这里,当当前块的预测模式是帧间预测模式时,将SDST和SDCT之一确定为当前块的变换模式。
同时,在步骤S2502的当前块的残差数据的重布置可包括:以按照第一方向的顺序扫描布置在当前块中的残差数据;以按照第二方向的顺序来重布置当前块中的按照第一方向扫描的残差数据。
此外,在步骤S2502的当前块的残差数据的重布置中,以当前块内的子块为单位执行重布置。
在这种情况下,在步骤S2502的当前块的残差数据的重布置中,可基于子块在当前块内的位置来重布置残差数据。
同时,在步骤S2502的当前块的残差数据的重布置中,可按照预定义的角度来旋转当前块内布置的残差数据以用于重布置。
同时,在步骤S2502的当前块的残差数据的重布置中,根据翻转方法,可对当前块内布置的残差数据执行翻转以用于重布置。
根据本发明的使用SDST方法的图像解码器可包括逆变换模块,其中,所述逆变换模块确定当前块的变换模式,根据当前块的变换模式对当前块的残差数据执行逆变换,并对当前块的已根据当前块的变换模式执行了逆变换的残差数据执行重布置。这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
根据本发明的使用SDST方法的图像解码器可包括逆变换模块,其中,所述逆变换模块确定当前块的变换模式,根据当前块的变换模式对当前块的残差数据执行重布置,并对当前块的已根据当前块的变换模式被重布置的残差数据执行逆变换。这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
根据本发明的使用SDST方法的图像编码器可包括变换模块,其中,所述变换模块确定当前块的变换模式,根据当前块的变换模式来重布置当前块的残差数据,并对当前块的已根据当前块的变换模式被重布置的残差数据进行变换。这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
根据本发明的使用SDST方法的图像编码器可包括变换模块,其中,所述变换模块确定当前块的变换模式,根据当前块的变换模式对当前块的残差数据进行变换,并对当前块的已根据当前块的变换模式被变换的残差数据执行重布置。这里,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
根据本发明的通过使用SDST方法的编码方法产生的比特流,所述使用SDST方法的编码方法可包括:确定当前块的变换模式,根据当前块的变换模式来重布置当前块的残差数据,并对当前块的已根据当前块的变换模式被重布置的残差数据进行变换,其中,变换模式可包括重排离散正弦变换(SDST)、重排离散余弦变换(SDCT)、离散正弦变换(DST)和离散余弦变换(DCT)中的至少一个。
图26至图31示出在根据本发明的编码器和解码器中执行翻转方法的位置的示例。
图26是示出在翻转之后执行变换的方法中的编码处理的实施例的示图。
图27是示出在逆变换之后执行翻转的方法中的解码处理的实施例的示图。
参照图26,从当前块的原始信号减去帧间或帧内预测信号以产生残差信号,随后可将DCT-2变换、翻转和DST-7变换之一选择为变换方法。当变换方法是DCT-2变换时,使用DCT-2变换对残差信号执行变换,从而产生变换系数。当变换方法是翻转和DST-7变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转、以及水平和垂直翻转)之一以对残差信号执行翻转,随后使用DST-7变换以对已执行了翻转的残差信号执行变换,从而产生变换系数。通过对变换系数执行量化,可产生量化的等级。
参照图27,接收量化的等级以执行反量化,从而产生变换系数。可选择与在编码处理中选择的方法相应并与DCT-2逆变换或DST-7逆变换和翻转相应的方法。也就是说,当在编码处理中执行了DCT-2变换时,在解码处理中执行DCT-2逆变换。此外,当在编码处理中执行了翻转和DST-7变换方法时,在解码处理中执行DST-7逆变换和翻转。当逆变换方法是DCT-2逆变换时,使用DCT-2逆变换对变换系数执行逆变换,从而产生重建残差信号。当逆变换方法是DST-7逆变换和翻转方法时,使用DST-7逆变换对残差系数执行逆变换以产生重建残差信号。随后选择四种翻转方法(不翻转、水平翻转、垂直翻转、以及水平和垂直翻转)之一以对重建残差信号执行翻转,从而产生翻转的重建残差信号。将帧间或帧内预测信号与重建残差信号或者翻转的重建残差信号相加,从而产生重建信号。
图28是示出在变换之后执行翻转的方法中的编码处理的实施例的示图。
图29是示出在翻转之后执行逆变换的方法中的解码处理的实施例的示图。
参照图28,从当前块的原始信号减去帧间或帧内预测信号以产生残差信号,随后可将DCT-2变换、DST-7变换和翻转之一选择为变换方法。当变换方法是DCT-2变换时,使用DCT-2变换对残差信号执行变换,从而产生变换系数。当变换方法是DST-7变换和翻转方法时,使用DST-7变换对残差信号执行变换。随后,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)之一以对变换系数执行翻转,从而产生已执行翻转的变换系数。通过对变换系数或已执行翻转的变换系数执行量化,可产生量化的等级。当对变换系数执行翻转时,执行变换系数的重布置。执行重布置的方法可以是与翻转相同的方法,可以是执行用于在变换基的零点处使轴旋转的第二变换的方法,可以是交换变换系数的正号和负号的方法,等等。
参照图29,接收量化的等级以执行反量化,从而产生变换系数。可选择与在编码处理中选择的方法相应并与DCT-2逆变换或翻转和DST-7逆变换相应的方法。也就是说,当在编码处理中执行了DCT-2变换时,在解码处理中执行DCT-2逆变换。当在编码处理中执行了DST-7变换和翻转方法时,在解码处理中执行翻转和DST-7逆变换。当逆变换方法是DCT-2逆变换时,使用DCT-2逆变换对变换系数执行逆变换,从而产生重建残差信号。当逆变换方法是翻转和DST-7逆变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)之一以对变换系数执行翻转。随后,使用DST-7逆变换以对已执行翻转的变换系数执行逆变换,从而产生重建残差信号。将帧间或帧内预测信号与重建残差信号相加,从而产生重建信号。
图30是示出在量化之后执行翻转的方法中的编码处理的实施例的示图。
图31是示出在翻转之后执行反量化的方法中的解码处理的实施例的示图。
参照图30,从当前块的原始信号减去帧间或帧内预测信号以产生残差信号,随后可将DCT-2变换和DST-7变换之一选择为变换方法。当变换方法是DCT-2变换时,使用DCT-2变换对残差信号执行变换,从而产生变换系数。当变换方法是DST-7变换时,使用DST-7变换对残差信号执行变换,从而产生变换系数。通过对变换系数执行量化,可产生量化的等级。此外,当变换方法是DST-7变换时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)之一以对量化的等级执行翻转,从而产生已执行翻转的量化的等级。此外,当对量化的等级执行翻转时,执行量化的等级的重布置。执行重布置的方法可以是与翻转相同的方法,可以是执行用于在变换基的零点处使轴旋转的第二变换的方法,可以是交换量化的等级的正号和负号的方法,等等。
参照图31,接收量化的等级,并选择与在编码处理中选择的方法相应并与DCT-2逆变换和DST-7逆变换相应的逆变换方法。也就是说,当在编码处理中执行了DCT-2变换时,在解码处理中执行DCT-2逆变换。此外,当在编码处理中执行了DST-7变换时,在解码处理中执行DST-7逆变换。当逆变换方法是DCT-2逆变换时,对量化的等级执行反量化以产生变换系数,随后使用DCT-2逆变换对变换系数执行逆变换,从而产生重建残差信号。当逆变换方法是DST-7逆变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)之一以对量化的等级执行翻转,随后对已执行翻转的量化的等级执行反量化,从而产生变换系数。使用DST-7逆变换对变换系数执行逆变换,从而产生重建残差信号。将帧间或帧内预测信号与重建残差信号相加,从而产生重建信号。
同时,可基于从编码器用信号发送的关于翻转位置的信息来确定在解码器中执行翻转方法的位置。
图32是示出对残差块执行翻转的示图。
参照图32,可对残差块执行“不翻转”、“水平翻转”、“垂直翻转”以及“水平和垂直翻转”中的至少一种。如图32所示,样点在残差块内的位置可根据翻转类型而改变。
图33是示出用于将对8×8的尺寸的残差块执行翻转实现为硬件的实施例的示图。
参照图33,在对M×N残差块的垂直翻转的硬件实现中,通过将用于从残差块存储器读取数据的地址值(addr)改变为M-1-addr来对M×N块执行垂直翻转。也就是说,取代于垂直翻转操作,将用于M×N块的存储器行地址改变为读取残差块内的数据,从而实现垂直翻转。
在对M×N残差块的水平翻转的硬件实现中,通过按照反向读取顺序改变残差块存储器中的数据值来对M×N块执行水平翻转。也就是说,取代于水平翻转操作,改变了读取M×N块的数据值的顺序,从而实现水平翻转。例如,当数据a、b、c、d、e、f、g和h按照此顺序存储在存储器中时,数据值h、g、f、e、d、c、b和a按照此顺序被读取,从而执行水平翻转。
图34是示出对残差块执行翻转和变换的示图。
参照图34,可对残差块执行“不翻转(No-Flip)”、“水平翻转(H-Flip)”、“垂直翻转(V-Flip)”以及“水平和垂直翻转(HV-Flip)”中的至少一种,并可执行DST-7变换。如图34所示,残差块内的样点的位置可根据翻转类型而改变,并可执行DST-7变换。
以下示出使用自适应多重变换(AMT)方法的示例,其中,在该方法中使用了在说明书中使用的变换中的至少一种变换。
可使用在说明书中使用的变换中的至少一种变换来构建AMT集。例如,除了诸如DCT-2、DCT-5、DCT-8、DST-1、DST-7等的变换之外,还可将针对帧内和帧间-编码/解码的每个块的至少一种变换添加到AMT变换集中。具体地,可将DST-4和恒等变换添加到AMT变换集中用于帧间-编码/解码的块,并可将KLT-1和KLT-2添加到AMT变换集中用于帧内-编码/解码的块。
可添加与非2的幂的诸如4×24和8×48的尺寸的块相应的变换。例如,在帧内编码/解码处理中,可如下表14中所示来定义均具有四个变换对的七个变换集。
[表14]
Figure BDA0003384621360000801
在表14中,变换对的第一项可表示按照垂直方向的变换,第二项可表示按照水平方向的变换。可按照基于不同帧内预测模式和不同块尺寸分配七个变换集中的每个变换集的方式来定义表14中的变换对集。在表14中,T0至T6可表示与各个块尺寸相应的可用变换对集。例如,T0可用于2×2块尺寸,T1可用于4×4块尺寸,T2可用于8×8块尺寸,T3可用于16×16块尺寸,T4可用于32×32块尺寸,T5可用于64×64块尺寸,T6可用于128×128块尺寸。可将恒等变换应用于尺寸不超过16×16的块。此外,可按照靠近水平和垂直帧内预测方向的模式将恒等变换应用于块。可基于块的尺寸将靠近水平和/或垂直帧内预测方向的模式定义为阈值。例如,当变换索引是3并且块满足以上条件时,应用水平和/或垂直恒等变换。同时,在帧间编码/解码处理中,可如下表15中所示来定义均具有四个变换对的两个变换集。
[表15]
Figure BDA0003384621360000811
在表15中,T0和T1可表示与块尺寸相应的可用变换对集。例如,在表15中,可将包括KLT的变换集(即,T1,帧间)应用于尺寸等于或小于16×16的块,并可将T0,帧间应用于尺寸大于16×16的块。
此外,可使用仅使用DCT-2变换和调整步骤来近似AMT变换的方法。可使用用于将DCT-2变换变换为与AMT变换类似的形式的块带正交矩阵来定义调整步骤。
在说明书中使用的用于AMP的初级变换集可由DCT-2、DCT-8、DST-4、DST-7变换等构成,并且初级变换集可由DCT-8、DST-4和DST-7变换构成。此外,可通过基于DCT-8变换矩阵执行翻转、符号改变等来实现DST-7变换矩阵。
例如,变换用于构建二维变换集(即,水平和垂直变换)以使用在帧间编码/解码处理中的结果。在帧内编码/解码处理中,可使用如下表16所示的二维变换集。
[表16]
Figure BDA0003384621360000821
表16示出针对每个预测模式(predModIdx)和每个变换索引(TrIdx)的用于垂直和水平变换的变换集。此外,可由使用DCT-8和DST-7的变换集来替换AMT变换集。
此外,当块的水平或垂直尺寸超过32个像素时,不将AMT变换应用于块,并且不将AMT变换使用信息(AMT标志)和变换索引信息(AMT索引)中的至少一个用信号发送到解码器。
可由其它变换矩阵来替换在说明书中使用的AMT变换集中包括的DCT-8、DST-1和DCT-5的变换矩阵。可使用翻转的DST-7以取代DCT-8。可使用DST-6以取代DST-1。可使用DCT-2以取代DCT-5。
如以下等式7中所示,可从DST-7推导翻转的DST-7和DST-6的变换矩阵。
[等式7]
翻转的DST-7:
Figure BDA0003384621360000822
DST-6:
Figure BDA0003384621360000823
这里,
Figure BDA0003384621360000824
表示DST-7的N×N变换矩阵中的第k基本矢量的第l分量。
此外,可将包括DCT-8、DST-1和DCT-5的变换矩阵的AMT变换应用于亮度分量和色度分量两者。
可基于依据模式的变换集和指示水平和垂直变换的显式地用信号发送的AMT索引来确定用于亮度分量的变换。
在色度分量/帧内模式的情况下,可以按照与确定用于亮度分量的变换的方法相同的方式来确定变换,变换候选的数量可小于用于亮度分量的变换候选的数量。
在色度分量/帧间模式的情况下,可通过指示AMT索引是否与同位块相同的一比特标志或者亮度分量的默认变换(DCT-2×DCT-2)来确定变换。
此外,AMT可在DCT-2、DST-7和翻转的DST-7(FDST-7)中选择水平变换和垂直变换。此外,可定义AMT标志。当AMT标志是0时,其指示DCT-2用于水平变换和垂直变换两者。当AMT标志是1时,其指示根据AMT索引使用另一变换。仅当块的宽度和高度都等于或小于64时,才允许AMT使用。可通过帧内预测模式确定AMT标志。在偶数帧内预测模式下,可将AMT标志隐式地分配为1。在奇数帧内预测模式下,可将AMT标志隐式地分配为0。此外,在奇数帧内预测模式下,可将AMT标志隐式地分配为1。在偶数帧内预测模式下,可将AMT标志隐式地分配为0。
可使用添加了两个变换DST-7和DCT-8的变换集,并且可将应用AMT的最大块尺寸限制为32×32的尺寸。可将具有长度为2N+1的离散傅立叶变换(DFT)的前向N×N DST-7实现为获得N×N DST-7。可将2N+1FFT构建为二维FFT。可在DST-7计算之前和之后立刻通过符号改变和重排序从DST-7推导DCT-8。因此,可重新使用DST-7以实现DCT-8。
仅对当前块内的子块执行针对当前块的变换或逆变换。例如,子块可以是当前块中左上方位置处的子块。可独立地确定子块的水平长度(宽度)和垂直长度(高度)。例如,可根据应用于水平变换或逆变换(或者垂直变换或逆变换)的变换核的类型来确定子块的水平长度(宽度)(或垂直长度(高度))。例如,当应用于水平变换或逆变换的变换核是DCT-2时,水平长度(宽度)是32个样点。例如,当应用于水平变换或逆变换的变换核不是DCT-2而是例如DST-7或DCT-8时,水平长度(宽度)是16个样点。类似地,例如,当应用于垂直变换或逆变换的变换核是DCT-2时,垂直长度(高度)是32个样点。例如,当应用于垂直变换或逆变换的变换核不是DCT-2而是例如DST-7或DCT-8时,垂直长度(高度)是16个样点。此外,由于子块不能大于当前块,故当当前块的长度短于子块的推导出的长度(例如,32个样点或16个样点)时,将执行了变换或逆变换的块的长度确定为当前块的长度。可不对当前块内的区域中的未被包括在子块中的样点执行变换或逆变换。可将样点的所有样点值设置为“0”。这里,子块可包括作为输入信号与预测信号之间的差的残差信号,或可包括从残差信号的变换得到的变换系数。
在帧内和帧间编码/解码处理中,可隐式地确定AMT变换。
可分别如下表17和表18所示来表示亮度分量和色度分量的依据帧内预测模式的变换。
[表17]
Figure BDA0003384621360000841
[表18]
Figure BDA0003384621360000842
这里,表17示出针对亮度分量的变换映射表,并且表18示出针对色度分量的变换映射表。此外,依据位置的变换可在合并模式下用于残差信号。在合并模式下用于残差信号的变换可根据用于当前块的运动补偿的空间运动矢量预测因子(MVP)候选而改变。
以下表19示出MVP位置与变换之间的映射表。
[表19]
MVP位置 水平变换 垂直变换 块尺寸限制
L(左侧) DST-7 DCT-2 宽度<=32&&高度<=32
A(上方) DCT-2 DST-7 宽度<=32&&高度<=32
在表19中,针对左侧MVP候选,可分别将DST-7和DCT-2用作水平和垂直变换。此外,针对上方MVP候选,可分别将DCT-2和DST-7用作水平和垂直变换。在其它情况下,可将DCT-2用作默认变换。可对组合了AMT变换使用信息、初级变换、不可分离次级变换(NSST)使用信息、次级变换的变换使用信息进行熵编码/熵解码。可通过单个变换索引来表示AMT和NSST的使用,而不是独立地用信号发送初级变换的索引和次级变换的索引,可通过一个变换索引组合初级变换和次级变换以用信号发送。此外,组合的变换索引可用于亮度分量和色度分量两者。
此外,可从针对每个块的N个预定义的变换候选集选择在说明书中使用的变换。这里,N可以是正整数。变换候选中的每一个可指定初级水平变换、初级垂直变换和次级变换(可与恒等变换相同)。变换候选的列表可根据块尺寸和预测模式而改变。可如下将选择的变换用信号发送。当编码块标志是1时,发送指示候选列表的第一变换是否被使用的标志。当指示候选列表的第一变换是否被使用的标志是0时,应用以下步骤:当非零变换系数等级的数量大于阈值时,发送指示使用的变换候选的变换索引;否则,使用列表的第二变换。
此外,仅当作为初级变换的DCT-2用作默认变换时,使用作为次级变换的NSST。此外,关于水平变换或垂直变换,当宽度或高度分别等于或小于4时,选择DST-7而无需用信号发送。
此外,当非零变换系数的数量大于阈值时,用信号发送AMT标志。在帧间块的情况下,可将阈值设置为2。在帧内块的情况下,可将阈值设置为0。当非零变换系数的数量大于2时,用信号发送AMT索引。否则,其被估计为0。在NSST的情况下,关于帧内亮度分量的块,当左上方8×8或4×4亮度分量的非零变换系数的数量与左上方8×8或4×4色度分量的非零AC系数的数量之和大于2时,用信号发送NSST索引。
关于残差块,当块的宽度等于或小于K时,DST-7用于一维水平变换,而不是DCT-2。当块的高度等于或小于L时,DST-7用于一维垂直变换,而不是DCT-2。此外,即使块的宽度或高度等于或小于K,当帧内预测模式是线性模型(LM)色度模式时,使用DCT-2。这里,K和L可以是正整数,例如,4。此外,K和L可以相同或可具有不同值。此外,残差块可以是按照帧内模式编码的块。此外,残差块可以是色度块。
取代于对残差信号执行翻转方法,可使用已执行翻转的变换核或变换矩阵来执行变换/逆变换。这里,已执行翻转的变换/逆变换核或变换/逆变换矩阵可以是已经历翻转并在编码器/解码器中预定义的核或矩阵。在这种情况下,由于已执行翻转的变换/逆变换矩阵用于执行变换/逆变换,故可获得与对残差信号执行翻转相同的效果。这里,翻转可以是不翻转、水平翻转、垂直翻转以及水平和垂直翻转中的至少一种。在这种情况下,可用信号发送关于已执行翻转的变换/逆变换是否被使用的信息。此外,可针对水平方向的变换/逆变换和垂直方向的变换/逆变换中的每一个来用信号发送关于已执行翻转的变换/逆变换是否被使用的信息。
此外,取代于对残差信号执行翻转方法,可在编码/解码处理中对变换核或变换矩阵执行翻转以执行变换/逆变换。在这种情况下,由于对变换/逆变换矩阵执行翻转以执行变换/逆变换,故可获得与对残差信号执行翻转相同的效果。这里,翻转可以是不翻转、水平翻转、垂直翻转以及水平和垂直翻转中的至少一种。在这种情况下,可用信号发送关于是否对变换/逆变换矩阵执行了翻转的信息。此外,可针对水平方向的变换/逆变换和垂直方向的变换/逆变换中的每一个来用信号发送关于是否对变换/逆变换矩阵执行了翻转的信息。
当基于帧内预测模式确定了翻转方法并且使用当前块的两个或更多个帧内预测模式时,在当前块的变换/逆变换之前/之后执行作为非方向模式的翻转方法的翻转。
此外,当基于帧内预测模式确定了翻转方法并且使用当前块的两个或更多个帧内预测模式时,在当前块的变换/逆变换之前/之后执行作为主方向模式的翻转方法的翻转。这里,主方向模式可以是垂直模式、水平模式和对角线模式中的至少一个。
当变换的尺寸等于或大于M×N时,将在变换期间或在变换之后在M/2至M和N/2至N的区域中存在的所有变换系数设置为值0。这里,M和N可以是正整数,例如,64×64。
为了减少存储器需求,可对在执行变换之后产生的变换系数按照K执行右移位操作。此外,可对在执行水平变换之后产生的暂时变换系数按照K执行右移位操作。此外,可对在执行垂直变换之后产生的暂时变换系数按照K执行右移位操作。这里,K是正整数。
为了减少存储器需求,可对在执行逆变换之后产生的重建残差信号按照K执行右移位操作。此外,可对在执行水平逆变换之后产生的暂时变换系数按照K执行右移位操作。此外,可对在执行垂直逆变换之后产生的暂时变换系数按照K执行右移位操作。这里,K是正整数。
可对在按照水平方向执行变换/逆变换之前、在按照水平方向执行变换/逆变换之后、在按照垂直方向执行变换/逆变换之前和在按照垂直方向执行变换/逆变换之后产生的信号中的至少一个信号执行翻转方法中的至少一个。在这种情况下,可用信号发送在按照水平方向的变换/逆变换或按照垂直方向的变换/逆变换中使用的翻转方法信息。
此外,取代于DST-7,可使用DCT-4。从2N尺寸的DCT-2变换/逆变换矩阵提取2N-1尺寸的DCT-4变换/逆变换矩阵以使用,使得仅DCT-2变换/逆变换矩阵被存储在编码器/解码器中而不存储DCT-4,从而减少编码器/解码器的存储器需求。此外,从2N尺寸的DCT-2变换/逆变换矩阵逻辑利用2N-1尺寸的DCT-4变换/逆变换矩阵,使得减少实现编码器/解码器所需的芯片区域。这里,以上示例不仅应用于DCT-2和DCT-4,并且以上示例还应用于当在DST变换/逆变换中的至少一个类型与DCT变换/逆变换中的至少一个类型之间共享的变换矩阵或变换逻辑存在时。也就是说,从一个变换/逆变换矩阵或逻辑,可提取另一变换/逆变换矩阵或逻辑以使用。此外,在特定变换/逆变换尺寸的情况下,从一个变换/逆变换矩阵或逻辑,可提取另一变换/逆变换矩阵或逻辑以使用。此外,从一个变换/逆变换矩阵,可按照矩阵单元、基本矢量单元和矩阵系数单元中的至少一个单元提取另一变换/逆变换矩阵。
此外,当当前块小于尺寸M×N时,取代于特定变换/逆变换,另一变换/逆变换用于当前块的变换/逆变换。此外,当当前块大于尺寸M×N时,取代于特定变换/逆变换,另一变换/逆变换用于当前块的变换/逆变换。这里,M和N是正整数。所述特定变换/逆变换和另一变换/逆变换可以是在编码器/解码器中预定义的变换/逆变换。
此外,可由基于DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等计算出的变换中的至少一个变换来替换说明书中使用的DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等的变换中的至少一个变换。这里,计算出的变换可以是通过修改DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等的变换矩阵内的系数值而计算出的变换。此外,DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等的变换矩阵内的系数值可具有整数值。也就是说,DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等的变换可以是整数变换。此外,计算出的变换矩阵内的系数值可具有整数值。也就是说,计算出的变换可以是整数变换。此外,计算出的变换可以是对DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等的变换矩阵内的系数值按照N执行左移位操作的结果。这里,N可以是正整数。
DCT-Q和DST-W变换可表示包括DCT-Q和DST-W变换以及DCT-Q和DST-W逆变换。这里,Q和W可具有一或更大的正整数,并且例如,数字1至9可具有与罗马数字I至IX相同的含义。
此外,说明书中使用的DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7等不限于此,并且可通过替换DCT-4、DCT-8、DCT-2、DST-4、DST-1、DST-7的变换来使用DCT-Q变换与DST-W变换之间的至少一个。这里,Q和W可具有一或更大的正整数,并且例如,数字1至9可具有与罗马数字I至IX相同的含义。
此外,在正方形块的情况下,可按照正方形变换形式执行说明书中使用的变换。在非正方形块的情况下,可按照非正方形变换形式执行变换。在包括正方形块和非正方形块中的至少一个的正方形形状区域的情况下,可按照正方形变换形式对该区域执行变换。在包括正方形块和非正方形块中的至少一个的非正方形形状区域的情况下,可按照非正方形变换形式对该区域执行变换。
此外,在说明书中,关于重布置方法的信息可以是翻转方法信息。
此外,在说明书中使用的变换可表示变换和逆变换中的至少一个。
编码器可针对残差块执行变换以产生变换系数,对变换系数进行量化以产生量化的系数等级,并对量化的系数等级进行熵编码,以提高图像的主观/客观图像质量。
解码器可对量化的系数等级进行熵解码,对量化的系数等级进行反量化以产生变换系数,并对变换系数进行逆变换以产生重建残差块。
可显式地对关于哪个变换被用作变换和逆变换的变换类型信息进行熵编码/熵解码。此外,可基于编码系数中的至少一个隐式地确定关于哪个变换被用作变换和逆变换的变换类型信息,而不对变换类型信息进行熵编码/熵解码。
以下,将描述本发明中的用于执行变换或逆变换中的至少一个的图像编码/解码方法和设备以及用于存储比特流的记录介质的实施例。
使用以下实施例中的至少一个,可将块分区为N个子块,并可执行预测、变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个。这样的模式可被称为第一子块分区模式(例如,ISP模式或帧内子分区模式)。
块可表示编码块、预测块或变换块。例如,块可以是变换块。
此外,分区出的子块可表示编码块、预测块或变换块中的至少一个。例如,分区出的子块可以是变换块。
此外,块或分区出的子块可以是帧内块、帧间块或帧内块复制块中的至少一个。例如,块或分区出的子块可以是帧内块。
此外,块或分区出的子块可以是帧内预测块、帧间预测块或帧内块复制预测块中的至少一个。例如,块或分区出的子块可以是帧内预测块。
此外,块或分区出的子块可以是亮度信号块或色度信号块中的至少一个。例如,块或分区出的子块可以是亮度信号块。
当块被分区为N个子块时,分区之前的块可以是编码块,分区出的子块可以是预测块或变换块中的至少一个。也就是说,可以使用分区出的子块尺寸来执行变换系数的预测、变换/逆变换、量化/反量化、熵编码/熵解码。
此外,当块被分区为N个子块时,分区之前的块可以是编码块或预测块中的至少一个,分区出的子块可以是变换块。也就是说,可以使用分区之前的块的尺寸来执行预测,并可以使用分区出的子块尺寸来执行变换系数的变换/逆变换、量化/反量化、熵编码/熵解码。
可基于块的面积(宽度和高度的乘积等)、尺寸(宽度、高度或者宽度或高度的组合)和形状/形式(矩形(非正方形)、正方形等)中的至少一个来确定是否将块分区为多个子块。
例如,当当前块是64×64块时,可将当前块分区为多个子块。
作为另一示例,当当前块是32×32块时,可将当前块分区为多个子块。
作为另一示例,当当前块是32×16块时,可将当前块分区为多个子块。
作为另一示例,当当前块是16×32块时,可将当前块分区为多个子块。
作为另一示例,当当前块是4×4块时,可不将当前块分区为多个子块。
作为另一示例,当当前块是2×4块时,可不将当前块分区为多个子块。
作为另一示例,当当前块的面积等于或大于32时,可将当前块分区为多个子块。
作为另一示例,当当前块的面积小于32时,可不将当前块分区为多个子块。
作为另一示例,当当前块的面积是256并且当前块的形状是矩形时,可将当前块分区为多个子块。
作为另一示例,当当前块的面积是16并且当前块的形状是正方形时,可不将当前块分区为多个子块。
当对块进行分区时,可按照垂直方向或水平方向中的至少一个分区方向将块分区为多个子块。
例如,可按照垂直方向将当前块分区为两个子块。
作为另一示例,可按照水平方向将当前块分区为两个子块。
作为另一示例,可按照水平方向将当前块分区为四个子块。
作为另一示例,可按照垂直方向将当前块分区为四个子块。
当块被分区为N个子块时,N可以是正整数,并例如可以是2或4。此外,可使用块的面积、尺寸、形状或分区方向中的至少一个来确定N。
例如,当当前块是4×8或8×4块时,可按照水平方向将当前块分区为两个子块,或可按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是16×8或16×16块时,可按照垂直方向将当前块分区为四个子块,或可按照水平方向将当前块分区为四个子块。
作为另一示例,当当前块是8×32或32×32块时,可按照水平方向将当前块分区为四个子块,或可按照垂直方向将当前块分区为四个子块。
作为另一示例,当当前块是16×4、32×4或64×4块时,可按照垂直方向将当前块分区为四个子块。此外,当当前块是16×4、32×4或64×4块时,可按照水平方向将当前块分区为两个子块。
作为另一示例,当当前块是4×16、4×32或4×64块时,可按照水平方向将当前块分区为四个子块。此外,当当前块是4×16、4×32或4×64块时,可按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是J×4块时,可按照水平方向将当前块分区为两个子块。这里,J可以是正整数。
作为另一示例,当当前块是4×K块时,可按照垂直方向将当前块分区为两个子块。这里,K可以是正整数。
作为另一示例,当当前块是J×K(K>4)块时,可按照水平方向将当前块分区为四个子块。这里,J可以是正整数。
作为另一示例,当当前块是J×K(J>4)块时,可按照垂直方向将当前块分区为四个子块。这里,J可以是正整数。
作为另一示例,当当前块是J×K(K>4)块时,可按照垂直方向将当前块分区为四个子块。这里,J可以是正整数。
作为另一示例,当前块的面积是64时,可按照水平方向或垂直方向将当前块分区为四个子块。
作为另一示例,当当前块是16×4块并且当前块的形状是矩形时,可按照垂直方向将当前块分区为四个子块。
作为另一示例,当当前块的面积是1024并且当前块的形状是正方形时,可按照水平方向或垂直方向将当前块分区为四个子块。
此外,子块可具有最小面积、最小宽度或最小高度中的至少一个。
例如,子块可具有S作为最小面积。这里,S可以是正整数,并可以是例如16。
作为另一示例,子块可具有J作为最小宽度。这里,J可以是正整数,并可以是例如4。
作为另一示例,子块可具有K作为最小高度。这里,K可以是正整数,并可以是例如4。
在每个分区出的子块中,可通过将残差块(或重建残差块)和预测块相加来产生重建块。这里,可将每个重建子块中的重建样点中的至少一个用作后面编码/解码的子块的帧内预测中的参考样点。
可根据分区方向中的至少一个来确定从块分区出的子块的编码/解码顺序。
例如,可将水平分区出的子块的编码/解码顺序确定为从上方方向到下方方向的顺序。
作为另一示例,可将垂直分区出的子块的编码/解码顺序确定为从左侧方向到右侧方向的顺序。
对于分区出的子块,可共享和使用帧内预测模式。
此时,在分区之前的块中,可对关于针对每个子块的帧内预测模式的信息进行仅一次熵编码/熵解码。
对于分区出的子块,可共享和使用帧内块复制模式。
此时,在分区之前的块中,可对关于针对每个子块的帧内块复制模式的信息进行仅一次熵编码/熵解码。
为了指示将块分区为N个子块并以子块为单位执行预测、变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个的子块分区模式,可对子块分区模式信息或分区方向信息中的至少一个进行熵编码/熵解码。
这里,子块分区模式信息可用于指示子块分区模式。当指示使用子块分区模式(第二值)时,可将块分区为子块并且可执行预测、变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个。当指示不使用子块分区模式(第一值)时,可不将块分区为子块并且可执行预测、变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个。这里,第一值可以是0,第二值可以是1。
此外,分区方向信息可用于指示子块分区模式是垂直分区还是水平分区。当分区方向信息具有第一值时,可按照水平方向将块分区为子块并且第一值可以是0。此外,当分区方向信息具有第二值时,可按照垂直方向将块分区为子块并且第二值可以是1。
当当前块不将最靠近的参考样点线(第一参考样点线)用作参考样点线时,可不对子块分区模式信息或分区方向信息中的至少一个进行熵编码/熵解码。此时,从子块分区模式信息,可推断当前块未被分区为子块。
这里,当前块不将最靠近的参考样点线(第一参考样点线)用作参考样点线可表示可将第二参考样点线或更大的参考样点线用作当前块周围的重建参考线。
也就是说,仅当当前块将最靠近的参考样点线用作参考样点线时,可对子块分区模式信息或分区方向信息中的至少一个进行熵编码/熵解码。
可基于子块的面积、尺寸、形状或分区方向中的至少一个来确定在变换系数的熵编码/熵解码期间使用的系数组的面积、尺寸、形状或分区方向中的至少一个。
例如,当子块的面积是16时,可将系数组的面积确定为16。
作为另一示例,当子块的面积是32时,可将系数组的面积确定为16。
作为另一示例,当子块的尺寸是1×16或16×1时,可将系数组的尺寸确定为1×16或16×1。
作为另一示例,当子块的尺寸是2×8或8×2时,可将系数组的尺寸确定为2×8或8×2。
作为另一示例,当子块的尺寸是4×4时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的宽度是2时,可将系数组的宽度确定为2。
作为另一示例,当子块的宽度是4时,可将系数组的宽度确定为4。
作为另一示例,当子块的高度是2时,可将系数组的高度确定为2。
作为另一示例,当子块的高度是4时,可将系数组的高度确定为4。
作为另一示例,当子块的形状是矩形(非正方形)时,可将系数组的形状确定为矩形(非正方形)。
作为另一示例,当子块的形状是正方形时,可将系数组的形状确定为正方形。
作为另一示例,当子块的尺寸是16×4并且其形状是矩形时,可将系数组的尺寸确定为4×4或8×2中的至少一个。
作为另一示例,当子块的尺寸是4×8并且其形状是矩形时,可将系数组的尺寸确定为4×4或2×8中的至少一个。
作为另一示例,当子块的尺寸是32×4并且其形状是矩形时,可将系数组的尺寸确定为4×4或8×2中的至少一个。
作为另一示例,当子块的尺寸是8×64并且其形状是矩形时,可将系数组的尺寸确定为4×4或2×8中的至少一个。
作为另一示例,当子块的尺寸是16×4并且分区方向是垂直方向时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的尺寸是4×8并且分区方向是水平方向时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的尺寸是32×4并且分区方向是水平方向时,可将系数组的尺寸确定为8×2。
作为另一示例,当子块的尺寸是8×64并且分区方向是垂直方向时,可将系数组的尺寸确定为2×8。
对于每个分区出的子块,可对指示具有非零值的至少一个变换系数是否存在于子块单元中的编码块标志进行熵编码/熵解码。
例如,编码块标志可指示具有非零值的至少一个变换系数存在于子块单元中的至少一个子块中。
作为另一示例,当m表示子块的总数并且来自子块的前部的m-1个子块的编码块标志指示不存在具有非零值的变换系数时,可推断出第m个子块的编码块标志指示存在具有非零值的至少一个变换系数。
作为另一示例,当按照子块单元对编码块标志进行熵编码/熵解码时,可以以分区之前的块为单元对编码块标志进行熵编码/熵解码。
作为另一示例,当以分区之前的块为单元对编码块标志进行熵编码/熵解码时,可不按照子块单元对编码块标志进行熵编码/熵解码。
同时,当当前块处于第一子块分区模式并且当前块的尺寸是预定义的尺寸时,用于帧内预测的子块的尺寸和用于变换的子块的尺寸可彼此不同。也就是说,用于帧内预测的子块分区和用于变换的子块分区可彼此不同。这里,预定义的尺寸可以是4×N或8×N(N>4)。这里,子块分区可表示垂直分区。
例如,当当前块处于第一子块分区模式并且当前块的尺寸是4×N(N>4)时,可将当前块垂直分区为具有4×N的尺寸的子块用于帧内预测,可将当前块垂直分区为具有1×N的尺寸的子块用于变换。此时,可执行一维变换/逆变换以执行具有1×N的尺寸的变换。也就是说,可基于当前块的分区模式或当前块的尺寸中的至少一个来执行一维变换/逆变换。
作为另一示例,当当前块处于第一子块分区模式并且当前块的尺寸是8×N(N>4)时,可将当前块垂直分区为具有4×N的尺寸的子块用于帧内预测,并且可将当前块垂直分区为具有2×N的尺寸的子块用于变换。此时,可执行二维变换/逆变换以执行具有2×N的尺寸的变换。也就是说,可基于当前块的分区模式或当前块的尺寸中的至少一个来执行二维变换/逆变换。
这里,N可表示正整数并可以是小于64或128的正整数。
此外,当前块的尺寸可表示当前块的编码块的尺寸、预测块的尺寸或变换块的尺寸中的至少一个。
如图35中的示例,根据第一子块分区模式的实施例,可按照水平方向将当前块分区为两个子块,并可按照垂直方向将当前块分区为两个子块。
如图36中的示例,根据第一子块分区模式的实施例,可按照水平方向将当前块分区为两个子块,并可按照垂直方向将当前块分区为两个子块。
如图37中的示例,根据第一子块分区模式的实施例,可按照水平方向将当前块分区为四个子块,并可按照垂直方向将当前块分区为四个子块。
使用以下实施例中的至少一个,可以以子块为单元将块分区为N个子块以执行变换/逆变换、量化/反量化或熵编码/熵解码。这样的模式可称为第二子块分区模式(例如,SBT模式或者子块变换模式)。
块可表示编码块、预测块或变换块中的至少一个。例如,块可以是变换块。
此外,分区出的块可表示编码块、预测块或变换块中的至少一个。例如,分区出的块可以是变换块。
此外,块或分区出的块可以是帧内块、帧间块或帧内块复制块中的至少一个。例如,块或分区出的块可以是帧间块。
此外,块或分区出的块可以是帧内预测块、帧间预测块或帧内块复制预测块中的至少一个。例如,块可以是帧间预测块。
此外,块或分区出的块可以是亮度信号块或色度信号块中的至少一个。例如,块或分区出的块可以是亮度信号块。
当将块分区为N个子块时,分区之前的块可以是编码块,并且分区出的子块可以是预测块或变换块中的至少一个。也就是说,可使用分区出的子块尺寸来执行变换系数的变换/逆变换、量化/反量化和熵编码/熵解码。
此外,当将块分区为N个子块时,分区之前的块可以是编码块或预测块中的至少一个,并且分区出的子块可以是变换块。也就是说,使用分区之前的块的尺寸来执行预测,并可使用分区出的子块的尺寸来执行变换系数的变换/逆变换、量化/反量化和熵编码/熵解码。
可基于块的面积(宽度和高度的乘积)、尺寸(宽度或高度或者宽度和高度的组合)或形状/形式(矩形、正方形等)中的至少一个来确定是否将块分区为多个子块。
例如,当当前块是64×64块时,可将当前块分区为多个子块。
作为另一示例,当当前块是32×32块时,可将当前块分区为多个子块。
作为另一示例,当当前块是32×16块时,可将当前块分区为多个子块。
作为另一示例,当当前块是16×32块时,可将当前块分区为多个子块。
作为另一示例,当当前块是4×4块时,可不将当前块分区为多个子块。
作为另一示例,当当前块是2×4块时,可不将当前块分区为多个子块。
作为另一示例,当当前块的宽度或高度中的至少一个大于变换块的最大尺寸时,可不将当前块分区为多个子块。也就是说,当当前块的宽度或高度中的至少一个小于或等于变换块的最大尺寸时,可将第二子块分区模式应用于当前块。
作为另一示例,当当当前块的宽度或高度中的至少一个大于变换块的最大尺寸时,可不将当前块分区为多个子块。也就是说,当当前块的宽度和高度小于或等于变换块的最大尺寸时,可将第二子块分区模式应用于当前块。
此外,当当当前块的宽度或高度中的至少一个小于或等于变换块的最大尺寸时,可对指示第二子块分区模式的信息(子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息)中的至少一个进行熵编码/熵解码。这里,可基于按照更高级单元被用信号发送的变换块最大尺寸信息来确定变换块的最大尺寸。例如,可基于变换块最大尺寸信息将变换块的最大尺寸确定为64或32中的任意一个。
作为另一示例,当当前块的面积等于或大于32时,可将当前块分区为多个子块。
作为另一示例,当当前块的面积小于32时,可不将当前块分区为多个子块。
作为另一示例,当当前块的面积等于256并且当前块的形状是矩形时,可将当前块分区为多个子块。
作为另一示例,当当前块的面积等于16并且当前块的形状是正方形时,可不将当前块分区为多个子块。
当当前块的宽度或高度中的至少一个大于或等于预定义的值时,可将当前块分区为多个子块。
例如,当当前块的宽度或高度中的至少一个大于或等于8时,可将当前块分区为多个子块。
相反,当当前块的宽度或高度中的至少一个小于预定义的值时,可不将当前块分区为多个子块。
当当前块处于GPM(集合分区模式)时,可不将当前块的变换块分区为多个子块。这里,GPM可以是将当前块的预测块分区为两个子块以执行预测的预测模式。当当前块处于GPM时,可将当前块的变换块分区为两个子块。此时,可对关于用于将当前块的预测块分区为两个子块的分区方向的信息进行熵编码/熵解码。可针对两个子块执行帧间预测,从而产生针对两个子块的预测样点。此外,可对针对产生的两个子块的预测样点加权求和以推导当前块的预测样点。也就是说,当当前块的预测块被分区为至少两个子块时,可不将当前块的变换块分区为至少两个子块。相似地,当当前块的预测块未被分区为至少两个子块时,可将当前块的变换块分区为至少两个子块。
当对块进行分区时,可按照垂直方向或水平方向中的至少一个将块分区为多个子块。
例如,可按照垂直方向将当前块分区为两个子块。
作为另一示例,可按照水平方向将当前块分区为两个子块。
当将块分区为N个子块时,N可以是正整数,并可以是例如2。此外,可使用块的面积、尺寸、形状或分区方向中的至少一个来确定N。
例如,当当前块是4×8或8×4块时,可按照水平方向将当前块分区为两个子块,或按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是16×8或16×16块时,可按照水平方向将当前块分区为两个子块,或按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是8×32或32×32块时,可按照水平方向将当前块分区为两个子块,或按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是J×8块时,可按照水平方向将当前块分区为两个子块。这里,J可以是正整数。
作为另一示例,当当前块是8×K块时,可按照垂直方向将当前块分区为两个子块。这里,K可以是正整数。
作为另一示例,当当前块是J×K(K>8)块时,可按照水平方向将当前块分区为两个子块。这里,J可以是正整数。此时,分区出的子块的高度可具有1:3或3:1的比率。
作为另一示例,当当前块是J×K(J>8)块时,可按照垂直方向将当前块分区为两个子块。这里,J可以是正整数。此时,分区出的子块的宽度可具有1:3或3:1的比率。
作为另一示例,当当前块的面积是64时,可按照水平方向或垂直方向将当前块分区为两个子块。
作为另一示例,当当前块是16×4块并且当前块的形状是矩形时,可按照垂直方向将当前块分区为两个子块。
作为另一示例,当当前块的面积是1024并且当前块的形状是正方形时,可按照水平方向或垂直方向将当前块分区为两个子块。
此外,子块可具有最小面积、最小宽度或最小高度中的至少一个。
例如,子块可具有S作为最小面积。这里,S可以是正整数,并可以是例如16。
作为另一示例,子块可具有J作为最小宽度。这里,J可以是正整数,并可以是例如4。
作为另一示例,子块可具有K作为最小高度。这里,K可以是正整数,并可以是例如4。
为了指示将块分区为N个子块以执行变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个的子块分区模式,可对子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息中的至少一个进行熵编码/熵解码。
这里,子块分区模式信息可用于指示子块分区模式。当指示使用子块分区模式(第二值)时,可将块分区为子块并且可执行变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个。当指示不使用子块分区模式(第一值)时,可不将块分区为子块并且可执行变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个。这里,第一值可以是0,并且第二值可以是1。
此外,分区方向信息可用于指示子块分区模式是垂直分区还是水平分区。当分区方向信息具有第一值时,可按照垂直方向对子块进行分区,并且第一值可以是0。此外,当分区方向信息具有第二值时,可按照水平方向对子块进行分区,并且第二值可以是1。
此外,子块位置信息可用于指示对哪个分区出的子块的残差信号进行编码/解码。当子块位置信息具有第一值时,可对第一子块的残差信号进行编码/解码,并且第一值可以是0。此外,当子块位置信息具有第二值时,可对第二子块的残差信号进行编码/解码,并且第二值可以是1。此外,当子块位置信息具有第一值时,可对针对第一子块的亮度信号的编码块标志或色度信号的编码块标志中的至少一个进行熵编码/熵解码。此外,当子块位置信息具有第二值时,可对针对第二子块的亮度信号的编码块标志或色度信号的编码块标志中的至少一个进行熵编码/熵解码。
此外,子块尺寸信息可用于指示分区出的子块的宽度或高度是块的宽度或高度的1/2还是1/4。当子块尺寸信息具有第一值时,这可指示由子块位置信息指示的残差信号被编码/解码的子块的宽度或高度是块的宽度或高度的1/2,并且第一值可以是0。此外,当子块尺寸信息具有第二值时,这可指示由子块位置信息指示的残差信号被编码/解码的子块的宽度或高度是块的宽度或高度的1/4,并且第一值可以是1。例如,当仅存在分区出的子块的尺寸是块的宽度或高度的1/2的情况时,可不对子块尺寸信息进行熵编码/熵解码。
在每个分区出的子块中,可通过将残差块(或重建残差块)与预测块相加来产生重建块。
可根据分区方向中的至少一个来确定从块分区出的子块的编码/解码顺序。
例如,可将按照水平方向分区出的子块的编码/解码顺序确定为从上方方向到下方方向的顺序。
作为另一示例,可将按照垂直方向分区出的子块的编码/解码顺序确定为从左侧方向到右侧方向的顺序。
在分区出的子块中,可按照子块单元对指示是否存在具有非零值的变换系数中的至少一个变换系数的编码块标志进行熵编码/熵解码。
例如,编码块标志可指示具有非零值的变换系数中的至少一个变换系数存在于子块单元中的至少一个子块中。
作为另一示例,当按照子块单元对编码块标志进行熵编码/熵解码时,可以以分区之前的块为单位对编码块标志进行熵编码/熵解码。
作为另一示例,当以分区之前的块为单元对编码块标志进行熵编码/熵解码时,可不按照子块单元对编码块标志进行熵编码/熵解码。
仅对于由子块位置信息指示的子块,可对残差信号进行熵编码/熵解码。
此时,由于残差信号可总是存在于由子块位置信息指示的子块中,故可推断编码块标志指示存在至少一个非零变换系数。
此外,由于残差信号可不总是存在于子块位置信息未指示的子块中,故可推断编码块标志指示不存在至少一个非零变换系数。
可基于子块的面积、尺寸、形状或分区方向中的至少一个,来确定当变换系数被熵编码/熵解码时使用的系数组的面积、尺寸、形状或分区方向中的至少一个。
例如,当子块的面积为16时,可将系数组的面积确定为16。
作为另一示例,当子块的面积为32时,可将系数组的面积确定为16。
作为另一示例,当子块的尺寸为1×16或16×1时,可将系数组的尺寸确定为1×16或16×1。
作为另一示例,当子块的尺寸为2×8或8×2时,可将系数组的尺寸确定为2×8或8×2。
作为另一示例,当子块的尺寸为4×4时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的宽度为2时,可将系数组的宽度确定为2。
作为另一示例,当子块的宽度为4时,可将系数组的宽度确定为4。
作为另一示例,当子块的高度为2时,可将系数组的高度确定为2。
作为另一示例,当子块的高度为4时,可将系数组的高度确定为4。
作为另一示例,当子块的形状为矩形(非正方形)时,可将系数组的形状确定为矩形(非正方形)。
作为另一示例,当子块的形状为正方形时,可将系数组的形状确定为正方形。
作为另一示例,当子块的尺寸为16×4并且形状是矩形时,可将系数组的尺寸确定为4×4或8×2中的至少一个。
作为另一示例,当子块的尺寸为4×8并且形状是矩形时,可将系数组的尺寸确定为4×4或2×8中的至少一个。
作为另一示例,当子块的尺寸为32×4并且形状是矩形时,可将系数组的尺寸确定为4×4或8×2中的至少一个。
作为另一示例,当子块的尺寸为8×64并且形状是矩形时,可将系数组的尺寸确定为4×4或2×8中的至少一个。
作为另一示例,当子块的尺寸为16×4并且分区方向是垂直方向时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的尺寸为4×8并且分区方向是水平方向时,可将系数组的尺寸确定为4×4。
作为另一示例,当子块的尺寸为32×4并且分区方向是水平方向时,可将系数组的尺寸确定为8×2。
作为另一示例,当子块的尺寸为8×64并且分区方向是垂直方向时,可将系数组的尺寸确定为2×8。
同时,可将当对变换系数进行熵编码/熵解码时使用的系数组的面积确定为预定义的值。这里,预定义的值可以是4或16。
此外,无论当前块的颜色分量如何,可基于当前块的尺寸来确定变换系数组的面积或尺寸。此时,当前块的尺寸可包括当前块的宽度或高度中的至少一个。
例如,当当前块的宽度和高度是2时,可将系数组的尺寸确定为2×2。
作为另一示例,当当前块的尺寸是2×4或4×2时,可将系数组的尺寸确定为2×2。
如图38中的示例,根据第二子块分区模式的实施例,可按照水平方向将当前块分区为两个子块(高度的1/2或1/4),并可按照垂直方向将当前块分区为两个子块(宽度的1/2或1/4)。在图38的示例中,灰色阴影可表示子块中的残差信号被编码/解码的块,并且可使用子块位置信息来指示该块。
可在参数集或头中的至少一个中对子块分区模式使用信息进行熵编码/熵解码,其中,子块分区模式使用信息指示将块分区为N个子块并且执行预测、变换/逆变换、量化/反量化或熵编码/熵解码中的至少一个的模式是否被使用。
这里,子块分区模式使用信息可表示第一子块分区模式或第二子块分区模式中的至少一个。
此时,参数集或头中的至少一个可以是视频参数集、解码参数集、序列参数集、自适应参数集、画面参数集、画面头、条带头、并行块组头或并行块头中的至少一个。
例如,为了指示是否在视频中使用了子块分区模式,可在视频参数集中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在解码处理中使用了子块分区模式,可在序列参数集中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在序列中使用了子块分区模式,可在序列参数集中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在一些画面中使用了子块分区模式,可在自适应参数集或自适应头中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在画面中使用了子块分区模式,可在画面参数集或画面头中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在条带中使用了子块分区模式,可在条带头中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在并行块组中使用了子块分区模式,可在并行块组头中对子块分区模式使用信息进行熵编码/熵解码。
作为另一示例,为了指示是否在并行块中使用了子块分区模式,可在并行块头中对子块分区模式使用信息进行熵编码/熵解码。
可使用以下实施例中的至少一个来确定每个块或子块的变换/逆变换类型。
可基于块或子块的预测模式、帧内预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换执行信息或基于矩阵的帧内预测执行信息中的至少一个来确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个。基于矩阵的帧内预测可指示帧内预测基于矩阵。
例如,可基于块或子块的预测模式、帧内预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换执行信息或基于矩阵的帧内预测执行信息中的至少一个来确定指示水平变换类型或垂直变换类型中的至少一个的一维变换类型。
作为另一示例,可基于块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个来确定指示水平变换类型和垂直变换类型的组合的二维变换组合。
作为另一示例,可基于块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个来确定指示是否执行变换的信息。
此时,一维变换类型、二维变换组合或是否使用变换中的至少一个可根据块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个而彼此不同。
此外,当基于块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换执行信息或基于矩阵的帧内预测执行信息中的至少一个来确定用于块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个时,可不对关于一维变换类型的信息、关于二维变换组合的信息或关于是否使用变换的信息进行熵编码/熵解码。
也就是说,可根据编码器/解码器中的预定规则隐式地确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个。可基于编码器/解码器中的编码参数来设置预定规则。
这里,基于矩阵的帧内预测可表示执行边界平均处理、矩阵矢量乘法处理、或线性插值处理中的至少一个以产生预测块的帧内预测模式。
这里,变换可表示变换或逆变换中的至少一个。
此外,块可表示从块分区出的每个子块。
初级变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,对残差块执行以产生变换系数的DCT-2、DCT-8、DST-7、DCT-4或DST-4。这里,J和K可以是正整数。
可使用从基于DCT-J或DST-K中的至少一个的整数变换(诸如,DCT-2、DCT-8、DST-7、DCT-4或DST-4)的变换矩阵提取的变换矩阵执行初级变换。也就是说,可使用提取的变换矩阵执行初级变换。此外,提取的变换矩阵中的系数中的至少一个可等于基于DCT-J或DST-K中的至少一个的整数变换(诸如,DCT-2、DCT-8、DST-7、DCT-4或DST-4)的变换矩阵中的系数中的至少一个系数。此外,提取的变换矩阵可被包括在将被提取的变换矩阵中。此外,可通过对将被提取的变换矩阵中的特定系数执行翻转或符号改变中的至少一个来获得提取的变换矩阵。
例如,可从DCT-2的变换矩阵提取基于DCT-J或DST-K中的至少一个的整数变换(诸如,DCT-8、DST-7、DCT-4或DST-4)并将其用于初级变换。
这里,基于DCT-J或DST-K中的至少一个的整数变换(诸如,DCT-2、DCT-8、DST-7、DCT-4或DST-4)可具有与基于DCT-J或DST-K中的至少一个的整数变换(诸如,DCT-2、DCT-8、DST-7、DCT-4或DST-4)不同的变换矩阵中的系数。
例如,可通过对基于DST-7的整数变换矩阵执行水平翻转或对DST-7变换矩阵系数中的至少一个系数执行符号改变中的至少一个操作来推导基于DCT-8的整数变换矩阵。此时,取代于水平翻转,可使用垂直翻转。
作为另一示例,可通过对基于DCT-8的整数变换矩阵执行水平翻转或对DCT-8变换矩阵系数中的至少一个系数执行符号改变中的至少一个操作来推导基于DST-7的整数变换矩阵。此时,取代于水平翻转,可使用垂直翻转。
作为另一示例,可通过对基于DST-4的整数变换矩阵执行水平翻转或对DST-4变换矩阵系数中的至少一个系数执行符号改变中的至少一个操作来推导基于DCT-4的整数变换矩阵。此时,取代于水平翻转,可使用垂直翻转。
作为另一示例,可通过对基于DCT-4的整数变换矩阵执行水平翻转或对DCT-4变换矩阵系数中的至少一个系数执行符号改变中的至少一个操作来推导基于DST-4的整数变换矩阵。此时,取代于水平翻转,可使用垂直翻转。
次级变换可表示用于基于角度旋转变换系数中的至少一个变换系数的变换中的至少一个变换。可在初级变换之后执行次级变换。
在编码器中,可对进行了初级变换的变换系数的左上侧的低频区域的系数执行次级变换。可基于变换块的尺寸来确定应用次级变换的低频区域的尺寸。
在解码器中,可在执行初级逆变换之前执行次级逆变换。在以下描述中,次级变换可包括次级逆变换。
由于使用不可分离变换核而不是水平和垂直可分离变换核(或类型),故次级变换可被称为LFNST(低频不可分离变换)。
可仅针对帧内预测编码/解码执行次级变换,并可基于帧内预测模式确定次级变换核。具体地,可基于帧内预测模式确定包括多个变换核的变换集。此外,可在基于索引信息确定的变换集中确定将应用于次级变换的变换核。这里,变换集可包括四种类型的变换集。
此外,当当前块的帧内预测模式是CCLM模式时,可基于与色度块相应的亮度块的帧内预测模式来确定色度块的变换集。这里,当与色度块相应的亮度块处于基于矩阵的帧内预测模式时,这可被认为是平面模式并且可确定色度块的变换集。此外,当与色度块相应的亮度块处于IBC模式时,这可被认为是DC模式并且可确定色度块的变换集。
作为另一示例,当与色度块相应的亮度块处于基于矩阵的帧内预测模式、IBC模式或调色板模式时,这可被认为是平面模式并且可确定色度块的变换集。
作为另一示例,当与色度块相应的亮度块处于基于矩阵的帧内预测模式、IBC模式或调色板模式时,这可被认为是DC模式并且可确定色度块的变换集。
此外,可使用次级变换索引信息来确定变换集中的次级变换核。这里,次级变换核可指示次级变换矩阵。
是否使用变换可表示是否在残差块中使用初级变换或次级变换中的至少一个。是否使用变换可包括是否使用初级变换或是否使用次级变换中的至少一个。是否使用变换可指示是否应用变换跳过模式。另外,transform_skip_flag可指示变换跳过标志。
例如,当作为指示是否使用初级变换或次级变换中的至少一个的信息的transform_skip_flag具有第一值(例如,0)时,这可指示使用初级变换或次级变换中的至少一个。
作为另一示例,当作为指示是否使用初级变换或次级变换中的至少一个的信息的transform_skip_flag具有第二值(例如,1)时,这可指示不使用初级变换或次级变换中的至少一个。
一维变换类型可表示初级变换的类型并表示基于DCT-J或DST-K中的至少一个的整数变换类型的水平变换类型trTypeHor或垂直变换类型trTypeVer。这里,J和K可以是正整数。
作为初级变换的类型,可使用第一变换至第N变换。这里,N可以是2或更大的正整数。
例如,第一变换可表示基于DCT-2的整数变换。
作为另一示例,当第一变换用于水平变换和垂直变换时,作为水平变换的变换类型的trTypeHor和作为垂直变换的变换类型的trTypeVer可分别具有值Q和R。这里,Q和R可以是负整数、0或正整数中的至少一个。例如,Q和R可以分别是0和0。
例如,当trTypeHor具有第一值时,这可表示基于DCT-2的整数水平变换。
作为另一示例,当trTypeVer具有第一值时,这可表示基于DCT-2的整数垂直变换。
第一值可以是0。
例如,第二变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,除了DCT-2之外的DCT-8、DST-7、DCT-4或DST-4。这里,J和K可以是正整数。也就是说,第二变换可表示除了第一变换之外的变换中的至少一个。
作为另一示例,当第二变换用于水平变换或垂直变换中的至少一个时,作为水平变换的变换类型的trTypeHor和作为垂直变换的变换类型的trTypeVer可分别具有值T和U。这里,T和U可以是负整数、0或正整数中的至少一个。例如,T和U可以分别是等于或大于1的值和等于或大于1的值。此外,T和U可分别大于Q和R。
例如,当trTypeHor具有第二值时,这可表示基于DST-7的整数水平变换。
作为另一示例,当trTypeHor具有第三值时,这可表示基于DCT-8的整数水平变换。
作为另一示例,当trTypeVer具有第二值时,这可表示基于DST-7的整数垂直变换。
作为另一示例,当trTypeVer具有第三值时,这可表示基于DCT-8的整数垂直变换。
第二值可以是1。此外,第三值可以是2。
取代于DST-7,可使用DST-4。此外,取代于DCT-8,可使用DCT-4。
例如,第一变换可以是基于DCT-2的整数变换。此外,第二变换可以是基于DST-7的整数变换。此外,第三变换可以是基于DCT-8的整数变换。此外,第二变换可以表示第二变换或第三变换中的至少一个。
作为另一示例,第一变换可以是基于DCT-2的整数变换。此外,第二变换可以是基于DST-4的整数变换。此外,第三变换可以是基于DCT-4的整数变换。此外,第二变换可以表示第二变换或第三变换中的至少一个。
也就是说,第一变换可以是基于DCT-2的整数变换,第二变换至第N变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,除了DCT-2之外的DCT-8、DST-7、DCT-4或DST-4。这里,N可以是等于或大于3的正整数。
例如,第一变换可以是基于DCT-2的整数变换。此外,第二变换可以是从基于DCT-2的整数变换矩阵提取的基于DST-7的整数变换。此外,第三变换可以是从基于DCT-2的整数变换矩阵提取的基于DCT-8的整数变换。此外,第二变换可表示第二变换或第三变换中的至少一个。
作为另一示例,第一变换可以是基于DCT-2的整数变换。此外,第二变换可以是从基于DCT-2的整数变换矩阵提取的基于DST-4的整数变换。此外,第三变换可以是从基于DCT-2的整数变换矩阵提取的基于DCT-4的整数变换。此外,第二变换可表示第二变换或第三变换中的至少一个。
也就是说,第一变换可以是基于DCT-2的整数变换,第二变换至第N变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,从基于DCT-2的整数变换矩阵提取的DCT-8、DST-7、DCT-4或DST-4。这里,N可以是等于或大于3的正整数。此外,第二变换可表示第二变换至第N变换中的至少一个。
取代于DCT-2,可使用基于DCT-J或DST-K中的至少一个的整数变换,诸如,DCT-8、DST-7、DCT-4或DST-4。
二维变换组合可表示初级变换的组合并表示基于DCT-J或DST-K中的至少一个的整数变换类型的水平变换类型trTypeHor和垂直变换类型trTypeVer的组合。此外,二维变换组合可表示作为多变换选择索引的mts_idx。
例如,当第一变换用于水平变换和垂直变换时,作为多变换选择索引的mts_idx可具有值P。这里,P可以是负整数、0或正整数中的至少一个。例如,P可以是0。
例如,当mts_idx是0时,trTypeHor和trTypeVer可分别具有第一值(例如,0)。也就是说,当mts_idx是0时,这可表示基于DCT-2的整数水平变换和基于DCT-2的整数垂直变换。
作为另一示例,当第二变换用于水平变换或垂直变换中的至少一个时,作为多变换选择索引的mts_idx可具有值S或更大的值。这里,S可以是负整数、0或正整数中的至少一个。例如,S可以是1。此外,S可以大于P。
例如,当mts_idx是1时,trTypeHor和trTypeVer可分别具有第二值(例如,1)。
作为另一示例,当mts_idx是2时,trTypeHor和trTypeVer可分别具有第三值(例如,2)和第二值(例如,1)。
作为另一示例,当mts_idx是3时,trTypeHor和trTypeVer可分别具有第二值(例如,1)和第三值(例如,2)。
作为另一示例,当mts_idx是4时,trTypeHor和trTypeVer可分别具有第三值(例如,3)。
例如,当trTypeHor具有第二值时,这可表示基于DST-7的整数水平变换。
作为另一示例,当trTypeHor具有第三值时,这可表示基于DCT-8的整数水平变换。
作为另一示例,当trTypeVer具有第二值时,这可表示基于DST-7的整数垂直变换。
作为另一示例,当trTypeVer具有第三值时,这可表示基于DCT-8的整数垂直变换。
第二值可以是1。此外,第三值可以是2。
在以上实施例中,取代于DST-7,可使用DST-4。此外,取代于DCT-8,可使用DCT-4。
例如,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换。此外,在第二变换中,水平变换和垂直变换可以分别是基于DST-7和DST-7的整数变换。此外,在第三变换中,水平变换和垂直变换可以分别是基于DCT-8和DST-7的整数变换。此外,在第四变换中,水平变换和垂直变换可以分别是基于DST-7和DCT-8的整数变换。此外,在第五变换中,水平变换和垂直变换可以分别是基于DCT-8和DCT-8的整数变换。此外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
作为另一示例,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换。此外,在第二变换中,水平变换和垂直变换可以分别是基于DST-4和DST-4的整数变换。此外,在第三变换中,水平变换和垂直变换可以分别是基于DCT-4和DST-4的整数变换。此外,在第四变换中,水平变换和垂直变换可以分别是基于DST-4和DCT-4的整数变换。此外,在第五变换中,水平变换和垂直变换可以分别是基于DCT-4和DCT-4的整数变换。此外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
也就是说,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换,在第二变换至第N变换中,水平变换和垂直变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,除了DCT-2之外的DCT-8、DST-7、DCT-4或DST-4。这里,N可以是等于或大于3的整数。
例如,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换。此外,在第二变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DST-7和DST-7的整数变换。此外,在第三变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DCT-8的整数变换和从基于DCT-2的整数变换矩阵提取的基于DST-7的整数变换。此外,在第四变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DST-7的整数变换和从基于DCT-2的整数变换矩阵提取的基于DCT-8的整数变换。此外,在第五变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DCT-8和DCT-8的整数变换。此外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
作为另一示例,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换。此外,在第二变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DST-4和DST-4的整数变换。此外,在第三变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DCT-4的整数变换和从基于DCT-2的整数变换矩阵提取的基于DST-4的整数变换。此外,在第四变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DST-4的整数变换和从基于DCT-2的整数变换矩阵提取的基于DCT-4的整数变换。此外,在第五变换中,水平变换和垂直变换可以分别是从基于DCT-2的整数变换矩阵提取的基于DCT-4和DCT-4的整数变换。此外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
也就是说,在第一变换中,水平变换和垂直变换可以分别是基于DCT-2的整数变换,在第二变换至第N变换中,水平变换和垂直变换可表示基于DCT-J或DST-K中的至少一个的整数变换,诸如,从基于DCT-2的整数变换矩阵提取的DCT-8、DST-7、DCT-4或DST-4。这里,N可以是等于或大于3的整数。在这种情况下,第二变换可表示第二变换至第N变换中的至少一个。
取代于DCT-2变换,可使用基于DCT-J或DST-K中的至少一个的整数变换,诸如,DCT-8、DST-7、DCT-4或DST-4。
预测模式可表示块的预测模式并表示使用帧内预测模式、帧间预测模式和IBC(帧内块复制)模式中的哪个模式以执行编码/解码。
例如,当在特定模式下执行帧内预测和帧间预测两者以产生预测块时,特定模式可表示帧间预测模式。
例如,当在特定模式下当前图像被用作参考图像并且矢量被用于预测时,特定模式可表示帧内块复制预测模式。这里,帧内块复制预测模式可以是IBC模式。这里,IBC模式可表示这样的模式:在当前图像/条带/并行块/并行块组/CTU内设置参考区域,由块矢量指示参考区域中的位置,并使用由块矢量指示的区域执行预测。
颜色分量可表示块的颜色分量并可表示亮度(Y)或色度分量。
例如,色度分量可表示Cb分量或Cr分量中的至少一个。也就是说,颜色分量可表示Y分量、Cb分量或Cr分量。
作为另一示例,色度分量可表示R分量、G分量或B分量中的至少一个。
作为另一示例,当图像被分解为多个分量并被编码/解码时,颜色分量可表示分解的分量。
子块分区相关信息可表示指示块被分区为多个子块的信息。
例如,子块分区相关信息可包括子块分区模式信息或分区方向信息中的至少一个。
作为另一示例,子块分区相关信息可包括子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息中的至少一个。
尺寸可表示块尺寸、子块尺寸或变换尺寸中的至少一个。这里,尺寸可表示宽度、高度或宽度和高度的组合中的至少一个。
变换尺寸可表示在相应块中使用的变换尺寸。变换尺寸可小于或等于块尺寸。
尺寸可以是M×N,诸如,2×2、4×2、2×4、4×4、8×4、8×2、2×8、8×8、8×8、16×8、16×4、16×2、2×16、4×16、8×16、16×16、32×16、32×8、32×4、32×2、2×32、4×32、8×32、16×32、32×32、64×32、64×16、64×8、64×4、64×2、2×64、4×64、8×64、16×64、32×64、64×64、128×64、128×32、32×128、64×128或128×128。这里,M和N可以是正整数并可以相同或不同。此外,M可以是S×N。N可以是S×M。这里,S可以是正整数。
这里,M可表示宽度并且N可表示高度。
例如,在具有64×64的尺寸的块的情况下,可在块的左上方区域中执行具有32×32的尺寸的变换。此时,可使用具有32×32的尺寸的量化矩阵。
作为另一示例,在具有64×32的尺寸的块的情况下,可在块的左上方区域中执行具有32×32的尺寸的变换。此时,可使用具有32×32的尺寸的量化矩阵。
作为另一示例,在具有32×64的尺寸的块的情况下,可在块的左上方区域中执行具有16×32的尺寸的变换。此时,可使用具有16×32的尺寸的量化矩阵。
作为另一示例,在具有32×32的尺寸的块的情况下,可在块中执行具有32×32的尺寸的变换。此时,可使用具有32×32的尺寸的量化矩阵。
形式(或形状)可表示块的形式、子块的形式或变换的形式中的至少一个。
形式可以是正方形或非正方形形式。
正方形形式可表示正方形形式。
非正方形形式可表示矩形形式。
变换的形式可表示在相应块中使用的变换的形式。当水平变换尺寸和垂直变换尺寸彼此不同时,变换的形式可以是正方形。此外,当水平变换尺寸和垂直变换尺寸相同时,变换的形式可以是正方形。变换的形式可以与相应块的形式相同或不同。
量化矩阵的形式可表示在相应块中使用的量化矩阵的形式。当水平变换尺寸和垂直变换尺寸彼此不同时,量化矩阵的形式可以是非正方形。此外,当水平变换尺寸和垂直变换尺寸相同时,量化矩阵的形式可以是正方形。量化矩阵的形式可与相应块的形式相同或不同。量化矩阵的形式可以与变换的形式相同或不同。
例如,在具有64×64的尺寸的正方形块的情况下,可在块的左上方区域中执行具有32×32的尺寸的正方形变换。此时,可使用具有32×32的尺寸的正方形量化矩阵。
作为另一示例,在具有16×16的尺寸的正方形块的情况下,可在块中执行具有16×16的尺寸的正方形变换。此时,可使用具有16×16的尺寸的正方形量化矩阵。
作为另一示例,在具有16×4的尺寸的非正方形块的情况下,可在块中执行具有16×4的尺寸的非正方形变换。此时,可使用具有16×4的尺寸的量化矩阵。
作为另一示例,在具有2×8的尺寸的非正方形块的情况下,可在块中执行具有2×8的尺寸的变换。此时,可使用具有2×8的尺寸的量化矩阵。
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第一实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。
这里,第二值可以是1。这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。
此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。也就是说,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的变换类型。可从至少两个变换类型选择所述变换类型。
当当前块处于子块分区模式时,可与帧内预测模式无关地基于当前块的宽度或高度确定水平变换或垂直变换中的至少一个的变换类型。这里,子块分区模式可以是第一子块分区模式(ISP模式)或第二子块分区模式(SBT模式)。
如表20的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表20]
trTypeHor trTypeVer
(W>=4&&W<=16)?1:0 (H>=4&&H<=16)?1:0
例如,当当前块处于子块分区模式时,可与帧内预测模式无关地基于表20来确定水平变换或垂直变换中的至少一个的变换类型。
此外,为了减小编码器/解码器的实现复杂度,可根据块的宽度和块的高度按照相同标准来确定水平变换和垂直变换的一维变换类型。
用于确定水平变换和垂直变换的条件可相同而与块的宽度或块的高度无关。也就是说,用于确定水平变换的条件和用于确定垂直变换的条件可相同。
以上条件可表示当前块的宽度或高度与特定正整数之间的比较。
这里,由于用于确定水平变换和垂直变换的条件的逻辑可被共享,故可减小编码器/解码器的实现复杂度。
此外,如表20的示例中所示,可在不执行当前块的宽度和高度之间的比较的情况下确定在子块中使用的水平变换或垂直变换中的至少一个的变换类型,以减小计算复杂度。
与以下表23和表24相比,在表20中,由于可在不执行当前块的宽度和高度之间的比较的情况下确定在子块中使用的水平变换或垂直变换中的至少一个的变换类型,故可减小计算复杂度。
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-8的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表21的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表21]
trTypeHor trTypeVer
(W>=4&&W<=16)?2:0 (H>=4&&H<=16)?2:0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第三实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
可将水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表22的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表22]
trTypeHor trTypeVer
0 0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第四实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可指示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当宽度小于或等于高度时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换。否则,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换。
当高度小于或等于宽度时,可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。否则,可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表23的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表23]
Figure BDA0003384621360001161
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第五实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当宽度小于或等于高度时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换。否则,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换。
当高度小于或等于宽度时,可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。否则,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表24的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表24]
trTypeHor trTypeVer
(W>=4&&W<=16)?((w<=H)?0:1):0 (H>=4&&H<=16)?((H<=W)?0:1):0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第六实施例。这里,可确定块或子块的水平变换和垂直变换的二维变换组合。
可对作为多变换选择索引的mts_idx进行熵编码/熵解码以确定块或子块的二维变换组合。可使用在编码器和解码器中预定的二维变换组合表来确定水平变换类型trTypeHor和垂直变换类型trTypeVer。此时,二维变换组合可表示在二维变换组合表中的每个项。
当块未被分区为子块时,可对作为多变换选择索引的mts_idx进行熵编码/熵解码。可基于lfnst_idx(即,次级变换执行信息)确定多变换选择索引mts_idx。换句话说,可基于lfnst_idx(即,次级变换执行信息)对多变换选择索引mts_idx进行熵编码/熵解码。
当多变换选择索引mts_idx不存在于比特流中时,可将多变换选择索引mts_idx推断为第一值(例如,0)。换句话说,当多变换选择索引mts_idx没有被熵编码/熵解码时,可将多变换选择索引mts_idx推断为第一值(例如,0)。
根据实施例,可基于帧内预测显式多变换选择使能信息(sps_explicit_mts_intra_enabled_flag)和帧间预测显式多变换选择使能信息(sps_explicit_mts_inter_enabled_flag)中的至少一个来确定多变换选择索引mts_idx是否被用信号发送。例如,当当前块被帧内预测并且帧内预测显式多变换选择使能信息指示启用多变换用于帧内预测块时,可用信号发送当前块的多变换选择索引。相反,当帧内预测显式多变换选择使能信息指示不启用多变换用于帧内预测块时,可不用信号发送当前块的多变换选择索引。
此外,当当前块被帧间预测并且帧间预测显式多变换选择使能信息指示启用多变换用于帧间预测块时,可用信号发送当前块的多变换选择索引。相反,当帧间预测显式多变换选择使能信息指示不启用多变换用于帧间预测块时,可不用信号发送当前块的多变换选择索引。
此外,当当前块根据IBC模式被预测时,可根据帧内预测显式多变换选择使能信息和/或帧间预测显式多变换选择使能信息来确定多变换选择索引是否被用信号发送。此外,当当前块根据IBC模式被预测时,无论帧内预测显式多变换选择使能信息和帧间预测显式多变换选择使能信息如何,可不用信号发送当前块的多变换选择索引。这里,当当前块根据IBC模式被预测时,可不对当前块执行次级变换/逆变换。此外,当当前块不是IBC模式和/或帧间预测模式而是帧内预测模式时,可对当前块执行次级变换/逆变换。
如在表25的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。如在表25的示例中,可预先确定二维变换组合表并可确定由多变换选择索引指示的二维变换组合。
[表25]
mts_idx[x0][y0] 0 1 2 3 4
trTypeHor 0 1 2 1 2
trTypeVer 0 1 1 2 2
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第七实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
当分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表26的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表26]
分区方向信息 子块位置信息 trTypeHor trTypeVer
0 0 2 1
0 1 1 1
1 0 1 2
1 1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第八实施例。这里,可确定块或子块的水平变换和垂直变换的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表27的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表27]
分区方向信息 子块位置信息 trTypeHor trTypeVer
0 0 0 1
0 1 1 1
1 0 1 0
1 1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第九实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表28的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表28]
子块尺寸信息 分区方向信息 子块位置信息 trTypeHor trTypeVer
0 0 0 2 1
0 0 1 1 1
0 1 0 1 2
0 1 1 1 1
1 0 0 0 1
1 0 1 1 1
1 1 0 1 0
1 1 1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第十实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表29的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表29]
子块尺寸信息 分区方向信息 子块位置信息 trTypeHor trTypeVer
0 0 0 0 1
0 0 1 1 1
0 1 0 1 0
0 1 1 1 1
1 0 0 2 1
1 0 1 1 1
1 1 0 1 2
1 1 1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第十一实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表30的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表30]
分区方向信息 trTypeHor trTypeVer
0 2 1
1 1 2
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第十二实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表31的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表31]
分区方向信息 trTypeHor trTypeVer
0 2 1
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合和是否使用变换中的至少一个的第十三实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表32的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表32]
分区方向信息 trTypeHor trTypeVer
0 1 2
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十四实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表33的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表33]
trTypeHor trTypeVer
1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十五实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表34的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表34]
分区方向信息 trTypeHor trTypeVer
0 2 1
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十六实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表35的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表35]
分区方向信息 trTypeHor trTypeVer
0 1 2
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十七实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-8的整数变换的第三变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表36的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表36]
分区方向信息 trTypeHor trTypeVer
0 2 1
1 1 2
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十八实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表37的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表37]
分区方向信息 trTypeHor trTypeVer
0 0 1
1 1 0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第十九实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表38的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表38]
分区方向信息 trTypeHor trTypeVer
0 0 1
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表39的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表39]
分区方向信息 trTypeHor trTypeVer
0 1 0
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十一实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表40的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表40]
子块位置信息 trTypeHor trTypeVer
0 0 1
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十二实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表41的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表41]
子块位置信息 trTypeHor trTypeVer
0 1 0
1 1 1
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十三实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2或4。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可根据以下条件确定水平变换类型或垂直变换类型。
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
此时,第三变换可表示trTypeHor或trTypeVer具有第三值。这里,第三值可以是2。
这里,X可以是正整数,并可以是例如2或4。这里,Y可以是正整数,并可以是例如16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
如表42的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表42]
子块位置信息 trTypeHor trTypeVer
0 0 1
1 1 0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十四实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2、4或8。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如8、16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可将水平变换类型或垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2、4或8。这里,Y可以是正整数,并可以是例如8、16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表43的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表43]
trTypeHor trTypeVer
(W>=4&&W<=8)?1:0 (H>=4&&H<=8)?1:0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十五实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。
这里,X可以是正整数,并可以是例如2、4或8。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
这里,Y可以是正整数,并可以是例如8、16、32或64。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可将水平变换类型或垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2、4或8。这里,Y可以是正整数,并可以是例如8、16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。此外,可与帧内预测模式无关地确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
如表44的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表44]
trTypeHor trTypeVer
(W>=4&&W<=32)?1:0 (H>=4&&H<=32)?1:0
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十六实施例。这里,可确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
可根据块或子块的帧内预测模式、块或子块的宽度W或者块或子块的高度H中的至少一个来确定一维变换类型、二维变换组合或是否使用变换中的至少一个。
当块或子块的帧内预测模式相应于INTRA_PLANAR、INTRA_ANGULAR31、INTRA_ANGULAR32、INTRA_ANGULAR34、INTRA_ANGULAR36或INTRA_ANGULAR37中的至少一个时,可执行以下步骤。
当块或子块的宽度W或高度H小于X时,可将水平变换类型trTypeHor或垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的宽度或高度大于Y时,可将水平变换类型或垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的宽度或高度大于或等于X或者小于或等于Y时,可将水平变换类型或垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
当块或子块的帧内预测模式相应于INTRA_ANGULAR2、INTRA_ANGULAR4、…、INTRA_ANGULAR28、INTRA_ANGULAR30、INTRA_ANGULAR39、INTRA_ANGULAR41、…、INTRA_ANGULAR63或INTRA_ANGULAR65中的至少一个时,可执行以下步骤。
当块或子块的宽度W小于X时,可将水平变换类型trTypeHor确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的宽度大于Y时,可将水平变换类型确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的宽度大于或等于X并且小于或等于Y时,可将水平变换类型确定为指示基于DST-7的整数变换的第二变换。
当块或子块的帧内预测模式相应于INTRA_ANGULAR3、INTRA_ANGULAR5、…、INTRA_ANGULAR27、INTRA_ANGULAR29、INTRA_ANGULAR38、INTRA_ANGULAR40、…、INTRA_ANGULAR64或INTRA_ANGULAR66中的至少一个时,可执行以下步骤。
当块或子块的高度H小于X时,可将垂直变换类型trTypeVer确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的高度大于Y时,可将垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当块或子块的高度大于或等于X并且小于或等于Y时,可将垂直变换类型确定为指示基于DST-7的整数变换的第二变换。
在除了上述情况之外的情况下,可将水平变换类型或垂直变换类型中的至少一个确定为指示基于DCT-2的整数变换的第一变换。
此时,第一变换可表示trTypeHor或trTypeVer具有第一值。这里,第一值可以是0。此时,第二变换可表示trTypeHor或trTypeVer具有第二值。这里,第二值可以是1。
这里,X可以是正整数,并可以是例如2、4或8。这里,Y可以是正整数,并可以是例如8、16、32或64。
此外,当块或子块的宽度或高度是Z时,可不执行水平变换或垂直变换。
这里,Z可以是包括0的正整数,并可以是例如1。
这里,可使用相同水平变换类型或相同垂直变换类型对从块分区出的所有子块进行变换。
这里,帧内预测模式可表示帧内预测模式值、帧内预测模式方向等。
如表45的示例中,可确定块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer中的至少一个。
[表45]
Figure BDA0003384621360001421
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十七实施例。这里,可根据块或子块的预测模式确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的预测模式是帧内预测模式或帧内块复制预测模式时,可基于第一至第二十六实施例中的至少一个来确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的预测模式是帧间预测模式时,可基于第三和第二十六实施例中的至少一个来确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十八实施例。这里,可根据块或子块的颜色分量确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的颜色分量是亮度分量时,可基于第一至第二十六实施例中的至少一个来确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的颜色分量是色度分量时,可基于第三和第二十六实施例中的至少一个来确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的颜色分量是色度分量时,可与帧内预测模式无关地将块或子块的水平变换类型trTypeHor或垂直变换类型trTypeVer确定为预定义的变换类型。这里,预定义的变换类型可以是指示基于DCT-2的整数变换的第一变换。
以下示出确定块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个的第二十九实施例。这里,可根据块或子块的形状确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
当块或子块的形状是正方形或矩形(非正方形)时,可基于第一至第二十六实施例中的至少一个来确定块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
可执行块或子块的各种变换/逆变换类型确定方法,并且可在变换之后或在逆变换之前执行以下扫描方法中的至少一个。
可对在编码器/解码器中进行了变换或量化中的至少一个的量化的系数等级或量化的等级执行以下扫描方法中的至少一个。
这里,量化的系数等级可表示通过对残差块执行变换和量化产生的结果。此外,量化的等级可表示通过对残差块执行量化产生的结果。
此外,量化的系数等级和量化的等级可具有相同含义并可具有与变换系数相同的含义。也就是说,量化的系数等级、量化的等级和变换系数可表示当对残差块进行熵编码/熵解码时的对象。
如图39的示例中所示,可使用对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,对角线扫描方向可以是从左下侧到右上侧或从右上侧到左下侧,如图11的示例。
从左下侧到右上侧的扫描方向可被称为右上对角线扫描。此外,从右上侧到左下侧的扫描方向可被称为左下对角线扫描。
图39的示例示出对角线扫描中的右上扫描。
如图40的示例中,可使用水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,水平扫描可以是优先扫描与第一行相应的系数的方法。
如图41的示例中,可使用垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,垂直扫描可以是优先扫描与第一列相应的系数的方法。
如图42的示例中,可使用基于块的对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
对角线扫描方向可以是从左下侧到右上侧,如图14的示例。此外,对角线扫描方向可以是从右上侧到左下侧。
图42的示例示出基于块的对角线扫描中的基于块的右上扫描。
此时,块可表示从具有特定尺寸的块分区出的子块。如果使用基于块的扫描,则可使用与块中的扫描方法相同的扫描方法来扫描具有特定尺寸的块中的偶数子块。
如图42的示例中,当使用基于块的对角线扫描时,在具有8×8的尺寸的块被分区为均具有4×4的尺寸的子块之后,可使用对角线扫描来扫描均具有4×4的尺寸的子块并可使用对角线扫描来扫描子块中的系数。
如图43的示例中,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。此时,块尺寸可以是4×4并且与第一行相应的块可被优先扫描。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
如图44的示例中,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
如图45的示例中,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以分别是8和2。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
如图46的示例中,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以分别是2和8。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
如图39至图46的示例中,与(a)相应的扫描可用于J×K块的具有J×K的尺寸的残差块,并且与(b)相应的扫描可用于具有8×8/16×16/32×32/64×64中的至少一个的尺寸的块的具有M×N或更大的尺寸的残差块,或者具有M×N的尺寸的残差块。J、K、M和N可以是正整数。此外,J和K可分别小于M和N。此外,J×K可以是4×4并且M×N可以是8×8。
如图39至图46的示例中,虽然仅示出了与8×8的最大尺寸相应的扫描方法,但是与8×8的尺寸相应的扫描方法可应用于与大于8×8的尺寸相应的扫描方法,并且以上扫描不仅可应用于具有正方形形式的残差块,还可应用于具有非正方形形式的残差块。
为了在编码器中排列具有正方形/非正方形形式的二维残差块中的量化的系数等级,可扫描残差中的量化的系数等级。此外,为了在解码器中将一维重建系数等级阵列排列为具有正方形/非正方形形式的二维残差块中的量化的系数等级,可扫描系数等级。
如图47的示例中,可扫描量化的系数等级中的至少一个。
例如,如图47(a)的示例中,可使用对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,如图47(a)的示例中,对角线扫描方向可以是从左下侧到右上侧或从右上侧到左下侧。
从左下侧到右上侧的扫描方向可被称为右上对角线扫描。此外,从右上侧到左下侧的扫描方向可被称为左下对角线扫描。
图47(a)的示例示出对角线扫描中的右上扫描。
作为另一示例,如图47(b)的示例中,可使用垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,垂直扫描可以是优先扫描与第一列相应的系数的方法。
作为另一示例,如图47(c)的示例中,可使用水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,水平扫描可以是优先扫描与第一行相应的系数的方法。
作为另一示例,如图42的示例中,可使用基于块的对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,可使用基于块的对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
如图47(d)的示例中,对角线扫描方向可以是从左下侧到右上侧。此外,对角线扫描方向可以是从右上侧到左下侧。
图47(d)的示例示出针对整个8×4块执行基于块的对角线扫描中的基于块的右上扫描的示例。
作为另一示例,如图47(e)的示例中,对于整个8×4块,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,对于整个8×4块,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
作为另一示例,如图47(f)的示例中,对于整个4×8块,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。此外,对于整个4×8块,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
此时,块尺寸可以是M×N。这里,M或N中的至少一个可以是正整数并可以是4。此外,块尺寸可等于变换系数编码/解码中使用的系数组的尺寸。
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
如以上示例中,当残差块具有非正方形形状时,可按照非正方形形状扫描残差块,或者可将残差块分区为作为特定正方形块单元的M×N的尺寸,并可对每个特定正方形块单元且在特定正方形块单元中执行扫描。这里,M和N可以是正整数并可相同或不同。
图48示出作为具有各种方向的方向性帧内预测模式(除了0和-1之外的-14至80)的平面(0)和DC(1)以及非方向性帧内预测模式的帧内预测模式值的示例。
表46示出与帧内预测模式相应的帧内预测模式值。
[表46]
帧内预测模式值 帧内预测模式
0 INTRA PLANAR
1 INTRA DC
2..66 INTRA ANGULAR2..INTRA ANGULAR66
81..83 INTRA LT CCLM,INTRA L CCLM,INTRA T CCLM
图49至图53是示出根据本发明的实施例的使用变换的编码处理或解码处理的示例的示图。
参照图49,从参数集中的至少一个被用信号发送的多变换选择使能信息sps_mts_enabled_flag可指示多变换选择被启用,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitMtsEnabled设置为指示隐式多变换选择的第一值(例如,1)。
-当前块处于ISP模式(IntraSubPartitionsSplitType不等于ISP_NO_SPLIT)
-当前块处于SBT模式并且当前块的宽度和高度中的较大值小于或等于32(cu_sbt_flag等于1并且Max(nTbW,nTbH)小于或等于32)
-帧内预测显式多变换选择使能信息和帧间预测显式多变换选择使能信息两者指示显式多变换选择未被启用并且当前块的预测模式是帧内预测模式(sps_explicit_mts_intraenabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0并且CuPredMode[xTbY][yTbY]等于MODE_INTRA)
在推导出的隐式多变换选择信息指示隐式多变换选择(implicitMtsEnabled=1)的情况下,可如下选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
-在ISP模式的情况下,基于当前块的宽度和高度来选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
-在帧内预测显式多变换选择使能信息和帧间预测显式多变换选择使能信息两者指示显式多变换选择未被启用(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0)的情况下,基于当前块的宽度和高度来选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
-在SBT模式的情况下,基于分区方向信息和子块位置信息选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,图53)。
相反,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitMtsEnabled=0)时,对于水平变换类型trTypeHor和垂直变换类型trTypeVer,基于用信号发送的多变换选择信息tu_mts_idx和图52的表来选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
同时,当当前块是色度分量(cIdx大于0)时,可与推导出的隐式多变换选择信息无关地将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。
参照图50,从参数集中的至少一个被用信号发送的多变换选择使能信息sps_mts_enabled_flag可指示多变换选择被启用,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitMtsEnabled设置为指示隐式多变换选择的第一值(例如,1)。
-当前块处于ISP模式(IntraSubPartitionsSplitType不等于ISP_NO_SPLIT)
-当前块处于SBT模式并且当前块的宽度和高度中的较大值小于或等于32(cu_sbt_flag等于1并且Max(nTbW,nTbH)小于或等于32)
-帧内预测显式多变换选择使能信息和帧间预测显式多变换选择使能信息两者指示显式多变换选择未被启用并且当前块的预测模式是帧内预测模式(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0并且CuPredMode[xTbY][yTbY]等于MODE_INTRA)
在推导出的隐式多变换选择信息指示隐式多变换选择(implicitMtsEnabled=1)的情况下,可如下选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
在ISP模式的情况下,基于当前块的宽度和高度来选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
在帧内预测显式多变换选择使能信息和帧间预测显式多变换选择使能信息两者指示显式多变换选择未被启用并且当前块的预测模式指示帧内预测模式的(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0并且CuPredMode[xTbY][yTbY]等于MODE_INTRA)情况下,基于当前块的宽度和高度来选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
在SBT模式的情况下,基于分区方向信息和子块位置信息选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,图53)。
相反,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitMtsEnabled=0)时,对于水平变换类型trTypeHor和垂直变换类型trTypeVer,基于用信号发送的多变换选择信息tu_mts_idx和图52的表来选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
同时,当当前块是色度分量(cIdx大于0)时,可与推导出的隐式多变换选择信息无关地将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。
根据实施例,与图49和图50不同,当帧内预测显式多变换选择使能信息指示显式多变换选择未被启用并且当前块的预测模式指示帧内预测模式(sps_explicit_mts_intra_enabled_flag等于0并且CuPredMode[xTbY][yTbY]等于MODE_INTRA)时,可将隐式多变换选择信息(implictMtsEnabled)设置为指示隐式多变换选择的第二值(例如,1)。
根据实施例,当帧内预测显式多变换选择使能信息指示显式多变换选择未被启用,变换矩阵索引指示次级变换/逆变换未被应用于当前块,并且基于矩阵的帧内预测模式使用信息指示基于矩阵的帧内预测模式未被应用于当前块(sps_explicit_mts_intra_enabled_flag等于0,lfnst_idx[x0][y0]等于0,并且intra_mip_flag[x0][y0]等于0)时,可将隐式多变换选择信息(implictMtsEnabled)设置为指示隐式多变换选择的第二值(例如,1)。
根据实施例,当帧内预测显式多变换选择使能信息指示显式多变换选择未被启用,当前块的预测模式指示帧内预测模式,变换矩阵索引指示次级变换/逆变换未被应用于当前块,并且基于矩阵的帧内预测模式使用信息指示基于矩阵的帧内预测模式未被应用于当前块(sps_explicit_mts_intra_enabled_flag等于0,CuPredMode[0][xTbY][yTbY]等于MODE_INTRA,lfnst_idx[x0][y0]等于0,并且intra_mip_flag[x0][y0]等于0)时,可将隐式多变换选择信息(implictMtsEnabled)设置为指示隐式多变换选择的第二值(例如,1)。
可对基于矩阵的帧内预测模式使用信息进行熵编码/熵解码。
根据实施例,从参数集中的至少一个被用信号发送的多变换选择使能信息sps_mts_enabled_flag可指示多变换选择被启用,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitMtsEnabled设置为指示隐式多变换选择的第一值(例如,1)。
-当前块处于ISP模式
-当前块处于SBT模式并且当前块的宽度和高度中的较大值小于或等于32
-帧内预测显式多变换选择使能信息指示显式多变换选择未被启用,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式
当推导出的隐式多变换选择信息指示隐式多变换选择(implicitMtsEnabled=1)时,可如下选择水平变换类型trTypeHor和垂直变换类型trTypeVer。在以上实施例中,与图49和图50不同,由于通过确定仅SBT模式来选择水平变换类型和垂直变换类型,故可减小计算复杂度。
-在SBT模式的情况下,基于分区方向信息和子块位置信息(例如,图53),选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
-在非SBT模式的情况下(在ISP模式的情况下),基于当前块的宽度和高度选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
-在非SBT模式的情况下(帧内预测显式多变换选择使能信息指示显式多变换选择未被启用,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式),基于当前块的宽度和高度选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
这里,可将非SBT模式的情况(ISP模式的情况,或者帧内预测显式多变换选择使能信息指示显式多变换选择未被启用、当前块的预测模式是帧内预测模式、不对当前块执行次级逆变换并且当前块不处于基于矩阵的帧内预测模式的情况)划分为两种情况,并且在这两种情况下,可通过相同方法确定水平变换类型和垂直变换类型。
也就是说,在两种情况下,也就是说,1)ISP模式的情况以及2)帧内预测显式多变换选择使能信息指示显式多变换选择未被启用、当前块的预测模式是帧内预测模式、不对当前块执行次级逆变换并且当前块不处于基于矩阵的帧内预测模式的情况,可基于当前块的宽度和高度选择水平变换类型trTypeHor和垂直变换类型trTypeVer(例如,上表20)。
相反,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitMtsEnabled=0)时,基于用信号发送的多变换选择信息和图52的表来选择水平变换类型trTypeHor和垂直变换类型trTypeVer。
同时,当当前块是色度分量时,可与推导出的隐式多变换选择信息无关地将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。此外,当当前块处于ISP模式并且对当前块执行次级逆变换时,可与推导出的隐式多变换选择信息无关地将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。
此外,当多变换选择使能信息sps_mts_enabled_flag指示多变换选择未被启用时,可将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。
此外,当多变换选择使能信息sps_mts_enabled_flag指示多变换选择未被启用并且隐式多变换选择信息不指示隐式多变换选择(implicitMtsEnabled=0)时,可将水平变换类型trTypeHor和垂直变换类型trTypeVer选择为指示基于DCT-2的整数变换的第一变换。
在以上示例中,当多变换选择使能信息sps_mts_enabled_flag指示多变换选择被启用时,可将多变换选择使能信息设置为第一值(例如,1)。
在以上示例中,当隐式多变换选择信息implicitMtsEnabled指示隐式多变换选择时,可将隐式多变换选择信息设置为第一值(例如,1)。此外,当隐式多变换选择信息implicitMtsEnabled不指示隐式多变换选择时,可将隐式多变换选择信息设置为第二值(例如,0)。
在以上示例中,当帧内预测显式多变换选择使能信息指示显式多变换选择被启用时,可将帧内预测显式多变换选择使能信息设置为第一值(例如,1)。此外,当帧内预测显式多变换选择使能信息指示显式多变换选择未被启用时,可将帧内预测显式多变换选择使能信息设置为第二值(例如,0)。
在以上示例中,当帧间预测显式多变换选择使能信息指示显式多变换选择被启用时,可将帧间预测显式多变换选择使能信息设置为第一值(例如,1)。此外,当帧间预测显式多变换选择使能信息指示显式多变换选择未被启用时,可将帧间预测显式多变换选择使能信息设置为第二值(例如,0)。
例如,当当前块处于ISP(帧内子块分区)模式时,可与当前块的帧内预测模式无关地基于当前块的宽度或高度中的至少一个来做出确定。具体地,如上表20的示例中,可确定水平变换类型和垂直变换类型。
例如,当当前块处于ISP(帧内子块分区)模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
此外,当帧内预测显式多变换选择使能信息指示显式多变换选择未被启用,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
这里,当隐式多变换选择信息指示隐式多变换选择时,可基于当前块是否处于SBT(子块变换)模式来确定水平变换类型和垂直变换类型。
具体地,当隐式多变换选择信息指示隐式多变换选择并且当前块不处于SBT(子块变换)模式时,可与当前块的帧内预测模式无关地确定水平变换类型和垂直变换类型。具体地,如上表20的示例中,可确定水平变换类型和垂直变换类型。
当当前块处于ISP(帧内子块分区)模式并且执行次级逆变换时,可与隐式多变换选择信息无关地将水平变换类型和垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
当当前块是色度分量时,可与隐式多变换选择信息无关地将水平变换类型和垂直变换类型确定为指示基于DCT-2的整数变换的第一变换。
在编码器中,为了提高图像的主观/客观质量,可通过对残差块执行初级变换来产生初级变换系数,可通过对初级变换系数执行次级变换来产生次级变换系数,可通过对次级变换系数进行量化来产生量化的系数等级,并可对量化的系数等级进行熵编码。
在解码器中,可对量化的系数等级进行熵解码,可通过对量化的系数等级进行反量化来产生次级变换系数,可通过对次级变换系数进行次级逆变换来产生初级变换系数,并可通过对初级变换系数进行初级逆变换来产生重建残差块。
如图54中所示,可在编码器中在初级变换与量化之间执行次级变换。此外,可在解码器中在反量化与初级逆变换之间执行次级逆变换。这里,次级变换可以是减小的次级变换或低频不可分离变换(LFNST)。
可显式地对指示哪个变换被用作初级/次级变换和逆变换的变换矩阵集信息(索引)和变换矩阵索引中的至少一个进行熵编码/熵解码。变换矩阵集信息和变换矩阵索引可被包括在次级变换索引信息中。可选地,变换矩阵索引可表示次级变换索引信息。
此外,可不对指示哪个变换被用作初级/次级变换和逆变换的变换矩阵集信息和/或变换矩阵索引进行熵编码/熵解码。相反,可基于至少一个编码参数隐式地确定变换矩阵集信息和/或变换矩阵索引。
以下将描述用于执行初级/次级变换和逆变换的图像编码/解码方法和设备以及用于存储比特流的记录介质的实施例。
在本说明书中,矩阵A×B可表示具有A个列和B个行的矩阵,除非另有表述。另外,在特殊情况下,其可表示具有B个列和A个行的矩阵。
可对以下输入样点执行不可分离变换,从而产生输出样点。
在编码器中,输入样点可以是初级变换系数。在解码器中,输入样点可以是反量化的次级变换系数。
作为4×4输入样点的示例,可通过二维矩阵形式表示输入样点,如以下等式8所示。
[等式8]
Figure BDA0003384621360001531
可通过一维矢量形式表示二维矩阵形式的4×4输入样点,如以下等式9所示。
[等式9]
Figure BDA0003384621360001541
可经由使用光栅扫描、水平扫描、垂直扫描、对角线扫描(右上对角线扫描或左下对角线扫描)、基于块的对角线扫描、基于块的水平扫描和基于块的垂直扫描中的至少一个,通过一维矢量形式来表示二维矩阵形式的4×4输入样点。
可如以下等式10所述执行不可分离变换。这里,
Figure BDA0003384621360001542
可表示编码器中次级变换的系数矢量。此外,在解码器中,其可表示一维变换系数矢量。T可表示用于4×4输入样点的具有16×16尺寸的次级变换矩阵的示例。
[等式10]
Figure BDA0003384621360001543
可通过使用光栅扫描、水平扫描、垂直扫描、对角线扫描(右上对角线扫描或左下对角线扫描)、基于块的对角线扫描、基于块的水平扫描和基于块的垂直扫描中的至少一个,用4×4输入样点来配置16×1形式的
Figure BDA0003384621360001544
当执行不可分离变换时,可通过矩阵乘法来计算次级变换/逆变换。
为了减小计算复杂度和用于存储变换矩阵所必需的存储器,可减小变换矩阵的维度。可在变换/逆变换处理中执行减小的次级变换/逆变换。
减小的次级变换可以是将N维矢量映射到R维矢量的处理。这里,用于次级变换的N维矢量可表示输入样点。此外,R维矢量可表示输出样点。这里,N和R可以是正整数,并且在减小的次级变换中N可以小于R。
N/R可表示减小因子。在具有4×4尺寸的减小的次级变换的情况下,减小因子可以是1、2或4。此外,在具有8×8尺寸的减小的次级变换的情况下,减小因子可以是2、3、4、6或8。
在减小的次级变换中,取代于N×N变换矩阵,可使用R×N变换矩阵,如图55中所示。另外,在减小的次级逆变换中,取代于N×N变换矩阵,可使用N×R变换矩阵。这里,R×N变换矩阵可表示具有N个列和R个行的矩阵。这里,此外,N×R变换矩阵可表示具有R个列和N个行的矩阵。
这里,变换矩阵的R个行可表示具有N个维度的R基本矢量。作为减小的次级变换的逆变换的减小的次级逆变换可以是减小的次级变换的转置形式。
如图56中所示,可在编码器/解码器中执行次级变换/逆变换。
例如,具有特定尺寸的变换矩阵可用于减小的次级变换/逆变换。
在具有D×D尺寸的减小的次级变换的情况下,可使用具有C×A或C×B尺寸的变换矩阵。
当使用C×A变换矩阵时,可将包括在块的左上方D×D区域中的初级变换系数中的至少一个用作输入样点。
此外,当使用C×A变换矩阵时,输出样点可包括在块的左上方D×D区域内的左上方E×E区域中。
在具有D×D尺寸的减小的次级变换的情况下,可将具有A×A尺寸的变换矩阵减小到C×B尺寸,从而可使用具有C×B尺寸的变换矩阵。
当使用C×B变换矩阵时,可将包括在块的除了左上方D×D区域内的右下方E×E区域之外的剩余区域中的初级变换系数中的至少一个用作输入样点。
此外,当使用C×B变换矩阵时,输出样点可被包括在块的左上方D×D区域内的左上方E×E区域中。
在具有D×D尺寸的减小的次级逆变换的情况下,可使用具有A×C或B×C尺寸的变换矩阵。
当使用A×C变换矩阵时,可将包括在块的左上方D×D区域内的左上方E×E区域中的反量化的次级变换系数中的至少一个用作输入样点。
此外,当使用A×C变换矩阵时,输出样点可被包括在块的左上方D×D区域内。
在具有D×D尺寸的减小的次级逆变换的情况下,可将具有A×A尺寸的变换矩阵减小到B×C尺寸,从而可使用具有B×C尺寸的变换矩阵。
当使用B×C变换矩阵时,可将包括在块的左上方D×D区域内的左上方E×E区域中的反量化的次级变换系数中的至少一个用作输入样点。
此外,当使用B×C变换矩阵时,输出样点可包括在块的除了左上方D×D区域内的右下方E×E区域之外的剩余区域中。
A、B、C、D和E可以是正整数。例如,A、B、C、D和E可以分别是64、48、16、8和4。
这里,C可等于或小于A或B。
此外,B可等于或小于D×D的值。
此外,C可以是E×E的值。
此外,E可等于或小于D。
作为另一示例,具有特定尺寸的变换矩阵可用于减小的次级变换/逆变换。
在具有D×D尺寸的减小的次级变换的情况下,可使用具有C×A或C×B尺寸的变换矩阵。
当使用C×A变换矩阵时,可将包括在块的左上方D×D区域中的初级变换系数中的至少一个用作输入样点。
此外,当使用C×A变换矩阵时,输出样点可被包括在块的左上方D×D区域内的左上方E×E区域中。
在具有D×D尺寸的减小的次级变换的情况下,可将具有A×A尺寸的变换矩阵减小到C×B尺寸,从而可使用具有C×B尺寸的变换矩阵。
当使用C×B变换矩阵时,可将包括在块的除了左上方D×D区域内的右下方E×E区域之外的剩余区域中的初级变换系数中的至少一个用作输入样点。
此外,当使用C×B变换矩阵时,输出样点可被包括在块的左上方D×D区域内的左上方E×E区域中。
在具有D×D尺寸的减小的次级逆变换的情况下,可使用具有A×C或B×C尺寸的变换矩阵。
当使用A×C变换矩阵时,可将包括在块的左上方D×D区域内的左上方E×E区域中的反量化的次级变换系数中的至少一个用作输入样点。
此外,当使用A×C变换矩阵时,输出样点可被包括在块的左上方D×D区域内。
在具有D×D尺寸的减小的次级逆变换的情况下,可将具有A×A尺寸的变换矩阵减小到B×C尺寸,从而可使用具有B×C尺寸的变换矩阵。
当使用B×C变换矩阵时,可将包括在块的左上方D×D区域内的左上方E×E区域中的反量化的次级变换系数中的至少一个用作输入样点。
此外,当使用B×C变换矩阵时,输出样点可被包括在块的除了左上方D×D区域内的右下方D×E区域之外的剩余区域中。
A、B、C、D和E可以是正整数。例如,A、B、C、D和E可以分别是64、32、16、8和4。
这里,C可等于或小于A或B。
此外,B可等于或小于D×D的值。
此外,C可以是E×E的值。
此外,E可等于或小于D。
例如,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是D×D时,可将具有C×B尺寸的变换矩阵用作减小的次级变换,并且可将具有B×C尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方D×D区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方D×E区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方D×E区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方D×D区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是C×D或D×C时,可将具有B×B尺寸的变换矩阵用作减小的次级变换,并且可将具有B×B尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方D×D区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方D×D区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方D×D区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方D×D区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是N×D或D×N时,可将具有B×B尺寸的变换矩阵用作减小的次级变换,并且可将具有B×B尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于B。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的两个左上方D×D区域中的至少一个中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的两个左上方D×D区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的两个左上方D×D区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的两个左上方D×D区域中的至少一个中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是C×C时,可将具有C×A尺寸的变换矩阵用作减小的次级变换,并且可将具有A×C尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方C×C区域内的右下方D×D区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方D×E区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方D×E区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方C×C区域内的右下方D×D区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸大于C×C时,可将具有B×A尺寸的变换矩阵用作减小的次级变换,并且可将具有A×B尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方C×C区域内的右下方D×D区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方D×D区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方D×D区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方C×C区域内的右下方D×D区域之外的剩余区域中包括的初级变换系数中的至少一个
A、B、C、D和E可以是正整数。例如,A、B、C、D和E可以分别是48、16、8、4和2。
这里,C可等于或小于A或B。
此外,B可等于或小于D×D的值。
此外,C可以是D×E的值。
此外,E可等于或小于D。
作为另一示例,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是4×4时,可将具有8×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×4或4×8时,可将具有16×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×16尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是N×4或4×N时,可将具有16×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×16尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于16。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的两个左上方4×4区域中的至少一个中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的两个左上方4×4区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的两个左上方4×4区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的两个左上方4×4区域中的至少一个中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×8时,可将具有8×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸大于8×8时,可将具有16×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×16尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是4×4时,可将具有8×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是N×4或4×N时,可将具有16×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×16尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于8。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×8时,可将具有8×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸大于8×8时,可将具有16×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×16尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是4×4,当前块的尺寸是8×4或4×8,或者当前块的尺寸是N×4或4×N时,可将具有8×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×8尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于16。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域或左上方2×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域或左上方2×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×8时,可将具有8×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸大于8×8时,可将具有16×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×16尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是4×4时,可将具有8×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×4或4×8时,可将具有16×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×16尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是N×4或4×N时,可将具有16×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×16尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于16。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的两个左上方4×4区域中的至少一个中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的两个左上方4×4区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的两个左上方4×4区域中的至少一个中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的两个左上方4×4区域中的至少一个中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×8或当前块的尺寸大于8×8时,可将具有8×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为另一示例,减小的次级变换、减小的次级逆变换、输入样点区域和输出样点区域中的至少一个可根据当前块的尺寸而不同。
例如,当当前块的尺寸是4×4,当前块的尺寸是8×4或4×8,或者当前块的尺寸是N×4或4×N时,可将具有8×16尺寸的变换矩阵用作减小的次级变换,并且可将具有16×8尺寸的变换矩阵用作减小的次级逆变换。这里,N可以是正整数。例如,其可等于或大于16。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域或左上方2×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域或左上方2×4区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的左上方4×4区域中包括的初级变换系数中的至少一个
作为另一示例,当当前块的尺寸是8×8或当前块的尺寸大于8×8时,可将具有8×48尺寸的变换矩阵用作减小的次级变换,并且可将具有48×8尺寸的变换矩阵用作减小的次级逆变换。可如下描述减小的次级变换/逆变换的输入和输出样点的实施例。
-减小的次级变换的输入样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
-减小的次级变换的输出样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输入样点:在块的左上方4×2区域中包括的次级变换系数中的至少一个
-减小的次级逆变换的输出样点:在块的除了左上方8×8区域内的右下方4×4区域之外的剩余区域中包括的初级变换系数中的至少一个
作为减小的次级变换矩阵,可存在总共J个变换矩阵集,并且每个变换矩阵集总共K个不可分离变换矩阵。这里,J和K可以是正整数。例如,J和K可以是2。
可以以CU、PU、TU、CB、PB和TB中的至少一个为单元对当前块的变换矩阵集索引lfnstTrSetIdx进行熵编码/熵解码。这里,在解码器中,可通过使用熵解码的变换矩阵集索引lfnstTrSetIdx来确定变换矩阵集。
可根据当前块的帧内预测模式来确定变换矩阵集。可根据当前块和邻近块的编码参数中的至少一个来确定变换矩阵集。可根据当前块的预测模式来确定变换矩阵集。
例如,可在当前块的预测模式是帧内预测模式的情况与当前块的预测模式是IBC模式的情况之间确定不同变换矩阵集。作为另一示例,可在以下情况中确定不同变换矩阵集:当前块的预测模式是帧内预测模式;当前块的预测模式是帧间预测模式;以及当前块的预测模式是IBC模式。
可根据当前块的颜色分量来确定变换矩阵集。例如,可在当前块的颜色分量是Y(亮度)的情况与当前块的颜色分量是Cb(色度)或Cr(色度)的情况的情况之间确定不同变换矩阵集。
可根据当前块的尺寸来确定变换矩阵集。例如,可在当前块的尺寸(水平尺寸和垂直尺寸的乘积)等于或小于16的情况与当前块的尺寸(水平尺寸和垂直尺寸的乘积)大于16的情况之间确定不同变换矩阵集。
可根据当前块的形式来确定变换矩阵集。例如,可在当前块的形式是正方形的情况与当前块的形式是非正方形的情况之间确定不同变换矩阵集。
可根据是否在预测期间将当前块分区为子块来确定变换矩阵集。例如,可在在预测期间将当前块分区为子块的情况与在预测期间不将当前块分区为子块的情况之间确定不同变换矩阵集。
可根据是否使用当前块的初级变换来确定变换矩阵集。
如表47中所示,可根据是否使用当前块的初级变换来确定不同变换矩阵集。这里,即使当不对当前块执行初级变换/逆变换时,也可执行次级变换/逆变换。
例如,当关于是否使用初级变换的信息(transform_skip_flag)具有第一值(例如,0)时,可确定第一变换矩阵集。
此外,当关于是否使用初级变换的信息(transform_skip_flag)不具有第一值(例如,0)时,可确定第二变换矩阵集。
这里,第一变换矩阵集和第二变换矩阵集可彼此不同。
[表47]
Figure BDA0003384621360001671
可根据当前块的初级变换类型来确定变换矩阵集。
如表48中所示,可根据当前块的初级变换的类型来确定不同变换矩阵集。
例如,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。
此外,当初级变换的类型是第二变换(基于DCT-2的整数变换或trTypeHor不是第一值(例如,0)或trTypeVer不是第一值(例如,0))时,可确定第二变换矩阵集。
这里,第一变换矩阵集和第二变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第二变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第二变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第二变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第一变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
[表48]
Figure BDA0003384621360001681
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第二变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第二变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第四变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第一变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第二变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第四变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第二变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第四变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第二变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
作为另一示例,当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可确定第一变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第二值(例如,1))时,可确定第二变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第二值(例如,1))时,可确定第三变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)或trTypeVer是第三值(例如,2))时,可确定第四变换矩阵集。此外,当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)或trTypeVer是第三值(例如,2))时,可确定第五变换矩阵集。这里,第一至第五变换矩阵集可彼此不同。
可根据当前块的二维变换组合来确定变换矩阵集。
如表49中所示,可根据当前块的二维变换组合来确定不同变换矩阵集。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx不是第一值(例如,0)时,可确定第二变换矩阵集。这里,第一变换矩阵集和第二变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第二变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第二变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第二变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第一变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第二变换矩阵集。这里,第一至第三变换矩阵集可彼此不同。
[表49]
Figure BDA0003384621360001711
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第二变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第四变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第一变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第二变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第四变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第二变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第二变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第四变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第一变换矩阵集。这里,第一至第四变换矩阵集可彼此不同。
例如,当多变换选择索引mts_idx是第一值(例如,0)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第二值(例如,1)时,可确定第一变换矩阵集。此外,当多变换选择索引mts_idx是第三值(例如,2)时,可确定第三变换矩阵集。此外,当多变换选择索引mts_idx是第四值(例如,3)时,可确定第四变换矩阵集。此外,当多变换选择索引mts_idx是第五值(例如,4)时,可确定第二变换矩阵集。这里,第一至第五变换矩阵集可彼此不同。
根据实施例,在变换矩阵索引lfnst_idx被用信号发送之后,可用信号发送多变换选择索引mts_idx。此外,可适应于变换矩阵索引来用信号发送多变换选择索引。例如,当变换矩阵索引具有第一值(例如,0)时,也就是说,当次级变换/逆变换未被应用于当前块时,可用信号发送多变换选择索引。另一方面,当变换矩阵索引不具有第一值时,也就是说,当次级变换/逆变换被应用于当前块时,可不用信号发送多变换选择索引。
这里,可根据变换矩阵索引lfnst_idx来确定每个变换矩阵集中的不可分离变换矩阵。这里,可对变换矩阵索引lfnst_idx进行熵编码/熵解码。在以下变换矩阵索引lfnst_idx不是第一值(例如,0)的情况下,可根据变换矩阵索引lfnst_idx的值来选择变换索引,并且选择的变换矩阵可用于减小的次级变换/逆变换。
可按照帧内块来用信号发送变换矩阵索引。
当当前块的水平尺寸和垂直尺寸中的至少一个等于或大于N时,可用信号发送变换矩阵索引。这里,N可以是正整数。例如,其可以是4。当帧内子块分区类型(IntraSubPartitionsSplitType)与ISP_NO_SPLIT相同时,可用信号发送变换矩阵索引。当没有基于矩阵的帧内预测模式被使用时,可用信号发送变换矩阵索引。这里,当关于是否使用基于矩阵的帧内预测模式的信息(intra_mip_flag)具有第一值(例如,0)时,可用信号发送变换矩阵索引。
根据实施例,当当前块的尺寸小于预定阈值时,可用信号发送变换矩阵索引。例如,当当前块的高度和宽度中的较大值小于预定阈值时,可用信号发送变换矩阵索引。所述阈值可以是指示变换块的最大尺寸的值(MaxTbSizeY)。
根据实施例,根据当前块的最后非零变换系数的位置,可确定是否用信号发送变换矩阵索引lfnst_idx。例如,当当前块的最后非零变换系数位于当前块的左上角时,由于在当前块中仅存在一个非零变换系数,故可不执行次级变换/逆变换。因此,在这种情况下,可不用信号发送变换矩阵索引lfnst_idx。这里,可确定不对当前块执行次级变换/逆变换。
根据另一实施例,当在当前块的次级逆变换的应用区域之外存在非零变换系数时,可不用信号发送变换矩阵索引lfnst_idx。例如,当前块的次级逆变换的应用区域可以是当前块的左上方子块。可将具有4×4或更大尺寸的块的子块的尺寸确定为4×4。左上方子块表示与块的左上角紧邻的子块。当当前块的最后变换系数所位于的子块不是当前块的左上方子块时,可不用信号发送变换矩阵索引lfnst_idx。这里,可确定不对当前块执行次级变换/逆变换。这里,子块可表示系数组。
根据另一实施例,当前块的次级逆变换的应用区域可以是当前块的左上方子块的一部分。例如,当当前块的尺寸是4×4或8×8时,可根据按照左上方子块的扫描顺序的前八个变换系数来确定当前块的次级逆变换的应用区域。因此,当当前块的最后变换系数按照扫描顺序处于第九位置或更靠后时,可不用信号发送变换矩阵索引lfnst_idx。这里,可确定不对当前块执行次级变换/逆变换。
当没有帧内残差DPCM方法被使用时,可用信号发送变换矩阵索引。这里,当关于是否使用帧内残差DPCM方法的信息(intra_bdpcm_flag)具有第一值(例如,0)时,可用信号发送变换矩阵索引。
此外,当关于是否使用帧内残差DPCM方法的信息(intra_bdpcm_flag)具有第一值(例如,0)时,可将变换跳过模式标志隐式地确定为第一值(例如,0)。在本说明书中,变换跳过模式可表示变换省略模式。当变换跳过模式标志是第一值(例如,0)时,可执行初级变换/逆变换和次级变换/逆变换中的至少一个。此外,当变换跳过模式标志是第二值(例如,1)时,可不执行初级变换/逆变换和次级变换/逆变换。
当帧内残差DPCM方法被使用时,可不用信号发送变换矩阵索引。这里,当关于是否使用帧内残差DPCM方法的信息(intra_bdpcm_flag)具有第二值(例如,1)时,可不用信号发送变换矩阵索引。
当帧内残差DPCM方法被使用时,可不对变换跳过模式标志进行编码/解码/获取。在帧内残差DPCM方法中,可跳过残差信号的变换处理。因此,当DPCM方法被应用于帧内残差信号时,可将变换跳过模式标志隐式地确定为第二值(例如,1)。换句话说,可不对当前块执行变换/逆变换。此外,当帧内残差DPCM方法被使用时,由于不对当前块执行变换/逆变换,故可不用信号发送变换矩阵索引。
当帧内残差DPCM方法被使用时,可对指示是否对当前块的残差信号执行变换/逆变换的变换跳过模式标志进行编码/解码/获取。因此,可根据变换跳过模式标志来确定变换/逆变换是否被应用于当前块。
可针对每个颜色分量独立地确定根据是否使用帧内残差DPCM方法编码/解码/获取和确定变换跳过模式标志的方法。
当帧内参考样点线指示符是0时,可用信号发送变换矩阵索引。这里,当帧内参考样点线指示符(intra_luma_ref_idx)是第一值(例如,0)时,可用信号发送变换矩阵索引。当帧内参考样点线指示符是0时,可通过使用当前块的最邻近的参考样点来执行帧内预测。
当帧内亮度MPM标志(intra_luma_mpm_flag)是第二值(例如,1)时,可用信号发送变换矩阵索引。
当当前块的水平尺寸和垂直尺寸中的至少一个小于N时,可用信号发送变换矩阵索引。这里,N可以是正整数。例如,其可以是128。
根据实施例,可根据多变换选择索引mts_idx来用信号发送变换矩阵索引。
例如,当多变换选择索引mts_idx是第M值(例如,M-1)时,可用信号发送变换矩阵索引。这里,当多变换选择索引mts_idx是第M值(例如,M-1)时,可执行减小的次级变换/逆变换。
作为另一示例,当多变换选择索引mts_idx不是第M值(例如,M-1)时,可不用信号发送变换矩阵索引。这里,当多变换选择索引mts_idx不是第M值(例如,M-1)时,可不执行减小的次级变换/逆变换。
这里,M可以是等于或大于1的正整数。例如,M可以是1。
根据实施例,当当前块未被分区为子块时,可用信号发送变换矩阵索引。此外,当当前块根据第一子块分区模式或第二子块分区模式被分区为子块时,可不用信号发送变换矩阵索引。当前块可以是CTU/CTB、CU/CB、TU/TB等。
根据另一实施例,无论当前块是否被分区为子块,可用信号发送变换矩阵索引。因此,可根据变换矩阵索引将次级变换/逆变换应用于当前块的子块。
当CU中的编码块标志、TU/TB中的Y(亮度)分量编码块标志、TU/TB中的Cb(色度)分量编码块标志和TU/TB中的Cr(色度)分量编码块标志中的至少一个是第二值(例如,1)时,可用信号发送变换矩阵索引。
例如,当CU中的编码块标志是第二值(例如,1)时,可按照CU用信号发送变换矩阵索引,并可按照相应的CU执行减小的次级变换/逆变换。
作为另一示例,当TU/TB中的Y(亮度)分量编码块标志是第二值(例如,1)时,可按照TU/TB用信号发送变换矩阵索引,并可按照相应的TU/TB执行减小的次级变换/逆变换。
作为另一示例,当TU/TB中的Cb(色度)分量编码块标志是第二值(例如,1)时,可按照TU/TB用信号发送变换矩阵索引,并可按照相应的TU/TB执行减小的次级变换/逆变换。
作为另一示例,当TU/TB中的Cr(色度)分量编码块标志是第二值(例如,1)时,可按照TU/TB用信号发送变换矩阵索引,并可在相应的TU/TB中执行减小的次级变换/逆变换。
当变换矩阵索引不存在于比特流中时,可将其推断为第一值(例如,0).
根据作为用于聚合色度信号(Cb分量和Cr分量)的残差信号的编码解码方法的指示符的tu_joint_cbcr_residual,可不在tu_joint_cbcr_residual相应于第二值(例如,1)的块(TB、TC)中对变换矩阵索引lfnst_idx进行熵编码/熵解码。此外,可在tu_joint_cbcr_residual相应于第一值(例如,0)的块(TB、TU)中对变换矩阵索引lfnst_idx进行熵编码/熵解码。
例如,当由于tu_joint_cbcr_residual而特定分量的残差信号不存在于比特流中时,可不在相应分量的块(TB、TU)中对变换矩阵索引lfnst_idx进行熵编码/熵解码。
这里,tu_joint_cbcr_residual可表示Cb分量的残差信号是否用于推导Cb分量和Cr分量的残差信号。
例如,当tu_joint_cbcr_residual是第一值(例如,0)时,根据另一语法元素值,Cr分量的残差信号可存在于比特流中。此外,当tu_joint_cbcr_residual是第二值(例如,1)时,Cb分量的残差信号可用于推导Cb分量和Cr分量的残差信号。
当tu_joint_cbcr_residual表示Cb分量的残差信号是否用于推导Cb分量和Cr分量的残差信号时,Cr分量的残差信号可不存在于比特流中。在这样的情况下,可不在Cr分量的块(TB、TU)中对变换矩阵索引lfnst_idx进行熵编码/熵解码。
此外,tu_joint_cbcr_residual可表示Cr分量的残差信号是否用于推导Cb分量和Cr分量的残差信号。
例如,当tu_joint_cbcr_residual是第一值(例如,0)时,根据另一语法元素值,Cb分量的残差信号可存在于比特流中。此外,当tu_joint_cbcr_residual是第二值(例如,1)时,Cr分量的残差信号可用于推导Cb分量和Cr分量的残差信号。
当tu_joint_cbcr_residual表示Cr分量的残差信号是否用于推导Cb分量和Cr分量的残差信号时,Cb分量的残差信号可不存在于比特流中。在这样的情况下,可不在Cb分量的块(TB、TU)中对变换矩阵索引lfnst_idx进行熵编码/熵解码。
根据实施例,当作为关于是否存在Cb分量的变换系数的信息的tu_cb_coded_flag和作为关于是否存在Cr分量的变换系数的信息的tu_cr_coded_flag两者指示第二值(例如,1)时,可用信号发送tu_joint_cbcr_residual。可选地,当当前块被帧内预测并且作为关于是否存在Cb分量的变换系数的信息的tu_cb_coded_flag或作为关于是否存在Cr分量的变换系数的信息的tu_cr_coded_flag指示第二值(例如,1)时,可用信号发送tu_joint_cbcr_residual。
当tu_joint_cbcr_residual指示第二值(例如,1)时,根据tu_cb_coded_flag、tu_cr_coded_flag和joint_cbcr_sign_flag,可如下确定Cb分量和Cr分量的变换系数。
根据指示Cb分量和Cr分量的变换系数是否具有相同符号的joint_cbcr_sign_flag,可确定Cb分量和Cr分量的符号。例如,当joint_cbcr_sign_flag指示Cb分量和Cr分量的变换系数具有相同符号时,可确定Cb分量和Cr分量具有相同符号。相反,当joint_cbcr_sign_flag指示Cb分量和Cr分量的变换系数具有相反符号时,可确定Cb分量和Cr分量的符号彼此相反。
当tu_cb_coded_flag和tu_cr_coded_flag两者指示第二值(例如,1)时或当tu_cb_coded_flag指示第二值(例如,1)并且tu_cr_coded_flag指示第一值(例如,0)时,可用信号发送Cb分量的变换系数。此外,当tu_cr_coded_flag指示第二值(例如,1)并且tu_cb_coded_flag指示第一值(例如,0)时,可用信号发送Cr分量的变换系数。
当tu_cb_coded_flag和tu_cr_coded_flag两者指示第二值(例如,1)时,可确定Cr分量的变换系数和Cb分量的变换系数具有相同的绝对值。因此,当joint_cbcr_sign_flag指示Cr分量的变换系数和Cb分量的变换系数具有相同符号时,可确定Cr分量的变换系数与用信号发送的Cb分量的变换系数相同。相反,当joint_cbcr_sign_flag指示Cr分量的变换系数和Cb分量的变换系数不具有相同符号时,可将Cr分量的变换系数确定为用信号发送的Cb分量的变换系数的-1倍。
当tu_cb_coded_flag指示第二值(例如,1)并且tu_cr_coded_flag指示第一值(例如,0)时,可从通过将Cb分量的变换系数的绝对值除以2获得的值来确定Cr分量的变换系数的绝对值。因此,当joint_cbcr_sign_flag指示Cr分量的变换系数和Cb分量的变换系数具有相同符号时,可从通过将用信号发送的Cb分量的变换系数除以2获得的值来确定Cr分量的变换系数。相反,当joint_cbcr_sign_flag指示Cr分量的变换系数和Cb分量的变换系数不具有相同符号时,可从通过将用信号发送的Cb分量的变换系数除以-2获得的值来确定Cr分量的变换系数。
当tu_cr_coded_flag指示第二值(例如,1)并且tu_cb_coded_flag指示第一值(例如,0)时,可从通过将Cr分量的变换系数的绝对值除以2获得的值来确定Cb分量的变换系数的绝对值。因此,当joint_cbcr_sign_flag指示Cb分量的变换系数和Cr分量的变换系数具有相同符号时,可从通过将用信号发送的Cr分量的变换系数除以2获得的值来确定Cb分量的变换系数。相反,当joint_cbcr_sign_flag指示Cb分量的变换系数和Cr分量的变换系数不具有相同符号时,可从通过将用信号发送的Cr分量的变换系数除以-2获得的值来确定Cb分量的变换系数。
关于变换系数是否存在的信息可表示编码块标志。
例如,当使用16×48变换矩阵的具有8×8尺寸的减小的次级变换系数被执行时,可在块的左上方8×8区域内的左上方4×4区域中产生不是0的变换系数(非零系数)。
换句话说,可在块的除了左上方8×8区域内的左上方4×4区域之外的剩余区域中产生仅具有值0的变换系数(零系数)。
因此,当在块的除了左上方8×8区域内的左上方4×4区域之外的剩余区域中存在非零变换系数时,可基于减小的次级变换没有被执行而不对变换系数矩阵进行熵编码/熵解码。在这样的情况下,由于变换矩阵索引被推断为第一值(例如,0),故可不执行减小的次级变换/逆变换。
此外,无论非零变换系数是否存在,都可对变换系数矩阵进行熵编码/熵解码。
例如,在双树结构的情况下,可分别用信号发送亮度分量的变换矩阵索引和色度分量的变换矩阵索引。
作为另一示例,在非双树结构的情况下(或在帧间画面条带的情况下),可联合地用信号发送亮度分量的变换矩阵索引和色度分量的变换矩阵索引。
在次级变换中,可根据块(TB或TU)尺寸执行4×4不可分离变换或8×8不可分离变换。
例如,当当前块的水平尺寸和垂直尺寸中的较小值小于N时,可使用4×4不可分离变换。这里,N可以是正整数。例如,N可以是8。
当Min(当前块的水平尺寸,当前块的垂直尺寸)<8时,可对当前块使用4×4不可分离变换/逆变换。
另外,例如,当当前块的水平尺寸和垂直尺寸中的较小值大于N时,可使用8×8不可分离变换。这里,N可以是正整数。例如,N可以是4。
当Min(当前块的水平尺寸,当前块的垂直尺寸)>4时,可对当前块使用8×8不可分离变换/逆变换。
例如,当前块的水平尺寸和垂直尺寸两者等于或大于N,可执行8×8减小的次级变换。这里,N可以是正整数。例如,N可以是8。
否则,作为另一示例,(当当前块的水平尺寸和垂直尺寸两者既不等于也不大于N时),可执行4×4减小的次级变换。这里,N可以是正整数。例如,N可以是8。
当帧间画面条带和帧内画面条带中的至少一个是帧内块(编码块、预测块和变换块中的至少一个)时,可对亮度分量和色度分量中的至少一个执行减小的次级变换/逆变换。
此外,当以下条件全部满足时可执行减小的次级变换/逆变换。
当前块的水平尺寸或垂直尺寸等于或大于N(这里,N可以是正整数。例如,N可以是4)。
变换跳过模式标志(关于是否使用变换的信息:transform_skip_flag)是第一值(例如,0)。
在次级变换中,可根据块(TB或TU)尺寸执行4×4不可分离变换或8×8不可分离变换。
例如,当当前块的水平尺寸和垂直尺寸中的较小值小于N时,可使用4×4不可分离变换。这里,N可以是正整数。例如,N可以是8。
当Min(当前块的水平尺寸,当前块的垂直尺寸)<8时,可对当前块使用4×4不可分离变换/逆变换。
另外,例如,当当前块的水平尺寸和垂直尺寸中的较小值大于N时,可使用8×8不可分离变换。这里,N可以是正整数。例如,N可以是4。
当Min(当前块的水平尺寸,当前块的垂直尺寸)>4时,可对当前块使用8×8不可分离变换/逆变换。
不可分离变换可表示减小的次级变换。
根据减小的次级变换/逆变换是否被执行,可对块边界执行去块滤波。
例如,当对与块边界相邻的邻近块中的至少一个执行减小的次级变换/逆变换时,可将块边界设置为将被去块滤波的目标块边界。另外,可对该块边界执行去块滤波。
作为另一示例,当与块边界相邻的邻近块均未经历次级变换/逆变换时,可不将块边界设置为将被去块滤波的目标块边界。另外,可不对该块边界执行去块滤波。
以下将描述用于在编码器/解码器中实现减小的次级变换/逆变换所需的语法元素信息、语法元素信息的含义以及编码/解码处理的实施例。
减小的次级变换/逆变换所需的语法元素信息可包括sps_lfnst_enabled_flag、变换矩阵索引lfnst_idx和变换矩阵集信息中的至少一个,其中,sps_lfnst_enabled_flag是关于是否在序列单元中执行减小的次级变换/逆变换的信息。
表50至表63示出了减小的次级变换/逆变换所需的语法元素信息的示例以及根据帧内预测模式(predModeIntra)推导变换矩阵集索引的示例。可在参数集、头、分块、编码树单元(CTU)、编码单元(CU)、预测单元(PU)、变换单元(TU)、编码块(CB)、预测块(PB)和变换块(TB)中的至少一个中对减小的次级变换/逆变换所需的语法元素中的至少一个进行熵编码/熵解码。
这里,参数集可以是视频参数集、解码参数集、序列参数集、自适应参数集和画面参数集中的至少一个。头可以是画面头、子画面头、条带头、并行块组头和并行块头中的至少一个。
这里,当在包括参数集、头、分块、CTU、CU、PU、TU、CB、PB和TB的用信号发送的单元中的至少一个中使用用于减小的次级变换/逆变换的语法元素时,可执行减小的次级变换/逆变换。
例如,当在序列参数集中对用于减小的次级变换/逆变换的语法元素进行熵编码/熵解码时,可通过使用序列单元中的具有相同语法元素值的用于减小的次级变换/逆变换的语法元素来执行减小的次级变换/逆变换。
作为另一示例,当在条带头中对用于减小的次级变换/逆变换的语法元素进行熵编码/熵解码时,可通过使用条带单元中的具有相同语法元素值的用于减小的次级变换/逆变换的语法元素来执行减小的次级变换/逆变换。
作为另一示例,当在自适应参数集中对用于减小的次级变换/逆变换的语法元素进行熵编码/熵解码时,可通过使用参考相同自适应参数集的单元中的具有相同语法元素值的用于减小的次级变换/逆变换的语法元素来执行减小的次级变换/逆变换。
如表50中所示,sps_lfnst_enabled_flag可表示关于减小的次级变换/逆变换在序列单元中是否被执行的信息。
例如,当sps_lfnst_enabled_flag是第一值(例如,0)时,其可指示减小的次级变换/逆变换在序列单元中未被执行。当sps_lfnst_enabled_flag是第二值(例如,1)时,其可指示减小的次级变换/逆变换在序列单元中被执行。
作为另一示例,sps_lfnst_enabled_flag可表示变换矩阵索引lfnst_idx是否存在于CU、PU、TU、CB、PB和TB中的至少一个中。
例如,当sps_lfnst_enabled_flag是第一值(例如,0)时,其可指示变换矩阵索引不存在于CU、PU、TU、CB、PB和TB中的至少一个中。当sps_lfnst_enabled_flag是第二值(例如,1)时,其可指示变换矩阵索引存在于CU、PU、TU、CB、PB和TB中的至少一个中。
当sps_lfnst_enabled_flag不存在于比特流中时,可将sps_lfnst_enabled_flag推断为第一值(例如,0)。
[表50]
seq parameter set rbsp(){ 描述符
sps lfnst enabled flag u(1)
如表51至表55所示,lfnst_idx[x0][y0]可以是指示变换矩阵集中的哪一个变换矩阵索引将被用于减小的次级变换/逆变换的变换矩阵索引。
这里,当lfnst_idx[x0][y0]是第一值(例如,0)时,可不在当前块中执行减小的次级变换/逆变换。此外,当lfnst_idx[x0][y0]是第二值(例如,1)时,当前块中的变换矩阵集的变换矩阵中的由lfnst_idx[x0][y0]指示的第一矩阵可用于减小的次级变换/逆变换。此外,当lfnst_idx[x0][y0]是第三值(例如,2)时,当前块中的变换矩阵集的变换矩阵中的由lfnst_idx[x0][y0]指示的第二矩阵可用于减小的次级变换/逆变换。
lfnst_idx[x0][y0]可具有从0至N的值。这里,N可以是正整数。例如,N可以是2。
可在以下情况下对lfnst_idx[x0][y0]进行熵编码/熵解码。
如表51和表52的示例中,当numZeroOutSigCoeff是第一值(例如,0)并且满足(numSigCoeff>((treeType==SINGLE_TREE)?M:N))时,可对lfnst_idx[x0][y0]进行熵编码/熵解码。
可选地,如表53的示例中,无论numZeroOutSigCoeff的值如何,当满足(numSigCoeff>((treeType==SINGLE_TREE)?M:N))时,即可对lfnst_idx[x0][y0]进行熵编码/熵解码。
可选地,如表54的示例中,无论是否满足(numSigCoeff>((treeType==SINGLE_TREE)?M:N)),当numZeroOutSigCoeff是第一值(例如,0)时,即可对lfnst_idx[x0][y0]进行熵编码/熵解码。
可选地,如表55的示例中,无论numZeroOutSigCoeff的值如何以及无论是否满足(numSigCoeff>((treeType==SINGLE_TREE)?M:N)),可对lfnst_idx[x0][y0]进行熵编码/熵解码。
这里,M和N可以是正整数。例如,M可以是2并且N可以是1。
当lfnst_idx[x0][y0]不存在于比特流中时,可将lfnst_idx[x0][y0]推断为值0。
[表51]
Figure BDA0003384621360001821
[表52]
Figure BDA0003384621360001822
[表53]
Figure BDA0003384621360001831
[表54]
Figure BDA0003384621360001832
[表55]
Figure BDA0003384621360001833
对于I条带,qtbtt_dual_tree_intra_flag可表示每个CTU被分区为64×64个编码单元并且64×64编码单元用作亮度分量和色度分量的根节点。
例如,当qtbtt_dual_tree_intra_flag是第一值(例如,0)时,可将每个CTU分区为64×64个编码单元并且64×64编码单元可不用作亮度分量和色度分量的根节点。另一方面,当qtbtt_dual_tree_intra_flag是第二值(例如,1)时,可将每个CTU分区为64×64个编码单元并且64×64编码单元可用作亮度分量和色度分量的根节点。
当qtbtt_dual_tree_intra_flag是第一值(例如,0)时,单树结构可用于亮度分量的块分区和色度分量的块分区。根据单树结构,单个块分区结构用于亮度分量的块分区和色度分量的块分区。然而,根据色度分量的类型,亮度分量的块尺寸和色度分量的块尺寸可彼此不同。可将单树类型标识为SINGLE_TREE。
当条带类型是I条带并且qtbtt_dual_tree_intra_flag是第二值(例如,1)时,双树结构可用于编码树单元(例如,64×64编码单元)中的亮度分量的块分区和色度分量的块分区。根据双树结构,不同块分区结构分别用于亮度分量的块分区和色度分量的块分区。在双树结构中,可将亮度分量的树类型标识为DUAL_TREE_LUMA。另外,在双树结构中,可将色度分量的树类型标识为DUAL_TREE_CHROMA。
对于变换矩阵索引lfnst_idx[x0][y0],可根据多变换选择索引tu_mts_idx[x0][y0]和树类型中的至少一个来确定应用于上下文自适应二进制算术编码(CABAC)的上下文模型。tu_mts_idx在含义上可等同于mts_idx。
例如,可如下确定用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引。
(tu_mts_idx[x0][y0]==0&&treeType!=SINGLE_TREE)?1:0
例如,可如下确定用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引。
(tu_mts_idx[x0][y0]==0)?1:0
例如,可如下确定用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引。
(treeType!=SINGLE_TREE)?1:0
例如,可将用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引确定为0。
例如,可根据当前块和邻近块的编码参数中的至少一个来确定用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引。
作为另一示例,与多变换选择索引的示例类似,可根据水平变换类型和垂直变换类型中的至少一个来确定用于变换矩阵索引lfnst_idx[x0][y0]的熵编码/熵解码的上下文模型索引。
可如下执行缩放的变换系数的变换处理。
对于缩放的变换系数的变换,基于当前画面的左上方样点,可输入当前亮度分量变换块的左上方样点(xTbY,yTbY)、当前变换块的水平尺寸nTbW、当前变换块的垂直尺寸nTbH、当前块的颜色分量索引cIdx和具有尺寸(nTbW)×(nTbH)的缩放的变换系数阵列d[x][y]。这里,x可具有从0至nTbW-1的值,并且y可具有从0至nTbH-1的值。
根据缩放的变换系数的变换,可输出具有尺寸(nTbW)×(nTbH)的残差信号阵列r[x][y]。这里,x可具有从0至nTbW-1的值,并且y可具有从0至nTbH-1的值。
当变换矩阵索引lfnst_idx[xTbY][yTbY]不是第一值(例如,0)并且nTbW和nTbH两者均等于或大于4时,可如下执行缩放的变换系数的变换处理。
可如下推导变量predModeIntra、nLfnstOutSize、log2LfnstSize、numLfnstX、numLfnstY和nonZeroSize。
predModeIntra=(cIdx==0)?IntraPredModeY[xTbY][yTbY]:IntraPredModeC[xTbY][yTbY]
nLfnstOutSize=(nTbW>=8&&nTbH>=8)?48:16
log2LfnstSize=(nTbW>=8&&nTbH>=8)?3:2
nLfnstSize=(1<<log2LfnstSize)
numLfnstX=(nTbW>8&&nTbH==4)?2:1
numLfnstY=(nTbW==4&&nTbH>8)?2:1
nonZeroSize=((nTbW==4&&nTbH==4)||(nTbW==8&&nTbH==8))?8:16
可通过使用以下输入和输出来执行广角帧内预测模式映射处理。
输入:predModeIntra、nTbW、nTbH和cIdx
输出:predModeIntra
对于能够具有从0至numLfnstX–1的值的xSbIdx和能够具有从0至numLfnstY–1的值的ySbIdx,可如下执行处理。
可如下推导u[x]的值。这里,x可具有从0至nonZeroSize-1的值。
xC=(xSbIdx<<log2LfnstSize)+DiagScanOrder[log2LfnstSize][log2LfnstSize][x][0]
yC=(ySbIdx<<log2LfnstSize)+DiagScanOrder[log2LfnstSize][log2LfnstSize][x][1]
u[x]=d[xC][yC]
可通过使用以下输入和输出来执行一维低频不可分离变换处理。
输入:缩放的变换系数的输入样点长度nonZeroSize、设置为nLfnstOutSize的变换输出样点长度nTrS、不为值0的缩放的变换系数阵列u[x]、帧内预测模式predModeIntra和变换矩阵索引lfnst_idx[xTbY][yTbY]。
这里,x可具有从0至nonZeroSize-1的值。
输出:v[x]
这里,x可具有从0至nLfnstOutSize-1的值。
可如下推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]。这里,x和y可具有从0至nLfnstSize-1的值。
当predModeIntra等于或小于34或者当predModeIntra与INTRA_LT_CCLM、INTRA_T_CCLM和NTRA_L_CCLM中的至少一个相同时,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(y<4)?v[x+(y<<log2LfnstSize)]:((x<4)v[32+x+((y-4)<<2)]:d[x][y])
否则,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(x<4)?v[y+(x<<log2LfnstSize)]:((y<4)v[32+y+((x-4)<<2)]:d[x][y])
这里,当推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]时,可基于除了帧内预测模式predModeIntra之外的编码参数中的至少一个执行推导。
作为另一示例,可如下推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]。这里,x和y可具有从0至nLfnstSize-1的值。
当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(y<4)?v[x+(y<<log2LfnstSize)]:((x<4)?v[32+x+((y-4)<<2)]:d[x][y])
否则,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(x<4)?v[y+(x<<log2LfnstSize)]:((y<4)?v[32+y+((x-4)<<2)]:d[x][y])
作为另一示例,可如下推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]。这里,x和y可具有从0至nLfnstSize-1的值。
当初级变换的类型是第一变换(基于DCT-2的整数变换或trTypeHor是第一值(例如,0)或trTypeVer是第一值(例如,0))时、当初级变换的类型是第二变换(trTypeHor是第二值(例如,1)并且trTypeVer是第二值(例如,1))时、或当初级变换的类型是第二变换(trTypeHor是第三值(例如,2)并且trTypeVer是第三值(例如,2))时,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(y<4)?v[x+(y<<log2LfnstSize)]:((x<4)?v[32+x+((y-4)<<2)]:d[x][y])
否则,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(x<4)?v[y+(x<<log2LfnstSize)]:((y<4)?v[32+y+((x-4)<<2)]:d[x][y])
作为另一示例,可如下推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]。这里,x和y可具有从0至nLfnstSize-1的值。
当多变换选择索引mts_idx是第一值(例如,0)时,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(y<4)?v[x+(y<<log2LfnstSize)]:((x<4)?v[32+x+((y-4)<<2)]:d[x][y])
否则,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(x<4)?v[y+(x<<log2LfnstSize)]:((y<4)?v[32+y+((x-4)<<2)]:d[x][y])
作为另一示例,可如下推导阵列d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]。这里,x和y可具有从0至nLfnstSize-1的值。
当多变换选择索引mts_idx是第一值(例如,0)时、当多变换选择索引mts_idx是第二值(例如,1)时、或当多变换选择索引mts_idx是第五值(例如,4)时,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(y<4)?v[x+(y<<log2LfnstSize)]:((x<4)?v[32+x+((y-4)<<2)]:d[x][y])
否则,可如下执行推导。
d[(xSbIdx<<log2LfnstSize)+x][(ySbIdx<<log2LfnstSize)+y]=(x<4)?v[y+(x<<log2LfnstSize)]:((y<4)?v[32+y+((x-4)<<2)]:d[x][y])
以下,将描述广角帧内预测模式映射处理。
对于广角帧内预测模式映射处理,输入帧内预测模式predModeIntra、变换块的水平尺寸nTbW、变换块的垂直尺寸nTbH和当前块的颜色分量索引cIdx。
根据广角帧内预测模式映射处理,输出修改的帧内预测模式predModeIntra。
在广角帧内预测模式映射处理中,可如下推导变量nW和nH。
当IntraSubPartitionsSplitType与ISP_NO_SPLIT相同并且cIdx不是第一值(例如,0)时,可如下执行推导。
nW=nTbW
nH=nTbH
否则,可如下执行推导。
nW=nCbW
nH=nCbH
变量whRatio可被设置为Abs(Log2(nW/nH))。对于矩形块(其中,nW与nH不相同),可如下修改predModeIntra。当以下条件全为真时,可将predModeIntra设置为(predModeIntra+65)。
-nW大于nH
-predModeIntra等于或大于2
-predModeIntra小于(whRatio>1)?(8+2*whRatio):8
当以下条件全为真时,可将predModeIntra设置为(predModeIntra-67)。
-nH大于nW
-predModeIntra等于或小于64
-predModeIntra大于(whRatio>1)?(60-2*whRatio):60
以下,将描述低频不可分离变换处理。
在低频不可分离变换处理中,可输入变换输入样点长度nonZeroSize、变换输出样点长度nTrS、不是值0的缩放的变换系数阵列x[j]、帧内预测模式predModeIntra和变换矩阵索引lfnst_idx。这里,j可具有从0至nonZeroSize-1的值。
根据低频不可分离变换处理,可输出变换的样点阵列y[i]。这里,i可具有从0至nTrS-1的值。
在低频不可分离变换处理中,可推导低频不可分离变换矩阵。在推导低频不可分离变换矩阵的处理中,可输入变换输出样点长度nTrS、帧内预测模式predModeIntra和变换矩阵索引lfnst_idx。
根据推导低频不可分离变换矩阵的处理,可输出具有(nTrS)×(nonZeroSize)尺寸的变换矩阵lowFreqTransMatrix。
可如下推导变换的样点阵列y[i]。这里,i可具有从0至nTrS-1的值。
Figure BDA0003384621360001891
这里,CoeffMin和CoeffMax可分别表示变换系数的最小值和最大值,并可被如下推导。
CoeffMin=-(1<<N)
CoeffMax=(1<<N)-1
这里,N可以是正整数。例如,N可以是15。当N是15时,其可表示变换系数的值被剪裁以被包括在16比特动态范围中。
以下,将描述推导低频不可分离变换矩阵的处理。
在推导低频不可分离变换矩阵的处理中,可输入变换输出样点长度nTrS、帧内预测模式predModeIntra和变换矩阵索引lfnst_idx。此外,根据推导低频不可分离变换矩阵的处理,可输出变换矩阵lowFreqTransMatrix。
如表56的示例中,在推导低频不可分离变换矩阵的处理中,可根据帧内预测模式predModeIntra推导变换矩阵集索引lfnstTrSetIdx。这里,取代于表56,通过使用表57至表63,可根据帧内预测模式predModeIntra推导变换矩阵集索引lfnstTrSetIdx。
当predModeIntra与INTRA_LT_CCLM、INTRA_T_CCLM和INTRA_L_CCLM中的至少一个相同时,可将lfnstTrSetIdx确定为M。这里,M可以是正整数。例如,M可以是0。
如表60至表63的示例中,在广角帧内预测模式映射处理被执行之前或在广角帧内预测模式映射处理没有被执行时,predModeIntra可以是帧内预测模式。这里,帧内预测模式可具有范围从0至M的值。这里,M可以是帧内预测模式的最大值(正整数)。M可以是66。
例如,当使用表57至表59以及表61至表63的示例时,由于将被存储在编码器/解码器中的变换矩阵的数量可从4减小到3,故可减小用于在编码器/解码器中存储变换矩阵所需的存储器大小。
[表56]
predModeIntra IfnstTrSetIdx
predModeIntra<0 1
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 3
45<=predModeIntra<=55 2
56<=predModeIntra<=80 1
81<=predModeIntra<=83 0
[表57]
predModeIntra lfnstTrSetIdx
predModeIntra<0 1
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 2
45<=predModeIntra<=55 2
56<=predModeIntra<=80 1
81<=predModeIntra<=83 0
[表58]
predModeIntra lfnstTrSetIdx
predModeIntra<0 1
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 1
45<=predModeIntra<=55 2
56<=predModeIntra<=80 1
81<=predModeIntra<=83 0
[表59]
predModeIntra lfnstTrSetIdx
predModeIntra<0 1
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 0
45<=predModeIntra<=55 2
56<=predModeIntra<=80 1
81<=predModeIntra<=83 0
[表60]
predModeIntra lfnstTrSetIdx
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 3
45<=predModeIntra<=55 2
56<=predModeIntra<=66 1
[表61]
predModeIntra lfnstTrSetIdx
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 2
45<=predModeIntra<=55 2
56<=predModeIntra<=66 1
[表62]
predModeIntra lfnstTrSetIdx
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 1
45<=predModeIntra<=55 2
56<=predModeIntra<=66 1
[表63]
predModeIntra IfnstTrSetIdx
0<=predModeIntra<=1 0
2<=predModeIntra<=12 1
13<=predModeIntra<=23 2
24<=predModeIntra<=44 0
45<=predModeIntra<=55 2
56<=predModeIntra<=66 1
如表57至表68的示例中,可基于nTrS、lfnstTrSetIdx和lfnst_idx来推导变换矩阵lowFreqTransMatrix。
通常,当存在残差信号时,残差信号可在编码处理中被变换编码并随后通过包括在比特流中被发送。残差信号可通过在解码处理中被逆变换编码而被推导出。
指示是否存在包括在比特流中并被发送到解码器的残差信号相关信息的标识信息(例如,量化的变换系数等)可以是以下信息中的至少一个。
cu_cbf:当亮度分量和色度分量具有相同块分区结构时,可表示关于是否存在亮度分量块的量化的变换系数和色度分量块的残差信号的量化的变换系数的信息。当亮度分量和色度分量具有独立的块分区结构时,cu_cbf可表示关于是否存在亮度分量块或色度分量块的残差信号的量化的变换系数的信息。当关于是否存在残差信号的量化的变换系数的信息具有第一值(1)时,其可表示存在相应块的残差信号的量化的变换系数。当该信息具有第二值(0)时,其可表示不存在相应块的残差信号的量化的变换系数。当亮度分量和色度分量具有相同块分区结构并且残差信号的量化的变换系数存在于亮度分量块和色度分量(Cb和Cr)块中的至少一个中时,cu_cbf可具有第一值。另一方面,当对于所有分量不存在残差信号的量化的变换系数时,cu_cbf可具有第二值。
tu_cbf_luma:可表示是否存在亮度分量块的残差信号的量化的变换系数。当关于是否存在亮度分量块的残差信号的量化的变换系数的信息具有第一值(1)时,其可表示存在相应亮度块的残差信号的量化的变换系数。此外,当该信息具有第二值(0)时,其可表示不存在相应亮度块的残差信号的量化的变换系数。
tu_cbf_cr、tu_cbf_cb:可表示是否存在分别在色度分量中的Cb和Cr的残差信号的量化的变换系数。当关于是否存在色度分量(Cb或Cr)块的残差信号的量化的变换系数的信息具有第一值(1)时,其可表示存在相应色度分量(Cb或Cr)块的残差信号的量化的变换系数。此外,当该信息具有第二值(0)时,其可表示不存在相应色度分量(Cb或Cr)块的残差信号的量化的变换系数。
通常,仅当cu_cbf具有第一值(1)时,可另外发送tu_cbf_luma、tu_cbf_cr和tu_cbf_cb中的至少一个,从而指示是否存在亮度分量、作为色度分量的Cr或作为色度分量的Cb的残差信号的量化的变换系数。
当亮度分量和色度分量具有独立的块分区结构时,cu_cbf可具有与tu_cbf_luma相同的信息。
变换编码可包括初级变换/逆变换和次级变换/逆变换中的至少一个。
在初级变换中,对于变换目标块,可按照水平方向和垂直方向应用DCT-2。可选地,对于变换目标块,可分别按照水平方向和按照垂直方向应用DST-7和DCT-8。此外,可以以索引形式用信号发送应用于变换目标块的初级变换类型。当初级变换类型是DCT-2时,初级变换类型索引可具有值0。此外,当根据DST-7和DCT-8的组合执行变换时,初级变换类型索引可具有大于0的任意整数值。例如,当初级变换类型索引是1时,可按照水平方向和垂直方向两者应用DST-7。当初级变换类型索引是2时,可按照水平方向应用DST-7并按照垂直方向应用DCT-8。当初级变换类型索引是3时,可分别按照水平方向和按照垂直方向应用DCT-8和DST-7。当初级变换类型索引是4时,可按照水平方向和垂直方向两者应用DCT-8。
次级变换可应用于初级变换的信号的一部分。可以以索引形式用信号发送次级变换类型。当次级变换类型未被应用时,次级变换类型索引可具有值0。此外,当次级变换类型被应用时,次级变换类型索引可具有大于0的整数值。
可通过在解码器中使用用信号发送的次级变换类型的索引来推导将被应用于次级逆变换的核。可通过应用由此推导出的核来执行次级逆变换。
可通过在解码器中使用用信号发送的初级变换类型的索引来推导将被应用于初级逆变换的核。可通过使用由此推导出的核对次级逆变换的信号执行初级逆变换。
当应用次级变换时,可总是将DCT-2应用于初级变换类型。当DCT-2被应用于初级变换时,能量趋向于集中在初级变换块的左上方位置。此外,当能量集中在初级变换块的左上方位置时,有极大的可能应用次级变换。因此,当DCT-2被应用于初级变换时,可在编码效率方面进行提高。
此外,当次级变换/逆变换未被应用时,可通过对初级变换类型的索引进行熵编码/熵解码来应用初级变换/逆变换。
可限制初级变换和次级变换的可应用的水平或垂直尺寸。
当CU的尺寸大于能够进行初级变换的最大尺寸时,对CU隐式地进行分区直到其尺寸变为等于或小于能够进行初级变换的最大尺寸为止。可将由此分区出的块定义为变换单元(TU)。因此,一个CU可由一个或更多个TU构成。基于TU,可根据预定的变换类型来对通过预测编码产生的残差信号进行变换/逆变换。
根据实施例,可按照CU用信号发送初级变换类型索引和次级变换类型索引。
换句话说,可将相同初级变换类型和相同次级变换类型应用于包括在CU中的所有TU。
在这种情况下,例如,当通过应用ISP方法产生帧内预测信号时,可将相同初级变换类型和相同次级变换类型中的至少一个应用于分区出的ISP块。
相比于将不同初级变换类型和不同次级变换类型应用于包括在CU中的每个TU,由于该方法用信号发送更少量的数据,故可提高编码效率。
当用信号发送初级变换类型索引和次级变换类型索引时,可首先用信号发送次级变换类型索引,并随后用信号发送初级变换类型索引。
当次级变换类型索引不是0时(也就是说,当次级变换被应用时),由于总是应用DCT-2作为初级变换类型,故可不用信号发送初级变换类型索引而将其设置为0,该值是指示DCT-2的初级变换类型索引值。换句话说,次级变换类型索引不是第一值(例如,0)时(也就是说,当次级变换被应用时),可不用信号发送初级变换类型索引。
当次级变换类型索引是0时(也就是说,当次级变换未被应用时),可用信号发送初级变换类型索引。
同时,可通过不对CU或包括在CU中的TU的亮度分量执行初级变换的变换跳过方法来对残差信号进行编码/解码。在这种情况下,也可不用信号发送初级变换类型索引。然而,由于按照TU执行变换跳过,故可按照TU用信号发送指示变换跳过的信息(transform_skip_flag)。此外,当存在亮度信号块的残差信号的量化的变换系数时(也就是说,当tu_cbf_luma具有值1时),可用信号发送初级变换类型索引。因此,当将按照CU用信号发送的次级变换类型索引是0并且满足以下条件中的至少一个条件时,可用信号发送将按照CU用信号发送的初级变换类型索引。
-针对包括在CU中的每个TU的亮度分量,不通过变换跳过方法对残差信号进行编码(也就是说,针对每个TU的亮度分量,transform_skip_flag是0)
-针对包括在CU中的TU中的至少一个TU的亮度分量,不通过变换跳过方法对残差信号进行编码(也就是说,针对包括在CU中的TU中的至少一个TU的亮度分量,transform_skip_flag是0)
-针对包括在CU中的第一TU的亮度分量,不通过变换跳过方法对残差信号进行编码(也就是说,包括在CU中的第一TU亮度分量的transform_skip_flag是1)
-包括在CU中的每个TU的tu_cbf_luma值是1
-包括在CU中的至少一个TU的tu_cbf_luma值是1
-包括在CU中的第一TU的tu_cbf_luma值是1
根据实施例,可按照TU用信号发送初级变换类型索引和次级变换类型索引。
换句话说,应用于包括在CU中的TU的初级变换类型和次级变换类型可彼此不同。
在这种情况下,例如,当通过应用ISP方法产生帧内预测信号时,可将不同初级变换类型和次级变换类型应用于每个分区出的子块。
相比于将相同初级变换类型和相同次级变换类型应用于包括在CU中的所有TU的方法,由于合适的变换类型能够应用于每个TU,故上述变换方法可提高编码准确率。
根据实施例,可顺序地用信号发送次级变换类型索引和初级变换类型索引。
当次级变换类型索引不是0时(也就是说,当应用次级变换时),由于总是应用DCT-2作为初级变换类型,故可不用信号发送初级变换类型索引而是将其设置为0,该值是指示DCT-2的初级变换类型索引值。换句话说,当次级变换类型索引不是0时(也就是说,当应用次级变换时),可不用信号发送初级变换类型索引。
当次级变换类型索引是0时(也就是说,当不应用次级变换时),可用信号发送初级变换类型索引。
同时,可通过不对TU的亮度分量执行初级变换的变换跳过方法来对残差信号进行编码/解码。在这种情况下,也可不用信号发送初级变换类型索引。因此,当将按照TU用信号发送的次级变换类型索引是0并且不通过变换跳过方法对相应的TU的亮度分量进行编码时,可用信号发送将按照TU用信号发送的初级变换类型索引。
如图69至图91的示例中,lfnst_idx[x0][y0]可表示指示变换矩阵集中的变换矩阵中的哪个变换矩阵将用于减小的次级变换/逆变换的变换矩阵索引。
关于变换跳过模式标志,可在以下情况中的至少一个情况下对lfnst_idx[x0][y0]进行熵编码/熵解码。
-如在图73的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0)
(treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0||transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0))
-如在图74的示例中,树结构是双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0)
(treeType==DUAL_TREE_LUMA&&transform_skip_flag[x0][y0][0]==0)
-如在图75的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0)
((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)
-如在图76的示例中,树结构是双树色度类型(DUAL_TREE_CHROMA),色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0)
-如在图77的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),或者树结构是双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
((treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0||transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0))||(treeType==DUAL_TREE_LUMA&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
-如在图78的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),或者树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
((treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0||transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0))||((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
-如在图79的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])中的至少一个是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
(((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0||transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
作为另一示例,关于变换跳过模式标志,可在以下情况中的至少一个情况下对lfnst_idx[x0][y0]进行熵编码/熵解码。
-如在图80的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0)
(treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0&&transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0))
-如在图81的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0)
(treeType==SINGLE_TREE&&transform_skip_flag[x0][y0][0]==0)
-如在图82的示例中,树结构是双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0)
(treeType==DUAL_TREE_LUMA&&transform_skip_flag[x0][y0][0]==0)
-如在图83的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0)
((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)
-如在图84的示例中,树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0)
(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0))
-如在图85的示例中,树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0)
-如在图86的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0),或者树结构是双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
((treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0&&transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0))||(treeType==DUAL_TREE_LUMA&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
-如在图87的示例中,树结构是单树类型(SINGLE_TREE)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])、色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0),或者树结构是双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0)
((treeType==SINGLE_TREE&&(transform_skip_flag[x0][y0][0]==0&&transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0))||(treeType==DUAL_TREE_LUMA&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0))
-如在图88的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0),并且ChromaArrayType不是第一值(例如,0)
(((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
-如在图89的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0)
(((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA)&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0)))
-如在图90的示例中,树结构是单树类型(SINGLE_TREE)或双树亮度类型(DUAL_TREE_LUMA)或者ChromaArrayType是第一值(例如,0)并且亮度分量的变换跳过模式标志(transform_skip_flag[x0][y0][0])是第一值(例如,0),或者树结构是双树色度类型(DUAL_TREE_CHROMA)并且色度分量(Cb)的变换跳过模式标志(transform_skip_flag[x0][y0][1])和色度分量(Cr)的变换跳过模式标志(transform_skip_flag[x0][y0][2])全是第一值(例如,0)并且ChromaArrayType不是第一值(例如,0)
(((treeType==SINGLE_TREE||treeType==DUAL_TREE_LUMA||ChromaArrayType==0)&&transform_skip_flag[x0][y0][0]==0)||(treeType==DUAL_TREE_CHROMA&&(transform_skip_flag[x0][y0][1]==0&&transform_skip_flag[x0][y0][2]==0)&&ChromaArrayType!=0))
如在图91的示例中,关于变换跳过模式标志,可根据关于是否存在非零变换系数或非零变换系数等级的信息来对lfnst_idx[x0][y0]进行熵编码/熵解码,其中,非零变换系数或非零变换系数等级以作为颜色分量单元的变换块/单元为单位按照相应的变换块/单元被编码。
例如,当特定颜色分量(亮度分量、Cb分量和Cr分量中的至少一个)的编码块标志是第一值(例如,0)或变换跳过模式标志是第一值(例如,0)时,可对lfnst_idx[x0][y0]进行熵编码/熵解码。
根据颜色分量,编码块标志可表示tu_y_coded_flag、tu_cb_coded_flag和tu_cr_coded_flag中的至少一个。此外,当编码块标志是第一值(例如,0)时,其可表示不存在以变换块/单元为单位按照相应的变换块/单元被编码的非零变换系数或非零变换系数等级。此外,当编码块标志是第二值(例如,1)时,其可表示存在以变换块/单元为单位按照相应的变换块/单元被编码的非零变换系数或非零变换系数等级。
这里,当变换跳过模式标志是第一值(例如,0)时,其可表示执行初级变换和次级变换中的至少一个。此外,当变换跳过模式标志是第二值(例如,1)时,其可表示不执行初级变换和次级变换中的至少一个。
ChromaArrayType可表示当前序列或画面的色度格式。
当ChromaArrayType是第一值(例如,0)时,可将色度格式确定为不存在色度信号并仅存在亮度信号的4:0:0颜色格式。当色度格式是4:0:0颜色格式时,可将其确定为没有色度分量的单色。此外,当ChromaArrayType是第二值(例如,1)时,可将色度格式设置为4:2:0颜色格式。当ChromaArrayType是第三值(例如,2)时,可将色度格式设置为4:2:2颜色格式。当ChromaArrayType是第四值(例如,3)时,可将色度格式设置为4:4:4颜色格式。
ChromaArrayType可基于chroma_format_idc语法元素值而被确定并表示色度分量的形式。
根据实施例,基于次级变换执行信息,可确定是否对当前块应用次级变换/逆变换。可根据变换矩阵索引(lfnst_idx)和/或树结构来推导次级变换执行信息。可对序列、画面、子画面、并行块、条带、编码单元、预测单元和变换单元确定次级变换执行信息。根据次级变换执行信息,可对应用了次级变换/逆变换的块使用默认量化矩阵。默认量化矩阵可表示所有矩阵系数具有常数值N的矩阵。这里,N可以是正整数。例如,N可以是16。
根据实施例,当变换矩阵索引指示第一值(例如,0)时,可确定次级变换执行信息以指示不对当前块应用次级变换/逆变换。当变换矩阵索引指示除了第一值之外的值时,可确定次级变换执行信息以指示对当前块应用次级变换/逆变换。换句话说,可从变换矩阵索引推导次级变换是否被应用于当前块。
根据另一实施例,基于树结构,可确定次级变换执行信息。当树结构是单树类型时,可如下确定次级变换执行信息。
-对于亮度分量的块,当变换矩阵索引指示第一值(例如,0)时,可确定次级变换执行信息以指示不对当前块应用次级变换/逆变换。此外,当变换矩阵索引指示除了第一值之外的值时,可确定次级变换执行信息以指示对当前块应用次级变换/逆变换。
-然而,对于色度分量的块,无论变换矩阵索引的值如何,可确定次级变换执行信息以指示不对当前块应用次级变换/逆变换。
当树结构是双树类型时,无论块的颜色分量如何,可确定次级变换执行信息。例如,当变换矩阵索引指示第一值(例如,0)时,可确定次级变换执行信息以指示不对当前块应用次级变换/逆变换。当变换矩阵索引指示除了第一值之外的值时,可确定次级变换执行信息以指示对当前块应用次级变换/逆变换。
图92示出根据实施例的视频解码方法。
在步骤S9202,可获得指示变换跳过模式是否被应用于当前块的变换跳过模式标志。
根据实施例,对于当前块,可获得关于帧内残差DPCM方法是否被使用的信息。当关于帧内残差DPCM方法是否被使用的信息示出帧内残差DPCM方法用于当前块时,可确定对当前块应用变换跳过模式。当关于帧内残差DPCM方法是否被使用的信息示出帧内残差DPCM方法未用于当前块时,可获得变换跳过模式标志。
根据实施例,对于当前块,可获得亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志。
在步骤S9204,当根据变换跳过模式标志而变换跳过模式被应用于当前块时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是单树类型,亮度分量的变换跳过模式标志指示变换跳过模式被应用于亮度分量,Cb分量的变换跳过模式标志指示变换跳过模式被应用于Cb分量,并且Cr分量的变换跳过模式标志指示变换跳过模式被应用于Cr分量时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是双树亮度类型并且亮度分量的变换跳过模式标志指示变换跳过模式被应用于亮度分量时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是双树色度类型,Cb分量的变换跳过模式标志指示变换跳过模式被应用于Cb分量,并且Cr分量的变换跳过模式标志指示变换跳过模式被应用于Cr分量时,可确定不对当前块应用次级变换/逆变换。
在步骤S9206,当根据变换跳过模式标志而变换跳过模式不被应用于当前块时,可获得当前块的次级变换/逆变换的变换矩阵索引。此外,根据变换矩阵索引,可确定是否对当前块应用次级变换/逆变换。
根据实施例,当根据不是基于矩阵的帧内预测模式的帧内预测模式对当前块进行预测时,可获得当前块的次级变换/逆变换的变换矩阵索引。
根据实施例,当对当前块应用次级变换/逆变换时,可根据变换矩阵索引确定当前块的次级变换矩阵。此外,根据次级变换矩阵,可对当前块应用次级变换/逆变换。
根据实施例,可根据变换矩阵索引、当前块的尺寸和变换跳过模式标志中的至少一个来确定是否对当前块应用次级变换/逆变换。此外,可根据变换矩阵索引、当前块的变换矩阵集索引和当前块的尺寸中的至少一个来确定当前块的次级变换矩阵。
图93示出根据实施例的视频编码方法。
在步骤S9302,可对指示变换跳过模式是否被应用于当前块的变换跳过模式标志进行熵编码。
根据实施例,对于当前块,可对关于帧内残差DPCM方法是否被使用的信息进行熵编码。此外,当关于帧内残差DPCM方法是否被使用的信息示出帧内残差DPCM方法用于当前块时,可确定对当前块应用变换跳过模式。另一方面,当关于帧内残差DPCM方法是否被使用的信息示出帧内残差DPCM方法未用于当前块时,可对当前块的变换跳过模式标志进行熵编码。
根据实施例,对于当前块,可对亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志进行熵编码。
在步骤S9304,当根据变换跳过模式标志而变换跳过模式被应用于当前块时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是单树类型,亮度分量的变换跳过模式标志指示变换跳过模式被应用于亮度分量,Cb分量的变换跳过模式标志指示变换跳过模式被应用于Cb分量,并且Cr分量的变换跳过模式标志指示变换跳过模式被应用于Cr分量时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是双树亮度类型并且亮度分量的变换跳过模式标志指示变换跳过模式被应用于亮度分量时,可确定不对当前块应用次级变换/逆变换。
根据实施例,当当前块的树结构是双树色度类型,Cb分量的变换跳过模式标志指示变换跳过模式被应用于Cb分量,并且Cr分量的变换跳过模式标志指示变换跳过模式被应用于Cr分量时,可确定不对当前块应用次级变换/逆变换。
在步骤S9306,当变换跳过模式未被应用于当前块时,可确定是否对当前块应用次级变换/逆变换。此外,根据是否对当前块应用次级变换/逆变换,可对当前块的次级变换/逆变换的变换矩阵索引进行熵编码。
根据实施例,当对当前块应用次级变换/逆变换时,可确定当前块的次级变换矩阵。此外,根据是否对当前块应用次级变换/逆变换,可对变换矩阵索引进行熵编码。
根据实施例,可根据变换矩阵索引、当前块的尺寸和变换跳过模式标志中的至少一个来确定是否对当前块应用次级变换/逆变换。此外,可根据变换矩阵索引、当前块的变换矩阵集索引和当前块的尺寸中的至少一个来确定当前块的次级变换矩阵。
根据实施例,当根据不是基于矩阵的帧内预测模式的帧内预测模式对当前块进行预测时,可对变换矩阵索引进行熵编码。
图92和图93的实施例是说明性的,并且本领域技术人员可容易地修改图92和图93的每个步骤。此外,可省略图92和图93的每个配置或由其它配置来替换图92和图93的每个配置。可在图2的解码器中执行图92的视频解码方法。此外,可在图1的编码器中执行图93的视频编码方法。此外,一个或更多个处理器可执行实现图92和图93的每个步骤的命令。此外,包括实现图92和图93的每个步骤的命令的程序产品可被存储在存储器装置中或被在线分发。
在本说明书中,当获得预定信息时,可表示该信息从比特流被熵解码。
在编码器中,可在变换/逆变换处理中通过使用上述实施例中的至少一个来执行变换/逆变换。另外,在解码器中,可在逆变换处理中通过使用上述实施例中的至少一个来执行逆变换。
在上述实施例中,基于块的帧内预测模式、预测模式、颜色分量、尺寸、形式、子块分区相关信息、次级变换执行信息和基于矩阵的帧内预测执行信息中的至少一个编码参数,可在变换/逆变换处理中确定一维变换类型、二维变换组合以及是否使用变换中的至少一个。
在上述实施例中,基于块的帧内预测模式、预测模式、颜色分量、尺寸、形式、子块分区相关信息、次级变换执行信息和基于矩阵的帧内预测执行信息中的至少一个编码参数,可确定减小的次级变换/逆变换矩阵集、减小的次级变换/逆变换矩阵以及是否执行减小的次级变换/逆变换中的至少一个。
在编码器中,可在量化/反量化处理中通过使用量化矩阵和上述实施例来执行量化/反量化。另外,在解码器中,可在反量化处理中通过使用恢复的量化矩阵和上述实施例来执行反量化。恢复的量化矩阵可以是具有二维形式的量化矩阵。
在上述实施例中,可执行对量化矩阵进行表达、构建、恢复、预测和编码/解码中的至少一个,从而基于块的预测模式、颜色分量、尺寸、形式、一维变换类型、二维变换组合和是否使用变换中的至少一个来在量化/反量化处理中使用不同量化矩阵。这里,执行了表达、构建、恢复、预测和编码/解码中的至少一个的量化矩阵中的至少一个可根据预测模式、颜色分量、尺寸、形式、一维变换类型、二维变换组合和是否使用变换中的至少一个而在量化矩阵中具有至少一个不同系数。
在上述实施例中,可在编码器中在量化期间通过使用用于变换系数的量化矩阵来产生变换系数等级,并可在解码器中在反量化期间通过使用用于变换系数等级的量化矩阵来产生变换系数。在本发明中,为了方便起见,将变换系数和变换系数等级两者统称为变换系数。
在上述实施例中,由于能够从正方形M×M量化矩阵推导M×N或N×M量化矩阵,故在量化/反量化中表达为M×M尺寸的量化矩阵可不仅表示正方形M×M量化矩阵,还可表示非正方形M×N或N×M量化矩阵。这里,M和N可以是正整数,并可具有从2至64的值。此外,M和N可以是彼此不同的值。
例如,由于能够在量化/反量化中从正方形16×16量化矩阵推导非正方形16×4或4×16量化矩阵,故在量化/反量化中表达为16×16尺寸的量化矩阵可不仅表示正方形16×16量化矩阵,还可表示非正方形16×4或4×16量化矩阵。
在上述实施例中,量化矩阵信息可表示量化矩阵和量化矩阵推导中的至少一个所需的信息。这里,推导量化矩阵所需的信息可包括以下信息中的至少一个:关于是否使用量化矩阵的信息、关于是否存在量化矩阵的信息、关于对量化矩阵进行预测的方法的信息、参考矩阵标识符、DC矩阵系数或低频矩阵系数、以及量化矩阵中先前编码/解码的量化矩阵系数值与将被编码/解码的量化矩阵系数值之间的差值。
可根据块和单元中的至少一个的尺寸来应用本发明的以上实施例。这里,可将尺寸定义为最小尺寸或最大尺寸或两者以应用以上实施例,或可将尺寸定义为以上实施例应用于的固定尺寸。此外,在以上实施例中,第一实施例可应用于第一尺寸,并且第二实施例可应用于第二尺寸。换句话说,可根据尺寸组合地应用以上实施例。此外,可仅当尺寸等于或大于最小尺寸并且等于或小于最大尺寸时应用以上实施例。换句话说,可仅当块尺寸在预定范围内时应用以上实施例。
此外,可仅当尺寸等于或大于最小尺寸并且等于或小于最大尺寸时应用以上实施例。这里,最小尺寸和最大尺寸可以分别是块尺寸和单元尺寸中的一个。换句话说,最小尺寸的目标块和最大尺寸的目标块可彼此不同。此外,当当前块的尺寸等于或大于块的最小尺寸并且等于或小于块的最大尺寸时应用以上实施例。
例如,可仅当当前块的尺寸等于或大于8×8时应用以上实施例。例如,可仅当当前块的尺寸等于或大于16×16时应用以上实施例。例如,可仅当当前块的尺寸等于或大于32×32时应用以上实施例。例如,可仅当当前块的尺寸等于或大于64×64时应用以上实施例。例如,可仅当当前块的尺寸等于或大于128×128时应用以上实施例。例如,可仅当当前块的尺寸是4×4时应用以上实施例。例如,可仅当当前块的尺寸等于或小于8×8时应用以上实施例。例如,可仅当当前块的尺寸等于或小于16×16时应用以上实施例。例如,可仅当当前块的尺寸等于或大于8×8并且等于或小于16×16时应用以上实施例。例如,可仅当当前块的尺寸等于或大于16×16并且等于或小于64×64时应用以上实施例。
可在编码器和解码器中按照相同方法执行以上实施例。
以上实施例中的至少一个或组合可以用于对视频进行编码/解码。
应用于以上实施例的顺序在编码器与解码器之间可以是不同的,或者应用于上述实施例的顺序在编码器和解码器中可以是相同的。
可以对每个亮度信号和色度信号执行以上实施例,或者可以对亮度和色度信号相同地执行以上实施例。
应用本发明的以上实施例的块形式可以具有正方形形式或非正方形形式。
仅上述实施例中的任意一个不应用于当前块的编码/解码处理,但是所述实施例或特定实施例中的至少一个的组合可应用于当前块的编码/解码处理。
由编码器熵编码并由解码器熵解码的语法元素(标志、索引等)可使用以下二值化/反二值化方法和熵编码/熵解码方法中的至少一个。
-符号0阶指数哥伦布二值化/反二值化方法(se(v))
-符号k阶指数哥伦布二值化/反二值化方法(sek(v))
-无符号0阶指数哥伦布二值化/反二值化方法(ue(v))
-无符号k阶指数哥伦布二值化/反二值化方法(uek(v))
-定长二值化/反二值化方法(f(n))
-截断莱斯二值化/反二值化方法或截断一元二值化/反二值化方法(tu(v))
-截断二元二值化/反二值化方法(tb(v))
-上下文自适应算术编码/解码方法(ae(v))
-字节单元比特串(b(8))
-符号整数二值化/反二值化方法(i(n))
-无符号整数二值化/反二值化方法(u(n))
-一元二值化/反二值化方法
可以依据编码块、预测块、变换块、块、当前块、编码单元、预测单元、变换单元、单元和当前单元中的至少一个的尺寸来应用本发明的以上实施例。这里,尺寸可以被定义为最小尺寸或最大尺寸或最小尺寸和最大尺寸两者,使得应用以上实施例,或者可以被定义为应用以上实施例的固定尺寸。另外,在以上实施例中,第一实施例可以应用于第一尺寸,并且第二实施例可以应用于第二尺寸。换句话说,可以依据尺寸组合地应用以上实施例。另外,当尺寸等于或大于最小尺寸并且等于或小于最大尺寸时,可以应用以上实施例。换句话说,当块尺寸包括在特定范围内时,可以应用以上实施例。
例如,在当前块的尺寸为8×8或更大时,可以应用以上实施例。例如,在当前块的尺寸仅为4×4时,可以应用以上实施例。例如,在当前块的尺寸为16×16或更小时,可以应用以上实施例。例如,在当前块的尺寸等于或大于16×16并且等于或小于64×64时,可以应用以上实施例。
可以依据时间层来应用本发明的以上实施例。为了标识可应用以上实施例的时间层,可用信号发送相应标识符,并且可将以上实施例应用于由相应标识符标识的指定时间层。这里,标识符可以被定义为可以应用以上实施例的最低层或最高层或者最低层和最高层两者,或者可以被定义为指示应用实施例的特定层。另外,可以定义应用实施例的固定时间层。
例如,在当前图像的时间层是最低层时,可以应用以上实施例。例如,在当前图像的时间层标识符是1时,可以应用以上实施例。例如,在当前图像的时间层是最高层时,可以应用以上实施例。
可以定义应用本发明的以上实施例的条带类型或并行块组类型,并且可以依据相应的条带类型或并行块组类型来应用以上实施例。
在上述实施例中,基于具有一系列步骤或单元的流程图来对方法进行描述,但是本发明不限于所述步骤的顺序,而是某些步骤可以与其他步骤同时执行或以不同的顺序执行。另外,本领域普通技术人员应当理解,流程图中的步骤并不相互排斥,在不影响本发明的范围的情况下,可以向流程图中添加其他步骤,或者可以从流程图删除某些步骤。
实施例包括示例的各个方面。可以不对用于各个方面的所有可能的组合进行描述,但是本领域技术人员将能够认识到不同的组合。因此,本发明可以包括权利要求的范围内的所有替换、修改和改变。
可以以可由各种计算机组件执行的并且被记录在计算机可读记录介质中的程序指令的形式实现本发明的实施例。计算机可读记录介质可以包括独立的程序指令、数据文件、数据结构等或者程序指令、数据文件、数据结构等的组合。记录在计算机可读记录介质中的程序指令可以是为本发明特别设计和构建的,或者是计算机软件技术领域的普通技术人员公知的。计算机可读记录介质的示例包括:磁性记录介质(诸如硬盘、软盘和磁带);光学数据存储介质(诸如CD-ROM或DVD-ROM);磁优化介质(诸如光软盘);以及被特别地构造成存储和实现程序指令的硬件装置(诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例不仅包括被编译器格式化的机器语言代码,而且包括可以由计算机使用解释器实现的高级语言代码。硬件装置可以被配置为由一个或更多个软件模块操作以执行根据本发明的处理,或者反之亦然。
尽管已经根据诸如详细元件的特定项目以及有限的实施例和附图描述了本发明,但是它们仅被提供以帮助更综合地理解本发明,并且本发明不限于上述实施例。本发明所属领域的技术人员应当理解,可以根据上面的描述进行各种修改和改变。
因此,本发明的精神不应被限于上述实施例,并且所附权利要求及其等同物的整个范围将落入本发明的范围和精神内。

Claims (20)

1.一种视频解码方法,所述方法包括:
获得指示变换跳过模式是否被应用于当前块的变换跳过模式标志;
当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及
当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,获得所述当前块的次级变换/逆变换的变换矩阵索引,并基于所述变换矩阵索引确定是否对所述当前块应用次级变换/逆变换。
2.如权利要求1所述的视频解码方法,还包括:
当对所述当前块应用次级变换/逆变换时,根据所述变换矩阵索引确定所述当前块的次级变换矩阵;以及
根据所述次级变换矩阵,对所述当前块应用次级变换/逆变换。
3.如权利要求2所述的视频解码方法,
其中,确定所述当前块的所述次级变换矩阵的步骤包括:根据所述变换矩阵索引、所述当前块的变换矩阵集索引和所述当前块的尺寸中的至少一个来确定所述当前块的所述次级变换矩阵。
4.如权利要求1所述的视频解码方法,包括:
获得关于帧内残差DPCM方法是否被用于所述当前块的信息;以及
当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法被用于所述当前块时,确定对所述当前块应用变换跳过模式,
其中,获得所述变换跳过模式标志的步骤包括:当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法未被用于所述当前块时,获得所述变换跳过模式标志。
5.如权利要求1所述的视频解码方法,
其中,当根据不是基于矩阵的帧内预测模式的帧内预测模式对所述当前块进行预测时,获得所述当前块的次级变换/逆变换的所述变换矩阵索引。
6.如权利要求1所述的视频解码方法,
其中,获得所述变换跳过模式标志的步骤包括:获得亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志。
7.如权利要求6所述的视频解码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是单树类型,所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
8.如权利要求6所述的视频解码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是双树亮度类型并且所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量时,确定不对所述当前块应用次级变换/逆变换。
9.如权利要求6所述的视频解码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是双树色度类型,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
10.如权利要求1所述的视频解码方法,
其中,基于所述变换矩阵索引确定是否对所述当前块应用次级变换/逆变换的步骤包括:根据所述变换矩阵索引、所述当前块的尺寸和所述变换跳过模式标志中的至少一个来确定是否对所述当前块应用次级变换/逆变换。
11.一种视频编码方法,所述方法包括:
对指示变换跳过模式是否被应用于当前块的变换跳过模式标志进行熵编码;
当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及
当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,确定是否对所述当前块应用次级变换/逆变换,并根据是否对所述当前块应用次级变换/逆变换对所述当前块的次级变换/逆变换的变换矩阵索引进行熵编码。
12.如权利要求11所述的视频编码方法,
其中,对所述变换矩阵索引进行熵编码的步骤包括:
当对所述当前块应用次级变换/逆变换时,确定所述当前块的次级变换矩阵;以及
根据是否对所述当前块应用次级变换/逆变换,对所述变换矩阵索引进行熵编码。
13.如权利要求12所述的视频编码方法,
其中,确定所述当前块的所述次级变换矩阵的步骤包括:根据所述变换矩阵索引、所述当前块的变换矩阵集索引和所述当前块的尺寸中的至少一个来确定所述当前块的所述次级变换矩阵。
14.如权利要求11所述的视频编码方法,包括:
对关于帧内残差DPCM方法是否被用于所述当前块的信息进行熵编码;以及
当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法被用于所述当前块时,确定对所述当前块应用变换跳过模式,
其中,对所述变换跳过模式标志进行熵编码的步骤包括:当所述关于所述帧内残差DPCM方法是否被使用的信息指示所述帧内残差DPCM方法未被用于所述当前块时,对所述变换跳过模式标志进行熵编码。
15.如权利要求11所述的视频编码方法,
其中,对所述当前块的次级变换/逆变换的所述变换矩阵索引进行熵编码的步骤包括:当根据不是基于矩阵的帧内预测模式的帧内预测模式对所述当前块进行预测时,对所述变换矩阵索引进行熵编码。
16.如权利要求11所述的视频编码方法,
其中,对所述变换跳过模式标志进行熵编码的步骤包括:对亮度分量的变换跳过模式标志、Cb分量的变换跳过模式标志和Cr分量的变换跳过模式标志进行熵编码。
17.如权利要求16所述的视频编码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是单树类型,所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
18.如权利要求16所述的视频编码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是双树亮度类型并且所述亮度分量的所述变换跳过模式标志指示变换跳过模式被应用于所述亮度分量时,确定不对所述当前块应用次级变换/逆变换。
19.如权利要求16所述的视频编码方法,
其中,确定不对所述当前块应用次级变换/逆变换的步骤包括:当所述当前块的树结构是双树色度类型,所述Cb分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cb分量,并且所述Cr分量的所述变换跳过模式标志指示变换跳过模式被应用于所述Cr分量时,确定不对所述当前块应用次级变换/逆变换。
20.一种用于存储比特流的计算机可读记录介质,所述比特流通过视频编码方法对视频进行编码而被产生,
其中,所述视频编码方法包括:
对指示变换跳过模式是否被应用于当前块的变换跳过模式标志进行熵编码;
当根据所述变换跳过模式标志而变换跳过模式被应用于所述当前块时,确定不对所述当前块应用次级变换/逆变换;以及
当根据所述变换跳过模式标志而变换跳过模式不被应用于所述当前块时,确定是否对所述当前块应用次级变换/逆变换,并根据是否对所述当前块应用次级变换/逆变换对所述当前块的次级变换/逆变换的变换矩阵索引进行熵编码。
CN202080040520.9A 2019-06-18 2020-06-18 使用次级变换的图像编码/解码方法和装置以及存储比特流的记录介质 Pending CN113950830A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
KR20190072175 2019-06-18
KR10-2019-0072175 2019-06-18
KR10-2020-0006637 2020-01-17
KR20200006637 2020-01-17
PCT/KR2020/007934 WO2020256447A1 (ko) 2019-06-18 2020-06-18 2차 변환을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Publications (1)

Publication Number Publication Date
CN113950830A true CN113950830A (zh) 2022-01-18

Family

ID=74040283

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080040520.9A Pending CN113950830A (zh) 2019-06-18 2020-06-18 使用次级变换的图像编码/解码方法和装置以及存储比特流的记录介质

Country Status (5)

Country Link
US (2) US12022119B2 (zh)
EP (1) EP3989579A4 (zh)
KR (1) KR20200144511A (zh)
CN (1) CN113950830A (zh)
WO (1) WO2020256447A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112020002317A8 (pt) * 2017-08-04 2023-01-24 Lg Electronics Inc Método e aparelho para configurar uma transformada para compressão de vídeo
JP7494858B2 (ja) * 2019-11-22 2024-06-04 ソニーグループ株式会社 画像処理装置および方法
US20220150518A1 (en) * 2020-11-11 2022-05-12 Tencent America LLC Method and apparatus for video coding
US20240205456A1 (en) * 2021-04-12 2024-06-20 Lg Electronics Inc. Image coding method and apparatus therefor
WO2024080795A1 (ko) * 2022-10-12 2024-04-18 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024080798A1 (ko) * 2022-10-12 2024-04-18 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024080799A1 (ko) * 2022-10-12 2024-04-18 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024080797A1 (ko) * 2022-10-12 2024-04-18 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711211B1 (en) 2000-05-08 2004-03-23 Nokia Mobile Phones Ltd. Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder
US10681379B2 (en) * 2015-09-29 2020-06-09 Qualcomm Incorporated Non-separable secondary transform for video coding with reorganizing
CN109417636B (zh) 2016-06-24 2022-04-01 韩国电子通信研究院 用于基于变换的图像编码/解码的方法和设备

Also Published As

Publication number Publication date
WO2020256447A1 (ko) 2020-12-24
US20240205457A1 (en) 2024-06-20
EP3989579A1 (en) 2022-04-27
EP3989579A4 (en) 2023-06-21
US12022119B2 (en) 2024-06-25
KR20200144511A (ko) 2020-12-29
US20220264151A1 (en) 2022-08-18

Similar Documents

Publication Publication Date Title
CN109417636B (zh) 用于基于变换的图像编码/解码的方法和设备
CN110024399B (zh) 对图像编码/解码的方法和设备及存储比特流的记录介质
CN109479138B (zh) 图像编码/解码方法和装置
CN110999293B (zh) 图像编码/解码方法和装置以及存储比特流的记录介质
CN112088533B (zh) 图像编码/解码方法和装置以及存储比特流的记录介质
CN110063056B (zh) 用于处理视频信号的方法和设备
CN113950830A (zh) 使用次级变换的图像编码/解码方法和装置以及存储比特流的记录介质
CN111373755A (zh) 图像编码/解码方法和装置以及存储比特流的记录介质
CN118214856A (zh) 用于基于非对称子块的图像编码/解码的方法及装置
US20220248017A1 (en) Image encoding/decoding method and apparatus, and recording medium storing bitstream
CN113273188B (zh) 图像编码/解码方法和装置以及存储有比特流的记录介质
CN112740684A (zh) 用于对图像进行编码/解码的方法和装置以及用于存储比特流的记录介质
CN112106373A (zh) 用于图像编/解码的方法和装置及存储比特流的记录介质
CN112673629A (zh) 视频编码/解码方法和装置以及用于存储比特流的记录介质
CN112740671A (zh) 图像编码/解码方法和装置以及存储比特流的记录介质
CN115442596A (zh) 图像编码、解码方法以及存储比特流的记录介质
CN113906740A (zh) 帧间预测信息编码/解码方法和装置
CN114600455A (zh) 图像编码/解码方法和设备以及存储比特流的记录介质
CN112335250A (zh) 用于对图像进行编码/解码的方法和设备以及用于存储比特流的记录介质
CN118158435A (zh) 对图像进行解码的方法、对图像进行编码的方法以及用于发送通过对图像进行编码的方法生成的比特流的方法
CN114503566A (zh) 图像编码/解码方法和设备以及存储比特流的记录介质
CN113545089B (zh) 图像编码/解码方法和设备以及存储比特流的记录介质
CN113841404B (zh) 视频编码/解码方法和设备以及存储比特流的记录介质
CN113841404A (zh) 视频编码/解码方法和设备以及存储比特流的记录介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination