Image decoding apparatus, image decoding method, and program
By controlling the MMVD transmission precision syntax in sequence units, MMVD precision decoding of picture units is performed only in uncertain cases, which solves the problem of unnecessary decoding processing volume and bit volume in the prior art and improves processing efficiency.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-06-03
- Publication Date
- 2026-03-31
AI Technical Summary
In the existing technology, even when sps_mmvd_fullpel_only_flag is valid, ph_mmvd_fullpel_only_flag will still be decoded unnecessarily, resulting in an unnecessary increase in syntax decoding processing and bit count.
By controlling the transmission precision syntax of MMVD in sequence units, the MMVD transmission precision syntax of the frame unit is decoded only when the transmission precision of MMVD is uncertain, using either integer or fractional precision, thus reducing unnecessary syntax decoding processing and bit usage.
It enables the performance of only necessary syntax decoding under uncertain MMVD transmission precision, reducing unnecessary decoding and bit manipulation, and improving processing efficiency.
Smart Images

Figure CN115918086B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to an image decoding device, an image decoding method, and a program. Background Technology
[0002] In Non-Patent Document 1, the syntax for controlling whether the transmission precision of the merged motion vector difference (MMVD) is integer precision includes a syntax for the sequence parameter set (SPS) (sps_mmvd_fullpel_only_flag) and a syntax for the picture header (PH) (ph_mmvd_fullpel_only_flag).
[0003] Existing technical documents
[0004] Non-patent literature
[0005] Non-Patent Literature 1: Versatile Video Coding (Draft 9), JVET-R2001 Summary of the Invention
[0006] The problem that the invention aims to solve
[0007] However, in Non-Patent Document 1, there is a problem that even when sps_mmvd_fullpel_only_flag is valid (i.e., when the transmission precision of MMVD is specified as integer precision in sequence units), it is specified that ph_mmvd_fullpel_only_flag should be decoded.
[0008] That is, in Non-Patent Document 1, there is a problem that even though the transmission precision of MMVD is specified as integer precision by sps_mmvd_fullpel_only_flag, ph_mmvd_fullpel_only_flag is still unnecessarily decoded.
[0009] Therefore, the present invention was made in view of the above-mentioned problems, and its object is to provide an image decoding apparatus, image decoding method and program that can decode the syntax that controls the transmission precision of MMVD in sequence units, and decode the syntax that controls the transmission precision of MMVD in frame units only when the transmission precision of the MMVD is uncertain (i.e., either fractional precision or integer precision can be used as the transmission precision of the MMVD), thereby reducing the amount of unnecessary syntax decoding processing and bit volume.
[0010] Methods for solving problems
[0011] The first feature of the present invention is an image decoding apparatus, the main feature of which is that it includes a decoding unit configured to decode a first syntax for transmitting the fused motion vector difference in a sequence of decoded objects with control precision. When the value of the first syntax is "1", it indicates that the first syntax can use integer precision as the transmission precision of the fused motion vector difference in the sequence of decoded objects. When the value of the first syntax is "0", it indicates that the first syntax uses fractional precision as the transmission precision of the fused motion vector difference in the sequence of decoded objects.
[0012] The second feature of the present invention is an image decoding method, the main point of which is to have a step of setting a first syntax to control the transmission precision of the fused motion vector difference in the sequence of the decoded object. When the value of the first syntax is "1", it means that the first syntax can use integer precision as the transmission precision of the fused motion vector difference in the sequence of the decoded object. When the value of the first syntax is "0", it means that the first syntax uses fractional precision as the transmission precision of the fused motion vector difference in the sequence of the decoded object.
[0013] The third feature of the present invention is a program that enables a computer to function as an image decoding device. The main point is that the image decoding device has a decoding unit configured to decode a first syntax that controls the transmission precision of the fused motion vector difference in a sequence of decoded objects. When the value of the first syntax is "1", it indicates that the first syntax can use integer precision as the transmission precision of the fused motion vector difference in the sequence of decoded objects. When the value of the first syntax is "0", it indicates that the first syntax uses fractional precision as the transmission precision of the fused motion vector difference in the sequence of decoded objects.
[0014] Invention Effects
[0015] According to the present invention, an image decoding apparatus, image decoding method, and program can be provided that can decode the syntax that controls the transmission precision of MMVD in sequence units, and decode the syntax that controls the transmission precision of MMVD in frame units only when the transmission precision of the MMVD is uncertain (i.e., either fractional precision or integer precision can be used as the transmission precision of the MMVD), thereby reducing the amount of unnecessary syntax decoding processing and bit volume.
[0016] Brief description of the attached diagram
[0017] Figure 1 This is a diagram illustrating an example of the structure of an image processing system 1 according to one embodiment.
[0018] Figure 2This is a diagram illustrating an example of the functional blocks of an image encoding apparatus 100 according to one embodiment.
[0019] Figure 3 This is a diagram illustrating an example of the functional blocks of an image decoding apparatus 200 according to one embodiment.
[0020] Figure 4 This is an example of the structure of encoded data (bit stream) received by the decoding unit 210 of the image decoding apparatus 200 according to one embodiment.
[0021] Figure 5 This is an example of control data contained within the SPS211.
[0022] Figure 6 This is an example of the control data contained in PPS212.
[0023] Figure 7 This is an example of control data contained in image header 213.
[0024] Figure 8 This is an example of the control data contained in slice headers 214A / 214B.
[0025] Figure 9 This is a diagram illustrating a variation of one implementation method.
[0026] Figure 10 This is a diagram illustrating a variation of one implementation method.
[0027] Figure 11 This is a diagram illustrating a variation of one implementation method.
[0028] Figure 12 This is a diagram illustrating an example of the functional blocks of the inter-frame prediction unit 241 according to one embodiment.
[0029] Figure 13 This is a diagram illustrating a method for correcting the motion vector of the MMVD unit 241A3 according to one embodiment.
[0030] Figure 14 This is a diagram illustrating a method for correcting the motion vector of the MMVD unit 241A3 according to one embodiment. Detailed Implementation
[0031] The following is a reference to the appendix. Figure 1 The embodiments of the present invention will be described below. Furthermore, the constituent elements in the following embodiments can be appropriately substituted with known constituent elements, and various modifications, including combinations with other known constituent elements, are possible. Therefore, the inventive content described in the technical solutions is not limited to the embodiments described below.
[0032] <First Implementation Method>
[0033] The following is for reference Figures 1-12 The point cloud processing system 10 according to the first embodiment of the present invention will be described. Figure 1 This is a diagram illustrating the point cloud processing system 10 described in the embodiments of this invention.
[0034] like Figure 1 As shown, the image processing system 10 according to this embodiment includes an image encoding device 100 and an image decoding device 200.
[0035] The image encoding device 100 is configured to generate encoded data by encoding an input image signal (image). The image decoding device 200 is configured to generate an output image signal by decoding the encoded data.
[0036] Encoded data can be transmitted from the image encoding device 100 to the image decoding device 200 via a transmission path. Encoded data can also be provided from the image encoding device 100 to the image decoding device 200 after being stored in a storage medium.
[0037] (Image encoding device 100)
[0038] The following is for reference Figure 2 The image encoding apparatus 100 involved in this embodiment will be described. Figure 2 This diagram illustrates an example of the functional blocks of the image encoding apparatus 100 according to this embodiment.
[0039] like Figure 2 As shown, the image encoding apparatus 100 includes an inter-frame prediction unit 111, an intra-frame prediction unit 112, a subtractor 121, an adder 122, a transform / quantization unit 131, an inverse transform / inverse quantization unit 132, an encoding unit 140, a loop filtering processing unit 150, and a frame buffer 160.
[0040] The inter-frame prediction unit 111 is configured to generate a prediction signal through inter-frame prediction.
[0041] Specifically, the inter-frame prediction unit 111 is configured to identify a reference block contained in a reference frame by comparing a target frame with a reference frame stored in a frame buffer 160, and to determine a motion vector (mv) relative to the identified reference block.
[0042] Furthermore, the inter-frame prediction unit 111 is configured to generate a prediction signal for each object block (hereinafter referred to as an object block) based on a reference block and motion vectors. The inter-frame prediction unit 111 is configured to output the prediction signal to subtractor 121 and adder 122. Here, the reference frame is a frame different from the target frame.
[0043] The intra-frame prediction unit 112 is configured to generate a prediction signal through intra-frame prediction.
[0044] Specifically, the intra-frame prediction unit 112 is configured to be a reference block contained in a specific target frame, and generates a prediction signal for each target block based on the specific reference block. In addition, the intra-frame prediction unit 112 is configured to output the prediction signal to the subtractor 121 and the adder 122.
[0045] Here, a reference block is the block that references the object block. For example, a reference block is the block adjacent to the object block.
[0046] Subtractor 121 is configured to subtract the prediction signal from the input image signal and output the prediction residual signal to the transform / quantization unit 131. Here, subtractor 121 is configured to generate the prediction residual signal, which is the difference between the prediction signal generated by intra-frame prediction or inter-frame prediction and the input image signal.
[0047] Adder 122 is configured to add the prediction signal to the prediction residual signal output from the inverse transform / inverse quantization unit 132 to generate a pre-filtered decoded signal, and output the pre-filtered decoded signal to the intra-frame prediction unit 112 and the loop filtering unit 150.
[0048] Here, the decoded signal before filtering constitutes a reference block used by the intra-frame prediction unit 112.
[0049] The transform / quantization unit 131 is configured to perform transform processing on the prediction residual signal and obtain coefficient level values. Furthermore, the transform / quantization unit 131 can also be configured to perform quantization on the coefficient level values.
[0050] Here, the transformation process is the process of transforming the predicted residual signal into a frequency component signal. As the transformation process, a basis pattern (transformation matrix) corresponding to the Discrete Cosine Transform (DCT) or a basis pattern (transformation matrix) corresponding to the Discrete Sine Transform (DST) can be used.
[0051] The inverse transform / inverse quantization unit 132 is configured to perform inverse transform processing on the coefficient hierarchy values output from the transform / quantization unit 131. Alternatively, the inverse transform / inverse quantization unit 132 may be configured to perform inverse quantization on the coefficient hierarchy values before the inverse transform processing.
[0052] Here, the steps of inverse transformation processing and inverse quantization are the reverse of those performed by the transformation / quantization unit 131.
[0053] The encoding unit 140 is configured to encode the coefficient level values output from the transform / quantize unit 131 and output the encoded data.
[0054] Here, for example, the encoding is entropy encoding, which assigns codes of different lengths based on the probability of occurrence of coefficient hierarchy values.
[0055] In addition, the encoding unit 140 is configured to encode control data using decoding processing, in addition to the coefficient level values.
[0056] Here, control data may include size data such as coded block size, prediction block size, and transform block size.
[0057] In addition, control data may also include header information such as Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Picture Header (PH), and Slice Header (SH), which will be described later.
[0058] The loop filtering processing unit 150 is configured to filter the decoded signal before filtering output from the adder 122 and output the decoded signal after filtering to the frame buffer 160.
[0059] Here, for example, the filtering process is a deblocking filtering process that reduces distortion generated at the boundary portions of blocks (coding blocks, prediction blocks, or transform blocks), or an adaptive cyclic filtering process that switches between filtering based on filtering coefficients transmitted from the image coding device 100, filter selection information, and local properties of the image's graphics.
[0060] The frame buffer 160 is configured to store reference frames used by the inter-frame prediction unit 111.
[0061] Here, the filtered decoded signal constitutes a reference frame used by the inter-frame prediction unit 111.
[0062] (Image decoding device 200)
[0063] The following is for reference Figure 3 The image decoding apparatus 200 involved in this embodiment will be described. Figure 3This diagram illustrates an example of the functional blocks of the image decoding apparatus 200 according to this embodiment.
[0064] like Figure 3 As shown, the image decoding apparatus 200 includes a decoding unit 210, an inverse transform / inverse quantization unit 220, an adder 230, an inter-frame prediction unit 241, an intra-frame prediction unit 242, a loop filtering processing unit 250, and a frame buffer 260.
[0065] The decoding unit 210 is configured to decode the encoded data generated by the image encoding device 100 and decode the coefficient level values.
[0066] Here, decoding is, for example, entropy decoding, which is the reverse of the entropy encoding step performed by the encoding unit 140.
[0067] Alternatively, the decoding unit 210 may be configured to obtain control data through decoding of encoded data. Furthermore, as described above, the control data may also include size data, header information, etc.
[0068] The inverse transform / inverse quantization unit 220 is configured to perform inverse transform processing on the coefficient level values output from the decoding unit 210. Here, the inverse transform / inverse quantization unit 220 can be configured to perform inverse quantization on the coefficient level values before the inverse transform processing.
[0069] Here, the inverse transformation and inverse quantization are performed in the opposite manner to the transformation and quantization performed by the transformation / quantization unit 131.
[0070] The adder 230 is configured to add the prediction signal to the prediction residual signal output from the inverse transform / inverse quantization unit 220 to generate a pre-filtered decoded signal, and output the pre-filtered decoded signal to the intra-frame prediction unit 242 and the loop filtering unit 250.
[0071] Here, the decoded signal before filtering constitutes a reference block used by the intra-frame prediction unit 242.
[0072] Similar to the inter-frame prediction unit 111, the inter-frame prediction unit 241 is configured to generate a prediction signal through inter-frame prediction.
[0073] Specifically, the inter-frame prediction unit 241 is configured to generate a prediction signal based on the motion vector decoded from the encoded data and the reference signal contained in the reference frame. The inter-frame prediction unit 241 is configured to output the prediction signal to the adder 230.
[0074] Similar to the intra-frame prediction unit 112, the intra-frame prediction unit 242 is configured to generate a prediction signal through intra-frame prediction.
[0075] Specifically, the intra-frame prediction unit 242 is configured to be a reference block contained in a specific target frame, and generates a prediction signal for each prediction block based on the specific reference block. The intra-frame prediction unit 242 is configured to output the prediction signal to the adder 230.
[0076] Similar to the loop filtering processing unit 150, the loop filtering processing unit 250 is configured to filter the decoded signal before filtering output from the adder 230 and output the decoded signal after filtering to the frame buffer 260.
[0077] Here, for example, the filtering process is a deblocking filtering process that reduces distortion at the boundary portions of blocks (coding blocks, prediction blocks, transform blocks, or sub-blocks into which these are divided), or an adaptive cyclic filtering process that switches between filtering based on the filtering coefficients transmitted from the image coding device 100, filter selection information, and the local properties of the image's graphics.
[0078] Similar to frame buffer 160, frame buffer 260 is configured to store reference frames used by inter-frame prediction unit 241.
[0079] Here, the filtered decoded signal constitutes a reference frame used by the inter-frame prediction unit 241.
[0080] (Decoding Section 210)
[0081] The following uses Figures 4-8 The control data encoded by the encoding unit 140 and decoded by the decoding unit 210 will be explained.
[0082] Figure 4 This is an example of the structure of encoded data (hereinafter referred to as bit stream) received by the decoding unit 210.
[0083] The beginning of a bitstream may also contain an SPS211. An SPS is a collection of control data controlled in units of sequences (sets of frames). Specific examples will be explained later. Each SPS211 contains at least an SPS id information used to identify each one when multiple SPS211s exist.
[0084] Additionally, the bitstream may include PPS212 after SPS211. PPS212 is a collection of control data controlled in units of frames (sets of slices). Each PPS212 contains at least a PPS id information used to identify each one when multiple PPS212s exist. Furthermore, each PPS212 contains at least SPS id information used to specify the SPS211 corresponding to each PPS212.
[0085] Additionally, the bitstream may include an image header 213 after PPS 212. The image header 213 is also a collection of control data controlled on a per-frame (set of slices) basis. PPS 212 can share a single PPS 212 for multiple frames. On the other hand, the image header 213 is transmitted for each frame. The image header 213 contains at least PPS id information specifying the PPS 212 corresponding to each frame.
[0086] Alternatively, the bitstream may include a slice header 214A after the image header 213. The slice header 214A is a collection of control data controlled by slice units. Specific examples will be described later. The slice header 214A may include the information from the image header 213 described above as part of the slice header 214A.
[0087] Alternatively, the bitstream may include slice data 215A after the slice header 214A. Slice data 214A may also include the aforementioned coefficient hierarchy values, size data, etc.
[0088] As described above, the bit stream becomes a structure in which the slice header 214A / 2154, image header 213, PPS 212, and SPS 211 correspond to each slice data 215A / 215B.
[0089] As described above, in the image header 213, the PPS id specifies which PPS 212 is referenced, and the SPS 212 uses the SPS id to specify which SPS 211 is referenced, so that the common SPS 211 and PPS 212 can be used for multiple slice data 215A / 215B.
[0090] In other words, SPS211 and PPS212 do not necessarily need to transmit every frame or every slice.
[0091] For example, such as Figure 4 As shown, it can also be configured such that SPS211 and PPS212 are not encoded before the slice header 214B / 215B, which is a bit stream structure.
[0092] also, Figure 4 The structure described above is merely one example. For instance, as long as the bitstream has a structure corresponding to the control data specified by the slice headers 214B / 215B, image header 213, PPS 212, and SPS 211, and each slice data 215A / 215B, then elements other than those mentioned above can be added as constituent elements of the bitstream. Similarly, it can also be shaped during transmission to correspond with... Figure 4 Different structures.
[0093] Figure 5 This is an example of control data contained within the SPS211.
[0094] As described above, SPS211 contains at least SPS id information (sps_seq_parameter_set_id) for identifying each SPS211.
[0095] SPS211 may also include a syntax (sps_mmvd_enabled_flag) that controls whether to use the fused motion vector difference (MMVD) sequence of the decoded object, as described later.
[0096] For example, it can be defined that when the value of sps_mmvd_enabled_flag is "0", it means that MMVD cannot be used in the sequence corresponding to the SPS211, and when the value of sps_mmvd_enabled_flag is "1", it means that MMVD can be used in the sequence corresponding to the SPS211.
[0097] Additionally, when the value of sps_mmvd_enabled_flag is "1", that is, when MMVD can be used, a syntax (sps_mmvd_fullpel_only_flag) can also be included to control whether the transmission precision of MMVD in the sequence corresponding to the SPS211 is integer precision.
[0098] For example, it can be defined that when the value of sps_mmvd_fullpel_only_flag is "0", it means that fractional precision can be used as the transmission precision of MMVD (that is, either fractional precision or integer precision can be used as the transmission precision of MMVD), and when the value of sps_mmvd_fullpel_only_flag is "1", it means that integer precision is used as the transmission precision of MMVD.
[0099] If the SPS211 does not contain sps_mmvd_fullpel_only_flag, the decoding unit 210 may also treat the value of sps_mmvd_fullpel_only_flag as "0".
[0100] Figure 6 This is an example of the control data contained in PPS212.
[0101] As described above, PPS212 at least contains PPS id information (pps_pic_parameter_set_id) for identifying each PPS212. Additionally, as described above, PPS212 at least contains id information (pps_seq_parameter_set_id) for specifying the SPS211 corresponding to that PPS212.
[0102] Figure 7 This is an example of control data contained in image header 213.
[0103] As described above, the image header 213 contains at least the id information (ph_pic_parameter_set_id) for specifying the PPS 212 corresponding to the image header 213.
[0104] Additionally, if the value of sps_mmvd_fullpel_only_flag associated with PPS212 specified by ph_pic_parameter_set_id is “0”, the image header 213 may also contain ph_mmvd_fullpel_only_flag.
[0105] If the image header 213 does not contain ph_mmvd_fullpel_only_flag, the decoding unit 210 may also treat the value of ph_mmvd_fullpel_only_flag as "0".
[0106] When the value of ph_mmvd_fullpel_only_flag is "1", it indicates that integer precision is used as the transmission precision of MMVD within the frame corresponding to the image header 213.
[0107] On the other hand, when the value of ph_mmvd_fullpel_only_flag is "0", it means that fractional precision can also be used as the transmission precision of MMVD within the frame corresponding to the image header 213 (that is, either fractional precision or integer precision can be used as the transmission precision of MMVD).
[0108] If the image header 213 does not contain ph_mmvd_fullpel_only_flag, the decoding unit 210 may also treat the value of ph_mmvd_fullpel_only_flag as "0".
[0109] Alternatively, if the image header 213 does not contain ph_mmvd_fullpel_only_flag, the decoding unit 210 may also consider the value of ph_mmvd_fullpel_only_flag to be the same as the value of sps_mmvd_fullpel_only_flag.
[0110] As described above, by including the syntax (ph_mmvd_fullpel_only_flag) in the image header 213 to control whether to use integer precision as the MMVD transmission precision on a per-frame basis only when the value of sps_mmvd_fullpel_only_flag is "0"—that is, only when it indicates that fractional precision can be used as the transmission precision of the MMVD on a sequence-by-sequence basis—for example, in cases where sps_mmvd_fullpel_only_flag specifically specifies that integer precision is used as the transmission precision of the MMVD in that sequence, unnecessary ph_mmvd_fullpel_only_flag inclusion in the image header 213 can be prevented. This reduces unnecessary decoding / encoding processing and also reduces the bit size of the image header 213.
[0111] Figure 8 This is an example of the control data contained in slice headers 214A / 214B.
[0112] The slice header 214A / 214B can also contain `sh_picture_header_in_slice_header_flag`. When the value of `sh_picture_header_in_slice_header_flag` is "1", in... Figure 8 The location of picture_header_structure() can contain Figure 7 The syntax structure of the image header 213 (picture_header_structure()) is described in the document.
[0113] Additionally, in the image header 213 corresponding to slice headers 214A / 214B, if the value of sps_mmvd_fullpel_only_flag associated with PPS212 specified by ph_pic_parameter_set_id is “0”, slice headers 214A / 214B may also include slice_mmvd_fullpel_only_flag.
[0114] If the slice_mmvd_fullpel_only_flag is not included in the slice header 214A / 214B, the decoding unit 210 may also treat the value of slice_mmvd_fullpel_only_flag as "0".
[0115] When the value of sps_mmvd_fullpel_only_flag is "1" as mentioned above, image header 213 may also contain slice_mmvd_fullpel_only_flag.
[0116] When the value of slice_mmvd_fullpel_only_flag is "1", it means that integer precision is used as the transmission precision of MMVD within the slice.
[0117] When the value of slice_mmvd_fullpel_only_flag is “0”, it means that fractional precision can be used as the transmission precision of MMVD within the slice (that is, either fractional precision or integer precision can be used as the transmission precision of MMVD).
[0118] If the slice header 214A / 214B does not contain slice_mmvd_fullpel_only_flag, the decoding unit 210 may also treat the value of slice_mmvd_fullpel_only_flag as "0".
[0119] Alternatively, if slice_mmvd_fullpel_only_flag is not included in the image header 213, the decoding unit 210 may also consider the value of slice_mmvd_fullpel_only_flag to be the same as the value of ph_mmvd_fullpel_only_flag.
[0120] As described above, by including a syntax (slice_mmvd_fullpel_only_flag) in the slice header 214A / 214B that controls whether to use integer precision as the transmission precision of MMVD in slice units only when the value of sps_mmvd_fullpel_only_flag is "0"—that is, only when it indicates that fractional precision can be used as the transmission precision of MMVD in sequence units—for example, in cases where sps_mmvd_fullpel_only_flag specifically specifies that integer precision is used as the transmission precision of MMVD in the sequence, unnecessary slice_mmvd_fullpel_only_flag inclusion in the slice header 214A / 214B can be prevented. This reduces unnecessary decoding / encoding processing and also reduces the bit size of the slice header 214A / 214B.
[0121] The values of the flags described above are merely one example. In cases where the meaning of the flag values ("0" and "1") is reversed, equivalent processing can be achieved by reversing the corresponding processing as well.
[0122] Alternatively, the order in which syntaxes that do not have a reference relationship with each other can be changed. Furthermore, syntaxes other than those mentioned above can be included in SPS211, PPS212, image header 213, and slice headers 214A / 214B, respectively.
[0123] <Example of Change>
[0124] In the above implementation, the name of the syntax for controlling the transmission precision of the fused motion vector difference in the sequence of the decoded object is defined as sps_mmvd_fullpell_only_flag. As the meaning (semantics) corresponding to the value of the syntax, it can be defined as follows: when the value of the syntax is "0", it means that fractional precision can also be used as the transmission precision of MMVD (that is, either fractional precision or integer precision can be used as the transmission precision of MMVD); when the value of the syntax is "1", it means that integer precision is used as the transmission precision of MMVD.
[0125] On the other hand, the name of the syntax that controls the transmission precision of the fused motion vector difference in the sequence of the decoded object is defined as sps_mmvd_fullpell_enabled_flag. As the meaning (semantics) corresponding to the value of the syntax, it can be defined as follows: when the value of the syntax is "0", it means that fractional precision is used as the transmission precision of MMVD; when the value of the syntax is "1", it means that integer precision can be used as the transmission precision of MMVD (that is, either fractional precision or integer precision can be used as the transmission precision of MMVD).
[0126] However, in the case of defining the name and meaning (semantics) of a syntax that controls the transmission precision of the fused motion vector difference in the sequence of the decoded object, Figure 5 The decoding conditions of the syntax shown Figure 7 The decoding conditions for ph_mmvd_fullpel_only_flag shown are as follows: Figure 8 The decoding conditions for slice_mmvd_fullpel_only_flag shown are as follows: Figures 9-11 That's how it's structured.
[0127] Figure 10 for Figure 7 and Figure 11 for Figure 8 The difference lies in the fact that when the value of this syntax is "1", the meaning of the syntax changes, resulting in the decoding of ph_mmvd_fullpel_only_flag or slice_mmvd_fullpel_only_flag.
[0128] (Inter-frame prediction unit 241)
[0129] The following is for reference Figure 12 The inter-frame prediction unit 241 involved in this embodiment will be described. Figure 12 This diagram illustrates an example of the functional blocks of the inter-frame prediction unit 241 according to this embodiment.
[0130] like Figure 12 As shown, the inter-frame prediction unit 241 includes a motion vector decoding unit 241A and a prediction signal generation unit 241B.
[0131] Inter-frame prediction unit 241 is an example of a prediction unit, which is configured to generate the prediction signal contained in the prediction block based on motion vectors.
[0132] The motion vector decoding unit 241A includes an AMVP unit 241A1, a fusion unit 241A2, and an MMVD unit 241A3. Here, the motion vector decoding unit 241A is configured to obtain motion vectors by decoding the target frame and reference frame input from the frame buffer 260 and the control data received from the image encoding device 100.
[0133] The AMVP unit 241A1 is configured to perform adaptive motion vector prediction decoding (AMVP) by using an index representing motion vector prediction (MVP) and motion vector difference (MVD), as well as a list and index of reference frames. Since known methods can be used for AMVP, detailed descriptions are omitted.
[0134] The fusion unit 241A2 is configured to receive a fusion index from the image encoding device 100 and decode the motion vector.
[0135] Specifically, the fusion unit 241A2 is configured to construct a fusion list in the same manner as the image encoding device 100, and obtain the motion vector corresponding to the received fusion index from the constructed fusion list. Known methods can be used to construct the fusion list, therefore, detailed descriptions are omitted.
[0136] The MMVD unit 241A3 selects motion vectors from a fusion list constructed by the fusion unit 241A2 based on the MMVD-related syntax sent from the image encoding device 100, and further modifies the motion vectors. Details will be explained in detail later.
[0137] The prediction signal generation unit 241B is configured to generate a prediction signal based on the motion vector output from the motion vector decoding unit 241A. Known methods can be used to generate the prediction signal from the motion vector, therefore, detailed descriptions are omitted.
[0138] (MMVD Section 241A3)
[0139] The following is for reference Figure 13 and Figure 14 The MMVD section 241A3 involved in this embodiment will be described.
[0140] Figure 13 and Figure 14 This diagram illustrates the method for correcting the motion vector of the MMVD unit 241A3 according to this embodiment.
[0141] The MMVD unit 241A3 is configured to select motion vectors from a fusion list constructed by the fusion unit 241A2 based on the values of the syntax (mmvd_merge_flag, mmvd_cand_flag, mmvd_distance_idx, mmvd_direction_idx, ph_mmvd_fullpel_only_flag) associated with MMVD decoded by the decoding unit 210, and to modify the motion vectors.
[0142] First: The MMVD unit 241A3 is configured to execute MMVD when the value of mmvd_merge_flag is "1", and not execute MMVD when the value of mmvd_merge_flag is "0".
[0143] Second: The MMVD unit 241A3 is configured to select motion vectors from the fusion list based on the value of mmvd_cand_flag when MMVD is executed.
[0144] Specifically, the MMVD unit 241A3 is configured such that when the value of mmvd_cand_flag is “0”, the 0th motion vector in the fusion list is selected as the motion vector to be corrected, and when the value of mmvd_cand_flag is “1”, the 1st motion vector in the fusion list is selected as the motion vector to be corrected.
[0145] Furthermore, when there are no more than two candidate motion vectors in the fusion list, the MMVD unit 241A3 is configured to treat the value of mmvd_cand_flag as "0".
[0146] In addition, this embodiment describes setting the value of mmvd_cand_flag to "0" or "1", but the design can also be changed according to the designer's intention.
[0147] Third: The MMVD section 241A3 is configured based on Figure 10 and Figure 14 The values of mmvd_distance_idx, mmvd_direction_idx, and ph_mmvd_fullpel_only_flag shown are used to correct the selected motion vector.
[0148] The following is for reference Figure 13 The method for deriving the magnitude (distance) of the motion vector difference added to the motion vector selected by the MMVD unit 2413A3 is explained.
[0149] Specifically, based on the decoded values of mmvd_distance_idx and ph_mmvd_fullpel_only_flag, the magnitude (distance) of the motion vector difference is derived.
[0150] For example, such as Figure 13 As shown, when the value of mmvd_distance_idx is "1" and the value of ph_mmvd_fullpel_only_flag is "0", MmvdDistance[x0][y0] is set to "2".
[0151] Here, MmvdDistance[x0][y0] is an internal parameter representing the corrected distance of the motion vector of MMVD, that is, the distance of the motion vector difference added to the selected motion vector.
[0152] When the value of MmvdDistance[x0][y0] is set to "2", it is configured to be the distance relative to the selected motion vector, in the direction derived from mmvd_direction_idx (described later), by multiplying "2" by 1 / 4 of the initial value of the transmission precision as the motion vector difference.
[0153] When the value of ph_mmvd_fullpel_only_flag is "1", the configuration is such that the value multiplied by the initial value of the transmission precision of the motion vector differential mentioned above starts from "4", thus ensuring that the transmission precision of the motion vector differential to be added is always integer precision.
[0154] Furthermore, the above describes the method for deriving the corrected distance of the motion vector of MMVD using ph_mmvd_fullpel_only_flag, but ph_mmvd_fullpel_only_flag can also be replaced with slice_mmvd_fullpel_only_flag as described above.
[0155] Next, refer to Figure 14 The method for deriving the direction of the motion vector difference that is added to the motion vector selected by the MMVD unit 241A3 will be explained.
[0156] Specifically, the direction of the motion vector difference is derived based on the decoded value of mmvd_direction_idx.
[0157] For example, such as Figure 14As shown, the configuration is based on the value of mmvd_direction_idx being between "0" and "3", which derives the values of MmvdSign[x0][y0][0] and MmvdSign[x0][y0][1].
[0158] As described below, the motion vector difference of MMVD is derived as MmvdOffset[x0][y0][0] and MmvdOffset[x0][y0][1] derived from MmvdDistance[x0][y0][0], MmvdSign[x0][y0][0] and MmvdSign[x0][y0][1].
[0159] MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)×MmvdSign[x0][y0][0]
[0160] MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)×MmvdSign[x0][y0][1]
[0161] As described above, the motion vector difference derived by the MMVD unit 241A3, namely MmvdOffset, corrects the motion vector by adding it to the selected motion vector, thereby improving the accuracy of the motion vector and the prediction performance, and thus can be expected to improve the coding performance.
[0162] The image encoding device 100 and image decoding device 200 described above can also be implemented by a program that enables a computer to execute each function (each process).
[0163] Furthermore, in the above embodiments, the present invention has been described as being applied to an image encoding device 100 and an image decoding device 200, but the present invention is not limited to the above examples, and can also be applied to image encoding systems and image decoding systems having the functions of an image encoding device 100 and an image decoding device 200.
[0164] Explanation of reference numerals in the attached figures
[0165] 10: Image processing system; 100: Image encoding device; 111, 241: Inter-frame prediction unit; 112, 242: Intra-frame prediction unit; 121: Subtractor; 122, 230: Adder; 131: Transform / quantization unit; 132, 220: Inverse transform / inverse quantization unit; 140: Encoding unit; 150, 250: Loop filtering unit; 160, 260: Frame buffer; 200: Image decoding device; 210: Decoding unit; 241A: Motion vector decoding unit; 241A1: AMVP unit; 241A2: Fusion unit; 241A3: MMVD unit; 241B: Prediction signal generation unit.
Claims
1. An image decoding apparatus characterized by comprising: Possesses: a decoding section configured to decode a first syntax that controls the transmission precision of a merge motion vector difference in a sequence parameter set, wherein in a case where the value of the first syntax is "1", it is indicated that the first syntax can use either one of a fractional precision and an integer precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, in a case where the value of the first syntax is "0", it is indicated that the first syntax uses a fractional precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, and in a case where the value of the first syntax is a value indicating that either one of a fractional precision and an integer precision can be used as the transmission precision of a merge mode motion vector difference in the sequence parameter set, the decoding section decodes a second syntax that controls the transmission precision of a merge motion vector difference in a picture header.
2. An image decoding method characterized by: decoding a first syntax that controls the transmission precision of a merge motion vector difference in a sequence parameter set, wherein in a case where the value of the first syntax is "1", it is indicated that the first syntax can use either one of a fractional precision and an integer precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, in a case where the value of the first syntax is "0", it is indicated that the first syntax uses a fractional precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, and in the decoding, in a case where the value of the first syntax is a value indicating that either one of a fractional precision and an integer precision can be used as the transmission precision of a merge mode motion vector difference in the sequence parameter set, a second syntax that controls the transmission precision of a merge motion vector difference in a picture header is decoded.
3. A computer program product comprising a program for causing a computer to function as an image decoding apparatus, characterized by, The image decoding apparatus possesses: a decoding section configured to decode a first syntax that controls the transmission precision of a merge motion vector difference in a sequence parameter set, wherein in a case where the value of the first syntax is "1", it is indicated that the first syntax can use either one of a fractional precision and an integer precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, in a case where the value of the first syntax is "0", it is indicated that the first syntax uses a fractional precision as the transmission precision of a merge mode motion vector difference in the sequence parameter set, and in a case where the value of the first syntax is a value indicating that either one of a fractional precision and an integer precision can be used as the transmission precision of a merge mode motion vector difference in the sequence parameter set, the decoding section decodes a second syntax that controls the transmission precision of a merge motion vector difference in a picture header.