Image decoding device, image decoding method and program
Patent Information
- Application Number
- JP2023194119
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-11-15
- Publication Date
- 2025-02-21
- Estimated Expiration
- 2040-06-08
AI Technical Summary
【0009】 本発明によれば、シーケンス単位でMMVDの伝送精度を制御するシンタックスを復号し、かかるMMVDの伝送精度が不定である場合(すなわち、かかるMMVDの伝送精度として小数精度或いは整数精度のいずれを使用してもよい場合)にのみ、ピクチャ単位でMMVDの伝送精度を制御するシンタックスを復号することで、不要なシンタックスの復号処理量及びビット量を削減することができる画像復号装置、画像復号方法及びプログラムを提供することができる。
Smart Images

Figure 0007634633000001 
Figure 0007634633000002 
Figure 0007634633000003
Abstract
Description
[Technical field]
[0001] The present invention relates to an image decoding device, an image decoding method, and a program. [Background technology]
[0002] In non-patent document 1, syntax that can control whether the transmission accuracy of merge motion vector differential (MMVD: Merge with MVD) is integer precision or not is provided as a syntax (sps_mmvd_fullpel_only_flag) for a sequence parameter set (SPS) and a syntax (ph_mmvd_fullpel_only_flag) for a picture header (PH). [Prior art documents] [Non-patent literature]
[0003] [Non-Patent Document 1] Versatile Video Coding (Draft 9), JVET-R2001 Summary of the Invention [Problem to be solved by the invention]
[0004] However, non-patent document 1 had a problem in that it specified that ph_mmvd_fullpel_only_flag is decoded even when sps_mmvd_fullpel_only_flag is valid (i.e., when the transmission accuracy of MMVD is specified to be integer accuracy on a sequence-by-sequence basis).
[0005] That is, in Non-Patent Document 1, even though the transmission precision of the MMVD is specified as integer precision by sps_mmvd_fullpel_only_flag, there is a problem that ph_mmvd_fullpel_only_flag is decoded unnecessarily. Therefore, the present invention has been made in consideration of the above-mentioned problem, and aims to provide an image decoding device, an image decoding method, and a program that can reduce the decoding processing amount and bit amount of unnecessary syntax by decoding syntax that controls the transmission precision of the MMVD on a sequence-by-sequence basis, and decoding syntax that controls the transmission precision of the MMVD on a picture-by-picture basis only when the transmission precision of the MMVD is indefinite (i.e., when either decimal precision or integer precision may be used as the transmission precision of the MMVD). [Means for solving the problem]
[0006] A first feature of the present invention is an image decoding device including a decoding unit configured to decode a first syntax for controlling a transmission accuracy of a merge motion vector differential in a sequence to be decoded, and to decode a second syntax for controlling a transmission accuracy of the merge motion vector differential in a picture to be decoded based on a value of the first syntax.
[0007] A second feature of the present invention is an image decoding method comprising the steps of: decoding a first syntax for controlling a transmission accuracy of a merge motion vector difference in a sequence to be decoded; and decoding a second syntax for controlling a transmission accuracy of the merge motion vector difference in a picture to be decoded based on a value of the first syntax.
[0008] A third feature of the present invention is summarized as a program for causing a computer to function as an image decoding device, the image decoding device including a decoding unit configured to decode a first syntax for controlling a transmission accuracy of a merge motion vector differential in a sequence to be decoded, and to decode a second syntax for controlling a transmission accuracy of the merge motion vector differential in a picture to be decoded based on a value of the first syntax. Effect of the Invention
[0009] According to the present invention, an image decoding device, an image decoding method and a program can be provided that can reduce the amount of decoding processing and the amount of bits of unnecessary syntax by decoding syntax that controls the transmission accuracy of MMVD on a sequence-by-sequence basis, and decoding syntax that controls the transmission accuracy of MMVD on a picture-by-picture basis only when the transmission accuracy of such MMVD is indefinite (i.e., when either decimal precision or integer precision can be used as the transmission accuracy of such MMVD). [Brief description of the drawings]
[0010] [Figure 1] 1 is a diagram illustrating an example of a configuration of an image processing system 1 according to an embodiment. [Diagram 2] FIG. 2 is a diagram illustrating an example of functional blocks of an image encoding device 100 according to an embodiment. [Diagram 3] FIG. 2 is a diagram illustrating an example of functional blocks of an image decoding device 200 according to an embodiment. [Figure 4] 1 shows an example of the configuration of encoded data (bit stream) received by a decoding unit 210 of an image decoding device 200 according to an embodiment. [Diagram 5] 1 is an example of control data contained in SPS211. [Figure 6] 13 is an example of control data included in the PPS 212. [Figure 7] 2 is an example of control data included in the picture header 213. [Figure 8]13 is an example of control data included in slice header 214A / 214B. [Figure 9] FIG. 13 is a diagram for explaining a modified example of an embodiment. [Figure 10] FIG. 13 is a diagram for explaining a modified example of an embodiment. [Figure 11] FIG. 13 is a diagram for explaining a modified example of an embodiment. [Figure 12] 11 is a diagram illustrating an example of functional blocks of an inter prediction unit 241 according to an embodiment. FIG. [Figure 13] FIG. 13 is a diagram showing a motion vector correction method by an MMVD unit 241A3 according to an embodiment. [Figure 14] FIG. 13 is a diagram showing a motion vector correction method by an MMVD unit 241A3 according to an embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Hereinafter, the embodiments of the present invention will be described with reference to the drawings. Note that the components in the following embodiments can be appropriately replaced with existing components, and various variations including combinations with other existing components are possible. Therefore, the description of the following embodiments does not limit the content of the invention described in the claims.
[0012] First Embodiment An image processing system 10 according to a first embodiment of the present invention will be described below with reference to Figures 1 to 14. Figure 1 is a diagram showing an image processing system 10 according to this embodiment.
[0013] As shown in FIG. 1, an image processing system 10 according to this embodiment includes an image encoding device 100 and an image decoding device 200.
[0014] The image coding device 100 is configured to generate coded data by coding an input image signal (picture). The image decoding device 200 is configured to generate an output image signal by decoding the coded data.
[0015] The encoded data may be transmitted from the image encoding device 100 to the image decoding device 200 via a transmission path. The encoded data may be provided from the image encoding device 100 to the image decoding device 200 after being stored in a storage medium.
[0016] (Image encoding device 100) The image encoding device 100 according to this embodiment will be described below with reference to Fig. 2. Fig. 2 is a diagram showing an example of functional blocks of the image encoding device 100 according to this embodiment.
[0017] As shown in FIG. 2, the image encoding device 100 includes an inter prediction unit 111, an intra 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, an in-loop filter processing unit 150, and a frame buffer 160.
[0018] The inter prediction unit 111 is configured to generate a prediction signal by inter prediction (inter-frame prediction).
[0019] Specifically, the inter prediction unit 111 is configured to identify a reference block contained in the reference frame by comparing the target frame with a reference frame stored in the frame buffer 160, and to determine a motion vector (mv) for the identified reference block.
[0020] Moreover, the inter prediction unit 111 is configured to generate a prediction signal included in a block to be coded (hereinafter, a target block) for each target block based on a reference block and a motion vector. The inter prediction unit 111 is configured to output the prediction signal to the subtractor 121 and the adder 122. Here, the reference frame is a frame different from the target frame.
[0021] The intra prediction unit 112 is configured to generate a prediction signal by intra prediction (intra-frame prediction).
[0022] Specifically, the intra prediction unit 112 is configured to identify a reference block included in a target frame, and generate a prediction signal for each target block based on the identified reference block. The intra prediction unit 112 is also configured to output the prediction signal to the subtractor 121 and the adder 122.
[0023] Here, the reference block is a block that is referenced for the current block, for example, a block adjacent to the current block.
[0024] The subtractor 121 is configured to subtract the prediction signal from the input image signal, and output the prediction residual signal to the transformation and quantization unit 131. Here, the subtractor 121 is configured to generate a prediction residual signal that is the difference between the prediction signal generated by intra prediction or inter prediction and the input image signal.
[0025] The 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 prediction unit 112 and the in-loop filter processing unit 150.
[0026] Here, the unfiltered decoded signal forms a reference block used by the intra prediction unit 112 .
[0027] The transform / quantization unit 131 is configured to perform a transform process on the prediction residual signal and to obtain a coefficient level value. Furthermore, the transform / quantization unit 131 may be configured to quantize the coefficient level value.
[0028] Here, the transform process is a process of transforming a prediction residual signal into a frequency component signal. For such a transform process, a basis pattern (transformation matrix) corresponding to a discrete cosine transform (hereinafter, abbreviated as DCT) may be used, or a basis pattern (transformation matrix) corresponding to a discrete sine transform (hereinafter, abbreviated as DST) may be used.
[0029] The inverse transform / inverse quantization unit 132 is configured to perform an inverse transform process on the coefficient level values output from the transform / quantization unit 131. Here, the inverse transform / inverse quantization unit 132 may be configured to perform inverse quantization of the coefficient level values prior to the inverse transform process.
[0030] Here, the inverse transformation process and inverse quantization are performed in the reverse order to the transformation process and quantization performed by the transformation and quantization unit 131 .
[0031] The encoding unit 140 is configured to encode the coefficient level values output from the transform / quantization unit 131, and output encoded data.
[0032] Here, for example, the coding is entropy coding, which assigns codes of different lengths based on the probability of occurrence of coefficient level values.
[0033] The encoding unit 140 is also configured to encode control data for use in the decoding process in addition to the coefficient level values.
[0034] Here, the control data may include size data such as coding block size, prediction block size, transform block size, and the like.
[0035] The control data may also include header information such as a sequence parameter set (SPS), a picture parameter set (PPS), a picture header (PH), and a slice header (SH), which will be described later.
[0036] The in-loop filtering unit 150 is configured to perform filtering on the unfiltered decoded signal output from the adder 122 , and to output the filtered decoded signal to the frame buffer 160 .
[0037] Here, for example, the filtering process is a deblocking filtering process that reduces distortion occurring at the boundary portions of blocks (encoding blocks, prediction blocks, or transformation blocks), or an adaptive loop filtering process that switches filters based on filter coefficients and filter selection information transmitted from the image encoding device 100, local properties of the image pattern, etc.
[0038] The frame buffer 160 is configured to store reference frames used by the inter prediction unit 111 .
[0039] Here, the filtered decoded signal forms a reference frame used in the inter prediction unit 111.
[0040] (Image Decoding Device 200) Hereinafter, the image decoding device 200 according to this embodiment will be described with reference to Fig. 3. Fig. 3 is a diagram showing an example of functional blocks of the image decoding device 200 according to this embodiment.
[0041] As shown in FIG. 3, the image decoding device 200 includes a decoding unit 210, an inverse transform / inverse quantization unit 220, an adder 230, an inter prediction unit 241, an intra prediction unit 242, an in-loop filtering unit 250, and a frame buffer 260.
[0042] The decoding unit 210 is configured to decode the coded data generated by the image coding device 100, and to decode the coefficient level values.
[0043] Here, the decoding is, for example, entropy decoding that is the reverse procedure of the entropy encoding performed by the encoding unit 140.
[0044] The decoder 210 may be configured to obtain the control data by decoding the encoded data. As described above, the control data may include size data, header information, and the like.
[0045] The inverse transform / inverse quantization unit 220 is configured to perform an inverse transform process on the coefficient level values output from the decoding unit 210. Here, the inverse transform / inverse quantization unit 220 may be configured to perform an inverse quantization process on the coefficient level values prior to the inverse transform process.
[0046] Here, the inverse transformation process and inverse quantization are performed in the reverse order to the transformation process and quantization performed by the transformation and quantization unit 131 .
[0047] 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 prediction unit 242 and the in-loop filter processing unit 250.
[0048] Here, the unfiltered decoded signal forms a reference block used by the intra prediction unit 242 .
[0049] Similar to the inter prediction unit 111, the inter prediction unit 241 is configured to generate a prediction signal by inter prediction (inter-frame prediction).
[0050] Specifically, the inter prediction unit 241 is configured to generate a prediction signal based on a motion vector decoded from encoded data and a reference signal included in a reference frame. The inter prediction unit 241 is configured to output the prediction signal to the adder 230.
[0051] Similar to the intra prediction unit 112, the intra prediction unit 242 is configured to generate a prediction signal by intra prediction (intra-frame prediction).
[0052] Specifically, the intra prediction unit 242 is configured to identify a reference block included in the target frame, and generate a prediction signal for each prediction block based on the identified reference block. The intra prediction unit 242 is configured to output the prediction signal to the adder 230.
[0053] Similar to in-loop filter processing unit 150, in-loop filter processing unit 250 is configured to perform filtering on the unfiltered decoded signal output from adder 230, and to output the filtered decoded signal to frame buffer 260.
[0054] Here, for example, the filter processing is a deblocking filter processing that reduces distortion occurring at the boundary parts of blocks (encoding blocks, prediction blocks, transformation blocks, or subblocks obtained by dividing them), or an adaptive loop filter processing that switches filters based on filter coefficients, filter selection information, and local properties of the image pattern transmitted from the image encoding device 100.
[0055] Similar to the frame buffer 160, the frame buffer 260 is configured to store reference frames used by the inter prediction unit 241.
[0056] Here, the filtered decoded signal forms a reference frame used by the inter prediction unit 241.
[0057] (Decoding unit 210) Hereinafter, the control data encoded by encoding section 140 and decoded by decoding section 210 will be described with reference to FIGS.
[0058] FIG. 4 shows an example of the structure of encoded data (hereinafter, bit stream) received by the decoding unit 210. In FIG.
[0059] The bitstream may include an SPS 211 at the beginning. An SPS is a set of control data for each sequence (a set of pictures). A specific example will be described later. Each SPS 211 includes at least SPS id information for identifying each SPS 211 when there are multiple SPSs 211.
[0060] Furthermore, the bitstream may include a PPS 212 following the SPS 211. The PPS 212 is a set of control data in units of pictures (a set of slices). Each PPS 212 includes at least PPS id information for identifying each PPS 212 when there are multiple PPSs 212. Furthermore, each PPS 212 includes at least SPS id information for specifying the SPS 211 corresponding to each PPS 212.
[0061] The bitstream may also include a picture header 213 following the PPS 212. The picture header 213 is also a collection of control data for each picture (a collection of slices). A single PPS 212 can be shared by multiple pictures. On the other hand, the picture header 213 is always transmitted for each picture. The picture header 213 includes at least PPS id information for specifying the PPS 212 corresponding to each picture.
[0062] Furthermore, the bitstream may include a slice header 214A following the picture header 213. The slice header 214A is a collection of control data for each slice. A specific example will be described later. The slice header 214A may also include the information of the above-mentioned picture header 213 as a part of the slice header 214A.
[0063] Furthermore, the bitstream may include slice data 215A following the slice header 214A. The slice data 214A may include the above-mentioned coefficient level values, size data, and the like.
[0064] As described above, the bit stream has a configuration in which the slice headers 214A / 2154, picture header 213, PPS 212, and SPS 211 correspond to each piece of slice data 215A / 215B.
[0065] As described above, the picture header 213 specifies which PPS 212 to reference using the PPS id, and further specifies which SPS 211 the PPS 212 references using the SPS id, so that common SPS 211 and PPS 212 can be used for multiple slice data 215A / 215B.
[0066] In other words, the SPS 211 and the PPS 212 do not necessarily need to be transmitted for each picture or for each slice.
[0067] For example, as shown in FIG. 4, the bitstream may be configured such that the SPS 211 and PPS 212 are not coded immediately before the slice header 214B / 215B.
[0068] Note that the configuration of Fig. 4 is merely an example. For example, as long as the bit stream is configured such that the slice headers 214B / 215B, the picture header 213, the PPS 212, and the control data specified by the SPS 211 correspond to each slice data 215A / 215B, elements other than those described above may be added as components of the bit stream. Similarly, the bit stream may be shaped into a configuration different from that of Fig. 4 when transmitted.
[0069] FIG. 5 is an example of the control data contained in the SPS 211.
[0070] As described above, the SPS 211 includes at least SPS id information (sps_seq_parameter_set_id) for identifying each SPS 211.
[0071] The SPS 211 may include a syntax (sps_mmvd_enabled_flag) that controls whether or not to use a merge motion vector differential (MMVD: Merge with MVD) of the sequence to be decoded, which will be described later.
[0072] For example, it can be defined that when the value of sps_mmvd_enabled_flag is "0", it means that the MMVD is not available in the sequence corresponding to that SPS211, and when the value of sps_mmvd_enabled_flag is "1", it means that the MMVD is available in the sequence corresponding to that SPS211.
[0073] In addition, when the value of sps_mmvd_enabled_flag is "1", i.e., when MMVD is available, the syntax (sps_mmvd_fullpel_only_flag) may be additionally included to control whether the transmission accuracy of the MMVD in the sequence corresponding to the SPS211 is integer accuracy or not.
[0074] For example, when the value of sps_mmvd_fullpel_only_flag is "0", it can be defined as meaning that decimal precision may be used as the transmission precision of the MMVD (i.e., both decimal precision and integer precision can be used as the transmission precision of the MMVD), and when the value of sps_mmvd_fullpel_only_flag is "1", it can be defined as meaning that integer precision is used as the transmission precision of the MMVD.
[0075] If sps_mmvd_fullpel_only_flag is not included in the SPS 211, the decoding unit 210 may regard the value of sps_mmvd_fullpel_only_flag as "0".
[0076] FIG. 6 is an example of the control data included in the PPS 212.
[0077] As described above, the PPS 212 includes at least PPS id information (pps_pic_parameter_set_id) for identifying each PPS 212. Also, as described above, the PPS 212 includes at least id information (pps_seq_parameter_set_id) for specifying the SPS 211 corresponding to the PPS 212.
[0078] FIG. 7 is an example of the control data included in the picture header 213.
[0079] As described above, the picture header 213 includes at least id information (ph_pic_parameter_set_id) for specifying the PPS 212 corresponding to the picture header 213 .
[0080] Additionally, if the value of sps_mmvd_fullpel_only_flag associated with the PPS 212 specified by ph_pic_parameter_set_id is "0", the picture header 213 may include ph_mmvd_fullpel_only_flag.
[0081] If ph_mmvd_fullpel_only_flag is not included in the picture header 213, the decoding unit 210 may regard the value of ph_mmvd_fullpel_only_flag as "0".
[0082] If the value of ph_mmvd_fullpel_only_flag is “1”, this means that integer precision is used as the transmission precision of MMVD in the picture corresponding to the picture header 213.
[0083] On the other hand, if the value of ph_mmvd_fullpel_only_flag is "0", this means that within the picture corresponding to the picture header 213, decimal precision may be used as the transmission precision of the MMVD (i.e., both decimal precision and integer precision can be used as the transmission precision of the MMVD).
[0084] If ph_mmvd_fullpel_only_flag is not included in the picture header 213, the decoding unit 210 may consider the value of ph_mmvd_fullpel_only_flag to be "0".
[0085] Alternatively, if ph_mmvd_fullpel_only_flag is not included in the picture header 213, the decoding unit 210 may assume that the value of ph_mmvd_fullpel_only_flag is the same as the value of sps_mmvd_fullpel_only_flag.
[0086] As described above, only when the value of sps_mmvd_fullpel_only_flag is "0", i.e., only when it indicates that decimal precision may be used as the transmission precision of MMVD on a sequence-by-sequence basis, does the picture header 213 include the syntax (ph_mmvd_fullpel_only_flag) that controls whether integer precision is used as the transmission precision of MMVD on a picture-by-picture basis. This makes it possible to prevent ph_mmvd_fullpel_only_flag from being unnecessarily included in the picture header 213 when, for example, sps_mmvd_fullpel_only_flag specifies that integer precision is used as the transmission precision of MMVD in the sequence. This makes it possible to reduce unnecessary decoding and encoding processes and also reduce the amount of bits in the picture header 213.
[0087] FIG. 8 is an example of control data included in the slice header 214A / 214B.
[0088] The slice header 214A / 214B may include sh_picture_header_in_slice_header_flag. When the value of sh_picture_header_in_slice_header_flag is "1", the syntax structure (picture_header_structure( )) of the picture header 213 described in FIG. 7 can be included in the position of picture_header_structure( ) in FIG. In addition, if the value of sps_mmvd_fullpel_only_flag associated with the PPS 212 specified by ph_pic_parameter_set_id in the picture header 213 to which the slice header 214A / 214B corresponds is "0", the slice header 214A / 214B may include slice_mmvd_fullpel_only_flag.
[0089] If slice_mmvd_fullpel_only_flag is not included in the slice header 214A / 214B, the decoding unit 210 may consider the value of slice_mmvd_fullpel_only_flag to be "0".
[0090] If the value of the above-mentioned sps_mmvd_fullpel_only_flag is "1", the picture header 213 may include slice_mmvd_fullpel_only_flag.
[0091] If the value of slice_mmvd_fullpel_only_flag is "1", it means that integer precision is used as the transmission precision of MMVD within that slice.
[0092] If the value of slice_mmvd_fullpel_only_flag is "0", this means that decimal precision may be used as the transmission precision of the MMVD within that slice (i.e., both decimal precision and integer precision can be used as the transmission precision of the MMVD).
[0093] If slice_mmvd_fullpel_only_flag is not included in the slice header 214A / 214B, the decoding unit 210 may consider the value of slice_mmvd_fullpel_only_flag to be "0".
[0094] Alternatively, if slice_mmvd_fullpel_only_flag is not included in the picture header 213, the decoding unit 210 may consider the value of slice_mmvd_fullpel_only_flag to be the same as the value of ph_mmvd_fullpel_only_flag.
[0095] As described above, only when the value of sps_mmvd_fullpel_only_flag is "0", that is, when it indicates that decimal precision may be used as the transmission precision of MMVD on a sequence-by-sequence basis, does the slice header 214A / 214B include the syntax (slice_mmvd_fullpel_only_flag) for controlling whether integer precision is used as the transmission precision of MMVD on a slice-by-slice basis, thereby preventing slice_mmvd_fullpel_only_flag from being unnecessarily included in the slice header 214A / 214B when, for example, sps_mmvd_fullpel_only_flag specifies that integer precision is used as the transmission precision of MMVD in the sequence. This makes it possible to reduce unnecessary decoding and encoding processes and also reduce the amount of bits in the slice header 214A / 214B.
[0096] The flag values explained above are merely examples. If the meanings of the flag values ("0" and "1") are reversed, the corresponding processing can be reversed accordingly to achieve equivalent processing.
[0097] Furthermore, for syntax elements that do not have a reference relationship with each other, the decoding order may be interchanged. Furthermore, syntax elements other than those described above may be included in the SPS 211, the PPS 212, the picture header 213, and the slice headers 214A / 214B.
[0098] <Example of change> In the above-described embodiment, the name of the syntax that controls the transmission accuracy of the merge motion vector differential in the sequence to be decoded is defined as sps_mmvd_fullpell_only_flag, and the meaning (semantics) according to the value of the syntax is defined as follows: when the value of the syntax is "0", it means that decimal precision may be used as the transmission accuracy of the MMVD (i.e., both decimal precision and integer precision can be used as the transmission accuracy of the MMVD), and when the value of the syntax is "1", it means that integer precision is used as the transmission accuracy of the MMVD.
[0099] On the other hand, the name of the syntax that controls the transmission accuracy of the merge motion vector differential in the sequence to be decoded may be defined as sps_mmvd_fullpell_enabled_flag, and the meaning (semantics) according to the value of the syntax may be defined as follows: when the value of the syntax is "0", it means that decimal precision is used as the transmission precision of the MMVD, and when the value of the syntax is "1", it means that integer precision may be used as the transmission precision of the MMVD (i.e., both decimal precision and integer precision can be used as the transmission precision of the MMVD).
[0100] However, when defining the name and meaning (semantics) of the syntax that controls the transmission accuracy of the merge motion vector differential in the sequence to be decoded in this manner, the decoding conditions of the syntax shown in Figure 5, the decoding conditions of ph_mmvd_fullpel_only_flag shown in Figure 7, and the decoding conditions of slice_mmvd_fullpel_only_flag shown in Figure 8 are configured as shown in Figures 9 to 11, respectively.
[0101] The difference between Figure 10 for Figure 7 and Figure 11 for Figure 8 is that when the value of the syntax is "1", ph_mmvd_fullpel_only_flag or slice_mmvd_fullpel_only_flag is decoded due to a change in the meaning of the syntax.
[0102] (Inter prediction unit 241) Hereinafter, the inter prediction unit 241 according to this embodiment will be described with reference to Fig. 12. Fig. 12 is a diagram showing an example of functional blocks of the inter prediction unit 241 according to this embodiment.
[0103] As shown in FIG. 12, the inter prediction unit 241 has a motion vector decoding unit 241A and a prediction signal generation unit 241B.
[0104] The inter prediction unit 241 is an example of a prediction unit configured to generate a prediction signal included in a prediction block based on a motion vector.
[0105] The motion vector decoding unit 241A includes an AMVP unit 241A1, a merge unit 241A2, and an MMVD unit 241A3. Here, the motion vector decoding unit 241A is configured to obtain a motion vector by decoding a target frame and a reference frame input from the frame buffer 260, and control data received from the image encoding device 100.
[0106] The AMVP unit 241A1 is configured to perform adaptive motion vector prediction (AMVP) decoding, which uses an index indicating a motion vector prediction (MVP) and a motion vector difference (MVD), and a list and index of a reference frame, to decode a motion vector. Since a known method can be adopted as the AMVP, details thereof will be omitted.
[0107] The merging unit 241A2 is configured to receive a merge index from the image encoding device 100 and decode a motion vector.
[0108] Specifically, the merging unit 241A2 is configured to construct a merge list in the same manner as the image encoding device 100, and to obtain a motion vector corresponding to the received merge index from the constructed merge list. Since a known method can be adopted as a method for constructing the merge list, details thereof will be omitted.
[0109] The MMVD unit 241A3 selects a motion vector from the merge list constructed by the merge unit 241A2, based on the syntax related to the MMVD transmitted from the image encoding device 100, and further modifies the selected motion vector. Details will be described later.
[0110] The prediction signal generating unit 241B is configured to generate a prediction signal based on the motion vector output from the motion vector decoding unit 241A. Since a known method can be adopted as a method for generating a prediction signal from a motion vector, details thereof will be omitted.
[0111] (MMVD section 241A3) The MMVD unit 241A3 according to this embodiment will be described below with reference to FIGS.
[0112] 13 and 14 are diagrams showing a method of correcting a motion vector by the MMVD unit 241A3 according to this embodiment.
[0113] The MMVD unit 241A3 is configured to select a motion vector from the merge list constructed by the merge unit 241A2 based on the values of syntax (mmvd_merge_flag, mmvd_cand_flag, mmvd_distance_idx, mmvd_direction_idx, ph_mmvd_fullpel_only_flag) related to the MMVD decoded by the decoding unit 210, and to modify such motion vector.
[0114] First, the MMVD unit 241A3 is configured to execute the MMVD when the value of mmvd_merge_flag is "1", and not to execute the MMVD when the value of mmvd_merge_flag is "0".
[0115] Secondly, the MMVD unit 241A3 is configured to select a motion vector from the merge list based on the value of mmvd_cand_flag when MMVD is executed.
[0116] Specifically, the MMVD unit 241A3 is configured to select the 0th motion vector in the merge list as the motion vector to be corrected when the value of mmvd_cand_flag is "0", and to select the 1st motion vector in the merge list as the motion vector to be corrected when the value of mmvd_cand_flag is "1".
[0117] If there are not two or more motion vector candidates in the merge list, the MMVD unit 241A3 is configured to regard the value of mmvd_cand_flag as "0".
[0118] In addition, in the present embodiment, the value of mmvd_cand_flag has been described as being either "0" or "1", but the design may be changed as desired by the designer.
[0119] Third, the MMVD unit 241A3 is configured to modify the selected motion vector based on the values of mmvd_distance_idx, mmvd_direction_idx, and ph_mmvd_fullpel_only_flag shown in FIG. 10 and FIG.
[0120] Hereinafter, with reference to FIG. 13, a method of deriving the magnitude (distance) of the motion vector difference to be added to the motion vector selected by the MMVD unit 2413A3 will be described.
[0121] Specifically, the magnitude (distance) of the motion vector difference is derived based on the decoded values of mmvd_distance_idx and ph_mmvd_fullpel_only_flag.
[0122] For example, as shown in FIG. 13, 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".
[0123] Here, MmvdDistance[x0][y0] is an internal parameter indicating the correction distance of the motion vector by MMVD, that is, the distance of the motion vector difference to be added to the selected motion vector.
[0124] When the value of mmvdDistance[x0][y0] is set to “2”, the initial value of the transmission accuracy of the motion vector differential, that is, 1 / 4 accuracy, is multiplied by “2” and 1 / 2 distance is added to the selected motion vector in the direction derived by mmvd_direction_idx described later.
[0125] When the value of ph_mmvd_fullpel_only_flag is "1", the value multiplied by the initial value of the transmission accuracy of the above-mentioned motion vector difference starts from "4", so that the transmission accuracy of the added motion vector difference is always integer accuracy.
[0126] In the above, a method of deriving the correction distance of the MMVD motion vector using ph_mmvd_fullpel_only_flag has been described, but ph_mmvd_fullpel_only_flag may be replaced with the above-mentioned slice_mmvd_fullpel_only_flag.
[0127] Next, a method of deriving the direction of the motion vector difference to be added to the motion vector selected by the MMVD unit 241A3 will be described with reference to FIG.
[0128] Specifically, the direction of the motion vector difference is derived based on the decoded value of mmvd_direction_idx.
[0129] For example, as shown in FIG. 14, the value of MmvdSign[x0][y0][0] and the value of MmvdSign[x0][y0][1] are derived depending on the value of mmvd_direction_idx ranging from "0" to "3."
[0130] The motion vector differential based on MMVD is derived as MmvdOffset[x0][y0][0] and MmvdOffset[x0][y0][1] derived from MmvdDistance[x0][y0], MmvdSign[x0][y0][0], and MmvdSign[x0][y0][1] as follows.
[0131] MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)×MmvdSign[x0][y0][0] MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)×MmvdSign[x0][y0][1] As described above, the motion vector differential derived by the MMVD unit 241A3, i.e., MmvdOffset, is added to the selected motion vector to correct the motion vector, thereby improving the accuracy of the motion vector and improving prediction performance, which is expected to improve encoding performance.
[0132] The above-described image encoding device 100 and image decoding device 200 may be realized as a program that causes a computer to execute each function (each process).
[0133] In each of the above-described embodiments, the present invention has been described by taking as an example its application to the image encoding device 100 and the image decoding device 200. However, the present invention is not limited to this, and can be similarly applied to an image encoding system and an image decoding system having the functions of the image encoding device 100 and the image decoding device 200. [Explanation of symbols]
[0134] 10. Image processing system 100...Image encoding device 111, 241…Inter prediction section 112, 242...Intra prediction section 121…Subtractor 122, 230…Adder 131...Transformation and quantization section 132, 220...Inverse transform and inverse quantization unit 140...encoding section 150, 250...In-loop filter processing section 160, 260... frame buffer 200...Image decoding device 210…Decoding section 241A...Motion vector decoding unit 241A1…AMVP section 241A2…Merge section 241A3…MMVD section 241B…Prediction signal generation unit
Claims
1. An image decoding device, a decoding unit configured to decode a first syntax for controlling a transmission accuracy of a merge motion vector difference in a sequence to be decoded, When the value of the first syntax is “1”, the first syntax indicates that either decimal precision or integer precision can be used as the transmission precision of the merge motion vector difference in the sequence to be decoded; When the value of the first syntax is “0”, the first syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the sequence to be decoded; When the value of the first syntax is “1”, the decoding unit is configured to decode a second syntax that controls a transmission accuracy of a merge motion vector difference in a picture to be decoded; When a value of the first syntax is “0”, the decoding unit is configured not to decode the second syntax; When the value of the second syntax is “1”, the second syntax indicates that integer precision is used as a transmission precision of a merge motion vector differential in the decoding target picture, When the value of the second syntax is “0”, the second syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the decoding target picture; The image decoding device is characterized in that the decoding unit derives the distance of the motion vector differential to be added to the merge motion vector based on the second syntax and a third syntax used to determine the distance of the motion vector differential to be added to the motion vector.
2. 1. An image decoding method, comprising: A step A of decoding a first syntax for controlling transmission accuracy of a merge motion vector difference in a sequence to be decoded; A step B of decoding a second syntax for controlling a transmission accuracy of a merge motion vector difference in a picture to be decoded when the value of the first syntax is “1”, and not decoding the second syntax when the value of the first syntax is “0”, When the value of the first syntax is “1”, the first syntax indicates that either decimal precision or integer precision can be used as the transmission precision of the merge motion vector difference in the sequence to be decoded; When the value of the first syntax is “0”, the first syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the sequence to be decoded; When the value of the second syntax is “1”, the second syntax indicates that integer precision is used as a transmission precision of a merge motion vector differential in the decoding target picture, When the value of the second syntax is “0”, the second syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the decoding target picture; An image decoding method characterized in that in step A, a distance of a motion vector difference to be added to a merge motion vector is derived based on the second syntax and a third syntax used to determine the distance of a motion vector difference to be added to a motion vector.
3. A program for causing a computer to function as an image decoding device, The image decoding device includes a decoding unit configured to decode a first syntax for controlling a transmission accuracy of a merge motion vector difference in a sequence to be decoded, When the value of the first syntax is “1”, the first syntax indicates that either decimal precision or integer precision can be used as the transmission precision of the merge motion vector difference in the sequence to be decoded; When the value of the first syntax is “0”, the first syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the sequence to be decoded; When the value of the first syntax is “1”, the decoding unit is configured to decode a second syntax that controls a transmission accuracy of a merge motion vector difference in a picture to be decoded; When a value of the first syntax is “0”, the decoding unit is configured not to decode the second syntax; When the value of the second syntax is “1”, the second syntax indicates that integer precision is used as a transmission precision of a merge motion vector differential in the decoding target picture, When the value of the second syntax is “0”, the second syntax indicates that decimal precision is used as a transmission precision of a merge motion vector difference in the decoding target picture; The program characterized in that the decoding unit derives a distance of a motion vector differential to be added to a merge motion vector based on the second syntax and a third syntax used to determine the distance of a motion vector differential to be added to a motion vector.
Citation Information
Patent Citations
JPP7387806B