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

The method improves coding efficiency in image encoding and decoding by selectively using affine transformation parameters for prediction, addressing the challenges of high-order motion information and enhancing prediction accuracy.

JP7664546B2Active Publication Date: 2025-04-18SUN PATENT TRUST

Patent Information

Application Number
JP2024029938
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2013-09-30
Filing Date
2024-02-29
Publication Date
2025-04-18
Estimated Expiration
2034-07-01

AI Technical Summary

Technical Problem

Existing image encoding and decoding methods struggle to improve coding efficiency, particularly when dealing with high-order motion information like affine transformations, which require more dimensional information and increase the amount of coded motion information and calculation complexity.

Method used

The proposed method involves an image encoding and decoding system that selects and encodes information for determining the number of parameters used for prediction in affine transformations, allowing for the generation of prediction images using either 4 or 6 parameters, thereby optimizing coding efficiency.

Benefits of technology

This approach enhances coding efficiency by selectively using the necessary transform components for prediction, reducing the amount of coded information and processing load, while maintaining improved prediction accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007664546000006
    Figure 0007664546000006
  • Figure 0007664546000007
    Figure 0007664546000007
  • Figure 0007664546000008
    Figure 0007664546000008
Patent Text Reader

Abstract

To improve encoding efficiency.SOLUTION: An image decoding apparatus 200 includes a processing circuit and a storage device accessible by the processing circuit. The processing circuit uses the storage device to decode from a bit stream, information that is applied to a plurality of blocks included in a sequence and is used to determine the number of parameters used in prediction in the prediction based on affine transformation, and generates a predictive image for each of the plurality of blocks included in the sequence by performing the prediction based on the affine transformation using the selected number of parameters on the basis of the information. Candidates for the number of parameters used in the prediction include 4 and 6.SELECTED DRAWING: Figure 17
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to an image encoding method and an image decoding method. [Background technology]

[0002] In the latest video coding standard, the High Efficiency Video Coding (HEVC) standard, various studies have been conducted to improve coding efficiency (for example, see Non-Patent Document 1). This method is an ITU-T (International Telecommunication Union Telecommunication Standardization Sector) standard previously designated as H.26x, and an ISO / IEC standard designated as MPEG-x, and has been considered as the next video coding standard following the standard designated as H.264 / AVC or MPEG-4 AVC. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent No. 3654664 [Non-patent literature]

[0004] [Non-Patent Document 1] Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11 12th Meeting: Geneva, CH, 14-23 Jan. 2013 JCTVC-L1003_v34 Title: High Efficiency Video Coding (HEVC) text specification draft 10 (for FDIS & Last Call) http: / / phenix.int-evry.fr / jct / doc_end_user / documents / 12_Geneva / wg11 / JCTVC-L1003-v34.zip [Non-Patent Document 2] Taku Arakawa et al., "Fast Motion Compensation Prediction Using Affine Transformation," Journal of the Institute of Image Media: Image Information Media Vol. 51 No. 7, July 20, 1997, pp. 1114-1117 Summary of the Invention [Problem to be solved by the invention]

[0005] In such image coding methods and image decoding methods, it is desirable to improve the coding efficiency.

[0006] Therefore, an object of the present invention is to provide an image coding method or an image decoding method capable of improving coding efficiency. [Means for solving the problem]

[0007] An image decoding device according to one embodiment of the present invention comprises a processing circuit and a storage device accessible from the processing circuit, wherein the processing circuit uses the storage device to decode from a bitstream information that is applied to a plurality of blocks included in a sequence, the information being used to determine the number of parameters to be used in prediction based on an affine transformation, and to generate predicted images for each of the plurality of blocks included in the sequence by performing prediction based on an affine transformation using a number of parameters selected based on the information, and candidates for the number of parameters to be used in the prediction include 4 and 6.

[0008] In addition, an image encoding device according to one embodiment of the present invention includes a processing circuit and a storage device accessible from the processing circuit, wherein the processing circuit uses the storage device to determine the number of parameters to be used in prediction based on an affine transformation, and generates a predicted image for each of a plurality of blocks included in a sequence by performing prediction based on an affine transformation using the determined number of parameters, and encodes information applied to the plurality of blocks included in the sequence and used to determine the number of parameters, and candidates for the number of parameters to be used in the prediction include 4 and 6.

[0009] These general or specific aspects may be realized by a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM (Compact Disc Read Only Memory), or may be realized by any combination of the system, the method, the integrated circuit, the computer program, and the recording medium. Effect of the Invention

[0010] The present invention can provide an image coding method or an image decoding method capable of improving coding efficiency. [Brief description of the drawings]

[0011] [Figure 1] FIG. 1 is a block diagram showing the configuration of an image coding device according to the first embodiment. [Diagram 2] FIG. 2 is a flowchart showing the processing operation of the image coding device according to the first embodiment. [Diagram 3] FIG. 3 is a flowchart showing an example of the predicted block generating process according to the first embodiment. [Figure 4] FIG. 4 is a block diagram showing an example of a configuration of the inter prediction unit according to the first embodiment. [Diagram 5] FIG. 5 is a flowchart showing an example of the inter prediction process according to the first embodiment. [Figure 6] FIG. 6 is a diagram illustrating motion information using a non-translation model in the first embodiment. [Figure 7] FIG. 7 is a flowchart showing an example of the motion information transformation component selection process according to the first embodiment. [Figure 8] FIG. 8 is a flowchart showing an example of a transformation component selection process using a motion component according to the first embodiment. [Figure 9] FIG. 9 is a flowchart showing an example of a transform component selection process using a prediction block size according to the first embodiment. [Figure 10]FIG. 10 is a flowchart showing an example of the residual motion information calculation process according to the first embodiment. [Figure 11] FIG. 11 is a flowchart illustrating an example of a calculation process of a residual translation component according to the first embodiment. [Figure 12] FIG. 12 is a flowchart illustrating an example of a process for calculating a residual rotation component according to the first embodiment. [Figure 13] FIG. 13 is a flowchart illustrating an example of a process of calculating a residual scaling component according to the first embodiment. [Figure 14] FIG. 14 is a flowchart showing an example of a process for calculating a differential shear component according to the first embodiment. [Figure 15] FIG. 15 is a diagram showing an example of motion information according to the first embodiment. [Figure 16] FIG. 16 is a diagram showing an example of motion information according to the first embodiment. [Figure 17] FIG. 17 is a diagram showing an example of coding levels according to the second embodiment. [Figure 18] FIG. 18 is a diagram showing an example of motion information according to the second embodiment. [Figure 19] FIG. 19 is a diagram showing an example of motion information according to the second embodiment. [Figure 20] FIG. 20 is a block diagram showing a configuration of an image decoding device according to the fourth embodiment. In FIG. [Figure 21] FIG. 21 is a flowchart showing the processing operation of the image decoding apparatus according to the fourth embodiment. [Figure 22] FIG. 22 is a flowchart showing an example of the motion information decoding process according to the fourth embodiment. [Diagram 23] FIG. 23 is a flowchart showing an example of the residual motion information decoding process according to the fourth embodiment. [Figure 24] FIG. 24 is a flowchart showing an example of the motion information generating process according to the fourth embodiment. [Diagram 25]FIG. 25 is a flowchart illustrating an example of a process of generating translation components according to the fourth embodiment. [Figure 26] FIG. 26 is a flowchart showing an example of a rotation component generation process according to the fourth embodiment. [Figure 27] FIG. 27 is a flowchart showing an example of a scaling component generation process according to the fourth embodiment. [Figure 28] FIG. 28 is a flowchart showing an example of a generation process of a shear component according to the fourth embodiment. [Figure 29] FIG. 29 is a diagram for explaining the intra prediction process in the fifth embodiment. In FIG. [Diagram 30] FIG. 30 is a diagram for explaining the intra prediction process in the fifth embodiment. In FIG. [Diagram 31] FIG. 31 is a flowchart of an image coding method according to an embodiment. [Diagram 32] FIG. 32 is a flowchart of an image decoding method according to the embodiment. [Diagram 33] FIG. 33 is a diagram showing the overall configuration of a content supply system that realizes a content distribution service. [Diagram 34] FIG. 34 is a diagram showing the overall configuration of a digital broadcasting system. [Diagram 35] FIG. 35 is a block diagram showing an example of the configuration of a television. [Diagram 36] FIG. 36 is a block diagram showing an example of the configuration of an information reproducing / recording unit that reads and writes information from and to a recording medium that is an optical disc. [Figure 37] FIG. 37 is a diagram showing an example of the structure of a recording medium which is an optical disc. [Figure 38A] FIG. 38A is a diagram showing an example of a mobile phone. [Figure 38B] FIG. 38B is a block diagram showing an example of the configuration of a mobile phone. [Figure 39] FIG. 39 is a diagram showing a structure of multiplexed data. [Diagram 40]FIG. 40 is a diagram showing a schematic diagram of how each stream is multiplexed in multiplexed data. [Diagram 41] FIG. 41 shows in more detail how a video stream is stored in a PES packet sequence. [Diagram 42] FIG. 42 is a diagram showing the structure of TS packets and source packets in multiplexed data. [Diagram 43] FIG. 43 shows the data structure of a PMT. [Diagram 44] FIG. 44 is a diagram showing the internal structure of the multiplexed data information. [Diagram 45] FIG. 45 shows the internal structure of the stream attribute information. [Figure 46] FIG. 46 shows the steps of identifying video data. [Figure 47] FIG. 47 is a block diagram showing an example of the configuration of an integrated circuit that realizes the video coding method and the video decoding method according to each embodiment. [Figure 48] FIG. 48 is a diagram showing a configuration for switching the drive frequency. [Figure 49] FIG. 49 is a diagram showing steps of identifying video data and switching the drive frequency. [Figure 50] FIG. 50 is a diagram showing an example of a lookup table in which video data standards and drive frequencies correspond to each other. [Figure 51A] FIG. 51A is a diagram showing an example of a configuration in which modules of a signal processing unit are shared. [Figure 51B] FIG. 51B is a diagram showing another example of a configuration in which modules of a signal processing unit are shared. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0012] (The knowledge that formed the basis of the invention) In conventional image coding methods, only information relating to translation is used as motion information.

[0013] However, when a captured video contains movements such as zooming in and out of a camera or rotation of a subject, the movements cannot be adequately expressed by translation alone. For this reason, a method is used to improve prediction accuracy by reducing the size of the prediction block during encoding.

[0014] On the other hand, methods that use higher-order motion information such as affine transformation as motion information are also being considered. For example, affine transformation can express three types of transformation, namely, scaling, rotation, and shearing, in addition to translation, and can express transformation such as the rotation of the object mentioned above. This improves the quality of the generated predicted image. In addition, the prediction unit can be made larger, which improves coding efficiency.

[0015] However, while translation can be expressed with two-dimensional information, affine transformation requires at least six-dimensional information to express the above three types of transformation in addition to translation. This increase in the number of dimensions required for motion information causes problems such as an increase in the amount of motion information to be coded and an increase in the amount of calculation required for motion information estimation processing.

[0016] To address this issue, the prior art (Patent Document 1) discloses the following method. During encoding, in each prediction block, estimation of motion information related only to translation and estimation of higher-order motion information such as affine transformation are performed. Of these, the method determined to have higher encoding efficiency is selected. A flag indicating whether the motion information is translation or affine transformation and the motion information corresponding to that flag are encoded. This makes it possible to reduce the amount of information while taking advantage of the advantages of using higher-order motion information, thereby improving encoding efficiency. However, this method has the problem that it is not possible to sufficiently reduce the amount of code when expressing higher-order motion information.

[0017] In response to this problem, an image encoding method according to one embodiment of the present invention is an image encoding method for encoding an image, and includes a selection step of selecting two or more transformation components from a plurality of transformation components including a translation component and a plurality of non-translation components as reference information indicating a reference destination of a current block to be encoded, a prediction step of generating a predicted image using the reference information, an image encoding step of encoding the current block using the predicted image, a selection information encoding step of encoding selection information for identifying the two or more transformation components selected from the plurality of transformation components, and a reference information encoding step of encoding the reference information of the current block using reference information of an encoded block other than the current block.

[0018] This allows the image coding method to select an arbitrary transform component from among a plurality of transform components including a translation and a plurality of non-translation components, thereby improving coding efficiency in a coding scheme using high-order motion information.

[0019] For example, the multiple non-translation components may include a rotation component, a scaling component, and a shear component.

[0020] For example, the selection information may include a flag corresponding to each of the plurality of transform components and indicating whether the corresponding transform component has been selected.

[0021] Thereby, the image coding method can divide an affine matrix into a plurality of transformation components and specify whether each component is selected or not, thereby reducing the amount of information.

[0022] For example, in the selection step, one coding level may be selected from a plurality of coding levels indicating mutually different sets including some or all of the plurality of transformation components, and the two or more transformation components included in the set indicated by the selected coding level may be selected, and the selection information may indicate the selected coding level.

[0023] This enables the image coding method to further reduce the amount of information and the processing load for selection.

[0024] For example, in the selection information encoding step, one piece of selection information commonly used for an image including the current block may be encoded.

[0025] This enables the image coding method to further reduce the amount of information and the processing load for selection.

[0026] For example, the selecting step may include selecting the two or more transform components according to a size of the current block, and the selection information may indicate the size.

[0027] This allows the image coding method to further reduce the amount of information.

[0028] For example, the plurality of non-translation components may include a rotation component, a scaling component and a shear component, and the selecting step may not select the shear component if the size of the current block is less than a first threshold.

[0029] This makes it possible for the image coding method to further reduce the processing load by limiting transform components that are less likely to contribute to improving prediction accuracy.

[0030] For example, in the selecting step, the two or more transformation components may be selected in the following order of priority: the translation component, the rotation component, the scaling component, and the shear component.

[0031] This allows the image coding method to achieve more efficient processing by increasing the priority of transform components that contribute to improving prediction accuracy.

[0032] In addition, an image decoding method according to one embodiment of the present invention is an image decoding method for decoding a bit stream obtained by encoding an image, and includes a selection information decoding step of decoding, from the bit stream, selection information for identifying two or more transformation components from a plurality of transformation components including a translation component and a plurality of non-translation components; a selection step of selecting, as reference information indicating a reference destination of a current block to be decoded, the two or more transformation components identified by the decoded selection information; a reference information decoding step of decoding, from the bit stream, reference information of the current block using reference information of a decoded block other than the current block; a prediction step of generating a predicted image using the reference information; and an image decoding step of decoding the current block from the bit stream using the predicted image.

[0033] This makes it possible for the image decoding method to decode a bitstream with improved coding efficiency.

[0034] For example, the plurality of non-translation components may include four transformation components: a rotation component, a scaling component, and a shear component.

[0035] For example, the selection information may include a flag corresponding to each of the plurality of transform components and indicating whether the corresponding transform component has been selected.

[0036] For example, the selection information may indicate one of a plurality of encoding levels indicating mutually different sets that include some or all of the plurality of transformation components, and the selection step may select the two or more transformation components included in the set indicated by the encoding level indicated by the selection information.

[0037] For example, in the selection information decoding step, one piece of selection information commonly used for an image including the current block may be decoded.

[0038] For example, the selection information may indicate a size of the current block, and the selecting step may select the two or more transform components according to the size of the current block.

[0039] For example, the plurality of non-translation components may include a rotation component, a scaling component, and a shear component, and in the selecting step, the shear component may not be selected if the size of the current block is less than or equal to a first threshold.

[0040] For example, the multiple non-translation components may include a rotation component, a scaling component, and a shear component, and in the selection step, the two or more transformation components may be selected in the following order of priority: the translation component, the rotation component, the scaling component, and the shear component.

[0041] Moreover, an image encoding device according to one aspect of the present invention is an image encoding device that encodes an image, and includes a processing circuit and a storage device accessible from the processing circuit, and the processing circuit executes the image encoding method using the storage device.

[0042] This allows the image coding device to select an arbitrary transform component from among a plurality of transform components including a translation and a plurality of non-translation components, thereby improving coding efficiency in a coding method using high-order motion information.

[0043] In addition, an image decoding device according to one embodiment of the present invention is an image decoding device that decodes a bitstream obtained by encoding an image, and includes a processing circuit and a storage device accessible from the processing circuit, and the processing circuit executes the image decoding method using the storage device.

[0044] This enables the image decoding device to decode a bitstream with improved coding efficiency.

[0045] Furthermore, these general or specific aspects may be realized by a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be realized by any combination of a system, a method, an integrated circuit, a computer program, and a recording medium.

[0046] Hereinafter, the embodiments will be described in detail with reference to the drawings as appropriate. However, detailed descriptions of already well-known matters and duplicate descriptions of substantially the same configurations may be omitted. This is to avoid the following description becoming unnecessarily redundant and to facilitate understanding by those skilled in the art.

[0047] Note that the embodiments described below each show a specific example of the present invention. The numerical values, shapes, materials, components, the arrangement and connection of the components, steps, and the order of steps shown in the following embodiments are merely examples and are not intended to limit the present invention. Furthermore, among the components in the following embodiments, components that are not described in an independent claim showing a superordinate concept are described as optional components.

[0048] (Embodiment 1) An embodiment of an image coding device using an image coding method according to the present embodiment will be described. The image coding device according to the present embodiment selects an arbitrary transformation component from among a plurality of transformation components expressed by an affine transformation, and generates a predicted image from the selected transformation component using motion information. Also, a bit stream including information indicating the selected transformation component is generated. This allows the image coding device to improve coding efficiency.

[0049] 1 is a block diagram of an image coding device 100 according to this embodiment. The image coding device 100 includes a block division unit 101, a subtraction unit 102, a frequency transformation unit 103, a quantization unit 104, an entropy coding unit 105, an inverse quantization unit 106, an inverse frequency transformation unit 107, an addition unit 108, an intra prediction unit 109, a loop filter 110, a frame memory 111, an inter prediction unit 112, and a switching unit 113.

[0050] The image coding device 100 generates a bitstream 126 by coding an input image 121 .

[0051] FIG. 2 is a flowchart of the encoding process by the image encoding device 100 according to this embodiment.

[0052] First, the block division unit 101 divides an input image 121, which is a still image or a moving image including one or more pictures, into code blocks 122, which are units of encoding processing (S101).

[0053] Next, the intra prediction unit 109 or the inter prediction unit 112 generates a prediction block 134 for each code block 122 by using the decoded block 129 or the decoded image 131 (S102). Note that details of this process will be described later.

[0054] Next, the subtraction unit 102 generates a difference block 123, which is the difference between the code block 122 and the prediction block 134 (S103). The frequency transformation unit 103 performs frequency transformation on the difference block 123 to generate a coefficient block 124. The quantization unit 104 quantizes the coefficient block 124 to generate a coefficient block 125 (S104).

[0055] Next, the entropy coding unit 105 generates a bitstream 126 by entropy coding the coefficient block 125 (S105).

[0056] Meanwhile, in order to generate a decoded block 129 and a decoded image 131 to be used in generating a prediction block 134 of a subsequent block or picture, the inverse quantization unit 106 inverse quantizes the coefficient block 125 to generate a coefficient block 127. The inverse frequency transform unit 107 reconstructs a difference block 128 by performing an inverse frequency transform on the coefficient block 127 (S106).

[0057] Next, the adder 108 generates a decoded block 129 (reconstructed image) by adding the prediction block 134 used in step S102 and the difference block 128 (S107). This decoded block 129 is used for intra prediction processing by the intra prediction unit 109. Furthermore, the loop filter 110 generates a decoded image 131 by performing loop filter processing on the decoded block 129. The frame memory 111 stores the decoded image 131. This decoded image 131 is used for inter prediction processing by the inter prediction unit 112.

[0058] This series of processes is repeated until the encoding process for the entire input image 121 is completed (S108).

[0059] The frequency conversion and quantization in step S104 and the inverse quantization and inverse frequency conversion in step S106 may be performed sequentially as separate processes, or may be performed together. Quantization is a process of digitizing values ​​sampled at predetermined intervals by associating them with predetermined levels. Inverse quantization is a process of returning values ​​obtained by quantization to values ​​in the original intervals. In the field of data compression, quantization refers to a process of dividing values ​​into intervals that are coarser than the original, and inverse quantization refers to a process of redividing the coarse intervals into finer intervals of the original. In the field of codec technology, quantization and inverse quantization are sometimes called rounding, rounding, or scaling.

[0060] Next, the predicted block generation process in step S102 will be described with reference to Fig. 3. Fig. 3 is a flowchart of the predicted block generation process (S102) according to this embodiment.

[0061] First, the image encoding device 100 determines whether the prediction processing method to be performed on the prediction block to be processed is intra prediction or inter prediction (S121).

[0062] When the prediction processing method is intra prediction ("intra prediction" in S121), the intra prediction unit 109 generates a prediction block 130 by intra prediction processing (S122). In addition, the switching unit 113 outputs the generated prediction block 130 as a prediction block 134.

[0063] On the other hand, when the prediction processing method is inter prediction ("inter prediction" in S121), the inter prediction unit 112 generates a prediction block 132 by inter prediction processing (S123). In addition, the switching unit 113 outputs the generated prediction block 132 as a prediction block .

[0064] In addition, the image encoding device 100 may not perform step S121, but may instead perform both steps S122 and S123, and perform cost calculations for each of the obtained prediction blocks using an RD optimization model (Equation 1 below) or the like, and select a method with low cost, i.e., high encoding efficiency.

[0065]

number

[0066] In (Formula 1), D represents the coding distortion, for example, the sum of absolute differences between the original pixel values ​​of the block to be coded and the generated predicted image. R represents the amount of generated code, for example, the amount of code required to code motion information for generating a predicted block. λ is an undetermined Lagrange multiplier. This makes it possible to select an appropriate prediction mode from intra prediction and inter prediction, thereby improving coding efficiency.

[0067] Next, the inter prediction process in step S123 will be described with reference to FIGS.

[0068] 4 is a block diagram showing an example of the configuration of the inter prediction unit 112. The inter prediction unit 112 includes a coding information selection unit 141, a motion estimation unit 142, a motion compensation unit 143, and a motion information calculation unit 144.

[0069] FIG. 5 is a flowchart of the inter prediction process (S123) according to the present embodiment.

[0070] First, the coding information selection unit 141 selects the transformation components (deformation components) of the motion information to be used by using the input image (code block 122) etc. (S141). Here, the transformation components are information indicating various transformations (deformations) (for example, translation, rotation, scaling, and shearing) and are coefficients in various transformations etc. As shown in Fig. 6, in this embodiment, in addition to translation, multiple non-translation transformations such as rotation, scaling, and shearing are used for the motion information.

[0071] Next, the motion estimation unit 142 performs a motion estimation process on the transform components of the motion information selected in step S141, using the input image (code block 122) and the decoded image 131, thereby generating motion information 151 (S142).

[0072] Next, the motion compensation unit 143 performs motion compensation processing using the motion information 151 obtained in step S142 and the decoded image 131 to generate the prediction block 132 (S143).

[0073] Next, the motion information calculation unit 144 calculates differential motion information, which is the difference between the motion information 151 obtained in step S142 and the motion information of an encoded block that is spatially or temporally adjacent to the current block to be encoded (S144).

[0074] This completes the inter prediction process. Note that the differential motion information calculated in step S144 is output to the entropy coding unit 105 as motion information 133. The entropy coding unit 105 codes the motion information 133, and outputs it as part of the bitstream 126.

[0075] Next, the selection of transformation components of motion information (S141) will be described in detail with reference to Fig. 7. Fig. 7 is a flowchart of the selection of transformation components of motion information (S141) according to this embodiment.

[0076] First, the coding information selection unit 141 acquires motion components between the input image (code block 122) and the decoded image 131 (S161). For example, the coding information selection unit 141 extracts SIFT (Scale-Invariant Feature Transform) features of both the input image and the decoded image 131. The coding information selection unit 141 estimates homography matrices expressing various transformations from the features of the input image and the features of the decoded image 131, and sets them as motion components between the images. Note that, although an example in which SIFT features are used as features set as motion components has been shown here, the present invention is not limited to this.

[0077] Next, the coding information selection unit 141 selects the transform component of the motion information to be used for coding according to the motion component acquired in step S161 (S162). Also, the coding information selection unit 141 selects the transform component of the motion information to be used for coding according to the size of the prediction block (S163). The above series of processes completes the process of step S141.

[0078] Note that step S162 and step S163 may both be performed in this order, may be performed in the reverse order, may be performed in parallel, or only one of them may be performed.

[0079] In this embodiment, the term "motion component" refers to a feature (motion between images) obtained by analyzing an image using a predetermined analysis method, and the term "motion information" refers to a matrix, vector, or coefficients constituting them that are used for encoding and are determined based on the motion component.

[0080] The selection of transform components using the motion components (step S162) and the selection of transform components using the size of the prediction block (step S163) will be described in detail below.

[0081] FIG. 8 is a flowchart showing the selection of transformation components using movement components (step S162) according to this embodiment.

[0082] First, the encoded information selection unit 141 extracts translation, rotation, enlargement / reduction, and shear transformation components from the motion components (S181).

[0083] Here, the affine matrix a can be expressed as the following (Equation 2). As shown in the following (Equation 2), the affine matrix a is a function of the magnification factor k (k in the x direction). x , k in the y direction y ), a matrix representing the rotation by the rotation angle θ, and a matrix representing the shear by the shear angle φ, and the sum of these matrices represents a translation of c in the x direction and f in the y direction.

[0084]

number

[0085] From the affine matrix a expressed as in (Equation 2) above, it is possible to extract the enlargement ratio k, the rotation angle θ, the shear angle φ, and the translation component. The motion information is described as information having the above four transformation components, for example, (c, f, θ, k x , k y , φ).

[0086] If the translation components c and f are both 0, the motion information does not have a translation component, otherwise it does. If the magnification ratio k is 1, the motion information does not have a scaling component, otherwise it does. If the rotation angle θ is 0, the motion information does not have a rotation component, otherwise it does. If the shear angle φ is 0, the motion information does not have a shear component, otherwise it does.

[0087] In this example, the thresholds of the respective transformation components of translation, rotation, scaling, and shear are (0, 0), 0, (1, 1), and 0, but the present invention is not limited to this. These thresholds may be values ​​that take into consideration the characteristics of the image or the accuracy of the imaging device. Furthermore, the same magnification ratio may be used in the x and y directions without decomposing the scaling into the x and y directions. This allows the amount of code and the amount of processing to be reduced.

[0088] In this way, in step S181, the coding information selection unit 141 extracts various transformation components from the motion information. Note that, although the case where the motion information is represented using an affine matrix has been described here, the usable motion information is not limited to this. Hereinafter, the various transformation components are assumed to represent the rotation component as the rotation angle, the scale factor as the scale component, the shear angle as the shear component, and the translation vector as the translation component.

[0089] Next, the coding information selection unit 141 performs a selection process to determine whether or not to use translation. First, in step S181, the coding information selection unit 141 determines whether a translation component indicated by a motion vector or the like has been extracted from the motion component (S182).

[0090] If the motion components include a translation component (Yes in S182), the coding information selection unit 141 selects translation (S183). On the other hand, if the motion components do not include a translation component (No in S182), the coding information selection unit 141 does not select translation (S184).

[0091] Next, the coding information selection unit 141 determines whether or not to use rotation. The coding information selection unit 141 determines whether or not a rotation component indicated by a rotation angle θ or the like in step S181 has been extracted from a motion component (S185).

[0092] If the motion component includes a rotation component (Yes in S185), the coding information selection unit 141 selects rotation (S186). If the motion component does not include a rotation component (No in S185), the coding information selection unit 141 does not select rotation (S187).

[0093] Next, the coding information selection unit 141 decides whether or not to use scaling. In step S181, the coding information selection unit 141 determines whether a scaling component indicated by the scaling factor k or the like has been extracted from the movement component (S188). If a scaling component exists in the movement component (Yes in S188), the coding information selection unit 141 selects scaling (S189). If a scaling component does not exist in the movement component (No in S188), the coding information selection unit 141 does not select scaling (S190).

[0094] Finally, the coding information selection unit 141 determines whether or not to use shearing. The coding information selection unit 141 determines whether or not a shearing component indicated by the shearing angle φ or the like has been extracted from the motion component in step S181 (S191).

[0095] If the motion component includes a shear component (Yes in S191), the coding information selection unit 141 selects shear (S192). If the motion component does not include a shear component (No in S191), the coding information selection unit 141 does not select shear (S193). The above series of processes completes the process of step S162.

[0096] Next, step S163 shown in Fig. 7 will be described with reference to Fig. 9. Fig. 9 is a flowchart showing the selection of transform components using the block size (step S163) according to this embodiment.

[0097] First, the coding information selection unit 141 obtains the block size of the prediction block (S201).

[0098] First, the coding information selection unit 141 determines whether or not to use translation. The coding information selection unit 141 determines whether the block size acquired in step S201 is equal to or smaller than 4×4 blocks (S202).

[0099] If the block size is larger than 4×4 blocks (No in S202), the coding information selection unit 141 selects translation (S203). On the other hand, if the block size is equal to or smaller than 4×4 blocks (Yes in S202), the coding information selection unit 141 does not select translation (S204).

[0100] Next, the coding information selection unit 141 determines whether or not to use rotation. The coding information selection unit 141 determines whether the block size acquired in step S201 is equal to or smaller than 8×8 blocks (S205).

[0101] If the block size is larger than 8×8 blocks (No in S205), the coding information selection unit 141 selects rotation (S206). On the other hand, if the block size is equal to or smaller than 8×8 blocks (Yes in S205), the coding information selection unit 141 does not select rotation (S207).

[0102] Next, the coding information selection unit 141 decides whether or not to use scaling. The coding information selection unit 141 judges whether the block size acquired in step S201 is 16×16 blocks or less (S208). If the block size is larger than 16×16 blocks (No in S208), the coding information selection unit 141 selects scaling (S209). On the other hand, if the block size is 16×16 blocks or less (Yes in S208), the coding information selection unit 141 does not select scaling (S210).

[0103] Finally, the coding information selection unit 141 determines whether or not to use shearing. The coding information selection unit 141 determines whether the block size acquired in step S201 is equal to or smaller than 32×32 blocks (S211).

[0104] If the block size is larger than 32x32 blocks (No in S211), the coding information selection unit 141 selects shearing (S212). On the other hand, if the block size is equal to or smaller than 32x32 blocks (Yes in S211), the coding information selection unit 141 does not select shearing (S213). After going through the above series of processes, the process of step S163 ends.

[0105] Here, in steps S202, S205, S208, and S211, the block size thresholds are respectively 4×4, 8×8, 16×16, and 32×32 as an example, but the block size thresholds are not limited to these and may be any size. Also, the coding information selection unit 141 may switch the thresholds according to the characteristics of the image. This can improve the coding efficiency.

[0106] Although an example in which step S162 and step S163 are performed in this order has been described, the order may be reversed, or some or all of these processes may be performed simultaneously. Also, only one of step S162 and step S163 may be performed.

[0107] When both step S162 and step S163 are performed, for example, the coding information selection unit 141 selects the transform if a transform component exists and the block size is larger than a threshold, and does not select the transform otherwise. In other words, the coding information selection unit 141 selects the transform determined to be selected in both step S162 and step S163, and does not select the transform determined not to be selected in at least one of step S162 and step S163.

[0108] Alternatively, the coding information selection unit 141 may first perform the size comparison in step S163 and determine the presence or absence of a transform component (S162) only for the transform determined to be selected. Alternatively, the coding information selection unit 141 may first perform the determination of the presence or absence of a transform component in step S162 and perform the block size comparison (S163) only for the transforms having transform components.

[0109] Furthermore, the order of steps S182 to S193 shown in Fig. 8 may be arbitrary, and some or all of them may be performed in parallel. Similarly, the order of steps S202 to S213 shown in Fig. 9 may be arbitrary, and some or all of them may be performed in parallel.

[0110] However, the inventors have verified that the shear component has fewer valid images than the other transform components, and therefore is less likely to contribute to improving prediction accuracy. Therefore, the priority of the shear component may be set lower than that of the other transform components. For example, the priority can be lowered by placing the determination process after the determination process of the other components, or by setting the block size threshold larger than the threshold of the other components.

[0111] 5, in step S142, the motion estimation unit 142 performs motion estimation on the transformation components selected in step S141. For example, the motion estimation unit 142 calculates a residual signal (difference block) while changing each of a plurality of transformation components, such as the magnitude of translation and the magnification ratio, by a fixed value. Then, the motion estimation unit 142 determines, as the motion information 151, a combination of transformation components corresponding to the smallest residual signal among the obtained plurality of residual signals.

[0112] Next, in step S143, the motion compensation unit 143 generates a prediction image (prediction block 132) from the decoded image 131, using the motion information 151 obtained in step S142.

[0113] The final step S144 will be described in detail with reference to FIGS.

[0114] FIG. 10 is a flowchart of the residual motion information calculation process (S144) according to this embodiment.

[0115] First, the motion information calculation unit 144 derives predictive motion information from motion information used in one or more coded blocks spatially or temporally adjacent to the current block to be coded (S221). The predictive motion information includes a translation component, a rotation component, a scaling component, and a shearing component, just like the motion information. Hereinafter, the various transformation components included in the predictive motion information are also referred to as predicted transformation components. The translation component, rotation component, scaling component, and shearing component included in the predictive motion information are also referred to as predicted translation component, predicted rotation component, predicted scaling component, and predicted shearing component.

[0116] For example, the motion information calculation unit 144 obtains multiple transformation components of each type of predictive transformation component included in multiple motion information of multiple coded blocks, and derives the predictive transformation component of the type from the obtained multiple transformation components. For example, the motion information calculation unit 144 derives the average value of the transformation components of each of multiple coded blocks that refer to the same reference picture as the predictive transformation component. Note that, as a method of deriving the predictive transformation component, all calculation methods such as those used in HEVC and the like can be applied.

[0117] First, the motion information calculation unit 144 calculates a differential translation component, which is differential motion information of a translation component (S222).

[0118] FIG. 11 is a flowchart of the process of calculating the differential translation components (S222).

[0119] First, the motion information calculation unit 144 judges whether a translation component is present in the motion information 151 estimated in step S142 (S241). For example, the motion information calculation unit 144 judges that a translation component is not present when both the x-direction and y-direction components included in the translation component are zero, and judges that a translation component is present when at least one of the x-direction and y-direction components is not zero. The motion information calculation unit 144 may also judge that a translation component is not present when the magnitude of the translation component is smaller than a certain predetermined value. The motion information calculation unit 144 may also switch the predetermined value according to the characteristics of the image. The motion information calculation unit 144 may also judge that a translation component is always present (or that a translation component is always absent) when the characteristics of the image satisfy a predetermined condition.

[0120] Furthermore, if it is determined in step S184 in FIG. 8 or step S204 in FIG. 9 that translation is not to be selected, the motion information calculation unit 144 may determine that a translation component does not exist.

[0121] If there is no translation component in the motion information 151 (No in S241), the motion information calculation unit 144 sets the translation flag indicating that "translation exists" to OFF and adds the translation flag to the motion information 133 to be encoded (S242).

[0122] If the motion information 151 contains a translation component (Yes in S241), the motion information calculation unit 144 sets the translation flag to ON, and assigns the translation flag to the motion information 133 (S243).

[0123] Next, the motion information calculation unit 144 determines whether the predictive motion information derived in step S221 includes a translation component (S244). If the predictive motion information includes no translation component (No in S244), the motion information calculation unit 144 sets the predictive translation component to 0 (S245).

[0124] On the other hand, if the predictive motion information includes a translation component (Yes in S244), the motion information calculation unit 144 sets the translation component of the predictive motion information as the predicted translation component (S246).

[0125] Next, the motion information calculation unit 144 calculates a differential translation component by subtracting the predicted translation component obtained in step S245 or S246 from the translation component of the motion information 151 obtained in step S142, and adds the calculated differential translation component to the motion information 133 (S247).

[0126] Next, the motion information calculation unit 144 calculates a differential translation component, which is differential motion information of the rotation component (S223).

[0127] FIG. 12 is a flowchart of the process of calculating the differential rotation component (S223).

[0128] First, the motion information calculation unit 144 judges whether a rotation component exists in the motion information 151 estimated in step S142 (S261). For example, the motion information calculation unit 144 may judge whether the rotation component is zero, similar to the judgment of the translation (S241), or may compare the magnitude of the rotation angle with a certain predetermined value. Furthermore, the motion information calculation unit 144 may switch the predetermined value according to the characteristics of the image. For example, the motion information calculation unit 144 may always judge that a rotation component exists if the image has a characteristic that rotation is likely to contribute to improving the prediction accuracy, and may always judge that a rotation component does not exist if not. If it is judged that a rotation component always exists, for example, the rotation angle θ may be determined in advance based on the time conversion of the angle from the rotation center, and the motion information calculation unit 144 may always use that value.

[0129] Furthermore, if it is determined in step S187 in FIG. 8 or step S207 in FIG. 9 that rotation is not to be selected, the motion information calculation unit 144 may determine that no rotation component exists.

[0130] If there is no rotation component in the motion information 151 (No in S261), the motion information calculation unit 144 sets a rotation flag indicating that “rotation exists” to OFF and assigns the rotation flag to the motion information 133 to be encoded (S262).

[0131] If a rotation component exists in the motion information 151 (Yes in S261), the motion information calculation unit 144 sets the rotation flag to ON, and assigns the rotation flag to the motion information 133 (S263).

[0132] Next, the motion information calculation unit 144 determines whether or not a rotation component exists in the predictive motion information obtained in step S221 (S264).

[0133] If the predictive motion information does not include a rotation component (No in S264), the motion information calculation unit 144 sets the predictive rotation component to 0 (S265). If the predictive motion information includes a rotation component (Yes in S264), the motion information calculation unit 144 sets the rotation component of the predictive motion information as the predictive rotation component (S266).

[0134] The motion information calculation unit 144 calculates a residual rotation component by subtracting the predicted rotation component obtained in step S265 or S266 from the rotation component of the motion information obtained in step S142, and adds the calculated residual rotation component to the motion information 133 (S267).

[0135] Next, the motion information calculation unit 144 calculates the differential scaling components, which are differential motion information of the scaling components (S224).

[0136] FIG. 13 is a flowchart of the process of calculating the residual scaling components (S224).

[0137] First, the motion information calculation unit 144 determines whether or not a scaling component is present in the motion information 151 estimated in step S142 (S281). For example, the motion information calculation unit 144 may determine whether the scaling component is zero (value is 1) as in step S241 or S261, or may compare the magnitude of the scaling component with a certain predetermined value. The motion information calculation unit 144 may also switch the predetermined value according to the characteristics of the image. For example, in the case of an image obtained by zooming in or out, the motion information calculation unit 144 may set the predetermined value based on the change over time in the angle of view.

[0138] Furthermore, the motion information calculation unit 144 may always determine that a scaling component is present if the image has characteristics that make it likely that the scaling component will contribute significantly to prediction accuracy, and may always determine that a scaling component is not present if the image does not have such characteristics. For example, the motion information calculation unit 144 may always determine that a scaling component is present if the input image 121 is an image obtained by zooming in or out. When determining that a scaling component is always present, for example, a value of the scaling component may be determined in advance based on a change in the angle of view over time, and the motion information calculation unit 144 may always use that value.

[0139] Furthermore, if it is determined in step S190 in FIG. 8 or step S210 in FIG. 9 that scaling is not to be selected, the motion information calculation unit 144 may determine that no scaling component is present.

[0140] If there is no scaling component in the motion information 151 (No in S281), the motion information calculation unit 144 sets the scaling flag indicating that "scaling is present" to OFF and assigns the scaling flag to the motion information 133 to be encoded (S282).

[0141] If a scaling component exists in the motion information 151 (Yes in S281), the motion information calculation unit 144 sets the scaling flag to ON, and assigns the scaling flag to the motion information 133 (S283).

[0142] Next, the motion information calculation unit 144 determines whether or not a scaling component exists in the predictive motion information obtained in step S221 (S284).

[0143] If the predictive motion information does not include a scaling component (No in S284), the motion information calculation unit 144 sets the predicted scaling component to 1 (S285). If the predictive motion information includes a scaling component (Yes in S284), the motion information calculation unit 144 sets the scaling component of the predictive motion information as the predicted scaling component (S286).

[0144] The motion information calculation unit 144 calculates a residual scaling component by subtracting the predicted scaling component obtained in step S284 or S285 from the scaling component of the motion information obtained in step S142, and adds the calculated residual scaling component to the motion information 133 (S287).

[0145] Finally, the motion information calculation unit 144 calculates a differential shear component, which is differential motion information of the shear component (S225).

[0146] FIG. 14 is a flowchart of the process of calculating the differential shear component (S225).

[0147] First, the motion information calculation unit 144 determines whether a shear component is present in the motion information 151 estimated in step S142 (S301). For example, the motion information calculation unit 144 may determine whether the shear component is zero, or may compare the magnitude of the shear component with a certain predetermined value, as in steps S241, S261, or S281. The motion information calculation unit 144 may also switch the predetermined value depending on the image features. The motion information calculation unit 144 may also determine that a shear component is always present (or that a shear component is always absent) when the image features satisfy a predetermined condition.

[0148] Furthermore, if it is determined in step S193 in FIG. 8 or step S213 in FIG. 9 that no shear component is selected, the motion information calculation unit 144 may determine that no shear component is present.

[0149] If there is no shear component in the motion information 151 (No in S301), the motion information calculation unit 144 sets a shear flag indicating that “shear exists” to OFF and assigns the shear flag to the motion information 133 to be encoded (S302).

[0150] If a shear component exists in the motion information 151 (Yes in S301), the motion information calculation unit 144 sets the shear flag to ON and assigns the shear flag to the motion information 133 (S303).

[0151] Next, the motion information calculation unit 144 determines whether or not a shearing component exists in the predictive motion information acquired in step S221 (S304).

[0152] If the predictive motion information does not include a shear component (No in S304), the motion information calculation unit 144 sets the predicted shear component to 0 (S305). If the predictive motion information includes a shear component (Yes in S304), the motion information calculation unit 144 sets the shear component of the predictive motion information as the predicted shear component (S306).

[0153] The motion information calculation unit 144 calculates a differential shear component by subtracting the predicted shear component obtained in step S305 or S306 from the shear component of the motion information obtained in step S142, and adds the calculated differential shear component to the motion information 133 (S307).

[0154] After the above processing, the processing in step S144 ends.

[0155] The processing order of steps S222 to S225 is not limited to this order and may be any order. Also, some or all of these processes may be performed in parallel. Also, as described above, when the transform components that can be used for encoding are limited due to the size of the current block, the motion information calculation unit 144 may only process the allowed transform components.

[0156] 15 and 16 are diagrams showing an example of the encoded motion information 133. As shown in Fig. 15, the motion information 133 includes a translation flag 161, a rotation flag 162, a scaling flag 163, a shearing flag 164, a differential translation component 171, a differential rotation component 172, a differential scaling component 173, and a differential shearing component 174. The meaning of each piece of information is as described above.

[0157] Moreover, only when each flag is ON, the motion information 133 includes a differential motion component corresponding to the flag. For example, as shown in Fig. 16, when the translation flag 161 and the rotation flag 162 are ON and the scaling flag 163 and the shearing flag 164 are OFF, the motion information 133 includes a differential translation component 171 and a differential rotation component 172, but does not include a differential scaling component 173 and a differential shearing component 174.

[0158] (effect) As described above, the image coding device 100 according to this embodiment selects only the necessary transform components by utilizing the features of the image, and codes the information indicating the selected transform components (translation flag, rotation flag, scaling flag, and shear flag) and the selected transform components. This allows the image coding device 100 to selectively use only valid transform components, thereby improving coding efficiency. In this way, the image coding device 100 can flexibly select various transforms and reduce the motion information required to generate a predicted image, thereby improving coding efficiency.

[0159] Furthermore, the image coding device 100 selects a transform component using an estimated result of the type of transform present in the image being coded, the size of a prediction block, etc. This allows the image coding device 100 to limit the type of motion information to be searched for during prediction processing, thereby enabling faster processing.

[0160] In this embodiment, affine transformation is used as the motion information, and translation, rotation, enlargement / reduction, and shearing are used as the types of transformation, but the types of transformation that can be used are not limited to these.

[0161] For example, instead of the affine matrix, a projective transformation matrix capable of expressing a projective transformation may be used. In this case, a trapezoidal transformation can be used as motion information. This can further improve the quality of the predicted block and can be expected to improve the coding efficiency.

[0162] That is, the image coding device 100 according to the present embodiment is only required to divide a motion component into a plurality of transform components and determine whether or not to use each transform component. That is, the image coding device 100 may use a matrix or transform other than those described above, or may divide the motion information into transform components other than those described above.

[0163] In the above description, an example was given in which a flag is assigned to each transform component on a block-by-block basis during inter prediction in steps S242, S243, S261, S263, S282, S283, S302, and S303. However, these flags may be specified on an image-by-image basis, a sequence-by-sequence basis, or an area-by-area basis into which an image is divided. For example, this area is an area into which an image is divided into four. As a result, all blocks included in an image or sequence designated in advance before performing inter prediction are coded using the same type of transform component. Therefore, the determination process on a block-by-block basis can be omitted, and coding efficiency can be improved. In addition, the number of flags in the bit stream can be reduced, and coding efficiency can be improved.

[0164] In addition, in the case where various transformation components are not present in the predictive motion information, 0, 0, 1, and 0 are respectively substituted as the predictive transformation components in steps S245, S265, S285, and S305, but the values ​​to be substituted are not limited to these. For example, when the entire screen is rotated, an angle determined according to the characteristics of the image may be substituted as the predictive rotation component. Furthermore, a process of substituting a predetermined angle such as 0 into the predictive transformation component and a process of substituting an angle or the like determined according to the characteristics of the image into the predictive transformation component may be switched according to a predetermined condition. In this way, when a transformation component exists in the motion information but does not exist in the predictive motion information, it is possible to reduce the value of the difference motion information by performing prediction while switching the substitution value. This can further improve the coding efficiency.

[0165] (Embodiment 2) In the above-mentioned embodiment 1, an example was described in which a flag corresponding to each of a plurality of transforms is used as information indicating whether each of the various transforms is used. In this embodiment, a rank (coding level) is associated with a combination of various transform components. Then, information specifying this coding level is used as the above-mentioned information.

[0166] In this embodiment, instead of the processes in steps S162 and S163 described above, for example, the following processes are performed.

[0167] Fig. 17 is a diagram showing an example of the relationship between the coding level and the transformation component. As shown in Fig. 17, for example, coding level 1 includes translation, coding level 2 includes rotation and scaling, and coding level 3 includes shearing.

[0168] The coding information selection unit 141 selects the coding level according to conditions such as image characteristics or an allowable bandwidth.

[0169] Next, the coding information selection unit 141 selects transformation components included in the coding levels equal to or lower than the selected coding level. For example, in the case of coding level 2, three transformation components, namely translation, rotation, and scaling, included in coding level 2 and coding level 1 are selected.

[0170] Additionally, coding level information 181 indicating the selected coding level is added to the motion information 133 to be coded.

[0171] 18 and 19 are diagrams showing an example of the encoded motion information 133. As shown in Fig. 18, the motion information 133 includes encoding level information 181, a differential translation component 171, a differential rotation component 172, a differential scaling component 173, and a differential shear component 174.

[0172] 19, when the coding level information 181 indicates coding level 2, the motion information 133 includes differential translation components 171, differential rotation components 172, and differential scaling components 173 of coding levels 1 and 2, but does not include differential shear component 174 of coding level 3.

[0173] As described above, in this embodiment, the amount of information required for encoding can be further reduced, so that the encoding efficiency can be improved. Note that, although an example using various transformation levels has been described here, the present invention is not limited to this, and information indicating a combination of transformation components may be used. For example, in the above, an example in which all transformation components included in the selected level or lower are specified has been described, but the following information may be used. For example, at level 0, all transformation components are not used, at level 1, only translation is used, at level 2, translation and rotation are used, at level 3, translation and scaling are used, at level 4, rotation and scaling are used, at level 5, translation, rotation and scaling are used, at level 6, translation and shear are used, and at level 7, translation, rotation, scaling and shear may be used. In this way, a combination of transformation components may be specified for each level, and a transformation component associated with each level may be selected.

[0174] (Embodiment 3) The inventors have verified that, among translation, rotation, enlargement / reduction, and shearing, shearing is less likely to contribute to improving prediction accuracy than other transformations. Therefore, in this embodiment, an example of prioritizing multiple transformation components will be described.

[0175] As a first method of prioritizing multiple transform components, the threshold value of the block size is changed as in the process of step S163 shown in Fig. 9 described above. Specifically, the shear threshold is set to be larger than other transforms such as rotation that can greatly improve prediction accuracy. This makes it possible to restrict the use of transform components that are difficult to improve prediction accuracy when the block size is small, thereby suppressing a decrease in coding efficiency. Similarly, since scaling does not contribute much to improving prediction accuracy when the block size is small, a larger threshold is set than for translation and rotation.

[0176] When the inventors conducted verification using general moving images, they found that, although the order differs depending on the image features, the order of the transformations that tend to improve prediction accuracy is translation, rotation, scaling, and shearing. Therefore, the priorities are set in this order. This makes it possible to restrict the selection of transformation components with low priorities depending on the state of the image features, size, bandwidth, etc.

[0177] A second method for prioritizing multiple transform components is described below, in which an example of a method for limiting shear is described.

[0178] First, a method for setting the coefficients of the affine transformation will be briefly described. As described in Non-Patent Document 2, the coefficients of the affine matrix are set by setting an evaluation function E(a) with the affine matrix a as a variable, as shown in the following (Equation 3), and solving a minimization problem. In other words, the coefficients (motion information) that minimize the evaluation function E(a) are derived.

[0179]

number

[0180] When the shear is limited, the orthogonality of the x- and y-axes is maintained before and after the affine transformation. In other words, the coefficients of the affine transformation shown in (Equation 2) above must satisfy the constraints in (Equation 4) below.

[0181]

number

[0182] Therefore, a constraint is added to the evaluation function in Equation 3 above, as shown in Equation 5 below. Due to this constraint, the larger the shear component, the larger the value of the evaluation function E(a), making it difficult to select coefficients that include a shear component. This method is called the penalty method. Furthermore, the influence of the constraint becomes greater by making the positive constant μ larger. In this way, by finding the coefficients of the affine matrix that minimize the evaluation function E(a) in Equation 5 below, it becomes possible to calculate coefficients that limit the shear component.

[0183]

number

[0184] The inventors set a small μ to solve the minimization problem, and after repeating the search a certain number of times, the optimal solution at that point in time is used as a new initial value, and the value of μ is increased and the minimization problem is solved again. This process is repeated until μ reaches a predetermined value, and the coefficient is calculated. Note that the method for calculating the coefficient is not limited to this method.

[0185] Also, although we have described a method for limiting shear (lowering the priority) here, a similar technique can be applied to other transformations.

[0186] (Other variations) In the above first to third embodiments, the method of encoding the differential motion information, which is the difference between the motion information and the predictive motion information, has been described, but the present invention is not limited to this.

[0187] For example, HEVC has a motion prediction method called merge mode. In this merge mode, difference information is not coded, and a predicted motion vector selected from a plurality of predicted motion vector candidates is used as the motion vector of the current block. Then, selection information indicating the selected predicted motion vector candidate is coded. In such a case, similarly to the above-mentioned first to third embodiments, the image coding device may select one or more transform components from a plurality of transform components, and generate a predicted image using the selected transform components. Moreover, the image coding device may code information indicating the selected (used) transform components (the above-mentioned flag or coding level information).

[0188] For example, the image coding device codes the selected transformation component based on whether or not various transformation components are present in prediction information predicted from motion information of blocks spatially or temporally adjacent to the current block. In this case, if the motion information of the adjacent blocks all contain a rotation component, the image coding device may use the average value of the rotation components as the rotation component of the current block. In addition, if only one of the motion information of the adjacent blocks contains a rotation component and the rotation component is less than a predetermined value, the image coding device may determine not to use a rotation component for the current block. Alternatively, the image coding device may calculate the average value of the rotation components of the other adjacent blocks by setting the rotation components of the other adjacent blocks to zero, and use the calculated average value as the rotation component.

[0189] Methods using such average values ​​and methods using temporal scaling processing are known, and modifications of these methods may be applied to this embodiment.

[0190] (Embodiment 4) In this embodiment, an embodiment of an image decoding device that decodes a bitstream generated by the image coding device according to the above-mentioned first embodiment will be described.

[0191] 20 is a block diagram of an image decoding device 200 according to this embodiment. The image decoding device 200 includes an entropy decoding unit 201, an inverse quantization unit 202, an inverse frequency transform unit 203, an adder 204, an intra prediction unit 205, a loop filter 206, a frame memory 207, an inter prediction unit 208, and a switching unit 209.

[0192] The image decoding device 200 generates a decoded image 227 by decoding the bit stream 221. For example, the bit stream 221 is generated by the image coding device 100 described above.

[0193] FIG. 21 is a flowchart of the image decoding process according to the present embodiment.

[0194] First, the entropy decoding unit 201 decodes the motion information 228 from the bit stream 221 obtained by encoding a still image or a video including one or more pictures (S401). The entropy decoding unit 201 also decodes the coefficient block 222 from the bit stream 221 (S402).

[0195] The inverse quantization unit 202 inversely quantizes the coefficient block 222 to generate a coefficient block 223. The inverse frequency transformation unit 203 reconstructs the difference block 224 by performing an inverse frequency transformation on the coefficient block 223 (S403).

[0196] Next, the intra prediction unit 205 or the inter prediction unit 208 generates a prediction block 230 by using the motion information 228 decoded in step S401 and the decoded block (S404). Specifically, the intra prediction unit 205 generates a prediction block 226 by intra prediction processing. The inter prediction unit 208 generates a prediction block 229 by inter prediction processing. The switching unit 209 outputs one of the prediction blocks 226 and 229 as the prediction block 230.

[0197] Next, the adder 204 generates a decoded block 225 by adding the difference block 224 and the prediction block 230 (S405). This decoded block 225 is used in the intra prediction process by the intra prediction unit 205.

[0198] Next, the image decoding device 200 determines whether all blocks included in the bit stream 221 have been decoded (S406). For example, the image decoding device 200 performs this determination depending on whether the input bit stream 221 has been completed. If the decoding of all blocks has not been completed (No in S406), the process from step S401 onwards is performed on the next block. If the decoding of all blocks included in the bit stream 221 has been completed (Yes in S406), the loop filter 206 combines all the decoded blocks and performs loop filter processing to generate a decoded image 227 (reconstructed image) (S407). The frame memory 207 stores the decoded image 227. This decoded image 227 is used for inter prediction processing by the inter prediction unit 208.

[0199] In addition, the inverse quantization and the inverse frequency transform in step S403 may be performed sequentially as separate processes, or may be performed together. In addition, in the currently mainstream coding standard such as HEVC, the inverse quantization and the inverse frequency transform are performed together. Also, on the decoding side, as in the coding side (embodiment 1), expressions such as scaling may be used in some cases.

[0200] Next, the motion information decoding process (S401) will be described with reference to Fig. 22. Fig. 22 is a flowchart of the motion information decoding process (S401) according to this embodiment.

[0201] First, the entropy decoding unit 201 decodes the differential motion information from the bit stream 221 (S421). Furthermore, the entropy decoding unit 201 decodes information for deriving predictive motion information (S422). Note that the information for deriving predictive motion information and the differential motion information are included in the motion information 228. Next, the inter prediction unit 208 derives predictive motion information from the information acquired in step S422, and generates motion information from the derived predictive motion information and the differential motion information acquired in step S421 (S423).

[0202] The differential motion information decoding (S421) and motion information generation (S423) will be described in detail below.

[0203] The process of decoding the residual motion information (S421) will be described with reference to Fig. 23. Fig. 23 is a flowchart of the process of decoding the residual motion information (S421) according to this embodiment.

[0204] First, the entropy decoding unit 201 performs a decoding process of the residual translation component (S441 to S443). First, the entropy decoding unit 201 decodes a translation flag indicating whether or not a translation exists (indicating whether or not a residual translation component is included in the motion information 228) from the bit stream 221 (S441). Note that the structure of the motion information 228 and the meanings of the various information included in the motion information 228 are the same as the structure of the motion information 133 and the meanings of the various information included in the motion information 133 in the first embodiment. Next, the entropy decoding unit 201 uses the translation flag to determine whether or not a translation exists (S442).

[0205] If the translation flag indicates that a translation exists (Yes in S442), the entropy decoding unit 201 decodes the residual translation component from the bit stream 221 (S443). If the translation flag indicates that no translation exists (No in S442), the entropy decoding unit 201 does not decode the residual translation component and performs the next processing step (S444).

[0206] Next, the entropy decoding unit 201 performs a decoding process of the residual rotation component (S444 to S446). The entropy decoding unit 201 decodes a rotation flag indicating whether rotation is present (indicating whether the motion information 228 includes a residual rotation component) from the bit stream 221 (S444). The entropy decoding unit 201 uses the rotation flag to determine whether rotation is present (S445).

[0207] If the rotation flag indicates that rotation is present (Yes in S445), the entropy decoding unit 201 decodes (S446) the residual rotation component from the bitstream 221. If the rotation flag indicates that no rotation is present (No in S445), the entropy decoding unit 201 performs the next processing step (S447).

[0208] Next, the entropy decoding unit 201 performs a decoding process of the residual scaling component (S447 to S449). The entropy decoding unit 201 decodes a scaling flag indicating whether scaling is present (indicating whether the motion information 228 includes a residual scaling component) from the bit stream 221 (S447). The entropy decoding unit 201 uses the scaling flag to determine whether scaling is present (S448).

[0209] If the scaling flag indicates that scaling is present (Yes in S448), the entropy decoding unit 201 decodes the residual scaling components from the bitstream 221 (S449). If the scaling flag indicates that scaling is not present (No in S448), the entropy decoding unit 201 performs the next processing step (S450).

[0210] Finally, the entropy decoding unit 201 performs a decoding process of the residual shear component (S450 to S452). The entropy decoding unit 201 decodes a shear flag indicating whether or not a shear component is present (indicating whether or not the motion information 228 includes a differential shear component) from the bit stream 221 (S450). The entropy decoding unit 201 uses the shear flag to determine whether or not a shear component is present (S451).

[0211] If the shear flag indicates that shear exists (Yes in S451), the entropy decoding unit 201 decodes the differential shear component from the bit stream 221 (S452). After that, the entropy decoding unit 201 ends the differential motion information decoding process (S421). If the shear flag indicates that rotation does not exist (No in S451), the entropy decoding unit 201 ends the differential motion information decoding process (S421).

[0212] Next, the motion information generation process (S423) will be described with reference to FIGS.

[0213] FIG. 24 is a flowchart of the motion information generation process (S423) according to the present embodiment.

[0214] First, the inter prediction unit 208 derives predictive motion information using the information acquired in step S422. Specifically, the inter prediction unit 208 acquires motion information of a decoded block that is spatially or temporally adjacent to the current block to be decoded, and derives predictive motion information using the acquired motion information (S461).

[0215] First, the inter prediction unit 208 generates a translation component from the difference motion information and the prediction motion information (S462). Fig. 25 is a flowchart of the translation component generation process (S462).

[0216] First, the inter prediction unit 208 determines whether or not the residual translation component has been acquired in step S421 (S481).

[0217] When a residual translation component has been acquired (Yes in S481), the inter prediction unit 208 determines whether or not a translation component exists in the predictive motion information acquired in step S461 (S482).

[0218] If the predictive motion information does not include a translation component (No in S482), the inter predictor 208 sets the predicted translation component to 0 (S483). If the predictive motion information includes a translation component (Yes in S482), the inter predictor 208 sets the translation component of the predictive motion information as the predicted translation component (S484).

[0219] The inter prediction unit 208 generates a translation component by adding the predicted translation component acquired in step S483 or S484 to the residual translation component (S485).

[0220] If there is no residual translation component (No in S482), the inter prediction unit 208 ends the process related to the translation component (S462).

[0221] Next, the inter prediction unit 208 generates a rotation component from the residual motion information and the predictive motion information (S463). Fig. 26 is a flowchart of this rotation component generation process (S463).

[0222] First, the inter prediction unit 208 determines whether or not the residual rotation components have been acquired in step S421 (S501).

[0223] When the residual rotation component has been acquired (Yes in S501), the inter prediction unit 208 determines whether or not a rotation component exists in the predictive motion information acquired in step S461 (S502).

[0224] If the predictive motion information does not include rotation (No in S502), the inter predictor 208 sets the predicted rotation component to 0 (S503). If the predictive motion information includes a rotation component (Yes in S502), the inter predictor 208 sets the rotation component of the predictive motion information as the predicted rotation component (S504).

[0225] The inter prediction unit 208 generates a rotation component by adding the predicted rotation component acquired in step S503 or S504 to the residual rotation component (S505).

[0226] If there is no residual rotation component (No in S501), the inter prediction unit 208 ends the process related to the rotation component (S463).

[0227] Next, the inter prediction unit 208 generates scaling components from the residual motion information and the predictive motion information (S464). Fig. 27 is a flowchart of this scaling component generation process (S464).

[0228] First, the inter prediction unit 208 determines whether or not the residual scaling components have been acquired in step S421 (S521).

[0229] When the residual scaling component has been acquired (Yes in S521), the inter prediction unit 208 determines whether or not a scaling component exists in the predictive motion information acquired in step S461 (S522).

[0230] If the predictive motion information does not include scaling (No in S522), the inter predictor 208 sets the predicted scaling component to 1 (S523). If the predictive motion information includes a scaling component (Yes in S523), the inter predictor 208 sets the predicted scaling component to the scaling component of the predictive motion information (S524).

[0231] The inter prediction unit 208 generates scaling components by adding the predicted scaling components acquired in steps S523 and S524 to the residual scaling components (S525).

[0232] If there are no residual scaling components (No in S521), the inter prediction unit 208 ends the process related to the scaling components (S464).

[0233] Finally, the inter prediction unit 208 generates a shearing component from the difference motion information and the prediction motion information (S465). Fig. 28 is a flowchart of the shearing component generation process (S465).

[0234] First, the inter prediction unit 208 determines whether or not the residual shear component has been acquired in step S421 (S541).

[0235] When the differential shearing component has been acquired (Yes in S541), the inter prediction unit 208 determines whether or not a shearing component exists in the predictive motion information acquired in step S461 (S542).

[0236] If the predictive motion information does not include a shear component (No in S542), the inter predictor 208 sets the predicted shear component to 0 (S543). If the predictive motion information includes a shear component (Yes in S542), the inter predictor 208 sets the shear component of the predictive motion information as the predicted shear component (S544).

[0237] The inter prediction unit 208 generates a shear component by adding the predicted shear component acquired in steps S543 and S544 to the residual shear component (S545).

[0238] If there is no differential shear component (No in S541), the inter prediction unit 208 ends the process related to the shear component (S465).

[0239] After performing this series of processes for each block, the inter prediction unit 208 ends the motion information generation process (S423).

[0240] As described in the first embodiment, each flag may be provided for each block, or may be provided for each image, sequence, or region into which an image is divided. When a flag is provided for a unit other than a block and a transform component is specified by the flag, the image decoding device performs a decoding process using the same type of transform component for all blocks included in the specified unit. This allows the image decoding device to omit a determination step, etc., and to execute a decoding process with high prediction accuracy with a small amount of information and a small processing load.

[0241] Also, similarly to the first embodiment, the order of the processes for generating various transform components (S462 to S465) is not limited to the order shown in Fig. 24. Also, some or all of the processes in steps S462 to S465 may be performed in parallel. Alternatively, an order of priority may be assigned to these processes, and they may be performed in order starting from the process with the highest priority.

[0242] Furthermore, when coding level information indicating a coding level is used instead of various flags as in the second embodiment, the image decoding device 200 decodes the coding level information instead of the above-mentioned various flags from the bit stream 221. Furthermore, the image decoding device determines the presence or absence of a transform component by using information indicated by the coding level information instead of various flags.

[0243] Furthermore, as described in embodiment 1, when the presence or absence of various transform components is specified by the block size, the image decoding device 200 decodes the block size from the bit stream 221 and uses the block size to determine the presence or absence of various transform components.

[0244] (effect) As described above, the image decoding device 200 according to this embodiment can decode the bit stream 221 in which only the transform components necessary for generating a prediction block are coded. Furthermore, the image decoding device 200 can decode the bit stream 221 generated to reduce the amount of code by using high-dimensional motion prediction, and can therefore reproduce higher quality images.

[0245] In the present embodiment, the motion information includes, as transformation components, translation, rotation, enlargement / reduction, and shearing, but the available transformations are not limited to these. For example, a trapezoidal transformation may be used. This allows complex transformations to be expressed, so that the image decoding device can generate a more accurate predicted image.

[0246] In other words, the image decoding device 200 according to the present embodiment only needs to divide the motion information into a plurality of transform components and determine whether or not to decode each transform component. In other words, the image decoding device 200 may use transform components other than those described above.

[0247] Furthermore, the method of the present embodiment is not limited to the case of decoding differential motion information, which is the difference between motion information and predictive motion information, but can also be applied to, for example, a merge mode.

[0248] (Embodiment 5) In the above first to fourth embodiments, the example has been described in which the affine transformation is used for inter prediction, but in the present embodiment, an example will be described in which the affine transformation is used for intra prediction.

[0249] As shown in Fig. 29, the image coding device (or image decoding device) according to this embodiment uses pixel values ​​of a block that has already been processed (already coded or decoded) in the same picture as the current block as pixel values ​​of the current block. That is, pixel values ​​of the processed block are copied to the current block. Furthermore, in this embodiment, as shown in Fig. 30, various transformations such as rotation, scaling, shearing, and not only translation are used during this copying.

[0250] That is, in this embodiment, the intra prediction unit 109 (or 205) generates a prediction block using reference information indicating a processed block. This reference information includes various transformation components such as a translation component, a rotation component, a scaling component, and a shearing component.

[0251] In such a case, as in the above embodiments 1 to 4, any transform component can be selectively used by encoding (or decoding) information (various flags or coding levels) indicating whether each of the various transform components is to be used.

[0252] In intra prediction, among rotation, scaling, and shearing, the order of scaling, rotation, and shearing are likely to contribute to improving prediction accuracy. Therefore, it is preferable to prioritize in this order. In addition, the method of prioritizing multiple transformations can use the method described in the third embodiment.

[0253] In addition, the priority may be changed according to the type of image, etc. For example, for natural images, the priority may be assigned in the order of enlargement / reduction, rotation, and shearing, while for screen content such as map information, the priority may be assigned in the order of rotation, enlargement / reduction, and shearing.

[0254] As described above in the first to third and fifth embodiments, the image coding device according to the embodiments is an image coding device that codes images, and performs the process shown in FIG.

[0255] First, the image coding apparatus selects two or more transform components including a translation component and a plurality of non-translation components as reference information indicating a reference destination of a current block to be coded (S601). Here, the reference information is motion information in inter prediction, or information indicating a processed block of a reference destination in intra prediction. The plurality of non-translation components includes, for example, a rotation component, a scaling component, and a shear component.

[0256] Next, the image encoding device generates a predicted image using the reference information (S602), and then encodes the current block using the predicted image (S603).

[0257] The image coding device also codes selection information for identifying two or more selected transform components from among the multiple transform components (S604). For example, the selection information includes flags (translation flag, rotation flag, scaling flag, and shear flag) corresponding to each of the multiple transform components and indicating whether the corresponding transform component has been selected. Alternatively, the selection information is a set including some or all of the multiple transform components, and indicates one coding level from multiple coding levels indicating different sets. In this case, in step S601, two or more transform components included in the set indicated by the coding level indicated by the selection information are selected.

[0258] Furthermore, the image coding device may code the selection information for each block, may code it for each picture, may code it for each sequence, or may code it for each area into which a picture is divided. That is, the image coding device may code one selection information commonly used for images including the current block, may code one selection information commonly used for sequences including the current block, or may code one selection information commonly used for areas including the current block.

[0259] Next, the image encoding device encodes the reference information of the current block using the reference information of a coded block different from the current block (S605). For example, the image encoding device encodes differential reference information that is the difference between the reference information of the coded block and the reference information of the current block.

[0260] In step S601, the image coding apparatus may select two or more transform components according to the size of the current block. In this case, the selection information indicates the size of the current block. For example, the selection information includes information indicating the size of the maximum coding unit (CU) and information indicating whether each coding unit is to be further divided.

[0261] Also, for example, the image coding device does not select the shear component if the size of the current block is less than the first threshold.

[0262] In addition, in step S601, the image coding apparatus may select two or more transformation components by prioritizing the following in this order: translation component, rotation component, scaling component, and shear component. For example, the priorities can be set using the method described in the third embodiment.

[0263] Also, as described in embodiments 4 and 5, the image decoding device according to the embodiments is an image decoding device that decodes a bit stream obtained by encoding an image, and performs the processing shown in FIG.

[0264] First, the image decoding device decodes, from the bitstream, selection information for identifying two or more transformation components from among a plurality of transformation components including a translation component and a plurality of non-translation components (S611). Here, the plurality of non-translation components include, for example, a rotation component, a scaling component, and a shear component. The selection information also includes, for example, flags (a translation flag, a rotation flag, a scaling flag, and a shear flag) corresponding to each of the plurality of transformation components and indicating whether the corresponding transformation component has been selected. Alternatively, the selection information indicates one coding level from a plurality of coding levels indicating a set including some or all of the plurality of transformation components and different sets.

[0265] Furthermore, the image decoding device may decode the selection information for each block, may decode it for each picture, may decode it for each sequence, or may decode it for each region into which a picture is divided. That is, the image decoding device may decode one selection information commonly used for images including the current block, may decode one selection information commonly used for sequences including the current block, or may decode one selection information commonly used for regions including the current block.

[0266] The image decoding device also selects two or more transform components specified by the decoded selection information as reference information indicating a reference destination of the current block to be decoded (S612). Here, the reference information is motion information in inter prediction, or information indicating a processed block as a reference destination in intra prediction. Note that, if the selection information indicates an encoding level, the image decoding device selects two or more transform components included in a set indicated by the encoding level indicated by the selection information.

[0267] Next, the image decoding device decodes the reference information of the current block from the bit stream using the reference information of a decoded block different from the current block (S613). Specifically, the image decoding device decodes the differential reference information of the selected transform component from the bit stream. Next, the image decoding device generates reference information by adding the obtained differential decoding information and the reference information of the decoded block for each selected transform component.

[0268] Next, the image decoding apparatus generates a predicted image using the reference information (S614), and decodes the current block from the bitstream using the predicted image (S615).

[0269] The selection information indicates the size of the current block, and in step S612, the image decoding device may select two or more transform components according to the size of the current block. For example, the selection information includes information indicating the size of the maximum coding unit (CU) and information indicating whether each coding unit is to be further divided. The image decoding device uses these pieces of information to determine the current block size.

[0270] Also, for example, when the size of the current block is equal to or smaller than the first threshold, the image decoding apparatus does not select a shear component.

[0271] In addition, in step S612, the image coding apparatus may select two or more transformation components by prioritizing the following in this order: translation component, rotation component, scaling component, and shear component. For example, the priorities can be set using the method described in the third embodiment.

[0272] Although the image coding method and the image decoding method according to the embodiment have been described above, the present invention is not limited to these embodiments.

[0273] Furthermore, each processing unit included in the image encoding device and the image decoding device according to the above-mentioned embodiments is typically realized as an LSI, which is an integrated circuit. These may be individually implemented as single chips, or some or all of them may be included in a single chip.

[0274] The integrated circuit is not limited to an LSI, but may be realized by a dedicated circuit or a general-purpose processor. A field programmable gate array (FPGA) that can be programmed after the LSI is manufactured, or a reconfigurable processor that can reconfigure the connections and settings of the circuit cells inside the LSI may also be used.

[0275] In each of the above embodiments, each component may be configured with dedicated hardware, or may be realized by executing a software program suitable for each component. Each component may be realized by a program execution unit such as a CPU or a processor reading and executing a software program recorded on a recording medium such as a hard disk or a semiconductor memory.

[0276] In other words, the image encoding device and the image decoding device include a processing circuitry and a storage electrically connected to the processing circuitry (accessible from the processing circuitry). The processing circuitry includes at least one of dedicated hardware and a program execution unit. In addition, when the processing circuitry includes a program execution unit, the storage unit stores a software program executed by the program execution unit. The processing circuitry uses the storage unit to execute the encoding method or the decoding method according to the above-mentioned embodiment.

[0277] Furthermore, the present invention may be the above-mentioned software program, or a non-transitory computer-readable recording medium on which the above-mentioned program is recorded. Needless to say, the above-mentioned program can be distributed via a transmission medium such as the Internet.

[0278] Furthermore, all the numbers used above are merely examples for the purpose of specifically explaining the present invention, and the present invention is not limited to the numbers exemplified.

[0279] In addition, the division of functional blocks in the block diagram is an example, and multiple functional blocks may be realized as one functional block, one functional block may be divided into multiple blocks, or some functions may be transferred to another functional block. Furthermore, the functions of multiple functional blocks having similar functions may be processed in parallel or in a time-sharing manner by a single piece of hardware or software.

[0280] The order in which the steps included in the encoding method or the decoding method are executed is merely an example for specifically explaining the present invention, and the steps may be executed in an order other than the above. Also, some of the steps may be executed simultaneously (in parallel) with other steps.

[0281] Although the encoding device and the decoding device according to one or more aspects of the present invention have been described based on the embodiments, the present invention is not limited to these embodiments. As long as they do not deviate from the spirit of the present invention, various modifications conceived by those skilled in the art to the present embodiments and forms constructed by combining components in different embodiments may also be included within the scope of one or more aspects of the present invention.

[0282] (Embodiment 6) By recording a program for implementing the configuration of the video coding method (image coding method) or video decoding method (image decoding method) shown in each of the above embodiments on a storage medium, it becomes possible to easily implement the processes shown in each of the above embodiments on an independent computer system. The storage medium may be a magnetic disk, an optical disk, a magneto-optical disk, an IC card, a semiconductor memory, or any other medium capable of recording a program.

[0283] Further, here, application examples of the video coding method (image coding method) and video decoding method (image decoding method) shown in each of the above embodiments and a system using the same will be described. The system is characterized by having an image coding / decoding device consisting of an image coding device using the image coding method and an image decoding device using the image decoding method. Other components of the system can be appropriately changed depending on the case.

[0284] 33 is a diagram showing the overall configuration of a content supply system ex100 that realizes 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, are installed in each cell.

[0285] This content supply system ex100 is connected to the Internet ex101 via an Internet service provider ex102, a telephone network ex104, and base stations ex106 to ex110, and devices such as a computer ex111, a PDA (Personal Digital Assistant) ex112, a camera ex113, a mobile phone ex114, and a game console ex115.

[0286] However, the content supply system ex100 is not limited to the configuration shown in Fig. 33, and any of the elements may be combined and connected. Also, each device may be directly connected to the telephone network ex104 without going through the base stations ex106 to ex110, which are fixed wireless stations. Also, each device may be directly connected to each other via short-distance wireless or the like.

[0287] The camera ex113 is a device capable of shooting moving images, such as a digital video camera, and the camera ex116 is a device capable of shooting still images and moving images, such as a digital camera. The mobile phone ex114 may be any of the following: a GSM (registered trademark) (Global System for Mobile Communications) type, a CDMA (Code Division Multiple Access) type, a W-CDMA (Wideband-Code Division Multiple Access) type, a LTE (Long Term Evolution) type, a HSPA (High Speed ​​Packet Access) mobile phone, or a PHS (Personal Handyphone System).

[0288] In the content supply system ex100, a camera ex113 and the like are connected to a streaming server ex103 through a base station ex109 and a telephone network ex104, thereby enabling live distribution and the like. In live distribution, a user performs encoding processing on content (e.g., a video of a live music performance, etc.) shot by the camera ex113 as described in each of the above embodiments (i.e., functions as an image encoding device according to an aspect of the present invention) and transmits the content to the streaming server ex103. Meanwhile, the streaming server ex103 streams the transmitted content data to a client that has made a request. Examples of the clients include a computer ex111, a PDA ex112, a camera ex113, a mobile phone ex114, a game machine ex115, and the like that are capable of decoding the encoded data. Each device that receives the distributed data decodes the received data and plays it back (i.e., functions as an image decoding device according to an aspect of the present invention).

[0289] The encoding process of the captured data may be performed by the camera ex113, or by the streaming server ex103 which performs the data transmission process, or the two may share the same role. Similarly, the decoding process of the distributed data may be performed by the client, or by the streaming server ex103, or the two may share the same role. Furthermore, still images and / or video data captured by the camera ex116, not limited to the camera ex113, may be transmitted to the streaming server ex103 via the computer ex111. In this case, the encoding process may be performed by the camera ex116, the computer ex111, or the streaming server ex103, or the two may share the same role.

[0290] Moreover, these encoding and decoding processes are generally processed in an LSIex500 possessed by the computer ex111 or each device. The LSIex500 may be a single chip or may be configured with multiple chips. Note that software for encoding and decoding moving images may be embedded in some kind of recording medium (CD-ROM, flexible disk, hard disk, etc.) that can be read by the computer ex111, etc., and the encoding and decoding processes may be performed using that software. Furthermore, if the mobile phone ex114 has a camera, video data captured by the camera may be transmitted. In this case, the video data is data that has been encoded and processed by the LSIex500 possessed by the mobile phone ex114.

[0291] Furthermore, the streaming server ex103 may be a plurality of servers or a plurality of computers that process, record, and distribute data in a distributed manner.

[0292] In this way, the content supply system ex100 allows the client to receive and play back encoded data. In this way, the content supply system ex100 allows the client to receive, decode, and play back information sent by a user in real time, so that even users without special rights or equipment can realize personal broadcasting.

[0293] In addition, as shown in FIG. 34, the content supply system ex100 is not limited to the example, and at least one of the video coding device (image coding device) or video decoding device (image decoding device) of each of the above-mentioned embodiments can be incorporated into a digital broadcasting system ex200. Specifically, in a broadcasting station ex201, multiplexed data in which music data and the like are multiplexed with video data is transmitted to a satellite ex202 or through radio waves. This video data is data coded by the video coding method described in each of the above-mentioned embodiments (i.e., data coded by an image coding device according to one aspect of the present invention). The broadcasting satellite ex202 receives this data and transmits radio waves for broadcasting, which are received by a home antenna ex204 capable of receiving satellite broadcasts. The received multiplexed data is decoded and played by a device such as a television (receiver) ex300 or a set-top box (STB) ex217 (i.e., functions as an image decoding device according to one aspect of the present invention).

[0294] The video decoding device or video encoding device shown in each of the above embodiments can also be implemented in a reader / recorder ex218 that reads and decodes multiplexed data recorded on a recording medium ex215 such as a DVD or BD, or encodes a video signal on the recording medium ex215, and may further multiplex the video signal with a music signal and write it in some cases. In this case, the reproduced video signal is displayed on a monitor ex219, and the video signal can be reproduced in another device or system by the recording medium ex215 on which the multiplexed data is recorded. Also, a video decoding device may be implemented in a set-top box ex217 connected to a cable ex203 for cable television or an antenna ex204 for satellite / terrestrial broadcasting, and this may be displayed on a monitor ex219 of the television. In this case, the video decoding device may be incorporated in the television, not in the set-top box.

[0295] 35 is a diagram showing a television (receiver) ex300 using the video decoding method and video encoding method described in each of the above embodiments. The television ex300 includes a tuner ex301 that acquires or outputs multiplexed data in which audio data is multiplexed onto video data via an antenna ex204 that receives the broadcasts or a cable ex203, a modulation / demodulation unit ex302 that demodulates the received multiplexed data or modulates the received multiplexed data to be transmitted externally, and a multiplexing / separation unit ex303 that separates the demodulated multiplexed data into video data and audio data or multiplexes the video data and audio data encoded by a signal processing unit ex306.

[0296] The television ex300 also has a signal processing unit ex306 having an audio signal processing unit ex304 and a video signal processing unit ex305 (functioning as an image encoding device or an image decoding device according to an embodiment of the present invention) that decode the audio data and the video data, respectively, or encode the respective information, and an output unit ex309 having a speaker ex307 that outputs the decoded audio signal, and a display unit ex308 such as a display that displays the decoded video signal. The television ex300 also has an interface unit ex317 having an operation input unit ex312 that accepts input of user operations, etc. The television ex300 also has a control unit ex310 that comprehensively controls each unit, and a power supply circuit unit ex311 that supplies power to each unit. The interface unit ex317 may have, in addition to the operation input unit ex312, a bridge ex313 connected to an external device such as a reader / recorder ex218, a slot unit ex314 for enabling a recording medium ex216 such as an SD card to be mounted, a driver ex315 for connecting to an external recording medium such as a hard disk, a modem ex316 for connecting to a telephone network, etc. The recording medium ex216 is a medium that allows information to be electrically recorded by a non-volatile / volatile semiconductor memory element that stores the information. The various units of the television ex300 are connected to each other via a synchronous bus.

[0297] First, a configuration in which the television ex300 decodes and plays back multiplexed data acquired from the outside via the antenna ex204 or the like will be described. The television ex300 receives user operations from a remote controller ex220 or the like, and based on the control of a control unit ex310 having a CPU or the like, separates the multiplexed data demodulated by the modulation / demodulation unit ex302 in the multiplexing / separation unit ex303. Furthermore, the television ex300 decodes the separated audio data in the audio signal processing unit ex304, and decodes the separated video data in the video signal processing unit ex305 using the decoding method described in each of the above embodiments. The decoded audio signal and video signal are output to the outside from the output unit ex309, respectively. When outputting, it is preferable to temporarily store these signals in buffers ex318, ex319, etc. so that the audio signal and the video signal are played back in synchronization. The television ex300 may also read out the multiplexed data not from broadcasting or the like, but from recording media ex215, ex216 such as magnetic / optical disks and SD cards. Next, a configuration in which the television ex300 encodes an audio signal and a video signal and transmits them to the outside or writes them to a recording medium or the like will be described. The television ex300 receives user operations from the remote controller ex220 or the like, and, based on the control of the control unit ex310, encodes the audio signal in the audio signal processing unit ex304 and encodes the video signal in the video signal processing unit ex305 using the encoding method described in each of the above embodiments. The encoded audio signal and video signal are multiplexed in the multiplexing / demultiplexing unit ex303 and output to the outside. When multiplexing, it is preferable to temporarily store these signals in buffers ex320, ex321, etc. so that the audio signal and the video signal are synchronized. Note that the buffers ex318, ex319, ex320, and ex321 may be provided in multiple units as shown in the figure, or one or more buffers may be shared. Furthermore, other than those shown in the figure, data may be stored in a buffer as a buffer to avoid system overflow and underflow, for example, between the modulation / demodulation unit ex302 and the multiplexing / demultiplexing unit ex303.

[0298] Furthermore, in addition to acquiring audio data and video data from broadcasts, recording media, etc., the television ex300 may be configured to accept AV input from a microphone or camera and perform encoding processing on the data acquired from them. Note that while the television ex300 has been described here as being configured to be capable of the above-mentioned encoding processing, multiplexing, and external output, it may be configured not to be able to perform these processes and only be capable of the above-mentioned reception, decoding processing, and external output.

[0299] In addition, when the reader / recorder ex218 reads or writes multiplexed data from a recording medium, the above-mentioned decoding or encoding process may be performed by either the television ex300 or the reader / recorder ex218, or the television ex300 and the reader / recorder ex218 may share the same role.

[0300] As an example, the configuration of the information reproducing / recording unit ex400 when reading or writing data from an optical disk is shown in FIG. 36. The information reproducing / recording unit ex400 includes elements ex401, ex402, ex403, ex404, ex405, ex406, and ex407, which will be described below. The optical head ex401 writes information by irradiating a laser spot onto the recording surface of the recording medium ex215, which is an optical disk, and reads information by detecting reflected light from the recording surface of the recording medium ex215. The modulation recording unit ex402 electrically drives a semiconductor laser built into the optical head ex401 and modulates the laser light according to the recording data. The reproduction demodulation unit ex403 amplifies a reproduction signal obtained by electrically detecting reflected light from the recording surface using a photodetector built into the optical head ex401, separates and demodulates the signal components recorded on the recording medium ex215, and reproduces the necessary information. The buffer ex404 temporarily holds information to be recorded on the recording medium ex215 and information reproduced from the recording medium ex215. The disk motor ex405 rotates the recording medium ex215. The servo control unit ex406 controls the rotational drive of the disk motor ex405 while moving the optical head ex401 to a predetermined information track, and performs a laser spot tracking process. The system control unit ex407 controls the entire information reproduction / recording unit ex400. The above read and write processes are realized by the system control unit ex407 using various information held in the buffer ex404, generating and adding new information as necessary, and recording and reproducing information through the optical head ex401 while cooperating with the modulation recording unit ex402, the reproduction demodulation unit ex403, and the servo control unit ex406. The system control unit ex407 is composed of, for example, a microprocessor, and performs these processes by executing a read and write program.

[0301] In the above, the optical head ex401 has been described as irradiating a laser spot, but it may be configured to perform higher density recording using near-field light.

[0302] FIG. 37 shows a schematic diagram of a recording medium ex215, which is an optical disk. A guide groove (groove) is formed in a spiral shape on the recording surface of the recording medium ex215, and address information indicating an absolute position on the disk is recorded in advance on the information track ex230 by changing the shape of the groove. This address information includes information for identifying the position of a recording block ex231, which is a unit for recording data, and a recording block can be identified by reproducing the information track ex230 and reading the address information in a recording and reproducing device. The recording medium ex215 also includes a data recording area ex233, an inner peripheral area ex232, and an outer peripheral area ex234. The area used for recording user data is the data recording area ex233, and the inner peripheral area ex232 and the outer peripheral area ex234, which are located on the inner or outer periphery of the data recording area ex233, are used for specific purposes other than recording user data. The information reproducing / recording unit ex400 reads and writes encoded audio data, video data, or multiplexed data obtained by multiplexing these data, to the data recording area ex233 of such recording medium ex215.

[0303] In the above, the description has been given taking as examples optical discs such as single-layer DVDs and BDs, but the present invention is not limited to these and may be an optical disc with a multi-layer structure that allows recording on other surfaces as well. Also, the present invention may be an optical disc with a structure that allows multi-dimensional recording / playback, such as recording information on the same location on the disc using light of various different wavelengths or recording different layers of information from various angles.

[0304] In the digital broadcasting system ex200, a car ex210 having an antenna ex205 can receive data from a satellite ex202 or the like, and can play back moving images on a display device such as a car navigation system ex211 of the car ex210. Note that the car navigation system ex211 can be configured, for example, by adding a GPS receiver to the configuration shown in Fig. 35, and the same can be considered for a computer ex111, a mobile phone ex114, and the like.

[0305] 38A is a diagram showing a mobile phone ex114 using the video decoding method and the video encoding method described in the above embodiment. The mobile phone ex114 includes an antenna ex350 for transmitting and receiving radio waves to and from the base station ex110, a camera unit ex365 capable of taking videos and still images, and a display unit ex358 such as a liquid crystal display for displaying data obtained by decrypting the video captured by the camera unit ex365 and the video received by the antenna ex350. The mobile phone ex114 further includes a main body unit having an operation key unit ex366, an audio output unit ex357 such as a speaker for outputting audio, an audio input unit ex356 such as a microphone for inputting audio, a memory unit ex367 for storing the captured video, still images, recorded audio, or the encoded or decoded data of the received video, still images, mail, etc., or a slot unit ex364 which is an interface unit with a recording medium for similarly storing data.

[0306] Furthermore, a configuration example of the mobile phone ex114 will be described with reference to Fig. 38B. In the mobile phone ex114, a power circuit unit ex361, an operation input control unit ex362, a video signal processing unit ex355, a camera interface unit ex363, an LCD (Liquid Crystal Display) control unit ex359, a modulation / demodulation unit ex352, a multiplexing / separation unit ex353, an audio signal processing unit ex354, a slot unit ex364, and a memory unit ex367 are connected to each other via a bus ex370, in relation to a main control unit ex360 that comprehensively controls each unit of a main body unit having a display unit ex358 and an operation key unit ex366.

[0307] When the end call and power key is turned on by the user's operation, the power supply circuit unit ex361 starts up the mobile phone ex114 into an operable state by supplying power to each unit from the battery pack.

[0308] Based on the control of a main control unit ex360 having a CPU, ROM, RAM, etc., the mobile phone ex114 converts a voice signal collected by a voice input unit ex356 in a voice call mode into a digital voice signal in a voice signal processing unit ex354, performs spectrum spreading processing on this in a modulation / demodulation unit ex352, performs digital-to-analog conversion processing and frequency conversion processing on this in a transmission / reception unit ex351, and transmits it via an antenna ex350. Also, the mobile phone ex114 amplifies reception data received via the antenna ex350 in a voice call mode, performs frequency conversion processing and analog-to-digital conversion processing on this, performs spectrum despreading processing on this in the modulation / demodulation unit ex352, converts it into an analog voice signal in the voice signal processing unit ex354, and outputs this from a voice output unit ex357.

[0309] Furthermore, when sending an e-mail in the data communication mode, the text data of the e-mail input by operating the operation key unit ex366 of the main unit is sent to the main control unit ex360 via the operation input control unit ex362. The main control unit ex360 performs spectrum spreading processing on the text data in the modulation / demodulation unit ex352, performs digital-to-analog conversion processing and frequency conversion processing in the transmission / reception unit ex351, and then transmits the data to the base station ex110 via the antenna ex350. When receiving an e-mail, the received data is processed in roughly the reverse manner, and is output to the display unit ex358.

[0310] When transmitting video, still images, or video and audio in the data communication mode, the video signal processing unit ex355 compresses and encodes the video signal supplied from the camera unit ex365 using the video encoding method described in each of the above embodiments (i.e., functions as an image encoding device according to one aspect of the present invention), and sends the encoded video data to the multiplexing / separation unit ex353. Also, the audio signal processing unit ex354 encodes an audio signal collected by the audio input unit ex356 while the camera unit ex365 is capturing video, still images, etc., and sends the encoded audio data to the multiplexing / separation unit ex353.

[0311] The multiplexing / separation unit ex353 multiplexes the encoded video data supplied from the video signal processing unit ex355 and the encoded audio data supplied from the audio signal processing unit ex354 in a predetermined manner, and the resulting multiplexed data is subjected to spectrum spreading processing in a modulation / demodulation unit (modulation / demodulation circuit unit) ex352, and then transmitted via an antenna ex350 after undergoing digital-to-analog conversion processing and frequency conversion processing in a transmission / reception unit ex351.

[0312] When receiving data of a video file linked to a homepage or the like in the data communication mode, or when receiving an e-mail with video and / or audio attached, in order to decode the multiplexed data received via the antenna ex350, the multiplexing / separation unit ex353 separates the multiplexed data into a bit stream of video data and a bit stream of audio data, and supplies the encoded video data to the video signal processing unit ex355 via the synchronous bus ex370, and supplies the encoded audio data to the audio signal processing unit ex354. The video signal processing unit ex355 decodes the video signal by decoding using a video decoding method corresponding to the video encoding method shown in each of the above embodiments (i.e., functions as an image decoding device according to one aspect of the present invention), and displays, for example, video and still images included in the video file linked to the homepage on the display unit ex358 via the LCD control unit ex359. The audio signal processing unit ex354 also decodes the audio signal, and audio is output from the audio output unit ex357.

[0313] Also, like the television ex300, the terminals such as the mobile phone ex114 may be implemented in three different ways: a transmitting terminal having only an encoder, a transmitting terminal having only a decoder, and a receiving terminal having only a decoder, in addition to a transmitting terminal having both an encoder and a decoder. Furthermore, in the digital broadcasting system ex200, multiplexed data in which music data and the like are multiplexed with video data is received and transmitted, but the data may be multiplexed with text data related to the video in addition to the audio data, or may be video data itself instead of multiplexed data.

[0314] In this way, it is possible to use the video encoding method or video decoding method shown in each of the above embodiments in any of the above-mentioned devices and systems, and by doing so, it is possible to obtain the effects described in each of the above embodiments.

[0315] Furthermore, the present invention is not limited to the above-described embodiment, and various modifications and alterations are possible without departing from the scope of the present invention.

[0316] (Embodiment 7) It is also possible to generate video data by switching as necessary between the video coding method or device shown in each of the above embodiments and a video coding method or device conforming to a different standard, such as MPEG-2, MPEG4-AVC, or VC-1.

[0317] Here, when multiple pieces of video data conforming to different standards are generated, it is necessary to select a decoding method corresponding to each standard when decoding. However, since it is not possible to identify which standard the video data to be decoded conforms to, a problem arises in that it is not possible to select an appropriate decoding method.

[0318] To solve this problem, multiplexed data, which is video data multiplexed with audio data, contains identification information indicating which standard the video data complies with. A specific configuration of multiplexed data including video data generated by the video coding method or device shown in each of the above embodiments will be described below. The multiplexed data is a digital stream in the MPEG-2 transport stream format.

[0319] FIG. 39 is a diagram showing the structure of multiplexed data. As shown in FIG. 39, the multiplexed data is obtained by multiplexing one or more of a video stream, an audio stream, a presentation graphics stream (PG), and an interactive graphics stream. The video stream indicates the main video and the sub-video of a movie, the audio stream (IG) indicates the main audio part of the movie and the sub-audio mixed with the main audio, and the presentation graphics stream indicates the subtitles of the movie. Here, the main video indicates a normal video displayed on a screen, and the sub-video indicates a video displayed on a small screen in the main video. The interactive graphics stream indicates an interactive screen created by arranging GUI components on a screen. The video stream is encoded by the moving image encoding method or device shown in each of the above embodiments, or a moving image encoding method or device conforming to conventional standards such as MPEG-2, MPEG4-AVC, and VC-1. The audio stream is encoded by a method such as Dolby AC-3, Dolby Digital Plus, MLP, DTS, DTS-HD, or Linear PCM.

[0320] Each stream included in the multiplexed data is identified by a PID. For example, 0x1011 is assigned to the video stream used for the movie image, 0x1100 to 0x111F to the audio stream, 0x1200 to 0x121F to the presentation graphics stream, 0x1400 to 0x141F to the interactive graphics stream, 0x1B00 to 0x1B1F to the video stream used for the movie secondary video, and 0x1A00 to 0x1A1F to the audio stream used for the secondary audio to be mixed with the main audio.

[0321] Fig. 40 is a diagram showing a schematic diagram of how multiplexed data is multiplexed. First, a video stream ex235 consisting of a plurality of video frames and an audio stream ex238 consisting of a plurality of audio frames are converted into PES packet sequences ex236 and ex239, respectively, and then converted into TS packets ex237 and ex240. Similarly, data of a presentation graphics stream ex241 and interactive graphics ex244 are converted into PES packet sequences ex242 and ex245, respectively, and then further converted into TS packets ex243 and ex246. The multiplexed data ex247 is constructed by multiplexing these TS packets into one stream.

[0322] Fig. 41 shows in more detail how a video stream is stored in a PES packet sequence. The first row in Fig. 41 shows a video frame sequence of a video stream. The second row shows a PES packet sequence. As indicated by arrows yy1, yy2, yy3, and yy4 in Fig. 41, I-pictures, B-pictures, and P-pictures, which are multiple Video Presentation Units in a video stream, are divided into individual pictures and stored in the payload of a PES packet. Each PES packet has a PES header, and the PES header stores a Presentation Time-Stamp (PTS) that is the display time of the picture and a Decoding Time-Stamp (DTS) that is the decoding time of the picture.

[0323] Fig. 42 shows the format of the TS packet that is finally written to the multiplexed data. The TS packet is a fixed-length packet of 188 bytes consisting of a 4-byte TS header that has information such as a PID that identifies the stream, and a 184-byte TS payload that stores the data, and the above PES packet is divided and stored in the TS payload. In the case of BD-ROM, a 4-byte TP_Extra_Header is added to the TS packet, forming a 192-byte source packet that is written to the multiplexed data. Information such as ATS (Arrival_Time_Stamp) is written in the TP_Extra_Header. The ATS indicates the start time of transfer of the TS packet to the PID filter of the decoder. In the multiplexed data, source packets are lined up as shown in the lower part of Fig. 42, and the number that increments from the beginning of the multiplexed data is called SPN (Source Packet Number).

[0324] In addition to the various streams such as video, audio, and subtitles, the TS packets contained in the multiplexed data also contain a PAT (Program Association Table), PMT (Program Map Table), and PCR (Program Clock Reference). The PAT indicates the PID of the PMT used in the multiplexed data, and the PID of the PAT itself is registered as 0. The PMT has the PID of each stream such as video, audio, and subtitles contained in the multiplexed data, as well as attribute information of the stream corresponding to each PID, and also has various descriptors related to the multiplexed data. The descriptors include copy control information that indicates whether copying of the multiplexed data is permitted or not. The PCR has information on the STC time corresponding to the ATS at which the PCR packet is transferred to the decoder, in order to synchronize the ATC (Arrival Time Clock), which is the time axis of the ATS, with the STC (System Time Clock), which is the time axis of the PTS and DTS.

[0325] FIG. 43 is a diagram explaining the data structure of a PMT in detail. At the beginning of a PMT, a PMT header is placed, which describes the length of the data contained in the PMT, etc. After that, multiple descriptors related to the multiplexed data are placed. The above-mentioned copy control information, etc. are written as descriptors. After the descriptors, multiple pieces of stream information related to each stream included in the multiplexed data are placed. The stream information is made up of stream descriptors that describe the stream type to identify the compression codec of the stream, the stream PID, and stream attribute information (frame rate, aspect ratio, etc.). There are as many stream descriptors as there are streams in the multiplexed data.

[0326] When recording on a recording medium, the multiplexed data is recorded together with a multiplexed data information file.

[0327] The multiplexed data information file is management information for multiplexed data as shown in FIG. 44, has one-to-one correspondence with the multiplexed data, and is made up of multiplexed data information, stream attribute information, and an entry map.

[0328] As shown in Fig. 44, the multiplexed data information consists of a system rate, a playback start time, and a playback end time. The system rate indicates the maximum transfer rate of the multiplexed data to the PID filter of the system target decoder, which will be described later. The interval of the ATS contained in the multiplexed data is set to be equal to or less than the system rate. The playback start time is the PTS of the first video frame of the multiplexed data, and the playback end time is set to the PTS of the last video frame of the multiplexed data plus the playback interval of one frame.

[0329] As shown in FIG. 45, the stream attribute information is registered for each PID for each stream included in the multiplexed data. The attribute information has different information for each video stream, audio stream, presentation graphics stream, and interactive graphics stream. The video stream attribute information has information such as what compression codec was used to compress the video stream, the resolution of each picture data constituting the video stream, the aspect ratio, and the frame rate. The audio stream attribute information has information such as what compression codec was used to compress the audio stream, the number of channels included in the audio stream, which language it corresponds to, and the sampling frequency. This information is used for initializing the decoder before the player starts playing.

[0330] In this embodiment, the stream type included in the PMT of the multiplexed data is used. Also, when multiplexed data is recorded on the recording medium, video stream attribute information included in the multiplexed data information is used. Specifically, in the video coding method or device shown in each of the above embodiments, a step or means is provided for setting unique information indicating that the video data is generated by the video coding method or device shown in each of the above embodiments to the stream type included in the PMT or the video stream attribute information. This configuration makes it possible to distinguish between video data generated by the video coding method or device shown in each of the above embodiments and video data that complies with other standards.

[0331] FIG. 46 shows steps of the video decoding method according to the present embodiment. In step exS100, the stream type included in the PMT or the video stream attribute information included in the multiplexed data information is obtained from the multiplexed data. Next, in step exS101, it is determined whether the stream type or the video stream attribute information indicates that the multiplexed data is generated by the video coding method or device shown in each of the above embodiments. If it is determined that the stream type or the video stream attribute information is generated by the video coding method or device shown in each of the above embodiments, in step exS102, decoding is performed by the video decoding method shown in each of the above embodiments. In addition, if the stream type or the video stream attribute information indicates that the data complies with conventional standards such as MPEG-2, MPEG4-AVC, and VC-1, in step exS103, decoding is performed by the video decoding method that complies with the conventional standard.

[0332] In this way, by setting a new unique value in the stream type or video stream attribute information, it is possible to determine whether the video decoding method or device shown in each of the above embodiments is capable of decoding the data when decoding. Therefore, even when multiplexed data conforming to a different standard is input, an appropriate decoding method or device can be selected, making it possible to decode the data without causing an error. In addition, the video encoding method or device, or the video decoding method or device shown in the present embodiment can be used in any of the above-mentioned devices and systems.

[0333] (Embodiment 8) The video encoding method and device, and the video decoding method and device shown in each of the above embodiments are typically realized by an LSI, which is an integrated circuit. As an example, FIG. 47 shows the configuration of a single-chip LSIex500. The LSIex500 includes elements ex501, ex502, ex503, ex504, ex505, ex506, ex507, ex508, and ex509, which will be described below, and each element is connected via a bus ex510. When the power supply is on, the power supply circuit unit ex505 supplies power to each unit to start them up in an operable state.

[0334] For example, when performing encoding processing, the LSIex500 inputs AV signals from the microphone ex117, the camera ex113, etc. through the AV I / Oex509 based on the control of a control unit ex501 having a CPUex502, a memory controller ex503, a stream controller ex504, a drive frequency control unit ex512, etc. The input AV signals are temporarily stored in an external memory ex511 such as an SDRAM. Based on the control of the control unit ex501, the stored data is divided into a plurality of times as appropriate according to the processing amount and processing speed, and sent to the signal processing unit ex507, where the audio signal is encoded and / or the video signal is encoded. Here, the encoding processing of the video signal is the encoding processing described in each of the above embodiments. The signal processing unit ex507 further performs processing such as multiplexing the encoded audio data and the encoded video data as the case may be, and outputs the data to the outside from the stream I / Oex506. This output multiplexed data is transmitted to the base station ex107, or written to a recording medium ex215. When multiplexing, it is advisable to temporarily store the data in a buffer ex508 to ensure synchronization.

[0335] In the above, the memory ex511 is described as an external configuration of the LSIex500, but it may be included inside the LSIex500. The buffer ex508 is not limited to one, and may include multiple buffers. Furthermore, the LSIex500 may be formed as a single chip or multiple chips.

[0336] In the above, the control unit ex501 has a CPU ex502, a memory controller ex503, a stream controller ex504, a drive frequency control unit ex512, etc., but the configuration of the control unit ex501 is not limited to this configuration. For example, the signal processing unit ex507 may further include a CPU. By providing a CPU inside the signal processing unit ex507, it is possible to further improve the processing speed. As another example, the CPU ex502 may include the signal processing unit ex507, or a part of the signal processing unit ex507, such as an audio signal processing unit. In such a case, the control unit ex501 is configured to include the CPU ex502 having the signal processing unit ex507 or a part thereof.

[0337] Although we refer to it as LSI here, it may also be called IC, system LSI, super LSI, or ultra LSI depending on the level of integration.

[0338] Furthermore, the method of integration is not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor. After LSI manufacture, a programmable FPGA (Field Programmable Gate Array) or a reconfigurable processor that allows reconfiguration of the connections and settings of circuit cells inside the LSI may be used. Typically, such a programmable logic device can execute the video encoding method or video decoding method shown in each of the above embodiments by loading or reading from a memory or the like a program that constitutes software or firmware.

[0339] Furthermore, if a new integrated circuit technology that can replace LSI appears due to the progress of semiconductor technology or a derivative technology, it may be possible to integrate the functional blocks using that technology. The application of biotechnology is also a possibility.

[0340] (Embodiment 9) When decoding video data generated by the video encoding method or device shown in each of the above embodiments, the amount of processing is expected to increase compared to when decoding video data conforming to conventional standards such as MPEG-2, MPEG4-AVC, and VC-1. Therefore, in the LSIex500, it is necessary to set a driving frequency higher than the driving frequency of the CPUex502 when decoding video data conforming to conventional standards. However, when the driving frequency is increased, a problem occurs in that power consumption increases.

[0341] In order to solve this problem, a video decoding device such as a television ex300 or an LSI ex500 is configured to identify which standard the video data complies with and switch the driving frequency according to the standard. FIG. 48 shows a configuration ex800 in this embodiment. If the video data is generated by the video encoding method or device shown in each of the above embodiments, the driving frequency switching unit ex803 sets the driving frequency high. Then, it instructs the decoding processing unit ex801 that executes the video decoding method shown in each of the above embodiments to decode the video data. On the other hand, if the video data is video data that complies with a conventional standard, it sets the driving frequency low compared to when the video data is generated by the video encoding method or device shown in each of the above embodiments. Then, it instructs the decoding processing unit ex802 that complies with the conventional standard to decode the video data.

[0342] More specifically, the drive frequency switching unit ex803 is composed of the CPU ex502 and the drive frequency control unit ex512 in FIG. 47. The decoding processing unit ex801 that executes the video decoding method shown in each of the above embodiments and the decoding processing unit ex802 that complies with the conventional standard correspond to the signal processing unit ex507 in FIG. 47. The CPU ex502 identifies which standard the video data complies with. Then, based on the signal from the CPU ex502, the drive frequency control unit ex512 sets the drive frequency. Also, based on the signal from the CPU ex502, the signal processing unit ex507 decodes the video data. Here, for example, the identification information described in the seventh embodiment can be used to identify the video data. The identification information is not limited to that described in the seventh embodiment, and may be any information that can identify which standard the video data complies with. For example, if it is possible to identify which standard the video data complies with based on an external signal that identifies whether the video data is used for a television or a disc, the identification may be based on such an external signal. Also, the selection of the drive frequency in the CPUex502 may be based on a lookup table that associates the video data standard with the drive frequency, as shown in Fig. 50. The lookup table is stored in the bufferex508 or the internal memory of the LSI, and the CPUex502 can select the drive frequency by referring to this lookup table.

[0343] FIG. 49 shows steps for carrying out the method of the present embodiment. First, in step exS200, the signal processing unit ex507 acquires identification information from the multiplexed data. Next, in step exS201, the CPU ex502 identifies whether the video data is generated by the encoding method or device shown in each of the above embodiments based on the identification information. If the video data is generated by the encoding method or device shown in each of the above embodiments, in step exS202, the CPU ex502 sends a signal to set the driving frequency to a high frequency to the driving frequency control unit ex512. Then, the driving frequency is set to a high frequency in the driving frequency control unit ex512. On the other hand, if the video data is in accordance with conventional standards such as MPEG-2, MPEG4-AVC, and VC-1, in step exS203, the CPU ex502 sends a signal to set the driving frequency to a low frequency to the driving frequency control unit ex512. Then, in the driving frequency control unit ex512, the driving frequency is set to a low frequency compared to when the video data is generated by the encoding method or device shown in each of the above embodiments.

[0344] Furthermore, by changing the voltage applied to the LSIex500 or a device including the LSIex500 in conjunction with switching the drive frequency, it is possible to further improve the power saving effect. For example, when the drive frequency is set to a low value, it is conceivable to set the voltage applied to the LSIex500 or a device including the LSIex500 to a lower value compared to when the drive frequency is set to a high value.

[0345] In addition, the method of setting the drive frequency is not limited to the above-mentioned setting method, and may be such that the drive frequency is set high when the amount of processing required for decoding is large, and the drive frequency is set low when the amount of processing required for decoding is small. For example, when the amount of processing required for decoding video data conforming to the MPEG4-AVC standard is larger than the amount of processing required for decoding video data generated by the video encoding method or device shown in each of the above-mentioned embodiments, the drive frequency may be set in the opposite manner to the above-mentioned setting method.

[0346] Furthermore, the method of setting the drive frequency is not limited to the configuration of lowering the drive frequency. For example, when the identification information indicates that the video data is generated by the video encoding method or device shown in each of the above embodiments, the voltage to be applied to the LSIex500 or the device including the LSIex500 is set high, and when the identification information indicates that the video data is compliant with conventional standards such as MPEG-2, MPEG4-AVC, VC-1, the voltage to be applied to the LSIex500 or the device including the LSIex500 is set low. As another example, when the identification information indicates that the video data is generated by the video encoding method or device shown in each of the above embodiments, the drive of the CPUex502 is not stopped, and when the identification information indicates that the video data is compliant with conventional standards such as MPEG-2, MPEG4-AVC, VC-1, the drive of the CPUex502 is temporarily stopped because there is a margin for processing. Even when the identification information indicates that the video data is generated by the video encoding method or device shown in each of the above embodiments, the drive of the CPUex502 is temporarily stopped if there is a margin for processing. In this case, it is conceivable to set the stop time shorter than when the video data indicates that it is video data conforming to conventional standards such as MPEG-2, MPEG4-AVC, and VC-1.

[0347] In this way, by switching the drive frequency according to the standard to which the video data conforms, it is possible to achieve power saving. Also, when the LSIex500 or a device including the LSIex500 is driven by a battery, the power saving can extend the battery life.

[0348] (Embodiment 10) In the above-mentioned devices and systems, such as televisions and mobile phones, multiple video data conforming to different standards may be input. In order to be able to decode multiple video data conforming to different standards, the signal processing unit ex507 of the LSIex500 must support multiple standards. However, if a signal processing unit ex507 corresponding to each standard is used individually, the circuit size of the LSIex500 will increase, and the cost will also increase.

[0349] In order to solve this problem, a configuration is adopted in which a decoding processing unit for executing the video decoding method shown in each of the above embodiments is partially shared with a decoding processing unit conforming to conventional standards such as MPEG-2, MPEG4-AVC, and VC-1. An example of this configuration is shown in ex900 of FIG. 51A. For example, the video decoding method shown in each of the above embodiments and the video decoding method conforming to the MPEG4-AVC standard share some of the processing contents in processes such as entropy coding, inverse quantization, deblocking filter, and motion compensation. For the common processing contents, a decoding processing unit ex902 conforming to the MPEG4-AVC standard is shared, and for other processing contents specific to one aspect of the present invention that are not conforming to the MPEG4-AVC standard, a dedicated decoding processing unit ex901 is used. In particular, since one aspect of the present invention is characterized by motion compensation, for example, a dedicated decoding processing unit ex901 is used for motion compensation, and for any or all of the other processing such as inverse quantization, entropy decoding, and deblocking filter, a decoding processing unit is shared. Regarding sharing of the decoding processing unit, for common processing content, a decoding processing unit for executing the video decoding method shown in each of the above embodiments may be shared, and for processing content specific to the MPEG4-AVC standard, a dedicated decoding processing unit may be used.

[0350] Another example of partially sharing the processing is shown in ex1000 in FIG. 51B. In this example, a dedicated decoding processing unit ex1001 corresponding to the processing content specific to one aspect of the present invention, a dedicated decoding processing unit ex1002 corresponding to the processing content specific to another conventional standard, and a shared decoding processing unit ex1003 corresponding to the processing content common to the video decoding method according to one aspect of the present invention and the video decoding method of another conventional standard are used. Here, the dedicated decoding processing units ex1001 and ex1002 are not necessarily specialized for the processing content specific to one aspect of the present invention or another conventional standard, and may be capable of executing other general-purpose processing. In addition, the configuration of this embodiment can also be implemented in LSIex500.

[0351] In this way, by sharing a decoding processing unit for processing content common to a video decoding method according to one embodiment of the present invention and a video decoding method according to a conventional standard, it is possible to reduce the circuit size of the LSI and reduce costs. [Industrial Applicability]

[0352] The present invention is applicable to image processing devices, image capturing devices, and image reproducing devices, and more specifically, to digital still cameras, movie cameras, mobile phones with camera functions, and smartphones. [Explanation of symbols]

[0353] 100 Image encoding device 101 Block division section 102 Subtraction section 103 Frequency conversion section 104 Quantization section 105 Entropy coding unit 106, 202 Inverse quantization section 107, 203 Inverse frequency conversion section 108, 204 Addition section 109, 205 Intra prediction section 110, 206 Loop Filter 111, 207 Frame memory 112, 208 Inter prediction section 113, 209 Switching section 121 input images 122 Code Blocks 123, 128, 224 difference blocks 124, 125, 127, 222, 223 coefficient blocks 126, 221 bitstream 129, 225 Decoding Blocks 130, 132, 134, 226, 229, 230 predicted blocks 131, 227 Decoded image 133, 151, 228 Movement information 141 Encoding information selection unit 142 Motion Estimation Unit 143 Motion Compensation Unit 144 Motion Information Calculation Unit 161 Translation Flag 162 Rotating Flag 163 Scaling Flags 164 Shear Flag 171 Differential translation component 172 Differential Rotation Components 173 Differential Scaling Components 174 Differential Shear Component 181 Encoding level information 200 Image Decoding Device 201 Entropy Decoding Unit

Claims

1. A processing circuit; a storage device accessible by the processing circuitry; The processing circuitry uses the storage device to: Decoding information from the bitstream that is applied to a number of blocks included in the sequence and that is used to determine the number of parameters used in a prediction based on an affine transformation; generating a predicted image for each of the plurality of blocks included in the sequence by performing a prediction based on an affine transformation using a number of parameters selected based on the information; Candidates for the number of parameters used in the prediction include 4 and 6. Image decoding device.

2. A processing circuit; a storage device accessible by the processing circuitry; The processing circuitry uses the storage device to: determining the number of parameters used in the prediction based on the affine transformation; generating a predicted image for each of a plurality of blocks included in the sequence by performing prediction based on an affine transformation using the determined number of parameters; encoding information that is applied to the blocks in the sequence and that is used to determine the number of parameters; Candidates for the number of parameters used in the prediction include 4 and 6. Image encoding device.

3. A processing circuit; a storage device accessible by the processing circuitry; The processing circuitry uses the storage device to: generating information to be applied to a plurality of blocks included in the sequence, the information being used to determine the number of parameters to be used in a prediction process based on an affine transformation; including said information in a bitstream; The prediction process includes: generating a prediction image for each of the plurality of blocks included in the sequence by performing prediction based on an affine transformation using a number of parameters selected based on the information; Candidates for the number of parameters used in the prediction include 4 and 6. Bitstream generator.

Citation Information

Patent Citations

  • Image encoding device and image decoding device

    JP1996065680A

  • Motion compression predict coding method for dynamic image, decoding method, coder and decoder

    JP1997224252A

  • Method for encoding and decoding digital image and device for encoding and decoding digital image using the same

    JP2004007804A

  • Image encoding method, image decoding method, image encoding device, image decoding device, image encoding program, image decoding program and recording medium recorded with the programs

    JP2004159132A

  • Image encoding device and image decoding device

    JP3654664B2

Cited By

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

    JP2025102849A