Image processing device and method, program, and recording medium

The image processing device and method address the issue of encoding efficiency loss by controlling secondary transformations based on non-zero coefficient counts, preventing coefficient diffusion and enhancing energy compaction and coding efficiency.

JP2024170557AActive Publication Date: 2024-12-10SONY GROUP CORP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024153508
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2016-06-08
Filing Date
2024-09-05
Publication Date
2024-12-10
Estimated Expiration
2037-04-28

AI Technical Summary

Technical Problem

Existing image coding methods face a reduction in encoding efficiency due to the diffusion of coefficients from low-order to high-order components during secondary transformation, especially when dealing with sparse non-zero coefficients, and the increased computational complexity of determining secondary transformations in units of CUs.

Method used

An image processing device and method that sets a matrix for inverse transformation processing based on the contents of the transformation and scanning method, converts transformation coefficients into one-dimensional vectors, performs matrix operations, and scales these vectors to suppress the diffusion of coefficients, thereby controlling the application of secondary transformations based on the number of non-zero coefficients in sub-blocks.

Benefits of technology

This approach effectively suppresses the reduction in encoding efficiency by preventing the diffusion of coefficients and optimizing the application of secondary transformations, leading to improved energy compaction and coding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2024170557000001_ABST
    Figure 2024170557000001_ABST
Patent Text Reader

Abstract

To suppress a decrease in coding efficiency.SOLUTION: When a switch skips a primary transform, which is a transform process for a prediction residual that is a difference between an image and a predicted image of the image, and a secondary transform, which is a transform process for a primary transform coefficient obtained by subjecting the prediction residual to the primary transform, the switch also skips band limitation for a secondary transform coefficient obtained by subjecting the primary transform coefficient to the secondary transform. The present disclosure can be applied to, for example, an image processing device, an image encoding device, an image decoding device, or the like.SELECTED DRAWING: Figure 26
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to an image processing device and method, and more particularly to an image processing device and method capable of suppressing a decrease in encoding efficiency. [Background technology]

[0002] Conventionally, in image coding, after performing a primary transform on a prediction residual, which is the difference between an image and its predicted image, a secondary transform is applied to each sub-block in a transform block in order to increase energy compaction (concentrate transform coefficients in a low frequency range) (see, for example, Non-Patent Document 1). Non-Patent Document 1 also discloses that a secondary transform identifier, which indicates which secondary transform is to be applied, is signaled on a CU-by-CU basis.

[0003] Also, in an encoder, determining which secondary transform to apply on a CU basis as described in Non-Patent Document 1 based on RDO (Rate-Distortion Optimization) involves high computational complexity, and it is disclosed that a secondary transform flag indicating whether or not to apply a secondary transform on a transform block basis is signaled (see, for example, Non-Patent Document 2). Non-Patent Document 2 also discloses that a secondary transform identifier indicating which secondary transform to apply is derived based on a primary transform identifier and an intra prediction mode.

[0004] However, in both the methods described in Non-Patent Document 1 and Non-Patent Document 2, when a sub-block with sparse non-zero coefficients is input to the secondary transform coefficients, a secondary transform is applied, and the coefficients are diffused from low-order to high-order components within the sub-block, resulting in a decrease in energy compaction and a risk of reduced coding efficiency.

[0005] In addition, Joint Exploration Test Model 1 (JEM1) discloses that the maximum size of a coding tree unit (CTU) is extended to 256x256 and the maximum size of a transform block is extended to 64x64 accordingly in order to improve the coding efficiency of high-resolution images such as 4K (see, for example, Non-Patent Document 1). Non-Patent Document 1 also discloses that when the transform block size is 64x64, the encoder performs band limitation (discards high-frequency components) so that transform coefficients of high-frequency components other than the low-frequency components in the upper left 32x32 of the transform block are forcibly set to 0, and encodes only the non-zero coefficients of the low-frequency components.

[0006] In this case, the decoder only needs to decode the non-zero coefficients of the low-frequency components and perform inverse quantization and inverse transform on the non-zero coefficients. Therefore, the computational complexity and implementation cost of the decoder can be reduced compared to when the encoder does not perform band limiting.

[0007] However, when an encoder performs a transform skip or a transform and quantization skip (hereinafter referred to as a transform / quantization bypass) on a 64x64 transform block, the transform coefficients of the 64x64 transform block are prediction residuals before transform. Therefore, when band limitation is performed in this case, distortion increases. As a result, there is a risk of reducing coding efficiency. In addition, even though a transform / quantization bypass is performed for the purpose of lossless coding, lossless coding cannot be performed. [Prior art documents] [Non-patent literature]

[0008] [Non-Patent Document 1] Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer Ohm, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 2", JVET-B1001_v3, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016 [Non-Patent Document 2] X.Zhao, A.Said, V.Seregin, M.Karczewicz, J.Chen, R.Joshi, "TU-level non-separable secondary transform", JVET-B0059, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11 2nd Meeting: San Diego, USA, 20-26 February 2016 Summary of the Invention [Problem to be solved by the invention]

[0009] As described above, there is a risk of the coding efficiency decreasing.

[0010] The present disclosure has been made in consideration of such circumstances, and makes it possible to suppress a decrease in coding efficiency. [Means for solving the problem]

[0011] An image processing device according to one aspect of the present technology includes a setting unit that sets a matrix for inverse transformation processing for transformation coefficients based on the content of the inverse transformation processing and a scanning method, a rasterization unit that converts the transformation coefficients, which are obtained by the inverse transformation processing to obtain a prediction residual, which is the difference between an image and a predicted image of the image, into a one-dimensional vector, a matrix calculation unit that performs a matrix operation on the one-dimensional vector using the matrix set by the setting unit, a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed, and a matrix conversion unit that converts the scaled one-dimensional vector into a matrix.

[0012] An image processing method according to one aspect of the present technology is an image processing method that sets a matrix for inverse transformation processing for transform coefficients based on the contents of the inverse transformation processing and a scanning method, converts the transform coefficients that result in a prediction residual, which is the difference between an image and a predicted image of the image, into a one-dimensional vector by performing the inverse transformation processing, performs a matrix operation on the one-dimensional vector using the set matrix, scales the one-dimensional vector on which the matrix operation has been performed, and converts the scaled one-dimensional vector into a matrix.

[0013] In an image processing device and method according to one aspect of the present technology, a matrix for inverse transformation processing for transform coefficients is set based on the content of the inverse transformation processing and a scanning method, the transform coefficients that result in a prediction residual, which is the difference between an image and a predicted image of that image, are converted into a one-dimensional vector by the inverse transformation processing, a matrix operation is performed on the one-dimensional vector using the set matrix, the one-dimensional vector on which the matrix operation has been performed is scaled, and the scaled one-dimensional vector is converted into a matrix. Effect of the Invention

[0014] According to the present disclosure, it is possible to process images, and in particular to suppress a decrease in coding efficiency. [Brief description of the drawings]

[0015] [Figure 1] FIG. 11 is an explanatory diagram for explaining an overview of recursive block division for a CU. [Diagram 2] FIG. 2 is an explanatory diagram for explaining setting of a PU to a CU shown in FIG. [Diagram 3] 2 is an explanatory diagram for explaining setting of a TU to a CU shown in FIG. 1; [Figure 4] FIG. 11 is an explanatory diagram for explaining the scanning order of CU / PU. [Diagram 5] 4 is a block diagram showing an example of a main configuration of a secondary conversion unit; FIG. [Figure 6] FIG. 11 is a diagram illustrating an example of a secondary conversion. [Figure 7] FIG. 1 is a block diagram showing an example of the main configuration of an image encoding device. [Figure 8] 4 is a block diagram showing an example of a main configuration of a conversion unit; [Figure 9] FIG. 11 is a diagram showing examples of scan methods corresponding to scan identifiers. [Figure 10] FIG. 13 is a diagram illustrating an example of a matrix of a secondary transformation. [Figure 11] 11 is a flowchart illustrating an example of the flow of an image encoding process. [Figure 12] 13 is a flowchart illustrating an example of the flow of a conversion process. [Figure 13] FIG. 2 is a block diagram showing an example of the main configuration of an image decoding device. [Figure 14] 4 is a block diagram showing an example of the main configuration of an inverse conversion unit; FIG. [Figure 15] 13 is a flowchart illustrating an example of the flow of an image decoding process. [Figure 16] 13 is a flowchart illustrating an example of the flow of an inverse conversion process. [Figure 17] FIG. 13 is a diagram illustrating an example of a relationship between an intra-prediction mode and a scanning method. [Figure 18] 4 is a block diagram showing an example of a main configuration of a conversion unit; [Figure 19] 11 is a block diagram showing an example of a main configuration of a secondary conversion selection unit. FIG. [Figure 20] 13 is a flowchart illustrating an example of the flow of a conversion process. [Figure 21] 4 is a block diagram showing an example of the main configuration of an inverse conversion unit; FIG. [Figure 22] 13 is a block diagram showing an example of a main configuration of an inverse secondary transformation selection unit. FIG. [Figure 23] 13 is a flowchart illustrating an example of the flow of an inverse conversion process. [Figure 24] 4 is a block diagram showing an example of a main configuration of a conversion unit; [Diagram 25] FIG. 13 is a diagram illustrating a band limit. [Figure 26] 4 is a block diagram showing an example of a main configuration of a conversion unit; [Figure 27] 13 is a flowchart illustrating an example of the flow of a conversion process. [Figure 28] 4 is a block diagram showing an example of the main configuration of an inverse conversion unit; FIG. [Figure 29] 13 is a flowchart illustrating an example of the flow of an inverse conversion process. [Diagram 30] FIG. 2 is a diagram for explaining the shapes of CU, PU, ​​and TU. [Diagram 31] 4 is a block diagram showing an example of a main configuration of a conversion unit; [Diagram 32] FIG. 13 illustrates an example of a band-limiting filter. [Diagram 33] 13 is a flowchart illustrating an example of the flow of a conversion process. [Diagram 34] 4 is a block diagram showing an example of the main configuration of an inverse conversion unit; FIG. [Diagram 35] 13 is a flowchart illustrating an example of the flow of an inverse conversion process. [Diagram 36] FIG. 13 is a diagram illustrating another example of a band-limiting filter. [Figure 37] FIG. 13 is a diagram illustrating another example of a band-limiting filter. [Figure 38] FIG. 13 is a diagram illustrating another example of a band-limiting filter. [Figure 39] 13 is a flowchart illustrating another example of the flow of the conversion process. [Diagram 40]13 is a flowchart illustrating another example of the flow of the inverse conversion process. [Diagram 41] FIG. 1 is a block diagram showing an example of a main configuration of a computer. [Diagram 42] FIG. 1 is a block diagram showing an example of a schematic configuration of a television device. [Diagram 43] FIG. 1 is a block diagram showing an example of a schematic configuration of a mobile phone. [Diagram 44] FIG. 1 is a block diagram showing an example of a schematic configuration of a recording and reproducing device. [Diagram 45] FIG. 1 is a block diagram showing an example of a schematic configuration of an imaging device. [Diagram 46] FIG. 2 is a block diagram showing an example of a schematic configuration of a video set. [Figure 47] 2 is a block diagram showing an example of a schematic configuration of a video processor; [Figure 48] FIG. 13 is a block diagram showing another example of a schematic configuration of the video processor. [Figure 49] FIG. 1 is a block diagram showing an example of a schematic configuration of a network system. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0016] Hereinafter, modes for carrying out the present disclosure (hereinafter referred to as embodiments) will be described in the following order. 1. First embodiment (skipping secondary transform for each subblock) 2. Second embodiment (selection of secondary transformation using scanning method) 3. Third embodiment (Skip band limit when blocks are square) 4. Fourth embodiment (Skip of band limit when block is a rectangle consisting of squares or rectangles) 5. Fifth embodiment (other)

[0017] <1. First embodiment> <Block division> In conventional image coding methods such as MPEG2 (Moving Picture Experts Group 2 (ISO / IEC 13818-2)) and MPEG-4 Part 10 (Advanced Video Coding, hereinafter referred to as AVC), coding is performed in processing units called macroblocks. A macroblock is a block having a uniform size of 16x16 pixels. In contrast, in HEVC (High Efficiency Video Coding), coding is performed in processing units (coding units) called CUs (Coding Units). A CU is a block having a variable size formed by recursively dividing an LCU (Largest Coding Unit), which is the maximum coding unit. The maximum size of a selectable CU is 64x64 pixels. The minimum size of a selectable CU is 8x8 pixels. A CU with the smallest size is called an SCU (Smallest Coding Unit). Note that the maximum size of a CU is not limited to 64x64 pixels, and may be a larger block size such as 128x128 pixels or 256x256 pixels.

[0018] In this way, as a result of employing CUs having a variable size, HEVC is capable of adaptively adjusting image quality and coding efficiency according to the contents of the image. Prediction processing for predictive coding is performed in processing units (prediction units) called PUs (Prediction Units). PUs are formed by dividing CUs in one of several division patterns. Moreover, PUs are composed of processing units (prediction blocks) called PBs (Prediction Blocks) for each of luminance (Y) and chrominance (Cb, Cr). Furthermore, orthogonal transform processing is performed in processing units (transform units) called TUs (Transform Units). TUs are formed by dividing CUs or PUs to a certain depth. Moreover, TUs are composed of processing units (transform blocks) called TBs (Transform Blocks) for each of luminance (Y) and chrominance (Cb, Cr).

[0019] <Recursive block division> FIG. 1 is an explanatory diagram for explaining an overview of recursive block division for a CU in HEVC. The block division of the CU is performed by recursively repeating the division of one block into 4 (= 2x2) sub-blocks, and as a result, a quadtree-like tree structure is formed. The whole of one quadtree is called a CTB (Coding Tree Block), and the logical unit corresponding to the CTB is called a CTU.

[0020] At the top of FIG. 1, as an example, C01 which is a CU having a size of 64x64 pixels is shown. The depth of the division of C01 is equal to zero. This means that C01 is the root of the CTU and corresponds to the LCU. The LCU size can be specified by parameters encoded in the SPS (Sequence Parameter Set) or PPS (Picture Parameter Set). C02 which is a CU is one of the 4 CUs divided from C01 and has a size of 32x32 pixels. The depth of the division of C02 is equal to 1. C03 which is a CU is one of the 4 CUs divided from C02 and has a size of 16x16 pixels. The depth of the division of C03 is equal to 2. C04 which is a CU is one of the 4 CUs divided from C03 and has a size of 8x8 pixels. The depth of the division of C04 is equal to 3. Thus, the CU is formed by recursively dividing the image to be encoded. The depth of the division is variable. For example, in a flat image region such as a blue sky, a larger-sized (i.e., smaller-depth) CU can be set. On the other hand, in a steep image region including many edges, a smaller-sized (i.e., larger-depth) CU can be set. And each of the set CUs becomes a processing unit for the encoding process.

[0021] <Setting of PU to CU> PU is a processing unit of prediction processing including intra prediction and inter prediction. A PU is formed by dividing a CU in one of several division patterns. FIG. 2 is an explanatory diagram for explaining the setting of PUs to the CU shown in FIG. 1. On the right of FIG. 2, eight division patterns of 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, 2NxnD, nLx2N, and nRx2N are shown. Among these division patterns, in intra prediction, two types of 2Nx2N and NxN are selectable (NxN is only selectable in the SCU). On the other hand, in inter prediction, when asymmetric motion division is enabled, all eight division patterns are selectable.

[0022] <Setting of TUs to CUs> A TU is a processing unit of orthogonal transformation processing. A TU is formed by dividing a CU (for an intra CU, each PU within the CU) to a certain depth. FIG. 3 is an explanatory diagram for explaining the setting of TUs to the CU shown in FIG. 2. On the right of FIG. 3, one or more TUs that can be set to C02 are shown. For example, TU T01 has a size of 32x32 pixels, and the depth of its TU division is equal to zero. TU T02 has a size of 16x16 pixels, and the depth of its TU division is equal to 1. TU T03 has a size of 8x8 pixels, and the depth of its TU division is equal to 2.

[0023] How to perform block division to set blocks such as the above-described CUs, PUs, and TUs to an image is typically determined based on a comparison of costs that affect coding efficiency. The encoder compares the costs, for example, between one 2Mx2M pixel CU and four MxM pixel CUs, and if setting four MxM pixel CUs results in higher coding efficiency, it decides to divide the 2Mx2M pixel CU into four MxM pixel CUs.

[0024] <Scanning order of CUs and PUs> When encoding an image, the CTB (or LCU) set in a grid shape in the image (or slice, tile) is scanned in raster scan order. In one CTB, the CU is scanned by tracing the quadtree from left to right and from top to bottom. When processing the current block, information of the upper and left adjacent blocks is used as input information. FIG. 4 is an explanatory diagram for explaining the scanning order of CUs and PUs. The upper left of FIG. 4 shows four CUs C10, C11, C12, and C13 that may be included in one CTB. The numbers in the boxes of each CU represent the order of processing. The encoding process is performed in the order of the upper left CU C10, the upper right CU C11, the lower left CU C12, and the lower right CU C13. The right of FIG. 4 shows one or more PUs for inter prediction that may be set to CU C11. The bottom of FIG. 4 shows one or more PUs for intra prediction that may be set to CU C12. As indicated by the numbers in the boxes of these PUs, the PUs are also scanned from left to right and from top to bottom.

[0025] In the following description, a "block" may be used to refer to a partial region or processing unit of an image (picture) (not a block of a processing unit). In this case, a "block" refers to any partial region in a picture, and its size, shape, characteristics, etc. are not limited. In other words, a "block" in this case includes any partial region (processing unit), such as a TB, TU, PB, PU, ​​SCU, CU, LCU (CTB), subblock, macroblock, tile, or slice.

[0026] <Secondary Transformation> Non-patent literature 1 and non-patent literature 2 describe that after a primary transform is performed on a prediction residual, which is the difference between an image and its predicted image, a secondary transform is then applied to each sub-block within a transform block in order to increase energy compaction (concentrate transform coefficients in the low range).

[0027] However, when a prediction residual having sparse non-zero coefficients is subjected to a secondary transform, the coefficients are diffused from low-order to high-order components, which may reduce energy compaction and decrease coding efficiency.

[0028] Fig. 5 is a block diagram showing an example of the main configuration of a secondary conversion unit that performs secondary conversion. The secondary conversion unit 11 shown in Fig. 5 is a processing unit that performs secondary conversion on primary conversion coefficients obtained by primary conversion of prediction residuals using the method described in Non-Patent Document 1 and Non-Patent Document 2. As shown in Fig. 5, the secondary conversion unit 11 has a rasterization unit 21, a matrix operation unit 22, a scaling unit 23, and a matrix generation unit 24.

[0029] The rasterization unit 21 scans the input primary transform coefficients Coeff_P in accordance with the scanning method indicated by the scan identifier scanIdx, and converts the primary transform coefficients Coeff_P into a one-dimensional vector X 1d For example, if the primary transform coefficient Coeff_P is a 4×4 matrix with sparse non-zero coefficients as shown in the following formula (1) and the scan identifier scanIdx indicates a horizontal scan (hor), the rasterizer 21 converts the primary transform coefficient Coeff_P into a one-dimensional vector X 1d Convert to.

[0030]

number

number

[0031] The matrix calculation unit 22 calculates the one-dimensional vector X 1d For example, the one-dimensional vector X shown in the above formula (2) is calculated by using the secondary transformation matrix R. 1d By performing this matrix operation on 1dis obtained.

[0032] Y 1d T = R X 1d T (3)

number

[0033] The scaling unit 23 converts the one-dimensional vector Y 1d To normalize the norm, a bit shift operation of N bits (N is a natural number) is performed as shown in the following equation (5). For example, the one-dimensional vector Y 1d By performing this bit shift operation on 1d is obtained.

[0034] Z 1d = ( Y 1d )>>N (5)

number

[0035] The matrix generator 24 converts the one-dimensional vector Z 1d is converted into a matrix based on the scan method specified by the scan identifier scanIdx. This matrix is ​​supplied to a downstream processing unit (e.g., a quantization unit) as a secondary transform coefficient Coeff obtained by secondary transforming the primary transform coefficient Coeff_P. For example, the one-dimensional vector Z 1d By performing this matrix transformation, secondary transform coefficients Coeff in a 4×4 matrix as shown in the following equation (7) are obtained.

[0036]

number

[0037] As described above, when the primary transform coefficient Coeff_P having sparse non-zero coefficients is subjected to the secondary transform, the coefficients are diffused from low-order to high-order components, which may reduce energy compaction and decrease coding efficiency.

[0038] In addition, Non-Patent Document 2 discloses that in order to reduce the overhead of the secondary transform flag, if the non-zero coefficient in the transform block is equal to or less than a predetermined threshold, the secondary transform is not applied and the flag signal is omitted. For example, when the threshold value TH=2, if the primary transform coefficient Coeff_P is a matrix as shown in the above formula (1), the secondary transform is skipped (omitted).

[0039] However, in the method described in Non-Patent Document 1 and Non-Patent Document 2, the transform block is subjected to secondary transform for each subblock. Therefore, for example, as shown in FIG. 6, when the transform block of the primary transform coefficient Coeff_P is composed of 2×2 subblocks, and each subblock is a 4×4 matrix as shown in the above formula (1), the non-zero coefficient in the transform block is 4, which is greater than the threshold TH (= 2), and the secondary transform is applied. As described above, the secondary transform is performed for each subblock (each 4×4 matrix), so the secondary transform coefficient Coeff of each subblock is as shown in the above formula (7). In other words, the coefficients are diffused from low-order to high-order components, which reduces energy compaction and may reduce coding efficiency.

[0040] <Subblock-by-subblock secondary conversion skip control> Therefore, the skip of the transform process for the transform coefficient obtained from the prediction residual, which is the difference between an image and a predicted image of the image, is controlled for each subblock based on the number of non-zero coefficients of the transform coefficients for each subblock. Also, the skip of the inverse transform process for the transform coefficients for which the prediction residual, which is the difference between an image and a predicted image of the image, is obtained by inverse transform processing is controlled for each subblock based on the number of non-zero coefficients of the transform coefficients for each subblock. For example, if the non-zero coefficients in the subblock are equal to or less than a threshold, the secondary transform and the inverse secondary transform are skipped (omitted).

[0041] By doing this, it is possible to prevent the application of transform processing (inverse transform processing) to transform coefficients of sub-blocks with sparse non-zero coefficients, thereby preventing a decrease in energy compaction and a decrease in coding efficiency.

[0042] <Image encoding device> Fig. 7 is a block diagram showing an example of the configuration of an image encoding device, which is one aspect of an image processing device to which the present technology is applied. The image encoding device 100 shown in Fig. 7 is a device that encodes a prediction residual between an image and its predicted image, such as AVC or HEVC. For example, the image encoding device 100 implements a technology proposed in HEVC or a technology proposed by JVET (Joint Video Exploration Team).

[0043] Note that Fig. 7 shows the main processing units, data flows, etc., and is not limited to all that is shown in Fig. 7. In other words, in the image encoding device 100, there may be processing units that are not shown as blocks in Fig. 7, and there may be processes and data flows that are not shown as arrows, etc. in Fig. 7.

[0044] As shown in FIG. 7, the image encoding device 100 has a control unit 101, a calculation unit 111, a transformation unit 112, a quantization unit 113, an encoding unit 114, an inverse quantization unit 115, an inverse transformation unit 116, a calculation unit 117, a frame memory 118, and a prediction unit 119.

[0045] The control unit 101 divides a video input to the image encoding device 100 into blocks of processing units (CU, PU, ​​transform block (TB), etc.) based on an external or pre-specified block size of the processing unit, and supplies an image I corresponding to the divided blocks to the calculation unit 111. The control unit 101 also determines the encoding parameters (header information Hinfo, prediction mode information Pinfo, transform information Tinfo, etc.) to be supplied to each block based on, for example, RDO (Rate-Distortion Optimization). The determined encoding parameters are supplied to each block.

[0046] The header information Hinfo includes information such as a video parameter set (VPS (Video Parameter Set)), a sequence parameter set (SPS (Sequence Parameter Set)), a picture parameter set (PPS (Picture Parameter Set)), a slice header (SH), etc. For example, the header information Hinfo includes information that specifies an image size (horizontal width PicWidth, vertical width PicHeight), bit depth (luminance bitDepthY, chrominance bitDepthC), a maximum value MaxCUSize / minimum value MinCUSize of a CU size, a maximum value MaxTBSize / minimum value MinTBSize of a transform block size, a maximum value MaxTSSize of a transform skip block (also referred to as a maximum transform skip block size), an on / off flag (also referred to as a valid flag) of each encoding tool, etc. Of course, the contents of the header information Hinfo are arbitrary, and any information other than the above-mentioned examples may be included in the header information Hinfo.

[0047] The prediction mode information Pinfo includes, for example, a PU size PUSize which is information indicating the PU size (prediction block size) of the processing target PU, intra prediction mode information IPinfo which is information regarding the intra prediction mode of the processing target block (for example, prev_intra_luma_pred_flag, mpm_idx, rem_intra_pred_mode, etc. in JCTVC-W1005, 7.3.8.5 Coding Unit syntax), and motion prediction information MVinfo which is information regarding the motion prediction of the processing target block (for example, merge_idx, merge_flag, inter_pred_idc, ref_idx_LX, mvp_lX_flag, X={0,1}, mvd, etc. in JCTVC-W1005, 7.3.8.6 Prediction Unit Syntax). Of course, the contents of the prediction mode information Pinfo are arbitrary, and any information other than the above-mentioned examples may be included in this prediction mode information Pinfo.

[0048] The conversion information Tinfo includes, for example, the following information:

[0049] The block size TBSize (or the logarithm of TBSize with base 2 as the logarithm, log2TBSize, also referred to as the transform block size) is information indicating the block size of the transform block to be processed.

[0050] The secondary transformation identifier (st_idx) is an identifier that indicates which secondary transformation or inverse secondary transformation (also called (inverse) secondary transformation) is applied to the target data unit (see, for example, JVET-B1001, 2.5.2 Secondary Transforms. In JEM2, it is also called nsst_idx, rot_idx). In other words, this secondary transformation identifier is information about the contents of the (inverse) secondary transformation on the target data unit.

[0051] For example, the secondary transform identifier st_idx is an identifier that specifies a matrix of the (inverse) secondary transform when its value is greater than 0. In other words, in this case, the secondary transform identifier st_idx indicates execution of the (inverse) secondary transform. Also, for example, the secondary transform identifier st_idx indicates skipping of the (inverse) secondary transform when its value is 0.

[0052] The scan identifier (scanIdx) is information related to a scanning method. The quantization parameter (qp) is information indicating the quantization parameter used for (de)quantization in the target data unit. The quantization matrix (scaling_matrix) is information indicating the quantization matrix used for (de)quantization in the target data unit (e.g., JCTVC-W1005, 7.3.4 Scaling list data syntax).

[0053] Of course, the contents of the conversion information Tinfo are arbitrary, and any information other than the above-mentioned examples may be included in this conversion information Tinfo.

[0054] The header information Hinfo is supplied to each block, for example. The prediction mode information Pinfo is supplied to the encoding unit 114 and the prediction unit 119, for example. The transformation information Tinfo is supplied to the transformation unit 112, the quantization unit 113, the encoding unit 114, the inverse quantization unit 115, and the inverse transformation unit 116, for example.

[0055] The calculation unit 111 subtracts the predicted image P supplied from the prediction unit 119 from the image I corresponding to the block of the input processing unit as shown in equation (8) to obtain a prediction residual D, and supplies it to the conversion unit 112.

[0056] D=IP (8)

[0057] The conversion unit 112 performs a conversion process on the prediction residual D supplied from the calculation unit 111 based on the conversion information Tinfo supplied from the control unit 101, and derives a conversion coefficient Coeff. The conversion unit 112 supplies the conversion coefficient Coeff to the quantization unit 113.

[0058] The quantization unit 113 scales (quantizes) the transform coefficient Coeff supplied from the transform unit 112 based on the transform information Tinfo supplied from the control unit 101. That is, the quantization unit 113 quantizes the transform coefficient Coeff that has been subjected to the transform process. The quantization unit 113 supplies the quantized transform coefficient obtained by the quantization, i.e., the quantized transform coefficient level level, to the encoding unit 114 and the inverse quantization unit 115.

[0059] The encoding unit 114 encodes the quantized transform coefficient level LEVEL and the like supplied from the quantization unit 113 in a predetermined manner. For example, the encoding unit 114 converts the encoding parameters (header information Hinfo, prediction mode information Pinfo, transformation information Tinfo, and the like) supplied from the control unit 101 and the quantized transform coefficient level LEVEL supplied from the quantization unit 113 into syntax values ​​of each syntax element in accordance with the definition of a syntax table, encodes (for example, arithmetic encodes) each syntax value, and generates a bit string (encoded data).

[0060] Furthermore, the encoding unit 114 derives residual information RInfo from the quantized transform coefficient level level, encodes the residual information RInfo, and generates a bit string (encoded data).

[0061] The residual information RInfo includes, for example, the last non-zero coefficient X coordinate (last_sig_coeff_x_pos), the last non-zero coefficient Y coordinate (last_sig_coeff_y_pos), the sub-block non-zero coefficient presence / absence flag (coded_sub_block_flag), the non-zero coefficient presence / absence flag (sig_coeff_flag), the GR1 flag (gr1_flag) which is flag information indicating whether the level of the non-zero coefficient is greater than 1, the GR2 flag (gr2_flag) which is flag information indicating whether the level of the non-zero coefficient is greater than 2, the sign code (sign_flag) which is a sign indicating the positive or negative of the non-zero coefficient, the non-zero coefficient residual level (coeff_abs_level_remaining) which is information indicating the residual level of the non-zero coefficient, and the like (for example, see 7.3.8.11 Residual Coding syntax of JCTVC-W1005). Of course, the contents of the residual information RInfo are arbitrary, and any information other than the above-mentioned examples may be included in this residual information RInfo.

[0062] For example, the encoding unit 114 multiplexes the bit strings (encoded data) of the encoded syntax elements and outputs the multiplexed data as a bit stream.

[0063] The inverse quantization unit 115 scales (inverse quantizes) the value of the quantized transform coefficient level level supplied from the quantization unit 113 based on the transform information Tinfo supplied from the control unit 101, and derives the transform coefficient Coeff_IQ after inverse quantization. The inverse quantization unit 115 supplies the transform coefficient Coeff_IQ to the inverse transform unit 116. The inverse quantization performed by this inverse quantization unit 115 is an inverse process of the quantization performed by the quantization unit 113, and is the same process as the inverse quantization performed in the image decoding device described later. Therefore, this inverse quantization will be described later in the description of the image decoding device.

[0064] The inverse transform unit 116 performs inverse transform on the transform coefficients Coeff_IQ supplied from the inverse quantization unit 115 based on the transform information Tinfo supplied from the control unit 101, and derives a prediction residual D'. The inverse transform unit 116 supplies the prediction residual D' to the calculation unit 117. The inverse transform performed by this inverse transform unit 116 is an inverse process of the transform performed by the transform unit 112, and is the same process as the inverse transform performed in the image decoding device described later. Therefore, this inverse transform will be described later in the description of the image decoding device.

[0065] The calculation unit 117 adds the prediction residual D' supplied from the inverse transform unit 116 and a predicted image P (prediction signal) corresponding to the prediction residual D' supplied from the prediction unit 119, as shown in the following equation (9), to derive a local decoded image Rec. The calculation unit 117 supplies the local decoded image Rec to the frame memory 118.

[0066] Rec=D'+P (9)

[0067] The frame memory 118 reconstructs a decoded image for each picture unit using the local decoded image Rec supplied from the calculation unit 117, and stores the reconstructed image in a buffer within the frame memory 118. The frame memory 118 reads out a decoded image specified by the prediction unit 119 from the buffer as a reference image, and supplies the read image to the prediction unit 119. The frame memory 118 may also store header information Hinfo, prediction mode information Pinfo, conversion information Tinfo, and the like, related to generation of the decoded image, in a buffer within the frame memory 118.

[0068] The prediction unit 119 obtains a decoded image stored in the frame memory 118 as a reference image, which is specified by the prediction mode information PInfo, and generates a predicted image P by using the reference image according to the prediction method specified by the prediction mode information Pinfo. The prediction unit 119 supplies the generated predicted image P to the calculation unit 111 and the calculation unit 117.

[0069] Such an image coding device 100 includes a control unit that controls, for each sub-block, skipping of the transform process for the transform coefficients obtained from the prediction residual, which is the difference between an image and a predicted image of the image, based on the number of non-zero coefficients of the transform coefficients for each sub-block. That is, the transform unit 112 controls, for each sub-block, skipping of the transform process for the transform coefficients obtained from the prediction residual, which is the difference between an image and a predicted image of the image, based on the number of non-zero coefficients of the transform coefficients for each sub-block.

[0070] <Conversion section> 8 is a block diagram showing an example of the main configuration of conversion unit 112. In FIG. 8, conversion unit 112 includes a primary conversion unit 131 and a secondary conversion unit 132.

[0071] The primary transform unit 131 performs a primary transform such as an orthogonal transform on the prediction residual D supplied from the calculation unit 111, and derives a transform coefficient Coeff_P (also referred to as a primary transform coefficient) after the primary transform corresponding to the prediction residual D. That is, the primary transform unit 131 transforms the prediction residual D into a primary transform coefficient Coeff_P. The primary transform unit 131 supplies the derived primary transform coefficient Coeff_P to the secondary transform unit 132 (the rasterize unit 141 and the switch 148 described later).

[0072] The secondary conversion unit 132 converts the primary conversion coefficient Coeff_P supplied from the primary conversion unit 131 into a one-dimensional vector (also called a row vector), performs a matrix operation on the one-dimensional vector, scales the one-dimensional vector on which the matrix operation has been performed, and performs secondary conversion, which is a conversion process that converts the scaled one-dimensional vector into a matrix.

[0073] The secondary transform unit 132 performs secondary transform on the primary transform coefficient Coeff_P based on a secondary transform identifier st_idx, which is information on the content of the secondary transform, and a scan identifier scanIdx, which is information on a scan method of the transform coefficient, to derive a transform coefficient Coeff after the secondary transform (also referred to as a secondary transform coefficient). That is, the secondary transform unit 132 transforms the primary transform coefficient Coeff_P into a secondary transform coefficient Coeff. The secondary transform unit 132 supplies the secondary transform coefficient Coeff to the quantization unit 113.

[0074] It should be noted that the secondary transform unit 132 can also skip (omit) the secondary transform and supply the primary transform coefficient Coeff_P to the quantization unit 113 as the secondary transform coefficient Coeff.

[0075] As shown in FIG. 8, the secondary transform unit 132 includes a rasterizer 141, a matrix calculator 142, a scaler 143, a matrix generator 144, a secondary transform selector 145, a quantizer 146, a non-zero coefficient number determiner 147, and a switch 148.

[0076] The rasterizer 141 converts the primary transform coefficients Coeff_P supplied from the primary transformer 131 into a one-dimensional vector X 1d The rasterizer 141 converts the obtained one-dimensional vector X 1d is supplied to the matrix calculation unit 142.

[0077] A of FIG. 9 shows scan types scanType designated by each value of the scan identifier scanIdx. As shown in A of FIG. 9, when the scan identifier scanIdx is 0, an up-right diagonal scan is designated, when the scan identifier scanIdx is 1, a horizontal fast scan is designated, and when the scan identifier scanIdx is 2, a vertical fast scan is designated. B of FIG. 9 to D of FIG. 9 show the scan order of coefficients in each scan in a 4×4 subblock. In B of FIG. 9 to D of FIG. 9, the number assigned to each coefficient position indicates the order in which the coefficient position is scanned. B of FIG. 9 shows an example of the scan order of a horizontal fast scan, C of FIG. 9 shows an example of the scan order of a vertical fast scan, and D of FIG. 9 shows an example of the scan order of a diagonal scan.

[0078] The secondary transform selection unit 145 reads out the matrix R of the secondary transform specified by the secondary transform identifier st_idx from an internal memory (not shown) of the secondary transform selection unit 145, and supplies it to the matrix calculation unit 142. For example, when the secondary transform identifier st_idx has a certain value, the secondary transform selection unit 145 reads out the 16×16 matrix R shown in FIG.

[0079] The secondary transform selection unit 145 may select the matrix R of the secondary transform according to the secondary transform identifier st_idx and the intra prediction mode information IPinfo (for example, a prediction mode number). The secondary transform selection unit 145 may select the matrix R of the secondary transform according to the motion prediction information MVinfo and the secondary transform identifier st_idx instead of the intra prediction mode information IPinfo.

[0080] The matrix calculation unit 142 calculates a one-dimensional vector X1d Using the secondary transformation matrix R, perform the matrix operation shown in the following equation (10), and the resulting one-dimensional vector Y 1d is supplied to the scaling unit 143. In equation (10), the operator "·" represents an operation of performing an inner product (matrix multiplication) between matrices, and the operator "T" represents an operation of transposing a matrix.

[0081] Y 1d T =R·X 1d T (10)

[0082] The scaling unit 143 scales the signal Y 1d (i.e. one-dimensional vector Y 1d In order to normalize the norm of the signal Z, a bit shift operation of N (N is a natural number) bits is performed as shown in the following equation (11), and the signal Z after the bit shift is 1d (i.e. one-dimensional vector Z 1d ) is calculated. Note that, as shown in the following formula (12), before the N-bit shift operation, the value of 1<<(N-1) is added as an offset to the one-dimensional vector Z 1d It is also possible to add to each element of

[0083] Z 1d =(Y 1d )>>N (11) Z 1d =(Y 1d +((N-1)<<1)·E)>>N (12)

[0084] In addition, in formula (12), E is a 1×16 dimensional vector in which all elements have a value of 1. For example, since the matrix R of the secondary transformation shown in FIG. 10 is an 8-bit scaled matrix, the value of N used for norm normalization in the scaling unit 143 is 8. In general, when the matrix R of the secondary transformation is scaled by N bits, the bit shift amount for norm normalization is N bits. The scaling unit 143 scales the one-dimensional vector Z 1d is supplied to the matrix generator 144.

[0085] The matrix generator 144 generates a norm-normalized 1×16-dimensional vector Z 1d into a 4 × 4 matrix. The matrix generator 144 supplies the obtained transform coefficients Coeff to the quantizer 146 and the switch 148.

[0086] The quantization unit 146 performs basically the same process (quantization) as the quantization unit 113. However, the quantization unit 146 receives as input the primary transform coefficient Coeff_P, the secondary transform coefficient Coeff (after the processes from the rasterization unit 141 to the matrix generation unit 144 are executed), the quantization parameter qp which is a part of the transform information Tinfo, and the quantization matrix scaling_matrix. The quantization unit 146 quantizes the primary transform coefficient Coeff_P supplied from the primary transform unit 131 and the secondary transform coefficient Coeff which is a transform coefficient supplied from the matrix generation unit 144, for example, as shown in the following formulas (13) and (14), and derives the quantized primary transform coefficient level_P (referred to as the quantized primary transform coefficient) and the quantized secondary transform coefficient level_S (referred to as the quantized secondary transform coefficient).

[0087] level_P(i,j) = sign (coeff_P(i,j)) × (( abs ( coeff_P(i,j)) × f[qp%6] × (16 / w(i,j)) + offsetQ ) >> qp / 6 ) >> shift1 (13) level_S(i,j) = sign (coeff (i,j)) × (( abs ( coeff (i,j)) × f[qp%6] × (16 / w(i,j)) + offsetQ ) >> qp / 6 ) >> shift1 (14)

[0088] In equations (13) and (14), the operator sign(X) is an operator that returns the positive or negative sign of the input value X. For example, if X >= 0, it returns +1, and if X < 0, it returns -1. Also, f[] is a scaling factor that depends on the quantization parameter, and takes a value as shown in the following equation (15).

[0089] F[qp%6] = [26214, 23302, 20560, 18396, 16384, 16384, 14564] (15)

[0090] In addition, in equations (13) and (14), w(i,j) is the value of the quantization matrix scaling_matrix corresponding to the coefficient position (i,j) of Coeff(i,j) or (Coeff_P(i,j)). That is, this w(i,j) is calculated as shown in the following equation (16). Furthermore, shift1 and offsetQ are calculated as shown in the following equations (17) and (18).

[0091] w(i,j) = scaling_matrix(i,j) (16) shift1 = 29 - M - B (17) offsetQ = 28 - M - B (18) In equations (17) and (18), M is the logarithm of the block size TBSize of the transform block in base 2, and B is the bit depth bitDepth of the input signal. M = log2(TBSize) B = bitDepth

[0092] The quantization method can be changed within a practicable range without relying on the quantization shown in equations (13) and (14).

[0093] The quantization unit 146 supplies the quantized primary transform coefficient level_P and the quantized secondary transform coefficient level_S obtained as described above to the non-zero coefficient number determination unit 147.

[0094] The non-zero coefficient number determination unit 147 receives the quantized primary transform coefficient level_P and the quantized secondary transform coefficient level_S for each sub-block. The non-zero coefficient number determination unit 147 refers to the quantized primary transform coefficient level_P and the quantized secondary transform coefficient level_S supplied from the quantization unit 146, and derives the numbers of non-zero coefficients in the sub-block, numSigInSBK_P (also referred to as the number of non-zero coefficients of the quantized primary transform coefficients) and numSingInSBK_S (also referred to as the number of non-zero coefficients of the quantized secondary transform coefficients), for example, by the following formulas (19) and (20). In formulas (19) and (20), (i, j) represent coordinates in the sub-block, where i=0...3, j=0...3. The operator abs(X) is an operator that returns the absolute value of the input value X. By using equations (19) and (20), it is possible to derive the number of transform coefficients (non-zero coefficients) whose level values ​​after quantization are greater than 0. In addition, in equations (19) and (20), the determination condition for a non-zero coefficient (abs(level_X(i,j))>0) (X=P, S) may be replaced with the determination condition (level_X(i,j)!=0).

[0095] numSigInSBK_P = Σ{abs(level_P(i,j))>0 ? 1 : 0} (19) numSigInSBK_S = Σ{abs(level_S(i,j))>0 ? 1 : 0} (20)

[0096] The non-zero coefficient number determination unit 147 derives a secondary transform skip flag StSkipFlag, which is information regarding skipping of the secondary transform, by referring to the number of non-zero coefficients numSigInSBK_P of the quantized primary transform coefficients, the number of non-zero coefficients numSigInSBK_S of the quantized secondary transform coefficients, and a predetermined threshold value TH, using the following equation (21).

[0097] StSkipFlag = ( numSigInSBK_P <= numSigInSBK_S && numSigInSBK_P <= TH ) ? 1 : 0 ···(twenty one)

[0098] The threshold value TH is set to, for example, 2, but is not limited to this and can be set to a value from 0 to 16. The threshold value TH may be notified in header information such as a VPS / SPS / PPS / slice header SH. The threshold value TH may be determined in advance between the encoding side (e.g., image encoding device 100) and the decoding side (e.g., image decoding device 200 described later), and notification from the encoding side to the decoding side (transmission of the threshold value TH from the encoding side to the decoding side) may be omitted.

[0099] In equation (21), when the number of non-zero coefficients of the quantized primary transform coefficients, numSigInSBK_P, is equal to or smaller than the number of non-zero coefficients of the quantized secondary transform coefficients, numSigInSBK_S, and when the number of non-zero coefficients of the quantized primary transform coefficients, numSigInSBK_P, is equal to or smaller than the threshold value, TH, the value of the secondary transform skip, StSkipFlag, is set to 1. That is, the secondary transform skip, StSkipFlag, indicates that the secondary transform is skipped. Otherwise (numSigInSBK_P>numSigInSBK_S || numSigInSBK_P>TH), the value of the secondary transform skip, StSkipFlag, is set to 0. That is, the secondary transform skip, StSkipFlag, indicates that the secondary transform is performed.

[0100] Note that, instead of the above-mentioned equation (21), the following equation (22) or equation (23) may be used: When equation (23) is used, the quantization process of the secondary transform coefficients may be omitted.

[0101] StSkipFlag = ( numSigInSBK_P <= numSigInSBK_S && numSigInSBK_S <= TH ) ? 1 : 0 ···(twenty two) StSkipFlag = ( numSigInSBK_P <= TH ) ? 1 : 0 ···(twenty three)

[0102] The non-zero coefficient number determination unit 147 supplies the derived secondary transform skip flag StSkipFlag to the switch 148 .

[0103] The switch 148 receives the primary transform coefficient Coeff_P, the secondary transform coefficient Coeff, and the secondary transform skip flag StSkipFlag for each sub-block. The switch 148 controls skipping of the secondary transform in accordance with the secondary transform skip flag StSkipFlag supplied from the non-zero coefficient number determination unit 147.

[0104] For example, when the value of the secondary transform skip flag StSkipFlag is 0, that is, when the secondary transform skip StSkipFlag indicates that the secondary transform is to be executed, the switch 148 executes the secondary transform. That is, the switch 148 supplies the secondary transform coefficient Coeff supplied from the matrixing unit 144 to the quantization unit 113. Also, for example, when the value of the secondary transform skip flag StSkipFlag is 1, that is, when the secondary transform skip StSkipFlag indicates that the secondary transform is to be skipped, the switch 148 skips the secondary transform. That is, the switch 148 supplies the primary transform coefficient Coeff_P supplied from the primary transform unit 131 to the quantization unit 113 as the secondary transform coefficient Coeff.

[0105] The switch 148 can also control the skipping of the secondary transform based on the secondary transform identifier st_idx. For example, when the secondary transform identifier st_idx is 0 (indicating the skipping of the secondary transform), the switch 148 skips the secondary transform regardless of the value of the secondary transform skip flag StSkipFlag. That is, the switch 148 supplies the primary transform coefficient Coeff_P supplied from the primary transform unit 131 to the quantization unit 113 as the secondary transform coefficient Coeff. Also, for example, when the secondary transform identifier st_idx is greater than 0 (indicating the execution of the secondary transform), the switch 148 controls the secondary transform as described above by referring to the secondary transform skip flag StSkipFlag.

[0106] As described above, the nonzero coefficient number determination unit 147 sets the secondary transform skip flag StSkipFlag based on the number of nonzero coefficients for each sub-block, and the switch 148 controls skipping of the secondary transform based on the secondary transform skip flag StSkipFlag. In this way, it becomes possible to skip the secondary transform for sub-blocks with sparse nonzero coefficients, thereby suppressing a decrease in energy compaction and suppressing a decrease in coding efficiency.

[0107] <Image encoding process flow> Next, a description will be given of an example of the flow of each process executed by the image encoding device 100. First, a description will be given of an example of the flow of an image encoding process with reference to the flowchart in FIG.

[0108] When the image encoding process is started, in step S101, the control unit 101 performs an encoding control process, and performs block division, encoding parameter setting, and the like.

[0109] In step S102, the prediction unit 119 performs a prediction process to generate a predicted image etc. of an optimal prediction mode. For example, in this prediction process, the prediction unit 119 performs intra prediction to generate a predicted image etc. of an optimal intra prediction mode, performs inter prediction to generate a predicted image etc. of an optimal inter prediction mode, and selects an optimal prediction mode from among them based on a cost function value etc.

[0110] In step S103, the calculation unit 111 calculates the difference between the input image and the prediction image of the optimal mode selected by the prediction process in step S102. That is, the calculation unit 111 generates a prediction residual D between the input image and the prediction image. The prediction residual D thus obtained has a reduced data amount compared to the original image data. Therefore, the data amount can be compressed compared to the case where the image is encoded as it is.

[0111] In step S104, the conversion unit 112 performs conversion processing on the prediction residuals D generated in the processing of step S103 to derive conversion coefficients Coeff. Details of the processing of step S104 will be described later.

[0112] In step S105, the quantization unit 113 quantizes the transform coefficient Coeff obtained by the process of step S104 by using the quantization parameter calculated by the control unit 101, etc., to derive the quantized transform coefficient level level.

[0113] In step S106, the inverse quantization unit 115 inverse quantizes the quantized transform coefficient level generated by the process of step S105 with characteristics corresponding to the quantization characteristics of step S105, to derive the transform coefficient Coeff_IQ.

[0114] In step S107, the inverse transform unit 116 inversely transforms the transform coefficient Coeff_IQ obtained by the process of step S106 by a method corresponding to the transform process of step S104, and derives a prediction residual D'. Note that this inverse transform process is the inverse process of the transform process of step S104, and is executed in the same manner as the inverse transform process executed in the image decoding process described later. Therefore, this inverse transform process will be described in the description of the decoding side.

[0115] In step S108, the calculation unit 117 generates a locally decoded image by adding the prediction image obtained by the prediction process in step S102 to the prediction residual D' derived in the process in step S107.

[0116] In step S109, the frame memory 118 stores the locally decoded image obtained by the process in step S108.

[0117] In step S110, the encoding unit 114 encodes the quantized transform coefficient level LEVEL obtained by the process of step S105. For example, the encoding unit 114 encodes the quantized transform coefficient level LEVEL, which is information related to the image, by arithmetic encoding or the like to generate encoded data. At this time, the encoding unit 114 also encodes various encoding parameters (header information HInfo, prediction mode information PInfo, transformation information TInfo). Furthermore, the encoding unit 114 derives residual information RInfo from the quantized transform coefficient level LEVEL and encodes the residual information RInfo. The encoding unit 114 compiles the encoded data of the various information thus generated, and outputs it to the outside of the image encoding device 100 as a bit stream. This bit stream is transmitted to the decoding side, for example, via a transmission path or a recording medium.

[0118] When the process of step S110 ends, the image encoding process ends.

[0119] The processing units of these processes are arbitrary and do not have to be the same as each other. Therefore, the processing of each step can be executed in parallel with the processing of other steps, or the processing order can be changed as appropriate.

[0120] <Conversion process flow> Next, an example of the flow of the conversion process executed in step S104 in FIG. 11 will be described with reference to the flowchart in FIG.

[0121] When the transform process starts, in step S121, the primary transform unit 131 performs primary transform on the prediction residual D based on the primary transform identifier pt_idx, and derives the primary transform coefficient Coeff_P.

[0122] In step S122, the secondary conversion unit 132 (switch 148) determines whether the secondary conversion identifier st_idx applies the secondary conversion (st_idx>0). If it is determined that the secondary conversion identifier st_idx is 0 (indicating skipping of the secondary conversion), the secondary conversion (processing of steps S123 to S134) is skipped, the conversion process ends, and the process returns to FIG. 11. That is, the secondary conversion unit 132 (switch 148) supplies the primary conversion coefficient Coeff_P to the quantization unit 113 as the conversion coefficient Coeff.

[0123] Also, if it is determined in step S122 that the secondary transformation identifier st_idx is greater than 0 (indicating execution of a secondary transformation), the process proceeds to step S123.

[0124] In step S123, the secondary transform selection unit 145 selects the matrix R of the secondary transform specified by the secondary transform identifier st_idx.

[0125] In step S124, the secondary transform unit 132 divides the transform block to be processed into sub-blocks, and selects unprocessed sub-blocks.

[0126] In step S125, the rasterizer 141 converts the primary transform coefficients Coeff_P into a one-dimensional vector X based on the scan method specified by the scan identifier scanIdx. 1d Convert to.

[0127] In step S126, the matrix calculation unit 142 calculates a one-dimensional vector X 1d and the secondary transformation matrix R to obtain the one-dimensional vector Y 1d Request.

[0128] In step S127, the scaling unit 143 calculates the one-dimensional vector Y 1d Normalize the norm of the one-dimensional vector Z 1d Request.

[0129] In step S128, the matrix generator 144 generates a one-dimensional vector Z 1d is converted into a 4×4 matrix to obtain the secondary transform coefficient Coeff of the sub-block to be processed.

[0130] In step S129, the quantization unit 146 quantizes each of the primary transform coefficient Coeff_P and the secondary transform coefficient Coeff with reference to the quantization parameter qp and the quantization matrix scaling_matrix to derive a quantized primary transform coefficient level_P and a quantized secondary transform coefficient level_S.

[0131] In step S130, the non-zero coefficient number determination unit 147 derives the secondary transform skip flag StSkipFlag for each sub-block based on the quantized primary transform coefficients level_P, the quantized secondary transform coefficients level_S, and the threshold value TH as described above.

[0132] In step S131, the switch 148 determines whether or not the secondary conversion skip flag StSkipfFlag derived in step S130 indicates skipping of the secondary conversion. If it indicates execution of the secondary conversion, that is, if the value of the secondary conversion skip flag StSkipFlag is 0, the process proceeds to step S132.

[0133] In step S132, the switch 148 outputs the secondary transform coefficient Coeff obtained by the process of step S128 (supplies it to the quantization unit 113). When the process of step S132 ends, the process proceeds to step S134.

[0134] Also, in step S131, if the secondary conversion skip flag StSkipFlag is set to 1, indicating that the secondary conversion is to be skipped, the process proceeds to step S133.

[0135] In step S133, the switch 148 outputs the primary transform coefficient Coeff_P obtained by the process of step S121 as the secondary transform coefficient Coeff (supplies it to the quantization unit 113). When the process of step S133 ends, the process proceeds to step S134.

[0136] In step S134, the secondary conversion unit 132 determines whether all sub-blocks of the target conversion block have been processed. If it is determined that an unprocessed sub-block exists, the process returns to step S124, and the subsequent processes are repeated. That is, each process (secondary conversion) of steps S124 to S134 is executed for each sub-block of the target conversion block. If it is determined in step S134 that all sub-blocks have been processed (secondary conversion has been executed or skipped for all sub-blocks), the conversion process ends, and the process returns to FIG. 11.

[0137] In addition, the conversion process may change the processing order of each step or the content of the process to the extent possible. For example, if it is determined in step S122 that the secondary conversion identifier st_idx=0, a 16×16 unit matrix may be selected as the matrix R of the secondary conversion, and the processes of steps S124 to S134 may be executed.

[0138] By performing each process as described above, it is possible to control the skipping (execution) of secondary transform in sub-block units. Therefore, it is possible to suppress the decrease in energy compaction for residual signals with sparse non-zero coefficients. In other words, it is possible to suppress the decrease in coding efficiency. In other words, it is possible to suppress the increase in the load of coding (secondary transform and inverse secondary transform) while suppressing the decrease in coding efficiency.

[0139] <Image Decoding Device> Next, the decoding of the coded data coded as above will be described. Fig. 13 is a block diagram showing an example of the configuration of an image decoding device, which is one aspect of an image processing device to which the present technology is applied. The image decoding device 200 shown in Fig. 13 is an image decoding device corresponding to the image coding device 100 of Fig. 7, and decodes coded data (bit stream) generated by the image coding device 100 using a decoding method corresponding to the coding method by the image coding device 100. For example, the image decoding device 200 implements a technology proposed in HEVC or a technology proposed in JVET.

[0140] Note that Fig. 13 shows the main processing units, data flows, etc., and is not limited to all that are shown in Fig. 13. That is, in the image decoding device 200, there may be processing units that are not shown as blocks in Fig. 13, and there may be processing and data flows that are not shown as arrows or the like in Fig. 13.

[0141] 13, the image decoding device 200 includes a decoding unit 211, an inverse quantization unit 212, an inverse transform unit 213, a calculation unit 214, a frame memory 215, and a prediction unit 216. The image decoding device 200 is supplied with encoded data generated by the image encoding device 100 or the like as, for example, a bit stream or the like via, for example, a transmission medium or a recording medium.

[0142] The decoding unit 211 decodes the supplied coded data by a predetermined decoding method corresponding to the coding method. For example, the decoding unit 211 decodes the syntax value of each syntax element from the bit string of the supplied coded data (bit stream) according to the definition of the syntax table. The syntax elements include, for example, header information Hinfo, prediction mode information Pinfo, transformation information Tinfo, residual information Rinfo, and other information.

[0143] The decoding unit 211 derives the quantization transform coefficient level level of each coefficient position in each transform block by referring to the residual information Rinfo. The decoding unit 211 supplies the prediction mode information Pinfo, the quantization transform coefficient level level, and the transform information Tinfo obtained by decoding to each block. For example, the decoding unit 211 supplies the prediction mode information Pinfo to the prediction unit 216, supplies the quantization transform coefficient level level to the inverse quantization unit 212, and supplies the transform information Tinfo to the inverse quantization unit 212 and the inverse transform unit 213.

[0144] The inverse quantization unit 212 scales (inverse quantizes) the value of the quantized transform coefficient level level supplied from the decoding unit 211 based on the transform information Tinfo supplied from the decoding unit 211, and derives the transform coefficient Coeff_IQ after inverse quantization. This inverse quantization is the inverse process of the quantization performed by the quantization unit 113 (FIG. 7) of the image encoding device 100. Note that the inverse quantization unit 115 (FIG. 7) performs inverse quantization similar to that performed by the inverse quantization unit 212. The inverse quantization unit 212 supplies the obtained transform coefficient Coeff_IQ to the inverse transform unit 213.

[0145] The inverse transform unit 213 inversely transforms the transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 based on the transform information Tinfo supplied from the decoding unit 211, and derives a prediction residual D'. This inverse transform is the inverse process of the transform process performed by the transform unit 112 (FIG. 7) of the image encoding device 100. Note that the inverse transform unit 116 performs the same inverse transform as the inverse transform unit 213. Details of this inverse transform will be described later. The inverse transform unit 213 supplies the obtained prediction residual D' to the calculation unit 214.

[0146] The calculation unit 214 adds the prediction residual D' supplied from the inverse transform unit 213 to a prediction image P (prediction signal) corresponding to the prediction residual D', as shown in the following equation (24), to derive a local decoded image Rec. The calculation unit 214 reconstructs a decoded image for each picture using the obtained local decoded image Rec, and outputs the obtained decoded image to the outside of the image decoding device 200. The calculation unit 214 also supplies the local decoded image Rec to the frame memory 215.

[0147] Rec=D'+P ···(twenty four)

[0148] The frame memory 215 reconstructs a decoded image for each picture unit using the local decoded image Rec supplied from the calculation unit 214, and stores the reconstructed image in a buffer within the frame memory 215. The frame memory 215 reads out a decoded image specified by prediction mode information Pinfo of the prediction unit 216 from the buffer as a reference image, and supplies the image to the prediction unit 216. The frame memory 215 may also store header information Hinfo, prediction mode information Pinfo, conversion information Tinfo, and the like related to generation of the decoded image in a buffer within the frame memory 215.

[0149] The prediction unit 216 obtains a decoded image stored in the frame memory 215 as a reference image, which is specified by the prediction mode information PInfo supplied from the decoding unit 211, and generates a predicted image P by using the reference image and the prediction method specified by the prediction mode information Pinfo. The prediction unit 216 supplies the generated predicted image P to the calculation unit 214.

[0150] Such an image decoding device 200 includes a control unit that controls, for each sub-block, skipping of inverse transform processing for transform coefficients that, when inverse transformed, result in a prediction residual that is the difference between an image and a predicted image of that image, based on the number of non-zero coefficients of the transform coefficients for each sub-block. That is, the inverse transform unit 213 controls, for each sub-block, skipping of inverse transform processing for transform coefficients that, when inverse transformed, result in a prediction residual that is the difference between an image and a predicted image of that image, based on the number of non-zero coefficients of the transform coefficients for each sub-block.

[0151] <Inverse conversion section> Fig. 14 is a block diagram showing an example of the main configuration of inverse conversion unit 213 in Fig. 13. As shown in Fig. 14, inverse conversion unit 213 has an inverse secondary conversion unit 231 and an inverse primary conversion unit 232.

[0152] The inverse secondary transform unit 231 converts the transform coefficient Coeff_IQ supplied from the inverse quantization unit 212, i.e., the transform coefficient Coeff_IQ (also referred to as the secondary transform coefficient) obtained by decoding and inverse quantizing the encoded data, into a one-dimensional vector, performs a matrix operation on the one-dimensional vector, scales the one-dimensional vector on which the matrix operation has been performed, and performs an inverse secondary transform, which is a conversion process that converts the scaled one-dimensional vector into a matrix.

[0153] The inverse secondary transform unit 231 performs an inverse secondary transform on the secondary transform coefficient Coeff_IQ based on a secondary transform identifier st_idx, which is information on the content of the secondary transform, and a scan identifier scanIdx, which is information on a scan method of the transform coefficient, to derive a transform coefficient Coeff_IS (also referred to as a primary transform coefficient) after the inverse secondary transform. That is, the inverse secondary transform unit 231 transforms the secondary transform coefficient Coeff_IQ into a primary transform coefficient Coeff_IS. The inverse secondary transform unit 231 supplies the primary transform coefficient Coeff_IS to the inverse primary transform unit 232.

[0154] Note that the inverse secondary transform unit 231 can also skip (omit) the inverse secondary transform and supply the secondary transform coefficients Coeff_IQ as the primary transform coefficients Coeff_IS to the inverse primary transform unit 232. Details of the inverse secondary transform unit 231 will be described later.

[0155] The inverse primary transform unit 232 performs an inverse primary transform such as an inverse orthogonal transform on the primary transform coefficients Coeff_IS supplied from the inverse secondary transform unit 231, and derives prediction residuals D'. That is, the inverse primary transform unit 232 transforms the primary transform coefficients Coeff_IS into prediction residuals D'. The inverse primary transform unit 232 supplies the derived prediction residuals D' to the calculation unit 214.

[0156] 14, the inverse secondary transform unit 231 has a nonzero coefficient number determination unit 241, a switch 242, a rasterization unit 243, a matrix operation unit 244, a scaling unit 245, a matrix generation unit 246, and an inverse secondary transform selection unit 247.

[0157] The non-zero coefficient number determination unit 241 receives the secondary transform coefficient Coeff_IQ for each sub-block as input. The non-zero coefficient number determination unit 241 derives the number of non-zero coefficients numSigInSBK (also referred to as the number of non-zero coefficients of the transform coefficients) in the sub-block by referring to the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212, for example, as shown in the following formula (25). Note that in formula (25), (i,j) in the secondary transform coefficient Coeff_IQ(i,j) represents coordinates in the sub-block, where i=0...3, j=0...3. The operator abs(X) is an operator that returns the absolute value of the input value X.

[0158] numSigInSBK = Σ{abs(Coeff_IQ(i,j))>0 ? 1 : 0} ···(twenty five)

[0159] Note that the number of non-zero coefficients numSigInSBK of the transform coefficients may be derived based on the non-zero coefficient presence / absence flag sig_coeff_flag without referring to the secondary transform coefficient Coeff_IQ.

[0160] Then, the nonzero coefficient number determination unit 241 determines whether the number of nonzero coefficients numSigInSBK of the transform coefficients is equal to or less than a predetermined threshold value TH, and derives the secondary transform skip flag StSkipFlag based on the determination result, as shown in the following equation (26).

[0161] StSkipFlag = numSigInSBK <= TH ? 1 : 0 (26)

[0162] This threshold value TH may be, for example, 2 or any value from 0 to 16. Furthermore, the threshold value TH may be notified from the outside (for example, the encoding side or the control side) in header information such as the VPS / SPS / PPS / slice header SH. Furthermore, the threshold value TH may be determined in advance between the encoding side (for example, the image encoding device 100) and the decoding side (for example, the image decoding device 200 described later), and notification from the encoding side to the decoding side (transmission of the threshold value TH from the encoding side to the decoding side) may be omitted.

[0163] In equation (26), for example, when the value of the number of non-zero coefficients of the transform coefficients, numSigInSBK, is equal to or less than the threshold value TH, the value of the secondary transform skip flag StSkipFlag is set to 1. Also, for example, when the value of the number of non-zero coefficients of the transform coefficients, numSigInSBK, is greater than the threshold value TH, the value of the secondary transform skip flag StSkipFlag is set to 0.

[0164] The non-zero coefficient number determination unit 241 supplies the derived StSkipFlag to the switch 242 .

[0165] The switch 242 receives the secondary transform coefficient Coeff_IQ for each sub-block and the secondary transform skip flag StSkipfFlag as input. The switch 242 controls skipping of the inverse secondary transform in accordance with the secondary transform skip flag StSkipFlag supplied from the non-zero coefficient number determination unit 241.

[0166] For example, when the value of the secondary transform skip flag StSkipFlag is 0, that is, when the secondary transform skip StSkipFlag indicates the execution of the secondary transform, the switch 242 executes the secondary transform. That is, the switch 242 supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the rasterization unit 243. Also, for example, when the value of the secondary transform skip flag StSkipFlag is 1, that is, when the secondary transform skip StSkipFlag indicates the skip of the inverse secondary transform, the switch 242 skips the inverse secondary transform. That is, the switch 242 supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the inverse primary transform unit 232 as the primary transform coefficient Coeff_IS.

[0167] The rasterizer 243 converts the transform coefficients Coeff_IQ supplied from the switch 242 into a one-dimensional vector X for each subblock (4×4 subblock) based on the transform coefficient scanning method specified by the scan identifier scanIdx supplied from the decoder 211. 1d The rasterization unit 243 converts the obtained one-dimensional vector X 1d is supplied to the matrix calculation unit 244.

[0168] The inverse secondary transform selection unit 247 selects a matrix IR (=R T ) from an internal memory (not shown) of the inverse secondary transform selection unit 247, and supplies it to the matrix calculation unit 244. For example, when the secondary transform identifier st_idx has a value, the inverse secondary transform selection unit 247 selects the transposed matrix R T and supplies it to the matrix calculation unit 244.

[0169] Note that the inverse secondary transform selection unit 247 selects a matrix IR (=R T ) may be selected. Also, the inverse transform IR may be selected according to the motion prediction information MVinfo and the secondary transform identifier st_idx, instead of the intra prediction mode information IPinfo.

[0170] The matrix calculation unit 244 calculates a one-dimensional vector X 1d and the matrix IR of the inverse secondary transformation (=R T ) matrix, the matrix operation shown in the following equation (27) is performed, and the result is a one-dimensional vector Y 1d Here, the operator "·" represents an operation of performing an inner product (matrix multiplication) between matrices, and the operator "T" represents an operation of transposing a matrix. The matrix calculation unit 244 derives the derived one-dimensional vector Y 1d is supplied to the scaling unit 245.

[0171] Y 1d T =IR·X 1d T =R T X 1d T (27)

[0172] The scaling unit 245 calculates the one-dimensional vector Y 1d In order to normalize the norm of , we perform a bit shift operation of N (N is a natural number) bits as shown in the following equation (28) on the one-dimensional vector Y 1d Then, we perform the bit-shift on all elements of the one-dimensional vector Z 1d Request.

[0173] Z 1d =(Y 1d )>>N (28)

[0174] As shown in the following equation (29), before the N-bit shift operation, the value 1<<(N-1) is added to the one-dimensional vector Z 1d In addition, in equation (29), vector E is a one-dimensional vector in which all elements have a value of 1.

[0175] Z 1d =(Y 1d +((N-1)<<1)·E)>>N (29)

[0176] For example, the matrix IR of the inverse secondary transformation (=R T ) is a transposed matrix of the matrix R of the secondary transformation shown in FIG. 10 and is an 8-bit scaled matrix, so the value of N used for norm normalization in the scaling unit 245 is 8. In general, the matrix IR (=R T ) is scaled by N bits, the bit shift amount of norm normalization is N bits. The scaling unit 245 scales the one-dimensional norm-normalized vector Z 1d is supplied to the matrix generator 246.

[0177] The matrix generator 246 generates a norm-normalized one-dimensional vector Z 1d and the scan identifier scanIdx is input, and a one-dimensional vector Z 1d into primary transform coefficients Coeff_IS of a 4 × 4 matrix. The matrix generator 246 supplies the obtained primary transform coefficients Coeff_IS to the inverse primary transform unit 232.

[0178] As described above, the nonzero coefficient number determination unit 241 sets the secondary transform skip flag StSkipFlag based on the number of nonzero coefficients for each sub-block, and the switch 242 controls the skipping of the secondary transform based on the secondary transform skip flag StSkipFlag. In this way, it becomes possible to skip the secondary transform for sub-blocks with sparse nonzero coefficients, thereby suppressing a decrease in energy compaction and suppressing a decrease in coding efficiency.

[0179] <Flow of image decoding process> Next, a description will be given of the flow of each process executed by the above-described image decoding device 200. First, an example of the flow of an image decoding process will be described with reference to the flowchart in FIG.

[0180] When the image decoding process starts, in step S201, the decoding unit 211 decodes the bitstream (encoded data) supplied to the image decoding device 200, and obtains information such as header information Hinfo, prediction mode information Pinfo, transformation information Tinfo, residual information Rinfo, and quantized transformation coefficient level level.

[0181] In step S202, the inverse quantization unit 212 inverse quantizes the quantized transform coefficient level obtained by the process of step S201 to derive the transform coefficient Coeff_IQ. This inverse quantization is an inverse process of the quantization performed in step S105 (FIG. 11) of the image encoding process, and is the same process as the inverse quantization performed in step S106 (FIG. 11) of the image encoding process.

[0182] In step S203, the inverse transform unit 213 inversely transforms the transform coefficient Coeff_IQ obtained by the process of step S202 to derive a prediction residual D'. This inverse transform is the inverse process of the transform process performed in step S104 (FIG. 11) of the image encoding process, and is the same process as the inverse transform performed in step S107 (FIG. 11) of the image encoding process.

[0183] In step S204, the prediction unit 216 performs prediction in the same prediction mode as that used in encoding, based on the prediction mode information PInfo, and generates a predicted image.

[0184] In step S205, the calculation unit 214 adds the prediction image obtained in the process of step S204 to the prediction residual D' obtained in the process of step S203 to obtain a decoded image.

[0185] When the process of step S205 ends, the image decoding process ends.

[0186] <Flow of reverse conversion process> Next, an example of the flow of the inverse conversion process executed in step S203 in FIG. 15 will be described with reference to the flowchart in FIG.

[0187] When the inverse transformation process is started, in step S221, the inverse secondary transformation unit 231 (switch 242) determines whether the secondary transformation identifier st_idx applies the inverse secondary transformation (st_idx>0). If it is determined that the secondary transformation identifier st_idx is 0 (the secondary transformation identifier st_idx indicates skipping the inverse secondary transformation), the inverse secondary transformation (the processing of steps S222 to S230) is skipped, and the processing proceeds to step S231. That is, the inverse secondary transformation unit 231 (switch 242) supplies the secondary transformation coefficient Coeff_IQ obtained by the processing of step S202 in FIG. 15 to the inverse primary transformation unit 232 as the primary transformation coefficient Coeff_IS.

[0188] Also, if it is determined in step S221 that the secondary transformation identifier st_idx is greater than 0 (the secondary transformation identifier st_idx indicates that an inverse secondary transformation is to be performed), the process proceeds to step S222.

[0189] In step S222, the inverse secondary transform selection unit 247 selects the matrix IR of the inverse secondary transform specified by the secondary transform identifier st_idx.

[0190] In step S223, the inverse secondary transform unit 231 selects an unprocessed sub-block included in the transform block to be processed.

[0191] In step S224, the non-zero coefficient number determination unit 241 derives the number of non-zero coefficients numSigInSBK of the transform coefficients based on the secondary transform coefficient Coeff_IQ of each sub-block obtained by the processing of step S202 in FIG. 15, as described above, and further derives the secondary transform skip flag StSkipFlag using the number of non-zero coefficients numSigInSBK of the transform coefficients and a threshold value TH.

[0192] In step S225, the switch 242 determines whether the secondary transform skip flag StSkipFlag obtained by the process of step S224 indicates skipping of the inverse secondary transform. If it is determined that the secondary transform skip flag StSkipFlag indicates execution of the secondary transform, that is, the value of the secondary transform skip flag StSkipFlag is 0, the process proceeds to step S226.

[0193] In step S226, the rasterizer 243 converts the secondary transform coefficients Coeff_IQ obtained by the process in step S202 of FIG. 15 into a one-dimensional vector X 1d Convert to.

[0194] In step S227, the matrix calculation unit 244 calculates the one-dimensional vector X 1d and the matrix IR of the inverse secondary transformation obtained by the processing in step S222 to obtain a one-dimensional vector Y 1d Request.

[0195] In step S228, the scaling unit 245 converts the one-dimensional vector Y 1d Normalize the norm of the one-dimensional vector Z 1d Request.

[0196] In step S229, the matrix generator 246 converts the one-dimensional vector Z 1d into a 4×4 matrix to obtain the primary transform coefficient Coeff_IS of the sub-block to be processed. When the process of step S229 ends, the process proceeds to step S230. Also, in step S225, if the inverse secondary transform is to be skipped, that is, if the value of the secondary transform skip flag StSkipFlag is 1, the process proceeds to step S230.

[0197] In step S230, the inverse secondary transform unit 231 determines whether all sub-blocks of the transform block to be processed have been processed. If it is determined that an unprocessed sub-block exists, the process returns to step S223, and the subsequent processes are repeated. That is, each process (inverse secondary transform) of steps S223 to S230 is executed for each sub-block of the transform block to be processed. If it is determined in step S230 that all sub-blocks have been processed (the inverse secondary transform of all sub-blocks has been executed or skipped), the process proceeds to step S231.

[0198] In step S231, the inverse primary transform unit 232 performs an inverse primary transform on the primary transform coefficient Coeff_IS based on the primary transform identifier pt_idx to derive a prediction residual D′. This prediction residual D′ is supplied to the calculation unit 214.

[0199] When the process of step S231 ends, the inverse conversion process ends and the process returns to FIG.

[0200] In addition, the above inverse transformation process may be changed in the order of the steps or the content of the process may be changed within a feasible range. For example, if it is determined in step S221 that the secondary transformation identifier st_idx is 0, a 16×16 unit matrix may be selected as the matrix IR of the inverse secondary transformation, and the processes of steps S222 to S230 may be executed.

[0201] By executing each process as described above, it is possible to control the skip (execution) of the inverse secondary transform in units of subblocks. Therefore, it is possible to suppress the decrease in energy compaction for a residual signal with sparse non-zero coefficients. That is, it is possible to suppress the decrease in coding efficiency. In other words, it is possible to suppress the increase in the load of decoding (inverse secondary transform) while suppressing the decrease in coding efficiency.

[0202] In the above, it has been described that the skip of the (inverse) secondary transform is controlled for each sub-block, but the control of the skip for each sub-block can be applied not only to the (inverse) secondary transform but also to any transform process.

[0203] <2. Second embodiment> <Selecting secondary transformations using scanning methods> By the way, in both the methods described in Non-Patent Document 1 and Non-Patent Document 2, the secondary transform had matrices of the secondary transform as many as the number of classes of the intra prediction mode and the number of secondary transforms corresponding to each class. Therefore, a huge memory size was required to hold the matrices of the secondary transform. For example, in the method described in Non-Patent Document 1, the number of classes of the intra prediction mode was 12, and the number of secondary transforms for each class was 3, so there were 12*3 = 36 matrices. In addition, in the method described in Non-Patent Document 2, the number of classes of the intra prediction mode was 35, and the number of secondary transforms for each class was 5, so there were 35*5 = 175 matrices.

[0204] Therefore, for example, when each matrix element is held with 9-bit accuracy, the method described in Non-Patent Document 1 requires a memory size as shown in the following formula (30). Also, the method described in Non-Patent Document 2 requires a memory size as shown in the following formula (31).

[0205] Memory size = 9bit * 16*16 * 36 = 829944 (bits) = 10368 (bytes) = 10.125 (KB) (30) Memory size = 9bit * 16*16 * 175 = 403200 (bits) = 50400 (bytes) = 49.21875 (KB) (31)

[0206] In this way, if the amount of data of the (inverse) secondary transform matrix to be stored increases, the load of encoding and decoding may increase, and the required memory size may also increase, resulting in an increase in costs.

[0207] Therefore, the matrix R of the secondary transform and the matrix IR of the inverse secondary transform are set based on the secondary transform identifier and the scan identifier. That is, focusing on the correspondence between the direction of the intra prediction mode and the scan method, the class classification of the intra prediction mode is replaced with the scan identifier (scanIdx), which is information related to the scan method. Figure 17 shows an example of the correspondence relationship between the intra prediction mode and the scan identifier (scanIdx).

[0208] There are five types of secondary transforms corresponding to each value of the scan identifier (scanIdx). This is because they are assigned to each secondary transform identifier (st_idx). Therefore, in this case, the total number of secondary transforms is 3×5=15. In other words, the number of secondary transforms can be reduced compared to the methods described in Non-Patent Document 1 and Non-Patent Document 2 above. In the case of 9-bit accuracy, the memory size required to hold all the secondary transforms is given by the following equation (32).

[0209] Memory size = 9bit * 16 * 16 = 15 = 34560 (bits) = 4320 (bytes) = 4.21875 (KB) (32)

[0210] Therefore, compared with the above-mentioned formulas (30) and (31) (the methods described in Non-Patent Documents 1 and 2), the amount of data of the secondary transform matrix can be significantly reduced. This makes it possible to suppress an increase in the encoding / decoding load and an increase in the memory size required to hold the (inverse) secondary transform matrix.

[0211] <Conversion section> In this case, the image coding device 100 has a configuration basically similar to that of the first embodiment. However, the image coding device 100 in this case includes a setting unit that sets a matrix of a conversion process for a conversion coefficient based on the content of the conversion process and a scanning method, a rasterizing unit that converts a conversion coefficient obtained by converting a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector, a matrix operation unit that performs a matrix operation on the one-dimensional vector using the matrix set by the setting unit, a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed, and a matrix conversion unit that converts the scaled one-dimensional vector into a matrix. That is, the conversion unit 112 in this case sets a matrix of a conversion process for a conversion coefficient based on the content of the conversion process and a scanning method, converts a conversion coefficient obtained by converting a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector, performs a matrix operation on the one-dimensional vector using the set matrix, scales the one-dimensional vector on which the matrix operation has been performed, and converts the scaled one-dimensional vector into a matrix.

[0212] Fig. 18 is a block diagram showing an example of the main configuration of the conversion unit 112 in this case. As shown in Fig. 18, the conversion unit 112 in this case also has a configuration basically similar to that in the first embodiment (Fig. 8). However, the secondary conversion unit 132 in this case can omit the quantization unit 146 to the switch 148, and has a secondary conversion selection unit 301 instead of the secondary conversion selection unit 145.

[0213] The secondary transform selection unit 301 receives the secondary transform identifier st_idx and the scan identifier scanIdx as input. The secondary transform selection unit 301 selects a matrix R of the secondary transform based on the input secondary transform identifier st_idx and the scan identifier scanIdx, and supplies the matrix R to the matrix calculation unit 142.

[0214] <Secondary conversion selection section> 19 is a block diagram showing an example of the main configuration of the secondary transform selection unit 301. As shown in FIG.

[0215] The secondary transform derivation unit 311 receives the secondary transform identifier st_idx and the scan identifier scanIdx. Based on the input secondary transform identifier st_idx and the scan identifier scanIdx, the secondary transform derivation unit 311 reads out the corresponding secondary transform matrix R from the secondary transform matrix table LIST_FwdST[][] stored in the secondary transform holding unit 312 as shown in the following formula (33), and outputs it to the outside. Here, the inverse secondary transform matrix table LIST_FwdST[][] stores the secondary transform matrix R corresponding to each scan identifier scanIdx and secondary transform identifier st_idx.

[0216] R = LIST_FwdST[ scanIdx ][ st_idx ] (33)

[0217] The secondary transformation holding unit 312 holds a secondary transformation matrix table LIST_FwdST[][] in which a matrix R of a secondary transformation corresponding to each scan identifier scanIdx and each secondary transformation identifier st_idx is stored. Based on an instruction from the secondary transformation derivation unit 311, the secondary transformation holding unit 312 supplies the corresponding matrix R of the secondary transformation to the secondary transformation derivation unit 311.

[0218] <Conversion process flow> Next, an example of the flow of each process executed by the image coding device 100 will be described. In this case, the image coding device 100 performs the image coding process basically in the same manner as in the first embodiment (FIG. 11). An example of the flow of the conversion process in this case will be described with reference to the flowchart in FIG.

[0219] When the conversion process starts, the processes of steps S301 and S302 are executed in the same manner as the processes of steps S121 and S122 in Fig. 12. That is, when it is determined that the secondary conversion identifier st_idx is 0 (indicating skipping of the secondary conversion), the secondary conversion (the processes of steps S303 to S309) are skipped, the conversion process ends, and the process returns to Fig. 11. That is, the secondary conversion unit 132 supplies the primary conversion coefficient Coeff_P to the quantization unit 113 as the conversion coefficient Coeff.

[0220] Also, if it is determined in step S302 that the secondary transformation identifier st_idx is greater than 0 (indicating execution of a secondary transformation), the process proceeds to step S303.

[0221] In step S303, the secondary transform selection unit 301 selects a matrix R of a secondary transform corresponding to the secondary transform identifier st_idx and the scan identifier scanIdx. That is, the secondary transform derivation unit 311 reads out and selects the matrix R of a secondary transform corresponding to the secondary transform identifier st_idx and the scan identifier scanIdx from the secondary transform matrix table held in the secondary transform holding unit 312.

[0222] The processes of steps S304 to S309 are executed in the same manner as the processes of steps S124 to S128 and step S134 in Fig. 12. That is, the processes of steps S304 to S309 are executed for each sub-block, thereby performing secondary conversion for each sub-block. Then, when it is determined in step S309 that all sub-blocks have been processed, the conversion process ends and the process returns to Fig. 11.

[0223] In addition, the conversion process may change the order of the steps or the content of the process to the extent possible. For example, if it is determined in step S302 that the secondary conversion identifier st_idx=0, a 16×16 unit matrix may be selected as the matrix R of the secondary conversion, and the processes of steps S304 to S309 may be executed.

[0224] By performing each process as described above, the matrix R of the secondary transform can be selected based on the secondary transform identifier st_idx and the scan identifier scanIdx. Therefore, the amount of data of the matrix of the secondary transform can be significantly reduced. This makes it possible to suppress an increase in the encoding load and an increase in the memory size required to hold the matrix of the secondary transform.

[0225] <Inverse conversion section> Next, the image decoding device 200 will be described. In this case, the image decoding device 200 has a configuration basically similar to that of the first embodiment. However, the image decoding device 200 in this case includes a setting unit that sets a matrix for an inverse transform process for a transform coefficient based on the content of the inverse transform process and a scanning method, a rasterizing unit that converts a transform coefficient that is obtained by inverse transform process to a one-dimensional vector, a matrix operation unit that performs a matrix operation on the one-dimensional vector using the matrix set by the setting unit, a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed, and a matrix conversion unit that converts the scaled one-dimensional vector into a matrix. That is, the inverse transform unit 213 sets a matrix for an inverse transform process for a transform coefficient based on the content of the inverse transform process and a scanning method, converts a transform coefficient that is obtained by inverse transform process to a one-dimensional vector, and performs a matrix operation on the one-dimensional vector using the set matrix, scales the one-dimensional vector on which the matrix operation has been performed, and converts the scaled one-dimensional vector into a matrix.

[0226] Fig. 21 is a block diagram showing an example of the main configuration of the inverse transform unit 213 in this case. As shown in Fig. 21, the inverse transform unit 213 in this case also has a configuration basically similar to that in the first embodiment (Fig. 14). However, the inverse secondary transform unit 231 in this case can omit the nonzero coefficient number determination unit 241 and the switch 242, and has an inverse secondary transform selection unit 321 instead of the inverse secondary transform selection unit 247.

[0227] The inverse secondary transform selection unit 321 receives the secondary transform identifier st_idx and the scan identifier scanIdx as input. The inverse secondary transform selection unit 321 selects a matrix IR for the inverse secondary transform based on the input secondary transform identifier st_idx and the scan identifier scanIdx, and supplies the matrix IR to the matrix calculation unit 244.

[0228] <Inverse secondary conversion selection section> 22 is a block diagram showing an example of the main configuration of the inverse secondary transform selection unit 321. As shown in FIG.

[0229] The inverse secondary transformation derivation unit 331 receives the secondary transformation identifier st_idx and the scan identifier scanIdx. Based on the input secondary transformation identifier st_idx and the scan identifier scanIdx, the inverse secondary transformation derivation unit 331 obtains a corresponding inverse secondary transformation matrix IR (=R T ) is read out as shown in the following formula (34) and output to the outside. Here, the inverse secondary transform matrix table LIST_InvST[][] stores the matrix IR of the inverse secondary transform corresponding to each scan identifier scanIdx and secondary transform identifier st_idx.

[0230] IR = LIST_InvST[ scanIdx ][ st_idx ] (34)

[0231] The inverse secondary transform holding unit 332 holds an inverse secondary transform matrix table LIST_InvST[][] in which a matrix IR of an inverse secondary transform corresponding to each scan identifier scanIdx and secondary transform identifier st_idx is stored. Based on an instruction from the inverse secondary transform derivation unit 331, the inverse secondary transform holding unit 332 holds a matrix IR (=R T ) is supplied to the inverse secondary transformation derivation unit 331.

[0232] <Flow of reverse conversion process> Next, an example of the flow of each process executed by the image decoding device 200 will be described. In this case, the image decoding device 200 performs the image decoding process basically similarly to the first embodiment (FIG. 15). An example of the flow of the inverse transform process in this case will be described with reference to the flowchart in FIG.

[0233] When the inverse transform process is started, in step S321, the inverse secondary transform unit 231 determines whether the secondary transform identifier st_idx applies the inverse secondary transform (st_idx>0). If it is determined that the secondary transform identifier st_idx is 0 (the secondary transform identifier st_idx indicates skipping the inverse secondary transform), the inverse secondary transform (the processes of steps S322 to S328) is skipped, and the process proceeds to step S329. That is, the inverse secondary transform unit 231 supplies the secondary transform coefficient Coeff_IQ obtained by the process of step S202 in FIG. 15 to the inverse primary transform unit 232 as the primary transform coefficient Coeff_IS.

[0234] Also, if it is determined in step S321 that the secondary transformation identifier st_idx is greater than 0 (the secondary transformation identifier st_idx indicates that an inverse secondary transformation is to be performed), the process proceeds to step S322.

[0235] In step S322, the inverse secondary transform selection unit 321 selects a matrix IR of an inverse secondary transform corresponding to the secondary transform identifier st_idx and the scan identifier scanIdx. That is, the inverse secondary transform derivation unit 331 reads out and selects the matrix IR of an inverse secondary transform corresponding to the secondary transform identifier st_idx and the scan identifier scanIdx from the inverse secondary transform matrix table held in the inverse secondary transform holding unit 332.

[0236] In step S323, the inverse secondary transform unit 231 selects an unprocessed sub-block included in the transform block to be processed.

[0237] The processes of steps S324 to S328 are executed in the same manner as the processes of steps S226 to S230 in Fig. 16. That is, the processes of steps S323 to S328 are executed for each sub-block, thereby performing secondary transformation for each sub-block. Then, if it is determined in step S328 that all sub-blocks have been processed, the process proceeds to step S329.

[0238] In step S329, the inverse primary transform unit 232 performs an inverse primary transform on the primary transform coefficients Coeff_IS based on the primary transform identifier pt_idx to derive prediction residuals D′. This prediction residual D′ is supplied to the calculation unit 214.

[0239] When the process of step S231 ends, the inverse conversion process ends and the process returns to FIG.

[0240] In addition, the above inverse transformation process may be changed in the order of the steps or the content of the process may be changed within a feasible range. For example, if it is determined in step S321 that the secondary transformation identifier st_idx is 0, a 16×16 unit matrix may be selected as the matrix IR of the inverse secondary transformation, and the processes of steps S323 to S328 may be executed.

[0241] By performing each process as described above, the matrix IR of the inverse secondary transform can be selected based on the secondary transform identifier st_idx and the scan identifier scanIdx. Therefore, the amount of data of the matrix of the inverse secondary transform can be significantly reduced. This makes it possible to suppress an increase in the load of encoding and decoding, and to suppress an increase in the memory size required to hold the matrix of the (inverse) secondary transform.

[0242] <3. Third embodiment> <Bandwidth Limit> Non-patent document 1 describes that when the transform block size is 64x64, an orthogonal transform of 1 or more is performed on the prediction residual, and then band limitation is performed to forcibly set high-frequency components other than the low-frequency components of the upper left 32x32 to 0, thereby reducing the computational complexity and implementation cost of the decoder.

[0243] 24 is a block diagram showing a main configuration example of a conversion unit that performs primary conversion, secondary conversion, and band limitation on a prediction residual D in the method described in Non-Patent Document 1. As shown in FIG. 24, the conversion unit 400 has a switch 401, a primary conversion unit 402, a secondary conversion unit 403, and a band limitation unit 404.

[0244] The switch 401 receives the transform skip flag ts_flag, the transform quantization bypass flag transquant_bypass_flag, and the prediction residual D. The transform skip flag ts_flag is information indicating whether or not to skip the (inverse) primary transform and the (inverse) secondary transform in the target data unit. For example, when the transform skip flag ts_flag is 1 (true), the (inverse) primary transform and the (inverse) secondary transform are skipped. When the transform skip flag ts_flag is 0 (false), the (inverse) primary transform and the (inverse) secondary transform are executed.

[0245] Also, the transform quantization bypass flag transquant_bypass_flag is information indicating whether or not to skip (bypass) the (inverse) primary transform, the (inverse) secondary transform, and the (inverse) quantization in the target data unit. For example, when the transform quantization bypass flag transquant_bypass _flag is 1 (true), the (inverse) primary transform, the (inverse) secondary transform, and the (inverse) quantization are bypassed. When the transform quantization bypass flag transquant_bypass _flag is 0 (false), the (inverse) primary transform, the (inverse) secondary transform, and the (inverse) quantization are not bypassed.

[0246] The switch 401 controls skipping of the primary transform and the secondary transform for the prediction residual D based on the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag.

[0247] Specifically, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 0, the switch 401 supplies the prediction residual D to the primary transform unit 402 to execute the primary transform and the secondary transform. On the other hand, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 401 supplies the prediction residual D to the band limiting unit 404 as the secondary transform coefficient Coeff to skip the primary transform and the secondary transform.

[0248] The primary transform unit 402 performs a primary transform on the prediction residual D based on the primary transform identifier pt_idx, similar to the primary transform unit 131 in Fig. 8, and derives a primary transform coefficient Coeff_P. The primary transform identifier pt_idx is an identifier indicating which (inverse) primary transform is to be applied to the vertical and horizontal (inverse) primary transforms in the target data unit (see, for example, JVET-B1001, 2.5.1 Adaptive multiple Core transform. In JEM2, it is also called emt_idx). The primary transform unit 402 supplies the primary transform coefficient Coeff_P to the secondary transform unit 403.

[0249] The secondary transform unit 403 performs secondary transform on the primary transform coefficient Coeff_P supplied from the primary transform unit 402 based on the secondary transform identifier st_idx using the method described in Non-Patent Document 1 to derive the secondary transform coefficient Coeff. The secondary transform unit 403 supplies the secondary transform coefficient Coeff to the band limiting unit 404.

[0250] When the block size TBSize of the transform block to be processed is 64×64, the band limiting unit 404 performs band limiting on the secondary transform coefficient Coeff supplied from the switch 401 or the secondary transform unit 403 so as to set high frequency components to zero, and derives the secondary transform coefficient Coeff' after band limiting. On the other hand, when the block size TBSize of the transform block to be processed is not 64×64, the band limiting unit 404 sets the secondary transform coefficient Coeff as the secondary transform coefficient Coeff' after band limiting as it is. The band limiting unit 404 outputs the secondary transform coefficient Coeff' after band limiting.

[0251] As described above, in the transform unit 400 in Fig. 24, even if the primary transform and the secondary transform are skipped, band limitation (low-pass filter processing) is performed when the block size TBSize is 64 x 64. However, when the primary transform and the secondary transform are skipped, the secondary transform coefficient Coeff input to the band limiting unit 404 is the prediction residual D. Therefore, the band limiting unit 404 performs band limitation on the prediction residual D, and distortion increases due to the band limiting.

[0252] For example, when the prediction residual D of a 64×64 transform block is a 64×64 image shown in A of FIG. 25, when the primary transform and the secondary transform are skipped, the 64×64 image shown in A of FIG. 25 is input to the band limiting unit 404 as the secondary transform coefficient Coeff. Therefore, when the band limiting unit 404 performs band limiting so that the transform coefficients other than the 32×32 transform coefficient at the upper left of the transform block as high frequency components are set to 0, the secondary transform coefficient Coeff' after band limiting becomes a 64×64 image shown in B of FIG. 25. Therefore, the distortion increases in the secondary transform coefficient Coeff' after band limiting. As a result, the coding efficiency decreases. In addition, although the transform quantization bypass is performed for the purpose of lossless coding, lossless coding cannot be performed.

[0253] In FIG. 25, the white areas are areas where the pixel value is 0, and the black areas are areas where the pixel value is 255.

[0254] <Prohibit bandwidth limiting when using transform skip or transform quantization bypass> In the third embodiment, the band limiting for the secondary transform coefficient Coeff is controlled based on the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag. Also, the band limiting for the secondary transform coefficient Coeff_IQ obtained by inverse quantization is controlled based on the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag. Specifically, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the (inverse) primary transform, the (inverse) secondary transform, and the band limiting are skipped.

[0255] In this way, the band limiting is prohibited for the secondary transform coefficient Coeff (Coeff_IQ) which is the prediction residual D, i.e., the secondary transform coefficient in the pixel domain, so that the increase in distortion is suppressed. As a result, the decrease in coding efficiency can be suppressed. In addition, by performing the transform quantization bypass, lossless coding can be performed.

[0256] <Image encoding device> The configuration of the third embodiment of the image encoding device as an image processing device to which the present technology is applied is the same as the configuration of Fig. 7 except for the configurations of the transformation information Tinfo, the transformation unit, and the inverse transformation unit. Therefore, in the following, only the transformation information Tinfo, the transformation unit, and the inverse transformation unit will be described.

[0257] In the third embodiment, the transformation information Tinfo includes a transform skip flag ts_flag, a transform quantization bypass flag transquant_bypass_flag, a primary transform identifier pt_idx, a secondary transform identifier st_idx, and a block size TBSize.

[0258] Moreover, the inverse transformation performed by the inverse transformation unit in the third embodiment is the inverse process of the transformation performed by the transformation unit, and is the same process as the inverse transformation performed in the image decoding device described later. Therefore, this inverse transformation will be described later in the description of the image decoding device.

[0259] <Conversion section> FIG. 26 is a block diagram showing an example of the main configuration of a conversion unit in the third embodiment of an image encoding device as an image processing device to which the present technology is applied.

[0260] Among the components shown in Fig. 26, the same components as those in Fig. 24 are denoted by the same reference numerals, and duplicated explanations will be omitted as appropriate.

[0261] The configuration of conversion section 420 in FIG. 26 differs from the configuration of conversion section 400 in FIG. 24 in that a switch 421 and a band limiting section 424 are provided instead of switch 401 and band limiting section 404.

[0262] A switch 421 of the conversion unit 420 receives a transform skip flag ts_flag and a transform quantization bypass flag transquant_bypass_flag from the control unit 101, and receives a prediction residual D from the calculation unit 111. The switch 421 controls primary transform, secondary transform, and skip of band limitation for the prediction residual D, based on the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag.

[0263] Specifically, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 0, the switch 421 supplies the prediction residual D to the primary transform unit 402 to execute primary transform, secondary transform, and band limitation. On the other hand, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 421 (control unit) supplies the prediction residual D to the quantization unit 113 as a secondary transform coefficient Coeff' after band limitation, to skip the primary transform, secondary transform, and band limitation.

[0264] The band limiting unit 424 performs band limiting on the secondary transform coefficient Coeff output from the secondary transform unit 403 based on the block size TBSize supplied from the control unit 101 so as to set high frequency components to zero, and derives the secondary transform coefficient Coeff' after band limiting. The band limiting unit 424 supplies the secondary transform coefficient Coeff' after band limiting to the quantization unit 113.

[0265] Specifically, when the block size TBSize is smaller than a predetermined block size TH_TBSize, the band limiting unit 424 does not perform band limiting on the secondary transform coefficient Coeff, and supplies the secondary transform coefficient Coeff to the quantization unit 113 as the secondary transform coefficient Coeff' after band limiting.

[0266] On the other hand, when the block size TBSize is equal to or larger than a predetermined block size TH_TBSize, the band limiting unit 424 derives the secondary transform coefficient Coeff(i,j)' after band limiting for each coordinate (i,j) in the transform block using the band limiting filter H(i,j) and the secondary transform coefficient Coeff(i,j) according to the following equation (35).

[0267]

number

[0268] The band-limiting filter H(i,j) is defined by the following equation (36).

[0269]

number

[0270] Also, TBXSize and TBYSize are the horizontal and vertical sizes of the transform block to be processed, respectively. According to equations (35) and (36), the high frequency components of the secondary transform coefficient Coeff(i,j)' are 0. The band limiting unit 424 supplies the secondary transform coefficient Coeff' after band limiting derived as described above to the quantization unit 113.

[0271] <Image encoding process flow> The image encoding process executed by the third embodiment of the image encoding device as an image processing device to which the present technology is applied is similar to the image encoding process in Fig. 11 except for the transform process in step S104 and the inverse transform process in step S107. The inverse transform process is an inverse process of the transform process, and is executed in the same manner as the inverse transform process executed in the image decoding process described later, so only the transform process will be described here.

[0272] <Conversion process flow> FIG. 27 is a flowchart illustrating an example of the flow of conversion processing executed by the third embodiment of the image encoding device serving as the image processing device to which the present technology is applied.

[0273] When the conversion process starts, in step S401, the switch 421 determines whether the conversion skip flag ts_flag or the conversion quantization bypass flag transquant_bypass_flag supplied from the control unit 101 is 1 or not.

[0274] When it is determined in step S401 that the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 421 determines to skip the primary transform, the secondary transform, and the band limitation. Then, the switch 421 does not perform the processes of steps S402 to S406, and supplies the prediction residual D supplied from the calculation unit 111 to the quantization unit 113 as the secondary transform coefficient Coeff' after band limitation, and ends the process.

[0275] On the other hand, when it is determined in step S401 that the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, the switch 421 determines to execute primary transform, secondary transform, and band limitation. Then, the switch 421 supplies the prediction residual D to the primary transform unit 402, and the process proceeds to S402.

[0276] In step S402, the primary transform unit 402 performs primary transform on the prediction residual D supplied from the switch 421 based on the primary transform identifier pt_idx supplied from the control unit 101, to derive a primary transform coefficient Coeff_P. The primary transform unit 402 supplies the primary transform coefficient Coeff_P to the secondary transform unit 403.

[0277] In step S403, the secondary conversion unit 403 determines whether the secondary conversion identifier st_idx is greater than 0. If it is determined in step S403 that the secondary conversion identifier st_idx is greater than 0, that is, if the secondary conversion identifier st_idx indicates execution of a secondary conversion, the process proceeds to step S404.

[0278] In step S404, the secondary transform unit 403 performs a secondary transform corresponding to the secondary transform identifier st_idx on the primary transform coefficient Coeff_P to derive the secondary transform coefficient Coeff. The secondary transform unit 403 supplies the secondary transform coefficient Coeff to the band limiting unit 424 and proceeds to step S405.

[0279] On the other hand, if it is determined in step S403 that the secondary transformation identifier st_idx is not greater than 0, that is, if the secondary transformation identifier st_idx indicates skipping of the secondary transformation, the secondary transformation unit 403 skips the process of step S404. Then, the secondary transformation unit 403 supplies the primary transformation coefficient Coeff_P obtained by the process of step S402 to the band limiting unit 424 as the secondary transformation coefficient Coeff, and the process proceeds to step S405.

[0280] In step S405, the band limiting unit 424 determines whether the block size TBSize of the transform block to be processed is equal to or larger than the predetermined block size TH_TBSize. If it is determined in step S405 that the block size TBSize is equal to or larger than the predetermined block size TH_TBSize, the process proceeds to step S406.

[0281] In step S406, the band limiting unit 424 applies the band limiting filter H defined by the above-mentioned equation (36) to the secondary transform coefficient Coeff according to the above-mentioned equation (35) to perform band limiting, and derives the secondary transform coefficient Coeff' after band limiting. Then, the band limiting unit 424 supplies the secondary transform coefficient Coeff' after band limiting to the quantization unit 113, and ends the process.

[0282] On the other hand, if it is determined in step S405 that the block size TBSize is less than the predetermined block size TH_TBSize, the band limiting unit 424 skips the process of step S406. Then, the band limiting unit 424 supplies the secondary transform coefficient Coeff as it is to the quantization unit 113 as the secondary transform coefficient Coeff' after band limiting, and ends the process.

[0283] In addition, the conversion process may change the order of the steps or the content of the process to the extent possible. For example, if it is determined in step S403 that the secondary conversion identifier st_idx is not greater than 0, a unit matrix may be selected as the matrix R of the secondary conversion, and the process of step S404 may be executed.

[0284] As described above, when transform skip or transform quantization bypass is not performed, the switch 421 supplies the prediction residual D to the band limiting unit 424 via the primary transform unit 402 and the secondary transform unit 403. As a result, when the block size TBSize is equal to or larger than a predetermined block size TH_TBSize, the band limiting unit 424 performs band limiting so as to set the high frequency components of the secondary transform coefficient Coeff to 0. Therefore, in this case, the image encoding device needs to encode only the low frequency components of the secondary transform coefficient Coeff, and the encoding process of the secondary transform coefficient Coeff can be reduced.

[0285] Moreover, when transform skip or transform quantization bypass is performed, the switch 421 does not supply the prediction residual D to the band limiting unit 424. As a result, even if the block size TBSize is equal to or larger than the predetermined block size TH_TBSize, the band limiting unit 424 does not perform band limiting on the secondary transform coefficient Coeff, which is the prediction residual D. That is, when transform skip or transform quantization bypass is performed, band limiting is also skipped. Therefore, even when transform skip or transform quantization bypass is performed, it is possible to prevent an increase in distortion when transform skip or transform quantization bypass is performed and the block size TBSize is equal to or larger than the predetermined block size TH_TBSize, compared to the case where band limiting is performed. As a result, it is possible to suppress a decrease in coding efficiency, that is, to improve coding efficiency. Also, by performing transform quantization bypass, lossless coding can be performed.

[0286] <Image Decoding Device> Next, the decoding of the coded data coded as above will be described. The configuration of the third embodiment of the image decoding device as the image processing device to which the present technology is applied is the same as the configuration of Fig. 13 except for the configuration of the transformation information Tinfo and the inverse transformation unit. Since the transformation information Tinfo has been described above, only the inverse transformation unit will be described below.

[0287] <Inverse conversion section> FIG. 28 is a block diagram showing an example of the main configuration of an inverse transform unit in the third embodiment of an image decoding device as an image processing device to which the present technology is applied.

[0288] As shown in FIG. 28, the inverse conversion unit 440 has a switch 441, a band limiting unit 442, an inverse secondary conversion unit 443, and an inverse primary conversion unit 444.

[0289] The switch 441 receives the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag from the decoding unit 211, and receives the secondary transform coefficient Coeff_IQ from the inverse quantization unit 212. The switch 441 controls the band limiting for the secondary transform coefficient Coeff_IQ, the inverse secondary transform, and the skipping of the inverse primary transform, based on the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag.

[0290] Specifically, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 0, the switch 441 executes band limitation, inverse secondary transform, and inverse primary transform by supplying the secondary transform coefficient Coeff_IQ to the band limiting unit 442. On the other hand, when the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 441 (control unit) supplies the secondary transform coefficient Coeff_IQ to the calculation unit 214 as a prediction residual D', thereby skipping the band limitation, inverse secondary transform, and inverse primary transform.

[0291] The band limiting unit 442 performs band limiting on the secondary transform coefficient Coeff_IQ supplied from the switch 441 based on the block size TBSize of the transform block to be processed supplied from the decoding unit 211 so as to set high frequency components to zero, and derives the secondary transform coefficient Coeff_IQ' after band limiting. The band limiting unit 442 supplies the secondary transform coefficient Coeff_IQ' after band limiting to the inverse secondary transform unit 443.

[0292] Specifically, when the block size TBSize is smaller than a predetermined block size TH_TBSize, the band limiting unit 442 does not perform band limiting on the secondary transform coefficient Coeff_IQ, and supplies the secondary transform coefficient Coeff_IQ to the inverse secondary transform unit 443 as the band-limited secondary transform coefficient Coeff_IQ'.

[0293] On the other hand, when the block size TBSize is equal to or larger than the predetermined block size TH_TBSize, the band limiting unit 442 applies the band limiting filter H shown in the above equation (35) to the secondary transform coefficient Coeff_IQ to derive the secondary transform coefficient Coeff_IQ(i,j)'.

[0294] That is, for each coordinate (i, j) in the transform block, the band limiting unit 442 derives the secondary transform coefficient Coeff_IQ(i, j)' after band limitation using the band limiting filter H(i, j) and the secondary transform coefficient Coeff_IQ(i, j) according to the following equation (37).

[0295]

number

[0296] According to equation (37), the high frequency components of the secondary transform coefficient Coeff_IQ(i,j)′ are 0. The band limiting unit 442 supplies the secondary transform coefficient Coeff_IQ′ after band limiting derived as described above to the inverse secondary transform unit 443.

[0297] The inverse secondary transform unit 443 performs an inverse secondary transform on the band-limited secondary transform coefficients Coeff_IQ′ supplied from the band limiting unit 442 based on the secondary transform identifier st_idx supplied from the decoding unit 211, to derive primary transform coefficients Coeff_IS. The inverse secondary transform unit 443 supplies the primary transform coefficients Coeff_IS to the inverse primary transform unit 444.

[0298] The inverse primary transform unit 444 performs inverse primary transform on the primary transform coefficients Coeff_IS supplied from the inverse secondary transform unit 443 based on the primary transform identifier pt_idx in the same manner as the inverse primary transform unit 232 in Fig. 14, to derive prediction residuals D'. The inverse primary transform unit 444 supplies the derived prediction residuals D' to the calculation unit 214.

[0299] <Flow of image decoding process> The image decoding process performed by the third embodiment of the image decoding device as an image processing device to which the present technology is applied is similar to the image decoding process of Figure 15, except for the inverse transform process of step S203, so below we will only describe the inverse transform process.

[0300] <Flow of reverse conversion process> FIG. 29 is a flowchart illustrating an example of the flow of inverse transform processing executed by the third embodiment of the image decoding device as the image processing device to which the present technology is applied.

[0301] When the inverse transform process starts, in step S421, the switch 441 determines whether the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag supplied from the decoding unit 211 is 1 or not.

[0302] When it is determined in step S421 that the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 441 determines to skip the band limiting, the inverse secondary transform, and the inverse primary transform. Then, the switch 441 does not perform the processes of steps S422 to S426, and supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the calculation unit 214 as the prediction residual D', and ends the process.

[0303] On the other hand, if it is determined in step S421 that the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, the switch 441 determines to execute band limitation, inverse secondary transform, and inverse primary transform. Then, the switch 441 supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the band limitation unit 442, and the process proceeds to step S422.

[0304] In step S422, the band limiting unit 442 determines whether the block size TBSize of the transform block to be processed is equal to or larger than the predetermined block size TH_TBSize. If it is determined in step S422 that the block size TBSize is equal to or larger than the predetermined block size TH_TBSize, the process proceeds to step S423.

[0305] In step S423, the band limiting unit 442 applies the band limiting filter H to the secondary transform coefficient Coeff_IQ to limit the band, and derives the secondary transform coefficient Coeff_IQ' after the band limiting. Then, the band limiting unit 424 supplies the secondary transform coefficient Coeff_IQ' after the band limiting to the inverse secondary transform unit 443, and the process proceeds to step S424.

[0306] On the other hand, if it is determined in step S422 that the block size TBSize is less than the predetermined block size TH_TBSize, the band limiting unit 442 skips the process of step S423. Then, the band limiting unit 442 supplies the secondary transform coefficient Coeff_IQ as it is to the inverse secondary transform unit 443 as the secondary transform coefficient Coeff_IQ′ after band limiting, and the process proceeds to step S424.

[0307] In step S424, the inverse secondary transformation unit 443 determines whether the secondary transformation identifier st_idx is greater than 0. If it is determined in step S424 that the secondary transformation identifier st_idx is greater than 0, that is, if the secondary transformation identifier st_idx indicates execution of an inverse secondary transformation, the process proceeds to step S425.

[0308] In step S425, the inverse secondary transform unit 443 performs an inverse secondary transform corresponding to the secondary transform identifier st_idx on the band-limited secondary transform coefficient Coeff_IQ' supplied from the band limiting unit 442, to derive the primary transform coefficient Coeff_P. The inverse secondary transform unit 443 supplies the primary transform coefficient Coeff_P to the inverse primary transform unit 444, and the process proceeds to step S426.

[0309] On the other hand, if it is determined in step S424 that the secondary transform identifier st_idx is not greater than 0, that is, if the secondary transform identifier st_idx indicates skipping of the inverse secondary transform, the inverse secondary transform unit 443 skips the process of step S425. Then, the inverse secondary transform unit 443 supplies the secondary transform coefficients Coeff_IQ' after the band limitation as the primary transform coefficients Coeff_IS to the inverse primary transform unit 444, and the process proceeds to step S426.

[0310] In step S426, the inverse primary transform unit 444 performs inverse primary transform on the primary transform coefficients Coeff_IS supplied from the inverse secondary transform unit 443, derives prediction residuals D', and supplies the prediction residuals D' to the arithmetic unit 214. Then, the process ends.

[0311] In addition, the above inverse transformation process may be changed in the order of the steps or the content of the process may be changed within a feasible range. For example, if it is determined in step S424 that the secondary transformation identifier st_idx is not greater than 0, a unit matrix may be selected as the matrix IR of the inverse secondary transformation, and the process of step S425 may be executed.

[0312] As described above, when inverse transform skip or inverse quantization and inverse transform skip (hereinafter referred to as inverse quantization and inverse transform bypass) is not performed, the switch 441 supplies the secondary transform coefficient Coeff_IQ to the band limiting unit 442. As a result, when the block size TBSize is equal to or larger than a predetermined block size TH_TBSize, the band limiting unit 442 performs band limiting so as to set the high frequency components of the secondary transform coefficient Coeff_IQ to 0. Therefore, in this case, the image decoding device needs to inverse transform only the low frequency components of the secondary transform coefficient Coeff_IQ, and the inverse transform process of the secondary transform coefficient Coeff_IQ can be reduced.

[0313] Furthermore, when transform skip or inverse quantization / inverse transform bypass is performed, the switch 441 does not supply the secondary transform coefficient Coeff_IQ to the band limiting unit 442. As a result, even if the block size TBSize is equal to or larger than a predetermined block size TH_TBSize, the band limiting unit 442 does not perform band limiting on the secondary transform coefficient Coeff_IQ, which is a prediction residual. That is, when inverse transform skip or inverse quantization / inverse transform bypass is performed, band limiting is also skipped. Therefore, when transform skip or transform quantization bypass is performed, it is possible to decode coded data in which an increase in distortion is prevented by also skipping band limiting. As a result, it is possible to decode coded data with improved coding efficiency. In addition, it is possible to losslessly decode coded data that has been losslessly coded by transform quantization bypass.

[0314] In the above description, bandwidth limitation is performed in the third embodiment of the image decoding apparatus. However, when a bitstream constraint of "when the block size TBSize is equal to or greater than a predetermined block size TH_TBSize, non-zero coefficients are restricted within the upper left low-frequency region ((TH_TBSize >> 1) × (TH_TBSize >> 1))" is provided, bandwidth limitation may not be performed. This bitstream constraint can also be expressed as "when the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, and the block size TBSize is equal to the predetermined block size TH_TBSize, the values of the last non-zero coefficient X coordinate (last_sig_coeff_x_pos) and the last non-zero coefficient Y coordinate (last_sig_coeff_y_pos) indicating the position of the last non-zero coefficient in the transform block are within the range from 0 to (TH_TBSize / 2) - 1".

[0315] In addition, the predetermined block size TH_TBSize can be set to any value in addition to 64×64.

[0316] Furthermore, the method of the secondary transform in the third embodiment is not limited to the method described in Non-Patent Document 1. For example, the methods in the first and second embodiments may also be used. Also, the secondary transform coefficients may be clipped and restricted within a predetermined range.

[0317] <4. Fourth Embodiment> <Shapes of CU, PU, and TU> FIG. 30 is a diagram for explaining the shapes of CU, PU, and TU in the fourth embodiment.

[0318] The CU, PU, ​​and TU in the fourth embodiment are the CU, PU, ​​and TU of QTBT (Quad tree plus binary tree) described in JVET-C0024, “EE2.1: Quadtree plus binary tree structure integration with JEM tools”.

[0319] Specifically, in the block division of a CU in the fourth embodiment, one block can be divided not only into 4 (=2x2) sub-blocks, but also into 2 (=1x2, 2x1) sub-blocks. That is, in the fourth embodiment, the block division of a CU is performed by recursively repeating the division of one block into 4 or 2 sub-blocks, resulting in the formation of a quad-tree or horizontal or vertical binary-tree tree structure.

[0320] As a result, the shape of the CU can be rectangular as well as square. For example, when the LCU size is 128x128, the CU size (horizontal size w × vertical size h) can be any square size such as 128x128, 64x64, 32x32, 16x16, 8x8, or 4x4, as shown in Figure 30. The CU size can be any square size such as 128x64, 128x32, 128x16, 128x8, 128x4, 64x128, 32x128, 16x128, 8x128, 4x128, 64x32, 64x16, 64x8, 64x4, 32x64, 16x64, 8x64, 4x64, 32x16, 32x8, 32x4, 16x32, 8x32, 4x32, 16x8, 16x4, 8x16, 4x16, It may be a rectangular size such as 8x4, 4x8, etc. In the fourth embodiment, the PU and the TU are the same as the CU.

[0321] <Image encoding device> The configuration of the fourth embodiment of the image encoding device as the image processing device to which the present technology is applied is the same as the configuration of the third embodiment, except for the configurations of the transformation information Tinfo, the transformation unit, and the inverse transformation unit. Therefore, in the following, only the transformation information Tinfo, the transformation unit, and the inverse transformation unit will be described.

[0322] The conversion information Tinfo in the fourth embodiment is identical to the conversion information Tinfo in the third embodiment, except that instead of the block size TBSize, it includes the width size (horizontal size) TBXSize and the height size (vertical size) TBYSize of the conversion block.

[0323] Moreover, the inverse transformation performed by the inverse transformation unit in the fourth embodiment is the inverse process of the transformation performed by the transformation unit, and is the same process as the inverse transformation performed in the image decoding device described later. Therefore, this inverse transformation will be described later in the description of the image decoding device.

[0324] <Conversion section> FIG. 31 is a block diagram showing an example of the main configuration of a conversion unit in a fourth embodiment of an image encoding device as an image processing device to which the present technology is applied.

[0325] Among the components shown in Fig. 31, the same components as those in Fig. 26 are denoted by the same reference numerals, and duplicated explanations will be omitted as appropriate.

[0326] The configuration of conversion section 460 in FIG. 31 differs from the configuration of conversion section 420 in FIG. 26 in that a band limiting section 464 is provided instead of band limiting section 404.

[0327] The band limiting unit 464 of the conversion unit 460 performs band limiting on the secondary conversion coefficient Coeff output from the secondary conversion unit 403 so that the high-frequency components are set to 0 based on the horizontal size TBXSize and the vertical size TBYSize supplied from the control unit 101, and derives the secondary conversion coefficient Coeff' after band limiting. The band limiting unit 464 supplies the secondary conversion coefficient Coeff' after band limiting to the quantization unit 113.

[0328] Specifically, when the larger of the horizontal size TBXSize and the vertical size TBYSize, max(TBXSize, TBYSize), is less than a predetermined size THSize (max(TBXSize, TBYSize) < THSize), the band limiting unit 464 does not perform band limiting on the secondary conversion coefficient Coeff, and supplies the secondary conversion coefficient Coeff to the quantization unit 113 as the secondary conversion coefficient Coeff' after band limiting.

[0329] On the other hand, when max(TBXSize, TBYSize) is greater than or equal to a predetermined size THSize (max(TBXSize, TBYSize) >= THSize), the band limiting unit 464 derives the secondary conversion coefficient Coeff(i, j)' after band limiting for each pixel unit coordinate (i, j) in the conversion block according to the above-described formula (35). That is, when the logical value of the conditional expression max(TBXSize, TBYSize) >= THSize is 1 (true), the band limiting unit 464 performs band limiting, and when it is 0 (false), the band limiting is not performed.

[0330] Note that the band limiting filter H(i, j) is defined by the following formula (38).

[0331]

Equation

[0332] TH is a threshold value. According to formulas (35) and (38), 2, which is the processing unit in the conversion block in the secondary conversion including the coordinate (i, j), Nx2 M If the subblock i,j is a subblock other than the square area consisting of TH x TH subblocks in the upper left corner, the secondary transform coefficient Coeff(i,j)' becomes 0. That is, the high frequency component of the secondary transform coefficient Coeff(i,j)' becomes 0. The band limiting unit 464 supplies the secondary transform coefficient Coeff' after band limiting derived as described above to the quantization unit 113.

[0333] <Example of a band-limiting filter> FIG. 32 is a diagram illustrating an example of the band-limiting filter H(i,j).

[0334] In Fig. 32, the solid line rectangles indicate transform blocks, and the dotted line rectangles indicate sub-blocks. This also applies to Figs. 36 to 38, which will be described later. In the example of Fig. 32, the size of the sub-blocks is 2 2 x2 2 where the size THSize is a size of 8 sub-blocks, and the threshold TH in the band-limiting filter H(i,j) is 4. Also, A of Fig. 32 shows an example where the transform block size TBXSize×TBYSize is a size consisting of 8×8 sub-blocks (transform block size of 32×32), B of Fig. 32 shows an example where the transform block size TBXSize×TBYSize is a size consisting of 8×4 sub-blocks (transform block size of 32×16), and C of Fig. 32 shows an example where the transform block size TBXSize×TBYSize is a size consisting of 4×8 sub-blocks (transform block size of 16×32).

[0335] In this case, as shown in A of Fig. 32, when the horizontal size TBXSize and the vertical size TBYSize are both 8 sub-block sizes, a band-limiting filter H(i,j) is set. In this case, the band-limiting filter H(i,j) of the coordinates (i,j) included in the 4x4 sub-block group 471A marked with diagonal lines in the upper left diagram is 1, and the band-limiting filter H(i,j) of the coordinates (i,j) in a sub-block other than the sub-block group 471A is 0.

[0336] 32B, when the horizontal size TBXSize is a size of eight sub-blocks and the vertical size TBYSize is a size of four sub-blocks smaller than the horizontal size TBXSize, a band-limiting filter H(i,j) is also set. In this case, the band-limiting filter H(i,j) of the coordinates (i,j) included in the 4×4 sub-block group 471B marked with diagonal lines in the diagram on the left is 1, and the band-limiting filter H(i,j) of the coordinates (i,j) in a sub-block other than the sub-block group 471B is 0.

[0337] 32C, when the horizontal size TBXSize is a size of 4 sub-blocks and the vertical size TBYSize is a size of 8 sub-blocks larger than the horizontal size TBXSize, a band-limiting filter H(i,j) is also set. In this case, the band-limiting filter H(i,j) of the coordinates (i,j) included in the 4×4 sub-block group 471C marked with diagonal lines in the upper diagram is 1, and the band-limiting filter H(i,j) of the coordinates (i,j) in a sub-block other than the sub-block group 471C is 0.

[0338] As described above, when max(TBXSize, TBYSize) is equal to or larger than the size THSize, the band-limiting filter H(i,j) is set to 0 or 1 depending on the position of the sub-block containing the coordinates (i,j).

[0339] <Image encoding process flow> The image coding process performed by the fourth embodiment of the image coding device as the image processing device to which the present technology is applied is the same as the image coding process in the third embodiment, except for the transform process and the inverse transform process. The inverse transform process is the inverse process of the transform process, and is performed in the same manner as the inverse transform process performed in the image decoding process described later, so only the transform process will be described here.

[0340] <Conversion process flow> FIG. 33 is a flowchart illustrating an example of the flow of a conversion process executed by the fourth embodiment of an image encoding device serving as an image processing device to which the present technology is applied.

[0341] The processing in steps S461 to S464 is similar to the processing in steps S401 to S404 in FIG. 27, and therefore a description thereof will be omitted.

[0342] In step S465, the band limiting unit 464 determines whether max(TBXSize, TBYSize) of the transform block to be processed is equal to or larger than the predetermined size THSize. If it is determined in step S465 that max(TBXSize, TBYSize) is equal to or larger than the predetermined size THSize, the process proceeds to step S466.

[0343] In step S466, the band limiting unit 464 applies the band limiting filter H defined by the above-mentioned equation (38) to the secondary transform coefficient Coeff according to the above-mentioned equation (35) to perform band limiting, and derives the secondary transform coefficient Coeff' after band limiting. Then, the band limiting unit 464 supplies the secondary transform coefficient Coeff' after band limiting to the quantization unit 113, and ends the process.

[0344] On the other hand, if it is determined in step S465 that max(TBXSize, TBYSize) is less than the predetermined size THSize, the band limiting unit 464 skips the process of step S466. Then, the band limiting unit 464 supplies the secondary transform coefficient Coeff as it is to the quantization unit 113 as the secondary transform coefficient Coeff' after band limiting, and ends the process.

[0345] In addition, the conversion process may change the processing order of each step or the content of the process to a feasible extent. For example, if it is determined in step S463 that the secondary conversion identifier st_idx is not greater than 0, a unit matrix may be selected as the matrix R of the secondary conversion, and the process of step S464 may be executed.

[0346] As described above, the band limiting unit 464 performs band limiting based on the horizontal size TBXSize and the vertical size TBYSize of the transform block. Therefore, even if the shape of the transform block is rectangular, the band limiting can be performed appropriately.

[0347] Furthermore, the band limiting unit 464 sets the area in which the secondary transform coefficient Coeff is set to 0 by band limiting to an area other than a square area consisting of TH×TH sub-blocks. Therefore, even if the shape of the transform block is rectangular, the secondary transform coefficient Coeff can be set to 0 in an area other than a square area of ​​a predetermined size.

[0348] <Image Decoding Device> Next, the decoding of the coded data coded as above will be described. The configuration of the fourth embodiment of the image decoding device as the image processing device to which the present technology is applied is the same as the configuration of the third embodiment, except for the configuration of the transformation information Tinfo and the inverse transformation unit. Since the transformation information Tinfo has been described above, only the inverse transformation unit will be described below.

[0349] <Inverse conversion section> FIG. 34 is a block diagram showing an example of the main configuration of an inverse transform unit in a fourth embodiment of an image decoding device as an image processing device to which the present technology is applied.

[0350] Among the components shown in Fig. 34, the same components as those in Fig. 28 are denoted by the same reference numerals, and duplicated explanations will be omitted as appropriate.

[0351] The configuration of the inverse transform section 480 in FIG. 34 differs from the configuration of the inverse transform section 440 in FIG.

[0352] The band limiting unit 482 of the inverse transform unit 480 performs band limiting on the secondary transform coefficient Coeff_IQ supplied from the switch 441 based on the horizontal size TBXSize and vertical size TBYSize of the transform block to be processed supplied from the decoding unit 211 so as to set high frequency components to zero, and derives the secondary transform coefficient Coeff_IQ' after band limiting. The band limiting unit 482 supplies the secondary transform coefficient Coeff_IQ' after band limiting to the inverse secondary transform unit 443.

[0353] Specifically, if max(TBXSize, TBYSize) is less than a predetermined size THSize, the band limiting unit 482 does not perform band limiting on the secondary transform coefficient Coeff_IQ, and supplies the secondary transform coefficient Coeff_IQ to the inverse secondary transform unit 443 as the secondary transform coefficient Coeff_IQ' after band limiting.

[0354] On the other hand, when max(TBXSize, TBYSize) is equal to or larger than the predetermined size THSize, the band limiting unit 482 applies the band limiting filter H defined by the above-mentioned equation (38) to the secondary transform coefficient Coeff_IQ according to the above-mentioned equation (37). The band limiting unit 482 supplies the secondary transform coefficient Coeff_IQ′ after the band limiting derived as a result to the inverse secondary transform unit 443.

[0355] <Flow of image decoding process> The image decoding process performed by the fourth embodiment of the image decoding device as an image processing device to which the present technology is applied is similar to the image decoding process of Figure 15, except for the inverse transform process of step S203, so below we will only describe the inverse transform process.

[0356] <Flow of reverse conversion process> FIG. 35 is a flowchart illustrating an example of the flow of inverse transform processing executed by the fourth embodiment of the image decoding device as the image processing device to which the present technology is applied.

[0357] When the inverse transform process starts, in step S481, the switch 441 determines whether the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag supplied from the decoding unit 211 is 1 or not.

[0358] When it is determined in step S481 that the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 441 determines to skip the band limiting, the inverse secondary transform, and the inverse primary transform. Then, the switch 441 does not perform the processes of steps S482 to S486, and supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the calculation unit 214 as the prediction residual D', and ends the process.

[0359] On the other hand, if it is determined in step S481 that the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, the switch 441 determines to execute band limitation, inverse secondary transform, and inverse primary transform. Then, the switch 441 supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the band limitation unit 482, and the process proceeds to step S482.

[0360] In step S482, the bandwidth limiting unit 482 determines whether max(TBXSize, TBYSize) is equal to or greater than the predetermined size THSize. If it is determined in step S482 that max(TBXSize, TBYSize) is equal to or greater than the predetermined size THSize, the process proceeds to step S483.

[0361] In step S483, the band limiting unit 482 applies the band limiting filter H to the secondary transform coefficient Coeff_IQ defined by the above-mentioned equation (38) according to the above-mentioned equation (37) to limit the band, and derives the secondary transform coefficient Coeff_IQ' after the band limiting. Then, the band limiting unit 464 supplies the secondary transform coefficient Coeff_IQ' after the band limiting to the inverse secondary transform unit 443, and the process proceeds to step S484.

[0362] On the other hand, if it is determined in step S482 that max(TBXSize, TBYSize) is less than the predetermined size THSize, the band limiting unit 482 skips the process of step S483. Then, the band limiting unit 482 supplies the secondary transform coefficient Coeff_IQ as it is to the inverse secondary transform unit 443 as the secondary transform coefficient Coeff_IQ′ after band limiting, and the process proceeds to step S484.

[0363] The processing in steps S484 to S486 is similar to the processing in steps S424 to S426 in FIG. 29, and therefore a description thereof will be omitted.

[0364] As described above, the band limiting unit 482 performs band limiting based on the horizontal size TBXSize and the vertical size TBYSize of the transform block. Therefore, even if the shape of the transform block is rectangular, the band limiting can be performed appropriately.

[0365] Furthermore, the band limiting unit 482 sets the area in which the secondary transform coefficient Coeff is set to 0 by band limiting to an area other than a square area consisting of TH×TH sub-blocks. Therefore, even if the shape of the transform block is rectangular, the secondary transform coefficient Coeff can be set to 0 in an area other than a square area of ​​a predetermined size.

[0366] In the above description, bandwidth limitation was performed in the fourth embodiment of the image decoding device, but if a bitstream constraint is set such that "when max(TBXSize, TBYSize) is equal to or greater than a predetermined size THSize, non-zero coefficients are restricted to the upper left low frequency region (e.g., the region of (THSize>>1)×(THSize>>1)", bandwidth limitation does not need to be performed. This bitstream constraint can also be expressed as "when the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, and max(TBXSize, TBYSize) of the transform block is equal to or greater than a predetermined size THSize, the values ​​of the last non-zero coefficient X coordinate (last_sig_coeff_x_pos) and the last non-zero coefficient Y coordinate (last_sig_coeff_y_pos) are within the range from 0 to a predetermined value (e.g., (THSize / 2)-1)."

[0367] Moreover, the method of secondary transformation in the fourth embodiment is not limited to the method described in Non-Patent Document 1. For example, it may be the method in the first or second embodiment. Moreover, the secondary transformation coefficients may be clipped and limited to be within a predetermined range.

[0368] Furthermore, the method of determining whether or not to perform bandwidth limiting is not limited to the above-mentioned method, so long as it is a method of determining whether the size of the transform block is greater than or equal to a predetermined size based on the horizontal size TBXSize (or its logarithmic value log2TBXSize) and the vertical size TBYSize (or its logarithmic value log2TBYSize).

[0369] For example, the bandwidth limiting unit 464 (482) may perform bandwidth limiting when max(log2TBXSize, log2TBYSize), which is the larger of the logarithms of the horizontal size TBXSize and the vertical size TBYSize, is equal to or larger than a predetermined threshold value log2THSize (when the logical value of max(log2TBXSize, log2TBYSize)>=log2THSize) is 1 (true)). Also, the bandwidth limiting unit 464 (482) may perform bandwidth limiting when the sum or product of the horizontal size TBXSize and the vertical size TBYSize is equal to or larger than a predetermined threshold value TH_Size (when the logical value of TBXSize+TBYSize>=TH_Size or TBXSize*TBYSize>=TH_Size is 1 (true). Furthermore, the bandwidth limiting unit 464 (482) may perform bandwidth limiting when the sum of the logarithms of the horizontal size TBXSize and the vertical size TBYSize is equal to or greater than a predetermined threshold value log2THSize (when the logical value of log2TBXSize+log2TBYSize>=log2THSize is 1 (true)). In these cases, when the logical value is 0 (false), no bandwidth limiting is performed.

[0370] Furthermore, the band limiting unit 464 (482) may set the band limiting filter H(i,j) to 0 or 1 depending on the position of the coordinate (i,j) instead of the position of the subblock including the coordinate (i,j). In this case, the band limiting filter H(i,j) is defined by the following equation (39).

[0371]

number

[0372] <Another example of a band-limiting filter> 36 to 38 are diagrams showing other examples of the band-limiting filter H(i,j).

[0373] 36 to 38, the band-limiting filter H(i,j) is defined by the following formula (40) based on the processing order (scan order) sbk_scanorder(i>>N,j>>M) of the sub-block including the coordinates (i,j). Note that the sub-block scan order sbk_scanorder(i>>N,j>>M) is determined based on the scan identifier scanIdx and the size of the transform block.

[0374]

number

[0375] THscanorder is a threshold value. In equation (40), the threshold value THscanorder can be, for example, alpha (alpha is a value between 0 and 1) times the total number of sub-blocks in the transform block.

[0376] According to equation (35) and equation (40), the two coordinates (i,j) N x2 M If the scan order sbk_scanorder (i>>N,j>>M) of the sub-blocks is equal to or greater than the threshold THscanorder, the secondary transform coefficient Coeff(i,j)' becomes 0. That is, the secondary transform coefficient Coeff(i,j)' of the sub-blocks of high frequency components other than the THscanorder number of sub-blocks with the earliest scan order becomes 0.

[0377] In the examples of FIGS. 36 to 38, the size of the sub-block is 2 2 x2 2and the size THSize is a size of 8 sub-blocks. Furthermore, in the example of Fig. 36, the threshold value THscanorder in the band limiting filter H(i,j) is 10, and in the examples of Fig. 37 and Fig. 38, it is 16. Furthermore, A of Fig. 36 to A of Fig. 38 show an example where the transform block size TBXSize×TBYSize is a size consisting of 8×8 sub-blocks (transform block size of 32×32), B of Fig. 36 to B of Fig. 38 show an example where the transform block size TBXSize×TBYSize is a size consisting of 8×4 sub-blocks (transform block size of 32×16), and C of Fig. 36 to C of Fig. 38 show an example where the transform block size TBXSize×TBYSize is a size consisting of 4×8 sub-blocks (transform block size of 16×32).

[0378] In this case, as shown in A of FIG. 36 to A of FIG. 38, when the horizontal size TBXSize and the vertical size TBYSize are both equal to 8 sub-blocks, a band-limiting filter H(i,j) is set.

[0379] As shown in A of Figure 36, when sub-blocks are scanned diagonally (up-right diagonal scan), the band-limiting filter H(i, j) of the coordinates (i, j) included in the top left 10 shaded sub-blocks 501A in the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 501A is 0.

[0380] Furthermore, as shown in A of FIG. 37, when sub-blocks are scanned horizontally (horizontal fast scan), the band-limiting filter H(i, j) of the coordinates (i, j) included in the upper 16 shaded sub-blocks 502A in the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 502A is 0.

[0381] As shown in A of Figure 38, when sub-blocks are scanned vertically (vertical fast scan), the band-limiting filter H(i, j) of the coordinates (i, j) included in the 16 shaded sub-blocks 503A on the left side of the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 503A is 0.

[0382] Also, as shown in B of Figures 36 to B of Figures 38, a band-limiting filter H(i,j) is set when the horizontal size TBXSize is a size of 8 sub-blocks and the vertical size TBYSize is a size of 4 sub-blocks smaller than the horizontal size TBXSize.

[0383] As shown in B of Figure 36, when sub-blocks are scanned diagonally, the band-limiting filter H(i, j) of the coordinates (i, j) included in the top left 10 shaded sub-blocks 501B in the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 501B is 0.

[0384] Furthermore, as shown in B of FIG. 37, when the sub-blocks are scanned horizontally, the band-limiting filter H(i, j) of the coordinates (i, j) included in the upper 16 shaded sub-blocks 502B in the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 502B is 0.

[0385] As shown in B of Figure 38, when sub-blocks are scanned vertically, the band-limiting filter H(i, j) of the coordinates (i, j) included in the 16 shaded sub-blocks 503B on the left side of the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than that sub-block group 503B is 0.

[0386] Furthermore, as shown in C of Figures 36 to 38C, a band-limiting filter H(i,j) is also set when the horizontal size TBXSize is a size of four sub-blocks and the vertical size TBYSize is a size of eight sub-blocks that is greater than the horizontal size TBXSize.

[0387] As shown in C of FIG. 36, when sub-blocks are scanned diagonally, the band-limiting filter H(i,j) of the coordinates (i,j) included in the top left 10 shaded sub-blocks 501C is 1, and the band-limiting filter H(i,j) of the coordinates (i,j) in sub-blocks other than sub-block group 501C is 0.

[0388] Furthermore, as shown in C of FIG. 37, when the sub-blocks are scanned horizontally, the band-limiting filter H(i, j) of the coordinates (i, j) included in the upper 16 shaded sub-blocks 502C in the figure is 1, and the band-limiting filter H(i, j) of the coordinates (i, j) in sub-blocks other than the sub-block group 502C is 0.

[0389] As shown in C of Figure 38, when sub-blocks are scanned vertically, the band-limiting filter H(i,j) of the coordinates (i,j) included in the 16 shaded sub-blocks 503C on the left side of the figure is 1, and the band-limiting filter H(i,j) of the coordinates (i,j) in sub-blocks other than sub-block group 503C is 0.

[0390] As described above, in the examples of Figures 36 to 38, when max(TBXSize, TBYSize) is equal to or larger than the size THSize, the band-limiting filter H(i, j) is set to 0 or 1 based on the scan order of the sub-block including the coordinates (i, j). Note that in the examples of Figures 36 to 38, the threshold value THscanorder is different between when the sub-block is diagonally scanned and when the sub-block is horizontally or vertically scanned, but it may be the same.

[0391] The band-limiting filter H(i,j) may be defined based on the scan order coef_scanorder(i,j) of the coordinates (i,j) by the following formula (41). The scan order coef_scanorder(i,j) is determined based on the scan identifier scanIdx and the size of the transform block.

[0392]

number

[0393] In equation (41), the threshold THscanorder can be, for example, alpha (alpha is a value between 0 and 1) times the total number of pixels in the transform block (TBXSize×TBYSize).

[0394] <Another example of the flow of conversion and inverse conversion processing> In the fourth embodiment, the band limiting may be controlled based on not only the transform block size but also the band limiting filter enable flag bandpass_filter_enabled_flag indicating whether or not to apply a band limiting filter when the transform block size is equal to or larger than a predetermined block size. In this case, the control unit 101 includes the band limiting filter enable flag bandpass_filter_enabled_flag in the coding parameters in units of SPS, PPS, SH, CU, etc. This band limiting filter enable flag bandpass_filter_enabled_flag is supplied to the coding unit 114 for coding, and is also supplied to the band limiting unit 464 of the conversion unit 460.

[0395] FIG. 39 is a flowchart illustrating an example of the flow of the conversion process of conversion section 460 in this case.

[0396] The processing in steps S501 to S504 in FIG. 39 is similar to the processing in steps S461 to S464 in FIG. 33, and therefore description thereof will be omitted.

[0397] In step S505, the bandpass unit 464 determines whether the bandpass filter enable flag bandpass_filter_enabled_flag is 1 (true), which indicates that the bandpass filter is applied when the transform block size is equal to or larger than a predetermined block size. If it is determined in step S505 that the bandpass filter enable flag bandpass_filter_enabled_flag is 1, the process proceeds to step S506. The processes in steps S506 and S507 are similar to those in steps S465 and S466 in FIG. 33, and therefore will not be described.

[0398] On the other hand, if it is determined in step S505 that the bandpass filter enable flag bandpass_filter_enabled_flag is 0 (false), which indicates that the bandpass filter is not applied even if the transform block size is equal to or larger than the predetermined block size, the transform process ends.

[0399] As described above, the bandpass filter unit 464 controls whether to apply a bandpass filter that limits non-zero coefficients to the low frequency range when the block size of a rectangular transform block consisting of a square or rectangle is equal to or larger than a predetermined block size, based on the bandpass filter enable flag bandpass_filter_enabled_flag.

[0400] Specifically, when the bandpass filter enable flag bandpass_filter_enabled_flag is 1 (true), if the transform block size is equal to or larger than a predetermined block size, the bandpass unit 464 performs band limiting so that the transform coefficients of high frequency components are forcibly set to 0. Therefore, the encoding unit 114 encodes only the non-zero coefficients of the low frequency components of the transform block. This makes it possible to reduce the encoding process of the non-zero coefficients while maintaining the encoding efficiency.

[0401] In addition, when the bandpass filter enable flag bandpass_filter_enabled_flag is 0 (false), the bandpass unit 464 does not perform band limiting even if the transform block is equal to or larger than a predetermined block size. Therefore, the encoding unit 114 encodes non-zero coefficients that exist from low frequency components to high frequency components. Therefore, in a large transform block, the reproducibility of high frequency components is improved and encoding efficiency is improved compared to the case where a bandpass filter is applied.

[0402] Furthermore, the bandpass_filter_enabled_flag is set for each predetermined unit (SPS, PPS, SH, CU, etc.). Therefore, the bandpass unit 464 can use the bandpass_filter_enabled_flag to adaptively control whether or not to apply a bandpass filter for each predetermined unit when the transform block size is equal to or larger than a predetermined block size.

[0403] In the fourth embodiment, when the bandpass filter is controlled based on not only the transform block size but also the bandpass filter enable flag bandpass_filter_enabled_flag, the decoding unit 211 decodes the coded data of the coding parameters including the bandpass filter enable flag bandpass_filter_enabled_flag in a predetermined unit (SPS, PPS, SH, CU, etc.). The bandpass filter enable flag bandpass_filter_enabled_flag obtained as a result of the decoding is supplied to the bandpass unit 482 of the inverse transform unit 480.

[0404] FIG. 40 is a flowchart illustrating an example of the flow of the inverse conversion process of the inverse conversion unit 480 in this case.

[0405] In step S521 in FIG. 40, the switch 441 determines whether the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag supplied from the decoding unit 211 is 1 or not.

[0406] When it is determined in step S521 that the transform skip flag ts_flag or the transform quantization bypass flag transquant_bypass_flag is 1, the switch 441 determines to skip the band limiting, the inverse secondary transform, and the inverse primary transform. Then, the switch 441 does not perform the processes of steps S522 to S527, and supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the calculation unit 214 as the prediction residual D', and ends the process.

[0407] On the other hand, if it is determined in step S521 that the transform skip flag ts_flag and the transform quantization bypass flag transquant_bypass_flag are 0, the switch 441 supplies the secondary transform coefficient Coeff_IQ supplied from the inverse quantization unit 212 to the band limiting unit 482. Then, the process proceeds to step S522.

[0408] In step S522, the bandpass unit 482 determines whether the value of the bandpass filter enable flag bandpass_filter_enabled_flag is 1 (true). If it is determined in step S522 that the value of the bandpass filter enable flag is 1 (true), the process proceeds to step S523. The processes in steps S523 to S527 are similar to those in steps S482 to S486 in FIG. 35, and therefore will not be described.

[0409] If it is determined in step S522 that the value of the band-limiting filter valid flag is 0 (false), the process skips steps S523 and S524 and proceeds to step S525.

[0410] As described above, the bandpass filter unit 482 controls whether to apply a bandpass filter that limits non-zero coefficients to the low frequency range when the block size of a rectangular transform block consisting of a square or rectangle is equal to or larger than a predetermined block size, based on the bandpass filter enable flag bandpass_filter_enabled_flag.

[0411] Specifically, when the bandpass filter enable flag bandpass_filter_enabled_flag is 1 (true), if the transform block size is equal to or larger than a predetermined block size, the bandpass unit 482 performs band limitation so that the transform coefficients of high frequency components are forced to become 0. Therefore, the calculation unit 214 decodes only the non-zero coefficients of the low frequency components of the transform block. This makes it possible to reduce the amount of decoding of non-zero coefficients while maintaining the coding efficiency. In addition, the inverse transform unit 213 only needs to perform the inverse transform process on the non-zero coefficients of the low frequency components of the transform block, so that the amount of processing of the inverse transform can be reduced. Therefore, the calculation complexity and implementation cost of the image decoding device can be reduced compared to when the image encoding device does not perform band limitation.

[0412] In addition, when the bandpass filter enable flag bandpass_filter_enabled_flag is 0 (false), the bandpass unit 482 does not perform band limiting even if the transform block is equal to or larger than a predetermined block size. Therefore, the calculation unit 214 decodes non-zero coefficients that exist in the low-frequency components to the high-frequency components. Therefore, in a large transform block, the reproducibility of the high-frequency components is improved compared to the case where a bandpass filter is applied, and the image quality of the decoded image is improved.

[0413] Furthermore, the bandpass_filter_enabled_flag is set for each predetermined unit (SPS, PPS, SH, CU, etc.). Therefore, the bandpass unit 482 can use the bandpass_filter_enabled_flag to adaptively control whether or not to apply a bandpass filter for each predetermined unit when the transform block size is equal to or larger than a predetermined block size.

[0414] In the examples of Figures 39 and 40, whether the transform block size is greater than or equal to a predetermined block size is determined based on whether max(TBXSize, TBYSize) is greater than or equal to a predetermined size THSize, but the determination may also be made using other of the methods described above.

[0415] Also in the third embodiment, similarly to the fourth embodiment, the bandpass filter may be controlled based on not only the transform block size but also the bandpass filter enable flag bandpass_filter_enabled_flag.

[0416] <5. Fifth embodiment> <Data unit of information> The data units in which the information on the image and the information on the encoding and decoding of the image are set (or the data to which they are targeted) described above are arbitrary and are not limited to the above examples. For example, these pieces of information may be set for each TU, TB, PU, ​​PB, CU, LCU, sub-block, block, tile, slice, picture, sequence, or component, and may target data of these data units. Of course, this data unit is set for each piece of information. In other words, all pieces of information do not have to be set for (or target) the same data unit. The storage location of these pieces of information is arbitrary, and may be stored in the header or parameter set of the above-mentioned data unit. Also, they may be stored in multiple locations.

[0417] <Control information> Control information related to the present technology described in each of the above embodiments may be transmitted from the encoding side to the decoding side. For example, control information (e.g., enabled_flag) that controls whether or not to permit (or prohibit) application of the present technology described above may be transmitted. In addition, for example, control information that specifies the upper limit or lower limit, or both, of the block size that permits (or prohibits) application of the present technology described above may be transmitted.

[0418] <Encoding / Decoding> The present technology can be applied to any image encoding / decoding that performs primary transformation and secondary transformation (inverse secondary transformation and inverse primary transformation). In other words, the specifications of transformation (inverse transformation), quantization (inverse quantization), encoding (decoding), prediction, etc. are arbitrary and are not limited to the above-mentioned examples. For example, in the transformation (inverse transformation), (inverse) transformation other than (inverse) primary transformation and (inverse) secondary transformation (i.e., three or more (inverse) transformations) may be performed. Furthermore, the encoding (decoding) may be a lossless method or a lossy method. Furthermore, quantization (inverse quantization), prediction, etc. may be omitted. Furthermore, processing not described above, such as filtering, may be performed.

[0419] <Applications of this technology> Systems, devices, processing units, etc. to which the present technology is applied can be used in any field, such as transportation, medical care, crime prevention, agriculture, livestock farming, mining, beauty, factories, home appliances, weather, and nature monitoring.

[0420] For example, the present technology can be applied to systems and devices that transmit images for viewing. For example, the present technology can be applied to systems and devices that are used for transportation. For example, the present technology can be applied to systems and devices that are used for security. For example, the present technology can be applied to systems and devices that are used for sports. For example, the present technology can be applied to systems and devices that are used for agriculture. For example, the present technology can be applied to systems and devices that are used for livestock farming. For example, the present technology can be applied to systems and devices that monitor natural conditions such as volcanoes, forests, and oceans. For example, the present technology can be applied to meteorological observation systems and meteorological observation devices that observe weather, temperature, humidity, wind speed, sunshine hours, and the like. For example, the present technology can be applied to systems and devices that observe the ecology of wild animals such as birds, fish, reptiles, amphibians, mammals, insects, and plants.

[0421] <Application to multi-viewpoint image encoding / decoding systems> The above-mentioned series of processes can be applied to a multi-viewpoint image encoding / decoding system that encodes / decodes multi-viewpoint images including images from multiple views. In this case, the present technology may be applied to the encoding / decoding of each view.

[0422] <Application to hierarchical image encoding / decoding systems> In addition, the above-mentioned series of processes can be applied to a hierarchical image coding (scalable coding) and decoding system that performs coding and decoding of hierarchical images that are layered (hierarchized) so as to have a scalability function for a predetermined parameter. In that case, the present technology may be applied to the coding and decoding of each layer.

[0423] <Computer> The above-mentioned series of processes can be executed by hardware or software. When the series of processes is executed by software, the programs constituting the software are installed in a computer. Here, the computer includes a computer built into dedicated hardware, and a general-purpose personal computer, etc., capable of executing various functions by installing various programs.

[0424] FIG. 41 is a block diagram showing an example of the hardware configuration of a computer that executes the above-mentioned series of processes by a program.

[0425] In a computer 800 shown in FIG. 41, a CPU (Central Processing Unit) 801, a ROM (Read Only Memory) 802, and a RAM (Random Access Memory) 803 are interconnected via a bus 804.

[0426] An input / output interface 810 is also connected to the bus 804. To the input / output interface 810, an input unit 811, an output unit 812, a storage unit 813, a communication unit 814, and a drive 815 are connected.

[0427] The input unit 811 includes, for example, a keyboard, a mouse, a microphone, a touch panel, an input terminal, etc. The output unit 812 includes, for example, a display, a speaker, an output terminal, etc. The storage unit 813 includes, for example, a hard disk, a RAM disk, a non-volatile memory, etc. The communication unit 814 includes, for example, a network interface. The drive 815 drives removable media 821 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory.

[0428] In the computer configured as above, the CPU 801 performs the above-mentioned series of processes by, for example, loading a program stored in the storage unit 813 into the RAM 803 via the input / output interface 810 and the bus 804 and executing the program. The RAM 803 also stores data and the like necessary for the CPU 801 to execute various processes as appropriate.

[0429] The program executed by the computer (CPU 801) can be applied by recording it on a removable medium 821 such as a package medium, for example. In this case, the program can be installed in the storage unit 813 via the input / output interface 810 by mounting the removable medium 821 on the drive 815.

[0430] This program can also be provided via a wired or wireless transmission medium such as a local area network, the Internet, digital satellite broadcasting, etc. In this case, the program can be received by the communication unit 814 and installed in the storage unit 813.

[0431] In addition, this program can also be installed in advance in the ROM 802 or the storage unit 813.

[0432] <Applications of this technology> The image encoding device 100 and the image decoding device 200 according to the above-described embodiments can be applied to various electronic devices, such as transmitters and receivers for wired broadcasting such as satellite broadcasting and cable TV, distribution over the Internet, and distribution to terminals via cellular communication, or recording devices that record images on media such as optical disks, magnetic disks, and flash memories, and playback devices that play back images from these storage media.

[0433] <First application example: Television receiver> 42 shows an example of a schematic configuration of a television device to which the above-mentioned embodiment is applied. The television device 900 includes an antenna 901, a tuner 902, a demultiplexer 903, a decoder 904, a video signal processing unit 905, a display unit 906, an audio signal processing unit 907, a speaker 908, an external interface (I / F) unit 909, a control unit 910, a user interface (I / F) unit 911, and a bus 912.

[0434] Tuner 902 extracts a signal of a desired channel from a broadcast signal received via antenna 901, and demodulates the extracted signal. Then, tuner 902 outputs an encoded bit stream obtained by demodulation to demultiplexer 903. In other words, tuner 902 serves as a transmission unit in television device 900 that receives an encoded stream in which an image is encoded.

[0435] The demultiplexer 903 separates the video stream and audio stream of the program to be viewed from the coded bit stream, and outputs each separated stream to the decoder 904. The demultiplexer 903 also extracts auxiliary data such as an EPG (Electronic Program Guide) from the coded bit stream, and supplies the extracted data to the control unit 910. Note that the demultiplexer 903 may descramble the coded bit stream if it is scrambled.

[0436] The decoder 904 decodes the video stream and audio stream input from the demultiplexer 903. Then, the decoder 904 outputs the video data generated by the decoding process to a video signal processing unit 905. In addition, the decoder 904 outputs the audio data generated by the decoding process to an audio signal processing unit 907.

[0437] The video signal processing unit 905 reproduces the video data input from the decoder 904, and displays the video on the display unit 906. The video signal processing unit 905 may also display an application screen supplied via a network on the display unit 906. The video signal processing unit 905 may also perform additional processing, such as noise removal, on the video data according to settings. Furthermore, the video signal processing unit 905 may generate images of a GUI (Graphical User Interface), such as a menu, a button, or a cursor, and superimpose the generated images on the output image.

[0438] The display unit 906 is driven by a drive signal supplied from the video signal processing unit 905, and displays a video or image on the video surface of a display device (for example, a liquid crystal display, a plasma display, or an OELD (Organic ElectroLuminescence Display)).

[0439] The audio signal processing unit 907 performs playback processing such as D / A conversion and amplification on the audio data input from the decoder 904, and outputs audio from a speaker 908. The audio signal processing unit 907 may also perform additional processing such as noise removal on the audio data.

[0440] The external interface unit 909 is an interface for connecting the television device 900 to an external device or a network. For example, a video stream or an audio stream received via the external interface unit 909 may be decoded by the decoder 904. That is, the external interface unit 909 also serves as a transmission unit in the television device 900 that receives an encoded stream in which an image is encoded.

[0441] The control unit 910 has a processor such as a CPU, and memories such as a RAM and a ROM. The memory stores programs executed by the CPU, program data, EPG data, data acquired via a network, and the like. The programs stored in the memory are read and executed by the CPU, for example, when the television device 900 is started up. The CPU controls the operation of the television device 900 by executing the programs, for example, in response to an operation signal input from a user interface unit 911.

[0442] The user interface unit 911 is connected to the control unit 910. The user interface unit 911 has, for example, buttons and switches for the user to operate the television device 900, a receiving unit for a remote control signal, and the like. The user interface unit 911 detects an operation by the user via these components, generates an operation signal, and outputs the generated operation signal to the control unit 910.

[0443] The bus 912 connects the tuner 902, the demultiplexer 903, the decoder 904, the video signal processing unit 905, the audio signal processing unit 907, the external interface unit 909, and the control unit 910 to one another.

[0444] In the television device 900 configured in this manner, the decoder 904 may have the functions of the above-mentioned image decoding device 200. That is, the decoder 904 may decode the coded data by the method described in each of the above-mentioned embodiments. In this manner, the television device 900 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0445] Furthermore, in the television device 900 configured in this manner, the video signal processing unit 905 may be configured to, for example, encode image data supplied from the decoder 904, and output the resulting encoded data to the outside of the television device 900 via the external interface unit 909. The video signal processing unit 905 may have the functions of the above-mentioned image encoding device 100. That is, the video signal processing unit 905 may be configured to encode image data supplied from the decoder 904 by the method described in each of the above-mentioned embodiments. In this way, the television device 900 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0446] <Second application example: mobile phone> 43 shows an example of a schematic configuration of a mobile phone to which the above-mentioned embodiment is applied. The mobile phone 920 includes an antenna 921, a communication unit 922, an audio codec 923, a speaker 924, a microphone 925, a camera unit 926, an image processing unit 927, a multiplexing / demultiplexing unit 928, a recording / playback unit 929, a display unit 930, a control unit 931, an operation unit 932, and a bus 933.

[0447] The antenna 921 is connected to the communication unit 922. The speaker 924 and microphone 925 are connected to the audio codec 923. The operation unit 932 is connected to the control unit 931. The bus 933 connects the communication unit 922, the audio codec 923, the camera unit 926, the image processing unit 927, the demultiplexing unit 928, the recording and playback unit 929, the display unit 930, and the control unit 931 to one another.

[0448] The mobile phone 920 performs operations such as sending and receiving voice signals, sending and receiving e-mail or image data, taking images, and recording data in various operation modes including voice call mode, data communication mode, photography mode, and videophone mode.

[0449] In the voice call mode, an analog voice signal generated by the microphone 925 is supplied to the voice codec 923. The voice codec 923 converts the analog voice signal into voice data, and A / D converts and compresses the converted voice data. Then, the voice codec 923 outputs the compressed voice data to the communication unit 922. The communication unit 922 encodes and modulates the voice data to generate a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921. Also, the communication unit 922 amplifies and frequency-converts a wireless signal received via the antenna 921 to obtain a received signal. Then, the communication unit 922 demodulates and decodes the received signal to generate voice data, and outputs the generated voice data to the voice codec 923. The voice codec 923 expands and D / A-converts the voice data to generate an analog voice signal. Then, the voice codec 923 supplies the generated voice signal to the speaker 924 to output the voice.

[0450] In the data communication mode, for example, the control unit 931 generates character data constituting an e-mail in response to an operation by the user via the operation unit 932. The control unit 931 also causes the display unit 930 to display the characters. The control unit 931 also generates e-mail data in response to a transmission instruction from the user via the operation unit 932, and outputs the generated e-mail data to the communication unit 922. The communication unit 922 encodes and modulates the e-mail data to generate a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921. The communication unit 922 also amplifies and frequency-converts a radio signal received via the antenna 921 to obtain a received signal. Then, the communication unit 922 demodulates and decodes the received signal to restore the e-mail data, and outputs the restored e-mail data to the control unit 931. The control unit 931 causes the display unit 930 to display the contents of the e-mail, and also supplies the e-mail data to the recording and reproducing unit 929, which writes the data into the storage medium.

[0451] The recording and reproducing unit 929 has any readable and writable storage medium. For example, the storage medium may be a built-in storage medium such as a RAM or a flash memory, or may be an external storage medium such as a hard disk, a magnetic disk, a magneto-optical disk, an optical disk, a USB (Universal Serial Bus) memory, or a memory card.

[0452] Also, in the shooting mode, for example, the camera unit 926 captures an image of a subject to generate image data, and outputs the generated image data to the image processing unit 927. The image processing unit 927 encodes the image data input from the camera unit 926, and supplies the encoded stream to the recording and playback unit 929, which writes the encoded stream into its storage medium.

[0453] Furthermore, in the image display mode, the recording and reproducing unit 929 reads out the coded stream recorded in the storage medium and outputs it to the image processing unit 927. The image processing unit 927 decodes the coded stream input from the recording and reproducing unit 929, supplies the image data to the display unit 930, and displays the image.

[0454] Also, in the videophone mode, for example, the demultiplexer 928 multiplexes the video stream coded by the image processor 927 and the audio stream input from the audio codec 923, and outputs the multiplexed stream to the communication unit 922. The communication unit 922 codes and modulates the stream to generate a transmission signal. Then, the communication unit 922 transmits the generated transmission signal to a base station (not shown) via the antenna 921. Also, the communication unit 922 amplifies and frequency-converts a wireless signal received via the antenna 921 to obtain a received signal. These transmission signals and received signals may include coded bit streams. Then, the communication unit 922 demodulates and decodes the received signal to restore the stream, and outputs the restored stream to the demultiplexer 928. The demultiplexer 928 separates the input stream into a video stream and an audio stream, and outputs the video stream to the image processor 927 and the audio stream to the audio codec 923. The image processor 927 decodes the video stream to generate video data. The video data is supplied to a display unit 930, and a series of images is displayed on the display unit 930. The audio codec 923 expands the audio stream and performs D / A conversion to generate an analog audio signal. The audio codec 923 then supplies the generated audio signal to a speaker 924 to output audio.

[0455] In the mobile phone 920 configured in this manner, for example, the image processing unit 927 may have the functions of the above-mentioned image encoding device 100. That is, the image processing unit 927 may encode image data by the method described in each of the above-mentioned embodiments. In this manner, the mobile phone 920 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0456] In the mobile phone 920 configured in this manner, for example, the image processing unit 927 may have the functions of the image decoding device 200 described above. That is, the image processing unit 927 may decode the encoded data by the method described in each of the above embodiments. In this manner, the mobile phone 920 can obtain the same effects as those of each of the above embodiments with reference to Figs. 1 to 23.

[0457] <Third application example: recording / playback device> FIG. 44 shows an example of a schematic configuration of a recording and reproducing device to which the above-mentioned embodiment is applied. The recording and reproducing device 940, for example, encodes audio data and video data of a received broadcast program and records it on a recording medium. The recording and reproducing device 940 may also encode audio data and video data acquired from another device and record it on a recording medium. The recording and reproducing device 940 also reproduces data recorded on a recording medium on a monitor and a speaker, for example, in response to a user's instruction. At this time, the recording and reproducing device 940 decodes the audio data and video data.

[0458] The recording and playback device 940 includes a tuner 941, an external interface (I / F) unit 942, an encoder 943, an HDD (Hard Disk Drive) unit 944, a disk drive 945, a selector 946, a decoder 947, an OSD (On-Screen Display) unit 948, a control unit 949, and a user interface (I / F) unit 950.

[0459] The tuner 941 extracts a signal of a desired channel from a broadcast signal received via an antenna (not shown), and demodulates the extracted signal. Then, the tuner 941 outputs the coded bit stream obtained by the demodulation to the selector 946. That is, the tuner 941 serves as a transmission unit in the recording / playback device 940.

[0460] The external interface unit 942 is an interface for connecting the recording / reproducing device 940 to an external device or a network. The external interface unit 942 may be, for example, an IEEE (Institute of Electrical and Electronic Engineers) 1394 interface, a network interface, a USB interface, or a flash memory interface. For example, video data and audio data received via the external interface unit 942 are input to an encoder 943. That is, the external interface unit 942 serves as a transmission unit in the recording / reproducing device 940.

[0461] The encoder 943 encodes the video data and audio data when the video data and audio data input from the external interface unit 942 have not been encoded. Then, the encoder 943 outputs the encoded bit stream to the selector 946.

[0462] The HDD unit 944 records encoded bit streams in which content data such as video and audio are compressed, various programs, and other data on an internal hard disk, and also reads these data from the hard disk when playing back video and audio.

[0463] The disk drive 945 records and reads data on a recording medium that is loaded into it. The recording medium loaded into the disk drive 945 may be, for example, a DVD (Digital Versatile Disc) disk (DVD-Video, DVD-RAM (DVD - Random Access Memory), DVD-R (DVD - Recordable), DVD-RW (DVD - Rewritable), DVD+R (DVD + Recordable), DVD+RW (DVD + Rewritable), etc.) or a Blu-ray (registered trademark) disk.

[0464] When recording video and audio, the selector 946 selects the coded bit stream input from the tuner 941 or the encoder 943, and outputs the selected coded bit stream to the HDD 944 or the disk drive 945. When playing back video and audio, the selector 946 outputs the coded bit stream input from the HDD 944 or the disk drive 945 to the decoder 947.

[0465] The decoder 947 decodes the encoded bit stream to generate video data and audio data, and outputs the generated video data to an OSD unit 948. The decoder 947 also outputs the generated audio data to an external speaker.

[0466] The OSD unit 948 reproduces the video data input from the decoder 947 and displays the video. The OSD unit 948 may also superimpose GUI images, such as menus, buttons, or cursors, on the video to be displayed.

[0467] The control unit 949 has a processor such as a CPU, and memories such as a RAM and a ROM. The memory stores programs executed by the CPU, program data, and the like. The programs stored in the memory are read and executed by the CPU, for example, when the recording and reproducing device 940 is started. The CPU controls the operation of the recording and reproducing device 940 in response to an operation signal input from the user interface unit 950, for example, by executing the programs.

[0468] The user interface unit 950 is connected to the control unit 949. The user interface unit 950 has, for example, buttons and switches for the user to operate the recording / playback device 940, a receiving unit for remote control signals, and the like. The user interface unit 950 detects operations by the user via these components, generates an operation signal, and outputs the generated operation signal to the control unit 949.

[0469] In the recording and reproducing device 940 configured in this manner, for example, the encoder 943 may have the functions of the above-mentioned image encoding device 100. That is, the encoder 943 may encode image data by the method explained in each of the above-mentioned embodiments. In this manner, the recording and reproducing device 940 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0470] In the recording and reproducing device 940 configured as above, for example, the decoder 947 may have the function of the above-mentioned image decoding device 200. That is, the decoder 947 may decode the encoded data by the method described in each of the above embodiments. In this way, the recording and reproducing device 940 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0471] <Fourth Application Example: Imaging Device> 45 shows an example of a schematic configuration of an image capturing device to which the above-described embodiments are applied. The image capturing device 960 captures an image of a subject to generate an image, encodes the image data, and records the encoded image data on a recording medium.

[0472] The imaging device 960 includes an optical block 961, an imaging unit 962, a signal processing unit 963, an image processing unit 964, a display unit 965, an external interface (I / F) unit 966, a memory unit 967, a media drive 968, an OSD unit 969, a control unit 970, a user interface (I / F) unit 971, and a bus 972.

[0473] The optical block 961 is connected to the imaging unit 962. The imaging unit 962 is connected to the signal processing unit 963. The display unit 965 is connected to the image processing unit 964. The user interface unit 971 is connected to the control unit 970. The bus 972 connects the image processing unit 964, the external interface unit 966, the memory unit 967, the media drive 968, the OSD unit 969, and the control unit 970 to one another.

[0474] The optical block 961 has a focus lens, an aperture mechanism, and the like. The optical block 961 forms an optical image of a subject on an imaging surface of an imaging unit 962. The imaging unit 962 has an image sensor such as a CCD (Charge Coupled Device) or a CMOS (Complementary Metal Oxide Semiconductor), and converts the optical image formed on the imaging surface into an image signal as an electric signal by photoelectric conversion. Then, the imaging unit 962 outputs the image signal to a signal processing unit 963.

[0475] The signal processing unit 963 performs various camera signal processing such as knee correction, gamma correction, and color correction on the image signal input from the imaging unit 962. The signal processing unit 963 outputs the image data after the camera signal processing to the image processing unit 964.

[0476] The image processing unit 964 encodes the image data input from the signal processing unit 963 to generate encoded data. Then, the image processing unit 964 outputs the generated encoded data to the external interface unit 966 or the media drive 968. Also, the image processing unit 964 decodes the encoded data input from the external interface unit 966 or the media drive 968 to generate image data. Then, the image processing unit 964 outputs the generated image data to the display unit 965. Also, the image processing unit 964 may output the image data input from the signal processing unit 963 to the display unit 965 to display an image. Also, the image processing unit 964 may superimpose display data acquired from the OSD unit 969 on the image to be output to the display unit 965.

[0477] The OSD unit 969 generates GUI images such as menus, buttons, and cursors, and outputs the generated images to the image processing unit 964.

[0478] The external interface unit 966 is configured as, for example, a USB input / output terminal. For example, the external interface unit 966 connects the imaging device 960 to a printer when printing an image. A drive is also connected to the external interface unit 966 as necessary. For example, a removable medium such as a magnetic disk or an optical disk is loaded into the drive, and a program read from the removable medium can be installed in the imaging device 960. Furthermore, the external interface unit 966 may be configured as a network interface connected to a network such as a LAN or the Internet. That is, the external interface unit 966 serves as a transmission unit in the imaging device 960.

[0479] The recording medium mounted in the media drive 968 may be any removable medium that is readable and writable, such as a magnetic disk, a magneto-optical disk, an optical disk, or a semiconductor memory. Also, a recording medium may be fixedly mounted in the media drive 968, and a non-portable storage unit such as a built-in hard disk drive or SSD (Solid State Drive) may be configured.

[0480] The control unit 970 has a processor such as a CPU, and memories such as a RAM and a ROM. The memory stores programs executed by the CPU, program data, and the like. The programs stored in the memory are read and executed by the CPU, for example, when the imaging device 960 is started. The CPU controls the operation of the imaging device 960 in response to an operation signal input from a user interface unit 971, for example, by executing the programs.

[0481] The user interface unit 971 is connected to the control unit 970. The user interface unit 971 has, for example, buttons and switches for the user to operate the imaging device 960. The user interface unit 971 detects operations by the user via these components, generates an operation signal, and outputs the generated operation signal to the control unit 970.

[0482] In the imaging device 960 configured in this manner, for example, the image processing unit 964 may have the functions of the above-mentioned image encoding device 100. That is, the image processing unit 964 may encode image data by the method described in each of the above embodiments. In this manner, the imaging device 960 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0483] In the imaging device 960 configured as above, for example, the image processing unit 964 may have the function of the image decoding device 200 described above. That is, the image processing unit 964 may decode the encoded data by the method described in each of the above embodiments. In this way, the imaging device 960 can obtain the same effects as those of each of the above embodiments with reference to Figs. 1 to 23.

[0484] <5th Application Example: Video Set> In addition, the present technology can be implemented as any configuration mounted on an arbitrary device or device constituting a system, for example, a processor as a system LSI (Large Scale Integration), a module using multiple processors, a unit using multiple modules, a set in which other functions are further added to a unit, etc. (i.e., a configuration of a part of a device). Fig. 46 shows an example of a schematic configuration of a video set to which the present technology is applied.

[0485] In recent years, electronic devices have become increasingly multifunctional, and in their development and manufacture, when some of their components are sold or provided, it is not only the case that they are implemented as a component having one function, but it is also becoming common to combine multiple components with related functions and implement them as a set with multiple functions.

[0486] The video set 1300 shown in FIG. 46 is such a multi-functional configuration, combining a device having functionality related to image encoding or decoding (either one or both) with a device having other functions related to those functions.

[0487] As shown in FIG. 46, the video set 1300 has a group of modules such as a video module 1311, an external memory 1312, a power management module 1313, and a front-end module 1314, as well as devices with associated functions such as connectivity 1321, a camera 1322, and a sensor 1323.

[0488] A module is a component that has a cohesive function, which is a collection of several mutually related component functions. The specific physical configuration is arbitrary, but for example, a module may be configured by integrating a number of processors, each of which has a function, electronic circuit elements such as resistors and capacitors, and other devices, arranged on a wiring board, etc. It is also possible to combine a module with other modules or processors to create a new module.

[0489] In the example of FIG. 46, the video module 1311 is a combination of components having functions related to image processing, and includes an application processor, a video processor, a broadband modem 1333, and an RF module 1334.

[0490] A processor is a configuration having a predetermined function integrated on a semiconductor chip by SoC (System On a Chip), and is also called, for example, system LSI (Large Scale Integration). This configuration having a predetermined function may be a logic circuit (hardware configuration), or may be a CPU, ROM, RAM, etc., and a program executed using them (software configuration), or may be a combination of both. For example, a processor may have a logic circuit, a CPU, ROM, RAM, etc., and may realize some of the functions by the logic circuit (hardware configuration) and other functions by a program executed in the CPU (software configuration).

[0491] The application processor 1331 in Fig. 46 is a processor that executes applications related to image processing. The application executed in this application processor 1331 not only performs arithmetic processing to realize a predetermined function, but also controls configurations inside and outside the video module 1311, such as the video processor 1332, as necessary.

[0492] The video processor 1332 is a processor having functions related to image encoding and / or decoding.

[0493] The broadband modem 1333 converts data (digital signals) transmitted by wired or wireless (or both) broadband communication performed via a broadband line such as the Internet or a public telephone network into analog signals by digital modulation or the like, and demodulates analog signals received by the broadband communication and converts them into data (digital signals). The broadband modem 1333 processes any information, such as image data processed by the video processor 1332, a stream in which image data is encoded, an application program, setting data, etc.

[0494] The RF module 1334 is a module that performs frequency conversion, modulation / demodulation, amplification, filtering, etc., on an RF (Radio Frequency) signal transmitted and received via an antenna. For example, the RF module 1334 performs frequency conversion, etc., on a baseband signal generated by the broadband modem 1333 to generate an RF signal. Also, for example, the RF module 1334 performs frequency conversion, etc., on an RF signal received via the front-end module 1314 to generate a baseband signal.

[0495] As indicated by a dotted line 1341 in FIG. 46, the application processor 1331 and the video processor 1332 may be integrated into one processor.

[0496] The external memory 1312 is a module having a storage device provided outside the video module 1311 and used by the video module 1311. The storage device of the external memory 1312 may be realized by any physical configuration, but since it is generally used for storing large amounts of data such as image data in units of frames, it is desirable to realize it by a relatively inexpensive and large-capacity semiconductor memory such as a DRAM (Dynamic Random Access Memory).

[0497] The power management module 1313 manages and controls the power supply to the video module 1311 (each component within the video module 1311).

[0498] The front-end module 1314 is a module that provides a front-end function (circuitry at a transmitting / receiving end on the antenna side) for the RF module 1334. As shown in FIG. 46, the front-end module 1314 has, for example, an antenna unit 1351, a filter 1352, and an amplifier unit 1353.

[0499] The antenna unit 1351 has an antenna for transmitting and receiving a radio signal and its peripheral components. The antenna unit 1351 transmits a signal supplied from the amplifier unit 1353 as a radio signal, and supplies a received radio signal to the filter 1352 as an electric signal (RF signal). The filter 1352 performs filtering and the like on the RF signal received via the antenna unit 1351, and supplies the processed RF signal to the RF module 1334. The amplifier unit 1353 amplifies the RF signal supplied from the RF module 1334, and supplies it to the antenna unit 1351.

[0500] The connectivity 1321 is a module having a function related to connection with the outside. The physical configuration of the connectivity 1321 is arbitrary. For example, the connectivity 1321 has a configuration having a communication function other than the communication standard supported by the broadband modem 1333, an external input / output terminal, etc.

[0501] For example, the connectivity 1321 may have a module having a communication function conforming to a wireless communication standard such as Bluetooth (registered trademark), IEEE 802.11 (e.g., Wi-Fi (Wireless Fidelity, registered trademark)), NFC (Near Field Communication), or IrDA (InfraRed Data Association), or an antenna for transmitting and receiving a signal conforming to the standard. Also, for example, the connectivity 1321 may have a module having a communication function conforming to a wired communication standard such as USB (Universal Serial Bus) or HDMI (High-Definition Multimedia Interface, registered trademark), or a terminal conforming to the standard. Furthermore, for example, the connectivity 1321 may have other data (signal) transmission functions such as an analog input / output terminal.

[0502] The connectivity 1321 may include a device to which data (signals) are transmitted. For example, the connectivity 1321 may have a drive (including not only removable media drives but also hard disks, SSDs (Solid State Drives), NAS (Network Attached Storage), etc.) that reads and writes data from and to recording media such as magnetic disks, optical disks, magneto-optical disks, and semiconductor memories. The connectivity 1321 may also have an output device for images and sounds (such as a monitor or speaker).

[0503] The camera 1322 is a module having a function of capturing an image of a subject and obtaining image data of the subject. The image data obtained by capturing an image of the camera 1322 is supplied to, for example, a video processor 1332 and encoded.

[0504] The sensor 1323 is a module having any sensor function, such as a sound sensor, an ultrasonic sensor, a light sensor, an illuminance sensor, an infrared sensor, an image sensor, a rotation sensor, an angle sensor, an angular velocity sensor, a speed sensor, an acceleration sensor, a tilt sensor, a magnetic identification sensor, an impact sensor, a temperature sensor, etc. Data detected by the sensor 1323 is supplied to, for example, an application processor 1331 and used by an application or the like.

[0505] The configurations described above as modules may be realized as processors, and conversely, the configurations described above as processors may be realized as modules.

[0506] In the video set 1300 configured as above, the present technology can be applied to the video processor 1332 as described below. Therefore, the video set 1300 can be implemented as a set to which the present technology is applied.

[0507] <Video processor configuration example> FIG. 47 shows an example of a schematic configuration of the video processor 1332 (FIG. 46) to which the present technology is applied.

[0508] In the example of Figure 47, the video processor 1332 has the function of receiving video and audio signals and encoding them in a predetermined manner, and the function of decoding the encoded video and audio data and playing and outputting the video and audio signals.

[0509] 47, the video processor 1332 includes a video input processing unit 1401, a first image enlargement / reduction unit 1402, a second image enlargement / reduction unit 1403, a video output processing unit 1404, a frame memory 1405, and a memory control unit 1406. The video processor 1332 also includes an encoding / decoding engine 1407, video ES (Elementary Stream) buffers 1408A and 1408B, and audio ES buffers 1409A and 1409B. The video processor 1332 also includes an audio encoder 1410, an audio decoder 1411, a multiplexing unit (MUX (Multiplexer)) 1412, a demultiplexing unit (DMUX (Demultiplexer)) 1413, and a stream buffer 1414.

[0510] The video input processing unit 1401 acquires a video signal input from, for example, the connectivity 1321 (FIG. 46) or the like, and converts it into digital image data. The first image scaling unit 1402 performs format conversion, image scaling, etc. on the image data. The second image scaling unit 1403 performs image scaling on the image data in accordance with the format of the output destination via the video output processing unit 1404, and performs format conversion and image scaling similar to the first image scaling unit 1402. The video output processing unit 1404 performs format conversion, conversion to an analog signal, etc. on the image data, and outputs it to, for example, the connectivity 1321 as a reproduced video signal.

[0511] The frame memory 1405 is a memory for storing image data that is shared by the video input processing unit 1401, the first image enlargement / reduction unit 1402, the second image enlargement / reduction unit 1403, the video output processing unit 1404, and the encoding / decoding engine 1407. The frame memory 1405 is realized as a semiconductor memory such as a DRAM.

[0512] The memory control unit 1406 receives a synchronization signal from the encoding / decoding engine 1407 and controls access to the frame memory 1405 for writing and reading in accordance with an access schedule to the frame memory 1405 written in an access management table 1406A. The access management table 1406A is updated by the memory control unit 1406 in accordance with the processes executed by the encoding / decoding engine 1407, the first image resizing unit 1402, the second image resizing unit 1403, etc.

[0513] The encoding / decoding engine 1407 performs encoding processing of image data and decoding processing of a video stream which is data obtained by encoding image data. For example, the encoding / decoding engine 1407 encodes image data read from the frame memory 1405 and sequentially writes the encoded image data to the video ES buffer 1408A as a video stream. Also, for example, the encoding / decoding engine 1407 sequentially reads and decodes the video stream from the video ES buffer 1408B and sequentially writes the video stream to the frame memory 1405 as image data. The encoding / decoding engine 1407 uses the frame memory 1405 as a working area for these encoding and decoding operations. Also, the encoding / decoding engine 1407 outputs a synchronization signal to the memory control unit 1406, for example, at the timing of starting processing for each macroblock.

[0514] The video ES buffer 1408A buffers the video stream generated by the encoding / decoding engine 1407 and supplies it to a multiplexing unit (MUX) 1412. The video ES buffer 1408B buffers the video stream supplied from a demultiplexing unit (DMUX) 1413 and supplies it to the encoding / decoding engine 1407.

[0515] The audio ES buffer 1409A buffers the audio stream generated by the audio encoder 1410, and supplies it to a multiplexing unit (MUX) 1412. The audio ES buffer 1409B buffers the audio stream supplied from a demultiplexing unit (DMUX) 1413, and supplies it to an audio decoder 1411.

[0516] The audio encoder 1410 converts, for example, an audio signal input from the connectivity 1321 or the like into a digital signal and encodes the signal in a predetermined format, for example, the MPEG audio format or AC3 (Audio Code number 3) format. The audio encoder 1410 sequentially writes an audio stream, which is data obtained by encoding the audio signal, into the audio ES buffer 1409A. The audio decoder 1411 decodes the audio stream supplied from the audio ES buffer 1409B, converts it into an analog signal, for example, and supplies it to the connectivity 1321 or the like as a reproduced audio signal.

[0517] The multiplexing unit (MUX) 1412 multiplexes a video stream and an audio stream. This multiplexing method (i.e., the format of the bit stream generated by multiplexing) is arbitrary. Furthermore, during this multiplexing, the multiplexing unit (MUX) 1412 can also add predetermined header information, etc. to the bit stream. In other words, the multiplexing unit (MUX) 1412 can convert the format of the stream by multiplexing. For example, the multiplexing unit (MUX) 1412 multiplexes a video stream and an audio stream to convert them into a transport stream, which is a bit stream in a format for transfer. Furthermore, for example, the multiplexing unit (MUX) 1412 multiplexes a video stream and an audio stream to convert them into data (file data) in a file format for recording.

[0518] The demultiplexer (DMUX) 1413 demultiplexes a bit stream in which a video stream and an audio stream are multiplexed, using a method corresponding to the multiplexing by the multiplexer (MUX) 1412. That is, the demultiplexer (DMUX) 1413 extracts a video stream and an audio stream from a bit stream read from the stream buffer 1414 (separates the video stream from the audio stream). That is, the demultiplexer (DMUX) 1413 can convert the format of a stream by demultiplexing (reverse conversion of the conversion by the multiplexer (MUX) 1412). For example, the demultiplexer (DMUX) 1413 can obtain a transport stream supplied from, for example, the connectivity 1321 or the broadband modem 1333 via the stream buffer 1414, and convert the transport stream into a video stream and an audio stream by demultiplexing. Also, for example, a demultiplexing unit (DMUX) 1413 can obtain file data read from various recording media by, for example, connectivity 1321 via a stream buffer 1414 and demultiplex the data to convert it into a video stream and an audio stream.

[0519] The stream buffer 1414 buffers the bit stream. For example, the stream buffer 1414 buffers the transport stream supplied from the multiplexing unit (MUX) 1412, and supplies the transport stream to, for example, the connectivity 1321 or the broadband modem 1333 at a predetermined timing or based on an external request.

[0520] Also, for example, the stream buffer 1414 buffers the file data supplied from the multiplexing unit (MUX) 1412, and supplies the data to, for example, the connectivity 1321 at a predetermined timing or based on an external request, etc., and records the data on various recording media.

[0521] Furthermore, the stream buffer 1414 buffers a transport stream obtained, for example, via the connectivity 1321 or the broadband modem 1333, and supplies it to a demultiplexing unit (DMUX) 1413 at a predetermined timing or based on an external request, etc.

[0522] Further, the stream buffer 1414 buffers file data read from various recording media, for example, in the connectivity 1321, and supplies the data to a demultiplexer (DMUX) 1413 at a predetermined timing or based on an external request.

[0523] Next, an example of the operation of the video processor 1332 configured as above will be described. For example, a video signal input to the video processor 1332 from the connectivity 1321 or the like is converted into digital image data of a predetermined format such as 4:2:2 Y / Cb / Cr format by the video input processing unit 1401, and sequentially written to the frame memory 1405. This digital image data is read out to the first image scaling unit 1402 or the second image scaling unit 1403, where it is subjected to format conversion to a predetermined format such as 4:2:0 Y / Cb / Cr format and scaling processing, and is written again to the frame memory 1405. This image data is coded by the encoding / decoding engine 1407, and written to the video ES buffer 1408A as a video stream.

[0524] Furthermore, an audio signal input to the video processor 1332 from the connectivity 1321 or the like is encoded by the audio encoder 1410 and written as an audio stream to the audio ES buffer 1409A.

[0525] The video stream in the video ES buffer 1408A and the audio stream in the audio ES buffer 1409A are read out and multiplexed by a multiplexing unit (MUX) 1412, and converted into a transport stream, file data, or the like. The transport stream generated by the multiplexing unit (MUX) 1412 is buffered in a stream buffer 1414, and then output to an external network via, for example, the connectivity 1321 or the broadband modem 1333. Also, the file data generated by the multiplexing unit (MUX) 1412 is buffered in the stream buffer 1414, and then output to, for example, the connectivity 1321, and recorded on various recording media.

[0526] Also, a transport stream input to the video processor 1332 from an external network via, for example, the connectivity 1321 or the broadband modem 1333 is buffered in the stream buffer 1414 and then demultiplexed by the demultiplexer (DMUX) 1413. Also, file data read from various recording media in, for example, the connectivity 1321 and input to the video processor 1332 is buffered in the stream buffer 1414 and then demultiplexed by the demultiplexer (DMUX) 1413. In other words, the transport stream or file data input to the video processor 1332 is separated by the demultiplexer (DMUX) 1413 into a video stream and an audio stream.

[0527] The audio stream is supplied to an audio decoder 1411 via an audio ES buffer 1409B, where it is decoded and the audio signal is reproduced. The video stream is written to a video ES buffer 1408B, and then sequentially read and decoded by an encoding / decoding engine 1407, and written to a frame memory 1405. The decoded image data is enlarged or reduced by a second image enlargement / reduction unit 1403, and written to the frame memory 1405. The decoded image data is then read to a video output processing unit 1404, where it is format-converted to a predetermined format such as the 4:2:2 Y / Cb / Cr format, and further converted to an analog signal, and the video signal is reproduced and output.

[0528] When applying the present technology to the video processor 1332 configured in this manner, it is sufficient to apply the present technology according to each of the above-mentioned embodiments to the encoding / decoding engine 1407. That is, for example, the encoding / decoding engine 1407 may have the function of the above-mentioned image encoding device 100 or the function of the image decoding device 200, or both. In this way, the video processor 1332 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0529] In addition, in the encoding / decoding engine 1407, the present technology (i.e., the functions of the image encoding device 100 or the functions of the image decoding device 200, or both) may be realized by hardware such as a logic circuit, or by software such as an embedded program, or by both.

[0530] <Other examples of video processor configurations> Fig. 48 shows another example of a schematic configuration of the video processor 1332 to which the present technology is applied. In the example of Fig. 48, the video processor 1332 has a function of encoding and decoding video data in a predetermined format.

[0531] 48, the video processor 1332 has a control unit 1511, a display interface 1512, a display engine 1513, an image processing engine 1514, and an internal memory 1515. The video processor 1332 also has a codec engine 1516, a memory interface 1517, a multiplexing / demultiplexing unit (MUX DMUX) 1518, a network interface 1519, and a video interface 1520.

[0532] The control unit 1511 controls the operation of each processing unit in the video processor 1332, such as a display interface 1512, a display engine 1513, an image processing engine 1514, and a codec engine 1516.

[0533] As shown in FIG. 48, the control unit 1511 has, for example, a main CPU 1531, a sub CPU 1532, and a system controller 1533. The main CPU 1531 executes programs and the like for controlling the operation of each processing unit in the video processor 1332. The main CPU 1531 generates control signals according to the programs and the like and supplies them to each processing unit (i.e., controls the operation of each processing unit). The sub CPU 1532 plays an auxiliary role to the main CPU 1531. For example, the sub CPU 1532 executes child processes and subroutines of the programs and the like executed by the main CPU 1531. The system controller 1533 controls the operations of the main CPU 1531 and the sub CPU 1532, such as by specifying the programs executed by the main CPU 1531 and the sub CPU 1532.

[0534] The display interface 1512 outputs image data to, for example, the connectivity 1321 under the control of the control unit 1511. For example, the display interface 1512 converts digital image data into an analog signal and outputs the image data to a monitor device of the connectivity 1321 as a reproduced video signal or as the digital image data itself.

[0535] Under the control of the control unit 1511, the display engine 1513 performs various conversion processes such as format conversion, size conversion, and color gamut conversion on the image data so that the image matches the hardware specifications of the monitor device or the like that displays the image.

[0536] Under the control of the control unit 1511, the image processing engine 1514 performs predetermined image processing, such as filtering to improve image quality, on the image data.

[0537] The internal memory 1515 is a memory provided inside the video processor 1332 and shared by the display engine 1513, the image processing engine 1514, and the codec engine 1516. The internal memory 1515 is used, for example, for data transfer between the display engine 1513, the image processing engine 1514, and the codec engine 1516. For example, the internal memory 1515 stores data supplied from the display engine 1513, the image processing engine 1514, or the codec engine 1516, and supplies the data to the display engine 1513, the image processing engine 1514, or the codec engine 1516 as necessary (for example, in response to a request). The internal memory 1515 may be realized by any storage device, but since it is generally often used to store small amounts of data such as image data and parameters in units of blocks, it is desirable to realize it by a semiconductor memory such as an SRAM (Static Random Access Memory) that has a relatively small capacity (compared to, for example, the external memory 1312) but a high response speed.

[0538] The codec engine 1516 performs processing related to encoding and decoding of image data. The codec engine 1516 can support any encoding and decoding method, and the number of methods may be one or more. For example, the codec engine 1516 may be provided with codec functions for a plurality of encoding and decoding methods, and may encode image data or decode encoded data using a codec function selected from among the codec functions.

[0539] In the example shown in FIG. 48, the codec engine 1516 has, as functional blocks for codec-related processing, for example, MPEG-2 Video 1541, AVC / H.264 1542, HEVC / H.265 1543, HEVC / H.265 (Scalable) 1544, HEVC / H.265 (Multi-view) 1545, and MPEG-DASH 1551.

[0540] MPEG-2 Video 1541 is a functional block that encodes and decodes image data in the MPEG-2 format. AVC / H.264 1542 is a functional block that encodes and decodes image data in the AVC format. HEVC / H.265 1543 is a functional block that encodes and decodes image data in the HEVC format. HEVC / H.265 (Scalable) 1544 is a functional block that scalably encodes and scalably decodes image data in the HEVC format. HEVC / H.265 (Multi-view) 1545 is a functional block that performs multi-view encoding and multi-view decoding of image data in the HEVC format.

[0541] MPEG-DASH1551 is a functional block that transmits and receives image data using the MPEG-DASH (MPEG-Dynamic Adaptive Streaming over HTTP) method. MPEG-DASH is a technology that uses HTTP (HyperText Transfer Protocol) to stream video, and one of its features is that it selects and transmits the appropriate data segment by segment from among multiple encoded data with different resolutions and other characteristics that have been prepared in advance. MPEG-DASH1551 generates streams that comply with the standard and controls the transmission of these streams, and uses the above-mentioned MPEG-2 Video1541 to HEVC / H.265 (Multi-view)1545 for encoding and decoding image data.

[0542] The memory interface 1517 is an interface for the external memory 1312. Data supplied from the image processing engine 1514 or the codec engine 1516 is supplied to the external memory 1312 via the memory interface 1517. In addition, data read from the external memory 1312 is supplied to the video processor 1332 (the image processing engine 1514 or the codec engine 1516) via the memory interface 1517.

[0543] The multiplexing / demultiplexing unit (MUX DMUX) 1518 multiplexes and demultiplexes various types of data related to images, such as bit streams of encoded data, image data, video signals, etc. The method of this multiplexing / demultiplexing is arbitrary. For example, when multiplexing, the multiplexing / demultiplexing unit (MUX DMUX) 1518 can not only combine multiple pieces of data into one, but also add predetermined header information, etc. to the data. Also, when demultiplexing, the multiplexing / demultiplexing unit (MUX DMUX) 1518 can not only divide one piece of data into multiple pieces, but also add predetermined header information, etc. to each piece of divided data. In other words, the multiplexing / demultiplexing unit (MUX DMUX) 1518 can convert the format of data by multiplexing / demultiplexing. For example, the multiplexing / demultiplexing unit (MUX DMUX) 1518 can convert a bit stream into a transport stream, which is a bit stream in a format for transfer, or data (file data) in a file format for recording, by multiplexing a bit stream. Of course, the reverse conversion is also possible by demultiplexing.

[0544] The network interface 1519 is an interface for, for example, the broadband modem 1333, the connectivity 1321, etc. The video interface 1520 is an interface for, for example, the connectivity 1321, the camera 1322, etc.

[0545] Next, an example of the operation of such a video processor 1332 will be described. For example, when a transport stream is received from an external network via the connectivity 1321, broadband modem 1333, or the like, the transport stream is supplied to a multiplexing and demultiplexing unit (MUX DMUX) 1518 via a network interface 1519, where it is demultiplexed, and decoded by a codec engine 1516. Image data obtained by decoding by the codec engine 1516 is subjected to predetermined image processing by, for example, an image processing engine 1514, and is subjected to predetermined conversion by a display engine 1513, and is supplied to, for example, the connectivity 1321 via a display interface 1512, and the image is displayed on a monitor. Furthermore, for example, image data obtained by decoding by the codec engine 1516 is re-encoded by the codec engine 1516, multiplexed by a multiplexing / demultiplexing unit (MUX DMUX) 1518 and converted into file data, and output to, for example, the connectivity 1321 via a video interface 1520, and recorded on various recording media.

[0546] Furthermore, for example, file data of coded data obtained by coding image data and read from a recording medium (not shown) by the connectivity 1321 or the like is supplied to a multiplexing and demultiplexing unit (MUX DMUX) 1518 via a video interface 1520, where it is demultiplexed, and decoded by a codec engine 1516. The image data obtained by decoding by the codec engine 1516 is subjected to a predetermined image processing by an image processing engine 1514, and a predetermined conversion is performed by a display engine 1513. The image data is supplied to, for example, the connectivity 1321 or the like via a display interface 1512, and the image is displayed on a monitor. Also, for example, image data obtained by decoding by the codec engine 1516 is re-coded by the codec engine 1516, multiplexed by the multiplexing and demultiplexing unit (MUX DMUX) 1518 and converted into a transport stream, and supplied to, for example, the connectivity 1321 or the broadband modem 1333 via a network interface 1519, and transmitted to another device (not shown).

[0547] Note that image data and other data are exchanged between the processing units in the video processor 1332, for example, using the internal memory 1515 or the external memory 1312. The power management module 1313 controls the power supply to the control unit 1511, for example.

[0548] When applying the present technology to the video processor 1332 configured in this manner, it is sufficient to apply the present technology according to each of the above-mentioned embodiments to the codec engine 1516. That is, for example, it is sufficient to make the codec engine 1516 have the function of the above-mentioned image encoding device 100 or the function of the image decoding device 200, or both. In this way, the video processor 1332 can obtain the same effects as those of each of the above-mentioned embodiments with reference to Figs. 1 to 23.

[0549] In addition, in the codec engine 1516, the present technology (i.e., the functions of the image encoding device 100) may be realized by hardware such as a logic circuit, or by software such as an embedded program, or by both.

[0550] Although two exemplary configurations of the video processor 1332 have been described above, the configuration of the video processor 1332 is arbitrary and may be other than the two examples described above. The video processor 1332 may be configured as one semiconductor chip, or may be configured as multiple semiconductor chips. For example, it may be a three-dimensional stacked LSI in which multiple semiconductors are stacked. It may also be realized by multiple LSIs.

[0551] <Examples of equipment application> The video set 1300 can be incorporated into various devices that process image data. For example, the video set 1300 can be incorporated into a television device 900 (FIG. 42), a mobile phone 920 (FIG. 43), a recording and reproducing device 940 (FIG. 44), an imaging device 960 (FIG. 45), etc. By incorporating the video set 1300, the device can obtain the same effects as those of the embodiments described above with reference to FIGS. 1 to 23.

[0552] In addition, even if it is a part of each configuration of the above-mentioned video set 1300, as long as it includes the video processor 1332, it can be implemented as a configuration to which the present technology is applied. For example, only the video processor 1332 can be implemented as a video processor to which the present technology is applied. In addition, for example, the processor and the video module 1311 indicated by the dotted line 1341 as described above can be implemented as a processor and a module to which the present technology is applied. Furthermore, for example, the video module 1311, the external memory 1312, the power management module 1313, and the front-end module 1314 can be combined and implemented as a video unit 1361 to which the present technology is applied. In any case of the configuration, the same effects as those of each embodiment described above with reference to FIG. 1 to FIG. 23 can be obtained.

[0553] That is, any configuration including the video processor 1332 can be incorporated into various devices that process image data, similar to the case of the video set 1300. For example, the video processor 1332, the processor indicated by the dotted line 1341, the video module 1311, or the video unit 1361 can be incorporated into a television device 900 (FIG. 42), a mobile phone 920 (FIG. 43), a recording and reproducing device 940 (FIG. 44), an imaging device 960 (FIG. 45), or the like. By incorporating any of the configurations to which the present technology is applied, the device can obtain the same effects as the respective embodiments described above with reference to FIG. 1 to FIG. 23, similar to the case of the video set 1300.

[0554] <Sixth Application Example: Network System> The present technology can also be applied to a network system made up of multiple devices. Figure 49 shows an example of a schematic configuration of a network system to which the present technology is applied.

[0555] A network system 1600 shown in FIG. 49 is a system in which devices exchange information related to images (moving images) with each other via a network. A cloud service 1601 of this network system 1600 is a system that provides services related to images (moving images) to terminals such as a computer 1611, an AV (Audio Visual) device 1612, a portable information processing terminal 1613, and an IoT (Internet of Things) device 1614 that are communicably connected to the system. For example, the cloud service 1601 provides a service for supplying image (moving image) content, such as so-called video distribution (on-demand or live distribution), to the terminals. Also, for example, the cloud service 1601 provides a backup service for receiving and storing image (moving image) content from the terminals. Also, for example, the cloud service 1601 provides a service for mediating the exchange of image (moving image) content between the terminals.

[0556] The physical configuration of the cloud service 1601 is arbitrary. For example, the cloud service 1601 may have various servers such as a server that stores and manages moving images, a server that distributes moving images to terminals, a server that acquires moving images from terminals, and a server that manages users (terminals) and charges, and an arbitrary network such as the Internet or a LAN.

[0557] The computer 1611 is configured with an information processing device such as a personal computer, a server, a workstation, etc. The AV device 1612 is configured with an image processing device such as a television receiver, a hard disk recorder, a game device, a camera, etc. The portable information processing terminal 1613 is configured with a portable information processing device such as a notebook personal computer, a tablet terminal, a mobile phone, a smartphone, etc. The IoT device 1614 is configured with any object that performs image processing, such as a machine, a home appliance, furniture, other objects, an IC tag, a card-type device, etc. All of these terminals have a communication function, and can connect to the cloud service 1601 (establish a session) and exchange information with the cloud service 1601 (i.e., communicate). In addition, each terminal can also communicate with other terminals. Communication between the terminals may be performed via the cloud service 1601, or may be performed without the cloud service 1601.

[0558] The present technology may be applied to the above-described network system 1600, and when image (video) data is exchanged between terminals or between a terminal and a cloud service 1601, the image data may be encoded and decoded as described above in each embodiment. That is, the terminals (computers 1611 to IoT devices 1614) and the cloud service 1601 may have the functions of the above-described image encoding device 100 and image decoding device 200, respectively. In this way, the terminals (computers 1611 to IoT devices 1614) and the cloud service 1601 that exchange image data can obtain the same effects as those of the embodiments described above with reference to Figs. 1 to 23.

[0559] <Other> Various information related to the coded data (bit stream) may be multiplexed with the coded data and transmitted or recorded, or may be transmitted or recorded as separate data associated with the coded data without being multiplexed with the coded data. Here, the term "associate" means, for example, that one piece of data can be used (linked) when processing the other piece of data. That is, data associated with each other may be combined into one piece of data, or each piece of data may be individual data. For example, information associated with coded data (image) may be transmitted on a transmission path different from that of the coded data (image). Also, for example, information associated with coded data (image) may be recorded on a recording medium different from that of the coded data (image) (or on a different recording area of ​​the same recording medium). This "association" may be a part of the data, not the entire data. For example, an image and information corresponding to the image may be associated with each other in any unit, such as multiple frames, one frame, or a part of a frame.

[0560] As mentioned above, in this specification, the terms "combine," "multiplex," "append," "integrate," "include," "store," "embed," "insert," and the like refer to combining multiple items into one, such as combining encoded data and metadata into one piece of data, and refer to one method of "associating" as described above.

[0561] Furthermore, the embodiments of the present technology are not limited to the above-described embodiments, and various modifications are possible without departing from the gist of the present technology.

[0562] For example, in this specification, a system refers to a collection of multiple components (devices, modules (parts), etc.), regardless of whether all the components are in the same housing. Therefore, multiple devices housed in separate housings and connected via a network, and a single device in which multiple modules are housed in a single housing, are both systems.

[0563] Also, for example, the configuration described above as one device (or processing unit) may be divided and configured as multiple devices (or processing units). Conversely, the configurations described above as multiple devices (or processing units) may be combined and configured as one device (or processing unit). Also, it is of course possible to add configuration other than that described above to the configuration of each device (or each processing unit). Furthermore, as long as the configuration and operation of the system as a whole are substantially the same, part of the configuration of one device (or processing unit) may be included in the configuration of another device (or other processing unit).

[0564] Furthermore, for example, the present technology can be configured as cloud computing, in which a single function is shared and processed collaboratively by multiple devices via a network.

[0565] Furthermore, for example, the above-mentioned program can be executed in any device, as long as the device has the necessary functions (functional blocks, etc.) and can obtain the necessary information.

[0566] Also, for example, each step described in the above flowchart can be executed by one device or can be shared and executed by multiple devices. Furthermore, when one step includes multiple processes, the multiple processes included in the one step can be executed by one device or can be shared and executed by multiple devices.

[0567] In addition, the processing of the steps of writing the program executed by the computer may be executed in chronological order according to the sequence described in this specification, or may be executed in parallel, or individually at a required timing such as when called, etc. Furthermore, the processing of the steps of writing the program may be executed in parallel with the processing of other programs, or may be executed in combination with the processing of other programs.

[0568] In addition, the present technologies described in this specification can be implemented independently and individually, as long as there is no contradiction. Of course, any of the present technologies can be implemented in combination. For example, the present technology described in any of the embodiments can be implemented in combination with the present technology described in another embodiment. In addition, any of the present technologies described above can be implemented in combination with other technologies not described above.

[0569] The present technology can also be configured as follows. (1) a control unit that, when skipping a primary transform that is a transform process for a prediction residual that is a difference between an image and a prediction image of the image, and a secondary transform that is a transform process for a primary transform coefficient obtained by subjecting the prediction residual to the primary transform, also skips band limitation for a secondary transform coefficient obtained by subjecting the primary transform coefficient to the secondary transform. An image processing device comprising: (2) When the control unit does not skip the primary transform, and a transform block size of the primary transform and the secondary transform is equal to or larger than a predetermined size, the control unit causes a band limit to be performed on the secondary transform coefficients. It was configured as An image processing device as described in (1). (3) When the control unit does not skip the inverse primary transform, the control unit performs band limiting on the secondary transform coefficients based on horizontal and vertical sizes of transform blocks of the inverse primary transform and the inverse secondary transform. It was configured as An image processing device as described in (2). (4) When the control unit does not skip the inverse primary transform, and when a larger one of the horizontal and vertical sizes of the transform block is equal to or larger than a predetermined value, the control unit causes band limitation to be performed on the secondary transform coefficients. It was configured as An image processing device as described in (3). (5) When the control unit does not skip the inverse primary transform, if a sum or product of horizontal and vertical sizes of the transform block is equal to or greater than a predetermined value, the control unit causes band limitation to be performed on the secondary transform coefficients. It was configured as An image processing device as described in (3). (6) The band limiting is performed by setting the secondary transform coefficients after band limiting to zero in a region other than a square region of a predetermined size within a rectangular transform block of the inverse primary transform and the inverse secondary transform. It was configured as An image processing device according to any one of (2) to (5). (7) The band limiting is performed by setting the secondary transform coefficients after band limiting of pixels whose processing order is equal to or greater than a predetermined value among the pixels constituting the transform blocks of the inverse primary transform and the inverse secondary transform to 0. It was configured as An image processing device according to any one of (2) to (5). (8) The image processing device a control step of skipping band limitation on secondary transform coefficients obtained by subjecting the primary transform coefficients to the secondary transform when skipping a primary transform, which is a transform process on a prediction residual that is a difference between an image and a prediction image of the image, and a secondary transform, which is a transform process on a primary transform coefficient obtained by subjecting the prediction residual to the primary transform. An image processing method comprising: (9) a control unit that, when skipping an inverse primary transform that is an inverse transform of a primary transform that is a transform process on a prediction residual that is a difference between an image and a prediction image of the image, and an inverse secondary transform that is an inverse transform of a secondary transform that is a transform process on a primary transform coefficient obtained by subjecting the prediction residual to the primary transform, also skips band limitation on a secondary transform coefficient obtained by subjecting the primary transform coefficient to the secondary transform and band limiting. An image processing device comprising: (10) When the control unit does not skip the inverse primary transform, and a transform block size of the inverse primary transform and the inverse secondary transform is equal to or larger than a predetermined size, the control unit causes a band limit to be performed on the secondary transform coefficients. It was configured as An image processing device according to (9). (11) When the control unit does not skip the inverse primary transform, the control unit performs band limiting on the secondary transform coefficients based on horizontal and vertical sizes of transform blocks of the inverse primary transform and the inverse secondary transform. It was configured as The image processing device according to (10). (12) When the control unit does not skip the inverse primary transform, and when a larger one of the horizontal and vertical sizes of the transform block is equal to or larger than a predetermined value, the control unit causes band limitation to be performed on the secondary transform coefficients. It was configured as The image processing device according to (11). (13) When the control unit does not skip the inverse primary transform, if a sum or product of horizontal and vertical sizes of the transform block is equal to or greater than a predetermined value, the control unit causes band limitation to be performed on the secondary transform coefficients. It was configured as The image processing device according to (11). (14) The band limiting is performed by setting the secondary transform coefficients after band limiting to zero in a region other than a square region of a predetermined size within a rectangular transform block of the inverse primary transform and the inverse secondary transform. It was configured as The image processing device according to (10). (15) The band limiting is performed by setting the secondary transform coefficients after band limiting of pixels whose processing order is equal to or greater than a predetermined value among the pixels constituting the transform blocks of the inverse primary transform and the inverse secondary transform to 0. It was configured as The image processing device according to (10). (16) The image processing device a control step of skipping band limitation on secondary transform coefficients obtained by subjecting the primary transform coefficients to the secondary transform and band-limiting the secondary transform when skipping an inverse primary transform, which is an inverse transform of a primary transform, which is a transform process on a prediction residual that is a difference between an image and a predicted image of the image, and an inverse secondary transform, which is an inverse transform of a secondary transform, which is a transform process on a primary transform coefficient obtained by subjecting the prediction residual to the primary transform. An image processing method comprising: (17) a control unit that controls, for each sub-block, skipping of a transform process for a transform coefficient obtained from a prediction residual that is a difference between an image and a predicted image of the image, based on the number of non-zero coefficients of the transform coefficients for each sub-block. An image processing device comprising: (18) The control unit controls, for each of the sub-blocks, skipping of a secondary transform for a primary transform coefficient obtained by performing a primary transform on the prediction residual, based on a number of non-zero coefficients of the transform coefficients for each of the sub-blocks. The image processing device according to (17). (19) The method further includes a determination unit that determines, for each of the sub-blocks, whether or not to skip the secondary transform based on a quantized primary transform coefficient obtained by quantizing the primary transform coefficient and a quantized secondary transform coefficient obtained by quantizing a secondary transform coefficient obtained by performing the secondary transform on the primary transform coefficient, The control unit is configured to control skipping of the secondary transform for the primary transform coefficients for each of the sub-blocks according to a result of the determination by the determination unit. The image processing device according to (17) or (18). (20) The determination unit obtains the number of non-zero coefficients of the quantized primary transform coefficients and the number of non-zero coefficients of the quantized secondary transform coefficients, and determines, for each of the sub-blocks, whether or not to skip the secondary transform, based on the obtained numbers of non-zero coefficients of the quantized primary transform coefficients and the non-zero coefficients of the quantized secondary transform coefficients, and a predetermined threshold value. An image processing device according to any one of (17) to (19). (twenty one) The determination unit determines to skip the secondary transform when the number of non-zero coefficients of the quantized primary transform coefficients is equal to or less than the number of non-zero coefficients of the quantized secondary transform coefficients and when the number of non-zero coefficients of the quantized primary transform coefficients or the number of non-zero coefficients of the quantized secondary transform coefficients is equal to or less than the threshold. An image processing device according to any one of (17) to (20). (twenty two) a quantization unit that quantizes the primary transform coefficients to obtain the quantized primary transform coefficients and quantizes the secondary transform coefficients to obtain the quantized secondary transform coefficients, The determination unit is configured to determine, for each of the sub-blocks, whether or not to skip the secondary transform, based on the quantized primary transform coefficients and the quantized secondary transform coefficients obtained by quantization by the quantization unit. An image processing device according to any one of (17) to (21). (twenty three) the primary transform is an orthogonal transform, The secondary transformation is Transforming the primary transform coefficients into a one-dimensional vector; Perform a matrix operation on the one-dimensional vector; Scaling the one-dimensional vector on which the matrix operation has been performed; Matrix the scaled 1D vector It is a conversion process. An image processing device according to any one of (17) to (22). (twenty four) A primary conversion unit that performs the primary conversion; a secondary conversion unit that performs the secondary conversion under the control of the control unit; The image processing device according to any one of (17) to (23), further comprising: (twenty five) a quantization unit that quantizes a secondary transform coefficient obtained by performing the secondary transform on the primary transform coefficient by the secondary transform unit or the primary transform coefficient; an encoding unit that encodes a quantized transform coefficient level obtained by quantizing the secondary transform coefficient or the primary transform coefficient by the quantization unit; The image processing device according to any one of (17) to (24), further comprising: (26) skipping of a transform process for a transform coefficient obtained from a prediction residual, which is a difference between an image and a predicted image of the image, is controlled for each sub-block based on the number of non-zero coefficients of the transform coefficients for each sub-block. Image processing methods. (27) a control unit that controls, for each sub-block, skipping of inverse transform processing for transform coefficients for which a prediction residual, which is a difference between an image and a predicted image of the image, is obtained by inverse transform processing, based on the number of non-zero coefficients of the transform coefficients for each sub-block. An image processing device comprising: (28) The control unit controls, for each sub-block, skipping of an inverse secondary transform for secondary transform coefficients obtained by decoding encoded data, based on the number of non-zero coefficients of the transform coefficients for each sub-block. An image processing device according to (27). (29) A determination unit that determines whether or not to skip the inverse secondary transform for each of the sub-blocks based on the secondary transform coefficients, The control unit is configured to control skipping of the inverse secondary transform for each of the sub-blocks in response to a result of the determination by the determination unit. The image processing device according to (27) or (28). (30) The determination unit determines to skip the inverse secondary transform when a number of non-zero coefficients of the secondary transform coefficients is equal to or smaller than a predetermined threshold. An image processing device according to any one of (27) to (29). (31) The inverse secondary transformation may be converting the secondary transform coefficients into a one-dimensional vector; Perform a matrix operation on the one-dimensional vector; Scaling the one-dimensional vector on which the matrix operation has been performed; Matrix the scaled 1D vector It is a conversion process. An image processing device according to any one of (27) to (30). (32) an inverse secondary conversion unit that performs the inverse secondary conversion under the control of the control unit; An image processing device according to any one of (27) to (31). (33) The inverse primary transform unit further performs an inverse primary transform to convert a primary transform coefficient obtained by the inverse secondary transform of the secondary transform coefficient by the inverse secondary transform unit into the prediction residual. An image processing device according to any one of (27) to (32). (34) The encoded data is decoded to obtain a quantized transform coefficient level, and an inverse quantization unit is further provided for inverse quantizing the quantized transform coefficient level obtained by decoding the encoded data. The inverse secondary transform unit is configured to perform the inverse secondary transform on the secondary transform coefficients obtained by inverse quantizing the quantized transform coefficient levels by the inverse quantization unit under control of the control unit. An image processing device according to any one of (27) to (33). (35) A decoding unit that decodes the encoded data, The inverse quantization unit is configured to inverse quantize the quantized transform coefficient levels obtained by decoding the encoded data by the decoding unit. An image processing device according to any one of (27) to (34). (36) A skip of the inverse transform process for a transform coefficient for which a prediction residual, which is a difference between an image and a predicted image of the image, is obtained by performing the inverse transform process is controlled for each sub-block based on the number of non-zero coefficients of the transform coefficients for each sub-block. Image processing methods. (37) A setting unit that sets a matrix of a transformation process for a transformation coefficient based on the content of the transformation process and a scanning method; a rasterization unit that converts a prediction residual, which is a difference between an image and a predicted image of the image, into a transformation coefficient obtained by performing a transformation process on the prediction residual, and converts the transformation coefficient into a one-dimensional vector; a matrix calculation unit that performs a matrix calculation on the one-dimensional vector by using the matrix set by the setting unit; a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed; a matrix conversion unit that converts the scaled one-dimensional vector into a matrix; An image processing device comprising: (38) A storage unit that stores the matrix candidates, The setting unit is configured to set the matrix by selecting the matrix corresponding to the content of the conversion process and the scanning method from among candidates of the matrix stored in the storage unit. An image processing device according to (37). (39) The setting unit sets the matrix corresponding to the content of the conversion process and the scanning method adopted in the rasterizing unit and the matrix generating unit. The image processing device according to (37) or (38). (40) The setting unit sets the matrix based on a conversion identifier indicating the content of the conversion process and a scan identifier which is information regarding the scan method. An image processing device according to any one of (37) to (39). (41) the transform identifier is a secondary transform identifier indicating a content of a secondary transform for a primary transform coefficient obtained by performing a primary transform on the prediction residual, The setting unit is configured to set a matrix of a secondary transform for a primary transform coefficient obtained by performing a primary transform on the prediction residual, based on the secondary transform identifier and the scan identifier. An image processing device according to any one of (37) to (40). (42) The primary transform is an orthogonal transform. An image processing device according to any one of (37) to (41). (43) The primary conversion unit further includes: An image processing device according to any one of (37) to (42). (44) The one-dimensional vector scaled by the matrix conversion unit is converted into a matrix to obtain a secondary transform coefficient. An image processing device according to any one of (37) to (43). (45) The method further includes the steps of: providing a coding unit for coding a quantized transform coefficient level obtained by quantizing the secondary transform coefficient by the quantization unit; An image processing device according to any one of (37) to (44). (46) A matrix of a transformation process for a transformation coefficient is set based on the content of the transformation process and a scanning method; A prediction residual, which is a difference between an image and a predicted image of the image, is converted into a transformation coefficient obtained by performing a transformation process, and the transformation coefficient is converted into a one-dimensional vector; performing a matrix operation on the one-dimensional vector using the set matrix; Scaling is performed on the one-dimensional vector on which the matrix operation has been performed; Matrix the scaled 1D vector Image processing methods. (47) A setting unit that sets a matrix for an inverse transform process for a transform coefficient based on the content of the inverse transform process and a scan method; a rasterizing unit that converts a transform coefficient obtained by performing an inverse transform process to obtain a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector; a matrix calculation unit that performs a matrix calculation on the one-dimensional vector by using the matrix set by the setting unit; a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed; a matrix conversion unit that converts the scaled one-dimensional vector into a matrix; An image processing device comprising: (48) A storage unit that stores the matrix candidates, The setting unit is configured to set the matrix by selecting the matrix corresponding to the content of the inverse transformation process and the scanning method from among candidates of the matrix stored in the storage unit. An image processing device according to (47). (49) The setting unit sets the matrix corresponding to the content of the inverse conversion process and the scanning method adopted in the rasterizing unit and the matrix generating unit. An image processing device according to (47) or (48). (50) The setting unit sets the matrix based on a transformation identifier indicating the content of the inverse transformation process and a scan identifier which is information regarding the scanning method. An image processing device according to any one of (47) to (49). (51) The transform identifier is a secondary transform identifier indicating the content of an inverse secondary transform for a secondary transform coefficient obtained by decoding the encoded data, The setting unit is configured to set a matrix of the inverse secondary transform based on the secondary transform identifier and the scan identifier; the rasterization unit is configured to convert the secondary transform coefficients into the one-dimensional vector; The matrixing unit is configured to matrix the scaled one-dimensional vector to obtain primary transform coefficients. An image processing device according to any one of (47) to (50). (52) an inverse primary transform unit that performs the inverse primary transform on the primary transform coefficients obtained by the matrix generation unit to obtain the prediction residuals; An image processing device according to any one of (47) to (51). (53) The inverse primary transform is an inverse orthogonal transform. An image processing device according to any one of (47) to (52). (54) The encoding method further includes the steps of: The rasterization unit is configured to convert the secondary transform coefficients obtained by the inverse quantization of the quantized transform coefficient levels by the inverse quantization unit into the one-dimensional vector. An image processing device according to any one of (47) to (53). (55) A decoding unit that decodes the encoded data, The inverse quantization unit is configured to inverse quantize the quantized transform coefficient levels obtained by decoding the encoded data by the decoding unit. An image processing device according to any one of (47) to (54). (56) A matrix for an inverse transform process for the transform coefficients is set based on the content of the inverse transform process and a scanning method; converting a transform coefficient obtained by performing an inverse transform process to obtain a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector; performing a matrix operation on the one-dimensional vector using the set matrix; Scaling is performed on the one-dimensional vector on which the matrix operation has been performed; Matrix the scaled 1D vector Image processing methods. [Explanation of symbols]

[0570] 100 image encoding device, 101 control unit, 111 calculation unit, 112 conversion unit, 113 quantization unit, 114 encoding unit, 115 inverse quantization unit, 116 inverse transformation unit, 117 calculation unit, 118 frame memory, 119 prediction unit, 131 primary transformation unit, 132 secondary transformation unit, 141 rasterization unit, 142 matrix calculation unit, 143 scaling unit, 144 matrixing unit, 145 secondary transformation selection unit, 146 quantization unit, 147 non-zero coefficient number determination unit, 148 switch, 200 image decoding device, 211 decoding unit, 212 inverse quantization unit, 213 inverse transformation unit, 214 calculation unit, 215 frame memory, 216 prediction unit, 231 inverse secondary transform unit, 232 inverse primary transform unit, 241 non-zero coefficient number determination unit, 242 switch, 243 rasterization unit, 244 matrix operation unit, 245 scaling unit, 246 matrixing unit, 247 inverse secondary transform selection unit, 301 secondary transform selection unit, 311 secondary transform derivation unit, 312 secondary transform storage unit, 321 inverse secondary transform selection unit, 331 inverse secondary transform derivation unit, 332 inverse secondary transform storage unit, 421,441 switch

Claims

1. A setting unit that sets a matrix for an inverse transform process for a transform coefficient based on the content of the inverse transform process and a scan method; a rasterizing unit that converts a transform coefficient obtained by performing an inverse transform process to obtain a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector; a matrix calculation unit that performs a matrix calculation on the one-dimensional vector by using the matrix set by the setting unit; a scaling unit that performs scaling on the one-dimensional vector on which the matrix operation has been performed; a matrix conversion unit that converts the scaled one-dimensional vector into a matrix; An image processing device comprising:

2. A storage unit that stores the matrix candidates, The setting unit is configured to set the matrix by selecting the matrix corresponding to the content of the inverse transformation process and the scanning method from among candidates of the matrix stored in the storage unit. The image processing device according to claim 1 .

3. The setting unit sets the matrix corresponding to the content of the inverse conversion process and the scanning method adopted in the rasterizing unit and the matrix generating unit. The image processing device according to claim 1 .

4. The setting unit sets the matrix based on a transformation identifier indicating the content of the inverse transformation process and a scan identifier which is information regarding the scanning method. The image processing device according to claim 1 .

5. A matrix for an inverse transform process for the transform coefficients is set based on the content of the inverse transform process and a scanning method; A transform coefficient is transformed by inverse transform processing to obtain a prediction residual, which is a difference between an image and a predicted image of the image, into a one-dimensional vector; performing a matrix operation on the one-dimensional vector using the set matrix; Scaling is performed on the one-dimensional vector on which the matrix operation has been performed; Matrix the scaled one-dimensional vector Image processing methods.

Citation Information

Patent Citations

  • Arithmetic decoding device, arithmetic coding device, image decoding device and image coding device

    WO2013190990A1

  • Systems and methods for low complexity forward transforms using zeroed-out coefficients

    WO2015183375A2

  • Systems and methods for coding transform data

    WO2017191782A1