Image encoding device, image encoding method, image decoding device, and image decoding method

By segmenting the image into multiple rectangular areas in the VVC encoding method and specifying the starting position of the encoded data of the block rows, the problem of increasing bitstream code volume caused by redundant syntax is solved, and the encoding efficiency is improved.

CN119211574APending Publication Date: 2024-12-27CANON KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411325727.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-06-21
Filing Date
2020-05-28
Publication Date
2024-12-27

AI Technical Summary

Technical Problem

In the VVC encoding method, num_entry_point_offset is a redundant syntax, resulting in an increase in the code volume of the bitstream.

Method used

The multiplexed bitstream is generated to reduce the number of redundant syntax by segmenting the image into multiple rectangular areas and specifying the encoded data start position of the block rows in the strip based on the information of these areas.

Benefits of technology

It effectively reduces the code volume of the bitstream and improves the encoding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119211574A_ABST
    Figure CN119211574A_ABST
Patent Text Reader

Abstract

The invention relates to an image encoding apparatus, an image encoding method, an image decoding apparatus, and an image decoding method. Specifically, an image is divided into a plurality of slices and each slice is divided into rectangular regions, each rectangular region including at least one block row formed of a plurality of blocks each having a smaller size than the slice. Rectangular regions included in a slice of an image are specified on the basis of information indicating the number of rectangular regions included in the slice. Based on the number of blocks of the specified rectangular region in the vertical direction, the number of information for specifying the start position of the encoded data of the block row in the slice is specified. A bitstream is generated in which at least the specified number of information, information indicating the number of rectangular regions included in the slice, and the encoded data of the block lines are multiplexed.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] (This application is a divisional application of an application filed on May 28, 2020, with application number 2020800453611 and invention name “Image encoding device and method, image decoding device and method, and storage medium”.) Technical Field

[0002] The present invention relates to encoding / decoding technology for images. Background Art

[0003] As a coding method for compressing and recording moving images, the HEVC (High Efficiency Video Coding) coding method (hereinafter referred to as HEVC) is known. In HEVC, in order to improve coding efficiency, a basic block having a size larger than a conventional macroblock (16×16 pixels) is adopted. A basic block of a large size is called a CTU (Coding Tree Unit), and the size of the basic block is a maximum of 64×64 pixels. The CTU is further divided into sub-blocks as units for prediction or conversion.

[0004] In addition, in HEVC, a picture can be divided into multiple tiles or slices and encoded. There is little data dependency between each tile or slice, and encoding / decoding processing can be performed in parallel. A big advantage of slice or strip segmentation is that processing can be performed in parallel by a multi-core CPU, etc. to shorten processing time.

[0005] In addition, each slice is encoded by the traditional binary arithmetic coding method adopted in HEVC. That is, each syntactic element is binarized to generate a binary signal. The occurrence probability is assigned to each syntactic element in advance as a table (hereinafter referred to as the occurrence probability table), and each binary signal is arithmetically encoded based on the occurrence probability table. When decoding, the occurrence probability table is used as decoding information for subsequent decoding of the code. When encoding, the occurrence probability table is used as encoding information for subsequent encoding. Each time encoding is performed, the occurrence probability table is updated based on statistical information indicating whether the encoded binary signal is a symbol with a higher probability of occurrence.

[0006] In addition, HEVC uses a method called wavefront parallel processing (hereinafter referred to as WPP) for processing entropy encoding / decoding in parallel. In WPP, the occurrence probability table obtained when encoding a block at a pre-specified position is applied to the block at the left end of the next row, thereby enabling parallel encoding processing of blocks in units of rows while suppressing the reduction in encoding efficiency. In order to enable parallel processing in units of block rows, entry_point_offset_minus1 indicating the starting position of each block row in the bitstream and num_entry_point_offset indicating the number of entry_point_offset_minus1 are encoded in the slice header. Patent document 1 discloses technology associated with WPP.

[0007] In recent years, international standardization activities for more efficient encoding methods as successors to HEVC have begun. JVET (Joint Video Experts Group) was established between ISO / IEC and ITU-T, and the VVC (Versatile Video Coding) encoding method (hereinafter referred to as VVC) was standardized. In VVC, further segmentation of slices into multiple rectangles (bricks) each formed by multiple block rows was studied. In addition, each strip is configured to include one or more blocks.

[0008] Citation list

[0009] Patent Literature

[0010] Patent Document 1: Japanese Patent Application Laid-Open No. 2014-11638 Summary of the invention

[0011] Problem that the invention aims to solve

[0012] In VVC, the blocks forming the stripe can be derived in advance. In addition, the number of basic block rows included in each block can be derived based on other syntax. Therefore, the number of entry_point_offset_minus1 used to represent the starting position of the basic block row belonging to the stripe can be derived without using num_entry_point_offset. Therefore, num_entry_point_offset is a redundant syntax. The present invention provides a technology for reducing the code amount of a bit stream by reducing redundant syntax.

[0013] Solutions for solving problems

[0014] According to an aspect of the present invention, there is provided an image encoding device, characterized in that it includes: a partitioning unit for partitioning an image into a plurality of slices and the slices into rectangular areas, each rectangular area including at least one block row formed by a plurality of blocks each having a size smaller than the slice; a specifying unit for specifying the rectangular areas included in a strip of the image based on information indicating the number of rectangular areas included in the strip, and specifying the number of information for specifying the starting position of encoded data of the block row in the strip based on the number of blocks in the vertical direction of the specified rectangular area; and a generating unit for generating a bit stream multiplexing at least the following items: the information for specifying the starting position, the information indicating the number of rectangular areas included in the strip, and the encoded data of the block row, the number of which is the same as the number specified by the specifying unit.

[0015] Effects of the Invention

[0016] According to the configuration of the present invention, it is possible to reduce the code amount of a bit stream by reducing redundant syntax.

[0017] Other features and advantages of the present invention will be apparent from the following description in conjunction with the accompanying drawings. Note that the same reference numerals in the accompanying drawings represent the same or similar components. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the present invention and, together with the description, serve to explain the principles of the present invention.

[0019] Figure 1 is a block diagram showing an example of a functional configuration of an image encoding device;

[0020] Figure 2 is a block diagram showing an example of a functional configuration of an image decoding device;

[0021] Figure 3 is a flow chart of the encoding process of an input image by an image encoding device;

[0022] Figure 4 is a flowchart of a decoding process of a bit stream by an image decoding device;

[0023] Figure 5 is a block diagram showing an example of a hardware configuration of a computer device;

[0024] Figure 6 is a view showing an example of the format of a bit stream;

[0025] Figure 7 is a view showing an example of segmentation of an input image;

[0026] Fig. 8Ais a view showing an example of segmentation of an input image;

[0027] Figure 8B is a view showing an example of segmentation of an input image;

[0028] Fig. 9A is a diagram showing the relationship between a sheet and a strip; and

[0029] Fig. 9B is a view showing the relationship between a sheet and a strip.

[0030] Description of Reference Numerals

[0031] 102: image segmentation unit, 103: block segmentation unit, 104: prediction unit, 105: transform / quantization unit, 106: inverse quantization / inverse transform unit, 107: image reproduction unit, 108: frame memory, 109: in-loop filtering unit, 110: encoding unit, 111: integrated encoding unit. DETAILED DESCRIPTION

[0032] The embodiments will be described in detail below with reference to the accompanying drawings. Note that the following embodiments are not intended to limit the scope of the claimed invention. A plurality of features are described in the embodiments, but the present invention is not limited to requiring all such features, and a plurality of such features may be appropriately combined. In addition, in the accompanying drawings, the same reference numerals are given to the same or similar configurations, and redundant descriptions thereof are omitted.

[0033] [First embodiment]

[0034] First, refer to Figure 1 The block diagram describes an example of the functional configuration of the image encoding device according to the present embodiment. An input image as an encoding object is input to the image segmentation unit 102. The input image may be an image of each frame constituting a moving image, or may be a still image. The image segmentation unit 102 segments the input image into "one or more slices". A slice is a set of continuous basic blocks covering a rectangular area in the input image. The image segmentation unit 102 further segments each slice into one or more squares. A square is a rectangular area formed by rows (basic block rows) of one or more basic blocks in a slice (including a rectangular area of ​​at least one block row formed by a plurality of blocks each having a size smaller than the size of the slice). The image segmentation unit 102 also segments the input image into strips each formed by "one or more slices" or "one or more squares". A strip is a basic unit of encoding, and header information such as information indicating a stripe type is added to each strip. Figure 7An example in which an input image is divided into four slices, four strips, and 11 blocks is shown. The slice on the upper left is divided into one block, the slice on the lower left is divided into two blocks, the slice on the upper right is divided into five blocks, and the slice on the lower right is divided into three blocks. The strip on the left is configured to include three blocks, the strip on the upper right is configured to include two blocks, the strip in the middle right is configured to include three blocks, and the strip on the lower right is configured to include three blocks. For each slice, each block, and each strip divided in this way, the image segmentation unit 102 outputs information related to the size as segmentation information.

[0035] The block division unit 103 divides the image of the basic block line (basic block line image) output from the image division unit 102 into a plurality of basic blocks, and outputs the image of each basic block (block image) to a subsequent stage.

[0036] The prediction unit 104 divides the image of each basic block into sub-blocks, and performs intra-frame prediction as a prediction within a frame or inter-frame prediction as a prediction between frames for each sub-block, thereby generating a predicted image. Inter-block intra-frame prediction (intra-frame prediction using pixels of blocks in other blocks) or inter-block motion vector prediction (motion vector prediction using motion vectors of blocks in other blocks) is not performed. In addition, the prediction unit 104 calculates a prediction error based on the input image and the predicted image and outputs the prediction error. In addition, the prediction unit 104 outputs information (prediction information) required for prediction (for example, information such as a sub-block division method, a prediction mode, and a motion vector) together with the prediction error.

[0037] The transform / quantization unit 105 performs an orthogonal transform on the prediction error in units of subblocks to obtain a transform coefficient, and quantizes the obtained transform coefficient to obtain a quantized coefficient. The inverse quantization / inverse transform unit 106 performs an inverse quantization on the quantized coefficient output from the transform / quantization unit 105 to reproduce the transform coefficient, and also performs an inverse orthogonal transform on the reproduced transform coefficient to reproduce the prediction error.

[0038] The frame memory 108 is used as a memory for storing the reproduced image. The image reproduction unit 107 generates a predicted image by appropriately referring to the frame memory 108 based on the prediction information output from the prediction unit 104, generates a reproduced image from the predicted image and the input prediction error, and outputs the reproduced image.

[0039] The in-loop filtering unit 109 performs in-loop filtering processing such as deblocking filtering processing or sampling adaptive offset on the reproduced image, and outputs the image (filtered image) subjected to the in-loop filtering processing.

[0040] The encoding unit 110 generates encoded data (encoded data) by encoding the quantization coefficient output from the transform / quantization unit 105 and the prediction information output from the prediction unit 104 , and outputs the generated encoded data.

[0041] The integrated coding unit 111 generates header code data using the segmentation information output from the image segmentation unit 102, generates a bit stream including the generated header code data and the coded data output from the coding unit 110, and outputs the bit stream. The control unit 199 controls the operation of the image coding device as a whole, and controls the operation of the above-mentioned functional units of the image coding device.

[0042] Next, we will describe Figure 1 The image encoding device of the configuration shown in the figure performs encoding processing on the input image. In the present embodiment, for the convenience of description, only the processing of intra-frame prediction encoding will be described. However, the present embodiment is not limited to this and can also be applied to the processing of inter-frame prediction encoding. In addition, in the present embodiment, for the purpose of detailed description, it will be described under the assumption that the block division unit 103 divides the basic block row image output from the image division unit 102 into "basic blocks each having a size of 64×64 pixels".

[0043] The image segmentation unit 102 segments the input image into slices, blocks, and strips. Fig. 8A and Figure 8B FIG. 4 shows an example of segmentation of an input image by the image segmentation unit 102. Fig. 8A As shown, an input image having a size of 1152×1152 pixels is divided into nine slices (the size of one slice is 384×384 pixels). Each slice is assigned an ID (slice ID) in raster order from the upper left corner. The slice ID of the slice in the upper left corner is 0, and the slice ID of the slice in the lower right corner is 8.

[0044] Figure 8B An example of segmentation of slices, blocks, and strips in an input image is shown. Figure 8B As shown, the slice of slice ID=0 and the slice of slice ID=7 are each divided into two blocks (the size of each block is 384×192 pixels). The slice of slice ID=2 is divided into two blocks (the size of the block on the upper side is 384×128 pixels, and the size of the block on the lower side is 384×256 pixels). The slice of slice ID=3 is divided into three blocks (the size of each block is 384×128 pixels). The slices of slice ID=1, 4, 5, 6, and 8 are not divided into blocks (equivalent to dividing one slice into one block), and therefore, slice=block. The blocks are sequentially assigned IDs from the upper side in raster order. Figure 8BThe BID shown is the ID of the block. In addition, the input image is divided into strips 0 to 4. Strip 0 is a strip including blocks corresponding to BID=0, strip 1 is a strip including blocks corresponding to BID=1, and strip 2 is a strip including blocks corresponding to BID=2. Strip 3 is a strip including blocks corresponding to BID=3 to 10, and strip 4 is a strip including blocks corresponding to BID=11 to 13. Note that the individual strips are given IDs in order from the upper side in the strips of the raster order. For example, strip 0 indicates a strip of ID=0, and strip 4 indicates a strip of ID=4.

[0045] For each divided slice, block, and strip, the image division unit 102 outputs information on the size as division information to the integrated coding unit 111. In addition, the image division unit 102 divides each block into basic block line images and outputs the divided basic block line images to the block division unit 103.

[0046] The block division unit 103 divides each basic block line image output from the image division unit 102 into a plurality of basic blocks, and outputs a block image (64×64 pixels) as an image of each basic block to the prediction unit 104 at the subsequent stage.

[0047] The prediction unit 104 divides the image of each basic block into sub-blocks, determines an intra-frame prediction mode such as horizontal prediction or vertical prediction in units of sub-blocks, and generates a predicted image based on the determined intra-frame prediction mode and the coded pixel. In addition, the prediction unit 104 calculates a prediction error based on the input image and the predicted image, and outputs the calculated prediction error to the transform / quantization unit 105. In addition, the prediction unit 104 outputs information such as the sub-block division method and the intra-frame prediction mode as prediction information to the encoding unit 110 and the image reproduction unit 107.

[0048] The transform / quantization unit 105 performs an orthogonal transform (orthogonal transform processing corresponding to the size of the subblock) on the prediction error output from the prediction unit 104 in units of subblocks, thereby obtaining a transform coefficient (orthogonal transform coefficient). The transform / quantization unit 105 quantizes the obtained transform coefficient to obtain a quantized coefficient. The transform / quantization unit 105 outputs the obtained quantized coefficient to the encoding unit 110 and the inverse quantization / inverse transform unit 106.

[0049] The inverse quantization / inverse transformation unit 106 inversely quantizes the quantized coefficient output from the transformation / quantization unit 105 to reproduce the transformation coefficient, and further inversely orthogonally transforms the reproduced transformation coefficient to reproduce the prediction error. Then, the inverse quantization / inverse transformation unit 106 outputs the reproduced prediction error to the image reproduction unit 107.

[0050] The image reproduction unit 107 generates a predicted image by appropriately referring to the frame memory 108 based on the prediction information output from the prediction unit 104, and generates a reproduced image from the predicted image and the prediction error input from the inverse quantization / inverse transform unit 106. Then, the image reproduction unit 107 stores the generated reproduced image in the frame memory 108.

[0051] The in-loop filtering unit 109 reads the reproduced image from the frame memory 108, and performs in-loop filtering processing such as deblocking filtering processing or sampling adaptive offset on the reproduced image. Then, the in-loop filtering unit 109 stores (restores) the image subjected to the in-loop filtering processing in the frame memory 108.

[0052] The encoding unit 110 performs entropy encoding on the quantization coefficient output from the transform / quantization unit 105 and the prediction information output from the prediction unit 104, thereby generating encoded data. The method of entropy encoding is not particularly specified, and Golomb encoding, arithmetic encoding, Huffman encoding, etc. can be used. Then, the encoding unit 110 outputs the generated encoded data to the integrated encoding unit 111.

[0053] The integrated coding unit 111 generates header code data using the segmentation information output from the image segmentation unit 102, generates a bit stream by multiplexing the generated header code data and the coded data output from the coding unit 110, and outputs the bit stream. The output destination of the bit stream is not limited to a specific output destination. The bit stream may be output to (stored in) a memory inside or outside the image coding device, or may be sent to an external device capable of communicating with the image coding device via a network such as a LAN or the Internet.

[0054] Next, Figure 6 An example of the format of a bit stream (encoded data using VVC encoded by the image encoding device) output from the integration encoding unit 111 is shown. Figure 6 The bitstream shown includes a sequence parameter set (SPS), which is header information including information related to the encoding of the sequence. In addition, Figure 6 The bitstream shown includes a picture parameter set (PPS), which is header information including information related to encoding of a picture. In addition, Figure 6 The bitstream shown includes a slice header (SLH), which is header information including information related to encoding of a slice. In addition, Figure 6 The bitstream shown includes blocks ( Figure 6 The encoded data of block 0 to block (N-1) in.

[0055] The SPS includes image size information and basic block data segmentation information. The PPS includes slice data segmentation information as slice segmentation information, block data segmentation information as block segmentation information, stripe data segmentation information 0 as stripe segmentation information, and basic block row data synchronization information. The SLH includes stripe data segmentation information 1 and basic block row data location information.

[0056] First, the SPS will be described. The SPS includes pic_width_in_luma_samples as information 601 and pic_height_in_luma_samples as information 602 as image size information. pic_width_in_luma_samples indicates the size (number of pixels) of the input image in the horizontal direction, and pic_height_in_luma_samples indicates the size (number of pixels) of the input image in the vertical direction. In this embodiment, since the image size is set to 1, the image size is set to 1. Fig. 8A , Figure 8B The input image shown is used as the input image, so pic_width_in_luma_samples=1152, and pic_height_in_luma_samples=1152. The SPS also includes log2_ctu_size_minus2 as information 603 as basic block data segmentation information. log2_ctu_size_minus2 represents the size of the basic block. The number of pixels of the basic block in the horizontal direction and the vertical direction is represented by 1<<(log2_ctu_size_minus2+2). In this embodiment, since the size of the basic block is 64×64 pixels, the value of log2_ctu_size_minus2 is 4.

[0057] Next, the PPS will be described. The PPS includes information 604 to 607 as slice data segmentation information. Information 604 is single_tile_in_pic_flag indicating whether the input image is segmented into multiple slices and encoded. If single_tile_in_pic_flag = 1, this indicates that the input image is not segmented into multiple slices and is not encoded. On the other hand, if single_tile_in_pic_flag = 0, this indicates that the input image is segmented into multiple slices and is encoded.

[0058] Information 605 is information included in the slice data partitioning information when single_tile_in_pic_flag = 0. Information 605 is uniform_tile_spacing_flag indicating whether each slice has the same size. If uniform_tile_spacing_flag = 1, this indicates that each slice has the same size. If uniform_tile_spacing_flag = 0, this indicates that there are slices that do not have the same size.

[0059] Information 606 and information 607 are information included in the slice data partitioning information when uniform_tile_spacing_flag=1. Information 606 is tile_cols_width_minus1 indicating (the number of horizontal basic blocks of the slice-1). Information 607 is tile_rows_height_minus1 indicating (the number of vertical basic blocks of the slice-1). The number of horizontal slices of the input image is obtained as a quotient in the case of dividing the number of horizontal basic blocks of the input image by the number of horizontal basic blocks of the slice. If a remainder is generated by the division, the number obtained by adding 1 to the quotient is defined as the "number of horizontal slices of the input image". In addition, the number of vertical slices of the input image is obtained as a quotient in the case of dividing the number of vertical basic blocks of the input image by the number of vertical basic blocks of the slice. If a remainder is generated by the division, the number obtained by adding 1 to the quotient is defined as the "number of vertical slices of the input image". In addition, the total number of slices in the input image can be obtained by calculating the number of horizontal slices of the input image×the number of vertical slices of the input image.

[0060] Note that since a tile having a size different from that of other tiles is included in the case of uniform_tile_spacing_flag=0, the number of horizontal tiles of the input image, the number of vertical tiles of the input image, and the vertical and horizontal sizes of each tile are converted into codes.

[0061] The PPS also includes information 608 to 613 as block data splitting information. Information 608 is brick_splitting_present_flag. If brick_splitting_present_flag=1, this indicates that one or more slices in the input image are split into a plurality of blocks. On the other hand, if brick_splitting_present_flag=0, this indicates that each slice in the input image is formed of a single block.

[0062] Information 609 is information included in the block data splitting information when brick_splitting_present_flag=1. Information 609 is brick_split_flag[] indicating whether the slice is split into a plurality of blocks for each slice. Brick_split_flag[] indicating whether the i-th slice is split into a plurality of blocks is represented as brick_split_flag[i]. If brick_split_flag[i]=1, this indicates that the i-th slice is split into a plurality of blocks. If brick_split_flag[i]=0, this indicates that the i-th slice is formed of a single block.

[0063] Information 610 is uniform_brick_spacing_flag[i] indicating whether the blocks forming the i-th slice have the same size when brick_split_flag[i]=1. If brick_split_flag[i]=0 for all i, information 610 is not included in the block data partitioning information. For i satisfying brick_split_flag[i]=1, information 610 includes uniform_brick_spacing_flag[i]. If uniform_brick_spacing_flag[i]=1, this indicates that the blocks forming the i-th slice have the same size. On the other hand, if uniform_brick_spacing_flag[i]=0, this indicates that there is a block whose size is different from that of other blocks among the blocks forming the i-th slice.

[0064] Information 611 is information included in the block data partitioning information when uniform_brick_spacing_flag[i] = 1. Information 611 is brick_height_minus1 indicating (the number of vertical basic blocks of the block in the i-th slice - 1).

[0065] Note that the number of vertical basic blocks of a block can be obtained by dividing the number of vertical pixels of the block by the number of vertical pixels of the basic block (64 pixels in the present embodiment). In addition, the number of blocks forming a slice is obtained as the quotient when the number of vertical basic blocks of a slice is divided by the number of vertical basic blocks of the block. If a remainder is generated by this division, the number obtained by adding 1 to the quotient is defined as the "number of blocks forming a slice". For example, it is assumed that the number of vertical basic blocks of a slice is 10 and the value of brick_height_minus1 is 2. At this time, the slice is divided into four blocks, which include, in order from the upper side, a block having 3 basic block rows, a block having 3 basic block rows, a block having 3 basic block rows, and a block having 1 basic block row.

[0066] Information 612 is num_brick_rows_minus1[i] indicating (the number of blocks forming the i-th slice - 1) for i satisfying uniform_brick_spacing_flag[i]=0.

[0067] Note that in the present embodiment, if uniform_brick_spacing_flag[i]=0, num_brick_rows_minus1[i] indicating (the number of blocks forming the i-th slice-1) is included in the block data partition information. However, the present invention is not limited thereto.

[0068] For example, it is assumed that when brick_split_flag[i]=1, the number of blocks forming the i-th slice is 2 or more. Then, instead of encoding num_brick_rows_minus1[i], num_brick_rows_minus2[i] representing (the number of blocks forming the slice - 2) may be encoded. This can reduce the number of bits of the syntax representing the number of blocks forming the slice. For example, if a slice is formed by two blocks and num_brick_rows_minus1[i] is Golomb-encoded, three-bit data "010" indicating "1" is encoded. On the other hand, if num_brick_rows_minus2[i] representing (the number of blocks forming the slice - 2) is Golomb-encoded, one-bit data "0" indicating "0" is encoded.

[0069] Information 613 is brick_row_height_minus1[i][j], which represents (the number of vertical basic blocks of the i-th block in the i-th slice - 1) for i satisfying uniform_brick_spacing_flag[i] = 0. Brick_row_height_minus1[i][j] is encoded as many times as num_brick_rows_minus1[i]. Note that if the above num_brick_rows_minus2[i] is used, brick_row_height_minus1[i][j] is encoded as many times as num_brick_rows_minus2[i]+1. The number of vertical basic blocks of the block at the lower end of the slice can be obtained by subtracting the sum of "brick_row_height_minus1+1" from the number of vertical basic blocks of the slice. For example, assuming that the number of vertical basic blocks of a slice = 10, num_brick_rows_minus1 = 3, and brick_row_height_minus1 = 2, 1, 2. At this time, the number of vertical basic blocks of a block at the lower end of the slice = 10-(3+2+3)=2.

[0070] In addition, the PPS includes information 614 to 618 as slice data partition information 0. Information 614 is single_brick_per_slice_flag. If single_brick_per_slice_flag = 1, this indicates that all slices in the input image are formed by a single block. That is, this indicates that each slice is formed by only one block. On the other hand, if single_brick_per_slice_flag = 0, this indicates that one or more slices in the input image are formed by a plurality of blocks.

[0071] Information 615 is rect_slice_flag, and is information included in the slice data partition information 0 when single_brick_per_slice_flag = 0. rect_slice_flag indicates whether the slices included in the slice have a rectangular shape or are arranged in raster order. Fig. 9A The relationship between a slice and a stripe is shown when rect_slice_flag=0, and the slices in a stripe are coded in raster order. Fig. 9B The relationship between a slice and a stripe is shown when rect_slice_flag=1, and it is shown that a plurality of slices in each stripe are rectangular.

[0072] The information 616 is num_slices_in_pic_minus1, and is information included in the slice data partition information 0 when rect_slice_flag = 1 and single_brick_per_slice_flag = 0. num_slices_in_pic_minus1 indicates (the number of slices in the input image - 1).

[0073] Information 617 is top_left_brick_idx[i] indicating the index of the block at the top left of the slice (the i-th slice) for each slice in the input image.

[0074] Information 618 is bottom_right_brick_idx_delta[i] indicating the difference between the index of the upper left block and the index of the lower right block of the i-th slice in the input image. Here, the "upper left block of the i-th slice in the input image" is the first block to be processed in the slice. In addition, the "lower right block of the i-th slice in the input image" is the last block to be processed in the slice. However, since the index of the upper left block of the first slice in a frame is always 0, top_left_brick_idx[0] of the first slice is not encoded.

[0075] In addition, information 619 is encoded as basic block row data synchronization information and included in the PPS. Information 619 is entropy_coding_sync_enabled_flag. If entropy_coding_sync_enabled_flag = 1, the occurrence probability table obtained when processing the basic block at the predetermined position of the basic block row adjacent to the upper side is applied to the block at the left end. This enables parallel processing of entropy encoding / decoding in units of basic block rows.

[0076] Next, SLH will be described. Information 620 and 621 are encoded as slice data segmentation information 1 and included in SLH. Information 620 is slice_address included in slice data segmentation information 1 when rect_slice_flag=1 or the number of blocks in the input image is 2 or more. If rect_slice_flag=0, slice_address indicates the BID at the top of the slice. If rect_slice_flag=1, slice_address indicates the number of the current slice.

[0077] Information 621 is num_bricks_in_slice_minus1 included in the slice data partition information 1 when rect_slice_flag=0 and single_brick_per_slice_flag=0. num_bricks_in_slice_minus1 indicates (the number of blocks in a slice-1).

[0078] The SLH includes information 622 as basic block row data location information. The information 622 is entry_point_offset_minus1[]. If entropy_coding_sync_enabled_flag=1, entry_point_offset_minus1 is encoded as many as the number of (the number of basic block rows in a slice-1) and included in the basic block row data location information.

[0079] entry_point_offset_minus1[] indicates the entry point of the encoded data of the basic block row, that is, the starting position of the encoded data of the basic block row. entry_point_offset_minus1[j-1] indicates the entry point of the encoded data of the j-th basic block row. The starting position of the encoded data of the 0-th basic block row is the same as the starting position of the encoded data of the slice to which the basic block row belongs, and is therefore omitted. {Size of the encoded data of the (j-1)-th basic block row - 1} is encoded as entry_point_offset_minus1[j-1].

[0080] Next, we will refer to Figure 3 The flowchart describes the encoding process of the input image (having Figure 6 (a) generating a bit stream of the configuration shown.

[0081] First, in step S301, the image segmentation unit 102 segments the input image into slices, blocks, and stripes. Then, for each of the segmented slices, blocks, and stripes, the image segmentation unit 102 outputs information related to the size as segmentation information to the integrated coding unit 111. In addition, the image segmentation unit 102 segments each block into basic block line images, and outputs the segmented basic block line images to the block segmentation unit 103.

[0082] In step S302, the block division unit 103 divides each basic block line image into a plurality of basic blocks, and outputs a block image as an image of each basic block to the prediction unit 104 at the subsequent stage.

[0083] In step S303, the prediction unit 104 divides the image of each basic block output from the block division unit 103 into sub-blocks, determines the intra prediction mode in units of sub-blocks, and generates a predicted image based on the determined intra prediction mode and the coded pixel. In addition, the prediction unit 104 calculates a prediction error based on the input image and the predicted image, and outputs the calculated prediction error to the transform / quantization unit 105. In addition, the prediction unit 104 outputs information such as the sub-block division method and the intra prediction mode as prediction information to the encoding unit 110 and the image reproduction unit 107.

[0084] In step S304, the transform / quantization unit 105 performs an orthogonal transform on the prediction error output from the prediction unit 104 in units of subblocks, thereby obtaining a transform coefficient (orthogonal transform coefficient). Then, the transform / quantization unit 105 quantizes the obtained transform coefficient to obtain a quantized coefficient. The transform / quantization unit 105 outputs the obtained quantized coefficient to the encoding unit 110 and the inverse quantization / inverse transform unit 106.

[0085] In step S305, the inverse quantization / inverse transformation unit 106 inversely quantizes the quantized coefficient output from the transformation / quantization unit 105 to reproduce the transformation coefficient, and further inversely orthogonally transforms the reproduced transformation coefficient, thereby reproducing the prediction error. Then, the inverse quantization / inverse transformation unit 106 outputs the reproduced prediction error to the image reproduction unit 107.

[0086] In step S306, the image reproduction unit 107 generates a predicted image by appropriately referring to the frame memory 108 based on the prediction information output from the prediction unit 104, and generates a reproduced image from the predicted image and the prediction error input from the inverse quantization / inverse transform unit 106. Then, the image reproduction unit 107 stores the generated reproduced image in the frame memory 108.

[0087] In step S307 , the encoding unit 110 generates encoded data by entropy encoding the quantization coefficient output from the transform / quantization unit 105 and the prediction information output from the prediction unit 104 .

[0088] Here, if entropy_coding_sync_enabled_flag = 1, the occurrence probability table obtained when processing a basic block at a predetermined position of an upper adjacent basic block row is applied before processing a basic block at the left end of the next basic block row. In this embodiment, description will be made assuming entropy_coding_sync_enabled_flag = 1.

[0089] In step S308, the control unit 199 determines whether the encoding of all basic blocks in the slice is completed. As a result of this determination, if the encoding of all basic blocks in the slice is completed, the process proceeds to step S309. On the other hand, if there are basic blocks that have not been encoded (unencoded basic blocks) remaining among the basic blocks in the slice, the process returns to step S303 to encode the unencoded basic blocks.

[0090] In step S309 , the integrated coding unit 111 generates header code data using the division information output from the image division unit 102 , generates a bit stream including the generated header code data and the coded data output from the coding unit 110 , and outputs the bit stream.

[0091] If the input image is Fig. 8A and 8B If the slice data is divided as shown in FIG. 1 , single_tile_in_pic_flag of the slice data division information is 0, and uniform_tile_spacing_flag is 1. In addition, tile_cols_width_minus1 is 5, and tile_rows_height_minus1 is 5.

[0092] The brick_splitting_present_flag of the block data splitting information is 1. The slices corresponding to slice IDs = 1, 4, 5, 6, and 8 are not split into blocks. Therefore, brick_split_flag[1], brick_split_flag[4], brick_split_flag[5], brick_split_flag[6], and brick_split_flag[8] are 0. The slices corresponding to slice IDs = 0, 2, 3, and 7 are split into blocks. Therefore, brick_split_flag[0], brick_split_flag[2], brick_split_flag[3], and brick_split_flag[7] are 1.

[0093] In addition, each of the slices corresponding to slice ID=0, 3, and 7 is divided into blocks of the same size. Therefore, uniform_brick_spacing_flag[0], uniform_brick_spacing_flag[3], and uniform_brick_spacing_flag[7] are 1. Regarding the slice corresponding to slice ID=2, the size of the block of BID=3 is different from the size of the block of BID=4. Therefore, uniform_brick_spacing_flag[2] is 0.

[0094] brick_height_minus1[0] is 2, and brick_height_minus1[3] is 1. In addition, brick_height_minus1[7] is 2. Note that brick_height_minus1 is encoded when uniform_brick_spacing is 1.

[0095] brick_row_height_minus1[2][0] is 1. Note that when the syntax of num_brick_rows_minus2[2] is encoded instead of num_brick_rows_minus1[2], the value of brick_row_height_minus1[2][0] is 0.

[0096] Furthermore, in this embodiment, since a slice includes a plurality of blocks, single_brick_per_slice_flag in slice data partition information 0 is 0. Furthermore, in this embodiment, since a slice includes a plurality of slices in raster order (a slice includes slices arranged in raster order), rect_slice_flag is 0.

[0097] In this case, as slice data partition information in the SLH, the first BID in the slice (the smallest BID among the BIDs of blocks in the slice) is first encoded as slice_address.

[0098] For stripe 0, "0" which is the BID of the first block in stripe 0 is encoded as slice_address. For stripe 1, "1" which is the BID of the first block in stripe 1 is encoded as slice_address. For stripe 2, "2" which is the BID of the first block in stripe 2 is encoded as slice_address. For stripe 3, "3" which is the BID of the first block in stripe 3 is encoded as slice_address. For stripe 4, "11" which is the BID of the first block in stripe 4 is encoded as slice_address.

[0099] Then, how many blocks are included in each slice is encoded as num_bricks_in_slice_minus1. Since the blocks included in slice 0 are only blocks corresponding to BID=0 (only a single block), num_bricks_in_slice_minus1 corresponding to slice 0 is 0. Since the blocks included in slice 1 are only blocks corresponding to BID=1 (only a single block), num_bricks_in_slice_minus1 corresponding to slice 1 is 0. Since the blocks included in slice 2 are only blocks corresponding to BID=2 (only a single block), num_bricks_in_slice_minus1 corresponding to slice 2 is 0. Since the blocks included in slice 3 are blocks corresponding to BID=3 to 10 (eight blocks), num_bricks_in_slice_minus1 corresponding to slice 3 is 7. Since the blocks included in the slice 4 are blocks corresponding to BID=11 to 13 (three blocks), num_bricks_in_slice_minus1 corresponding to the slice 4 is 2.

[0100] Next, in the basic block row data position information, the value of (the size of the encoded data of the (j-1)th basic block row in the slice - 1) transmitted from the encoding unit 110 is encoded as entry_point_offset_minus1[j-1]. The number of entry_point_offset_minus1 in a slice is equal to (the number of basic block rows in a slice - 1).

[0101] Slice 0 is formed by a single brick (corresponding num_bricks_in_slice_minus1=0), and brick_height_minus1[0]=2. Therefore, the number of basic block rows of the brick is brick_height_minus1[0]+1=3 (j ranges from 0 to 1).

[0102] Slice 1 is formed by a single tile (corresponding num_bricks_in_slice_minus1=0), and brick_height_minus1[0]=2, and tile_rows_height_minus1=5. Therefore, the number of basic block rows of the tile is tile_rows_height_minus1-brick_height_minus1[0]=3 (j ranges from 0 to 1).

[0103] Slice 2 is formed by a single brick (corresponding num_bricks_in_slice_minus1=0), and brick_height_minus1[1]=5. Therefore, the number of basic block rows of the brick is brick_height_minus1[1]+1=6 (j ranges from 0 to 4).

[0104] In slice 3, corresponding slice_address = 3, and corresponding num_bricks_in_slice_minus1 = 7. Therefore, slice 3 is formed by blocks (eight blocks) corresponding to BID = 3 to 10 (= slice_address + num_bricks_in_slice_minus1). The number of basic block rows in slice 3 is the sum of the number of basic block rows of blocks corresponding to BID = 3 to 10.

[0105] Since brick_row_height_minus1[2][0]=1, the number of basic block rows of the block corresponding to BID=3 is brick_row_height_minus1[2][0]+1=2.

[0106] The number of basic block rows of the block corresponding to BID=4 can be derived as follows: brick_row_height_minus1[2][0]=1, num_brick_rows_minus1[2]=1, and tile_rows_height_minus1=5. Therefore, the number of basic block rows of the block corresponding to BID=4 is tile_rows_height_minus1-brick_row_height_minus1[2][0]=4.

[0107] Since brick_height_minus1[3]=1, it is found that the number of basic block rows of blocks corresponding to each of BIDs of BID=5 to 7 is brick_height_minus1[3]+1=2.

[0108] Since tile_rows_height_minus1=5, it is found that the number of basic block rows of the blocks corresponding to each of BID=8 to 10 is tile_rows_height_minus1+1=6.

[0109] Therefore, the number of basic block rows in stripe 3 can be derived as the sum of the numbers of basic block rows of blocks corresponding to BID=3 to 10, ie, (2+4+2+2+2+6+6+6)=30. j ranges from 0 to 28.

[0110] In slice 4, corresponding slice_address = 11, and corresponding num_bricks_in_slice_minus1 = 2. Therefore, slice 4 is formed by blocks (three blocks) corresponding to BID = 11 to 13 (= slice_address + num_bricks_in_slice_minus1). The number of basic block rows in slice 4 is the sum of the number of basic block rows of blocks corresponding to BID = 11 to 13.

[0111] Since brick_height_minus1[7]=2, it is found that the number of basic block rows of the blocks corresponding to each of BID=11 and 12 is brick_height_minus1[7]+1=3.

[0112] Since tile_rows_height_minus1=5, it is found that the number of basic block rows of the block corresponding to BID=13 is tile_rows_height_minus1+1=6.

[0113] Therefore, the number of basic block rows in stripe 4 can be derived as the sum of the numbers of basic block rows of blocks corresponding to BID=11 to 13, ie, (3+3+6)=12. j ranges from 0-10.

[0114] Through this process, the number of basic block rows in each slice is determined. In this embodiment, since the number of entry_point_offset_minus1 can be derived according to other syntax, unlike the conventional method, num_entry_point_offset does not need to be encoded and included in the header. Therefore, according to this embodiment, the data amount of the bitstream can be reduced.

[0115] In step S310, the control unit 199 determines whether the encoding of all basic blocks in the input image has been completed. As a result of this determination, if the encoding of all basic blocks in the input image has been completed, the process proceeds to step S311. On the other hand, if there are basic blocks that have not been encoded left in the input image, the process returns to step S303 to perform subsequent processing on the basic blocks that have not been encoded.

[0116] In step S311 , the in-loop filtering unit 109 performs in-loop filtering processing on the reproduced image generated in step S306 , and outputs the image subjected to the in-loop filtering processing.

[0117] As described above, according to the present embodiment, it is not necessary to encode and include the following information in a bit stream, and a bit stream capable of deriving the information can be generated, wherein the information indicates how much information is encoded among the information indicating the starting position of the encoded data of the basic block row included in the square block.

[0118] [Second embodiment]

[0119] In this embodiment, an image decoding device for decoding a bit stream generated by the image encoding device according to the first embodiment will be described. Note that the conditions common to the first embodiment, such as the configuration of the bit stream, are the same as those described in the first embodiment, and their description will be omitted.

[0120] Will refer to Figure 2 The block diagram describes an example of the functional configuration of the image decoding device according to the present embodiment. The separation decoding unit 202 acquires a bit stream generated by the image encoding device according to the first embodiment. The bit stream acquisition method is not limited to a specific acquisition method. For example, the bit stream can be acquired directly or indirectly from the image encoding device via a network such as a LAN or the Internet, or a bit stream stored inside or outside the image decoding device can be acquired. The separation decoding unit 202 then separates information related to the decoding process and encoded data related to the coefficients from the acquired bit stream, and sends these data to the decoding unit 203. In addition, the separation decoding unit 202 decodes the encoded data of the header of the bit stream. In the present embodiment, the segmentation information is generated by decoding the header information related to the image segmentation, such as the size of the slice, block, strip, and basic block, and the generated segmentation information is output to the image reproduction unit 205. That is, the separation decoding unit 202 performs the segmentation information with Figure 1 The operation of the integrated encoding unit 111 is shown to be the reverse operation.

[0121] The decoding unit 203 decodes the encoded data output from the separation decoding unit 202, thereby reproducing the quantization coefficient and the prediction information. The inverse quantization / inverse transformation unit 204 inversely quantizes the quantization coefficient to generate a transformation coefficient, and inversely orthogonally transforms the generated transformation coefficient to reproduce the prediction error.

[0122] The frame memory 206 is a memory configured to store image data of a reproduced picture. The image reproduction unit 205 generates a predicted image by appropriately referring to the frame memory 206 based on the input prediction information. Then, the image reproduction unit 205 generates a reproduced image based on the generated predicted image and the prediction error reproduced by the inverse quantization / inverse transform unit 204. For the reproduced image, the image reproduction unit 205 specifies the positions of slices, blocks, and strips in the input image based on the partition information input from the separation decoding unit 202, and outputs the positions.

[0123] The in-loop filtering unit 207 performs in-loop filtering processing such as deblocking filtering processing on the reproduced image, and outputs the image after the in-loop filtering processing, as the in-loop filtering unit 109 described above. The control unit 299 controls the operation of the image decoding device as a whole, and controls the operation of the above-mentioned functional units of the image decoding device.

[0124] Next, we will describe Figure 2 The image decoding device of the configuration shown in the figure decodes the bit stream. The following description will be made assuming that the bit stream is input to the image decoding device in units of frames. However, a bit stream of a still image corresponding to one frame may be input to the image decoding device. In addition, in this embodiment, for ease of description, only the intra-frame prediction decoding process will be described. However, this embodiment is not limited to this and can also be applied to the inter-frame prediction decoding process.

[0125] The separation decoding unit 202 separates information related to the decoding process and coded data related to the coefficients from the input bit stream, and sends the coded data to the decoding unit 203. In addition, the separation decoding unit 202 decodes the coded data of the header of the bit stream. More specifically, the separation decoding unit 202 Figure 6 The separation decoding unit 202 decodes the basic block data division information, slice data division information, block data division information, stripe data division information 0, basic block line data synchronization information, and basic block line data position information in the image data, thereby generating division information. The separation decoding unit 202 then outputs the generated division information to the image reproduction unit 205. In addition, the separation decoding unit 202 reproduces the coded data of each basic block of the picture data and outputs the coded data to the decoding unit 203.

[0126] The decoding unit 203 decodes the encoded data output from the separation decoding unit 202, thereby reproducing the quantization coefficient and the prediction information. The reproduced quantization coefficient is output to the inverse quantization / inverse transform unit 204, and the reproduced prediction information is output to the image reproduction unit 205.

[0127] The inverse quantization / inverse transformation unit 204 inversely quantizes the input quantization coefficient to generate a transformation coefficient, and inversely orthogonally transforms the generated transformation coefficient to reproduce a prediction error. The reproduced prediction error is output to the image reproduction unit 205.

[0128] The image reproduction unit 205 generates a predicted image by appropriately referring to the frame memory 206 based on the prediction information input from the separation and decoding unit 202. Then, the image reproduction unit 205 generates a reproduced image based on the generated predicted image and the prediction error reproduced by the inverse quantization / inverse transformation unit 204. For the reproduced image, the image reproduction unit 205 specifies, for example, Figure 7 The shapes of the slices, blocks and strips shown and their positions in the input image are output to (stored in) the frame memory 206. The images stored in the frame memory 206 are used when making references in prediction.

[0129] The in-loop filtering unit 207 performs an in-loop filtering process such as a deblocking filtering process on the reproduced image read out from the frame memory 206 , and outputs (stores in) the image subjected to the in-loop filtering process.

[0130] The control unit 299 outputs the reproduced image stored in the frame memory 206. The output destination of the reproduced image is not limited to a specific output destination. For example, the control unit 299 may output the reproduced image to a display device provided in the image decoding apparatus, and cause the display device to display the reproduced image. In addition, for example, the control unit 299 may transmit the reproduced image to an external device via a network such as a LAN or the Internet.

[0131] The following will refer to Figure 4 The flowchart of the image decoding device according to this embodiment is used to describe the decoding process of the bit stream (having Figure 6 Decoding processing of the bit stream of the configuration shown).

[0132] In step S401, the separation and decoding unit 202 separates information related to the decoding process and coded data related to the coefficients from the input bit stream, and sends these data to the decoding unit 203. In addition, the separation and decoding unit 202 decodes the coded data of the header of the bit stream. More specifically, the separation and decoding unit 202 Figure 6Decode the basic block data segmentation information, slice data segmentation information, square data segmentation information, stripe data segmentation information, basic block line data synchronization information, and basic block line data position information in , etc., to generate segmentation information. Then, the separation decoding unit 202 outputs the generated segmentation information to the image reproduction unit 205. In addition, the separation decoding unit 202 reproduces the encoded data of each basic block of the picture data and outputs the encoded data to the decoding unit 203.

[0133] In this embodiment, the segmentation of the input image as the encoding source of the bitstream is Fig. 8A and Figure 8B the segmentation shown. Information related to the input image as the encoding source of the bitstream and its segmentation can be derived based on the segmentation information.

[0134] According to pic_width_in_luma_samples included in the image size information, it can be specified that the size of the input image in the horizontal direction (horizontal size) is 1152 pixels. In addition, according to pic_height_in_luma_samples included in the image size information, it can be specified that the size of the input image in the vertical direction (vertical size) is 1152 pixels.

[0135] In addition, since log2_ctu_size_minus2 = 4 in the basic block data segmentation information, the size of the basic block can be derived as 64×64 pixels according to 1<<log2_ctu_size_minus2+2.

[0136] Since single_tile_in_pic_flag = 0 in the slice data segmentation information, it can be specified that the input image is segmented into multiple slices. Since uniform_tile_spacing_flag = 1, it can be specified that the slices (except for the slices at the ends) have the same size.

[0137] In addition, since tile_cols_width_minus1 = 5 and tile_rows_height_minus1 = 5, it can be specified that each slice is formed by 6×6 basic blocks. That is, it can be specified that each slice is formed by 384×384 pixels. Since the input image has a size of 1152×1152 pixels, it is found that the input image is segmented into three slices in the horizontal direction and three slices in the vertical direction (i.e., a total of nine slices), and then encoded.

[0138] Furthermore, since brick_splitting_present_flag=1 in the block data splitting information, it can be specified that at least one slice in the input image is split into a plurality of blocks.

[0139] In addition, brick_split_flag[1], brick_split_flag[4], brick_split_flag[5], brick_split_flag[6], and brick_split_flag[8] are 0. Therefore, it can be specified that the slices corresponding to slice IDs = 1, 4, 5, 6, and 8 are not divided into blocks. In this embodiment, since the number of basic block rows in all slices is 6, it is found that the number of basic block rows of each block of the slices corresponding to slice IDs = 1, 4, 5, 6, and 8 is 6.

[0140] On the other hand, brick_split_flag[0], brick_split_flag[2], brick_split_flag[3], and brick_split_flag[7] are 1. Therefore, it can be specified that the slices corresponding to slice IDs = 0, 2, 3, and 7 are divided into blocks. In addition, uniform_brick_spacing_flag[0], uniform_brick_spacing_flag[3], and uniform_brick_spacing_flag[7] are all 1. Therefore, it can be specified that the slices corresponding to slice IDs = 0, 3, and 7 are divided into blocks of the same size.

[0141] In addition, both brick_height_minus1[0] and brick_height_minus1[7] are 2. Therefore, it can be specified that in both the slice corresponding to slice ID=0 and the slice corresponding to slice ID=7, the number of vertical basic blocks of each block in the slice is 3. It can also be specified that in both the slice corresponding to slice ID=0 and the slice corresponding to slice ID=7, the number of blocks in the slice is 2 (= the number of basic block rows in the slice (6) / the number of vertical basic blocks of each block in the slice (3)).

[0142] In addition, brick_height_minus1[3] is 1. Therefore, it can be specified that the number of vertical basic blocks of each block in the slice corresponding to slice ID=3 is 2. It can also be specified that the number of blocks in the slice corresponding to slice ID=3 is 3 (= the number of basic block rows in the slice (6) / the number of vertical basic blocks of each block in the slice (2)).

[0143] Regarding the slice corresponding to slice ID=2, since num_brick_rows_minus1[2]=1, it can be specified that the slice is formed by two blocks. In addition, uniform_brick_spacing_flag[2]=0. Therefore, it can be specified that there are blocks whose sizes are different from those of other blocks in the slice corresponding to slice ID=2. brick_row_height_minus1[2][0]=1, brick_row_height_minus1[2][1]=3, and the number of vertical basic blocks in all slices is 6. Therefore, it can be specified that the slice corresponding to slice ID=2 is formed in sequence from the top by blocks whose number of vertical basic blocks is 2 and blocks whose number of vertical basic blocks is 4. Note that brick_row_height_minus1[2][1]=3 may not be encoded. This is because when the number of blocks in a slice is 2, the height of the second block can be obtained according to the height of the slice and the height of the first block in the slice (brick_row_height_minus1[2][0]=1).

[0144] In addition, since single_brick_per_slice_flag=0 in the slice data partition information 0, it can be specified that at least one slice is formed of a plurality of blocks. In this embodiment, if uniform_brick_spacing_flag[i]=0, num_brick_rows_minus1[i] indicating (the number of blocks forming the i-th slice-1) is included in the block data partition information. However, the present invention is not limited thereto.

[0145] For example, assuming that when brick_split_flag[i]=1, the number of blocks forming the i-th slice is 2 or more. Then, instead of decoding num_brick_rows_minus1[i], num_brick_rows_minus2[i] indicating (the number of blocks forming the slice - 2) may be decoded. This can decode a bitstream in which the number of bits of syntax indicating the number of blocks forming the slice is reduced.

[0146] Then, the coordinates of the upper left boundary and the lower right boundary of each block are obtained. The coordinates are represented by the horizontal position and the vertical position of the basic block when the upper left corner of the input image is set as the origin. For example, the coordinates of the upper left boundary of the basic block that is the third from the left and the second from the top are (3, 2), and the coordinates of the lower right boundary are (4, 3).

[0147] The coordinates of the upper left boundary of the block with BID=0 in the slice corresponding to slice ID=0 are (0, 0). Since the number of basic block rows of the block with BID=0 is 3 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (3, 3).

[0148] The coordinates of the upper left boundary of the block with BID=1 in the slice corresponding to slice ID=0 are (0, 3). Since the number of basic block rows of the block with BID=1 is 3 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (6, 6).

[0149] The coordinates of the upper left boundary of the slice corresponding to slice ID = 1 (block with BID = 2) are (6, 0). Since the number of basic block rows of the block with BID = 2 is 6 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (12, 6).

[0150] The coordinates of the upper left boundary of the block with BID=3 in the slice corresponding to slice ID=2 are (12, 0). Since the number of basic block rows of the block with BID=3 is 2, the coordinates of the lower right boundary are (18, 2).

[0151] The coordinates of the upper left boundary of the block with BID=4 in the slice corresponding to slice ID=2 are (12, 2). Since the number of basic block rows of the block with BID=4 is 4, the coordinates of the lower right boundary are (18, 6).

[0152] The coordinates of the upper left boundary of the block with BID=5 in the slice corresponding to slice ID=3 are (0, 6). Since the number of basic block rows of the block with BID=5 is 2, the coordinates of the lower right boundary are (6, 8).

[0153] The coordinates of the upper left boundary of the block with BID=6 in the slice corresponding to slice ID=3 are (0, 8). Since the number of basic block rows of the block with BID=6 is 2, the coordinates of the lower right boundary are (6, 10).

[0154] The coordinates of the upper left boundary of the block with BID=7 in the slice corresponding to slice ID=3 are (0, 10). Since the number of basic block rows of the block with BID=7 is 2, the coordinates of the lower right boundary are (6, 12).

[0155] The coordinates of the upper left boundary of the slice (block of BID=8) corresponding to slice ID=4 are (6, 6). Since the number of basic block rows of the block of BID=8 is 6 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (12, 12).

[0156] The coordinates of the upper left boundary of the slice (block of BID=9) corresponding to slice ID=5 are (12, 6). Since the number of basic block rows of the block of BID=9 is 6 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (18, 12).

[0157] The coordinates of the upper left boundary of the slice (block with BID=10) corresponding to slice ID=6 are (0, 12). Since the number of basic block rows of the block with BID=10 is 6 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (6, 18).

[0158] The coordinates of the upper left boundary of the block with BID=11 in the slice corresponding to slice ID=7 are (6, 12). Since the number of basic block rows of the block with BID=11 is 3 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (12, 15).

[0159] The coordinates of the upper left boundary of the block with BID=12 in the slice corresponding to slice ID=7 are (6, 15). Since the number of basic block rows of the block with BID=12 is 3 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (12, 18).

[0160] The coordinates of the upper left boundary of the slice (block with BID=13) corresponding to slice ID=8 are (12, 12). Since the number of basic block rows of block with BID=13 is 6 and the number of horizontal basic blocks in all slices is 6, the coordinates of the lower right boundary are (18, 18).

[0161] Next, blocks included in each slice are specified. For slice 0, slice_address is 0, and num_bricks_in_slice_minus1 is 0. Therefore, it is found that slice 0 is formed of only blocks of BID=0.

[0162] For slice 1, slice_address is 1, and num_bricks_in_slice_minus1 is 0. Therefore, it is found that slice 1 is formed only of blocks with BID=1.

[0163] For slice 2, slice_address is 2, and num_bricks_in_slice_minus1 is 0. Therefore, it is found that slice 2 is formed only of blocks with BID=2.

[0164] For slice 3, slice_address is 3, and num_bricks_in_slice_minus1 is 7. Therefore, it is found that slice 3 is formed of blocks of BID=3 to 10 (=slice_address+num_bricks_in_slice_minus1).

[0165] For slice 4, slice_address is 11, and num_bricks_in_slice_minus1 is 2. Therefore, it is found that slice 4 is formed of blocks of BID=11 to 13 (=slice_address+num_bricks_in_slice_minus1).

[0166] In addition, entropy_coding_sync_enabled_flag is 1. Therefore, it is found that (the size of the coded data of the (j-1)th basic block row in the slice - 1) is coded as entry_point_offset_minus1[j-1]. Its number is (the number of basic block rows of the slice to be processed - 1).

[0167] For stripe 0, since the number of basic block rows forming blocks with BID=0 of stripe 0 is 3, 3-1=2, and j ranges from 0 to 1. For stripe 1, since the number of basic block rows forming blocks with BID=1 of stripe 1 is 3, 3-1=2, and j ranges from 0 to 1. For stripe 2, since the number of basic block rows forming blocks with BID=2 of stripe 2 is 6, 6-1=5, and j ranges from 0 to 4. For stripe 3, since the sum of the number of basic block rows forming blocks with BID=3 to 10 of stripe 3 is 2+4+2+2+2+6+6+6=30, j ranges from 0 to 28.

[0168] For stripe 4 , since the sum of the numbers of basic block rows of blocks with BID=11 to 13 forming stripe 4 is 3+3+6=12, j ranges from 0 to 10.

[0169] As described above, even if num_entry_point_offset is not encoded as in the conventional method, the number of entry_point_offset_minus1 can be derived from other syntaxes. Since the starting position of the data of each basic block row can be known, the decoding process can be performed in parallel in units of basic block rows. The segmentation information derived by the separation decoding unit 202 is sent to the image reproduction unit 205 and is used to specify the position of the processing object in the input image in step S404.

[0170] In step S402, the decoding unit 203 decodes the encoded data separated by the separation decoding unit 202, thereby reproducing the quantization coefficient and the prediction information. In step S403, the inverse quantization / inverse transformation unit 204 inversely quantizes the input quantization coefficient to generate a transformation coefficient, and inversely orthogonally transforms the generated transformation coefficient to reproduce the prediction error.

[0171] In step S404, the image reproduction unit 205 generates a predicted image by appropriately referring to the frame memory 206 based on the prediction information input from the decoding unit 203. Then, the image reproduction unit 205 generates a reproduced image based on the generated predicted image and the prediction error reproduced by the inverse quantization / inverse transform unit 204. For the reproduced image, the image reproduction unit 205 specifies the positions of slices, blocks, and strips in the input image based on the partitioning information input from the separation decoding unit 202, synthesizes the slices, blocks, and strips to the positions, and outputs the positions to (stores in) the frame memory 206.

[0172] In step S405, the control unit 299 determines whether all basic blocks of the input image have been decoded. As a result of this determination, if all basic blocks of the input image have been decoded, the process proceeds to step S406. On the other hand, if undecoded basic blocks remain in the input image, the process returns to step S402 to perform decoding processing on the undecoded basic blocks.

[0173] In step S406 , the in-loop filtering unit 207 performs in-loop filtering processing on the reproduced image read out from the frame memory 206 , and outputs the image subjected to the in-loop filtering processing to (stores in) the frame memory 206 .

[0174] As described above, according to the present embodiment, it is possible to decode an input image based on a "bit stream that does not include information indicating how much of the information indicating the starting position of the encoded data of the basic block row included in the square block is encoded" generated by the image encoding device according to the first embodiment.

[0175] Note that the image encoding device according to the first embodiment and the image decoding device according to the second embodiment may be separate devices. The image encoding device according to the first embodiment and the image decoding device according to the second embodiment may be integrated into one device.

[0176] [Third embodiment]

[0177] Figure 1 or Figure 2The functional units shown can be implemented by hardware, and some of these functional units can be implemented by software. In the latter case, the functional units except the frame memory 108 and the frame memory 206 can be implemented by software (computer program). A computer device capable of executing such a computer program can be applied to the above-mentioned image encoding device or image decoding device.

[0178] Will refer to Figure 5 An example of a hardware configuration of a computer device that can be applied to the above-mentioned image encoding device or image decoding device is described by a block diagram. Note that Figure 5 The illustrated hardware configuration is merely an example of a hardware configuration of a computer device applicable to the above-described image encoding device or image decoding device, and changes and modifications may be made as appropriate.

[0179] The CPU 501 performs various processes using computer programs and data stored in the RAM 502 or the ROM 503. Therefore, the CPU 501 controls the operation of the computer device as a whole, and also performs or controls the above-mentioned various processes as processes performed by the above-mentioned image encoding device or image decoding device. That is, the CPU 501 can be used as Figure 1 or Figure 2 The functional units shown (except frame memory 108 and frame memory 206).

[0180] The RAM 502 includes an area configured to store computer programs and data loaded from the ROM 503 or the external storage device 506 and an area configured to store data received from the outside via the I / F 507. In addition, the RAM 502 includes a work area used by the CPU 501 to perform various processes. Therefore, the RAM 502 can provide various areas as appropriate. The setting data of the computer device and the startup program, etc. are stored in the ROM 503.

[0181] The operation unit 504 is a user interface such as a keyboard, a mouse, or a touch panel screen, etc. When the user operates the operation unit 504 , various instructions can be input to the CPU 501 .

[0182] The display unit 505 is formed of a liquid crystal screen, a touch panel screen, or the like, and can display the processing result of the CPU 501 by images or characters, etc. Note that the display unit 505 may be a device such as a projector for projecting images or characters.

[0183] The external storage device 506 is a large-capacity information storage device such as a hard disk drive, etc. The external storage device 506 stores an OS (Operating System) and a computer program and data for causing the CPU 501 to execute or control the above-mentioned respective processes as processes performed by the above-mentioned image encoding device or image decoding device.

[0184] The computer program stored in the external storage device 506 includes a program configured to cause the CPU 501 to execute or control the following operations except Figure 1 or Figure 2 The computer program for controlling the functions of the functional units other than the frame memory 108 and the frame memory 206 in the external storage device 506. In addition, the data stored in the external storage device 506 includes the information described as the known information in the above description and various information associated with encoding and decoding.

[0185] Computer programs and data stored in the external storage device 506 are appropriately loaded into the RAM 502 under the control of the CPU 501 and processed by the CPU 501 .

[0186] Set in Figure 1 The frame memory 108 in the image encoding device shown in FIG. Figure 2 The frame memory 206 in the illustrated image decoding apparatus may be implemented using a memory device such as the above-described RAM 502 or an external storage device 506 .

[0187] I / F 507 is an interface configured to perform data communication with an external device. For example, if the computer device is applied to an image encoding device, the image encoding device can output the generated bit stream to the outside via I / F 507. In addition, if the computer device is applied to an image decoding device, the image decoding device can receive the bit stream via I / F 507. In addition, the image decoding device can send the decoding result of the bit stream to the outside via I / F 507. CPU 501, RAM 502, ROM 503, operation unit 504, display unit 505, external storage device 506 and I / F 507 are all connected to bus 508.

[0188] Note that the detailed numerical values ​​used in the above description are only used for detailed description and are not intended to limit the above embodiments to these numerical values. Some or all of the above embodiments may be appropriately combined. Some or all of the above embodiments may be selectively used.

[0189] (Other embodiments)

[0190] The present invention can be implemented by providing a program for implementing one or more functions of the above-mentioned embodiments to a system or device via a network or storage medium, and causing one or more processors in a computer of the system or device to read out and execute the program. The present invention can also be implemented by a circuit (e.g., ASIC) for implementing one or more functions.

[0191] The present invention is not limited to the above-described embodiments, and various changes and modifications may be made within the spirit and scope of the present invention. Therefore, the following claims are attached to inform the public of the scope of the present invention.

[0192] This application claims the benefit of Japanese Patent Application No. 2019-115751, filed on Jun. 21, 2019, which is hereby incorporated by reference herein in its entirety.

Claims

1. An image decoding device, configured to decode an image from a bit stream, the bit stream being obtained by encoding an image including a rectangular area, the rectangular area including at least one block row, the block row being formed of a plurality of blocks, the image decoding device comprising: A decoding unit configured to: decoding a first flag associated with enabling of parallel processing; decoding, from a picture parameter set of the bitstream, a second flag indicating whether to use a first mode in which slices have a rectangular shape or a second mode in which slices can have a shape that is not rectangular; decoding first information corresponding to the number of blocks in the vertical direction of the rectangular area in the image; decoding second information of the number of rectangular areas included in a slice in the image from a slice header of the bitstream; as well as In a case where the image includes a plurality of rectangular areas and the second flag indicates that the second mode is used, decoding an address of the slice from the slice header; as well as an identification unit configured to identify, for the slice, the number of syntax elements each for identifying a start position of encoded data of a block line based on an address of the slice, the first information corresponding to the number of blocks of the rectangular area in the image in the vertical direction, and the second information of the number of the rectangular areas included in the slice in the image, if the value of the first flag is a first value and the second flag indicates that the second mode is used, The number of syntax elements identified by the identification unit is included in the slice header.

2. The image decoding device according to claim 1, wherein: The decoding unit decodes the encoded data of the block lines in the rectangular area in parallel.

3. The image decoding device according to claim 1, wherein: The first flag is an entropy coding synchronization enable flag, and the second flag is a rectangular strip flag.

4. The image decoding device according to claim 1, wherein: In a case where the value of the first flag is the first value, probability information obtained when a basic block at a predetermined position of an upper adjacent basic block row is processed is applied to the block at the left end.

5. The image decoding device according to claim 1, wherein: The syntax elements are each used to identify a start position of encoded data of a block row in a rectangular area formed of a plurality of blocks and included in the slice.

6. The image decoding device according to claim 1, wherein: The syntax elements are each entry_point_offset_minus1.

7. The image decoding device according to claim 1, wherein: Information of the number of syntax elements is not signaled in the bitstream.

8. An image decoding method for decoding an image from a bit stream, the bit stream being obtained by encoding an image including a rectangular area, the rectangular area including at least one block row, the block row being formed by a plurality of blocks, the image decoding method comprising: decoding a first flag associated with enabling of parallel processing; decoding, from a picture parameter set of the bitstream, a second flag indicating whether to use a first mode in which slices have a rectangular shape or a second mode in which slices can have a shape that is not rectangular; decoding first information corresponding to the number of blocks in the vertical direction of the rectangular area in the image; decoding second information of the number of rectangular areas included in a slice in the image from a slice header of the bitstream; In a case where the image includes a plurality of rectangular areas and the second flag indicates that the second mode is used, decoding an address of the slice from the slice header; as well as In a case where the value of the first flag is the first value and the second flag indicates that the second mode is used, based on the address of the slice, the first information corresponding to the number of blocks of the rectangular area in the image in the vertical direction, and the second information of the number of the rectangular areas included in the slice in the image, identifying the number of syntax elements each for identifying a start position of encoded data of a block line for the slice, Among them, syntax elements whose number is the identified number are included in the slice header.

9. An image encoding device, comprising: a segmentation unit configured to segment the image into rectangular areas, the rectangular areas including at least one block row formed by a plurality of blocks; The encoding unit is configured to: encoding a first flag related to enabling of parallel processing into the bitstream; encoding a second flag into a picture parameter set of the bitstream, the second flag indicating whether to use a first mode in which slices have a rectangular shape or a second mode in which slices can have a shape that is not rectangular; encoding first information corresponding to the number of blocks in the rectangular area in the image in the vertical direction; encoding second information of the number of rectangular areas included in a slice in the image into a slice header of the bitstream; as well as In a case where the image includes a plurality of rectangular areas and the second flag indicates that the second mode is used, encoding the address of the slice into the slice header of the bitstream; as well as an identification unit configured to identify, for the slice, the number of syntax elements each for identifying a start position of encoded data of a block line based on an address of the slice, the first information corresponding to the number of blocks of the rectangular area in the image in the vertical direction, and the second information of the number of the rectangular areas included in the slice in the image, if the value of the first flag is a first value and the second flag indicates that the second mode is used, The number of syntax elements identified by the identification unit is encoded into the slice header.

10. An image encoding method, comprising: Dividing the image into rectangular areas, the rectangular areas including at least one block row, the block row being formed by a plurality of blocks; encoding a first flag related to enabling of parallel processing into the bitstream; encoding a second flag into a picture parameter set of the bitstream, the second flag indicating whether to use a first mode in which slices have a rectangular shape or a second mode in which slices can have a shape that is not rectangular; encoding first information corresponding to the number of blocks in the rectangular area in the image in the vertical direction; encoding second information of the number of rectangular areas included in a slice in the image into a slice header of the bitstream; as well as In a case where the image includes a plurality of rectangular areas and the second flag indicates that the second mode is used, encoding the address of the slice into the slice header of the bitstream; as well as In a case where the value of the first flag is the first value and the second flag indicates that the second mode is used, based on the address of the slice, the first information corresponding to the number of blocks of the rectangular area in the image in the vertical direction, and the second information of the number of the rectangular areas included in the slice in the image, identifying the number of syntax elements each for identifying a start position of encoded data of a block line for the slice, Among them, the syntax elements whose number is the identified number are encoded into the slice header.