Image decoding device, image decoding method and program

By using a fixed-length code for the syntax controlling the maximum block size of the transform skip, the decoding process is simplified, addressing inefficiencies in existing image decoding technologies and ensuring stability in device specifications.

JP7680607B2Active Publication Date: 2025-05-20KDDI CORP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024098855
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-06-19
Publication Date
2025-05-20
Estimated Expiration
2040-06-08

AI Technical Summary

Technical Problem

The existing image decoding technologies, as described in Non-Patent Document 1, face inefficiencies due to the use of exponential-Golomb codes for controlling the maximum block size of the transform skip, leading to increased code lengths for values other than the smallest one, complicating the decoding process.

Method used

The implementation of a fixed-length code for the syntax that controls the maximum block size of the transform skip, simplifying the decoding process by limiting the syntax values to four possible values, expressed as a 2-bit code, thereby reducing the bit requirement and ensuring stability in device specifications.

Benefits of technology

This approach simplifies the decoding process by reducing the bit requirement for expressing the maximum block size, enhancing the stability and efficiency of the decoding process in image decoding devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007680607000001
    Figure 0007680607000001
  • Figure 0007680607000002
    Figure 0007680607000002
  • Figure 0007680607000003
    Figure 0007680607000003
Patent Text Reader

Abstract

To simplify a decoding process by using a fixed-length code for a syntax that controls the maximum block size of a transform skip.SOLUTION: An image decoding device 200 according to the present invention includes a decoding unit 210 configured to, in a case in which a flag controlling whether BDOF is disabled in a picture is not included in a picture header, and when bi-prediction is not applicable to the picture, implicitly define the value of the flag controlling whether BDOF is disabled in the picture to a value indicating that BDOF is not available.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to an image decoding device, an image decoding method, and a program. [Background technology]

[0002] Non-Patent Document 1 discloses a configuration that includes a syntax for controlling the maximum block size of a transform skip and that decodes the syntax as an exponential-Golomb code. [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, in Non-Patent Document 1, the maximum block size of the transform skip can have four different values. When the four different values ​​are exponential-Golomb codes, the code length of the values ​​other than the smallest one among the four different values ​​becomes larger than that of a fixed-length code.

[0005] Therefore, the present invention has been made in consideration of the above-mentioned problems, and aims to provide an image decoding device, an image decoding method, and a program that can simplify the decoding process by making the syntax that controls the maximum block size of the transform skip a fixed-length code. [Means for solving the problem]

[0006] A first feature of the present invention is an image decoding device having a decoding unit configured to, when a flag controlling whether or not DMVR is disabled in a picture is not included in a picture header, and when bi-prediction is not applicable to the picture, implicitly define the value of the flag controlling whether or not DMVR is disabled in the picture to a value indicating that DMVR is not available.

[0007] A second feature of the present invention is an image decoding method comprising the steps of: if a picture header does not include a flag that controls whether BDOF is disabled in a picture, and bi-prediction is not applicable to the picture, implicitly defining a value of the flag that controls whether BDOF is disabled in the picture to a value that means BDOF is not available.

[0008] A third feature of the present invention is a program for use in an image decoding device, which causes a computer to execute a process of implicitly defining, when a picture header does not include a flag that controls whether BDOF is disabled in a picture, a value of the flag that controls whether BDOF is disabled in the picture to be a value that means BDOF is disabled, when bi-prediction is not applicable to the picture. Effect of the Invention

[0009] According to the present invention, it is possible to provide an image decoding device, an image decoding method, and a program that can simplify the decoding process by making the syntax that controls the maximum block size of the transform skip a fixed-length code. [Brief description of the drawings]

[0010] [Figure 1] FIG. 1 illustrates an example of a configuration of an image processing system 10 according to an embodiment. [Diagram 2] FIG. 2 is a diagram illustrating an example of functional blocks of an image decoding device 200 according to an embodiment. [Diagram 3]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. [Figure 4] 13 is an example of control data included in SPS211. [Diagram 5] 13 is an example of control data included in the PPS 212. [Figure 6] 2 is an example of control data included in the picture header 213. [Figure 7] 13 is an example of control data included in slice header 214A / 214B. [Figure 8] 2 is a diagram showing an example of functional blocks of an in-loop filtering unit 250 of an image decoding device 200 according to an embodiment. FIG. [Figure 9] FIG. 2 is a diagram illustrating an example of functional blocks of a deblocking filter unit 250A of an in-loop filtering process unit 250 of an image decoding device 200 according to an embodiment. [Figure 10] 13 is a flowchart showing an example of a processing flow of a filter determination unit 254A / 254B of an in-loop filtering unit 250 of an image decoding device 200 according to an embodiment. [Figure 11] FIG. 11 is a diagram showing an example of a table used in the processing flow of a filter determination unit 254A / 254B of an in-loop filtering unit 250 of an image decoding device 200 according to an embodiment. [Figure 12] FIG. 2 is a diagram illustrating an example of functional blocks of an image encoding device 100 according to an embodiment. [Figure 13] A figure showing an example of syntax values ​​that control the maximum block size to which transform skip is applied. [Figure 14] 1 is a diagram showing an example of functional blocks of an inter prediction unit 241 of an image decoding device 200 according to an embodiment. FIG. 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 Fig. 1 to Fig. 14. Fig. 1 is a diagram showing an image processing system 10 according to the present embodiment.

[0013] As shown in FIG. 1, an image processing system 10 includes an image encoding device 100 and an image decoding device 200.

[0014] The image encoding device 100 is configured to generate encoded data by encoding an input image signal. The image decoding device 200 is configured to generate an output image signal by decoding the encoded data.

[0015] Here, the encoded data may be transmitted from the image encoding device 100 to the image decoding device 200 via a transmission path. Alternatively, 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 Decoding Device 200) Hereinafter, the image decoding device 200 according to this embodiment will be described with reference to Fig. 2. Fig. 2 is a diagram showing an example of functional blocks of the image decoding device 200 according to this embodiment.

[0017] As shown in FIG. 2, 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.

[0018] 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.

[0019] Here, for example, the decoding is of entropy coded data that assigns codes of different lengths based on the probability of occurrence of coefficient level values.

[0020] The decoding unit 210 may be configured to obtain the control data by a decoding process of the encoded data.

[0021] Here, the control data may include size data such as a coding block (CU: Coding Unit) size, a prediction block (PU: Prediction Unit) size, a transform block (TU: Transform Unit) size, and the like.

[0022] 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.

[0023] 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.

[0024] Here, the unfiltered decoded signal forms a reference block used by the intra prediction unit 242 .

[0025] The inter prediction unit 241 is configured to generate a prediction signal by inter prediction (inter-frame prediction).

[0026] Specifically, the inter prediction unit 241 is configured to generate a prediction signal for each prediction block 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.

[0027] The intra prediction unit 242 is configured to generate a prediction signal by intra prediction (intra-frame prediction).

[0028] 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.

[0029] The in-loop filtering unit 250 is configured to perform filtering on the unfiltered decoded signal output from the adder 230 , and to output the filtered decoded signal to the frame buffer 260 .

[0030] Here, the in-loop filter process may be composed of a plurality of filter processes. For example, the filter processes include a deblocking filter process that reduces distortion occurring at the boundary of a block (an encoding block, a prediction block, a transformation block, or a subblock obtained by dividing them), and an adaptive loop filter process that switches filters based on filter coefficients, filter selection information, local characteristics of an image pattern, and the like transmitted from the image encoding device 100.

[0031] The frame buffer 260 is configured to store reference frames used by the inter prediction unit 241 .

[0032] Here, the filtered decoded signal forms a reference frame used by the inter prediction unit 241.

[0033] (Decoding unit 210) Hereinafter, the control data decoded by the decoding unit 210 will be described with reference to FIGS.

[0034] FIG. 3 shows an example of the structure of encoded data (bit stream) received by the decoding unit 210. In FIG.

[0035] The bitstream may include an SPS 211 at the beginning. The SPS 211 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.

[0036] In such a bitstream, a PPS 212 may be included next to an SPS 211. A 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. Also, each PPS 212 includes at least SPS id information for specifying an SPS 211 corresponding to each PPS 212.

[0037] In such a bitstream, a picture header 213 may be included next to 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.

[0038] In such a bitstream, a slice header 214A may be included 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 information of the above-mentioned picture header 213 may be included as part of the slice header 214A.

[0039] In such a bitstream, slice data 215A may be included following the slice header 214A. The slice data 215A may include the above-mentioned coefficient level values, size data, and the like.

[0040] As described above, each slice data 214A / 215A corresponds to one slice header 215A / 215B, one picture header 213, one PPS 212, and one SPS 211. As described above, the picture header 213 specifies which PPS 212 to reference by using a PPS id, and further, the PPS 212 specifies which SPS 211 to reference by using an SPS id, so that common SPS 211 and PPS 212 can be used for multiple slice data 215A / 215B.

[0041] In other words, the SPS 211 and the PPS 212 do not necessarily need to be transmitted for each picture and for each slice. For example, as shown in Fig. 3, the bitstream may be configured such that the SPS 211 and the PPS 212 are not coded immediately before the slice headers 214A / 214B.

[0042] Note that the configuration in Fig. 3 is merely an example. As long as the slice headers 214A / 214B, 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 data may be shaped into a different configuration from that in Fig. 3 when transmitted.

[0043] FIG. 4 is an example of the control data contained in the SPS 211.

[0044] As described above, the SPS 211 includes at least SPS id information (sps_seq_parameter_set_id) for identifying each SPS 211.

[0045] SPS211 may include chroma format information (chroma_format_idc) of the sequence. For example, it can be defined that a value of "0" of chroma_format_idc means 4:0:0 format (monochrome), a value of "1" of chroma_format_idc means 4:2:0 format, a value of "2" of chroma_format_idc means 4:2:2 format, and a value of "3" of chroma_format_idc means 4:4:4 format.

[0046] Also, when the value of chroma_format_idc is "3", that is, when the format is 4:4:4, SPS211 may additionally include separate plane suitability information (separate_colour_plane_flag).

[0047] For example, if the value of separate_colour_plane_flag is "0", the decoding unit 210 may be configured to perform decoding using the correlation between the three colour planes (e.g., YCbCr, RGB, etc.), and if the value of separate_colour_plane_flag is "1", it may be configured to decode these colour planes independently (treating each as a monochrome image).

[0048] If separate_colour_plane_flag is not included in SPS 211, decoding unit 210 may regard the value of separate_colour_plane_flag as "0".

[0049] Furthermore, the decoding unit 210 may set the value of the variable ChromaArrayType by referring to the above-mentioned values ​​of chroma_format_idc and separate_colour_plane_flag.

[0050] For example, when the value of separate_colour_plane_flag is "0", the decoding unit 210 may set the value of ChromaArrayType to the same value as the value of chroma_format_idc.

[0051] Furthermore, when the value of separate_colour_plane_flag is "1", the decoding unit 210 may set the value of chroma_format_idc to "0".

[0052] With the above definitions, ChromaArrayType=0 means either a 4:0:0 format (monochrome) or a 4:4:4 format in which each color plane is decoded as a monochrome image.

[0053] In other words, when ChromaArrayType=0, it can be interpreted that no chrominance data exists in the sequence, and when ChromaArrayType!=0, it can be interpreted that chrominance data exists in the sequence.

[0054] The SPS 211 may include a flag (sps_transform_skip_enabled_flag) that controls whether or not to apply the transform skip in the sequence. For example, when the value of the flag is "1", the transform skip may be defined as applicable, and when the value of the flag is "0", the transform skip may be defined as inapplicable.

[0055] The SPS211 may include a syntax (sps_log2_transform_skip_max_size_minus2) that controls the maximum block size to which the transform skip is applied when the transform skip is applicable to the sequence. The value of this syntax may be expressed as a 2-bit fixed-length code that takes any integer value from "0" to "3". Here, when the value of this syntax is "0", "1", "2", or "3", the maximum block size may be specified as "4", "8", "16", or "32", respectively.

[0056] As described above, the decoding unit 210 may be configured to decode the syntax that controls the maximum block size of the transform skip into four possible values: “0”, “1”, “2”, and “3”, as a 2-bit fixed-length code.

[0057] Here, by decoding as a fixed-length code rather than a variable-length code such as an exponential-Golomb code, the decoding process can be simplified.

[0058] Furthermore, since the syntax values ​​are limited to only four values, "0" to "3," fixed-length codes can be expressed with two bits, as shown in Fig. 13. In this case, for example, if you want to set the maximum block size to "8," "16," or "32," this can be expressed with fewer bits than when using exponential-Golomb codes.

[0059] In addition, since the maximum value that the maximum block size of the conversion skip can take ("32" in the above example) affects the specifications and design of processes other than the conversion skip, by deliberately setting it to a fixed length of 2 bits to eliminate extensibility, it is possible to ensure the stability of the specifications and the devices designed based on them.

[0060] The SPS 211 may include a flag (sps_bdof_enabled_flag) that controls whether or not Bi-Directional Optical Flow (BDOF) is enabled in the sequence.

[0061] SPS211 may include a flag (sps_bdof_control_present_in_ph_flag) that controls whether or not to include a flag indicating whether or not BDOF is disabled on a picture-by-picture basis in the picture header when the value of sps_bdof_enabled_flag is "1", i.e., when BDOF is enabled in the sequence, in the picture header described below.

[0062] The SPS 211 may include a flag (sps_dmvr_enabled_flag) that controls whether or not Decoder-side Motion Vector Refinement (DMVR) is enabled for the sequence.

[0063] SPS211 may include a flag (sps_dmvr_control_present_in_ph_flag) that controls whether or not to include a flag indicating whether or not to disable DMVR on a picture-by-picture basis in the picture header when the value of sps_dmvr_enabled_flag is "1", i.e., when DMVR is enabled in the sequence, in the picture header described below.

[0064] FIG. 5 is an example of the control data included in the PPS 212.

[0065] 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 pps_seq_parameter_set_id, which is SPS id information for specifying the SPS 211 corresponding to the PPS 212.

[0066] The PPS 212 may include a flag (pps_chroma_tool_offsets_present_flag) that indicates whether the PPS 212 includes chrominance-related syntax.

[0067] For example, when the value of pps_chroma_tool_offsets_present_flag is "0", it may be defined that chrominance-related syntax is not included, and when the value of pps_chroma_tool_offsets_present_flag is "1", it may be defined that chrominance-related syntax is included.

[0068] Note that when ChromaArrayType=0, that is, when no chrominance data exists in the sequence, the value of pps_chroma_tool_offsets_present_flag may be restricted to be “0”.

[0069] Alternatively, if separate_colour_plane_flag is not present, then when the value of chroma_format_idc is "0", i.e., when no color difference data is present in the sequence, the value of pps_chroma_tool_offsets_present_flag may be restricted to be "0".

[0070] The PPS 212 may include a flag (deblocking_filter_control_present_flag) indicating whether the PPS 212 includes syntax for controlling the deblocking filter process described below.

[0071] For example, when the value of deblocking_filter_control_present_flag is "0", it may be defined as not including syntax for controlling deblocking filter processing, and when the value of deblocking_filter_control_present_flag is "1", it may be defined as including syntax for controlling deblocking filter processing.

[0072] Furthermore, when the value of deblocking_filter_control_present_flag is "1", the PPS 212 may include deblocking_filter_override_enabled_flag as a syntax for controlling the deblocking filter process.

[0073] For example, when the value of deblocking_filter_override_enabled_flag is "1", it may be defined that the deblocking filter processing control information contained in PPS 212 is permitted to be overwritten by the information contained in the picture header 213 or slice header 214A / 214B described below, and when the value of deblocking_filter_override_enabled_flag is "0", it may be defined that the overwriting of such deblocking filter processing control information is not permitted.

[0074] Furthermore, if the PPS 212 does not include the deblocking_filter_override_enabled_flag, the decoding unit 210 may regard the value of the deblocking_filter_override_enabled_flag as "0".

[0075] The PPS 212 may include a flag (pps_deblocking_filter_disabled_flag) that defines whether deblocking filter processing is enabled or disabled on a picture-by-picture basis.

[0076] For example, it may be defined that deblocking filter processing is enabled when pps_deblocking_filter_disabled_flag=0, and that deblocking filter processing is disabled when pps_deblocking_filter_disabled_flag=1.

[0077] Furthermore, if the PPS 212 does not include pps_deblocking_filter_disabled_flag, the decoding unit 210 may regard the value of pps_deblocking_filter_disabled_flag as "0 (deblocking filter processing is enabled)."

[0078] PPS212 may include pps_beta_offset_div2 and pps_tc_offset_div2 when the value of pps_deblocking_filter_disabled_flag is "0" (when deblocking filter processing is enabled).

[0079] The values ​​of pps_beta_offset_div2 and pps_tc_offset_div2 are used when calculating the values ​​of variables β and tC used in deblocking filter processing of a luminance signal (Y signal) which will be described later.

[0080] If the PPS 212 does not include pps_beta_offset_div2 and pps_tc_offset_div2, the decoding unit 210 may regard the respective values ​​as "0".

[0081] Furthermore, when the value of pps_chroma_tool_offsets_present_flag is "1", PPS212 may include pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2 and pps_cb_tc_offset_div2 used to calculate the variables β and tC used in the deblocking filter processing of each of the color difference signals (Cb signal and Cr signal).

[0082] If PPS 212 does not include pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, and pps_cb_tc_offset_div2, decoding unit 210 may regard each of these values ​​as 0.

[0083] As described above, only when the value of pps_chroma_tool_offsets_present_flag indicates that the PPS 212 includes syntax related to chrominance, the syntax (pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, and pps_cb_tc_offset_div2) for controlling deblocking filter processing of the chrominance signal is included in the PPS 212. This prevents unnecessary syntax from being included in the PP212S when the picture is in 4:0:0 format or when the picture is in 4:4:4 format and each color plane is decoded as a monochrome image, i.e., when chrominance data does not exist. This makes it possible to reduce unnecessary decoding processing and the bit amount of the PPS 212.

[0084] Furthermore, when the value of deblocking_filter_override_enabled_flag is "1", the PPS 212 may include a flag (dbf_info_in_ph_flag) indicating whether or not information for controlling deblocking filter processing is included in the picture header 213 described below.

[0085] For example, when dbf_info_in_ph_flag=0, it may be defined that the picture header 213 does not include deblocking filter process control information, and when dbf_info_in_ph_flag=1, it may be defined that the picture header 213 includes deblocking filter process control information.

[0086] Furthermore, if the PPS 212 does not include dbf_info_in_ph_flag, the decoding unit 210 may regard the value of dbf_info_in_ph_flag as "0".

[0087] A PPS 212 may include a flag (pps_no_pic_partition_flag) that controls whether the picture that references the PPS can be divided into multiple slices or tiles.

[0088] For example, when the value of pps_no_pic_partition_flag is "1", it may be defined that the picture that references the PPS is not divided into multiple slices or tiles.

[0089] Similarly, for example, when the value of pps_no_pic_partition_flag is "0", it may be defined that the picture that references the PPS may be divided into multiple slices or tiles.

[0090] The PPS 212 may include a flag (pps_rpl_info_in_ph_flag) that controls whether or not to include reference picture list information in a picture header, which will be described later.

[0091] For example, it may be defined that when the value of pps_rpl_info_in_ph_flag is "1", the picture header includes reference picture list information, and when the value of pps_rpl_info_in_ph_flag is "0", the picture header does not include reference picture list information.

[0092] FIG. 6 is an example of the control data included in the picture header 213.

[0093] As described above, the picture header 213 includes at least ph_pic_parameter_set_id, which is PPS id information for specifying the PPS 212 corresponding to the picture header 213 .

[0094] The picture header 213 may include a flag (ph_inter_slice_allowed_flag) that controls whether or not the picture may include slices that can use inter prediction.

[0095] For example, when the value of ph_inter_slice_allowed_flag is "0", the picture is prohibited from including slices that can use inter prediction, and when the value of ph_inter_slice_allowed_flag is "1", the picture is allowed to include slices that can use inter prediction.

[0096] When decoding the picture header 213, a flag (BiPredEnabledFlag) may be defined that indicates whether bi-prediction is applicable in the picture.

[0097] The flag may be defined such that when the value of the flag is "1", it means that bi-prediction is applicable in the picture, and when the value of the flag is "0", it means that bi-prediction is not applicable in the picture.

[0098] Whether or not bi-prediction is applicable in the picture may be determined based on information such as the value of pps_rpl_info_in_ph_flag and the number of entries in the reference picture list (num_ref_entries[1][RplsIdx[1]]).

[0099] When the value of BiPredEnabledFlag is "1" and the value of sps_bdof_control_present_in_ph_flag is "1", the picture header 213 may include a flag (ph_bdof_disabled_flag) that controls whether or not BDOF is disabled in the picture.

[0100] For example, when the value of ph_bdof_disabled_flag is "0", it may be defined that BDOF is usable for the picture, and when the value of ph_bdof_disabled_flag is "1", it may be defined that BDOF is not usable for the picture.

[0101] Furthermore, when ph_bdof_disabled_flag is not included in the picture header 213, that is, when ph_bdof_disabled_flag is not decoded, the value of ph_bdof_disabled_flag may be implicitly defined as follows.

[0102] When the picture header 213 does not include ph_bdof_disabled_flag and the value of BiPredEnabledFlag is "0", i.e., when bi-prediction cannot be applied to the picture, the decoding unit 210 may consider the value of ph_bdof_disabled_flag to be "1", i.e., BDOF cannot be used.

[0103] Furthermore, when the picture header 213 does not include ph_bdof_disabled_flag and the value of sps_bdof_control_present_in_ph_flag is "1", the decoding unit 210 may regard the value of ph_bdof_disabled_flag as "1", that is, that BDOF is not available.

[0104] In addition, when the picture header 213 does not include ph_bdof_disabled_flag, the value of sps_bdof_control_present_in_ph_flag is "0", and the value of BiPredEnabledFlag is "1" (i.e., when bi-prediction is applicable to the picture), the decoding unit 210 may regard the value of ph_bdof_disabled_flag as "1-sps_bdof_enabled_flag".

[0105] In other words, if the picture header does not include a flag that controls whether BDOF is disabled in the picture, and bi-prediction is not applicable to the picture, the decoding unit 210 may be configured to implicitly define the value of the flag that controls whether BDOF is disabled in the picture as a value that means that BDOF is not available.

[0106] It should be noted that BDOF is a process that can be applied only when the corresponding block is a block for which bi-prediction is performed.

[0107] With the above configuration, when determining whether or not to apply BDOF based on a plurality of application conditions for each block, as described below, by including a condition that the value of ph_bdof_disabled_flag is "0" as one of the determination conditions, in a picture to which bi-prediction cannot be applied and to which BDOF cannot be applied, the value of ph_bdof_disabled_flag becomes "1", so that it can be determined instantly that BDOF is not to be applied. This eliminates the need to check other application conditions, and reduces the amount of processing.

[0108] When the value of BiPredEnabledFlag is "1" and the value of sps_dmvr_control_present_in_ph_flag is "1", the picture header 213 may include a flag (ph_dmvr_disabled_flag) that controls whether or not DMVR is disabled in the picture.

[0109] For example, when the value of ph_dmvr_disabled_flag is "0", it may be defined that DMVR can be used in the picture, and when the value of ph_dmvr_disabled_flag is "1", it may be defined that DMVR cannot be used in the picture.

[0110] Furthermore, when the picture header 213 does not include ph_dmvr_disabled_flag, that is, when ph_dmvr_disabled_flag is not decoded, the value of ph_dmvr_disabled_flag may be implicitly defined as follows.

[0111] When the picture header 213 does not include ph_dmvr_disabled_flag and the value of BiPredEnabledFlag is "0", i.e., when bi-prediction cannot be applied to the picture, the decoding unit 210 may consider the value of ph_dmvr_disabled_flag to be "1", i.e., DMVR cannot be used.

[0112] Furthermore, when the picture header 213 does not include ph_dmvr_disabled_flag and the value of sps_dmvr_control_present_in_ph_flag is "1", the decoding unit 210 may regard the value of ph_dmvr_disabled_flag as "1", that is, DMVR cannot be used.

[0113] In addition, when the picture header 213 does not include ph_dmvr_disabled_flag, the value of sps_dmvr_control_present_in_ph_flag is "0", and the value of BiPredEnabledFlag is "1" (i.e., when bi-prediction is applicable to the picture), the decoding unit 210 may regard the value of ph_dmvr_disabled_flag as "1-sps_dmvr_enabled_flag".

[0114] In other words, if the picture header does not include a flag that controls whether DMVR is disabled in the picture, and bi-prediction is not applicable to the picture, the decoding unit 210 may be configured to implicitly define the value of the flag that controls whether DMVR is disabled in the picture as a value that means that DMVR is not available.

[0115] It should be noted that DMVR is a process that can be applied only when the corresponding block is a block for which bi-prediction is performed.

[0116] With the above configuration, when determining whether or not to apply DMVR based on multiple application conditions for each block, as described below, by including a condition that the value of ph_dmvr_disabled_flag is "0" as one of the determination conditions, in pictures to which DMVR cannot be applied and bi-prediction cannot be applied, the value of ph_dmvr_disabled_flag becomes "1", making it possible to instantly determine that DMVR is not to be applied. This eliminates the need to check other application conditions, thereby reducing the amount of processing.

[0117] Furthermore, if the value of the deblocking_filter_override_enabled_flag and the value of the dbf_info_in_ph_flag associated with the PPS 212 specified by the ph_pic_parameter_set_id are both "1", the picture header 213 may include the ph_deblocking_filter_override_flag.

[0118] If the picture header 213 does not include ph_deblocking_filter_override_flag, the decoding unit 210 may regard the value of ph_deblocking_filter_override_flag as "0".

[0119] If the value of ph_deblocking_filter_override_flag is "1", the picture header 213 may include ph_deblocking_filter_disabled_flag.

[0120] If ph_deblocking_filter_disabled_flag=1, it means that deblocking filtering is disabled in the slice corresponding to the picture header 213.

[0121] On the other hand, if ph_deblocking_filter_disabled_flag=0, this means that deblocking filtering is enabled in the slice corresponding to the picture header 213 in question.

[0122] If the picture header 213 does not include ph_deblocking_filter_disabled_flag, the decoding unit 210 may consider the value of ph_deblocking_filter_disabled_flag to be the same as the value of pps_deblocking_filter_disabled_flag.

[0123] If the value of ph_deblocking_filter_disabled_flag is "0" (if deblocking filtering is enabled), the picture header 213 may include ph_beta_offset_div2 and ph_tc_offset_div2.

[0124] The values ​​of ph_beta_offset_div2 and ph_tc_offset_div2 are used when calculating the values ​​of variables β and tC used in deblocking filter processing of a luminance signal (Y signal) which will be described later.

[0125] If ph_beta_offset_div2 and ph_tc_offset_div2 are not included in the picture header 213, the decoding unit 210 may regard the respective values ​​as being the same as pps_beta_offset_div2 and pps_tc_offset_div2.

[0126] Furthermore, when the value of pps_chroma_tool_offsets_present_flag is "1", the picture header 213 may include ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2 used to calculate the variables β and tC used in the deblocking filter processing of each of the color difference signals (Cb signal and Cr signal).

[0127] If the picture header 213 does not include ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2, and if the value of pps_chroma_tool_offsets_present_flag is "1", the decoding unit 210 may consider each value to be the same as pps_cb_beta_offset_div2, pps_cb_tc_offset_div2, pps_cr_beta_offset_div2, and pps_cr_tc_offset_div2 used in calculating the variable β and variable tC used in deblocking filter processing of the color difference signal transmitted in PPS.

[0128] If the picture header 213 does not include ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2, and if the value of pps_chroma_tool_offsets_present_flag is "0", the decoding unit 210 may consider each value to be the same as the ph_beta_offset_div2 and ph_tc_offset_div2 used when calculating the values ​​of the variables β and tC used in deblocking filter processing of the luminance signal (Y signal).

[0129] As described above, the decoding unit 210 may be configured to, when the syntax for controlling the deblocking filter processing of the Cb and Cr signals in the picture header is not decoded, and when the syntax for controlling the deblocking filter processing of the Cb and Cr signals in the picture parameter set is decoded, regard the syntax value for controlling the deblocking filter processing of the Cb and Cr signals in the picture header as the value of that syntax in the picture parameter set.

[0130] In addition, the decoding unit 210 may be configured to, if a syntax for controlling deblocking filter processing of a Cb signal or a Cr signal is not decoded in a picture parameter set, regard a syntax value for controlling deblocking filter processing of a Cb signal or a Cr signal in a picture header as a syntax value for controlling deblocking filter processing of a Y signal in a picture header.

[0131] Furthermore, as described above, the decoding unit 210 may be configured to control whether or not the syntax that controls the deblocking filter processing of the Cb signal and the Cr signal in the picture parameter set is decoded depending on the value of pps_chroma_tool_offsets_present_flag, and if the syntax that controls the deblocking filter processing of the Cb signal and the Cr signal in the picture header is not decoded, when the value of pps_chroma_tool_offsets_present_flag is "1", the syntax value that controls the deblocking filter processing of the Cb signal and the Cr signal in the picture header is regarded as the value of that syntax in the picture parameter set, and when the value of pps_chroma_tool_ is "0", the syntax value that controls the deblocking filter processing of the Cb signal and the Cr signal in the picture header is regarded as the value of the syntax that controls the deblocking filter processing of the Y signal in the picture header.

[0132] In this way, if the syntax for the luminance signal and the chrominance signal are set to different values ​​in the picture parameter set, different values ​​are used for luminance and chrominance in the picture header, and if there is no syntax for the chrominance signal in the picture parameter set, that is, if the same syntax value is used for the luminance signal and the chrominance signal, the same value is used for the luminance signal and the chrominance signal in the picture header. This makes it possible to omit transmission of the syntax in the picture header, reducing the amount of processing and the amount of bits required, while achieving fine parameter control according to the image quality.

[0133] By including syntax (ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2) for controlling deblocking filter processing of the chrominance signal in the picture header 213 only when the value of ChromaArrayType indicates that chrominance data exists, it is possible to prevent unnecessary syntax from being included in the picture header 213 when, for example, the picture is in 4:0:0 format or when the picture is in 4:4:4 format and each color plane is decoded as a monochrome image, that is, when chrominance data does not exist. This makes it possible to reduce unnecessary decoding processing and the bit amount of the picture header 213.

[0134] FIG. 7 is an example of control data included in the slice header 214A / 214B.

[0135] The slice header 214A / 214B may include picture_header_in_slice_header_flag.

[0136] When the value of picture_header_in_slice_header_flag is "1", the slice header 214A / 214B can include the syntax of the picture header 213 described in FIG. 6 at the position of picture_header_structure( ) shown in FIG.

[0137] In addition, if the value of deblocking_filter_override_enabled_flag and the value of dbf_info_in_ph_flag related to the PPS 212 specified by ph_pic_parameter_set_id in the picture header 213 to which the slice header 214A / 214B corresponds are both "1", the slice header 214A / 214B may include slice_deblocking_filter_override_flag.

[0138] If the slice header 214A / 214B does not include slice_deblocking_filter_override_flag, the decoding unit 210 may regard the value of slice_deblocking_filter_override_flag as "0".

[0139] When the value of slice_deblocking_filter_override_flag is “1”, the picture header 214A / 214B is May include slice_deblockling_filter_disabled_flag.

[0140] Here, slice_deblockling_filter_disabled_flag=1 means that deblocking filter processing is disabled in the slice, whereas slice_deblockling_filter_disabled_flag=0 means that deblocking filter processing is enabled in the slice.

[0141] If slice_deblockling_filter_disabled_flag is not included in the slice header 214A / 214B, the decoding unit 210 may consider the value of slice_deblockling_filter_disabled_flag to be the same value as ph_deblockling_filter_disabled_flag.

[0142] When the value of slice_deblockling_filter_disabled_flag is "0" (when deblocking filtering is enabled), the slice header 214A / 214B may include slice_beta_offset_div2 and slice_tc_offset_div2.

[0143] The values ​​of slice_beta_offset_div2 and slice_tc_offset_div2 are used when calculating the values ​​of variables β and tC used in deblocking filter processing of a luminance signal (Y signal) which will be described later.

[0144] If slice_beta_offset_div2 and slice_tc_offset_div2 are not included in the slice header 214A / 214B, the decoding unit 210 may regard the respective values ​​as being the same as ph_beta_offset_div2 and ph_tc_offset_div2.

[0145] Furthermore, when the value of pps_chroma_tool_offsets_present_flag is "1", the slice header 214A / 214B may include slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2 and slice_cr_tc_offset_div2 used to calculate the variables β and tC used in the deblocking filter processing of each of the color difference signals (Cb signal and Cr signal).

[0146] If slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, and slice_cr_tc_offset_div2 are not included in the slice header 214A / 214B, and if the value of pps_chroma_tool_offsets_present_flag is "1", the decoding unit 210 may consider each value to be the same as ph_cb_beta_offset_div2, ph_cb_tc_offset_div2, ph_cr_beta_offset_div2, and ph_cr_tc_offset_div2 used in calculating the variables β and tC used in the deblocking filter processing of the color difference signals (Cb signal and Cr signal), respectively.

[0147] If the slice header 214A / 214B does not include slice_cb_beta_offset_div2, slice_cb_tc_offset_div2, slice_cr_beta_offset_div2, and slice_cr_tc_offset_div2, and if the value of pps_chroma_tool_offsets_present_flag is "0", the decoding unit 210 may consider each value to be the same as the slice_beta_offset_div2 and slice_tc_offset_div2 used when calculating the values ​​of the variable β and variable tC used in the deblocking filter processing of the luminance signal (Y signal).

[0148] As described above, the decoding unit 210 may be configured to, when the syntax for controlling the deblocking filter processing of the Cb signal and the Cr signal in the slice header is not decoded, and when the syntax for controlling the deblocking filter processing of the Cb signal and the Cr signal is decoded in the picture parameter set, regard the syntax value for controlling the deblocking filter processing of the Cb signal and the Cr signal in the slice header as the value of that syntax in the picture parameter set.

[0149] In addition, the decoding unit 210 may be configured to, if a syntax for controlling deblocking filter processing of a Cb signal or a Cr signal is not decoded in a picture parameter set, regard the syntax value for controlling deblocking filter processing of a Cb signal or a Cr signal in the slice header as the value of the syntax for controlling deblocking filter processing of a Y signal in the slice header.

[0150] Furthermore, as described above, the decoding unit 210 may be configured to control whether or not the syntax that controls the deblocking filter processing of the Cb signal and the Cr signal in the picture parameter set is decoded depending on the value of pps_chroma_tool_offsets_present_flag, and if the syntax that controls the deblocking filter processing of the Cb signal and the Cr signal in the slice header has not been decoded, when the value of pps_chroma_tool_offsets_present_flag is "1", the syntax value that controls the deblocking filter processing of the Cb signal and the Cr signal in the slice header is regarded as the value of that syntax in the picture parameter set, and when the value of pps_chroma_tool_offsets_present_flag is "0", the syntax value that controls the deblocking filter processing of the Cb signal and the Cr signal in the slice header is regarded as the value of the syntax that controls the deblocking filter processing of the Y signal in the slice header.

[0151] In this way, if the syntax for the luminance signal and the syntax for the chrominance signal are set to different values ​​in the picture parameter set, different values ​​are used for the luminance signal and the chrominance signal in the slice header, and if there is no syntax for the chrominance signal in the picture parameter set, that is, if the same syntax value is used for the luminance signal and the chrominance signal, the same value is used for the luminance signal and the chrominance signal in the slice header. By omitting the transmission of the syntax in the picture header, it is possible to reduce the amount of processing and the amount of bits required, while achieving fine parameter control according to image quality.

[0152] The flag values ​​described above are merely examples. When the meanings of the flag values ​​("0" and "1") are reversed, the corresponding processes can be reversed accordingly to achieve equivalent processes. Furthermore, for syntax elements that do not have a reference relationship with each other, the order of decoding may be reversed. Furthermore, syntax elements other than those described above may be included in the SPS 211, PPS 212, picture header 213, and slice headers 214A / 214B, respectively.

[0153] (Inter prediction unit 241) Hereinafter, the inter prediction unit 241 according to this embodiment will be described with reference to Fig. 14. Fig. 14 is a diagram showing an example of functional blocks of the inter prediction unit 241 of the image decoding device 200 according to this embodiment.

[0154] As shown in FIG. 14, the inter prediction unit 231 has a motion vector decoding unit 241B, a refinement unit 241C, and a prediction signal generation unit 241D.

[0155] The motion vector decoding unit 241B is configured to decode a motion vector from the encoded data for each block. As for specific processing, for example, the processing described in Non-Patent Document 1 can be applied, and therefore details are omitted.

[0156] The refinement unit 241C is configured to refine the motion vector using the motion vector decoded by the motion vector decoding unit 241B as an initial value. Here, the refinement process is, for example, the above-mentioned DMVR.

[0157] The refinement section 241C may be configured to determine a plurality of applicable conditions for each block, and to perform refinement processing only when all of the applicable conditions are satisfied.

[0158] Here, one of the above application conditions includes a condition that the block is a block for which bi-prediction is performed. Also, one of the above application conditions may include a condition that the value of ph_dmvr_disabled_flag is "0" (i.e., DMVR is available).

[0159] As for the specific processing contents of the refinement processing, for example, the processing described in Non-Patent Document 1 can be applied, and therefore details are omitted.

[0160] The prediction signal generation unit 241D is configured to generate a prediction signal of the block using the motion vector decoded by the motion vector refining unit 241B or the motion vector refined by the refining unit 241C.

[0161] The prediction signal generator 241D may be configured to perform BDOF processing as part of the prediction signal generation process.

[0162] Furthermore, the prediction signal generating unit 241D may be configured to determine a plurality of application conditions for each block, and to perform BDOF processing only when all of the application conditions are satisfied.

[0163] Here, one of the above application conditions includes a condition that the block is a block for which bi-prediction is performed. Also, one of the above application conditions may include a condition that the value of ph_bdof_disabled_flag is "0" (i.e., BDOF is available).

[0164] As for the specific processing contents of the BDOF processing and the predicted signal generation processing, for example, the processing described in Non-Patent Document 1 can be applied, and therefore details are omitted.

[0165] (In-loop filter processing unit 250) Hereinafter, the in-loop filtering unit 250 according to this embodiment will be described with reference to Fig. 8. Fig. 8 is a diagram showing an example of functional blocks of the in-loop filtering unit 250 of the image decoding device 200 according to this embodiment.

[0166] As shown in FIG. 8, in-loop filtering unit 250 has a deblocking filter unit 250A, an SAO unit 250B, and an adaptive loop filter unit 250C.

[0167] The SAO unit 250B is a block that performs sample adaptive offset processing, and since known processing can be used, a detailed description of the processing content will be omitted.

[0168] Similarly, the adaptive loop filter unit 250C is a block that performs adaptive loop filter processing, and since known processing can be used, a detailed description of the processing content will be omitted.

[0169] An example of the processing performed by the deblocking filter unit 250A will now be described.

[0170] As shown in FIG. 9, the deblocking filter unit 250A has a block boundary detection unit 251, a boundary strength determination unit 253, a filter determination unit 254, and a filter processing unit 255.

[0171] Here, the configurations ending in "A" are configurations relating to deblocking filter processing for vertical block boundaries, and the configurations ending in "B" are configurations relating to deblocking filter processing for horizontal block boundaries.

[0172] Below, a case will be illustrated in which deblocking filtering is performed on a block boundary in the vertical direction and then deblocking filtering is performed on a block boundary in the horizontal direction.

[0173] As described above, the deblocking filter process may be applied to the coding block, may be applied to the prediction block, or may be applied to the transformation block. Also, the deblocking filter process may be applied to the sub-blocks obtained by dividing each of the above-mentioned blocks. That is, the target block and the neighboring block may be the coding block, may be the prediction block, may be the transformation block, or may be the sub-blocks obtained by dividing these.

[0174] When applying a deblocking filter to sub-blocks, blocks in the following description can be appropriately read as sub-blocks.

[0175] Since the deblocking filtering process for a vertical block boundary and the deblocking filtering process for a horizontal block boundary are similar processes, the deblocking filtering process for a vertical block boundary will be described below.

[0176] The block boundary detection unit 251A is configured to detect the boundary of a block based on control data indicating a block size. Here, the block is a coding block (CU), a prediction block (PU), or a transformation block (TU). Since a known method can be applied to a specific detection method, a detailed description is omitted.

[0177] The boundary strength determination unit 253A is configured to determine the boundary strength of the block boundary between the target block and the adjacent block. For example, the boundary strength may be defined to take one of three integer values: "0", "1", and "2". A specific method for calculating the boundary strength can be applied using known methods, and therefore detailed description thereof will be omitted.

[0178] The filter determination unit 254A is configured to determine the type of filtering (eg, deblocking filtering) to apply to block boundaries.

[0179] For example, the filter determination unit 254A may be configured to determine whether or not to apply filter processing to the block boundary and whether to apply weak filter processing or strong filter processing to the block boundary, based on the boundary strength of the block boundary, the quantization parameters included in the target block and the adjacent block, and the like.

[0180] Furthermore, the filter determination unit 254A may determine the suitability of filter processing and the filter strength (weak filter or strong filter) for block boundaries of a luminance signal and block boundaries of a color difference signal (Cb signal or Cr signal) using different procedures.

[0181] The filter determination unit 254A may be configured to determine not to apply filtering when the boundary strength of the block boundary is "0."

[0182] An example of a specific processing procedure at a block boundary of a color difference signal (Cb signal or Cr signal) in the filter determination unit 254A will be described below with reference to Fig. 10. Although the processing procedure for the Cb signal will be described below, the Cr signal can also be processed in a similar procedure.

[0183] In step S101, the filter determination unit 254A checks the boundary strength of the block boundary. If the boundary strength is "0", the process proceeds to step S109, where the filter determination unit 254A determines not to apply a deblocking filter to the block boundary. If the boundary strength is greater than "0", the process proceeds to step S102.

[0184] In step S102, the filter determination unit 254A calculates the value of the variable β and the value of the variable tC.

[0185] First, the method of calculating the variable β will be described.

[0186] First, the filter determination unit 254A calculates the value of the variable Q as follows.

[0187] Q=Clip3(0,63,QpC+(slice_cb_beta_offset_div2<<1)) Here, QpC is, for example, the average value of the quantization parameters of the two blocks adjacent to the block boundary.

[0188] Secondly, the filter determination unit 254A determines β' using the value of Q and the table shown in FIG.

[0189] Thirdly, the filter determination unit 254A calculates the variable β based on the above determined β' by the following formula:

[0190] β=β′×(1<<(BitDepth-8)) where BitDepth is the internal bit depth of the pixel values.

[0191] Next, a method for calculating the variable tC will be described.

[0192] First, the filter determination unit 254A calculates the value of the variable Q as follows.

[0193] Q=Clip3(0,65,QpC+2×(bS-1)+(slice_cb_tc_offset_div2<<1)) where bS is the boundary strength value.

[0194] Second, the filter determination unit 254A determines tC' using the above-mentioned value of Q and the table shown in FIG.

[0195] Thirdly, the filter determination unit 254A calculates a variable tC based on the above-determined tC' by the following formula.

[0196] tC=(BitDeapth<10)?(tC'+2)>>(10-BitDeapth):tC'×(1<<(BitDeapth-10)) As described above, the filter determination unit 254A calculates the value of the variable β and the value of the variable tC, and the process proceeds to step S103.

[0197] In step S103, the filter determination unit 254A determines whether or not a filter is to be applied.

[0198] For example, if the maximum filter lengths of the two blocks adjacent to the block boundary (for convenience, one is called "block P" and the other is called "block Q") are both "1" and the boundary strength is not "2", the process proceeds to step S109, and the filter determination unit 254A determines not to apply a filter. Otherwise, the process proceeds to step S104.

[0199] The maximum filter lengths (maxFilterLengthP, maxFilterLengthQ) can be calculated in advance by the method described in Non-Patent Document 1, for example.

[0200] In step S104, the filter determination unit 254A checks whether the maximum filter length (maxFilterLengthQ) corresponding to the block Q is "3".

[0201] If the maximum filter length (maxFilterLengthQ) corresponding to the block Q is not "3", the process proceeds to step S108, where the filter determination unit 254A determines to apply a weak filter. Otherwise, the process proceeds to step S105.

[0202] In step S105, the filter determination unit 254A first calculates a variable d indicating the likelihood of the block boundary being a block noise. The variable d can be calculated by the method described in Non-Patent Document 1, for example.

[0203] Secondly, the filter determination unit 254A checks whether the variable d is smaller than the above-mentioned variable β. If the variable d is smaller than the variable β, the process proceeds to step S106. If not, the process proceeds to step S108, where the filter determination unit 254A determines to apply a weak filter.

[0204] In step S106, the filter determination unit 254A checks whether all of the following three predetermined conditions are satisfied.

[0205] dpq<(β>>2) (Abs(p3-P0)+Abs(q0-q3))<(β>>3) Abs(p0-q0)<((5×tC+1)) Here, dpq is a variable that indicates the likelihood of block noise at the block boundary, similar to the above-mentioned variable d. Specifically, dpq can be calculated by the method described in Non-Patent Document 1, for example.

[0206] Furthermore, p0 and q0 are pixel values ​​of pixels adjacent to the block boundary in blocks P and Q. Similarly, p3 and q3 are pixel values ​​of pixels located four pixels away from the block boundary in blocks P and Q. Furthermore, Abs() is a function that returns the absolute value of an argument.

[0207] If all of the above three conditions are satisfied, the process proceeds to step S107, where the filter determination unit 254A determines to apply a strong filter. Otherwise, the process proceeds to step S108, where the filter determination unit 254A determines to apply a weak filter.

[0208] As described above, the filter determination unit 254A can use the values ​​of the variables β and tC to determine whether to apply a filter to the block boundary, and if so, whether to use a weak filter or a strong filter.

[0209] In the above example, it can be seen that the larger the value of the variable β and the value of the variable tC, the more likely a filter is to be applied, and also the more likely a strong filter type is to be applied.

[0210] In addition, the values ​​of the variables β and tC can be adjusted, for example, for the Cb signal, by slice_cb_beta_offset_div2 and slice_cb_tc_offset_div2. By setting the values ​​of the syntax on a picture-by-picture and slice-by-slice basis, it is possible to adjust the ease with which the filter is applied and the strength of the filter.

[0211] The filter processing unit 255A is configured to perform processing on the pre-deblocked image based on the determination of the filter determination unit 254A. The processing on the pre-deblocked image is no filtering, weak filtering, strong filtering, or the like.

[0212] (Image encoding device 100) Hereinafter, the image encoding device 100 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 image encoding device 100 according to this embodiment.

[0213] As shown in FIG. 12, 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.

[0214] Like the inter prediction unit 241, the inter prediction unit 111 is configured to generate a prediction signal by inter prediction (inter-frame prediction).

[0215] Specifically, the inter prediction unit 111 is configured to identify a reference block contained in the reference frame by comparing a frame to be encoded (hereinafter, the target frame) with a reference frame stored in the frame buffer 160, and to determine a motion vector for the identified reference block.

[0216] Moreover, the inter prediction unit 111 is configured to generate a prediction signal included in the prediction block for each prediction block based on the reference block and the 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.

[0217] Like the intra prediction unit 242, the intra prediction unit 112 is configured to generate a prediction signal by intra prediction (intra-frame prediction).

[0218] 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 prediction 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.

[0219] Here, the reference block is a block that is referred to for a block to be predicted (hereinafter, a target block). For example, the reference block is a block adjacent to the target block.

[0220] 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.

[0221] 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.

[0222] Here, the unfiltered decoded signal forms a reference block used by the intra prediction unit 112 .

[0223] 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.

[0224] Here, the transform process is a process of transforming a prediction residual signal into a frequency component signal. In the transform process, a basis pattern (transformation matrix) corresponding to a discrete cosine transform (DCT) may be used, or a basis pattern (transformation matrix) corresponding to a discrete sine transform (DST) may be used.

[0225] The inverse transform / inverse quantization unit 132 is configured to perform inverse transform processing on the coefficient level values ​​output from the transform / inverse quantization unit 131, similarly to the inverse transform / inverse quantization unit 220. 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 processing.

[0226] 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 .

[0227] The encoding unit 140 is configured to encode the coefficient level values ​​output from the transform / quantization unit 131, and output encoded data.

[0228] Here, for example, the coding is entropy coding, which assigns codes of different lengths based on the probability of occurrence of coefficient level values.

[0229] The encoding unit 140 is also configured to encode control data for use in the decoding process in addition to the coefficient level values.

[0230] As mentioned above, the control data may include size data such as the coding block size, the prediction block size, and the transform block size.

[0231] Similar to in-loop filter processing unit 250, in-loop filter processing unit 150 is configured to perform filtering on the unfiltered decoded signal output from adder 122 and to output the filtered decoded signal to frame buffer 160.

[0232] The frame buffer 160 is configured to store reference frames used by the inter prediction unit 111 .

[0233] Here, the filtered decoded signal forms a reference frame used in the inter prediction unit 111.

[0234] Furthermore, 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).

[0235] In each of the above embodiments, the present invention has been described using the image encoding device 100 and the image decoding device 200 as examples. However, the present invention is not limited to such examples, and can be similarly applied to an image encoding / decoding system having the functions of the image encoding device 100 and the image decoding device 200.

[0236] According to this embodiment, the syntax for controlling the maximum block size of the transform skip is a fixed-length code, thereby simplifying the decoding process.

[0237] Furthermore, according to this embodiment, since the syntax values ​​are limited to four values, "0" to "3," fixed-length codes can be expressed with two bits. In this case, for example, if you want to set the maximum block size to "16" or "32," you can express it with fewer bits than when using exponential Golomb codes.

[0238] Furthermore, according to this embodiment, since the maximum value that the maximum block size of the transform skip can take affects the specifications and design of processes other than the transform skip, by deliberately eliminating extensibility by using a fixed-length code, it is possible to ensure the stability of the specifications and the device designed based on them. [Explanation of symbols]

[0239] 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 211…SPS 212…PPS 213...Picture header 214A, 214B... slice headers 215A, 215B... slice data 250A…Deblocking filter section 251, 251A, 251B...Block boundary detection section 253, 253A, 253B...Boundary strength determination section 254, 254A, 254B... Filter determination section 255, 255A, 255B...Filter processing section 250B…SAO Department 250C…Adaptive loop filter section

Claims

1. An image decoding device, comprising: An image decoding device characterized in that it is equipped with a decoding unit configured to implicitly define the value of the flag that controls whether or not BDOF is disabled in a picture to a value indicating that BDOF is disabled when bi-prediction is not applicable to the picture if a flag that controls whether or not BDOF is disabled in the picture is not included in the picture header.

2. 1. An image decoding method, comprising: An image decoding method comprising the steps of: if a picture header does not include a flag that controls whether or not BDOF is disabled in a picture, and bi-prediction is not applicable to the picture, implicitly defining the value of the flag that controls whether or not BDOF is disabled in the picture to a value that means that BDOF is not available.

3. A program for use in an image decoding device, comprising: A program characterized by executing a step of implicitly defining the value of the flag that controls whether or not BDOF is disabled in a picture to a value that means BDOF is disabled when bi-prediction is not applicable to the picture, if a picture header does not include a flag that controls whether or not BDOF is disabled in the picture.

Citation Information

Patent Citations

  • A BI-directional optical flow method with simplified gradient derivation

    WO2019195643A1