CN114303380A - Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partitioning flags - Google Patents

Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partitioning flags Download PDF

Info

Publication number
CN114303380A
CN114303380A CN202080060441.4A CN202080060441A CN114303380A CN 114303380 A CN114303380 A CN 114303380A CN 202080060441 A CN202080060441 A CN 202080060441A CN 114303380 A CN114303380 A CN 114303380A
Authority
CN
China
Prior art keywords
block
mode
current block
geometric
context model
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.)
Granted
Application number
CN202080060441.4A
Other languages
Chinese (zh)
Other versions
CN114303380B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN114303380A publication Critical patent/CN114303380A/en
Application granted granted Critical
Publication of CN114303380B publication Critical patent/CN114303380B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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

Abstract

The invention discloses a decoding method realized by decoding equipment, which comprises the following steps: acquiring a code stream; acquiring the aspect ratio of the current block; obtaining a context model index of the current block according to the aspect ratio; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; decoding the current block according to the value of the geometric partition flag.

Description

Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partitioning flags
Technical Field
Embodiments of the present disclosure relate generally to the field of image processing, and more particularly, to CABAC coding processes.
Background
Video coding (video encoding and decoding) is widely used in digital video applications such as broadcast digital television, internet and mobile network based video transmission, real-time session applications such as video chat, video conferencing, DVD and blu-ray discs, video content acquisition and editing systems, and camcorders for security applications.
Even if the video is relatively short, a large amount of video data is required to describe, which may cause difficulties when the data is to be streamed or otherwise transmitted in a communication network with limited bandwidth capacity. Therefore, video data is typically compressed and then transmitted in modern telecommunication networks. As memory resources may be limited, the size of the video may also become an issue when storing the video on the storage device. Video compression devices typically encode video data using software and/or hardware at the source side and then transmit or store the video data, thereby reducing the amount of data required to represent digital video images. Then, the compressed data is received at the destination side by a video decompression apparatus that decodes the video data. With limited network resources and an increasing demand for higher video quality, there is a need for improved compression and decompression techniques that increase the compression ratio with little sacrifice in image quality.
Disclosure of Invention
The embodiments of the present application provide apparatuses and methods for encoding and decoding as set forth in the independent claims.
The above and other objects are achieved by the subject matter claimed in the independent claims. Other implementations are apparent from the dependent claims, the description and the drawings.
In a first aspect, a decoding method implemented by a decoding device is provided, where the decoding method includes: acquiring a code stream; acquiring the aspect ratio of the current block; obtaining a context model index of the current block according to the aspect ratio; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; decoding the current block according to the value of the geometric partition flag.
A context model may be used to decode the geometric partitioning flag from the binary code stream. Since the likelihood (probability) that geometric partitioning occurs may depend on the aspect ratio of the current block, it is advantageous to derive a context model index from the aspect ratio. The context model index is used for acquiring the geometric division mark from the code stream. The geometric partition mode flag is used to indicate whether the current block uses a geometric partition mode. When the geometric partitioning application condition is satisfied, each block includes a geometric mode flag having a value of 0 or a value of 1.
With reference to the first aspect, in a first implementation form, the aspect ratio is a ratio of a width and a height of the current block.
With reference to the first aspect or the first implementation manner of the first aspect, in a second implementation manner, the aspect ratio is obtained according to the following equation: ratio is 1< < abs (log2(width) -log 2(height)), where height and width in the equation are the height and width of the current block, abs () is an absolute value operator, log2() is a base-2 logarithm, and < < is a left shift operation.
With reference to the first aspect or any implementation manner of the first aspect, in a third implementation manner, the obtaining a context model index of the current block according to the aspect ratio includes: if the aspect ratio is greater than a predefined threshold, a context model index 3 of the current block is obtained. This provides a specific context model index when the aspect ratio of the current block is large.
With reference to the first aspect or any implementation manner of the first aspect, in a fourth implementation manner, the obtaining a context model index of the current block according to the aspect ratio includes: and if the aspect ratio is equal to or less than a predefined threshold, acquiring the context model index of the current block according to at least one piece of information of a triangular partition mode and a geometric partition mode of a neighboring block adjacent to the current block, wherein the neighboring block comprises a left neighboring block and an upper neighboring block.
With reference to the first aspect or the third or fourth implementation manner of the first aspect, in a fifth implementation manner, the predefined threshold is 2nAnd n is a positive integer.
With reference to the first aspect or the third to fifth implementation manners of the first aspect, in a sixth implementation manner, the predefined threshold is 4.
In a second aspect, a decoding method implemented by a decoding device is provided, wherein the decoding method includes: acquiring a code stream; acquiring a context model index of a current block according to at least one piece of information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; decoding the current block according to the value of the geometric partition flag. The geometric partitioning pattern is an extension of the triangulation pattern. An advantage of the second aspect is that the context model index may be derived from information of a triangulation mode or a geometric division mode of a neighboring block adjacent to the current block. According to the context model index, the value of the geometric partition mark of the current block can be obtained from the code stream.
With reference to the fourth to the sixth implementation manners of the first aspect, in a seventh implementation manner of the first aspect or in the second aspect, in a first implementation manner of the second aspect, the obtaining the context model index of the current block according to at least one information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block includes: and when neither the left adjacent block nor the upper adjacent block uses a geometric partition mode or a triangulation mode, obtaining a context model index 0 of the current block.
With reference to the fourth to the sixth implementation manners of the first aspect, in an eighth implementation manner of the first aspect or the second implementation manner of the second aspect, in a second implementation manner of the second aspect, the obtaining the context model index of the current block according to at least one information of a triangulation mode and a geometric partition mode of a neighboring block adjacent to the current block includes: when one of the left neighboring block and the upper neighboring block uses a geometric partition mode or a triangulation mode, obtaining a context model index 1 of the current block.
With reference to the fourth to the sixth implementation manners of the first aspect, in a ninth implementation manner of the first aspect or the second aspect, in a third implementation manner of the second aspect, the obtaining the context model index of the current block according to at least one information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block includes: and when the left adjacent block and the upper adjacent block both use a geometric partition mode or a triangulation mode, obtaining a context model index 2 of the current block.
With reference to the second aspect or any implementation manner of the second aspect, in a fourth implementation manner of the second aspect, the method further includes: obtaining an aspect ratio of the current block, wherein the aspect ratio is a ratio of a width to a height of the current block; wherein the obtaining of the context model index of the current block according to at least one information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block includes: and acquiring a context model index of the current block according to the aspect ratio and at least one piece of information of a triangular division mode and a geometric division mode of an adjacent block adjacent to the current block.
With reference to the fourth implementation manner of the second aspect, in a fifth implementation manner of the second aspect, the obtaining the context model index of the current block according to the aspect ratio and at least one of information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block includes: obtaining a context model index 3 of the current block when the aspect ratio of the current block is greater than a predefined threshold.
With reference to the fifth implementation manner of the second aspect, in a sixth implementation manner of the second aspect, the predefined threshold is 4.
With reference to the fifth or the sixth implementation of the second aspect, in a seventh implementation of the second aspect, the aspect ratio of the current block is obtained by the following equation: ratio is 1< < abs (log2(width) -log 2(height)), where height and width in the equation are the height and width of the current block, abs () is an absolute value operator, log2() is a base-2 logarithm, and < < is a left shift operation.
With reference to the fourth to sixth implementation manners of the first aspect, in a tenth implementation manner of the first aspect, or the second aspect, or any implementation manner of the second aspect, in an eighth implementation manner of the second aspect, one information of the geometric partition mode of the left neighboring block indicates whether the left neighboring block uses a geometric partition mode, and one information of the geometric partition mode of the upper neighboring block indicates whether the upper neighboring block uses a geometric partition mode.
With reference to the tenth implementation manner of the first aspect, in an eleventh implementation manner of the first aspect or the eighth implementation manner of the second aspect, in a ninth implementation manner of the second aspect, whether the left neighboring block uses the geometric division mode is determined according to a value of a geometric division flag of the left neighboring block, or whether the upper neighboring block uses the geometric division mode is determined according to a value of a geometric division flag of the upper neighboring block. In this implementation manner, one piece of information of the left neighboring block is the geometric partition flag of the left neighboring block, and one piece of information of the upper neighboring block is the geometric partition flag of the upper neighboring block.
With reference to the tenth implementation manner of the first aspect, in a twelfth implementation manner of the first aspect or the ninth implementation manner of the second aspect, in a tenth implementation manner of the second aspect, whether the left neighboring block uses the geometric division mode is determined according to whether the left neighboring block is allowed to use the geometric division mode, or whether the upper neighboring block uses the geometric division mode is determined according to whether the upper neighboring block is allowed to use the geometric division mode. In this aspect, the one information of the left neighboring block is information indicating whether the left neighboring block is allowed to use a geometric partition mode, and may be, for example, a block size of the left neighboring block, and the one information of the upper neighboring block is information indicating whether the upper neighboring block is allowed to use the geometric partition mode, and may be, for example, a block size of the upper neighboring block.
With reference to the twelfth implementation manner of the first aspect, in a thirteenth implementation manner of the first aspect or the tenth implementation manner of the second aspect, in an eleventh implementation manner of the second aspect, if the block size of the left neighboring block is smaller than 8 × 8, the left neighboring block is not allowed to use a geometric partition mode, or if the block size of the upper neighboring block is smaller than 8 × 8, the upper neighboring block is not allowed to use the geometric partition mode. In this aspect, one piece of information of the left neighboring block is the block size of the left neighboring block, and one piece of information of the upper neighboring block is the block size of the upper neighboring block.
With reference to the fourth to sixth implementation manners of the first aspect, in a fourteenth implementation manner of the first aspect, or the second aspect, or any implementation manner of the second aspect, in a twelfth implementation manner of the second aspect, one information of the triangulation pattern of the left neighboring block indicates whether the left neighboring block uses a triangulation pattern, and one information of the triangulation pattern of the upper neighboring block indicates whether the upper neighboring block uses a triangulation pattern.
With reference to the fourteenth implementation manner of the first aspect, in a fifteenth implementation manner of the first aspect or the twelfth implementation manner of the second aspect, in a thirteenth implementation manner of the second aspect, whether the left neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the left neighboring block, or whether the upper neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the upper neighboring block.
With reference to the fourteenth implementation manner of the first aspect, in a sixteenth implementation manner of the first aspect or in a twelfth implementation manner of the second aspect, in a fourteenth implementation manner of the second aspect, whether the left neighboring block uses the triangulation mode is determined according to whether the left neighboring block is allowed to use the triangulation mode, or whether the upper neighboring block uses the triangulation mode is determined according to whether the upper neighboring block is allowed to use the triangulation mode.
With reference to the sixteenth implementation manner of the first aspect, in a seventeenth implementation manner of the first aspect or in a fourteenth implementation manner of the second aspect, in a fifteenth implementation manner of the second aspect, if the block size of the left neighboring block is smaller than 8 × 8, the left neighboring block is not allowed to use a triangulation mode, or if the block size of the upper neighboring block is smaller than 8 × 8, the upper neighboring block is not allowed to use a triangulation mode.
A third aspect of the present invention provides a decoder comprising processing circuitry for performing the method of the first aspect or any of the implementations of the first aspect or the method of the second aspect or any of the implementations of the second aspect.
A fourth aspect of the present invention provides a computer program product comprising program code for performing the method of the first aspect or any one of the implementations of the first aspect or the method of the second aspect or any one of the implementations of the second aspect.
A fifth aspect of the present invention provides a decoder, comprising: one or more processors; a non-transitory computer readable storage medium coupled to the one or more processors and storing a program for execution by the one or more processors, wherein when the program is executed by the one or more processors, the decoder is configured to perform the method according to the first aspect or any implementation of the first aspect or the method according to any implementation of the second aspect or the second aspect.
A sixth aspect of the present invention provides a decoder, comprising: the acquisition module is used for acquiring the code stream; acquiring the aspect ratio of the current block; obtaining a context model index of the current block according to the aspect ratio; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; a decoding module for decoding the current block according to the value of the geometric partition flag.
With reference to the sixth aspect, in a first implementation manner of the sixth aspect, the aspect ratio is a ratio of a width and a height of the current block.
With reference to the sixth aspect, in a second implementation manner of the sixth aspect or the first implementation manner of the sixth aspect, the obtaining module is further configured to obtain the aspect ratio according to the following equation: ratio is 1< < abs (log2(width) -log 2(height)), where height and width in the equation are the height and width of the current block, abs () is an absolute value operator, log2() is a base-2 logarithm, and < < is a left shift operation.
With reference to the sixth aspect or any implementation manner of the sixth aspect, in a third implementation manner of the sixth aspect, the obtaining module is further configured to: -if the aspect ratio is greater than a predefined threshold, obtaining a context model index 3 of the current block.
With reference to the sixth aspect or any implementation manner of the sixth aspect, in a fourth implementation manner of the sixth aspect, the obtaining module is further configured to: and if the aspect ratio is equal to or less than a predefined threshold, acquiring the context model index of the current block according to at least one piece of information of a triangular partition mode and a geometric partition mode of a neighboring block adjacent to the current block, wherein the neighboring block comprises a left neighboring block and an upper neighboring block.
With reference to the sixth aspect or any implementation manner of the sixth aspect, in a fifth implementation manner of the sixth aspect, the predefined threshold is 2nAnd n is a positive integer.
With reference to the sixth aspect or any implementation manner of the sixth aspect, in a sixth implementation manner of the sixth aspect, the predefined threshold is 4.
A seventh aspect of the present invention provides a decoder, comprising: the acquisition module is used for acquiring the code stream; acquiring a context model index of a current block according to at least one piece of information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; a decoding module for decoding the current block according to the value of the geometric partition flag.
With reference to the seventh aspect, in a first implementation manner of the seventh aspect, the obtaining module is further configured to: and when neither the left adjacent block nor the upper adjacent block uses a geometric partition mode or a triangulation mode, obtaining a context model index 0 of the current block.
With reference to the seventh aspect or the first implementation manner of the seventh aspect, in a second implementation manner of the seventh aspect, when one of the left neighboring block and the upper neighboring block uses a geometric partition mode or a triangulation partition mode, a context model index 1 of the current block is obtained.
With reference to the seventh aspect or any implementation manner of the seventh aspect, in a third implementation manner of the seventh aspect, the obtaining module is further configured to: and when the left adjacent block and the upper adjacent block both use a geometric partition mode or a triangulation mode, obtaining a context model index 2 of the current block.
With reference to the seventh aspect or any implementation manner of the seventh aspect, in a fourth implementation manner of the seventh aspect, one information of the geometric partition mode of the left neighboring block indicates whether the left neighboring block uses a geometric partition mode, and one information of the geometric partition mode of the neighboring block indicates whether the neighboring block uses a geometric partition mode.
With reference to the fourth implementation manner of the seventh aspect, in a fifth implementation manner of the seventh aspect, whether the left neighboring block uses the geometric division mode is determined according to a value of a geometric division flag of the left neighboring block, or whether the neighboring block uses the geometric division mode is determined according to a value of a geometric division flag of the neighboring block.
With reference to the fourth implementation manner of the seventh aspect, in a sixth implementation manner of the seventh aspect, whether the left neighboring block uses the geometric division mode is determined according to whether the left neighboring block is allowed to use the geometric division mode, or whether the neighboring block uses the geometric division mode is determined according to whether the neighboring block is allowed to use the geometric division mode.
With reference to the sixth implementation manner of the seventh aspect, in a seventh implementation manner of the seventh aspect, if the block size of the left neighboring block is smaller than 8 × 8, the left neighboring block is not allowed to use a geometric partition mode, or if the block size of the upper neighboring block is smaller than 8 × 8, the upper neighboring block is not allowed to use a geometric partition mode.
With reference to the seventh aspect or any implementation manner of the seventh aspect, in an eighth implementation manner of the seventh aspect, one information of the triangulation mode of the left neighboring block indicates whether the left neighboring block uses a triangulation mode, and one information of the triangulation mode of the upper neighboring block indicates whether the upper neighboring block uses a triangulation mode.
With reference to the eighth implementation manner of the seventh aspect, in a ninth implementation manner of the seventh aspect, whether the left neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the left neighboring block, or whether the upper neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the upper neighboring block.
With reference to the eighth implementation manner of the seventh aspect, in a tenth implementation manner of the seventh aspect, whether the left neighboring block uses the triangulation mode is determined according to whether the left neighboring block is allowed to use the triangulation mode, or whether the upper neighboring block uses the triangulation mode is determined according to whether the upper neighboring block is allowed to use the triangulation mode.
With reference to the tenth implementation of the seventh aspect, in an eleventh implementation of the seventh aspect, if the block size of the left neighboring block is smaller than 8 × 8, the left neighboring block is not allowed to use a geometric partition mode, or if the block size of the upper neighboring block is smaller than 8 × 8, the upper neighboring block is not allowed to use a geometric partition mode.
Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
Drawings
Embodiments of the invention will be described in detail below with reference to the following drawings, in which:
FIG. 1A is a block diagram of an exemplary video coding system for implementing an embodiment of the present invention;
FIG. 1B is a block diagram of another exemplary video coding system for implementing an embodiment of this disclosure;
FIG. 2 is a block diagram of an exemplary video encoder for implementing an embodiment of the present invention;
FIG. 3 is a block diagram of an exemplary architecture of a video decoder for implementing an embodiment of the present invention;
FIG. 4 is a block diagram of an exemplary encoding device or decoding device;
FIG. 5 is a block diagram of another exemplary encoding device or decoding device;
FIG. 6 shows an example of a neighbor block of a current block;
FIG. 7 illustrates a triangulation mode and a geometric partitioning mode;
FIG. 8 is a block diagram of an example of context adaptive binary arithmetic coding;
fig. 9 is a flowchart of a decoding method implemented by a decoding apparatus;
FIG. 10 is a flow diagram of another decoding method implemented by a decoder;
FIG. 11 is a block diagram of a decoder;
fig. 12 is a block diagram of another embodiment of a decoder.
In the following, the same reference numerals refer to the same or at least functionally equivalent features, unless explicitly stated otherwise.
Detailed Description
In the following description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific aspects of embodiments of the invention or in which embodiments of the invention may be practiced. It should be understood that embodiments of the invention are applicable to other aspects and include structural or logical changes not depicted in the drawings. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
It is to be understood that the disclosure relating to the described method is equally applicable to a device or system corresponding to the method for performing the method, and vice versa. For example, if one or more particular method steps are described, the corresponding apparatus may include one or more elements, e.g., functional elements, for performing the described one or more method steps (e.g., one element that performs the one or more steps, or multiple elements that each perform one or more of the multiple steps), even if such one or more elements are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular apparatus is described in terms of one or more units (e.g., functional units), the corresponding method may include one step to perform the function of the one or more units (e.g., one step to perform the function of the one or more units, or multiple steps that each perform the function of one or more of the units), even if such one or more steps are not explicitly described or illustrated in the figures. Furthermore, it is to be understood that features of the various exemplary embodiments and/or aspects described herein may be combined with each other, unless specifically noted otherwise.
Video coding (coding) generally refers to the processing of a sequence of images that make up a video or video sequence. In the field of video coding, the terms "frame" or "picture" may be used as synonyms. Video coding (or coding in general) includes both video encoding and video decoding. Video encoding is performed on the source side, typically including processing (e.g., by compression) of the original video image to reduce the amount of data required to represent the video image (for more efficient storage and/or transmission). Video decoding is performed on the destination side, typically involving inverse processing with respect to the encoder to reconstruct the video image. Embodiments are directed to video image (or generally image) "coding" which is understood to refer to "encoding" or "decoding" of a video image or corresponding video sequence. The combination of the encoding part and the decoding part is also called CODEC (coding and decoding).
In the case of lossless video coding, the original video image may be reconstructed, i.e., the reconstructed video image is of the same quality as the original video image (assuming no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, compression is further performed (e.g., by quantization) to reduce the amount of data representing video images that cannot be fully reconstructed in the decoder, i.e., the reconstructed video images are of lower or poorer quality than the original video images.
Several video coding standards belong to the "lossy hybrid video codec" (i.e., 2D transform coding that combines spatial prediction and temporal prediction in the sample domain and applies quantization in the transform domain). Each image of a video sequence is typically partitioned into a set of non-overlapping blocks, and decoding is typically performed in units of blocks. In other words, in an encoder, video is typically processed (i.e., encoded) in units of blocks (video blocks), e.g., prediction blocks are generated by spatial (intra) prediction and/or temporal (inter) prediction; subtracting the prediction block from the current block (currently processed/block to be processed) to obtain a residual block; the residual block is transformed and quantized in the transform domain to reduce the amount of data to be transmitted (compressed), while in the decoder, the inverse process with respect to the encoder is applied to the encoded or compressed block to reconstruct the current block for representation. Furthermore, the processing loop of the encoder is the same as the processing loop of the decoder, such that both will produce the same prediction (e.g., intra-prediction and inter-prediction) block and/or reconstructed block to process (i.e., code) the subsequent block.
In the following embodiments, the video coding system 10, the video encoder 20 and the video decoder 30 are described according to fig. 1 to 3.
Fig. 1A is an exemplary coding system 10, such as a video coding system 10 (or simply coding system 10), that may utilize the techniques of the present application. Video encoder 20 (or simply encoder 20) and video decoder 30 (or simply decoder 30) of video coding system 10 represent examples of devices that may be used to perform techniques in accordance with various examples described in this application.
As shown in FIG. 1A, transcoding system 10 includes a source device 12, source device 12 is configured to provide encoded image data 21 to a destination device 14 for decoding encoded image data 13.
Source device 12 includes an encoder 20 and may additionally, or alternatively, include a pre-processor (or pre-processing unit) 18, such as an image source 16, an image pre-processor 18, a communication interface or communication unit 22.
Image source 16 may include or may be any type of image capture device, such as a video camera for capturing real-world images, and/or any type of image generation device, such as a computer graphics processor for generating computer-animated images, or any type of other device for acquiring and/or providing real-world images, computer-generated images (e.g., screen content, Virtual Reality (VR) images), and/or any combination thereof (e.g., Augmented Reality (AR) images). The image source may be any type of memory (storage) that stores any of the above-described images.
The image or image data 17 may also be referred to as an original image or original image data 17, as distinguished from the processing performed by the preprocessor 18 and the preprocessing unit 18.
Preprocessor 18 is to receive (raw) image data 17, preprocess image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. The pre-processing performed by pre-processor 18 may include pruning (trim), color format conversion (e.g., from RGB to YCbCr), color correction or de-noising, and so forth. It should be understood that the pre-processing unit 18 may be an optional component.
Video encoder 20 is operative to receive pre-processed image data 19 and provide encoded image data 21 (described further below with respect to fig. 2, etc.).
The communication interface 22 in the source device 12 may be used to: receives encoded image data 21 and sends encoded image data 21 (or any other processed version) over communication channel 13 to another device, such as destination device 14, or any other device for storage or direct reconstruction.
Destination device 14 includes a decoder 30 (e.g., a video decoder 30), and may additionally, or alternatively, include a communication interface or unit 28, a post-processor 32 (or post-processing unit 32), and a display device 34.
Communication interface 28 in destination device 14 is used to receive encoded image data 21 (or any other processed version) directly from source device 12 or from any other source device such as a storage device, e.g., an encoded image data storage device, and provide encoded image data 21 to decoder 30.
Communication interface 22 and communication interface 28 may be used to send or receive encoded image data 21 or encoded data 13 over a direct communication link (e.g., a direct wired or wireless connection) between source device 12 and destination device 14, or over any type of network (e.g., a wired or wireless network or any combination thereof, or any type of private and public network), or any combination thereof.
For example, communication interface 22 may be used to encapsulate encoded image data 21 into a suitable format such as a message and/or process the encoded image data using any type of transport encoding or processing for transmission over a communication link or communication network.
For example, communication interface 28, which corresponds to communication interface 22, may be used to receive transmitted data and process the transmitted data using any type of corresponding transport decoding or processing and/or de-encapsulation to obtain encoded image data 21.
Both communication interface 22 and communication interface 28 may be configured as a unidirectional communication interface, as indicated by the arrows of the corresponding communication channel 13 pointing from source device 12 to destination device 14 in fig. 1A, or as a bidirectional communication interface, and may be used to send and receive messages, etc., to establish a connection, acknowledge and exchange any other information related to a communication link and/or data transmission, e.g., encoded image data transmission, etc.
Decoder 30 is used to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (described in detail below with respect to fig. 3 or 5).
Post-processor 32 of destination device 14 is to post-process decoded image data 31 (also referred to as reconstructed image data), e.g., decoded image 31, to obtain post-processed image data 33, e.g., post-processed image 33. For example, the post-processing performed by post-processing unit 32 may include color format conversion (e.g., from YCbCr to RGB), toning, cropping, or resampling, or any other processing for generating decoded image data 31 for display by display device 34 or the like.
The display device 34 in the destination device 14 is used to receive the post-processed image data 33 to display an image to a user or viewer or the like. Display device 34 may be or include any type of display, such as an integrated or external display or monitor, for representing the reconstructed image. For example, the display may include a Liquid Crystal Display (LCD), an Organic Light Emitting Diode (OLED) display, a plasma display, a projector, a micro LED display, a liquid crystal on silicon (LCoS), a Digital Light Processor (DLP), or any other type of display.
Although fig. 1A depicts source device 12 and destination device 14 as separate devices, device embodiments may also include two devices or functions, namely source device 12 or a corresponding function and destination device 14 or a corresponding function. In these embodiments, the source device 12 or corresponding functionality and the destination device 14 or corresponding functionality may be implemented using the same hardware and/or software or by separate hardware and/or software or any combination thereof.
It will be apparent to the skilled person from the description that the different units or functions with and (accurately) divided in the source device 12 and/or the destination device 14 shown in fig. 1A may differ depending on the actual device and application.
The encoder 20 (e.g., video encoder 20) or the decoder 30 (e.g., video decoder 30), or both the encoder 20 and the decoder 30, may be implemented by processing circuitry, such as one or more microprocessors, Digital Signal Processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding processors, or any combination thereof, as shown in fig. 1B. Encoder 20 may be implemented by processing circuitry 46 to embody the various modules discussed with respect to encoder 20 of fig. 2 and/or any other encoder system or subsystem described herein. Decoder 30 may be implemented by processing circuitry 46 to embody the various modules discussed with respect to decoder 30 of fig. 3 and/or any other decoder system or subsystem described herein. The processing circuitry may be used to perform various operations that will be discussed later. When the techniques are implemented in part in software, as shown in fig. 5, the device may store the instructions of the software in a suitable non-transitory computer-readable storage medium and may execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Video encoder 20 or video decoder 30 may be integrated in a single device as part of a combined encoder/decoder (codec), as shown in fig. 1B.
Source device 12 and destination device 14 may comprise any of a variety of devices, including any type of handheld or fixed device, such as a notebook or laptop computer, a cell phone, a smart phone, a tablet computer, a video camera, a desktop computer, a set-top box, a television, a display device, a digital media player, a video game console, a video streaming device (such as a content service server or a content distribution server), a broadcast receiver device, a broadcast transmitter device, etc., and may not use or use any type of operating system. In some cases, source device 12 and destination device 14 may be equipped with components for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.
In some cases, the video coding system 10 shown in fig. 1A is merely exemplary, and the techniques provided herein may be applicable to video coding settings (e.g., video encoding or video decoding) that do not necessarily include any data communication between the encoding device and the decoding device. In other examples, the data is retrieved from local storage, sent over a network, and so on. A video encoding device may encode and store data in memory, and/or a video decoding device may retrieve and decode data from memory. In some examples, the encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve data from memory and decode data.
For ease of description, embodiments of the present invention are described herein with reference to High-Efficiency Video Coding (HEVC) or general Video Coding (VVC) reference software or a next generation Video Coding standard developed by Joint Video Coding Team (JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the Video Coding Experts Group (MPEG) of the ISO/IEC moving Picture Experts Group (JCT-VC). Those of ordinary skill in the art will appreciate that embodiments of the present invention are not limited to HEVC or VVC.
Encoder and encoding method
Fig. 2 is a schematic block diagram of an exemplary video encoder 20 for implementing the techniques of the present application. In the example of fig. 2, the video encoder 20 includes an input terminal 201 (or input interface 201), a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210 and an inverse transform processing unit 212, a reconstruction unit 214, a loop filter unit 220, a Decoded Picture Buffer (DPB) 230, a mode selection unit 260, an entropy encoding unit 270, and an output terminal 272 (or output interface 272). The mode selection unit 260 may include an inter prediction unit 244, an intra prediction unit 254, and a partition unit 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in fig. 2 may also be referred to as a hybrid video encoder or a hybrid video codec-based video encoder.
The residual calculation unit 204, transform processing unit 206, quantization unit 208 and mode selection unit 260 constitute the forward signal path of the encoder 20; inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, buffer 216, loop filter 220, Decoded Picture Buffer (DPB) 230, inter prediction unit 244, and intra prediction unit 254 constitute a reverse signal path of video encoder 20, where the reverse signal path of video encoder 20 corresponds to a signal path of a decoder (see decoder 30 of fig. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the Decoded Picture Buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 also constitute a "built-in decoder" of the video encoder 20.
Image and image segmentation (image and block)
The encoder 20 is operable to receive images 17 (or image data 17) via an input 201 or the like, e.g. to form images in a sequence of images of a video or video sequence. The received image or image data may also be a pre-processed image 19 (or pre-processed image data 19). For simplicity, the following description uses image 17. Image 17 may also be referred to as a current image or an image to be coded (especially when the current image is distinguished from other images in video coding, such as the same video sequence, i.e., previously encoded images and/or decoded images in a video sequence that also includes the current image).
The (digital) image is or may be a two-dimensional array or matrix of samples having intensity values. The samples in the array may also be referred to as pixels (short forms of picture elements). The number of samples in the horizontal and vertical directions (or axes) of the array or image defines the size and/or resolution of the image. To represent color, three color components are typically used, i.e., the image may be represented as or include three sample arrays. In the RGB format or color space, the image includes corresponding arrays of red, green, and blue samples. However, in video coding, each pixel is typically represented in luminance and chrominance format or in color space, e.g., YCbCr, comprising a luminance component (sometimes also denoted L) represented by Y and two chrominance components represented by Cb and Cr. The luminance component Y represents luminance or gray-scale intensity (e.g., as in a gray-scale image), and the two chrominance components Cb and Cr represent chrominance or color information components. Accordingly, an image in YCbCr format includes a luminance sample array of luminance sample values (Y) and two chrominance sample arrays of chrominance values (Cb and Cr). An image in RGB format may be converted to YCbCr format and vice versa, a process also known as color transformation or conversion. If the image is monochromatic, the image may include only an array of luma samples. Accordingly, for example, an image may be an array of luma samples in a monochrome format or an array of luma samples in 4:2:0, 4:2:2, and 4:4:4 color formats and two corresponding arrays of chroma samples.
In one embodiment, video encoder 20 may include an image segmentation unit (not shown in fig. 2) for segmenting image 17 into a plurality of (typically non-overlapping) image blocks 203. These blocks may also be referred to as root blocks, macroblocks (h.264/AVC) or Coding Tree Blocks (CTBs), or Coding Tree Units (CTUs) (h.265/HEVC and VVC). The image segmentation unit may be adapted to use the same block size for all images in the video sequence and to use a corresponding grid defining the block size, or to change the block size between images or subsets or groups of images and segment each image into corresponding blocks.
In further embodiments, the video encoder may be configured to receive blocks 203 of image 17 directly, e.g., one, several, or all of the blocks that make up image 17. The image block 203 may also be referred to as a current image block or an image block to be coded.
As with image 17, image blocks 203 are also or can be thought of as a two-dimensional array or matrix of samples having intensity values (sample values), but the size of image blocks 203 is smaller than that of image 17. That is, for example, block 203 may include, for example, one sample array (e.g., a luma array in the case of a black-and-white image 17, or a luma or chroma array in the case of a color image) or three sample arrays (e.g., a luma array and two chroma arrays in the case of a color image 17) or any other number and/or type of arrays depending on the color format applied. The number of samples in the horizontal and vertical directions (or axes) of the block 203 defines the size of the block 203. Thus, a block may be an array of M × N (M columns × N rows) samples, or an array of M × N transform coefficients, or the like.
In one embodiment, the video encoder 20 shown in fig. 2 is used to encode the image 17 on a block-by-block basis, e.g., encoding and prediction is performed for each block 203.
The embodiment of video encoder 20 shown in fig. 2 may also be used to segment and/or encode a picture using slices (also referred to as video slices), where a picture may be segmented or encoded using one or more slices (which are typically non-overlapping), and each slice may include one or more blocks (e.g., CTUs).
The embodiment of the video encoder 20 shown in fig. 2 may also be used for segmenting and/or encoding a picture using groups of blocks (also referred to as video blocks) and/or blocks (also referred to as video blocks), wherein the picture may be segmented or encoded using one or more groups of blocks (typically non-overlapping), each group of blocks may comprise one or more blocks (e.g., CTUs) or one or more blocks, etc., wherein each block may be rectangular, etc., and may comprise one or more blocks (e.g., CTUs), e.g., complete or partial blocks.
Residual calculation
The residual calculation unit 204 is configured to calculate a residual block 205 (also referred to as a residual 205) from the image block 203 and a prediction block 265 (the prediction block 265 is described in detail later) as follows: for example, sample values of the prediction block 265 are subtracted from sample values of the image block 203 sample by sample (pixel by pixel) to obtain the residual block 205 in the sample domain.
Transformation of
The transform processing unit 206 is configured to perform Discrete Cosine Transform (DCT), Discrete Sine Transform (DST), or the like on the sample values of the residual block 205, to obtain transform coefficients 207 in a transform domain. The transform coefficients 207, which may also be referred to as transform residual coefficients, represent a residual block 205 in the transform domain.
The transform processing unit 206 may be used to apply integer approximations of DCT/DST, such as the transform specified for h.265/HEVC. Such integer approximations are typically scaled by a factor compared to the orthogonal DCT transform. In order to preserve the norm of the residual block processed by the forward and inverse transform, other scaling factors are applied during the transform. The scaling factor is typically selected according to certain constraints, e.g., the scaling factor is a power of 2 for a shift operation, the bit depth of the transform coefficients, a tradeoff between accuracy and implementation cost, etc. For example, a specific scaling factor may be specified for the inverse transform by inverse transform processing unit 212 or the like (and the corresponding inverse transform at video decoder 30 by inverse transform processing unit 312 or the like), and accordingly, a corresponding scaling factor may be specified for the forward transform in encoder 20 by transform processing unit 206 or the like.
Embodiments of video encoder 20 (corresponding to transform processing unit 206) may be configured to output transform parameters (e.g., types of one or more transforms) directly or after being encoded or compressed by entropy encoding unit 270, e.g., such that video decoder 30 may receive and use the transform parameters for decoding.
Quantization
The quantization unit 208 is configured to quantize the transform coefficients 207 by, for example, scalar quantization or vector quantization, resulting in quantized coefficients 209. Quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.
The quantization process may reduce the bit depth associated with some or all of transform coefficients 207. For example, n-bit transform coefficients may be rounded down to m-bit transform coefficients during quantization, where n is greater than m. The quantization level may be modified by adjusting a Quantization Parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization steps correspond to finer quantization and larger quantization steps correspond to coarser quantization. The applicable quantization step size may be represented by a Quantization Parameter (QP). For example, the quantization parameter may be an index to a set of predefined applicable quantization steps. For example, a smaller quantization parameter may correspond to a fine quantization (smaller quantization step size) and a larger quantization parameter may correspond to a coarse quantization (larger quantization step size), or vice versa. The quantization may comprise a division by a quantization step size and a corresponding quantization or inverse quantization, e.g. performed by the inverse quantization unit 210, or may comprise a multiplication by a quantization step size. Embodiments according to the HEVC or like standard may be used to determine the quantization step size using a quantization parameter. In general, the quantization step size may be calculated from a quantization parameter using a fixed-point approximation of an equation including division. Quantization and dequantization may introduce other scaling factors to recover the norm of the residual block, which may be modified due to the scaling used in the fixed point approximation of the equation for the quantization step size and the quantization parameter. In one exemplary implementation, the scaling of the inverse transform and dequantization may be combined. Alternatively, a custom quantization table may be used and indicated (signal) to the decoder by the encoder via a code stream or the like. Quantization is a lossy operation, with losses increasing with increasing quantization step size.
In an embodiment, video encoder 20 (corresponding to quantization unit 208) may be used to output a Quantization Parameter (QP), e.g., directly or after being encoded by entropy encoding unit 270, e.g., such that video decoder 30 may receive and decode using the quantization parameter.
Inverse quantization
The inverse quantization unit 210 is configured to perform inverse quantization of the quantization unit 208 on the quantized coefficients, resulting in dequantized coefficients 211, e.g., perform an inverse quantization scheme according to or using the same quantization step as the quantization unit 208. Dequantized coefficients 211, which may also be referred to as dequantized residual coefficients 211, correspond to transform coefficients 207, but dequantized coefficients 211 are typically not exactly the same as the transform coefficients due to the loss caused by quantization.
Inverse transformation
The inverse transform processing unit 212 is configured to perform an inverse transform of the transform performed by the transform processing unit 206, such as an inverse Discrete Cosine Transform (DCT) or an inverse Discrete Sine Transform (DST), to obtain a reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 213.
Reconstruction
The reconstruction unit 214 (e.g., adder or summer 214) is configured to add the transform block 213 (i.e., the reconstructed residual block 213) to the prediction block 265 to obtain a reconstructed block 215 in the sample domain, e.g., to add sample values of the reconstructed residual block 213 and sample values of the prediction block 265.
Filtering
Loop filter unit 220 (or simply "loop filter" 220) is used to filter reconstruction block 215 to obtain filter block 221, or generally to filter the reconstructed samples to obtain filtered samples. For example, the loop filter unit is used to smoothly perform pixel transition or improve video quality. Loop filter unit 220 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an Adaptive Loop Filter (ALF), a sharpening or smoothing filter, or a collaborative filter, or any combination thereof. Although loop filter unit 220 is shown in fig. 2 as an in-loop filter, in other configurations, loop filter unit 220 may be implemented as a post-loop filter. The filtering block 221 may also be referred to as a filtered reconstruction block 221.
Embodiments of video encoder 20, and in particular loop filter unit 220, may be used to output loop filter parameters (e.g., sample adaptive offset information) either directly or encoded via entropy encoding unit 270, etc., so that, for example, decoder 30 may receive and apply the same loop filter parameters or a corresponding loop filter for decoding.
Decoded picture buffer
Decoded Picture Buffer (DPB) 230 may be a memory that stores reference pictures or reference picture data for video encoder 20 to encode the video data. DPB 230 may be formed from any of a variety of memory devices, such as Dynamic Random Access Memory (DRAM), including Synchronous DRAM (SDRAM), Magnetoresistive RAM (MRAM), Resistive RAM (RRAM), or other types of memory devices. A Decoded Picture Buffer (DPB) 230 may be used to store one or more filter blocks 221. Decoded picture buffer 230 may also be used to store other previous filter blocks, such as previous reconstruction and filter blocks 221, for different pictures, such as the same current picture or previous reconstructed pictures, and may provide complete previous reconstructed, i.e., decoded pictures (and corresponding reference blocks and samples) and/or partially reconstructed current pictures (and corresponding reference blocks and samples), e.g., for inter prediction. The Decoded Picture Buffer (DPB) 230 may also be used to store one or more unfiltered reconstructed blocks 215, or generally, unfiltered reconstructed samples, such as the reconstructed blocks 215 that are not filtered by the loop filter unit 220, or reconstructed blocks or reconstructed samples that have not been subjected to any other processing.
Mode selection (segmentation and prediction)
Mode select unit 260 includes a segmentation unit 262, an inter-prediction unit 244, and an intra-prediction unit 254 to receive or obtain original image data, such as original block 203 (current block 203 of current image 17), and reconstructed image data, such as filtered and/or unfiltered reconstructed samples or reconstructed blocks of the same (current) image and/or one or more previously decoded images, from decoded image buffer 230 or other buffers (e.g., line buffers, not shown). The reconstructed image data is used as reference image data necessary for prediction such as inter prediction or intra prediction to obtain a prediction block 265 or a prediction value 265.
The mode selection unit 260 may be used to determine or select a partition type for the current block prediction mode (including no partitioning) and the prediction mode (e.g., intra or inter prediction modes) and generate a corresponding prediction block 265 for calculation of the residual block 205 and reconstruction of the reconstructed block 215.
In one embodiment, mode selection unit 260 may be used to select a partitioning and prediction mode (e.g., selected from among prediction modes supported or available by mode selection unit 260) that provides the best match or the smallest residual (smallest residual refers to better compression in transmission or storage), or the smallest indicated overhead (smallest indicated overhead refers to better compression in transmission or storage), or both. The mode selection unit 260 may be configured to determine the segmentation and prediction modes according to Rate Distortion Optimization (RDO), i.e. to select the prediction mode that provides the minimum rate distortion optimization. Terms such as "best," "minimum," "optimal," and the like in this context do not necessarily refer to "best," "minimum," "optimal," and the like as a whole, but may also refer to meeting termination or selection criteria, e.g., a value above or below a threshold or other constraint, that may be "sub-optimal," but at a reduced complexity and processing time.
In other words, the partitioning unit 262 may be used to partition the block 203 into smaller partitions or sub-blocks (again forming blocks), e.g. iteratively using quad-tree (QT) partitioning, binary-tree (BT) partitioning, or ternary-tree (TT) partitioning, or any combination thereof, and e.g. predicting each partition or sub-block, wherein the mode selection comprises selecting a tree structure of the partition 203 and applying a prediction mode to each partition or sub-block.
The partitioning (e.g., by partitioning unit 260) and prediction processing (e.g., by inter-prediction unit 244 and intra-prediction unit 254) performed by exemplary video encoder 20 will be described in detail below.
Segmentation
The segmentation unit 262 may segment (or divide) the current block 203 into smaller segmented blocks, e.g., smaller blocks of square or rectangular size. These smaller blocks (which may also be referred to as sub-blocks) may be further partitioned into even smaller partitioned blocks. This approach is also referred to as tree splitting or hierarchical tree splitting, in which a root block of e.g. root tree level 0 (hierarchical level 0, depth 0) may be recursively split, e.g. into two or more next lower tree level blocks, e.g. nodes of tree level 1 (hierarchical level 1, depth 1). These blocks may again be split into two or more next lower levels, e.g., tree level 2 (level 2, depth 2) blocks, etc., until the split terminates because the termination criteria are met, either the maximum tree depth or the minimum block size is reached. The blocks that are not further divided are also referred to as leaf blocks or leaf nodes of the tree. A tree divided into two blocks is called a binary-tree (BT), a tree divided into three blocks is called a ternary-tree (TT), and a tree divided into four blocks is called a quad-tree (QT).
As previously mentioned, the term "block" as used herein may be a portion of an image, in particular a square or rectangular portion. For example, in connection with HEVC and VVC, a block may be or correspond to a Coding Tree Unit (CTU), a Coding Unit (CU), a Prediction Unit (PU), and a Transform Unit (TU), and/or to a corresponding block, e.g., a Coding Tree Block (CTB), a Coding Block (CB), a Transform Block (TB), or a Prediction Block (PB).
For example, a Coding Tree Unit (CTU) may be or include a CTB of luma samples, two corresponding CTBs of chroma samples of a picture having three arrays of samples, or a CTB of samples of a monochrome picture, or a CTB of samples of a picture coded using three independent color planes and syntax structures (for coding samples). Accordingly, a Coding Tree Block (CTB) may be a block of N × N samples, where N may be set to a value such that the components are divided into CTBs, which is the partition. A Coding Unit (CU) may be or comprise an encoded block of luma samples, two corresponding encoded blocks of chroma samples of an image with three arrays of samples, or an encoded block of samples of a monochrome image or an encoded block of samples of an image coded using three independent color planes and syntax structures (for coding samples). Accordingly, a Coding Block (CB) may be a block of M × N samples, where M and N may be set to a value such that the CTB is divided into coding blocks, which is the partition.
In an embodiment, for example, according to HEVC, a Coding Tree Unit (CTU) may be partitioned into CUs by a quadtree structure represented as a coding tree. It is determined in units of CUs whether to code an image area using inter (temporal) prediction or intra (spatial) prediction. Each CU may be further divided into one, two, or four PUs according to PU division types. The same prediction process is applied within one PU and the relevant information is sent to the decoder in units of PU. After applying a prediction process to obtain a residual block according to the PU partition type, a CU may be partitioned into Transform Units (TUs) according to another quadtree structure similar to a coding tree used for the CU.
In an embodiment, the coded blocks are partitioned using combined quad-tree and binary tree (QTBT) partitioning, for example, according to the latest Video Coding standard currently developed known as universal Video Coding (VVC). In the QTBT block structure, a CU may be square or rectangular. For example, a Coding Tree Unit (CTU) is first divided by a quadtree structure. The quadtree leaf nodes are further partitioned by a binary or ternary tree structure. The partition tree leaf nodes are called Coding Units (CUs), and the segments are used for prediction and transform processing without further partitioning. That is, in the QTBT coding block structure, the block sizes of CU, PU, and TU are the same. Meanwhile, multiple segmentations such as ternary tree segmentation can be used in conjunction with the QTBT block structure.
In one example, mode select unit 260 of video encoder 20 may be used to perform any combination of the segmentation techniques described herein.
As described above, video encoder 20 is used to determine or select the best or optimal prediction mode from a (e.g., predetermined) set of prediction modes. For example, the prediction mode set may include intra prediction modes and/or inter prediction modes.
Intra prediction
The intra prediction mode set may include 35 different intra prediction modes, e.g., non-directional modes like DC (or mean) mode and planar mode, or directional modes as defined in HEVC, or may include 67 different intra prediction modes, e.g., non-directional modes like DC (or mean) mode and planar mode, or directional modes as defined in VVC.
The intra prediction unit 254 is configured to generate an intra prediction block 265 using reconstructed samples of neighboring blocks of the same current picture according to intra prediction modes in the intra prediction mode set.
Intra-prediction unit 254 (or generally mode selection unit 260) is also used to output intra-prediction parameters (or generally information representative of a selected intra-prediction mode for the block) in the form of syntax elements 266 to entropy encoding unit 270 for inclusion into encoded image data 21, e.g., so that video decoder 30 may receive and use the prediction parameters for decoding.
Inter prediction
The set of (possible) inter prediction modes is determined from the available reference pictures (i.e. previously at least partially decoded pictures, e.g. stored in the DPB 230) and other inter prediction parameters, e.g. whether to search for the best matching reference block using the entire reference picture or only a part of the reference picture, e.g. a search window area near the area of the current block, and/or whether to apply pixel interpolation, e.g. half-pixel and/or quarter-pixel interpolation.
In addition to the prediction mode described above, a skip mode and/or a direct mode may be applied.
The inter prediction unit 244 may include a Motion Estimation (ME) unit and a Motion Compensation (MC) unit (both not shown in fig. 2). The motion estimation unit may be used to receive or obtain an image block 203 (a current image block 203 of a current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks, e.g., reconstructed blocks of one or more other/different previously decoded images 231, for motion estimation. For example, the video sequence may include a current picture and a previous decoded picture 231, or in other words, the current picture and the previous decoded picture 231 may be part of or form a sequence of pictures that make up the video sequence.
For example, the encoder 20 may be configured to select a reference block from a plurality of reference blocks of the same or different one of a plurality of other images, and provide the reference image (or reference image index) and/or an offset (spatial offset) between the position (x-coordinate, y-coordinate) of the reference block and the position of the current block as an inter prediction parameter to the motion estimation unit. This offset is also called a Motion Vector (MV).
The motion compensation unit is configured to obtain (e.g., receive) inter-prediction parameters and perform inter-prediction according to or using the inter-prediction parameters to obtain an inter-prediction block 265. The motion compensation performed by the motion compensation unit may involve extracting or generating a prediction block from a motion/block vector determined by motion estimation, and may also include interpolating sub-pixel precision. Interpolation filtering may generate samples of other pixels from samples of known pixels, potentially increasing the number of candidate prediction blocks that may be used to code an image block. Upon receiving the motion vectors of the PUs of the current image block, the motion compensation unit may locate the prediction block to which the motion vector points in one of the reference picture lists.
Motion compensation unit may also generate syntax elements related to the blocks and video slices for use by video decoder 30 in decoding image blocks of a video slice. In addition to or instead of a stripe and a corresponding syntax element, a tile group (tile group) and/or a tile and a corresponding syntax element may be received and/or used.
Entropy coding
The entropy encoding unit 270 is configured to apply or not apply (non-compression) an entropy encoding algorithm or scheme (e.g., a Variable Length Coding (VLC) scheme, a context adaptive VLC scheme (CAVLC), an arithmetic coding scheme, a binarization algorithm, a Context Adaptive Binary Arithmetic Coding (CABAC), a syntax-based context-adaptive binary arithmetic coding (SBAC), a Probability Interval Partitioning Entropy (PIPE) coding, or other methods or techniques) to (non-compression) the quantization coefficients 209, the inter-frame prediction parameters, the intra-frame prediction parameters, the loop filter parameters, and/or other syntax elements, encoded image data 21 that may be output via output 272 in the form of an encoded codestream 21 or the like is obtained so that parameters for decoding may be received and used by video decoder 30 or the like. The encoded bitstream 21 may be transmitted to the video decoder 30, or saved in memory for later transmission or retrieval by the video decoder 30.
Other structural variations of video encoder 20 may be used to encode the video stream. For example, the non-transform based encoder 20 may quantize the residual signal of certain blocks or frames directly without the transform processing unit 206. In another implementation, the encoder 20 may include the quantization unit 208 and the inverse quantization unit 210 combined into a single unit.
Decoder and decoding method
Fig. 3 shows an example of a video decoder 30 for implementing the techniques of the present application. Video decoder 30 is operative to receive encoded image data 21 (e.g., encoded codestream 21), e.g., encoded by encoder 20, resulting in decoded image 331. The encoded image data or codestream includes information for decoding the encoded image data, such as data representing image blocks of the encoded video slice (and/or group of blocks or partitions) and related syntax elements.
In the example of fig. 3, the decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., a summer 314), a loop filter 320, a Decoded Picture Buffer (DPB) 330, a mode application unit 360, an inter prediction unit 344, and an intra prediction unit 354. The inter prediction unit 344 may be or include a motion compensation unit. In some examples, video decoder 30 may perform a decoding process that is generally the reverse of the encoding process described by video encoder 100 of fig. 2.
As explained for encoder 20, inverse quantization unit 210, inverse transform processing unit 212, reconstruction unit 214, loop filter 220, Decoded Picture Buffer (DPB) 230, inter prediction unit 344, and intra prediction unit 354 are also referred to as "built-in decoders" that make up video encoder 20. Accordingly, the inverse quantization unit 310 may be functionally identical to the inverse quantization unit 110, the inverse transform processing unit 312 may be functionally identical to the inverse transform processing unit 212, the reconstruction unit 314 may be functionally identical to the reconstruction unit 214, the loop filter 320 may be functionally identical to the loop filter 220, and the decoded picture buffer 330 may be functionally identical to the decoded picture buffer 230. Accordingly, the explanations of the corresponding units and functions of video encoder 20 apply to the corresponding units and functions of video decoder 30, respectively.
Entropy decoding
The entropy decoding unit 304 is configured to parse the code stream 21 (or generally the encoded image data 21) and perform entropy decoding on the encoded image data 21, resulting in quantized coefficients 309 and/or decoded coding parameters (not shown in fig. 3), such as any or all of inter-prediction parameters (e.g., reference picture indexes and motion vectors), intra-prediction parameters (e.g., intra-prediction modes or indexes), transform parameters, quantization parameters, loop filter parameters, and/or other syntax elements. Entropy decoding unit 304 may be used to apply a decoding algorithm or scheme corresponding to the encoding scheme described for entropy encoding unit 270 of encoder 20. Entropy decoding unit 304 may also be used to provide inter-prediction parameters, intra-prediction parameters, and/or other syntax elements to mode application unit 360, as well as to provide other parameters to other units of decoder 30. Video decoder 30 may receive video slice-level and/or video block-level syntax elements. In addition or as an alternative to stripes and corresponding syntax elements, groups of tiles and/or tiles and corresponding syntax elements may be received or used.
Inverse quantization
Inverse quantization unit 310 may be used to receive Quantization Parameters (QPs) (or generally information related to inverse quantization) and quantization coefficients from encoded image data 21 (e.g., parsed and/or decoded by entropy decoding unit 304), and inverse quantize decoded quantized coefficients 309 according to the quantization parameters to obtain dequantized coefficients 311, which dequantized coefficients 311 may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in a video slice (or block or group of blocks) to determine a degree of quantization, as well as a degree of inverse quantization that needs to be applied.
Inverse transformation
The inverse transform processing unit 312 is operable to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 resulting in a reconstructed residual block 213 of the sample domain. The reconstructed residual block 213 may also be referred to as a transform block 313. The transform may be an inverse transform, such as an inverse DCT, an inverse DST, an inverse integer transform, or a conceptually similar inverse transform process. Inverse transform processing unit 312 may also be used to receive transform parameters or corresponding information from encoded image data 21 (e.g., parsed and/or decoded by entropy decoding unit 304) to determine the transform to apply to dequantized coefficients 311.
Reconstruction
A reconstruction unit 314 (e.g., a summer 314) may be used to add the reconstructed residual block 313 to the prediction block 365, resulting in a reconstructed block 315 in the sample domain, e.g., adding sample values of the reconstructed residual block 313 and sample values of the prediction block 365.
Filtering
The loop filter unit 320 (in or after the decoding loop) is used to filter the reconstruction block 315, resulting in a filter block 321, to facilitate pixel transitions or to improve video quality, etc. Loop filter unit 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a bilateral filter, an Adaptive Loop Filter (ALF), a sharpening or smoothing filter, or a collaborative filter, or any combination thereof. Although loop filtering unit 320 is shown in fig. 3 as an in-loop filter, in other configurations, loop filtering unit 320 may be implemented as a post-loop filter.
Decoded picture buffer
Decoded video blocks 321 in one picture are then stored in decoded picture buffer 330, and decoded picture buffer 330 stores decoded pictures 331 as reference pictures for use in subsequent motion compensation of other pictures and/or respectively output displays.
The decoder 30 is used to output the decoded image 311 to a user for presentation or viewing by the user through the output unit 312 or the like.
Prediction
The inter prediction unit 344 may function as the inter prediction unit 244 (particularly, a motion compensation unit), and the intra prediction unit 354 may function as the intra prediction unit 254, and decide to divide or partition and perform prediction according to the partitioning and/or prediction parameters or corresponding information received from the encoded image data 21 (e.g., parsed and/or decoded by the entropy decoding unit 304, etc.). The mode application unit 360 may be used to perform prediction (intra or inter prediction) of each block from the reconstructed image, block or corresponding samples (filtered or unfiltered), resulting in a prediction block 365.
When a video slice is coded as an intra-coded (I) slice, intra prediction unit 354 of mode application unit 360 is used to generate a prediction block 365 for an image block of the current video slice according to an intra prediction mode and data of an indication (signal) of a previously decoded block of the current frame or image. When the video image is coded as an inter-coded (e.g., B or P) slice, inter prediction unit 344 (e.g., motion compensation unit) of mode application unit 360 is used to generate prediction block 365 for the video block of the current video slice from the motion vectors and other syntax elements received from entropy decoding unit 304. For inter prediction, the prediction blocks may be generated from one reference picture in one of the reference picture lists. Video decoder 30 may construct the reference frame list from the reference pictures stored in DPB 330 using a default construction technique: list 0 and list 1. The same or similar process may be applied to embodiments of groups of partitions (e.g., video groups) and/or blocks (e.g., video blocks), in addition to or instead of stripes (e.g., video stripes), e.g., video may be coded using I, P or B groups of partitions and/or blocks.
The mode application unit 360 is used to determine prediction information of video blocks in the current video slice by parsing motion vectors or related information and other syntax elements and generate a prediction block for the decoded current video block using the prediction information. For example, the mode application unit 360 determines a prediction mode (e.g., intra prediction or inter prediction) for coding video blocks of a video slice, an inter prediction slice type (e.g., B-slice, P-slice, or GPB-slice), construction information for one or more reference picture lists of the slice, a motion vector for each inter-coded video block of the slice, an inter prediction state for each inter-coded video block of the slice, other information, using some syntax elements received, to decode a video block in a current video slice. The same or similar process may be applied to embodiments of groups of partitions (e.g., video groups) and/or blocks (e.g., video blocks), in addition to or instead of stripes (e.g., video stripes), e.g., video may be coded using I, P or B groups of partitions and/or blocks.
The embodiment of video decoder 30 shown in fig. 3 may be used to partition and/or decode a picture using slices (also referred to as video slices), where a picture may be partitioned or decoded using one or more slices (which typically do not overlap), and each slice may include one or more blocks (e.g., CTUs).
The embodiment of the video decoder 30 shown in fig. 3 may be used for segmenting and/or decoding a picture using groups of blocks (also referred to as video blocks) and/or blocks (also referred to as video blocks), wherein the picture may be segmented or decoded using one or more groups of blocks (typically non-overlapping), each group of blocks may comprise one or more blocks (e.g., CTUs) or one or more blocks, etc., wherein each block may be rectangular, etc., and may comprise one or more blocks (e.g., CTUs), e.g., complete or partial blocks.
Other variations of video decoder 30 may be used to decode encoded image data 21. For example, decoder 30 may generate an output video stream without loop filtering unit 320. For example, the non-transform based decoder 30 may directly inverse quantize the residual signal of some blocks or frames without the inverse transform processing unit 312. In another implementation, the inverse quantization unit 310 and the inverse transform processing unit 312 may be combined into one unit in the video decoder 30.
It should be understood that in the encoder 20 and the decoder 30, the processing result of the current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector derivation, or loop filtering, the processing result of interpolation filtering, motion vector derivation, or loop filtering may be further operated, for example, a clip (clip) or shift (shift) operation.
It should be noted that the derived motion vector of the current block (including but not limited to the control point motion vector of affine mode, sub-block motion vectors of affine mode, planar mode and ATMVP mode, temporal motion vector, etc.) may be further operated. For example, the value of the motion vector is limited to a predefined range according to the representation bits of the motion vector. If the representation bits of the motion vector are bitDepth, the range is-2 ^ (bitDepth-1) to 2^ (bitDepth-1) -1, where "^" represents the exponent. For example, if bitDepth is set to 16, the range is-32768 ~ 32767; if the bitDepth is set to 18, the range is-131072-131071. For example, the values of the derived motion vectors (e.g. the MVs of 4 x 4 sub-blocks in an 8 x 8 block) are restricted such that the maximum difference between the integer part of the 4 x 4 sub-blocks MVs does not exceed N pixels, e.g. 1 pixel. Two methods of limiting the motion vector according to bitDepth are provided herein.
The method comprises the following steps: removing the Most Significant Bit (MSB) of overflow by smoothing operation
ux=(mvx+2bitDepth)%2bitDepth (1)
mvx=(ux>=2bitDepth-1)?(ux–2bitDepth):ux (2)
uy=(mvy+2bitDepth)%2bitDepth (3)
mvy=(uy>=2bitDepth-1)?(uy–2bitDepth):uy (4)
Wherein, mvx is the horizontal component of the motion vector of the image block or sub-block, mvy is the vertical component of the motion vector of the image block or sub-block, and ux and uy represent the median.
For example, if the value of mvx is-32769, the result value is 32767 after applying equations (1) and (2). In a computer system, decimal numbers are stored in the form of two's complement. 32769 has its two's complement 1,0111,1111,1111,1111(17 bits) and then discards the MSB, thus resulting in a two's complement of 0111,1111,1111,1111 (32767 in decimal), which is the same as the output after applying equations (1) and (2).
ux=(mvpx+mvdx+2bitDepth)%2bitDepth (5)
mvx=(ux>=2bitDepth-1)?(ux–2bitDepth):ux (6)
uy=(mvpy+mvdy+2bitDepth)%2bitDepth (7)
mvy=(uy>=2bitDepth-1)?(uy–2bitDepth):uy (8)
In the summation of mvp and mvd, the above-described operation can be applied as shown in equations (5) to (8).
The method 2 comprises the following steps: clipping values to remove overflowing MSB
vx=Clip3(–2bitDepth-1,2bitDepth-1–1,vx)
vy=Clip3(–2bitDepth-1,2bitDepth-1–1,vy)
Wherein vx is the horizontal component of the motion vector of the image block or sub-block, vy is the vertical component of the motion vector of the image block or sub-block; x, y and z correspond to the three input values of the MV correction process, and the function Clip3 is defined as follows:
Figure BDA0003520924860000181
FIG. 4 is a block diagram of a video coding apparatus 400 according to an embodiment of the present invention. Video coding apparatus 400 is suitable for implementing the disclosed embodiments described herein. In one embodiment, video coding device 400 may be a decoder, such as video decoder 30 of fig. 1A, or an encoder, such as video encoder 20 of fig. 1A.
The video decoding apparatus 400 includes an ingress port 410 (or an input port 410) and a reception unit (Rx) 420 for receiving data, a processor, a logic unit, or a Central Processing Unit (CPU) 430 for processing data, a transmission unit (Tx) 440 and an egress port 450 (or an output port 450) for transmitting data, and a memory 460 for storing data. Video coding device 400 may also include optical-to-electrical (OE) and electro-optical (EO) components coupled to ingress port 410, reception unit 420, transmission unit 440, and egress port 450, for egress or ingress of optical or electrical signals.
The processor 430 is implemented by hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. Processor 430 is in communication with ingress port 410, receiver unit 420, transmit unit 440, egress port 450, and memory 460. Processor 430 includes a decode module 470. Coding module 470 implements the embodiments disclosed above. For example, decode module 470 performs, processes, prepares, or provides various decode operations. Thus, substantial improvements are provided to the functionality of video coding apparatus 400 by coding module 470 and affect the switching of video coding apparatus 400 to different states. Alternatively, decode module 470 may be implemented as instructions stored in memory 460 and executed by processor 430.
Memory 460, which may include one or more disks, tape drives, and solid state drives, may serve as an over-flow data storage device for storing programs when such programs are selected for execution, and for storing instructions and data that are read during program execution. For example, the memory 460 may be volatile and/or non-volatile, and may be read-only memory (ROM), Random Access Memory (RAM), ternary content-addressable memory (TCAM), and/or Static Random Access Memory (SRAM).
Fig. 5 is a simplified block diagram of an apparatus 500 provided by an exemplary embodiment, which apparatus 500 may be used as either or both of source device 12 and destination device 14 in fig. 1A.
The processor 502 in the apparatus 500 may be a central processor. Alternatively, processor 502 may be any other type of device or devices now or later developed that is capable of manipulating or processing information. Although the disclosed implementations may be implemented using a single processor, such as processor 502 shown, using more than one processor may improve speed and efficiency.
In one implementation, the memory 504 in the apparatus 500 may be a Read Only Memory (ROM) device or a Random Access Memory (RAM) device. Any other suitable type of storage device may be used for memory 504. The memory 504 may include code and data 506 that the processor 502 accesses over the bus 512. Memory 504 may also include an operating system 508 and application programs 510, with application programs 510 including at least one program that causes processor 502 to perform the methods described herein. For example, applications 510 may include applications 1 through N, including video coding applications that perform the methods described herein.
The apparatus 500 may also include one or more output devices, such as a display 518. In one example, display 518 may be a touch-sensitive display that combines the display with touch-sensitive elements that may be used to sense touch inputs. A display 518 may be coupled to the processor 502 by the bus 512.
Although the bus 512 in the apparatus 500 is described herein as a single bus, the bus 512 may include multiple buses. Further, the secondary memory 514 may be directly coupled to other components of the apparatus 500 or may be accessible over a network and may comprise a single integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Accordingly, the apparatus 500 may have a variety of configurations.
Context-Adaptive Binary Arithmetic Coding (CABAC)
Context-Adaptive Binary Arithmetic Coding (CABAC) is a form of entropy Coding used in H.264/AVC and HEVC. Entropy coding is a lossless compression scheme that compresses data using statistical properties such that the number of bits used to represent the data is logarithmically proportional to the probability of the data. For example, in compressing a string, common characters are represented by several bits, respectively, while less common characters are represented by many bits, respectively. From Shannon (Shannon)'s information theory, when compressed data is represented in bits 0,1, the optimal average code length for a character with probability p is-log 2 (p).
Fig. 8 is a schematic diagram of a CABAC entropy coding process. CABAC coding operations may be described by the following steps:
step 1: binarization method
The binarization (corresponding to the binarizer component in FIG. 8) process converts the syntax elements into a series of binary digits (b)1、b2……bn) For example, truncated unary code is used. The "binary" part of the context adaptive binary arithmetic coding refers to the binarization step.
Step 2: probabilistic model selection
For each binary digit, either the normal arithmetic coding or the bypass arithmetic coding method is selected (the selection process is represented in the figure by the normal/bypass mode switch). The bypass arithmetic coding mode indicates that the binary digit has a 50% probability of assuming a value of "1" and a 50% probability of assuming a value of "0". In other words, the probability model for binary digit coding is an equiprobable model in the bypass arithmetic coding mode.
If the second branch (normal arithmetic coding mode) is selected, the probability model (context model or probability estimation model) corresponding to the binary digit is selected first. The probability model is a number representing the probability of observing that the binary number is "1". For example, the probability estimation model may be 20%, meaning that the syntax element has a 20% probability of assuming a value of 1 and an 80% probability of assuming a value of 0.
For each binary digit to be coded in the normal arithmetic coding mode there is at least one associated context model (probability model). The selection of a probabilistic model is referred to as context modeling. In some cases, the associated context models corresponding to binary digits may exceed N > 1. One of the N sets of context models is selected at a time according to previously coded syntax elements. This process is called context switching. For example, coding syntax element intra _ luma _ not _ player _ flag, 1 of N-2 context models may be selected according to the rule:
select the first context model if the current block applies an intra sub-partition (ISP) coding mode.
Select the second context model if the current block does not apply intra sub-partition coding mode.
intra _ luma _ not _ player _ flag-0 indicates that the current coding block is coded in intra-plane prediction mode. intra _ luma _ not _ player _ flag 1 indicates that the current coding block is not coded in intra-frame planar prediction mode.
As shown in fig. 8, there may be multiple probability models stored in the context memory. Each context model is used in the decoding process of binary digits. Sometimes multiple context models are needed because the probability of a number becoming 0 (or 1) may be different in each context model. Exploiting this difference may result in a reduction of the entropy of the encoded numbers, i.e. a greater compression may be achieved. For example, assume that the probabilities of intra _ luma _ not _ player _ flag becoming 0 and 1 are 50% each. Furthermore, the current block has a 50% probability of applying ISP and a 50% probability of not applying ISP. However, in the block to which the ISP is applied, the probability that the flag intra _ luma _ not _ player _ flag becomes 1 is 75%, and in the block to which the ISP is not applied, the probability that the flag intra _ luma _ not _ player _ flag becomes 1 is 25%.
In this case, if only one context model is used, the entropy is 1
Entropy=–(0.5*log0.5+0.5*log0.5)=1
However, if two context models are used, the entropy is 0.811
Entropy=0.5*EntropyISP+0.5*Entropynon-ISP
EntropyISP=–(0.25*log0.25+0.75*log0.75)=0.811
Entropynon-ISP=–(0.75*log0.75+0.25*log0.25)=0.811
For each number encoded using conventional CABAC, it is addressed using a unique context index (ctxIdx) in CABAC, corresponding to the first context model it is associated with. If multiple contexts are defined, then specific context derivation rules are defined. For each associated context, some initialization parameters to estimate its initial probability distribution, including I, P and the initialization parameters of the B-frames, and a parameter called window size, are needed to control the adaptation speed in CABAC. For more details, refer to High Efficiency Video Coding (HEVC), published in 2014 by viviviinene Sze, Madhukar Budagavi, Gary j. Algorithms and Architectures (High Efficiency Video Coding (HEVC): Algorithms and Architectures).
And step 3: arithmetic coding
Binary digits are encoded using arithmetic coding according to a selected coding mode (bypass coding or normal arithmetic coding) and a selected probability estimation model (context model). Arithmetic coding is a lossless entropy coding method, as explained in (https:// en. wikipedia. org/wiki/arithmetric _ coding). Arithmetic coding operations require the probability (probability model, probability estimation model or context model) of the occurrence of a symbol. A probability model for encoding the binary digits is obtained according to step 2. The probability model is used in such a way that low probability symbols are encoded using more bits, while high probability symbols are encoded using fewer bits. For example, if the probability model is 50%, then a value of 1 and a value of 0 would be encoded using an equal number of bits. However, if the probability model is 20%, more bits are required to encode a value of 1 than a value of 0. With this scheme, the total number of bits required to encode many binary digits is minimized.
And 4, step 4: probabilistic model update
After the binary digit encoding is completed, the context model for the binary digit encoding is updated accordingly. For example, if the nth context model is used during the encoding of a binary digit, and if the context model represents a probability of observing 1 of 20%, then the probability model increases if the value of the binary digit is 1 (thus the probability of observing 1 is greater than 20%). On the other hand, if the value of the binary digit is 0, the probability model decreases (so the probability of observing a 1 is less than 20%). The "adaptation" part of the context adaptive binary arithmetic coding refers to the probability model updating step. It should be noted that step 4 (probability model update) is only applicable to the conventional arithmetic coding mode of CABAC, and is not applicable to the bypass coding mode of CABAC. In the bypass coding mode, the probability model used always represents 50% (the probability of observing a 1 or 0 is equal). On the other hand, the probability model in the conventional arithmetic coding mode is updated to capture the statistical variance in the associated binary digits.
The decoding process of CABAC uses the 4 steps described above in a similar manner. Further, for more detailed information about CABAC, see the example in (https:// en. wikipedia. org/wiki/Context-adaptive _ binding _ arithmetric _ coding).
It should be noted that the terms context model, probability model, and probability estimation model are used as synonyms in the present invention.
Geometric partitioning and geometric partitioning landmarks
In JFET-O0489, a geometric partitioning pattern is proposed. Geometric partitioning mode (GEO) is a partitioning method as an extension of the current Triangle Prediction Mode (TPM).
In the jfet-L conference held by australia, the VVC draft adopts triangulation Mode (TPM) encoding. TPM may be used for unidirectional prediction blocks not smaller than 8 x 8 in order to balance complexity with bi-directional inter-prediction block coding. The TPM divides a rectangular coding block into two triangular prediction blocks, whose diagonal or anti-diagonal directions are shown on the left side of fig. 7. The entire block residual is encoded for the TPM; the sub-block transform (SBT) of the inter-predicted CU is not used for the TPM.
The geometric partitioning schema is an extension of the existing TPM schema. The proposed technical scheme further expands the flexibility of inter-block non-rectangular division by using the concept of geometric division (GEO) and introduces a specific version of sub-block transformation for the inter-non-rectangular CU.
For example, the right side of fig. 7 shows some examples of geometric partitioning patterns. The dividing line may be characterized by an angle variable and a distance variable.
The geometric partition mode flag is used to indicate whether the current coding block (or the current block) uses a geometric partition mode. When the geometric partitioning application condition is satisfied, each coding block (or block) includes a geometric mode flag having a value of 0 or a value of 1. In jfet-O0489, a geometric partitioning mode may be used when the coded block is larger than 8 × 8 luma samples.
The process of resolving the geometric partitioning flag from the binary code stream is to use the CABAC method described above. It is mentioned in the context of CABAC that a context model is used to decode a binary code stream into tokens. In JFET-O0489, 3 context models are used to decode the geometric partitioning flag from the binary code stream. The context model index (ctxIdx) is derived as follows:
context model index 0: the derivation is made when neither the left nor the upper neighbors of the current coding block use the geometric partitioning mode. The probability that the current block uses geometric partitioning is small. The positions of the left and upper neighbors are shown in fig. 6.
Context model index 1: derived when one of a left-neighbor block and an upper-neighbor block of a current coding block uses a geometric partitioning mode. The probability that the current block uses geometric partitioning is medium.
Context model index 2: derived when both the left-neighbor and the upper-neighbor of the current coding block use the geometric partitioning mode. The probability that the current block uses geometric partitioning is large.
It is mentioned in the CABAC context that the context model is designed based on the probability of occurrence of the landmarks. Under certain conditions, the appearance of the geometric partitioning flag may be different. The following embodiments design a new context model index derivation method for decoding the geometric partitioning flag.
First embodiment
According to this embodiment, the geometric partitioning flag is still decoded from the binary code stream using 3 context models in the CABAC decoding process.
As mentioned earlier, the geometric partitioning mode is an extension of the existing triangulation mode, and it is reasonable to add TPM mode in the context modeling derivation.
In one example of the use of a magnetic resonance imaging system,
the context model index of the geometric partitioning flag is derived as follows:
context model index 0: derived when neither the left nor the above neighbor of the current coding block (or may be referred to as current block) uses geometric partition mode or triangulation mode. The positions of the left and upper neighbors are shown in fig. 6.
Context model index 1: derived when one of a left-neighbor block and an upper-neighbor block of a current coding block uses a geometric partition mode or a triangulation mode.
Context model index 2: derived when both the left-neighbor and the upper-neighbor of the current coding block use geometric partition mode or triangulation mode.
In one implementation, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=condL+condA
ctxInc is a context model index; condL indicates whether the left neighbor block uses a geometric division mode or a triangulation mode, if the left neighbor block uses the geometric division mode or the triangulation mode, the condL is equal to 1; if the left neighbor block uses neither the geometric nor the triangulation mode, condL is equal to 0; condA indicates whether the upper neighbor block uses a geometric division mode or a triangulation mode, and if the upper neighbor block uses the geometric division mode or the triangulation mode, condA is equal to 1; condA equals 0 if the upper neighboring block uses neither the geometric nor the triangulation mode.
In another implementation, using the availability of the left and upper neighboring blocks in deriving the context model index, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=(condL&&availableL)+(condA &&availableA )
availableL indicates whether the left neighbor block is available, and if the left neighbor block is available, availableL is equal to 1; if the left neighbor block is not available, availableL equals 0; availableA indicates whether the upper neighboring block is available, and if the upper neighboring block is available, availableA is equal to 1; availableA equals 0 if the upper neighbor block is not available.
According to this example, whether the neighbor block uses the geometric division mode may be determined by checking whether the geometric division flag of the neighbor block is 1.
Alternatively, whether the neighbor block uses the geometric division mode may be determined by checking whether the neighbor block is allowed to use the geometric division mode, and in one example, blocks smaller than 8 × 8 are not allowed to use the geometric division mode.
Whether the neighbor block uses the triangle prediction mode may be determined by checking whether a triangle prediction flag of the neighbor block is 1.
Alternatively, whether the neighbor block uses the triangular prediction mode is determined by checking whether the neighbor block is allowed to use the triangular prediction mode, and in one example, blocks smaller than 8 × 8 are not allowed to use the geometric division mode.
A corresponding generic decoding method implemented by a decoding device is shown in fig. 10, the method comprising:
1001: and acquiring a code stream.
1002: the context model index of the current block is obtained according to at least one piece of information of a triangular partition mode and a geometric partition mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block. The information indicates whether the neighbor block uses a geometric partition mode or a triangulation mode, and specifically indicates whether at least one of the left neighbor block and the upper neighbor block uses the geometric partition mode or the triangulation mode, and if so, indicates whether one of the left neighbor block and the upper neighbor block or both use the geometric partition mode or the triangulation mode. And obtaining context model indexes according to the information.
1003: and acquiring the value of a geometric partition mark of the current block from the code stream according to the context model index of the current block, wherein the geometric partition mark of the current block indicates whether the current block uses a geometric partition mode.
1004: decoding the current block according to the value of the geometric partition flag.
Second embodiment
According to the second embodiment, the 4 context models are still used to decode the geometric partitioning flag from the binary code stream during CABAC decoding.
Since the probability of occurrence of geometric partitioning depends on the aspect ratio of the current block, according to the present embodiment, the other 3 context model index derivations are based on neighboring blocks and the 4 th context model index derivations are based on the aspect ratio of the current block.
In one example of the use of a magnetic resonance imaging system,
context model index 0: derived when neither the left-neighbor nor the upper-neighbor of the current coding block uses the geometric partitioning mode. The positions of the left and upper neighbors are shown in fig. 6.
Context model index 1: derived when one of a left-neighbor block and an upper-neighbor block of a current coding block uses a geometric partitioning mode.
Context model index 2: derived when both the left-neighbor and the upper-neighbor of the current coding block use the geometric partitioning mode.
Context model index 3: when the aspect ratio of the current coding block is greater than a predefined threshold (e.g., 2, 4, 8, etc.) (not dependent on the neighbor block). In one implementation, the ratio may be set to 2nAnd n is a positive integer.
It should be noted that the context model indexes 0 to 2 are obtained when the aspect ratio of the current coding block is equal to or smaller than a predefined threshold. That is to say, in the decoding process, it is first determined whether the aspect ratio of the current coding block is greater than a predefined threshold, and a context model index is obtained according to the determination result.
The aspect ratio is an aspect ratio of the current block, and may be obtained by the following equation, for example:
Ratio=1<<abs(log2(width)–log2(height)),
where height and width are the height and width of the current coding block, Abs () is the absolute value operator, log2() is the base-2 logarithm, and < < is the left shift operation.
In one implementation, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=Ratio>43:(condL +condA )
ctxInc is a context model index; condL indicates whether the left neighbor block uses a geometric division mode, and if the left neighbor block uses the geometric division mode, condL is equal to 1; if the left neighbor block does not use the geometric partition mode, condL is equal to 0; condA indicates whether the upper neighbor block uses a geometric division mode, and if the upper neighbor block uses the geometric division mode, condA is equal to 1; if the upper neighbor block does not use the geometric partition mode, condA is equal to 0.
In another implementation, using the availability of the left and upper neighboring blocks in deriving the context model index, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=Ratio>43:(condL&&availableL)+(condA &&availableA )
availableL indicates whether the left neighbor block is available, and if the left neighbor block is available, availableL is equal to 1; if the left neighbor block is not available, availableL equals 0; availableA indicates whether the upper neighboring block is available, and if the upper neighboring block is available, availableA is equal to 1; availableA equals 0 if the upper neighbor block is not available.
Third embodiment
The context model index derivation method of the geometric partitioning mode of the first embodiment and the second embodiment may be combined.
In other words, in the CABAC decoding process, the geometric partitioning flag is still decoded from the binary code stream using 4 context models.
The context model index is derived as:
context model index 0: and deriving when the left adjacent block and the upper adjacent block of the current coding block do not use a geometric division mode or a triangulation mode. The positions of the left and upper neighbors are shown in fig. 6.
Context model index 1: derived when one of a left-neighbor block and an upper-neighbor block of a current coding block uses a geometric partition mode or a triangulation mode.
Context model index 2: derived when both the left-neighbor and the upper-neighbor of the current coding block use geometric partition mode or triangulation mode.
Context model index 3: when the aspect ratio of the current coding block is larger than a predefined threshold (e.g. 4) (not dependent on the neighbor block).
It should be noted that the context model indexes 0 to 2 are obtained when the aspect ratio of the current coding block is equal to or smaller than a predefined threshold. That is to say, in the decoding process, it is first determined whether the aspect ratio of the current coding block is greater than a predefined threshold, and a context model index is obtained according to the determination result.
The aspect ratio is an aspect ratio of the current block, and may be obtained by the following equation, for example:
Ratio=1<<abs(log2(width)–log2(height)),
where height and width are the height and width of the current coding block, Abs () is the absolute value operator, log2() is the base-2 logarithm, and < < is the left shift operation. For example, if the current block is 16 pixels wide and 4 pixels high, this will give Ratio 1< < abs (4-2) such that the result of the Ratio is 4.
In one implementation, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=Ratio>43:(condL+condA )
ctxInc is a context model index; condL indicates whether the left neighbor block uses a geometric division mode or a triangulation mode, if the left neighbor block uses the geometric division mode or the triangulation mode, the condL is equal to 1; if the left neighbor block uses neither the geometric nor the triangulation mode, condL is equal to 0; condA indicates whether the upper neighbor block uses a geometric division mode or a triangulation mode, and if the upper neighbor block uses the geometric division mode or the triangulation mode, condA is equal to 1; condA equals 0 if the upper neighboring block uses neither the geometric nor the triangulation mode. If the aspect ratio is greater than 4 (in this particular example), the computed result of the context model index ctxInc is equal to 3, regardless of the values of condL and condA.
In another implementation, using the availability of the left and upper neighboring blocks in deriving the context model index, the context model index of the geometric partition flag of the current block may be derived according to the following equation:
ctxInc=Ratio>43:(condL&&availableL)+(condA &&availableA )
availableL indicates whether the left neighbor block is available, and if the left neighbor block is available, availableL is equal to 1; if the left neighbor block is not available, availableL equals 0; availableA indicates whether the upper neighboring block is available, and if the upper neighboring block is available, availableA is equal to 1; availableA equals 0 if the upper neighbor block is not available.
Fourth embodiment
A decoding method implemented by a decoding device is shown in fig. 9, the method comprising:
901: and acquiring a code stream.
902: the aspect ratio of the current block is obtained.
The aspect ratio is the ratio of the width and height of the current block, and in one implementation, the aspect ratio may be obtained according to the following equation:
Ratio=1<<abs(log2(width)–log2(height))。
height and width in the equation are the height and width of the current block, abs () is the absolute value operator, log2() is the base-2 logarithm, and < < is the left shift operation.
903: and acquiring a context model index of the current block according to the aspect ratio.
-if the aspect ratio is greater than a predefined threshold, obtaining a context model index 3 of the current block.
And if the aspect ratio is equal to or less than a predefined threshold, acquiring the context model index of the current block according to at least one piece of information of a triangular partition mode and a geometric partition mode of a neighboring block adjacent to the current block, wherein the neighboring block comprises a left neighboring block and an upper neighboring block.
The details of obtaining the context model index are similar to those of embodiment 2 and embodiment 3.
904: and acquiring the value of a geometric partition mark of the current block from the code stream according to the context model index of the current block, wherein the geometric partition mark of the current block indicates whether the current block uses a geometric partition mode.
905: decoding the current block according to the value of the geometric partition flag.
Fig. 11 shows a decoder 1100 provided by the present invention. The decoder 1100 includes one or more processors 1101 and a non-transitory computer-readable storage medium 1102. A non-transitory computer readable storage medium 1102 is coupled to the one or more processors 1101 and stores a program for execution by the one or more processors, wherein the decoder 1100 is configured to perform the method according to one of the aspects or implementations of the invention when the program is executed by the one or more processors 1101. During startup, the one or more processors 1101 receive a program from the non-transitory computer-readable storage medium 1102.
Fig. 12 shows another decoder 1200 provided by the present invention. The decoder 1200 comprises an acquisition module 1201 and a decoding module 1202.
According to one aspect, the obtaining module 1201 is configured to: acquiring a code stream; acquiring the aspect ratio of the current block; obtaining a context model index of the current block according to the aspect ratio; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; the decoding module 1202 is configured to decode the current block according to the value of the geometric partition flag.
Alternatively, according to another aspect, the obtaining module 1201 is configured to: acquiring a code stream; acquiring a context model index of a current block according to at least one piece of information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block; acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode; the decoding module 1202 is configured to decode the current block according to the value of the geometric partition flag.
Mathematical operators
The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are more accurately defined, and other operations, such as exponentiation and real-valued division, are defined. The numbering and counting specifications typically start with 0, e.g., "first" corresponds to 0 th, "second" corresponds to 1 st, and so on.
Arithmetic operator
The following arithmetic operators are defined as follows:
Figure BDA0003520924860000263
logical operators
The following logical operators are defined as follows:
boolean logical AND of x & & y x and y "
Boolean logical "OR" of x | y x and y "
| A Boolean logic "not"
Z if x is TRUE (TRUE) or not equal to 0, then the value of y is returned, otherwise, the value of z is returned.
Relational operators
The following relational operators are defined as follows:
is greater than
Greater than or equal to
< less than
Less than or equal to
Equal to
| A Is not equal to
When a relational operator is applied to a syntax element or variable that has been assigned a value of "na" (not applicable), the value "na" is a different value of the syntax element or variable. The value "na" is not equal to any other value.
Bitwise operator
The following bitwise operator is defined as follows:
and is pressed. When an integer parameter is operated on, a two-complement representation of the integer value is operated on. When operating on a binary parameter, if the binary parameter contains fewer bits than another parameter, the shorter parameter is extended by adding more significant bits equal to 0.
| OR in bits. When an integer parameter is operated on, a two-complement representation of the integer value is operated on. When operating on a binary parameter, if the binary parameter contains fewer bits than another parameter, the shorter parameter is extended by adding more significant bits equal to 0.
And ^ exclusive OR by bit. When an integer parameter is operated on, a two-complement representation of the integer value is operated on. When operating on a binary parameter, if the binary parameter contains fewer bits than another parameter, the shorter parameter is extended by adding more significant bits equal to 0.
The two's complement integer of x > > y x represents an arithmetic right shift by y binary digits. This function is defined only if y is a non-negative integer value. The result of the right shift is that the bits shifted into the Most Significant Bit (MSB) are equal to the MSB of x before the shift operation.
The two's complement integer of x < < y x represents an arithmetic left shift by y binary digits. This function is defined only if y is a non-negative integer value. The result of the left shift is that the bit shifted into the Least Significant Bit (LSB) is equal to 0.
Assignment operators
The following arithmetic operators are defined as follows:
operator for value assignment
Plus + plus, i.e., x + + equals x ═ x + 1; when used in the array index, is equal to the value of the variable prior to the increment operation.
-minus, i.e., x — equals x ═ x-1; when used in the array index, is equal to the value of the variable prior to the subtraction operation.
Plus is increased by the specified amount, i.e., x + ═ 3 equals x +3, and x + ═ (-3) equals x + (-3).
By a specified amount, i.e., x-3 equals x-3 and x-3 equals x- (-3).
Method of representation of range
The following notation is used to illustrate the range of values:
y.. z x takes integer values from y to z (including y and z), where x, y and z are integers and z is greater than y.
Mathematical function
The following mathematical functions are defined:
Figure BDA0003520924860000271
asin (x) triangular arcsine function, operating on parameter x, x ranges from-1.0 to 1.0 inclusive, and output values range from-pi ÷ 2 to pi ÷ 2 inclusive, in radians.
Atan (x) triangular arctangent function, operating on parameter x, outputs values in the range-pi ÷ 2 to pi ÷ 2 (inclusive) in radians.
Figure BDA0003520924860000281
Ceil (x) is the smallest integer greater than or equal to x.
Clip1Y(x)=Clip3(0,(1<<BitDepthY)–1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)–1,x)
Figure BDA0003520924860000282
Cos (x) trigonometric cosine function, which operates on the parameter x in radians.
Floor (x) is less than or equal to the largest integer of x.
Figure BDA0003520924860000283
Ln (x) the natural logarithm of x (base e logarithm, where e is the natural logarithm base constant 2.718281828 … …).
Log2(x) x base 2 logarithm.
Log10(x) x base 10 logarithm.
Figure BDA0003520924860000284
Figure BDA0003520924860000285
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
Figure BDA0003520924860000286
Sin (x) trigonometric sine function, calculated on the parameter x, in radians.
Figure BDA0003520924860000287
Swap(x,y)=(y,x)
Tan (x) the trigonometric tangent function, calculated on the parameter x, in radians.
Priority order of operations
When no brackets are used to explicitly indicate the order of priority in an expression, the following rule applies:
-the operation of high priority is calculated before any operation of low priority.
Operations of the same priority are computed sequentially from left to right.
The following table illustrates the priority of the operation from highest to lowest, with higher priority being given to higher positions in the table.
For operators also used in the C programming language, the operator priority order in this specification is the same as the priority order in the C programming language.
Table: operation priority from highest (table top) to lowest (table bottom)
Figure BDA0003520924860000291
Text description of logical operations
In the text, the statements of logical operations are described in mathematical form as follows:
if(condition 0)
statement 0
else if(condition 1)
statement 1
...
information remark on else/remaining conditions
statement n
The following may be used for description:
… … is as follows/… …:
if condition 0, then statement 0
Else, if condition 1, statement 1
–……
Else (information remark of remaining condition), then statement n
Each of the "if … … else, if … … else, … …" states by "if … …" followed by "… … as follows: or … … is then: and leading out. "if … …, otherwise, if … … else, … …" always being the last condition "otherwise, … …". By assigning "… … as follows: the OR "… … then" matches the end statement "… … else" to identify the statement with "if … … else if … … else … …" in between.
In the text, the statements of logical operations are described in mathematical form as follows:
if(condition 0a&&condition 0b)
statement 0
else if(condition 1a||condition 1b)
statement 1
...
else
statement n
the following may be used for description:
… … is as follows/… …:
statement 0 if all of the following conditions are true:
condition 0a
Condition 0b
Else, statement 1 if one or more of the following conditions is true:
condition 1a
Condition 1b
–……
Else, as statement n
In the text, the statements of logical operations are described in mathematical form as follows:
if(condition 0)
statement 0
if(condition 1)
statement 1
the following may be used for description:
when the condition is 0, it is statement 0
If condition 1, it is statement 1.
Although embodiments of the present invention are primarily described in terms of video coding, it should be noted that embodiments of coding system 10, encoder 20, and decoder 30 (and, accordingly, system 10), as well as other embodiments described herein, may also be used for still image processing or coding, i.e., processing or coding a single image in video coding independent of any preceding or consecutive image. In general, inter prediction units 244 (encoders) and 344 (decoders) may not be available if image processing coding is limited to only a single image 17. All other functions (also referred to as tools or techniques) of video encoder 20 and video decoder 30 are equally available for still image processing, such as residual calculation 204/304, transform 206, quantization 208, inverse quantization 210/310, (inverse) transform 212/312, partition 262/362, intra prediction 254/354 and/or loop filtering 220/320, entropy encoding 270, and entropy decoding 304.
Embodiments of encoder 20 and decoder 30, etc., and functions described herein in relation to encoder 20 and decoder 30, etc., may be implemented using hardware, software, firmware, or any combination thereof. If implemented using software, the various functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. The computer readable medium may comprise a computer readable storage medium, corresponding to a tangible medium, such as a data storage medium, or any communication medium including a medium that facilitates transfer of a computer program from one place to another (e.g., according to a communication protocol). In this manner, the computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the techniques described in this disclosure. The computer program product may include a computer-readable medium.
By way of example, and not limitation, computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Further, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source via a coaxial cable, fiber optic cable, twisted pair, Digital Subscriber Line (DSL), or wirelessly, e.g., infrared, wireless, and microwave, the software is also included in the defined medium. It should be understood, however, that the computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory tangible storage media. Disk and disc (disc), as used herein, includes Compact Disc (CD), laser disc, optical disc, Digital Versatile Disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs usually reproduce data optically with lasers. Combinations of the above may also be included within the scope of computer-readable media.
The instructions may be executed by one or more processors, such as one or more Digital Signal Processors (DSPs), general purpose microprocessors, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Thus, the term "processor," as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the various functions described herein may be provided within dedicated hardware and/or software modules for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques may be implemented entirely within one or more circuits or logic elements.
The techniques of this disclosure may be implemented in various devices or apparatuses including a wireless handset, an Integrated Circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to emphasize functional aspects of means for performing the disclosed techniques, but do not necessarily require realization by different hardware units. Indeed, as mentioned above, the various units may be combined in a codec hardware unit, in combination with suitable software and/or firmware, or provided by a collection of interoperating hardware units (including one or more processors as described above).

Claims (30)

1. A decoding method implemented by a decoding apparatus, comprising:
acquiring a code stream;
acquiring the aspect ratio of the current block;
obtaining a context model index of the current block according to the aspect ratio;
acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode;
decoding the current block according to the value of the geometric partition flag.
2. The method of claim 1, wherein the aspect ratio is a ratio of a width and a height of the current block.
3. Method according to claim 1 or 2, wherein the aspect ratio is obtained according to the following equation:
Ratio=1<<abs(log2(width)–log2(height)),
where height and width in the equation are the height and width of the current block, abs () is an absolute value operator, log2() is a base-2 logarithm, and < < is a left shift operation.
4. The method of any of claims 1 to 3, wherein the obtaining the context model index of the current block according to the aspect ratio comprises:
-if the aspect ratio is greater than a predefined threshold, obtaining a context model index 3 of the current block.
5. The method of any of claims 1 to 4, wherein the obtaining the context model index of the current block according to the aspect ratio comprises:
and if the aspect ratio is equal to or less than a predefined threshold, acquiring the context model index of the current block according to at least one piece of information of a triangular partition mode and a geometric partition mode of a neighboring block adjacent to the current block, wherein the neighboring block comprises a left neighboring block and an upper neighboring block.
6. The method according to claim 4 or 5, wherein the predefined threshold is 2nAnd n is a positive integer.
7. The method according to any of claims 4 to 6, wherein the predefined threshold is 4.
8. A decoding method implemented by a decoding apparatus, comprising:
acquiring a code stream;
acquiring a context model index of a current block according to at least one piece of information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block;
acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode;
decoding the current block according to the value of the geometric partition flag.
9. The method of any one of claims 5 to 8, wherein the obtaining the context model index of the current block according to at least one of information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block comprises:
and when neither the left adjacent block nor the upper adjacent block uses a geometric partition mode or a triangulation mode, obtaining a context model index 0 of the current block.
10. The method of any one of claims 5 to 9, wherein the obtaining the context model index of the current block according to at least one of information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block comprises:
when one of the left neighboring block and the upper neighboring block uses a geometric partition mode or a triangulation mode, obtaining a context model index 1 of the current block.
11. The method of any one of claims 5 to 10, wherein the obtaining the context model index of the current block according to at least one of information of a triangulation mode and a geometric partitioning mode of a neighboring block adjacent to the current block comprises:
and when the left adjacent block and the upper adjacent block both use a geometric partition mode or a triangulation mode, obtaining a context model index 2 of the current block.
12. The method according to any of claims 5 to 11, wherein one information of the geometric partition mode of the left neighboring block indicates whether the left neighboring block uses a geometric partition mode, and one information of the geometric partition mode of the neighboring block indicates whether the neighboring block uses a geometric partition mode.
13. The method of claim 12, wherein whether the geometric partition mode is used by the left neighboring block is determined according to a value of a geometric partition flag of the left neighboring block, or wherein whether the geometric partition mode is used by the upper neighboring block is determined according to a value of a geometric partition flag of the upper neighboring block.
14. The method of claim 12, wherein whether the left neighboring block uses the geometric partition mode is determined according to whether the left neighboring block is allowed to use the geometric partition mode, or wherein whether the neighboring block uses the geometric partition mode is determined according to whether the neighboring block is allowed to use the geometric partition mode.
15. The method of claim 14, wherein if the block size of the left neighboring block is less than 8 x 8, the left neighboring block is not allowed to use the geometric partitioning mode, or wherein if the block size of the upper neighboring block is less than 8 x 8, the upper neighboring block is not allowed to use the geometric partitioning mode.
16. The method according to any of claims 5 to 15, wherein one information of the triangulation mode of the left neighbor block indicates whether the left neighbor block uses the triangulation mode, and one information of the triangulation mode of the upper neighbor block indicates whether the upper neighbor block uses the triangulation mode.
17. The method of claim 16, wherein whether the left neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the left neighboring block, or wherein whether the upper neighboring block uses the triangulation mode is determined according to a value of a triangulation flag of the upper neighboring block.
18. The method of claim 16, wherein whether the left neighboring block uses the triangulation mode is determined according to whether the left neighboring block is allowed to use the triangulation mode, or wherein whether the upper neighboring block uses the triangulation mode is determined according to whether the upper neighboring block is allowed to use the triangulation mode.
19. The method of claim 18, wherein if the block size of the left neighboring block is less than 8 x 8, the left neighboring block is not allowed to use the triangulation mode, or wherein if the block size of the upper neighboring block is less than 8 x 8, the upper neighboring block is not allowed to use the triangulation mode.
20. A decoder (30) characterized in that it comprises processing circuitry for carrying out the method according to any one of claims 1 to 19.
21. A computer program product comprising program code for performing the method according to any one of claims 1 to 19.
22. A decoder (1100), comprising:
one or more processors (1101);
a non-transitory computer readable storage medium (1102) coupled to the one or more processors (1101) and storing a program for execution by the one or more processors, wherein the decoder is configured to perform the method of any one of claims 1-19 when the program is executed by the one or more processors.
23. A decoder (1200), comprising:
an acquisition module (1201) configured to:
acquiring a code stream;
acquiring the aspect ratio of the current block;
obtaining a context model index of the current block according to the aspect ratio;
acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode;
a decoding module (1202) for decoding the current block according to the value of the geometric partitioning flag.
24. The decoder of claim 23, wherein the obtaining module is further configured to obtain the aspect ratio according to the following equation:
Ratio=1<<abs(log2(width)–log2(height)),
where height and width in the equation are the height and width of the current block, abs () is an absolute value operator, log2() is a base-2 logarithm, and < < is a left shift operation.
25. The decoder according to claim 23 or 24, wherein the obtaining module is further configured to: -if the aspect ratio is greater than a predefined threshold, obtaining a context model index 3 of the current block.
26. The decoder according to any of the claims 23 to 25, wherein the obtaining module is further configured to: and if the aspect ratio is equal to or less than a predefined threshold, acquiring the context model index of the current block according to at least one piece of information of a triangular partition mode and a geometric partition mode of a neighboring block adjacent to the current block, wherein the neighboring block comprises a left neighboring block and an upper neighboring block.
27. A decoder (1200), comprising:
an acquisition module (1201) configured to:
acquiring a code stream;
acquiring a context model index of a current block according to at least one piece of information of a triangulation mode and a geometric division mode of an adjacent block adjacent to the current block, wherein the adjacent block comprises a left adjacent block and an upper adjacent block;
acquiring a value of a geometric partition flag of the current block from the code stream according to the context model index of the current block, wherein the geometric partition flag of the current block indicates whether the current block uses a geometric partition mode;
a decoding module (1202) for decoding the current block according to the value of the geometric partitioning flag.
28. The decoder of claim 27, wherein the obtaining module is further configured to: and when neither the left adjacent block nor the upper adjacent block uses a geometric partition mode or a triangulation mode, obtaining a context model index 0 of the current block.
29. The decoder according to claim 27 or 28, wherein the obtaining module is further configured to: when one of the left neighboring block and the upper neighboring block uses a geometric partition mode or a triangulation mode, obtaining a context model index 1 of the current block.
30. The decoder according to any of the claims 27 to 29, wherein the obtaining module is further configured to: and when the left adjacent block and the upper adjacent block both use a geometric partition mode or a triangulation mode, obtaining a context model index 2 of the current block.
CN202080060441.4A 2019-08-27 2020-08-26 Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partition flags Active CN114303380B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EPPCT/EP2019/072797 2019-08-27
EP2019072797 2019-08-27
PCT/CN2020/111338 WO2021037053A1 (en) 2019-08-27 2020-08-26 An encoder, a decoder and corresponding methods of cabac coding for the indices of geometric partition flag

Publications (2)

Publication Number Publication Date
CN114303380A true CN114303380A (en) 2022-04-08
CN114303380B CN114303380B (en) 2024-04-09

Family

ID=74684252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080060441.4A Active CN114303380B (en) 2019-08-27 2020-08-26 Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partition flags

Country Status (3)

Country Link
EP (1) EP4022925A4 (en)
CN (1) CN114303380B (en)
WO (1) WO2021037053A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230008488A1 (en) * 2021-07-07 2023-01-12 Tencent America LLC Entropy coding for intra prediction modes
WO2023239879A1 (en) * 2022-06-09 2023-12-14 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partitioning mode with adaptive blending

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019009503A1 (en) * 2017-07-07 2019-01-10 삼성전자 주식회사 Video coding method and device, video decoding method and device
US20190045225A1 (en) * 2017-08-04 2019-02-07 Google Llc Adaptation for entropy coding of blocks of image data
CN109644272A (en) * 2016-09-06 2019-04-16 高通股份有限公司 Geometric type priority for construction candidate list
WO2019098758A1 (en) * 2017-11-16 2019-05-23 한국전자통신연구원 Image encoding/decoding method and device, and recording medium storing bitstream
WO2019138998A1 (en) * 2018-01-12 2019-07-18 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method
GB201909043D0 (en) * 2019-06-24 2019-08-07 Canon Kk Residual signalling

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
CN102724493B (en) * 2011-01-18 2014-06-25 清华大学 Coding and decoding methods of intra-frame prediction modes based on image blocks and codec
MY172302A (en) * 2012-04-15 2019-11-21 Samsung Electronics Co Ltd Method and apparatus for determining reference images for inter-prediction
EP3646590A4 (en) * 2017-06-30 2020-11-18 Sharp Kabushiki Kaisha Systems and methods for geometry-adaptive block partitioning of a picture into video blocks for video coding
CN111279695B (en) * 2017-10-26 2024-03-29 韩国电子通信研究院 Method and apparatus for asymmetric subblock-based image encoding/decoding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109644272A (en) * 2016-09-06 2019-04-16 高通股份有限公司 Geometric type priority for construction candidate list
WO2019009503A1 (en) * 2017-07-07 2019-01-10 삼성전자 주식회사 Video coding method and device, video decoding method and device
US20190045225A1 (en) * 2017-08-04 2019-02-07 Google Llc Adaptation for entropy coding of blocks of image data
WO2019098758A1 (en) * 2017-11-16 2019-05-23 한국전자통신연구원 Image encoding/decoding method and device, and recording medium storing bitstream
WO2019138998A1 (en) * 2018-01-12 2019-07-18 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Encoding device, decoding device, encoding method, and decoding method
GB201909043D0 (en) * 2019-06-24 2019-08-07 Canon Kk Residual signalling

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SEMIH ESENLIK: "JVET-O0489-v2,Non-CE4: Geometrical partitioning for inter blocks" *
袁媛;郑萧桢;何芸;: "视频编码中一种新的用于几何块划分的变换结构" *

Also Published As

Publication number Publication date
WO2021037053A1 (en) 2021-03-04
EP4022925A1 (en) 2022-07-06
EP4022925A4 (en) 2022-11-16
CN114303380B (en) 2024-04-09

Similar Documents

Publication Publication Date Title
CN114650419B (en) Encoder, decoder and corresponding methods for intra prediction
CN113498605A (en) Encoder, decoder and corresponding methods using an adaptive loop filter
CN114885166B (en) Encoder, decoder and corresponding methods using compressed MV storage
CN114885158B (en) Method and apparatus for mode dependent and size dependent block level restriction of position dependent prediction combinations
CN115103184A (en) Encoder, decoder and corresponding methods using history-based motion vector prediction
CN114424567B (en) Method and apparatus for combined inter-intra prediction using matrix-based intra prediction
CN113597761A (en) Intra-frame prediction method and device
CN113411613B (en) Method for video coding image block, decoding device and coder/decoder
CN113473134B (en) Method, apparatus and storage medium for coordinating individual fusion lists of sub-block fusion candidates and intra and inter prediction techniques
CN114303380B (en) Encoder, decoder and corresponding methods for CABAC coding of indices of geometric partition flags
CN113039797A (en) Efficient indication method of CBF (cubic boron fluoride) mark
CN113330748B (en) Method and apparatus for intra prediction mode signaling
CN113228632B (en) Encoder, decoder, and corresponding methods for local illumination compensation
CN114900702B (en) Codec and corresponding method for reducing complexity of intra prediction for planar mode
CN113330741B (en) Encoder, decoder, and corresponding methods for restricting the size of a sub-partition from an intra sub-partition coding mode tool
CN115211109A (en) Encoder, decoder and corresponding methods for filter modification for generic intra prediction processes
CN113994683A (en) Encoder, decoder and corresponding methods for chroma quantization control

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
GR01 Patent grant
GR01 Patent grant