Image encoding device, image decoding device, and bitstream generating device

The image encoding device addresses the challenge of encoding non-rectangular partitions in video coding by predicting motion vectors and performing boundary smoothing, resulting in enhanced coding efficiency and processing speed.

JP7658002B2Active Publication Date: 2025-04-07PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024043918
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-07-16
Filing Date
2024-03-19
Publication Date
2025-04-07
Estimated Expiration
2038-08-10

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently encoding and decoding video images, particularly in handling non-rectangular shaped partitions during inter and intra prediction processes.

Method used

An image encoding device that divides an image block into a first partition with a non-rectangular shape and a second partition, predicts motion vectors for each partition, and performs boundary smoothing by weighting values from both partitions for encoding.

Benefits of technology

This approach improves coding efficiency, simplifies encoding and decoding processes, and accelerates processing speeds by effectively handling non-rectangular partitions and optimizing motion vector prediction.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007658002000003
    Figure 0007658002000003
  • Figure 0007658002000004
    Figure 0007658002000004
  • Figure 0007658002000005
    Figure 0007658002000005
Patent Text Reader

Abstract

To provide an image encoding device capable of efficient encoding.SOLUTION: An image encoding device 100 includes a circuit and a memory. Concerning a boundary between a first partition and a second partition, the circuit (a) selects a first motion vector of the first partition from a first motion vector candidate set and finds a first value of the first partition using the first motion vector, (b) finds a second value of the second partition using a second motion vector of the second partition, (c) weights the first value and the second value for multiple pixels where the first partition and the second partition overlap each other, and (d) performs a boundary smoothing process to encode the image block using the weighted first value and the weighted second value. An intra-prediction is applied to the image block, and when the ratio of the width to the height is greater than 4, or when the ratio of the height to the width is greater than 4, the boundary smoothing processing is disabled.SELECTED DRAWING: Figure 20
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to video coding, and more particularly to systems, components, and methods for encoding and decoding video images, for example, by performing inter prediction to construct a current block based on a reference frame, or by performing intra prediction to construct a current block based on an encoded / decoded reference block in a current frame. [Background technology]

[0002] Video coding techniques have progressed from H.261 and MPEG-1 to H.264 / AVC (Advanced Video Coding), MPEG-LA, H.265 / HEVC (High Efficiency Video Coding), and H.266 / VVC (Versatile Video Codec). With this progress, there is a constant need to provide improvements and optimizations in video coding techniques to handle ever-increasing amounts of digital video data in various applications. The present disclosure further relates to advances, improvements, and optimizations in video coding, and in particular to inter- or intra-prediction that divides an image block into multiple partitions including at least a first partition having a non-rectangular shape (e.g., a triangle) and a second partition. Summary of the Invention

[0003] According to one aspect, there is provided an image encoding device comprising a circuit and a memory coupled to the circuit. In an operation, the circuit determines whether intra prediction is applied to an image block, and if the intra prediction is not applied to the image block, for a boundary between a first partition having a non-rectangular shape in the image block and a second partition in the image block based on a first parameter, (a) selects a first motion vector of the first partition from a first motion vector candidate set and uses the first motion vector to determine a first value of the first partition, (b) uses a second motion vector of the second partition to determine a second value of the second partition, (c) weights the first value and the second value for a plurality of pixels where the first partition and the second partition overlap, and (d) performs a boundary smoothing process to encode the image block using the weighted first value and the weighted second value, and disables the boundary smoothing process for the image block when the intra prediction is applied to the image block and a ratio of a width of the image block to a height of the image block is greater than 4 or a ratio of the height to the width is greater than 4.

[0004] Some implementations of the present disclosure may improve encoding efficiency, simplify encoding / decoding processes, accelerate encoding / decoding process speeds, and efficiently select appropriate components / operations to be used in encoding and decoding, such as appropriate filters, block sizes, motion vectors, reference pictures, reference blocks, etc.

[0005] Further benefits and advantages of the disclosed embodiments will become apparent from the specification and drawings. Benefits and / or advantages may be obtained by the various embodiments and features of the specification and drawings individually, and it is not necessary for all of the various embodiments and features of the specification and drawings to be present in order to obtain one or more of such benefits and / or advantages.

[0006] It should be noted that the generic or specific embodiments may be implemented as a system, a method, an integrated circuit, a computer program, a storage medium, or any combination thereof. [Brief description of the drawings]

[0007] [Figure 1] FIG. 1 is a block diagram showing a functional configuration of an encoding device according to an embodiment. [Diagram 2] FIG. 2 is a diagram showing an example of block division. [Diagram 3] FIG. 3 is a table showing the transform basis functions corresponding to each transform type. [Figure 4A] FIG. 4A is a diagram showing an example of the shape of a filter used in an ALF (adaptive loop filter). [Figure 4B] FIG. 4B is a diagram showing another example of the shape of the filter used in the ALF. [Figure 4C] FIG. 4C is a diagram showing another example of the shape of the filter used in the ALF. [Figure 5A] FIG. 5A is a diagram showing 67 intra prediction modes in intra prediction. [Figure 5B] FIG. 5B is a flowchart for explaining an outline of the predictive image correction process using overlapped block motion compensation (OBMC). [Figure 5C] FIG. 5C is a conceptual diagram for explaining an overview of the predicted image correction process by the OBMC process. [Figure 5D] FIG. 5D is a diagram showing an example of frame rate up-conversion (FRUC). [Figure 6] FIG. 6 is a diagram for explaining pattern matching (bilateral matching) between two blocks along a motion trajectory. [Figure 7] FIG. 7 is a diagram for explaining pattern matching (template matching) between a template in a current picture and a block in a reference picture. [Figure 8] FIG. 8 is a diagram for explaining a model assuming uniform linear motion. [Figure 9A] FIG. 9A is a diagram for explaining derivation of a motion vector for each sub-block based on motion vectors of a plurality of adjacent blocks. [Figure 9B] FIG. 9B is a diagram for explaining an overview of the motion vector derivation process in the merge mode. [Figure 9C] FIG. 9C is a conceptual diagram for explaining an overview of DMVR (dynamic motion vector refreshing) processing. [Figure 9D] FIG. 9D is a diagram for explaining an outline of a predicted image generating method using luminance correction processing by LIC (local illumination compensation) processing. [Figure 10] FIG. 10 is a block diagram illustrating a functional configuration of a decoding device according to an embodiment. [Figure 11] FIG. 11 is a flowchart illustrating an overall process flow for dividing an image block into multiple partitions, including at least a first partition having a non-rectangular shape (eg, a triangle) and a second partition for further processing, according to one embodiment. [Figure 12] FIG. 12 is a diagram showing two example methods of dividing an image block into a first partition having a non-rectangular shape (e.g., a triangle) and a second partition (also having a non-rectangular shape in the examples shown). [Figure 13] FIG. 13 illustrates an example of a boundary smoothing process that involves weighting a plurality of first values ​​of a plurality of boundary pixels predicted based on a first partition and a plurality of second values ​​of a plurality of boundary pixels predicted based on a second partition. [Figure 14] FIG. 14 illustrates three further examples of boundary smoothing processes that involve weighting first values ​​of boundary pixels predicted based on a first partition and second values ​​of boundary pixels predicted based on a second partition. [Figure 15]FIG. 15 is a table diagram showing example parameters ("first index values") and information sets respectively encoded by the parameters. [Figure 16] FIG. 16 is a table showing binarization of a plurality of parameters (a plurality of index values). [Figure 17] FIG. 17 is a flow chart illustrating a process for dividing an image block into a plurality of partitions, including a first partition and a second partition having a non-rectangular shape. [Figure 18] FIG. 18 is a diagram illustrating examples of dividing an image block into partitions including a first partition having a non-rectangular shape, which in the illustrated examples is a triangle, and a second partition. [Figure 19] FIG. 19 is a diagram illustrating further examples of dividing an image block into partitions, including a first partition having a non-rectangular shape that is a polygon with at least five sides and corners in the illustrated examples, and a second partition. [Figure 20] FIG. 20 is a flowchart illustrating a boundary smoothing process that involves weighting first values ​​of a plurality of boundary images predicted based on a first partition and second values ​​of a plurality of boundary images predicted based on a second partition. [Figure 21A] FIG. 21A is a diagram showing an example of a boundary smoothing process in which multiple weighted first values ​​of multiple boundary pixels are predicted based on a first partition, and multiple weighted second values ​​of multiple boundary pixels are predicted based on a second partition. [Figure 21B] FIG. 21B is a diagram showing an example of a boundary smoothing process in which multiple weighted first values ​​of multiple boundary pixels are predicted based on a first partition, and multiple weighted second values ​​of multiple boundary pixels are predicted based on a second partition. [Figure 21C]FIG. 21C is a diagram showing an example of a boundary smoothing process in which multiple weighted first values ​​of multiple boundary pixels are predicted based on a first partition, and multiple weighted second values ​​of multiple boundary pixels are predicted based on a second partition. [Figure 21D] FIG. 21D is a diagram showing an example of a boundary smoothing process in which multiple weighted first values ​​of multiple boundary pixels are predicted based on a first partition, and multiple weighted second values ​​of multiple boundary pixels are predicted based on a second partition. [Figure 22] FIG. 22 is a flowchart showing a method performed on the encoding device side in which an image block is divided into multiple partitions, including a first partition having a non-rectangular shape and a second partition, based on partition parameters indicating the division, and in entropy encoding, one or more parameters including the partition parameters are written into a bitstream. [Figure 23] Figure 23 is a flowchart showing a method performed on a decoding device side, which reads one or more parameters from a bitstream including a partition parameter indicating division of an image block into multiple partitions including a first partition having a non-rectangular shape and a second partition, divides the image block into multiple partitions based on the partition parameter, and decodes the first partition and the second partition. [Figure 24] FIG. 24 is a table showing example partition parameters ("first index values") each indicating division of an image block into partitions including a first partition and a second partition having a non-rectangular shape, and a set of information that may each be encoded together by the partition parameters. [Diagram 25] FIG. 25 is a table of several example combinations of first and second parameters, where one of the first and second parameters is a partition parameter indicating that the image block is to be divided into several partitions, including a first partition having a non-rectangular shape and a second partition. [Figure 26] FIG. 26 is a block diagram showing the overall configuration of a content supply system that realizes a content distribution service. [Figure 27] FIG. 27 is a conceptual diagram showing an example of a coding structure in scalable coding. [Figure 28] FIG. 28 is a conceptual diagram showing an example of a coding structure in scalable coding. [Figure 29] FIG. 29 is a conceptual diagram showing an example of a display screen of a web page. [Diagram 30] FIG. 30 is a conceptual diagram showing an example of a display screen of a web page. [Diagram 31] FIG. 31 is a block diagram illustrating an example of a smartphone. [Diagram 32] FIG. 32 is a block diagram showing an example of the configuration of a smartphone. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0008] According to one aspect, there is provided an image coding apparatus comprising a circuit and a memory coupled to the circuit, the circuit being operable to: divide an image block into a plurality of partitions, including a first partition having a non-rectangular shape and a second partition, predict a first motion vector for the first partition, predict a second motion vector for the second partition, encode the first partition using the first motion vector, and encode the second partition using the second motion vector.

[0009] According to a further aspect, the second partition has a non-rectangular shape. According to another aspect, the non-rectangular shape is a triangle. According to a further aspect, the non-rectangular shape is selected from the group consisting of a triangle, a trapezoid, and a polygon having at least five sides and angles.

[0010] According to another aspect, the predicting includes selecting the first motion vector from a first motion vector candidate set and selecting the second motion vector from a second motion vector candidate set. For example, the first motion vector candidate set may include motion vectors of partitions adjacent to the first partition, and the second motion vector candidate set may include motion vectors of partitions adjacent to the second partition. The partitions adjacent to the first partition and the partitions adjacent to the second partition may be outside the image block divided into the first partition and the second partition. The adjacent partitions may be one or both of a plurality of spatially adjacent partitions and a plurality of temporally adjacent partitions. The first motion vector candidate set may be the same as or different from the second motion vector candidate set.

[0011] According to another aspect, the predicting includes selecting a first motion vector candidate from a first motion vector candidate set and deriving the first motion vector by adding a first differential motion vector to the first motion vector candidate, and selecting a second motion vector candidate from a second motion vector candidate set and deriving the second motion vector by adding a second differential motion vector to the second motion vector candidate.

[0012] According to another aspect, there is provided an image encoding device comprising: a division unit that, in operation, receives an original image and divides it into a plurality of blocks; an addition unit that, in operation, receives the plurality of blocks from the division unit and a plurality of predictions from a prediction control unit, subtracts each prediction from its corresponding block, and outputs a residual; a transformation unit that, in operation, performs a transformation on the plurality of residuals output from the addition unit and outputs a plurality of transformation coefficients; a quantization unit that, in operation, quantizes the plurality of transformation coefficients to generate a plurality of quantized transformation coefficients; an entropy encoding unit that, in operation, encodes the plurality of quantized transformation coefficients to generate a bitstream; an inter prediction unit that, in operation, generates a prediction of a current block based on a reference block in an encoded reference picture; an intra prediction unit that, in operation, generates a prediction of the current block based on an encoded reference block in the current picture; and the prediction control unit connected to a memory. In operation, the prediction control unit divides the multiple blocks into multiple partitions including a first partition having a non-rectangular shape and a second partition, predicts a first motion vector for the first partition, predicts a second motion vector for the second partition, encodes the first partition using the first motion vector, and encodes the second partition using the second motion vector.

[0013] According to another aspect, there is provided an image encoding method including dividing an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition, predicting a first motion vector for the first partition and a second motion vector for the second partition, encoding the first partition using the first motion vector and encoding the second partition using the second motion vector.

[0014] According to one aspect, there is provided an image decoding device comprising a circuit and a memory coupled to the circuit, the circuit being operable to: divide an image block into a plurality of partitions, including a first partition having a non-rectangular shape and a second partition; predict a first motion vector for the first partition, predict a second motion vector for the second partition, decode the first partition using the first motion vector, and decode the second partition using the second motion vector.

[0015] According to a further aspect, the second partition has a non-rectangular shape. According to another aspect, the non-rectangular shape is a triangle. According to a further aspect, the non-rectangular shape is selected from the group consisting of a triangle, a trapezoid, and a polygon having at least five sides and angles.

[0016] According to another aspect, there is provided an image decoding device comprising: an entropy decoding unit that receives and decodes an encoded bitstream to obtain a plurality of quantized transform coefficients; an inverse quantization unit and an inverse transform unit that inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals; an addition unit that in operation adds the plurality of residuals output from the inverse quantization unit and the inverse transform unit to a plurality of predictions output from a prediction control unit to reconstruct a plurality of blocks; an inter prediction unit that in operation generates a prediction of a current block based on a reference block in a decoded reference picture; an intra prediction unit that in operation generates a prediction of the current block based on a decoded reference block in the current picture; and the prediction control unit connected to a memory. In operation, the prediction control unit divides an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition, predicts a first motion vector for the first partition, predicts a second motion vector for the second partition, decodes the first partition using the first motion vector, and decodes the second partition using the second motion vector.

[0017] According to another aspect, an image decoding method is provided that includes dividing an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition, predicting a first motion vector for the first partition and predicting a second motion vector for the second partition, decoding the first partition using the first motion vector and decoding the second partition using the second motion vector.

[0018] According to one aspect, an image coding apparatus is provided, comprising a circuit and a memory coupled to the circuit, the circuit being operable to perform a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from an image block and a second partition, the boundary smoothing operation including: first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition; second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition; weighting the plurality of first values ​​and the plurality of second values; and encoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0019] According to a further aspect, the non-rectangular shape is a triangle. According to another aspect, the non-rectangular shape is selected from the group consisting of a triangle, a trapezoid, and a polygon having at least five sides and angles. According to yet another aspect, the second partition has a non-rectangular shape.

[0020] According to another aspect, at least one of the first prediction and the second prediction is an inter prediction process that predicts the first values ​​and the second values ​​based on a reference partition in a coded reference picture, the inter prediction process may predict first values ​​of pixels of the first partition that includes the set of pixels, or may predict the second values ​​only of the set of pixels of the first partition.

[0021] According to another aspect, at least one of the first prediction and the second prediction is an intra prediction process that predicts the first values ​​and the second values ​​based on an encoded reference partition in the current picture.

[0022] According to another aspect, the prediction method used for the first prediction is different from the prediction method used for the second prediction.

[0023] According to a further aspect, the number of pixel sets in each row or column for predicting the first values ​​and the second values ​​is an integer. For example, if the number of pixel sets in each row or column is four, weights of 1 / 8, 1 / 4, 3 / 4 and 7 / 8 may be applied to the first values ​​of the four pixels in the pixel set, respectively, and weights of 7 / 8, 3 / 4, 1 / 4 and 1 / 8 may be applied to the second values ​​of the four pixels in the pixel set, respectively. As another example, if the number of pixel sets in each row or column is two, weights of 1 / 3 and 2 / 3 may be applied to the first values ​​of the two pixels in the pixel set, respectively, and weights of 2 / 3 and 1 / 3 may be applied to the second values ​​of the two pixels in the pixel set, respectively.

[0024] According to other aspects, the weights may be integer or fractional values.

[0025] According to another aspect, there is provided an image coding device including: a division unit that receives an original image and divides it into a plurality of blocks in an operation; an addition unit that receives the plurality of blocks from the division unit and a plurality of predictions from a prediction control unit, and outputs a residual by subtracting each prediction from its corresponding block in an operation; a transformation unit that performs a transformation on the plurality of residuals output from the addition unit in an operation and outputs a plurality of transformation coefficients in an operation; a quantization unit that quantizes the plurality of transformation coefficients to generate a plurality of quantized transformation coefficients in an operation; an entropy coding unit that codes the plurality of quantized transformation coefficients to generate a bitstream in an operation; an inter prediction unit that generates a prediction of a current block based on a reference block in a coded reference picture in an operation; an intra prediction unit that generates a prediction of the current block based on a coded reference block in a current picture in an operation; and the prediction control unit connected to a memory. In an operation, the prediction control unit performs a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from the image block and a second partition. The boundary smoothing operation includes first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition, second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition, weighting the plurality of first values ​​and the plurality of second values, and encoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0026] According to another aspect, there is provided an image coding method for performing a boundary smoothing operation along a boundary between a first partition divided from an image block and having a non-rectangular shape and a second partition, the method typically comprising the following four steps: first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition, second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition, weighting the plurality of first values ​​and the plurality of second values, and encoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0027] According to a further aspect, an image decoding device is provided, comprising a circuit and a memory coupled to the circuit, the circuit being operable to perform a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from an image block and a second partition, the boundary smoothing operation including: first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition; second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition; weighting the plurality of first values ​​and the plurality of second values; and decoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0028] According to another aspect, the non-rectangular shape is a triangle. According to a further aspect, the non-rectangular shape is selected from the group consisting of a triangle, a trapezoid, and a polygon having at least five sides and angles. According to another aspect, the second partition has a non-rectangular shape.

[0029] According to another aspect, at least one of the first prediction and the second prediction is an inter prediction process that predicts the first values ​​and the second values ​​based on a reference partition in a coded reference picture, the inter prediction process may predict first values ​​of pixels of the first partition that includes the set of pixels, or may predict the second values ​​only of the set of pixels of the first partition.

[0030] According to another aspect, at least one of the first prediction and the second prediction is an intra prediction process that predicts the first values ​​and the second values ​​based on an encoded reference partition in the current picture.

[0031] According to another aspect, an image decoding device is provided, comprising: an entropy decoding unit that receives and decodes an encoded bitstream to obtain a plurality of quantized transform coefficients; an inverse quantization unit and an inverse transform unit that inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals; an adder that adds the plurality of residuals output from the inverse quantization unit and the inverse transform unit to a plurality of predictions output from a prediction control unit to reconstruct a plurality of blocks; an inter prediction unit that generates a prediction of a current block based on a reference block in a decoded reference picture; an intra prediction unit that generates a prediction of the current block based on a decoded reference block in the current picture; and the prediction control unit connected to a memory. The prediction control unit performs a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape and a second partition divided from an image block. The boundary smoothing operation includes first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition, second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition, weighting the plurality of first values ​​and the plurality of second values, and decoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0032] According to another aspect, there is provided an image decoding method for performing a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from an image block and a second partition, which typically includes four steps of: first predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition, second predicting a plurality of second values ​​of the set of pixels of the first partition along the boundary using information of the second partition, weighting the plurality of first values ​​and the plurality of second values, and decoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values.

[0033] According to one aspect, an image coding apparatus is provided that includes a circuit and a memory coupled to the circuit, the circuit being operable to perform a partition syntax operation that includes dividing an image block into a plurality of partitions, including a first partition having a non-rectangular shape and a second partition, based on a partition parameter indicating a division, encoding the first partition and the second partition, and writing one or more parameters including the partition parameter to a bitstream.

[0034] According to a further aspect, the partition parameters indicate that the first partition has a triangular shape.

[0035] According to another aspect, the partition parameters indicate that the second partition has a non-rectangular shape.

[0036] According to another aspect, the partition parameters indicate that the non-rectangular shape is one of a triangle, a trapezoid, and a polygon having at least five sides and angles.

[0037] According to another aspect, the partition parameters jointly code a division direction applied to divide the image block into the partitions. For example, the division direction may include from a top left corner of the image block to a bottom right corner thereof and from a top right corner of the image block to a bottom left corner thereof. The partition parameters jointly code at least a first motion vector of the first partition.

[0038] According to another aspect, the one or more parameters other than the partition parameters encode a splitting direction applied to split the image block into the plurality of partitions, the parameter encoding the splitting direction may jointly encode at least a first motion vector of the first partition.

[0039] According to another aspect, the partition parameters may include at least a first motion vector for the first partition, and a second motion vector for the second partition.

[0040] According to another aspect, the one or more parameters other than the partition parameters may encode at least a first motion vector for the first partition.

[0041] According to another aspect, the one or more parameters are binarized according to a binarization scheme selected depending on the value of at least one of the one or more parameters.

[0042] According to a further aspect, there is provided an image coding device including: a partitioning unit for receiving an original image and partitioning it into a plurality of blocks; an adder for receiving the blocks from the partitioning unit and a plurality of predictions from a prediction control unit, subtracting each prediction from its corresponding block, and outputting a residual; a transforming unit for performing a transform on the residuals output from the adder unit and outputting a plurality of transform coefficients; a quantizing unit for quantizing the transform coefficients to generate a plurality of quantized transform coefficients; an entropy coding unit for coding the quantized transform coefficients to generate a bitstream; an inter prediction unit for generating a prediction of a current block based on a reference block in a coded reference picture; an intra prediction unit for generating a prediction of the current block based on a coded reference block in the current picture; and the prediction control unit connected to a memory. The prediction control unit divides the image block into a plurality of partitions, including a first partition and a second partition having a non-rectangular shape, based on a partition parameter indicating the partition, and codes the first partition and the second partition. The entropy coding unit operates to write one or more parameters, including the partition parameters, into a bitstream.

[0043] According to another aspect, there is provided an image coding method including a partition syntax operation, the method typically including three steps: partitioning an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition based on a partition parameter indicating the partition, encoding the first partition and the second partition, and writing one or more parameters including the partition parameter into a bitstream.

[0044] According to another aspect, an image decoding apparatus is provided, comprising: a circuit and a memory coupled to the circuit, the circuit being operable to perform a partition syntax operation including: interpreting one or more parameters from a bitstream, the partition syntax operation including a partition parameter indicating partitioning of an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition; partitioning the image block into the plurality of partitions based on the partition parameter; and decoding the first partition and the second partition.

[0045] According to a further aspect, the partition parameters indicate that the first partition has a triangular shape.

[0046] According to another aspect, the partition parameters indicate that the second partition has a non-rectangular shape.

[0047] According to another aspect, the partition parameters indicate that the non-rectangular shape is one of a triangle, a trapezoid, and a polygon having at least five sides and angles.

[0048] According to another aspect, the partition parameters jointly code a division direction applied to divide the image block into the partitions, for example, the division direction includes from a top left corner of the image block to its bottom right corner and from a top right corner of the image block to its bottom left corner. The partition parameters may jointly code at least a first motion vector of the first partition.

[0049] According to another aspect, the one or more parameters other than the partition parameters encode a splitting direction applied to split the image block into the plurality of partitions, the parameter encoding the splitting direction may jointly encode at least a first motion vector of the first partition.

[0050] According to another aspect, the partition parameters may include at least a first motion vector for the first partition, and a second motion vector for the second partition.

[0051] According to another aspect, the one or more parameters other than the partition parameters may encode at least a first motion vector for the first partition.

[0052] According to another aspect, the one or more parameters are binarized according to a binarization scheme selected depending on the value of at least one of the one or more parameters.

[0053] According to a further aspect, there is provided an image decoding device comprising: an entropy decoding unit that receives and decodes an encoded bitstream to obtain a plurality of quantized transform coefficients; an inverse quantization unit and an inverse transform unit that inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals; an addition unit that in operation adds the plurality of residuals output from the inverse quantization unit and the inverse transform unit to a plurality of predictions output from a prediction control unit to reconstruct a plurality of blocks; an inter prediction unit that in operation generates a prediction of a current block based on a reference block in a decoded reference picture; an intra prediction unit that in operation generates a prediction of the current block based on a decoded reference block in the current picture; and the prediction control unit connected to a memory. In operation, the entropy decoding unit decodes one or more parameters from a bitstream, including a partition parameter indicating division of an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition, and divides the image block into the plurality of partitions based on the partition parameter, and decodes the first partition and the second partition.

[0054] According to another aspect, there is provided an image decoding method including a partition syntax operation, the method generally comprising three steps: reading one or more parameters from a bitstream, the parameters including a partition parameter indicating partitioning of an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition, partitioning the image block into the plurality of partitions based on the partition parameter, and decoding the first partition and the second partition.

[0055] In the drawings, like reference numbers refer to like elements, and the sizes and relative positions of elements in the drawings are not necessarily to scale.

[0056] Hereinafter, the embodiments will be described in detail with reference to the drawings. Note that the embodiments described below are all comprehensive or specific examples. The numerical values, shapes, materials, components, the arrangement and connection forms of the components, steps, and the relationship and order of the steps shown in the following embodiments are merely examples and are not intended to limit the scope of the claims. Therefore, components disclosed in the following embodiments but not described in the independent claims that define the broadest inventive concept may be understood as optional components.

[0057] In the following, embodiments of an encoding device and a decoding device will be described. The embodiments are examples of encoding devices and decoding devices to which the processes and / or configurations described in each aspect of the present disclosure can be applied. The processes and / or configurations can also be implemented in encoding devices and decoding devices different from the embodiments. For example, with respect to the processes and / or configurations applied to the embodiments, for example, any of the following may be implemented.

[0058] (1) Any of the multiple components of the encoding device or decoding device of the embodiments described in each aspect of the present disclosure may be replaced or combined with other components described in any of the aspects of the present disclosure.

[0059] (2) In the encoding device or decoding device of the embodiment, the functions or processes performed by some of the multiple components of the encoding device or decoding device may be changed in any way, such as by adding, replacing, deleting, etc. For example, any function or process may be replaced or combined with another function or process described in any of the aspects of the present disclosure.

[0060] (3) In the method implemented by the encoding device or decoding device of the embodiment, some of the processes included in the method may be arbitrarily changed, such as added, replaced, deleted, etc. For example, any process in the method may be replaced or combined with another process described in any of the aspects of the present disclosure.

[0061] (4) Some of the multiple components constituting the encoding device or decoding device of the embodiment may be combined with components described in any of the aspects of the present disclosure, or may be combined with components having some of the functions described in any of the aspects of the present disclosure, or may be combined with components that perform some of the processing performed by the components described in each aspect of the present disclosure.

[0062] (5) A component having part of the functionality of the encoding device or decoding device of an embodiment, or a component that performs part of the processing of the encoding device or decoding device of an embodiment, may be combined or replaced with a component described in any of the aspects of the present disclosure, a component having part of the functionality described in any of the aspects of the present disclosure, or a component that performs part of the processing described in any of the aspects of the present disclosure.

[0063] (6) In a method implemented by an encoding device or a decoding device of an embodiment, any of the multiple processes included in the method may be replaced or combined with a process described in any of the aspects of the present disclosure or with any similar process.

[0064] (7) Some of the processes among the multiple processes included in the method implemented by the encoding device or decoding device of the embodiment may be combined with the processes described in any of the aspects of the present disclosure.

[0065] (8) The manner in which the processes and / or configurations described in each aspect of the present disclosure are implemented is not limited to the encoding device or decoding device of the embodiment. For example, the processes and / or configurations may be implemented in a device used for a purpose other than the video encoding or video decoding disclosed in the embodiment.

[0066] [Outline of the encoding device] First, an overview of a coding device according to an embodiment will be described. Fig. 1 is a block diagram showing a functional configuration of a coding device 100 according to an embodiment. The coding device 100 is a video coding device that codes a video on a block-by-block basis.

[0067] As shown in FIG. 1, the encoding device 100 is a device that encodes an image on a block-by-block basis, and includes a division unit 102, a subtraction unit 104, a transformation unit 106, a quantization unit 108, an entropy encoding unit 110, an inverse quantization unit 112, an inverse transformation unit 114, an addition unit 116, a block memory 118, a loop filter unit 120, a frame memory 122, an intra prediction unit 124, an inter prediction unit 126, and a prediction control unit 128.

[0068] The encoding device 100 is realized by, for example, a general-purpose processor and a memory. In this case, when the software program stored in the memory is executed by the processor, the processor functions as the division unit 102, the subtraction unit 104, the transformation unit 106, the quantization unit 108, the entropy coding unit 110, the inverse quantization unit 112, the inverse transformation unit 114, the addition unit 116, the loop filter unit 120, the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128. The encoding device 100 may also be realized as one or more dedicated electronic circuits corresponding to the division unit 102, the subtraction unit 104, the transformation unit 106, the quantization unit 108, the entropy coding unit 110, the inverse quantization unit 112, the inverse transformation unit 114, the addition unit 116, the loop filter unit 120, the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128.

[0069] Each component included in the encoding device 100 will be described below.

[0070] [Divided part] The division unit 102 divides each picture included in the input video into a plurality of blocks, and outputs each block to the subtraction unit 104. For example, the division unit 102 first divides a picture into blocks of a fixed size (e.g., 128x128). These fixed-size blocks may be called coding tree units (CTUs). The division unit 102 then divides each of the fixed-size blocks into blocks of a variable size (e.g., 64x64 or less) based on recursive quadtree and / or binary tree block division. These variable-size blocks may be called coding units (CUs), prediction units (PUs), or transform units (TUs). In various processing examples, CUs, PUs, and TUs do not need to be distinguished, and some or all of the blocks in a picture may be the processing units of CUs, PUs, and TUs.

[0071] Fig. 2 is a diagram showing an example of block division according to an embodiment, in which solid lines represent block boundaries based on quadtree block division, and dashed lines represent block boundaries based on binary tree block division.

[0072] Here, the block 10 is a square block of 128x128 pixels (128x128 block). This 128x128 block 10 is first divided into four square 64x64 blocks (quadtree block division).

[0073] The top-left 64x64 block is further divided vertically into two rectangular 32x64 blocks, and the left 32x64 block is further divided vertically into two rectangular 16x64 blocks (binary tree block division). As a result, the top-left 64x64 block is divided into two 16x64 blocks 11 and 12 and a 32x64 block 13.

[0074] The top right 64x64 block is divided horizontally into two rectangular 64x32 blocks 14, 15 (binary tree block division).

[0075] The bottom left 64x64 block is divided into four square 32x32 blocks (quadtree block division). Of the four 32x32 blocks, the top left and bottom right blocks are further divided. The top left 32x32 block is divided vertically into two rectangular 16x32 blocks, and the right 16x32 block is further divided horizontally into two 16x16 blocks (binary tree block division). The bottom right 32x32 block is divided horizontally into two 32x16 blocks (binary tree block division). As a result, the bottom left 64x64 block is divided into a 16x32 block 16, two 16x16 blocks 17, 18, two 32x32 blocks 19, 20, and two 32x16 blocks 21, 22.

[0076] The bottom right 64x64 block 23 is not split.

[0077] 2, the block 10 is divided into 13 variable-sized blocks 11 to 23 based on recursive quad-tree and binary tree block division. Such division is sometimes called QTBT (quad-tree plus binary tree) division.

[0078] In Fig. 2, one block is divided into four or two blocks (quad-tree or binary tree block division), but the division is not limited to this. For example, one block may be divided into three blocks (ternary tree block division). Division including such ternary tree block division is sometimes called MBT (multi type tree) division.

[0079] [Subtraction section] The subtraction unit 104 subtracts a prediction signal (a prediction sample input from a prediction control unit 128 described below) from an original signal (original sample) input from the division unit 102 for each block divided by the division unit 102. That is, the subtraction unit 104 calculates a prediction error (also called a residual) of a block to be coded (hereinafter called a current block). Then, the subtraction unit 104 outputs the calculated prediction error (residual) to the conversion unit 106.

[0080] The original signal is an input signal to the encoding device 100, and is a signal representing an image of each picture constituting a moving image (for example, a luminance (luma) signal and two color difference (chroma) signals). Hereinafter, the signal representing the image may also be referred to as a sample.

[0081] [Conversion section] The transform unit 106 transforms the prediction error in the spatial domain into transform coefficients in the frequency domain, and outputs the transform coefficients to the quantization unit 108. Specifically, the transform unit 106 performs, for example, a predetermined discrete cosine transform (DCT) or discrete sine transform (DST) on the prediction error in the spatial domain.

[0082] The transform unit 106 may adaptively select a transform type from among a plurality of transform types, and transform the prediction errors into transform coefficients using a transform basis function corresponding to the selected transform type. Such a transform may be called an explicit multiple core transform (EMT) or an adaptive multiple transform (AMT).

[0083] The multiple transform types include, for example, DCT-II, DCT-V, DCT-VIII, DST-I, and DST-VII. Figure 3 is a table showing the transform basis functions corresponding to each transform type. In Figure 3, N indicates the number of input pixels. The selection of the transform type from among the multiple transform types may depend on, for example, the type of prediction (intra prediction and inter prediction) or the intra prediction mode.

[0084] Such information indicating whether EMT or AMT is applied (e.g., called an EMT flag or an AMT flag) and information indicating the selected transformation type are usually signaled at a CU level, but the signaling of such information does not need to be limited to the CU level and may be at other levels (e.g., a bit sequence level, a picture level, a slice level, a tile level, or a CTU level).

[0085] Furthermore, the transform unit 106 may retransform the transform coefficients (transformation results). Such retransformation may be called an adaptive secondary transform (AST) or a non-separable secondary transform (NSST). For example, the transform unit 106 performs retransformation for each subblock (e.g., 4x4 subblock) included in a block of transform coefficients corresponding to intra-prediction errors. Information indicating whether or not to apply NSST and information regarding a transform matrix used in NSST are usually signaled at a CU level. Note that signaling of these pieces of information does not need to be limited to the CU level, and may be at other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0086] Separable transformation and non-separable transformation may be applied to the transformation unit 106. Separable transformation is a method of performing transformation multiple times by separating the input into directions for the number of dimensions, and non-separable transformation is a method of performing transformation collectively when the input is multidimensional, regarding two or more dimensions as one dimension.

[0087] For example, one example of a non-separable transformation is one in which, if the input is a 4x4 block, it is treated as a single array with 16 elements and a transformation process is performed on that array using a 16x16 transformation matrix.

[0088] As another example of a non-separable transformation, a 4x4 input block may be treated as a single array with 16 elements, and then a transformation (e.g., a Hypercube Givens Transform) may be performed on the array by performing multiple Givens rotations.

[0089] [Quantization section] The quantization unit 108 quantizes the transform coefficients output from the transform unit 106. Specifically, the quantization unit 108 scans the transform coefficients of the current block in a predetermined scanning order, and quantizes the transform coefficients based on a quantization parameter (QP) corresponding to the scanned transform coefficients. Then, the quantization unit 108 outputs the quantized transform coefficients of the current block (hereinafter, referred to as quantized coefficients) to the entropy coding unit 110 and the inverse quantization unit 112.

[0090] The predetermined scanning order is an order for quantizing / dequantizing transform coefficients, for example, the predetermined scanning order is defined as ascending (low to high) or descending (high to low) frequency order.

[0091] The quantization parameter (QP) is a parameter that defines the quantization step (quantization width). For example, if the value of the quantization parameter increases, the quantization step also increases. In other words, if the value of the quantization parameter increases, the quantization error increases.

[0092] [Entropy coding part] The entropy coding unit 110 generates a coded signal (coded bit stream) based on the quantized coefficients input from the quantization unit 108. Specifically, for example, the entropy coding unit 110 binarizes the quantized coefficients, arithmetically codes the binary signal, and outputs a compressed bit stream or sequence.

[0093] [Dequantization section] The inverse quantization unit 112 inverse quantizes the quantized coefficients input from the quantization unit 108. Specifically, the inverse quantization unit 112 inverse quantizes the quantized coefficients of the current block in a predetermined scanning order. Then, the inverse quantization unit 112 outputs the inverse quantized transform coefficients of the current block to the inverse transform unit 114.

[0094] [Inverse conversion section] The inverse transform unit 114 restores the prediction error (residual) by inverse transforming the transform coefficients input from the inverse quantization unit 112. Specifically, the inverse transform unit 114 restores the prediction error of the current block by performing an inverse transform corresponding to the transform by the transform unit 106 on the transform coefficients. Then, the inverse transform unit 114 outputs the restored prediction error to the adder unit 116.

[0095] Note that the restored prediction error usually loses information due to quantization, and therefore does not match the prediction error calculated by the subtraction unit 104. That is, the restored prediction error usually contains a quantization error.

[0096] [Addition section] The adder 116 reconstructs a current block by adding the prediction error input from the inverse transformer 114 and the prediction sample input from the prediction control unit 128. The adder 116 then outputs the reconstructed block to the block memory 118 and the loop filter unit 120. The reconstructed block is sometimes called a local decoded block.

[0097] [Block memory] The block memory 118 is a storage unit for storing blocks that are referenced in intra prediction and are in a picture to be coded (referred to as a "current picture"). Specifically, the block memory 118 stores the reconstructed blocks output from the adder 116.

[0098] [Loop filter section] The loop filter unit 120 applies a loop filter to the block reconstructed by the adder unit 116, and outputs the filtered reconstructed block to the frame memory 122. The loop filter is a filter (in-loop filter) used in the encoding loop, and includes, for example, a deblocking filter (DF), a sample adaptive offset (SAO), and an adaptive loop filter (ALF).

[0099] In ALF, a least squared error filter is applied to remove coding artifacts. For example, for each 2x2 sub-block in the current block, one filter is selected from among multiple filters based on local gradient direction and activity.

[0100] Specifically, first, sub-blocks (e.g., 2x2 sub-blocks) are classified into a plurality of classes (e.g., 15 or 25 classes). The classification of the sub-blocks is performed based on the gradient direction and activity. For example, a classification value C (e.g., C=5D+A) is calculated using a gradient direction value D (e.g., 0 to 2 or 0 to 4) and a gradient activity value A (e.g., 0 to 4). Then, based on the classification value C, the sub-blocks are classified into a plurality of classes.

[0101] The gradient direction value D is derived, for example, by comparing gradients in multiple directions (e.g., horizontal, vertical, and two diagonal directions), and the gradient activity value A is derived, for example, by adding gradients in multiple directions and quantizing the sum.

[0102] Based on the result of such classification, a filter for the sub-block is determined from among a plurality of filters.

[0103] The shape of the filter used in the ALF is, for example, a circularly symmetric shape. FIGS. 4A to 4C are diagrams showing several examples of the shape of the filter used in the ALF. FIG. 4A shows a 5×5 diamond-shaped filter, FIG. 4B shows a 7×7 diamond-shaped filter, and FIG. 4C shows a 9×9 diamond-shaped filter. Information indicating the shape of the filter is usually signaled at the picture level. Note that the signaling of the information indicating the shape of the filter does not need to be limited to the picture level, and may be at other levels (for example, the sequence level, slice level, tile level, CTU level, or CU level).

[0104] The on / off of ALF may be determined at the picture level or the CU level. For example, whether or not to apply ALF for luminance may be determined at the CU level, and whether or not to apply ALF for chrominance may be determined at the picture level. Information indicating whether or not to apply ALF is usually signaled at the picture level or the CU level. Note that the signaling of information indicating whether or not to apply ALF is not limited to the picture level or the CU level, and may be at another level (for example, the sequence level, the slice level, the tile level, or the CTU level).

[0105] The coefficient sets of multiple selectable filters (e.g., up to 15 or 25 filters) are typically signaled at the picture level, although the signaling of the coefficient sets need not be limited to the picture level, but may be at other levels (e.g., sequence level, slice level, tile level, CTU level, CU level, or subblock level).

[0106] [Frame memory] The frame memory 122 is a storage unit for storing reference pictures used in inter prediction, and may be called a frame buffer, for example. Specifically, the frame memory 122 stores the reconstructed block filtered by the loop filter unit 120.

[0107] [Intra prediction section] The intra prediction unit 124 generates a prediction signal (intra prediction signal) by performing intra prediction (also called intra-screen prediction) of a current block with reference to a block in a current picture such as that stored in the block memory 118. Specifically, the intra prediction unit 124 generates an intra prediction signal by performing intra prediction with reference to samples (e.g., luminance values, chrominance values) of blocks adjacent to the current block, and outputs the intra prediction signal to the prediction control unit 128.

[0108] For example, the intra prediction unit 124 performs intra prediction using one of a plurality of predefined intra prediction modes. The plurality of intra prediction modes typically includes one or more non-directional prediction modes and a plurality of directional prediction modes.

[0109] The one or more non-directional prediction modes include, for example, a planar prediction mode and a DC prediction mode defined in the H.265 / HEVC standard.

[0110] The multiple directional prediction modes include, for example, 33 prediction modes defined in the H.265 / HEVC standard. Note that the multiple directional prediction modes may include 32 prediction modes in addition to the 33 directions (a total of 65 directional prediction modes).

[0111] 5A is a conceptual diagram showing all 67 intra prediction modes (2 non-directional prediction modes and 65 directional prediction modes) that can be used in intra prediction. The solid arrows represent the 33 directions defined in the H.265 / HEVC standard, and the dashed arrows represent the additional 32 directions (the two "non-directional" prediction modes are not shown in FIG. 5A).

[0112] In various processing examples, a luminance block may be referenced in intra prediction of a chrominance block. That is, a chrominance component of a current block may be predicted based on a luminance component of the current block. This intra prediction may be called a cross-component linear model (CCLM) prediction. An intra prediction mode of a chrominance block that references such a luminance block (e.g., called a CCLM mode) may be added as one of the intra prediction modes of the chrominance block.

[0113] The intra prediction unit 124 may correct pixel values ​​after intra prediction based on the gradient of reference pixels in the horizontal / vertical directions. Intra prediction with such correction may be called PDPC (position dependent intra prediction combination). Information indicating whether PDPC is applied (e.g., called a PDPC flag) is usually signaled at the CU level. Note that the signaling of this information does not need to be limited to the CU level, and may be at other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0114] [Inter prediction section] The inter prediction unit 126 performs inter prediction (also called inter prediction) of the current block with reference to a reference picture stored in the frame memory 122 and different from the current picture, thereby generating a prediction signal (inter prediction signal). The inter prediction is performed in units of the current block or a current sub-block (e.g., 4x4 block) in the current block. For example, the inter prediction unit 126 performs motion estimation in the reference picture for the current block or the current sub-block, and finds a reference block or sub-block in the reference picture that most closely matches the current block or sub-block. Then, the inter prediction unit 126 obtains motion information (e.g., a motion vector) that compensates (or predicts) the motion or change from the reference block or sub-block to the current block or sub-block. Then, the inter prediction unit 126 performs motion compensation (or motion prediction) based on the motion information, and generates an inter prediction signal of the current block or sub-block. Then, the inter prediction unit 126 outputs the generated inter prediction signal to the prediction control unit 128.

[0115] The motion information used for the motion compensation may be signaled as an inter prediction signal in various forms, for example, a motion vector may be signaled, or, as another example, a difference between a motion vector and a predicted motion vector may be signaled.

[0116] In addition, the inter prediction signal may be generated using not only the motion information of the current block obtained by motion search, but also the motion information of the adjacent block. Specifically, the inter prediction signal may be generated for each sub-block in the current block by weighting and adding the prediction signal based on the motion information obtained by motion search (in the reference picture) and the prediction signal based on the motion information of the adjacent block (in the current picture). Such inter prediction (motion compensation) may be called OBMC (overlapped block motion compensation).

[0117] In the OBMC mode, information indicating the size of a sub-block for OBMC (e.g., called OBMC block size) may be signaled at the sequence level. Also, information indicating whether the OBMC mode is applied (e.g., called OBMC flag) may be signaled at the CU level. Note that the signaling level of these pieces of information does not need to be limited to the sequence level and the CU level, and may be other levels (e.g., the picture level, slice level, tile level, CTU level, or sub-block level).

[0118] The OBMC mode will now be described in more detail. Figures 5B and 5C are a flowchart and a conceptual diagram illustrating the predicted image correction process in the OBMC process.

[0119] Referring to Fig. 5C, first, a predicted image (Pred) is obtained by normal motion compensation using a motion vector (MV) assigned to the current block to be coded. In Fig. 5C, the arrow "MV" indicates a reference picture, and indicates what the current block in the current picture refers to in order to obtain the predicted image.

[0120] Next, the motion vector (MV_L) already derived for the coded left neighboring block is applied (reused) to the current block to obtain a predicted image (Pred_L). The motion vector (MV_L) is indicated by an arrow "MV_L" pointing from the current block to the reference picture. The first correction of the predicted image is then performed by superimposing the two predicted images Pred and Pred_L. This has the effect of blending the boundaries between the neighboring blocks.

[0121] Similarly, a motion vector (MV_U) already derived for the coded upper adjacent block is applied (reused) to the coding target (current) block to obtain a predicted image (Pred_U). The motion vector (MV_U) is indicated by an arrow "MV_U" pointing from the current block to the reference picture. Then, a second correction of the predicted image is performed by superimposing the predicted image Pred_U on the predicted image (i.e., Pred and Pred_L) that has been corrected the first time. This has the effect of blending the boundaries between the adjacent blocks in one embodiment. The predicted image obtained by the second correction is the final predicted image of the current block with the boundaries with the adjacent blocks blended (smoothed).

[0122] Although a two-stage correction method using the left adjacent block and the upper adjacent block has been described here, it is also possible to configure a method in which correction is performed more than two stages using the right adjacent block or the lower adjacent block.

[0123] The area in which overlapping is performed does not have to be the entire pixel area of ​​the block, but may be only a part of the area near the block boundary.

[0124] Here, the OBMC predicted image correction process for obtaining one predicted image Pred by superimposing additional predicted images Pred_L and Pred_U based on one reference picture has been described. However, when the predicted image is corrected based on multiple reference pictures, the same process may be applied to each of the multiple reference pictures. In such a case, the OBMC image correction based on multiple reference pictures is performed to obtain a corrected predicted image from each reference picture, and then the obtained multiple corrected predicted images are further superimposed to obtain a final predicted image.

[0125] In addition, in OBMC, the unit of the target block may be a prediction block unit, or a sub-block unit obtained by further dividing the prediction block.

[0126] As a method of determining whether or not to apply OBMC processing, for example, there is a method of using obmc_flag, which is a signal indicating whether or not to apply OBMC processing. As a specific example, in an encoding device, it is determined whether or not the encoding target block belongs to an area with complex motion, and if it belongs to an area with complex motion, a value of "1" is set as obmc_flag and encoding is performed by applying OBMC processing, and if it does not belong to an area with complex motion, a value of "0" is set as obmc_flag and encoding is performed without applying OBMC processing. On the other hand, a decoding device decodes obmc_flag described in a stream (i.e., a compressed sequence), and performs decoding by switching whether or not to apply OBMC processing according to the value.

[0127] In addition, the motion information may be derived on the decoding device side without being signaled from the encoding device side. For example, a merge mode defined in the H.265 / HEVC standard may be used. Also, for example, the motion information may be derived by performing motion estimation on the decoding device side. In this case, the motion estimation may be performed on the decoding device side without using pixel values ​​of the current block.

[0128] Here, a mode in which motion estimation is performed on the decoding device side will be described. This mode in which motion estimation is performed on the decoding device side is sometimes called a pattern matched motion vector derivation (PMMVD) mode or a frame rate up-conversion (FRUC) mode.

[0129] An example of the FRUC process is shown in FIG. 5D. First, a list of multiple candidates (which may be the same as the merge list) each having a predicted motion vector (MV) is generated by referring to the motion vectors of encoded blocks spatially or temporally adjacent to the current block. Next, a best candidate MV is selected from the multiple candidate MVs registered in the candidate list. For example, an evaluation value of each candidate MV included in the candidate list is calculated, and one candidate MV is selected based on the evaluation value.

[0130] Then, based on the motion vector of the selected candidate, a motion vector for the current block is derived. Specifically, for example, the motion vector of the selected candidate (best candidate MV) is derived as it is as the motion vector for the current block. Also, for example, the motion vector for the current block may be derived by performing pattern matching in the peripheral area of ​​the position in the reference picture corresponding to the motion vector of the selected candidate. That is, a search is performed using pattern matching and evaluation value in the reference picture for the peripheral area of ​​the best candidate MV, and if there is an MV with a better evaluation value, the best candidate MV may be updated to the MV, and the MV may be used as the final MV of the current block. It is also possible to configure the configuration without performing the process of updating to an MV with a better evaluation value.

[0131] The same processing may be performed when processing is performed in sub-block units.

[0132] The evaluation value may be calculated in various ways. For example, a reconstructed image of an area in a reference picture corresponding to a motion vector may be compared with a reconstructed image of a predetermined area (for example, as described later, it may be an area of ​​another reference picture or an area of ​​an adjacent block of a current picture), and the difference in pixel values ​​between the two reconstructed images may be calculated and used as the evaluation value of the motion vector. The evaluation value may be calculated using other information in addition to the difference value.

[0133] Next, an example of pattern matching will be described in detail. First, one candidate MV included in a candidate MV list (e.g., a merge list) is selected as a start point of a search by pattern matching. For example, a first pattern matching or a second pattern matching can be used as the pattern matching. The first pattern matching and the second pattern matching are sometimes called bilateral matching and template matching, respectively.

[0134] In the first pattern matching, pattern matching is performed between two blocks in two different reference pictures that are along the motion trajectory of the current block. Therefore, in the first pattern matching, an area in another reference picture along the motion trajectory of the current block is used as a predetermined area for calculating the evaluation value of the above-mentioned candidate for an area in a reference picture.

[0135] FIG. 6 is a diagram for explaining an example of the first pattern matching (bilateral matching) between two blocks in two reference pictures along a motion trajectory. As shown in FIG. 6, in the first pattern matching, two motion vectors (MV0, MV1) are derived by searching for a pair of blocks that best match among pairs of two blocks in two different reference pictures (Ref0, Ref1) along the motion trajectory of a current block (Cur block). Specifically, for the current block, a difference is derived between a reconstructed image at a specified position in a first coded reference picture (Ref0) specified by a candidate MV and a reconstructed image at a specified position in a second coded reference picture (Ref1) specified by a symmetric MV obtained by scaling the candidate MV by a display time interval, and an evaluation value is calculated using the obtained difference value. It is possible to select the candidate MV with the best evaluation value among multiple candidate MVs as the final MV, which may bring about good results.

[0136] Under the assumption of continuous motion trajectories, the motion vectors (MV0, MV1) pointing to two reference blocks are proportional to the temporal distances (TD0, TD1) between the current picture (Cur Pic) and the two reference pictures (Ref0, Ref1). For example, if the current picture is located between two reference pictures in time and the temporal distances from the current picture to the two reference pictures are equal, the first pattern matching derives two mirror-symmetric bidirectional motion vectors.

[0137] In the second pattern matching (template matching), pattern matching is performed between a template in the current picture (a block adjacent to the current block in the current picture (e.g., an upper and / or left adjacent block)) and a block in the reference picture. Therefore, in the second pattern matching, a block adjacent to the current block in the current picture is used as a predetermined area for calculating the evaluation value of the above-mentioned candidate.

[0138] Fig. 7 is a diagram for explaining an example of pattern matching (template matching) between a template in a current picture and a block in a reference picture. As shown in Fig. 7, in the second pattern matching, a motion vector of a current block is derived by searching in a reference picture (Ref0) for a block that best matches a block adjacent to a current block (Cur block) in a current picture (Cur Pic). Specifically, for a current block, a difference is derived between a reconstructed image of both or either of the left adjacent and / or upper adjacent coded areas and a reconstructed image at the same position in a coded reference picture (Ref0) specified by a candidate MV, an evaluation value is calculated using the obtained difference value, and a candidate MV with the best evaluation value among a plurality of candidate MVs can be selected as a best candidate MV.

[0139] Information indicating whether such a FRUC mode is applied (e.g., when the FRUC flag is true) may be signaled at the CU level. Also, when the FRUC mode is applied (e.g., when the FRUC flag is true), information indicating a pattern matching method (e.g., first pattern matching or second pattern matching) (e.g., when the FRUC mode is applied) may be signaled at the CU level. Note that the signaling of such information does not need to be limited to the CU level, and may be at other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or sub-block level).

[0140] Next, a method for deriving a motion vector will be described. First, a mode for deriving a motion vector based on a model assuming uniform linear motion will be described. This mode is sometimes called a BIO (bi-directional optical flow) mode.

[0141] FIG. 8 is a diagram for explaining a model assuming uniform linear motion. In FIG. x ,v y ) denotes a velocity vector, and τ0 and τ1 denote the temporal distance between the current picture (CurPic) and two reference pictures (Ref0, Ref1), respectively. (MVx0,MVy0) denotes a motion vector corresponding to the reference picture Ref0, and (MVx1,MVy1) denotes a motion vector corresponding to the reference picture Ref1.

[0142] At this time, the velocity vector (v x ,v y Under the assumption of uniform linear motion of the object, (MVx0,MVy0) and (MVx1,MVy1) are respectively (v x τ0,v y τ0) and (-v x τ1,-v y τ1), and the following optical flow equation (1) holds:

[0143]

number

[0144] Here, I (k) denotes the luminance value of reference image k (k=0,1) after motion compensation. This optical flow equation indicates that the sum of (i) the time derivative of the luminance value, (ii) the product of the horizontal velocity and the horizontal component of the spatial gradient of the reference image, and (iii) the product of the vertical velocity and the vertical component of the spatial gradient of the reference image is equal to zero. Based on a combination of this optical flow equation and Hermite interpolation, block-wise motion vectors obtained from a merge list or the like may be corrected pixel by pixel.

[0145] Note that the decoding device may derive the motion vector using a method other than the method based on a model assuming uniform linear motion. For example, the motion vector may be derived for each sub-block based on the motion vectors of multiple adjacent blocks.

[0146] Next, a mode in which a motion vector is derived for each sub-block based on the motion vectors of a plurality of adjacent blocks will be described. This mode is sometimes called an affine motion compensation prediction mode.

[0147] FIG. 9A is a diagram for explaining derivation of a motion vector for each sub-block based on the motion vectors of multiple adjacent blocks. In FIG. 9A, the current block includes 16 4x4 sub-blocks. Here, a motion vector v0 of the upper left corner control point of the current block is derived based on the motion vectors of the adjacent blocks. Similarly, a motion vector v1 of the upper right corner control point of the current block is derived based on the motion vectors of the adjacent sub-blocks. Then, using the two motion vectors v0 and v1, the motion vectors (v x ,v y ) is derived.

[0148]

number

[0149] Here, x and y respectively indicate the horizontal and vertical positions of the sub-block, and w indicates a predetermined weighting coefficient.

[0150] The affine motion compensation prediction mode may include several modes in which the methods of deriving the motion vectors of the upper left and upper right corner control points are different. Information indicating the affine motion compensation prediction mode (e.g., called an affine flag) may be signaled at a CU level. Note that the signaling of the information indicating the affine motion compensation prediction mode does not need to be limited to the CU level, and may be at other levels (e.g., a sequence level, a picture level, a slice level, a tile level, a CTU level, or a subblock level).

[0151] [Predictive control unit] The prediction control unit 128 selects either an intra-prediction signal (a signal output from the intra-prediction unit 124) or an inter-prediction signal (a signal output from the inter-prediction unit 126), and outputs the selected signal as a prediction signal to the subtraction unit 104 and the addition unit 116.

[0152] As shown in FIG. 1, in various processing examples, the prediction control unit 128 may output prediction parameters to be input to the entropy coding unit 110. The entropy coding unit 110 may generate an encoded bitstream (or sequence) based on the prediction parameters input from the prediction control unit 128 and the quantization coefficients input from the quantization unit 108. The prediction parameters may be used by a decoding device. The decoding device may receive and decode the encoded bitstream and perform the same prediction process as that performed in the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128. The prediction parameters may include a selected prediction signal (e.g., a motion vector, a prediction type, or a prediction mode used in the intra prediction unit 124 or the inter prediction unit 126), or any index, flag, or value based on or indicating the prediction process performed in the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128.

[0153] FIG. 9B shows an example of a process for deriving a motion vector for a current picture in merge mode.

[0154] First, a prediction MV list is generated in which prediction MV candidates are registered. The prediction MV candidates include a spatially adjacent prediction MV, which is an MV held by a plurality of coded blocks located spatially around the target block, a temporally adjacent prediction MV, which is an MV held by a nearby block projected onto the position of the target block in a coded reference picture, a joint prediction MV, which is an MV generated by combining the MV values ​​of the spatially adjacent prediction MV and the temporally adjacent prediction MV, and a zero prediction MV, which is an MV with a value of zero.

[0155] Next, one predicted MV is selected from the multiple predicted MVs registered in the predicted MV list, and is determined as the MV for the target block.

[0156] Furthermore, the variable length coding unit writes merge_idx, which is a signal indicating which predicted MV has been selected, into the stream and codes it.

[0157] Note that the predicted MVs registered in the predicted MV list described in Figure 9B are just an example, and the number may be different from the number shown in the figure, the configuration may not include some of the types of predicted MVs shown in the figure, or the configuration may include additional predicted MVs other than the types of predicted MVs shown in the figure.

[0158] The final MV may be determined by performing a decoder motion vector refinement (DMVR) process, which will be described later, using the MV of the current block derived in the merge mode.

[0159] FIG. 9C is a conceptual diagram for explaining an example of DMVR processing for determining an MV.

[0160] First, the optimal MVP set for the current block (e.g., in merge mode) is set as the candidate MV. Then, according to the candidate MV(L0), reference pixels are identified from the first reference picture (L0), which is an encoded picture in the L0 direction. Similarly, according to the candidate MV(L1), reference pixels are identified from the second reference picture (L1), which is an encoded picture in the L1 direction. A template is generated by averaging these reference pixels.

[0161] Next, the template is used to search the surrounding areas of the candidate MVs in the first reference picture (L0) and the second reference picture (L1), and the MV with the smallest cost is determined as the final MV. Note that the cost value may be calculated using, for example, the difference value between each pixel value of the template and each pixel value of the search area, the candidate MV value, etc.

[0162] Typically, the encoding device and a decoding device (to be described later) basically have the same configuration and operation as the processing described here.

[0163] Any process may be used other than the process example described here as long as it is capable of searching the vicinity of the candidate MV and deriving the final MV.

[0164] Next, an example of a mode in which a predicted image (prediction) is generated using LIC (local illumination compensation) processing will be described.

[0165] FIG. 9D is a conceptual diagram for explaining an example of a predicted image generating method using a luminance correction process by LIC processing.

[0166] First, the MV is derived from the coded reference picture to obtain the reference image corresponding to the current block.

[0167] Next, extract information indicating how the luminance value of the current block has changed between the reference picture and the current picture. This extraction is performed based on the luminance pixel values ​​of the coded left adjacent reference area (peripheral reference area) and the coded upper adjacent reference area (peripheral reference area) in the current picture, and the luminance pixel values ​​at the equivalent positions in the reference picture specified by the derived MV. Then, calculate a luminance correction parameter using the information indicating how the luminance value has changed.

[0168] A luminance correction process is performed by applying the luminance correction parameters to a reference image in a reference picture specified by the MV, thereby generating a predicted image for the current block.

[0169] It should be noted that the shape of the peripheral reference region in FIG. 9D is just an example, and other shapes may be used.

[0170] Although the process of generating a predicted image from one reference picture has been described here, the process is similar when generating a predicted image from multiple reference pictures, and a luminance correction process may be performed on the reference images obtained from each reference picture in a manner similar to that described above before generating a predicted image.

[0171] As a method of determining whether or not to apply LIC processing, for example, there is a method of using lic_flag, which is a signal indicating whether or not to apply LIC processing. As a specific example, in an encoding device, it is determined whether or not the current block belongs to an area where a luminance change occurs, and if it belongs to an area where a luminance change occurs, the value "1" is set as lic_flag and encoding is performed by applying LIC processing, and if it does not belong to an area where a luminance change occurs, the value "0" is set as lic_flag and encoding is performed without applying LIC processing. On the other hand, a decoding device may decode lic_flag described in a stream, and switch whether or not to apply LIC processing depending on the value and perform decoding.

[0172] Another method of determining whether to apply LIC processing is, for example, a method of determining according to whether LIC processing has been applied to surrounding blocks.As a specific example, when the current block is in merge mode, it is determined whether the surrounding coded blocks selected when deriving MV in merge mode processing have been coded by applying LIC processing.Depending on the result, it is switched to whether to apply LIC processing and performs coding.In this example, the same processing is also applied to the processing on the decoding device side.

[0173] [Overview of the Decryption Device] Next, a description will be given of an overview of a decoding device capable of decoding the coded signal (coded bit stream) output from the above coding device 100. Fig. 10 is a block diagram showing a functional configuration of a decoding device 200 according to an embodiment. The decoding device 200 is a video decoding device that decodes video on a block-by-block basis.

[0174] As shown in FIG. 10, the decoding device 200 includes an entropy decoding unit 202, an inverse quantization unit 204, an inverse transform unit 206, an addition unit 208, a block memory 210, a loop filter unit 212, a frame memory 214, an intra prediction unit 216, an inter prediction unit 218, and a prediction control unit 220.

[0175] The decoding device 200 is realized by, for example, a general-purpose processor and a memory. In this case, when the software program stored in the memory is executed by the processor, the processor functions as the entropy decoding unit 202, the inverse quantization unit 204, the inverse transform unit 206, the addition unit 208, the loop filter unit 212, the intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220. The decoding device 200 may also be realized as one or more dedicated electronic circuits corresponding to the entropy decoding unit 202, the inverse quantization unit 204, the inverse transform unit 206, the addition unit 208, the loop filter unit 212, the intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220.

[0176] Each component included in the decoding device 200 will be described below.

[0177] [Entropy Decoding Part] The entropy decoding unit 202 entropy decodes the coded bitstream. Specifically, for example, the entropy decoding unit 202 arithmetically decodes the coded bitstream into a binary signal. Then, the entropy decoding unit 202 debinarizes the binary signal. The entropy decoding unit 202 outputs the quantization coefficients to the inverse quantization unit 204 on a block-by-block basis. The entropy decoding unit 202 may output prediction parameters included in the coded bitstream (see FIG. 1) to the intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220 in the embodiment. The intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220 can execute the same prediction process as the process executed by the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128 on the coding device side.

[0178] [Dequantization section] The inverse quantization unit 204 inverse quantizes the quantized coefficients of the block to be decoded (hereinafter, referred to as the current block) input from the entropy decoding unit 202. Specifically, the inverse quantization unit 204 inverse quantizes each of the quantized coefficients of the current block based on a quantization parameter corresponding to the quantized coefficient. Then, the inverse quantization unit 204 outputs the inverse quantized quantized coefficients (i.e., transform coefficients) of the current block to the inverse transform unit 206.

[0179] [Inverse conversion section] The inverse transform unit 206 restores prediction errors (residuals) by inverse transforming the transform coefficients input from the inverse quantization unit 204.

[0180] For example, if the information interpreted from the encoded bitstream indicates that EMT or AMT is to be applied (e.g., the AMT flag is true), the inverse transform unit 206 inverse transforms the transform coefficients of the current block based on the interpreted information indicating the transform type.

[0181] Also for example, if the information interpreted from the coded bitstream indicates to apply NSST, then inverse transform unit 206 applies an inverse re-transform to the transform coefficients.

[0182] [Addition section] The adder 208 reconstructs the current block by adding the prediction error input from the inverse transformer 206 and the prediction sample input from the prediction control unit 220. Then, the adder 208 outputs the reconstructed block to the block memory 210 and the loop filter unit 212.

[0183] [Block memory] The block memory 210 is a storage unit for storing blocks that are referenced in intra prediction and are in a picture to be decoded (hereinafter, referred to as a current picture). Specifically, the block memory 210 stores the reconstructed block output from the adder 208.

[0184] [Loop filter section] The loop filter unit 212 applies a loop filter to the block reconstructed by the adder unit 208, and outputs the filtered reconstructed block to a frame memory 214, a display device, or the like.

[0185] If the information indicating ALF on / off read from the encoded bitstream indicates ALF on, one filter is selected from among multiple filters based on the local gradient direction and activity, and the selected filter is applied to the reconstructed block.

[0186] [Frame memory] The frame memory 214 is a storage unit for storing reference pictures used in inter prediction, and may be called a frame buffer. Specifically, the frame memory 214 stores the reconstructed blocks filtered by the loop filter unit 212.

[0187] [Intra prediction section] The intra prediction unit 216 generates a prediction signal (intra prediction signal) by performing intra prediction with reference to a block in the current picture stored in the block memory 210 based on an intra prediction mode interpreted from the encoded bit stream. Specifically, the intra prediction unit 216 generates an intra prediction signal by performing intra prediction with reference to samples (e.g., luminance values, chrominance values) of blocks adjacent to the current block, and outputs the intra prediction signal to the prediction control unit 220.

[0188] Note that, when an intra prediction mode that references a luminance block in intra prediction of a chrominance block is selected, the intra prediction unit 216 may predict the chrominance component of the current block based on the luminance component of the current block.

[0189] In addition, when information interpreted from the encoded bitstream (e.g., prediction parameters output from the entropy decoding unit 202) indicates the application of PDPC, the intra prediction unit 216 corrects the pixel value after intra prediction based on the gradient of the reference pixels in the horizontal / vertical directions.

[0190] [Inter prediction section] The inter prediction unit 218 predicts the current block by referring to a reference picture stored in the frame memory 214. The prediction is performed in units of the current block or sub-blocks (e.g., 4x4 blocks) in the current block. For example, the inter prediction unit 218 generates an inter prediction signal of the current block or sub-block by performing motion compensation using motion information (e.g., motion vectors) interpreted from the encoded bit stream (e.g., prediction parameters output from the entropy decoding unit 202), and outputs the inter prediction signal to the prediction control unit 220.

[0191] If the information interpreted from the encoded bitstream indicates that the OBMC mode is to be applied, the inter prediction unit 218 generates an inter prediction signal using not only the motion information of the current block obtained by motion search, but also the motion information of adjacent blocks.

[0192] Also, if the information interpreted from the encoded bitstream indicates that the FRUC mode is applied, the inter prediction unit 218 derives motion information by performing motion search according to the pattern matching method (bilateral matching or template matching) interpreted from the encoded bitstream. Then, the inter prediction unit 218 performs motion compensation (prediction) using the derived motion information.

[0193] In addition, when the BIO mode is applied, the inter prediction unit 218 derives a motion vector based on a model assuming uniform linear motion. In addition, when information interpreted from the encoded bitstream indicates that an affine motion compensation prediction mode is applied, the inter prediction unit 218 derives a motion vector on a sub-block basis based on the motion vectors of multiple adjacent blocks.

[0194] [Predictive control unit] The prediction control unit 220 selects either the intra prediction signal or the inter prediction signal, and outputs the selected signal as a prediction signal to the adder unit 208. Overall, the configurations, functions, and processing of the prediction control unit 220, the intra prediction unit 216, and the inter prediction unit 218 on the decoding device side may correspond to the configurations, functions, and processing of the prediction control unit 128, the intra prediction unit 124, and the inter prediction unit 126 on the encoding device side.

[0195] [Non-rectangular division] In the prediction control unit 128 connected to the intra prediction unit 124 and the inter prediction unit 126 of the encoding device (see FIG. 1), as well as in the prediction control unit 220 connected to the intra prediction unit 216 and the inter prediction unit 218 of the decoding device (see FIG. 10), conventionally, the partitions (or the variable size blocks or the sub-blocks) obtained from the division of each block and from which motion information (e.g., motion vectors) is obtained are always rectangular, as shown in FIG. 2. The inventors have found that generating partitions with non-rectangular shapes, such as triangular shapes, leads to improved image quality and coding efficiency in various implementations, depending on the image content in the picture. In the following, various embodiments are described in which at least one partition divided from an image block for prediction purposes has a non-rectangular shape. Note that these embodiments are equally applicable to the encoding device side (prediction control unit 128 connected to the intra prediction unit 124 and the inter prediction unit 126) and to the decoding device side (prediction control unit 220 connected to the intra prediction unit 216 and the inter prediction unit 218), and may be implemented in the encoding device of Figure 1 or the decoding device of Figure 10.

[0196] FIG. 11 is a flowchart illustrating an example of a process for dividing an image block into a plurality of partitions including at least a first partition having a non-rectangular shape (e.g., a triangle) and a second partition, and further encoding (or decoding) the image block as a reconstructed combination of the first and second partitions.

[0197] In step S1001, an image block is divided into a plurality of partitions including a first partition having a non-rectangular shape and a second partition that may or may not have a non-rectangular shape. For example, as shown in FIG. 12, the image block may be divided from the top left corner of the image block to the bottom right corner of the image block to create a first partition and a second partition, both of which have a non-rectangular shape (e.g., a triangle). Alternatively, the image block may be divided from the top right corner of the image block to the bottom left corner of the image block to create a first partition and a second partition, both of which have a non-rectangular shape (e.g., a triangle). Various examples of non-rectangular division are described later with reference to FIG. 12 and FIG. 17-FIG. 19.

[0198] In step S1002, the process predicts a first motion vector for the first partition and predicts a second motion vector for the second partition. For example, predicting the first and second motion vectors may include selecting a first motion vector from a first set of motion vector candidates and selecting a second motion vector from a second set of motion vector candidates.

[0199] In step S1003, a motion compensation process is performed to obtain a first partition using the first motion vector derived in step S1002 above, and to obtain a second partition using the second motion vector derived in step S1002 above.

[0200] In step S1004, a prediction process is performed on the image block as a (reconstructed) combination of the first and second partitions. The prediction process includes a boundary smoothing process to smooth the boundary between the first and second partitions. For example, the boundary smoothing process involves weighting a plurality of first values ​​of a plurality of boundary pixels predicted based on the first partition and a plurality of second values ​​of a plurality of boundary pixels predicted based on the second partition. Various implementations of the boundary smoothing process are described later with reference to Figures 13, 14, 20, and 21A-21D.

[0201] In step S1005, the process encodes or decodes the image block using one or more parameters including a partition parameter indicating partitioning of the image block into a first partition having a non-rectangular shape and a second partition. As summarized in the table of FIG. 15, for example, the partition parameter ("first index value") may encode, for example, a partition direction to be applied for partitioning (e.g., from top left to bottom right or from top right to bottom left as shown in FIG. 12) together with the first and second motion vectors derived in step S1002 described above. Details of such partition syntax operations involving one or more parameters including the partition parameter are described in detail below with reference to FIG. 15, FIG. 16, and FIG. 22-FIG. 25.

[0202] FIG. 17 is a flow chart showing a process 2000 for dividing an image block. In step S2001, the process divides an image into a plurality of partitions including a first partition having a non-rectangular shape and a second partition that may or may not have a non-rectangular shape. As shown in FIG. 12, the image block is divided into a first partition having a triangular shape and a second partition also having a triangular shape. There are many other examples in which an image block is divided into a plurality of partitions including a first partition and a second partition, where at least the first partition has a non-rectangular shape. The non-rectangular shape may be a triangle, a trapezoid, or a polygon having at least five sides and angles.

[0203] For example, as shown in Figure 18, an image block may be divided into two triangular partitions. An image block may be divided into more than two triangular partitions (e.g., three triangular partitions). An image block may be divided into a combination of one or more triangular partitions and one or more rectangular partitions. Alternatively, an image block may be divided into a combination of one or more triangular partitions and one or more polygonal partitions.

[0204] As further shown in Figure 19, the image block may be partitioned into an L-shaped (polygonal) partition and a rectangular shaped partition. The image block may be partitioned into a pentagonal (polygonal) shaped partition and a triangular shaped partition. The image block may be partitioned into a hexagonal (polygonal) shaped partition and a pentagonal (polygonal) shaped partition. Alternatively, the image block may be partitioned into multiple polygonal shaped partitions.

[0205] Referring again to FIG. 17, in step S2002, the process predicts a first motion vector for the first partition, for example by selecting a first partition from a first motion vector candidate set, and predicts a second motion vector for the second partition, for example by selecting a second partition from a second motion vector candidate set. For example, the first motion vector candidate set may include motion vectors of partitions adjacent to the first partition, and the second motion vector candidate set may include motion vectors of partitions adjacent to the second partition. The adjacent partitions may be one or both of spatially adjacent partitions and temporally adjacent partitions. Some examples of spatially adjacent partitions include partitions located to the left, lower left, lower, lower right, right, upper right, upper or upper left of the partition being processed. Examples of temporally adjacent partitions include co-located partitions in reference pictures of the image block.

[0206] In various implementations, the partitions adjacent to the first partition and the partitions adjacent to the second partition may be outside the image block divided into the first partition and the second partition. The first motion vector candidate set may be the same as or different from the second motion vector candidate set. Furthermore, at least one of the first motion vector candidate set and the second motion vector candidate set may be the same as another third motion vector candidate set prepared for the image block.

[0207] In some implementations, in response to determining in step S2002 that the second partition has a non-rectangular shape (e.g., a triangle) similar to the first partition, the process 2000 creates (for the non-rectangular shaped second partition) a second motion vector candidate set including a plurality of motion vectors of a plurality of partitions adjacent to the second partition, excluding the first partition (i.e., excluding the motion vector of the first partition). On the other hand, in response to determining that the second partition has a rectangular shape, but not similar to the first partition, the process 2000 creates (for the rectangular shaped second partition) a second motion vector candidate set including a plurality of motion vectors of a plurality of partitions adjacent to the second partition, including the first partition.

[0208] In step S2003, the process encodes or decodes the first partition using the first motion vector derived in step S2002 described above, and encodes or decodes the second partition using the second motion vector derived in step S2002 described above.

[0209] An image block partitioning process such as process 2000 of Figure 17 may be performed by an image encoding device including a circuit and a memory connected to the circuit, such as that shown in Figure 1. The circuit operates to partition an image block into a plurality of partitions including a first partition and a second partition having a non-rectangular shape (step S2001), predict a first motion vector for the first partition and a second motion vector for the second partition (step S2002), and encode the first partition using the first motion vector and the second partition using the second motion vector (step S2003).

[0210] According to another embodiment, an image coding apparatus as shown in FIG. 1 is provided, including a division unit 102 for receiving an original image and dividing it into a plurality of blocks in an operation, an adder unit 104 for receiving the plurality of blocks from the division unit and a plurality of predictions from a prediction control unit 128 in an operation, subtracting each prediction from its corresponding block, and outputting a residual, a transform unit 106 for performing a transform on the plurality of residuals output from the adder unit 104 in an operation, and outputting a plurality of transform coefficients, a quantization unit 108 for quantizing the plurality of transform coefficients in an operation to generate a plurality of quantized transform coefficients, an entropy coding unit 110 for coding the plurality of quantized transform coefficients in an operation to generate a bitstream, and an inter prediction unit 126 for generating a prediction of a current block based on a reference block in a coded reference picture in an operation, an intra prediction unit 124 for generating a prediction of the current block based on a coded reference block in the current picture in an operation, and a prediction control unit 128 connected to the memories 118, 122. In operation, the prediction control unit 128 divides multiple blocks into multiple partitions including a first partition having a non-rectangular shape and a second partition (Figure 17, step S2001), predicts a first motion vector for the first partition and a second motion vector for the second partition (step S2002), and encodes the first partition using the first motion vector and the second partition using the second motion vector (step S2003).

[0211] According to another embodiment, there is provided an image decoding device including a circuit, for example as shown in Fig. 10, and a memory connected to the circuit. The circuit operates to divide an image block into a plurality of partitions including a first partition and a second partition having a non-rectangular shape (Fig. 17, step S2001), predict a first motion vector for the first partition and a second motion vector for the second partition (step S2002), and decode the first partition using the first motion vector and the second partition using the second motion vector (step S2003).

[0212] Further according to an embodiment, the image decoding device shown in FIG. 10 is provided including: an entropy decoding unit 202 that receives and decodes an encoded bitstream in operation to obtain a plurality of quantized transform coefficients; an inverse quantization unit 204 and an inverse transform unit 206 that in operation inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals; an adder 208 that in operation adds the plurality of residuals output from the inverse quantization unit 204 and the inverse transform unit 206 to a plurality of predictions output from a prediction control unit 220 to reconstruct a plurality of blocks; an inter prediction unit 218 that in operation generates a prediction of a current block based on a reference block in a decoded reference picture; an intra prediction unit 216 that in operation generates a prediction of the current block based on a decoded reference block in the current picture; and a prediction control unit 220 connected to the memories 210, 214. In operation, the prediction control unit 220 divides an image block into multiple partitions including a first partition and a second partition having a non-rectangular shape (Figure 17, step S2001), predicts a first motion vector for the first partition and a second motion vector for the second partition (step S2002), and decodes the first partition using the first motion vector and the second partition using the second motion vector (step S2003).

[0213] [Boundary smoothing] As described above in FIG. 11 , step S1004, according to various embodiments, performing prediction processing on an image block as a (reconstructed) combination of a first partition having a non-rectangular shape and a second partition may involve application of a boundary smoothing process along the boundary between the first partition and the second partition.

[0214] For example, Figure 21B shows an example of a boundary smoothing process that involves weighting a plurality of first values ​​of a plurality of boundary pixels that are first predicted based on a first partition and a plurality of second values ​​of a plurality of boundary pixels that are second predicted based on a second partition.

[0215] 20 is a flow chart illustrating an overall boundary smoothing process 3000 involving weighting first values ​​of a first predicted plurality of boundary pixels based on a first partition and second values ​​of a second predicted plurality of boundary pixels based on a second partition according to one embodiment. In step S3001, an image block is divided along its boundary into a first partition and a second partition, where at least the first partition has a non-rectangular shape, as shown in FIG. 21A or as shown in FIG. 12, FIG. 18 and FIG. 19 described above.

[0216] In step S3002, a plurality of first values ​​(e.g., color, luminance, transparency, etc.) of a set of pixels of a first partition along the boundary ("boundary pixels" in FIG. 21A) are first predicted using information of the first partition. In step S3003, a plurality of second values ​​of a (same) set of pixels of the first partition along the boundary are second predicted using information of the second partition. In some embodiments, at least one of the first prediction and the second prediction is an inter-prediction process that predicts the plurality of first values ​​and the plurality of second values ​​based on a reference partition in a coded reference picture. With reference to FIG. 21D, in some implementations, the prediction process predicts the plurality of first values ​​of all pixels of a first partition that includes a set of pixels where the first partition and the second partition overlap ("first sample set"), and predicts the second values ​​only of a set of pixels where the first partition and the second partition overlap ("second sample set"). In other implementations, at least one of the first prediction and the second prediction is an intra prediction process that predicts the first values ​​and the second values ​​based on a coded reference partition in the current picture. In some implementations, a prediction method used for the first prediction is different from a prediction method used for the second prediction. For example, the first prediction may include an inter prediction process, and the second prediction may include an intra prediction process. Information used for the first prediction of the first values ​​or the second prediction of the second values ​​may be motion vectors of the first partition or the second partition, multiple intra prediction directions, etc.

[0217] In step S3004, the first values ​​predicted using the first partition and the second values ​​predicted using the second partition are weighted. In step S3005, the first partition is encoded or decoded using the weighted first values ​​and second values.

[0218] FIG. 21B illustrates an example of a boundary smoothing operation in which the first partition and the second partition overlap at (maximum) 5 pixels in each row or at (maximum) 5 pixels in each row. That is, the number of pixel sets in each row or column for which the plurality of first values ​​are predicted based on the first partition and the plurality of second values ​​are predicted based on the second partition is at most 5. FIG. 21C illustrates another example of a boundary smoothing operation in which the first partition and the second partition overlap at (maximum) 3 pixels in each row or column. That is, the number of pixel sets in each row or column for which the plurality of first values ​​are predicted based on the first partition and the plurality of second values ​​are predicted based on the second partition is at most 3.

[0219] 13 shows another example of a boundary smoothing operation in which the first partition and the second partition overlap at (maximum) 4 pixels in each row or column. That is, the number of pixel sets in each row or column for which the first values ​​are predicted based on the first partition and the second values ​​are predicted based on the second partition is at most 4. In the shown example, weights of 1 / 8, 1 / 4, 3 / 4 and 7 / 8 may be applied to the first values ​​of the four pixels in the set, respectively, and weights of 7 / 8, 3 / 4, 1 / 4 and 1 / 8 may be applied to the second values ​​of the four pixels in the set, respectively.

[0220] 14 further illustrates examples of boundary smoothing operations in which the first and second partitions overlap at 0 pixels in each row or column (i.e., they do not overlap), overlap at (at most) 1 pixel in each row or column, and overlap at (at most) 2 pixels in each row or column. In examples in which the first and second partitions do not overlap, zero weights are applied. In examples in which the first and second partitions overlap at 1 pixel in each row or column, a weight of 1 / 2 may be applied to the first values ​​of the pixels in the set predicted based on the first partition, and a weight of 1 / 2 may be applied to the second values ​​of the pixels in the set predicted based on the second partition. In an example where the first and second partitions overlap by two pixels in each row or column, weights of 1 / 3 and 2 / 3 may be applied to multiple first values ​​of two pixels in the set predicted based on the first partition, respectively, and weights of 2 / 3 and 1 / 3 may be applied to multiple second values ​​of two pixels in the set predicted based on the second partition, respectively.

[0221] In accordance with the embodiments described above, the number of pixels in the set where the first partition and the second partition overlap is an integer. In other implementations, the number of overlapping pixels in the set may be, for example, a non-integer or a fraction. The weights applied to the first values ​​and second values ​​of the pixel set may also be fractional or integer, depending on the application.

[0222] A boundary smoothing process such as the process 3000 of FIG. 20 may be performed by an image encoding device including a circuit such as that shown in FIG. 1 and a memory connected to the circuit. In operation, the circuit performs a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from an image block and a second partition (FIG. 20, step S3001). The boundary smoothing operation includes predicting a plurality of first values ​​of a set of pixels of the first partition along the boundary using information of the first partition (step S3002), predicting a plurality of second values ​​of a set of pixels of the first partition along the boundary using information of the second partition (step S3003), weighting the plurality of first values ​​and the plurality of second values ​​(step S3004), and encoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values ​​(step S3005).

[0223] According to another embodiment, an image coding apparatus as shown in FIG. 1 is provided, including a division unit 102 for receiving an original image and dividing it into a plurality of blocks in an operation, an adder unit 104 for receiving the plurality of blocks from the division unit and a plurality of predictions from a prediction control unit 128 in an operation, subtracting each prediction from its corresponding block, and outputting a residual, a transform unit 106 for performing a transform on the plurality of residuals output from the adder unit 104 in an operation, and outputting a plurality of transform coefficients, a quantization unit 108 for quantizing the plurality of transform coefficients in an operation to generate a plurality of quantized transform coefficients, an entropy coding unit 110 for coding the plurality of quantized transform coefficients in an operation to generate a bitstream, and an inter prediction unit 126 for generating a prediction of a current block based on a reference block in a coded reference picture in an operation, an intra prediction unit 124 for generating a prediction of the current block based on a coded reference block in the current picture in an operation, and a prediction control unit 128 connected to the memories 118, 122. In operation, the prediction control unit 128 performs a boundary smoothing operation along the boundary between a first partition having a non-rectangular shape divided from an image block and a second partition (FIG. 20, step S3001). The boundary smoothing operation includes first predicting a plurality of first values ​​of a pixel set of the first partition along the boundary using information of the first partition (step S3002), second predicting a plurality of second values ​​of a pixel set of the first partition along the boundary using information of the second partition (step S3003), weighting the plurality of first values ​​and the plurality of second values ​​(step S3004), and encoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values ​​(step S3005).

[0224] According to another embodiment, an image decoding device is provided, including a circuit and a memory connected to the circuit, for example as shown in Fig. 10. In operation, the circuit performs a boundary smoothing operation along a boundary between a first partition having a non-rectangular shape divided from an image block and a second partition (Fig. 20, step S3001). The boundary smoothing operation includes first predicting a plurality of first values ​​of a pixel set of the first partition along the boundary using information of the first partition (step S3002), second predicting a plurality of second values ​​of a pixel set of the first partition along the boundary using information of the second partition (step S3003), weighting the plurality of first values ​​and the plurality of second values ​​(step S3004), and decoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values ​​(step S3005).

[0225] According to another embodiment, an image decoding device shown in FIG. 10 is provided including an entropy decoding unit 202 that receives and decodes an encoded bitstream to obtain a plurality of quantized transform coefficients in an operation, an inverse quantization unit 204 and an inverse transform unit 206 that inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals in an operation, an adder 208 that adds the plurality of residuals output from the inverse quantization unit 204 and the inverse transform unit 206 to a plurality of predictions output from a prediction control unit 220 in an operation to reconstruct a plurality of blocks, an inter prediction unit 218 that generates a prediction of a current block based on a reference block in a decoded reference picture in an operation, an intra prediction unit 216 that generates a prediction of the current block based on a decoded reference block in the current picture in an operation, and a prediction control unit 220 connected to the memories 210, 214. In operation, the prediction control unit 220 performs a boundary smoothing operation along the boundary between a first partition having a non-rectangular shape divided from an image block and a second partition (FIG. 20, step S3001). The boundary smoothing operation includes first predicting a plurality of first values ​​of a pixel set of the first partition along the boundary using information of the first partition (step S3002), second predicting a plurality of second values ​​of a pixel set of the first partition along the boundary using information of the second partition (step S3003), weighting the plurality of first values ​​and the plurality of second values ​​(step S3004), and decoding the first partition using the weighted plurality of first values ​​and the weighted plurality of second values ​​(step S3005).

[0226] [Entropy encoding and decoding using partition parameter syntax] As shown in Figure 11, step S1005, according to various embodiments, an image block divided into a first partition and a second partition having a non-rectangular shape may be encoded or decoded using one or more parameters including a partition parameter indicating the non-rectangular division of the image block. In various embodiments, such partition parameters may be encoded jointly with, for example, a division direction applied to the division (e.g., from upper left to lower right or from upper right to lower left, see Figure 12) and the first and second motion vectors predicted in step S1002, as described more fully below.

[0227] FIG. 15 is a table of sample partition parameters ("first index values") and information sets respectively coded together by the partition parameters. The partition parameters ("first index values") range from 0 to 6 and code together the direction of dividing the image block into a first partition and a second partition, both of which are triangular (see FIG. 12), a first motion vector predicted for the first partition (FIG. 11, step S1002), and a second motion vector predicted for the second partition (FIG. 11, step S1002). In particular, partition parameter 0 codes that the division direction is from the top left corner to the bottom right corner, that the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and that the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition.

[0228] Partition parameter 1 encodes that the partition direction is from the top right corner to the bottom left corner, the first motion vector is the "first" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "second" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 2 encodes that the partition direction is from the top right corner to the bottom left corner, the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 3 encodes that the partition direction is from the top left corner to the bottom right corner, the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "second" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 4 encodes that the division direction is from the top right corner to the bottom left corner, that the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and that the second motion vector is the "third" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 5 encodes that the division direction is from the top left corner to the bottom right corner, that the first motion vector is the "third" motion vector listed in the first motion vector candidate set for the first partition, and that the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 6 encodes that the division direction is from the top left corner to the bottom right corner, that the first motion vector is the "fourth" motion vector listed in the first motion vector candidate set for the first partition, and that the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition.

[0229] FIG. 22 is a flow chart showing a method 4000 performed on the encoding device side. In step S4001, the process divides an image block into a plurality of partitions, including a first partition having a non-rectangular shape and a second partition, based on a partition parameter indicating the division. For example, as shown in FIG. 15 described above, the partition parameter may indicate a direction in which the image block is divided (e.g., from the upper right corner to the lower left corner, or from the upper left corner to the lower right corner). In step S4002, the process encodes the first partition and the second partition. In step S4003, the process writes one or more parameters including the partition parameter into a bitstream that can be received and decoded by the decoding device side to obtain the one or more parameters and perform the same prediction process (performed on the encoding device side) on the first partition and the second partition on the decoding device side. The one or more parameters including the partition parameter jointly or separately encode various information, such as the non-rectangular shape of the first partition, the shape of the second partition, the division direction used to divide the image block to obtain the first partition and the second partition, the first motion vector of the first partition, the second motion vector of the second partition, etc.

[0230] FIG. 23 is a flow chart showing a method 5000 performed on the decoding device side. In step S5001, the process reads one or more parameters from a bitstream, the one or more parameters including partition parameters indicating partitioning of an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition. The one or more parameters including the partition parameters read from the bitstream may encode various information required for the decoding device side to perform the same prediction process as that performed on the encoding device side, such as the non-rectangular shape of the first partition, the shape of the second partition, the partition direction used to divide the image block to obtain the first partition and the second partition, the first motion vector of the first partition, the second motion vector of the second partition, etc. In step S5002, the process 5000 divides the image block into a plurality of partitions based on the partition parameters read from the bitstream. In step S5003, the process decodes the first partition and the second partition as divided from the image block.

[0231] FIG. 24 is a table of sample partition parameters ("first index value") and information sets respectively coded together by the partition parameters, which are similar in characteristics to the sample table described above in FIG. 15. In FIG. 24, the partition parameters ("first index value") range from 0 to 6, and code the shape of the first and second partitions divided from the image block, the direction of dividing the image block into the first and second partitions, the first motion vector predicted for the first partition (FIG. 11, step S1002), and the second motion vector predicted for the second partition (FIG. 11, step S1002) together. In particular, the partition parameter 0 codes that neither the first nor the second partition has a triangular shape, and thus the division direction information is "N / A", the first motion vector information is "N / A", and the second motion vector information is "N / A".

[0232] Partition parameter 1 encodes that the first partition and the second partition are triangular, the division direction is from the upper left corner to the lower right corner, the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 2 encodes that the first partition and the second partition are triangular, the division direction is from the upper right corner to the lower left corner, the first motion vector is the "first" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "second" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 3 encodes that the first partition and the second partition are triangular, the division direction is from the top right corner to the bottom left corner, the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "first" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 4 encodes that the first partition and the second partition are triangular, the division direction is from the top left corner to the bottom right corner, the first motion vector is the "second" motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the "second" motion vector listed in the second motion vector candidate set for the second partition. Partition parameter 5 encodes that the first partition and the second partition are triangular, the division direction is from the top right corner to the bottom left corner, the first motion vector is the “second” motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the “third” motion vector listed in the second motion vector candidate set for the second partition.Partition parameter 6 encodes that the first partition and the second partition are triangular, the division direction is from the top left corner to the bottom right corner, the first motion vector is the “third” motion vector listed in the first motion vector candidate set for the first partition, and the second motion vector is the “first” motion vector listed in the second motion vector candidate set for the second partition.

[0233] According to some implementations, the partition parameters (index values) may be binarized according to a binarization scheme selected depending on the value of at least one or more parameters. Figure 16 shows an example binarization scheme for binarizing the index values ​​(partition parameter values).

[0234] 25 is a table of example combinations of first and second parameters, where one of the first and second parameters is a partition parameter indicating that the image block is to be divided into a plurality of partitions including a first partition and a second partition having a non-rectangular shape. In this example, the partition parameter may be used to indicate that the image block is to be divided without co-encoding other information encoded by one or more of the other parameters.

[0235] In the first example in Fig. 25, the first parameter is used to indicate the image block size, and the second parameter is used as a partition parameter (flag) to indicate that at least one of the partitions divided from the image block has a triangular shape. Such a combination of the first and second parameters may be used to indicate, for example, 1) no triangular shape partition when the image block size is larger than 64x64, or 2) no triangular shape partition when the width to height ratio of the image block is larger than 4 (e.g., 64x4).

[0236] In the second example of Figure 25, the first parameter is used to indicate a prediction mode, and the second parameter is used as a partition parameter (flag) to indicate that at least one of the partitions divided from the image block has a triangular shape. Such a combination of the first parameter and the second parameter may be used, for example, to indicate that 1) there is no triangular partition when the image block is coded in intra mode.

[0237] In the third example of Figure 25, the first parameter is used as a partition parameter (flag) to indicate that at least one of the partitions divided from the image block has a triangular shape, and the second parameter is used to indicate a prediction mode. Such a combination of the first parameter and the second parameter may be used, for example, to indicate that the image block should be inter-coded if at least one of the partitions divided from the image block has a triangular shape.

[0238] In the fourth example of Figure 25, the first parameter indicates the motion vector of the neighboring block, and the second parameter is used as a partition parameter indicating the direction of dividing the image block into two triangles. Such a combination of the first and second parameters may be used to indicate, for example, that 1) if the motion vector of the neighboring block is diagonal, the direction of dividing the image block into two triangles is from the top left corner to the bottom right corner.

[0239] In the fifth example of Figure 25, the first parameter indicates the intra prediction direction of the neighboring block, and the second parameter is used as a partition parameter indicating the direction of dividing the image block into two triangles. Such a combination of the first parameter and the second parameter may be used to indicate that, for example, 1) if the intra prediction direction of the neighboring block is reverse diagonal, the direction of dividing the image block into two triangles is from the upper right corner to the lower left corner.

[0240] It should be understood that the tables of one or more parameters including partition parameters and which information is coded together or separately as shown in Figures 15, 24, and 25 are presented as examples only, and that numerous other ways of coding various information together or separately as part of the partition syntax operations described above are within the scope of this disclosure. For example, the partition parameters may indicate that the first partition is a triangle, a trapezoid, or a polygon having at least five sides and angles. The partition parameters may indicate that the second partition has a non-rectangular shape, such as a triangle, a trapezoid, and a polygon having at least five sides and angles. The partition parameters may indicate one or more pieces of information about the partition, such as the non-rectangular shape of the first partition, the shape of the second partition (which may be non-rectangular or rectangular), and the partition direction (e.g., from the top left corner of the image block to its bottom right corner, and from the top right corner of the image block to its bottom left corner) applied to divide the image block into multiple partitions. The partition parameters jointly encode further information, such as a first motion vector of the first partition, a second motion vector of the second partition, an image block size, a prediction mode, a motion vector of a neighboring block, an intra-prediction direction of the neighboring block, etc. Alternatively, any of the further information may be encoded separately by one or more parameters other than the partition parameters.

[0241] A partition syntax operation such as process 4000 of Figure 22 may be performed by an image coding device including a circuit and a memory coupled to the circuit, such as that shown in Figure 1. In operation, the circuit performs the partition syntax operation including dividing an image block into a plurality of partitions including a first partition and a second partition having a non-rectangular shape based on a partition parameter indicating the division (Figure 22, step S4001), encoding the first partition and the second partition (S4002), and writing one or more parameters including the partition parameter to a bitstream (S4003).

[0242] According to another embodiment, an image coding apparatus as shown in FIG. 1 is provided, including a division unit 102 for receiving an original image and dividing it into a plurality of blocks in an operation, an adder unit 104 for receiving the plurality of blocks from the division unit and a plurality of predictions from a prediction control unit 128 in an operation, subtracting each prediction from its corresponding block, and outputting a residual, a transform unit 106 for performing a transform on the plurality of residuals output from the adder unit 104 in an operation, and outputting a plurality of transform coefficients, a quantization unit 108 for quantizing the plurality of transform coefficients in an operation to generate a plurality of quantized transform coefficients, an entropy coding unit 110 for coding the plurality of quantized transform coefficients in an operation to generate a bitstream, and an inter prediction unit 126 for generating a prediction of a current block based on a reference block in a coded reference picture in an operation, an intra prediction unit 124 for generating a prediction of the current block based on a coded reference block in the current picture in an operation, and a prediction control unit 128 connected to the memories 118, 122. In operation, the prediction control unit 128 divides an image block into a plurality of partitions including a first partition and a second partition having a non-rectangular shape based on a partition parameter indicating the division (FIG. 22, step S4001), and encodes the first partition and the second partition (step S4002). In operation, the entropy coding unit 110 writes one or more parameters including the partition parameter into a bitstream (step S4003).

[0243] According to another embodiment, there is provided an image decoding device including a circuit and a memory coupled to the circuit, for example as shown in Fig. 10. In operation, the circuit performs a partition syntax operation including: reading one or more parameters from a bitstream including a partition parameter indicating partitioning of an image block into a plurality of partitions including a first partition having a non-rectangular shape and a second partition (Fig. 23, step S5001), partitioning the image block into the plurality of partitions based on the partition parameter (S5002), and decoding the first partition and the second partition (S5003).

[0244] Further according to an embodiment, the image decoding device shown in FIG. 10 is provided including: an entropy decoding unit 202 that receives and decodes an encoded bitstream in operation to obtain a plurality of quantized transform coefficients; an inverse quantization unit 204 and an inverse transform unit 206 that in operation inverse quantize the plurality of quantized transform coefficients to obtain a plurality of transform coefficients and inverse transform the plurality of transform coefficients to obtain a plurality of residuals; an adder 208 that in operation adds the plurality of residuals output from the inverse quantization unit 204 and the inverse transform unit 206 to a plurality of predictions output from a prediction control unit 220 to reconstruct a plurality of blocks; an inter prediction unit 218 that in operation generates a prediction of a current block based on a reference block in a decoded reference picture; an intra prediction unit 216 that in operation generates a prediction of the current block based on a decoded reference block in the current picture; and a prediction control unit 220 connected to the memories 210, 214. In operation, the entropy decoding unit 202, in some implementations in cooperation with the prediction control unit 220, reads one or more parameters from the bitstream including a partition parameter indicating division of the image block into multiple partitions including a first partition having a non-rectangular shape and a second partition (Figure 23, step S5001), divides the image block into multiple partitions based on the partition parameter (S5002), and decodes the first partition and the second partition (S5003).

[0245] [Implementation and Application] In each of the above embodiments, each of the functional or operational blocks can usually be realized by an MPU (micro processing unit) and a memory, etc. Furthermore, the processing by each of the functional blocks may be realized as a program execution unit such as a processor that reads and executes software (programs) recorded on a recording medium such as a ROM. The software may be distributed. The software may be recorded on various recording media such as semiconductor memories. It is also possible to realize each functional block by hardware (dedicated circuitry). Various combinations of hardware and software may be adopted.

[0246] The processing described in each embodiment may be realized by centralized processing using a single device (system), or may be realized by distributed processing using multiple devices. Also, the processor that executes the above program may be single or multiple. That is, centralized processing or distributed processing may be performed.

[0247] The aspects of the present disclosure are not limited to the above examples, and various modifications are possible, which are also included within the scope of the aspects of the present disclosure.

[0248] Further, here, application examples of the video coding method (image coding method) or video decoding method (image decoding method) shown in each of the above embodiments and various systems implementing the application examples will be described. Such a system may be characterized by having an image coding device using the image coding method, an image decoding device using the image decoding method, or an image coding / decoding device including both. Other configurations of such a system can be appropriately changed depending on the case.

[0249] [Usage example] 26 is a diagram showing the overall configuration of an appropriate content supply system ex100 for realizing a content distribution service. The area where communication services are provided is divided into cells of a desired size, and base stations ex106, ex107, ex108, ex109, and ex110, which are fixed wireless stations in the illustrated example, are installed in each cell.

[0250] In this content supply system ex100, devices such as a computer ex111, a game machine ex112, a camera ex113, a home appliance ex114, and a smartphone ex115 are connected to the Internet ex101 via an Internet service provider ex102 or a communication network ex104, and base stations ex106 to ex110. The content supply system ex100 may be configured to connect any of the above devices in combination. In various implementations, the devices may be directly or indirectly connected to each other via a telephone network or short-distance wireless communication, etc., without the base stations ex106 to ex110. Furthermore, the streaming server ex103 may be connected to devices such as the computer ex111, the game machine ex112, the camera ex113, the home appliance ex114, and the smartphone ex115 via the Internet ex101, etc. Furthermore, the streaming server ex103 may be connected to a terminal in a hotspot in an airplane ex117, etc., via a satellite ex116.

[0251] Instead of the base stations ex106 to ex110, wireless access points or hot spots may be used. The streaming server ex103 may be directly connected to the communication network ex104 without going through the Internet ex101 or the Internet service provider ex102, or may be directly connected to an airplane ex117 without going through a satellite ex116.

[0252] The camera ex113 is a device capable of taking still images and videos, such as a digital camera. The smartphone ex115 is a smartphone, a mobile phone, or a PHS (Personal Handy-phone System) that supports the mobile communication system, such as 2G, 3G, 3.9G, 4G, and 5G in the future.

[0253] The home appliance ex114 is a refrigerator, or an appliance included in a home fuel cell cogeneration system.

[0254] In the content supply system ex100, a terminal having a photographing function is connected to a streaming server ex103 via a base station ex106 or the like, thereby enabling live distribution or the like. In live distribution, a terminal (such as a computer ex111, a game machine ex112, a camera ex113, a home appliance ex114, a smartphone ex115, and a terminal in an airplane ex117) may perform the encoding process described in each of the above embodiments on still image or video content photographed by a user using the terminal, may multiplex the video data obtained by encoding with sound data obtained by encoding sound corresponding to the video, and may transmit the obtained data to the streaming server ex103. That is, each terminal functions as an image encoding device according to one aspect of the present disclosure.

[0255] Meanwhile, the streaming server ex103 streams the transmitted content data to the requesting client. The client is a computer ex111, a game machine ex112, a camera ex113, a home appliance ex114, a smartphone ex115, a terminal in an airplane ex117, or the like, capable of decoding the encoded data. Each device that receives the distributed data may decode and play the received data. That is, each device may function as an image decoding device according to one aspect of the present disclosure.

[0256] [Distributed processing] The streaming server ex103 may be a plurality of servers or computers that process, record, and distribute data in a distributed manner. For example, the streaming server ex103 may be realized by a CDN (Contents Delivery Network), and content distribution may be realized by a network that connects a large number of edge servers distributed around the world. In the CDN, a physically close edge server may be dynamically assigned according to the client. The content is cached and distributed to the edge server, thereby reducing delays. In addition, when some types of errors occur or communication conditions change due to an increase in traffic, processing can be distributed among multiple edge servers, the distribution entity can be switched to another edge server, or distribution can be continued by bypassing the part of the network where a failure has occurred, thereby realizing high-speed and stable distribution.

[0257] In addition to the distributed processing of the distribution itself, the encoding processing of the captured data may be performed by each terminal, may be performed by the server side, or may be shared among the terminals. As an example, in the encoding processing, a processing loop is generally performed twice. In the first loop, the complexity of the image or the amount of code is detected for each frame or scene. In the second loop, processing is performed to maintain the image quality and improve the encoding efficiency. For example, the terminal performs the first encoding processing, and the server side that receives the content performs the second encoding processing, thereby improving the quality and efficiency of the content while reducing the processing load on each terminal. In this case, if there is a request to receive and decode almost in real time, the data encoded once by the terminal can be received and played back by other terminals, making it possible to perform more flexible real-time distribution.

[0258] As another example, the camera ex113 etc. extracts features (amount of features or characteristics) from an image, compresses data related to the features as metadata, and transmits the compressed data to the server. The server performs compression according to the meaning of the image (or the importance of the content), for example by determining the importance of an object from the features and switching the quantization precision. The feature data is particularly effective in improving the accuracy and efficiency of motion vector prediction when the server recompresses the image. Alternatively, the terminal may perform simple encoding such as VLC (variable length coding), and the server may perform encoding with a high processing load such as CABAC (context-adaptive binary arithmetic coding).

[0259] As another example, in a stadium, a shopping mall, a factory, etc., there may be a plurality of video data in which almost the same scene has been shot by a plurality of terminals. In this case, using the plurality of terminals that shot the video and, as necessary, other terminals and servers that did not shoot the video, coding processing is assigned to each of them, for example, in units of GOPs (Group of Pictures), in units of pictures, or in units of tiles obtained by dividing a picture, for distributed processing. This reduces delays and realizes better real-time performance.

[0260] Since the multiple video data are of almost the same scene, the server may manage and / or instruct the video data shot by each terminal to be mutually referenced. The server may also receive the encoded data from each terminal and change the reference relationship between the multiple data, or correct or replace the pictures themselves and re-encode them. This makes it possible to generate a stream with improved quality and efficiency for each piece of data.

[0261] Furthermore, the server may distribute the video data after performing transcoding to change the encoding method of the video data. For example, the server may convert the MPEG encoding method to the VP encoding method (e.g., VP9), or convert H.264 to H.265.

[0262] In this way, the encoding process can be performed by a terminal or one or more servers. Therefore, in the following, descriptions such as "server" or "terminal" are used to indicate the entity performing the processing, but some or all of the processing performed by the server may be performed by the terminal, and some or all of the processing performed by the terminal may be performed by the server. The same applies to the decoding process.

[0263] [3D, multi-angle] It is becoming increasingly common to integrate and use images or videos of different scenes or the same scene taken from different angles by multiple devices such as cameras ex113 and / or smartphones ex115 that are approximately synchronized with each other. The videos taken by each device can be integrated based on the relative positional relationship between the devices obtained separately, or on areas where feature points included in the videos match.

[0264] The server may not only encode 2D video, but also encode still images automatically or at a time specified by the user based on scene analysis of the video and transmit them to the receiving terminal. If the server can obtain the relative positional relationship between the shooting terminals, the server may generate a 3D shape of the scene based on not only 2D video but also images of the same scene captured from different angles. The server may separately encode 3D data generated by point cloud or the like, or may generate images to be transmitted to the receiving terminal by selecting or reconstructing images from images captured by multiple terminals based on the results of recognizing or tracking people or objects using the 3D data.

[0265] In this way, the user can enjoy a scene by arbitrarily selecting each video corresponding to each shooting terminal, or can enjoy content in which a video of a selected viewpoint is cut out from 3D data reconstructed using multiple images or videos. Furthermore, together with the video, sound may also be collected from multiple different angles, and the server may multiplex the sound from a specific angle or space with the corresponding video and transmit the multiplexed video and sound.

[0266] In recent years, content that associates the real world with a virtual world, such as Virtual Reality (VR) and Augmented Reality (AR), has also become popular. In the case of VR images, the server creates viewpoint images for the right eye and the left eye, respectively, and may perform encoding that allows reference between each viewpoint video using Multi-View Coding (MVC) or the like, or may encode them as separate streams without mutual reference. When decoding the separate streams, it is preferable to play them in synchronization with each other so that a virtual three-dimensional space is reproduced according to the user's viewpoint.

[0267] In the case of an AR image, the server may superimpose virtual object information in the virtual space on camera information in the real space based on the three-dimensional position or the movement of the user's viewpoint. The decoding device may obtain or hold virtual object information and three-dimensional data, generate a two-dimensional image according to the movement of the user's viewpoint, and smoothly connect the two-dimensional image to create superimposed data. Alternatively, the decoding device may transmit the movement of the user's viewpoint to the server in addition to the request for virtual object information. The server may create superimposed data according to the movement of the viewpoint received from the three-dimensional data held by the server, encode the superimposed data, and distribute it to the decoding device. Note that the superimposed data typically has an α value indicating the transparency in addition to RGB, and the server may set the α value of the part other than the object created from the three-dimensional data to 0 or the like, and encode the part in a state where the part is transparent. Alternatively, the server may generate data in which a predetermined value of RGB value is set to the background like a chromakey, and the part other than the object is the background color. The predetermined value of RGB value may be determined in advance.

[0268] Similarly, the decoding process of the distributed data may be performed by the client (e.g., a terminal), by the server, or may be shared between the client and the server. As an example, a certain terminal may once send a reception request to the server, and the content corresponding to the request may be received by another terminal, decoded, and the decoded signal may be transmitted to a device having a display. By distributing the processing and selecting the appropriate content regardless of the performance of the communication-enabled terminal itself, data with good image quality can be reproduced. As another example, while large-sized image data is received by a TV or the like, a part of the area, such as tiles into which the picture is divided, may be decoded and displayed on the viewer's personal terminal. This allows the viewer to check his / her own area of ​​responsibility or the area he / she wants to check in more detail while sharing the overall picture.

[0269] It may be possible to seamlessly receive content using delivery system standards such as MPEG-DASH in situations where multiple short-range, medium-range, or long-range wireless communication is available indoors and outdoors. A user may freely select and switch in real time between a decoding device or a display device, such as a user's terminal or a display device placed indoors or outdoors. In addition, decoding can be performed while switching between a decoding device and a display device using the user's location information, etc. This makes it possible to map and display information on a part of the wall or ground of a neighboring building where a displayable device is embedded while the user is moving to a destination. It is also possible to switch the bit rate of the received data based on the accessibility of the encoded data on the network, such as when the encoded data is cached on a server that can be accessed from the receiving terminal in a short time, or copied to an edge server in a content delivery service.

[0270] [Scalable Coding] The switching of contents will be described using a scalable stream compressed and coded by applying the video coding method shown in each of the above embodiments, as shown in FIG. 27. The server may have multiple streams with the same content but different qualities as individual streams, but may be configured to switch contents by taking advantage of the characteristics of a temporal / spatial scalable stream realized by coding in layers as shown in the figure. In other words, the decoding side can freely switch and decode low-resolution content and high-resolution content by determining which layer to decode according to an internal factor such as performance and an external factor such as the state of the communication band. For example, if a user wants to continue watching a video that he or she was watching on his or her smartphone ex115 while on the move on a device such as an Internet TV after returning home, the device only needs to decode the same stream up to a different layer, thereby reducing the burden on the server side.

[0271] Furthermore, as described above, pictures are coded for each layer, and in addition to the configuration in which scalability is realized in an enhancement layer above the base layer, the enhancement layer may include meta-information based on image statistics and the like. The decoding side may generate high-quality content by super-resolving pictures in the base layer based on the meta-information. The super-resolution may improve the signal-to-noise ratio while maintaining and / or increasing the resolution. The meta-information includes information for specifying linear or non-linear filter coefficients to be used in the super-resolution process, or information for specifying parameter values ​​in the filter process, machine learning, or least squares calculation to be used in the super-resolution process.

[0272] Alternatively, a configuration may be provided in which a picture is divided into tiles or the like according to the meaning of an object or the like in an image. The decoding side selects tiles to be decoded to decode only a part of the area. Furthermore, by storing the attributes of the object (person, car, ball, etc.) and the position in the video (coordinate position in the same image, etc.) as meta information, the decoding side can identify the position of a desired object based on the meta information and determine the tile including the object. For example, as shown in FIG. 28, the meta information may be stored using a data storage structure different from pixel data, such as a supplemental enhancement information (SEI) message in HEVC. This meta information indicates, for example, the position, size, or color of the main object.

[0273] Meta information may be stored in units consisting of multiple pictures, such as streams, sequences, or random access units. The decoding side can obtain the time when a specific person appears in a video, and by combining the picture-by-picture information with the time information, it can identify the picture in which an object exists and determine the position of the object within the picture.

[0274] [Web page optimization] FIG. 29 is a diagram showing an example of a display screen of a web page in a computer ex111 or the like. FIG. 30 is a diagram showing an example of a display screen of a web page in a smartphone ex115 or the like. As shown in FIG. 29 and FIG. 30, a web page may include a plurality of link images which are links to image content, and the appearance of the link images may differ depending on the device used to view the page. When a plurality of link images are visible on the screen, the display device (decoding device) may display a still image or I-picture that each content has as a link image, or may display an image such as a gif animation using a plurality of still images or I-pictures, or may receive only the base layer, and decode and display the image.

[0275] When a link image is selected by a user, the display device performs decoding, for example, giving top priority to the base layer. If the HTML constituting the web page contains information indicating that the content is scalable, the display device may decode up to the enhancement layer. Furthermore, in order to ensure real-time performance, before selection or when the communication band is very tight, the display device decodes and displays only forward-reference pictures (I pictures, P pictures, and B pictures with forward reference only), thereby reducing the delay between the decoding time of the first picture and the display time (the delay from the start of decoding the content to the start of display). Furthermore, the display device may intentionally ignore the reference relationship of pictures, roughly decode all B pictures and P pictures with forward reference, and perform normal decoding as the number of received pictures increases over time.

[0276] [Automatic driving] Furthermore, when transmitting and receiving still image or video data such as 2D or 3D map information for automatic driving or driving assistance of a vehicle, the receiving terminal may receive weather or construction information as meta information in addition to image data belonging to one or more layers, and may associate and decode these. Note that the meta information may belong to a layer, or may simply be multiplexed with the image data.

[0277] In this case, since a car, drone, or airplane including a receiving terminal moves, the receiving terminal can realize seamless reception and decoding while switching between base stations ex106 to ex110 by transmitting location information of the receiving terminal. Also, the receiving terminal can dynamically switch how much meta information to receive or how much to update map information according to a user's selection, a user's situation, and / or a communication band state.

[0278] In the content supply system ex100, the client can receive, decode, and play back encoded information sent by a user in real time.

[0279] [Distribution of personal content] Furthermore, the content supply system ex100 allows not only high-quality, long-duration content from video distributors, but also low-quality, short-duration content from individuals via unicast or multicast distribution. Such personal content is expected to continue to increase in the future. To improve the quality of personal content, the server may perform editing before encoding. This can be achieved, for example, by using the following configuration.

[0280] During shooting, in real time or after accumulating, the server performs recognition processing such as shooting errors, scene search, semantic analysis, and object detection from the original image data or the encoded data. Then, based on the recognition results, the server manually or automatically performs editing such as correcting focus deviation or camera shake, deleting less important scenes such as scenes that are less bright than other pictures or out of focus, emphasizing object edges, and changing color. The server encodes the edited data based on the editing results. It is also known that if the shooting time is too long, the viewer rating will decrease, and the server may automatically clip not only scenes with less importance as described above but also scenes with little movement based on the image processing results so that the content will be within a specific time range depending on the shooting time. Alternatively, the server may generate a digest based on the result of the semantic analysis of the scene and encode it.

[0281] In some cases, personal content may contain content that infringes copyright, moral rights, or portrait rights, and the range of sharing may exceed the intended range, which may be inconvenient for individuals. Therefore, for example, the server may change the image to an unfocused image of a person's face on the periphery of the screen, or the inside of a house, and encode it. Furthermore, the server may recognize whether the image to be encoded contains a face of a person other than a person registered in advance, and if so, may perform processing such as applying a mosaic to the face. Alternatively, as pre-processing or post-processing of encoding, the user may specify a person or background area that he or she wishes to process in the image from the viewpoint of copyright, etc. The server may replace the specified area with another image, or may perform processing such as blurring the focus. If it is a person, the person can be tracked in the video and the image of the person's face can be replaced.

[0282] Since viewing of personal content with a small amount of data requires real-time performance, the decoding device may receive the base layer as a top priority and decode and play it, depending on the bandwidth. The decoding device may receive an enhancement layer during this time, and when the content is played back two or more times, such as when the playback is looped, play back high-quality video including the enhancement layer. With a stream that has been scalably encoded in this way, it is possible to provide an experience in which the video is rough when not selected or when viewing begins, but the stream gradually becomes smarter and the image quality improves. In addition to scalable encoding, a similar experience can be provided even if a rough stream that is played the first time and a second stream that is encoded with reference to the first video are configured as a single stream.

[0283] [Other application examples] Moreover, these encoding or decoding processes are generally processed in an LSIex500 possessed by each terminal. The LSI (large scale integration circuitry)ex500 (see FIG. 26) may be a one-chip or multiple-chip configuration. Note that software for encoding or decoding moving images may be incorporated into some kind of recording medium (such as a CD-ROM, a flexible disk, or a hard disk) that can be read by the computer ex111 or the like, and the encoding or decoding process may be performed using the software. Furthermore, if the smartphone ex115 has a camera, video data captured by the camera may be transmitted. The video data at this time may be data encoded and processed by the LSIex500 possessed by the smartphone ex115.

[0284] The LSIex500 may be configured to download and activate application software. In this case, the terminal first determines whether the terminal supports the encoding method of the content or has the ability to execute a specific service. If the terminal does not support the encoding method of the content or does not have the ability to execute a specific service, the terminal may download a codec or application software, and then acquire and play the content.

[0285] Furthermore, at least one of the video encoding device (image encoding device) or video decoding device (image decoding device) of each of the above embodiments can be incorporated into a digital broadcasting system, not limited to the content supply system ex100 via the Internet ex101. Since multiplexed data in which video and audio are multiplexed is carried and transmitted over broadcasting radio waves using a satellite or the like, there is a difference in that it is more suitable for multicast compared to the content supply system ex100, which has a configuration that is easy to use for unicast, but similar applications are possible with regard to the encoding process and decoding process.

[0286] [Hardware configuration] FIG. 31 is a diagram showing further details of the smartphone ex115 shown in FIG. 26. FIG. 32 is a diagram showing a configuration example of the smartphone ex115. The smartphone ex115 includes an antenna ex450 for transmitting and receiving radio waves to and from the base station ex110, a camera unit ex465 capable of taking videos and still images, and a display unit ex458 for displaying the video captured by the camera unit ex465 and the decoded data of the video received by the antenna ex450. The smartphone ex115 further includes an operation unit ex466 such as a touch panel, an audio output unit ex457 such as a speaker for outputting audio or sound, an audio input unit ex456 such as a microphone for inputting audio, a memory unit ex467 capable of storing encoded data such as captured video or still images, recorded audio, received video or still images, and e-mail, or decoded data, and a slot unit ex464 which is an interface unit with a SIMex468 for identifying a user and authenticating access to various data including a network. In addition, an external memory may be used instead of the memory unit ex467.

[0287] A main control unit ex460 that can comprehensively control the display unit ex458 and operation unit ex466 etc. is connected to a power supply circuit unit ex461, an operation input control unit ex462, a video signal processing unit ex455, a camera interface unit ex463, a display control unit ex459, a modulation / demodulation unit ex452, a multiplexing / separation unit ex453, an audio signal processing unit ex454, a slot unit ex464, and a memory unit ex467 via a synchronization bus ex470.

[0288] When the power key is turned on by a user's operation, the power supply circuit unit ex461 starts up the smartphone ex115 into an operational state and supplies power to each unit from the battery pack.

[0289] The smartphone ex115 performs processes such as telephone calls and data communications under the control of a main control unit ex460 having a CPU, a ROM, and a RAM. During a telephone call, a voice signal collected by a voice input unit ex456 is converted into a digital voice signal by a voice signal processing unit ex454, and then subjected to spectrum spreading processing by a modulation / demodulation unit ex452, and then subjected to digital-to-analog conversion processing and frequency conversion processing by a transmission / reception unit ex451, and the resulting signal is transmitted via an antenna ex450. In addition, the received data is amplified and subjected to frequency conversion processing and analog-to-digital conversion processing, and then subjected to spectrum inverse spreading processing by a modulation / demodulation unit ex452, and then converted into an analog voice signal by a voice signal processing unit ex454, and then output from a voice output unit ex457. During a data communication mode, text, still images, or video data can be sent under the control of the main control unit ex460 via an operation input control unit ex462 based on the operation of an operation unit ex466 or the like of the main unit. Similar transmission and reception processing is performed. When transmitting video, still images, or video and audio in the data communication mode, the video signal processing unit ex455 compresses and codes the video signal stored in the memory unit ex467 or the video signal input from the camera unit ex465 by the moving image coding method shown in each of the above embodiments, and sends the coded video data to the multiplexing / separation unit ex453. The audio signal processing unit ex454 codes the audio signal collected by the audio input unit ex456 while the video or still image is being captured by the camera unit ex465, and sends the coded audio data to the multiplexing / separation unit ex453. The multiplexing / separation unit ex453 multiplexes the coded video data and the coded audio data by a predetermined method, and performs modulation and conversion processing in the modulation / demodulation unit (modulation / demodulation circuit unit) ex452 and the transmission / reception unit ex451, and transmits the data via the antenna ex450. The predetermined method may be determined in advance.

[0290] In the case of receiving a video attached to an e-mail or a chat, or a video linked to a web page, in order to decode the multiplexed data received via the antenna ex450, the multiplexing / separation unit ex453 separates the multiplexed data into a bit stream of video data and a bit stream of audio data by separating the multiplexed data, and supplies the encoded video data to the video signal processing unit ex455 via the synchronization bus ex470, and supplies the encoded audio data to the audio signal processing unit ex454. The video signal processing unit ex455 decodes the video signal by a video decoding method corresponding to the video encoding method shown in each of the above embodiments, and the video or still image included in the linked video file is displayed on the display unit ex458 via the display control unit ex459. The audio signal processing unit ex454 decodes the audio signal, and the audio is output from the audio output unit ex457. As real-time streaming becomes more and more popular, audio playback may not be socially appropriate depending on the user's situation. Therefore, as an initial setting, it is preferable to have a configuration in which only the video data is played without playing the audio signal, and audio may be played in sync only when the user performs an operation such as clicking on the video data.

[0291] Although the smartphone ex115 has been described as an example here, other implementation formats are possible, such as a transmitting terminal having only an encoder and a receiving terminal having only a decoder, in addition to a transmitting / receiving terminal having both an encoder and a decoder. In the digital broadcasting system, multiplexed data in which audio data is multiplexed with video data is received or transmitted. However, in addition to audio data, text data related to the video may also be multiplexed in the multiplexed data. Also, video data itself may be received or transmitted instead of the multiplexed data.

[0292] Although the main control unit ex460 including the CPU controls the encoding or decoding process, various terminals are often equipped with a GPU. Therefore, a configuration may be used in which a wide area is processed collectively by utilizing the performance of the GPU using a memory shared by the CPU and GPU, or a memory whose addresses are managed so that they can be used in common. This can shorten the encoding time, ensure real-time performance, and achieve low latency. In particular, it is efficient to perform the processing of motion search, deblocking filter, SAO (Sample Adaptive Offset), and transformation and quantization collectively in units such as pictures by the GPU, rather than by the CPU.

Claims

1. The circuit, a memory connected to the circuit; The circuit, in operation, determining whether intra prediction is applied to the image block; When the intra prediction is not applied to the image block, for a boundary between a first partition having a non-rectangular shape in the image block and a second partition in the image block based on a first parameter, (a) selecting a first motion vector of the first partition from a first motion vector candidate set, and determining a first value of the first partition using the first motion vector, (b) determining a second value of the second partition using a second motion vector of the second partition, (c) weighting the first value and the second value for a plurality of pixels where the first partition and the second partition overlap, and (d) performing a boundary smoothing process to encode the image block using the weighted first value and the weighted second value; disabling the boundary smoothing process for the image block if the intra prediction is applied to the image block and a ratio of a width of the image block to a height of the image block is greater than 4, or a ratio of the height to the width is greater than 4. Image encoding device.

2. The circuit, a memory connected to the circuit; The circuit, in operation, determining whether intra prediction is applied to the image block; When the intra prediction is not applied to the image block, for a boundary between a first partition having a non-rectangular shape in the image block and a second partition in the image block based on a first parameter, (a) selecting a first motion vector of the first partition from a first motion vector candidate set, and using the first motion vector, determining a first value of the first partition, (b) using a second motion vector of the second partition, determining a second value of the second partition, (c) weighting the first value and the second value for a plurality of pixels where the first partition and the second partition overlap, and (d) performing a boundary smoothing process to decode the image block using the weighted first value and the weighted second value; disabling the boundary smoothing process for the image block if the intra prediction is applied to the image block and a ratio of a width of the image block to a height of the image block is greater than 4, or a ratio of the height to the width is greater than 4. Image decoding device.

3. The circuit, a memory connected to the circuit; The circuit, in operation, generating first parameters for causing a decoding device to perform a boundary smoothing process on a boundary between a first partition having a non-rectangular shape in an image block and a second partition in the image block; including said first parameters in a bitstream; When intra prediction is not applied to the image block, the boundary smoothing process includes: a first motion vector for the first partition is selected from a first set of motion vector candidates; a first value of the first partition is calculated using the first motion vector; A second motion vector for the second partition is selected; and a second value of the second partition is calculated using the second motion vector; and the first and second values ​​of a plurality of pixels between the first and second partitions are weighted; the image block is decoded using the weighted first values ​​and the weighted second values; When the intra prediction is applied to the image block, and a ratio of a width of the image block to a height of the image block is greater than 4, or a ratio of the height to the width is greater than 4, the decoding device disables the boundary smoothing process. Bitstream generator.

Citation Information

Patent Citations

  • Method and apparatus for video encoding and decoding of geometrically partitioned bidirectional predictive mode partitions

    JP2011501508A

  • Smoothing of overlapping regions resulting from geometric motion subdivision.

    JP2013520877A

  • Smoothing overlapped regions resulting from geometric motion partitioning

    WO2011103210A2