[go: up one dir, main page]

WO2020255667A1 - 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法 - Google Patents

画像符号化装置、画像復号装置、画像符号化方法、画像復号方法 Download PDF

Info

Publication number
WO2020255667A1
WO2020255667A1 PCT/JP2020/021183 JP2020021183W WO2020255667A1 WO 2020255667 A1 WO2020255667 A1 WO 2020255667A1 JP 2020021183 W JP2020021183 W JP 2020021183W WO 2020255667 A1 WO2020255667 A1 WO 2020255667A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
slice
information
brick
tile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2020/021183
Other languages
English (en)
French (fr)
Inventor
大川 浩司
真悟 志摩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to KR1020227001087A priority Critical patent/KR102668065B1/ko
Priority to CN202080045361.1A priority patent/CN114051731B/zh
Priority to CN202411325719.2A priority patent/CN119211571A/zh
Priority to CN202411325717.3A priority patent/CN119211570A/zh
Priority to CN202411325723.9A priority patent/CN119211572A/zh
Priority to CN202411325726.2A priority patent/CN119211573A/zh
Priority to CN202411325727.7A priority patent/CN119211574A/zh
Publication of WO2020255667A1 publication Critical patent/WO2020255667A1/ja
Priority to US17/556,480 priority patent/US20220116640A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Definitions

  • the present invention relates to an image coding / decoding technique.
  • HEVC High Efficiency Video Coding
  • HEVC High Efficiency Video Coding
  • a basic block having a size larger than that of a conventional macroblock (16 ⁇ 16 pixels) has been adopted.
  • This large-sized basic block is called a CTU (Coding Tree Unit), and its size is a maximum of 64 ⁇ 64 pixels.
  • the CTU is further divided into sub-blocks that serve as units for prediction and conversion.
  • tile and slice division it is possible to divide a picture into a plurality of tiles or slices and encode them. There is little data dependency between tiles or slices, and encoding / decoding processing can be performed in parallel.
  • One of the great advantages of tile and slice division is that processing can be executed in parallel by a multi-core CPU or the like and the processing time can be shortened.
  • each slice is encoded by the conventional binary arithmetic coding method adopted in HEVC. That is, each syntax element is binarized and a binar signal is generated.
  • the occurrence probability is given to each syntax element as a table (hereinafter, occurrence probability table) in advance, and the binary signal is arithmetically coded based on the occurrence probability table.
  • This occurrence probability table is used as decoding information at the time of decoding to decode the subsequent code. At the time of coding, it is used as coding information for subsequent coding. Then, each time the coding is performed, the occurrence probability table is updated based on the statistical information of whether or not the encoded binary signal is the symbol having the higher probability of occurrence.
  • WPP Wavefront Parallel Processing
  • VVC Very Video Coding
  • the bricks that make up the slice can be derived in advance, and the number of basic block lines contained in the brick can also be derived from other syntax. Therefore, it is possible to derive the number of entry_point_offset_minus1 indicating the start position of the basic block line belonging to the slice without using number_entry_point_offset. Therefore, num_entry_point_offset becomes a redundant syntax.
  • the present invention provides a technique for reducing the amount of code in a bitstream by reducing redundant syntax.
  • the uniformity of the present invention is a dividing means for dividing an image into a plurality of tiles and dividing the tiles into a rectangular area including one or more block lines composed of a plurality of blocks having a size equal to or less than the tiles, and the image.
  • the rectangular region contained in the slice is identified based on the information indicating the number of rectangular regions included in the slice, and the said in the slice based on the number of blocks in the vertical direction in the identified rectangular region.
  • the amount of code in the bitstream can be reduced by reducing redundant syntax.
  • the block diagram which shows the functional structure example of an image coding apparatus.
  • the block diagram which shows the functional structure example of an image decoding apparatus.
  • a block diagram showing a hardware configuration example of a computer device The figure which shows an example of the format of a bit stream.
  • the figure which shows the division example of the input image The figure which shows the division example of the input image.
  • the figure which shows the division example of the input image The figure which shows the division example of the input image.
  • the figure which shows the division example of the input image The figure which shows the relationship between a tile and a slice.
  • An input image to be encoded is input to the image dividing unit 102.
  • the input image may be an image of each frame constituting the moving image, or may be a still image.
  • the image dividing unit 102 divides the input image into "one or a plurality of tiles".
  • a tile is a set of continuous basic blocks that cover a rectangular area in an input image.
  • the image dividing unit 102 further divides each tile into one or a plurality of bricks.
  • a brick is a rectangular area (a rectangular area containing one or more block lines consisting of a plurality of blocks having a size equal to or less than a tile) composed of rows of one or a plurality of basic blocks (basic block lines) in a tile. ..
  • the image dividing unit 102 further divides the input image into slices composed of "one or more tiles" or "one or more bricks in one tile".
  • a slice is a basic unit of coding, and header information such as information indicating a slice type is added to each slice.
  • FIG. 7 shows an example of dividing the input image into 4 tiles, 4 slices, and 11 bricks.
  • the upper left tile is divided into 1 brick
  • the lower left tile is divided into 2 bricks
  • the upper right tile is divided into 5 bricks
  • the lower right tile is divided into 3 bricks.
  • the left slice is configured to contain 3 bricks
  • the upper right slice is configured to contain 2 bricks
  • the right center slice is configured to contain 3 bricks
  • the lower right slice is configured to contain 3 bricks.
  • the image dividing unit 102 outputs information on the size of each of the tiles, bricks, and slices divided in this way as division information.
  • 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 (block image) of the basic block unit to the subsequent stage.
  • the prediction unit 104 divides an image in basic block units into sub-blocks, performs intra-frame prediction such as intra-frame prediction and inter-frame prediction in sub-block units, and generates a prediction image. Intra-prediction across bricks (intra-prediction using pixels of blocks of other bricks) and motion vector prediction across bricks (prediction of motion vectors using motion vectors of blocks of other bricks) are not performed. .. Further, the prediction unit 104 calculates and outputs a prediction error from the input image and the prediction image. Further, the prediction unit 104 also outputs information necessary for prediction (prediction information), for example, information such as a subblock division method, a prediction mode, and a motion vector, together with a prediction error.
  • prediction information necessary for prediction
  • the conversion / quantization unit 105 orthogonally transforms the prediction error in subblock units to obtain the conversion coefficient, and quantizes the obtained conversion coefficient to obtain the quantization coefficient.
  • the inverse quantization / inverse conversion unit 106 inversely quantizes the quantization coefficient output from the conversion / quantization unit 105 to reproduce the conversion coefficient, and further performs inverse orthogonal conversion of the reproduced conversion coefficient to reproduce the prediction error. To do.
  • the frame memory 108 functions as a memory for storing the reproduced image.
  • the image reproduction unit 107 appropriately refers to the frame memory 108 based on the prediction information output from the prediction unit 104 to generate a prediction image, and generates and outputs a reproduction image from the prediction image and the input prediction error. ..
  • the in-loop filter unit 109 performs in-loop filter processing such as a deblocking filter and sample adaptive offset on the reproduced image, and outputs the image (filter image) to which the in-loop filter processing has been performed.
  • in-loop filter processing such as a deblocking filter and sample adaptive offset on the reproduced image
  • the coding unit 110 generates code data (coded data) by encoding the quantization coefficient output from the conversion / quantization unit 105 and the prediction information output from the prediction unit 104, and the generated code is used. Output data.
  • the integrated coding unit 111 generates header code data using the division information output from the image dividing unit 102, and a bit including the generated header code data and the code data output from the coding unit 110. Generate and output a stream.
  • the control unit 199 controls the operation of the entire image coding device, and controls the operation of each functional unit of the image coding device.
  • the block division unit 103 divides the basic block line image output from the image division unit 102 into units of "basic blocks having a size of 64 x 64 pixels". Explain as a thing.
  • the image dividing unit 102 divides the input image into tiles, bricks, and slices.
  • 8A and 8B show examples of dividing the input image by the image dividing unit 102.
  • an input image having a size of 1152 ⁇ 1152 pixels is divided into nine tiles (the size of one tile is 384 ⁇ 384 pixels).
  • IDs are assigned to each tile in raster order from the upper left, the tile ID of the upper left tile is 0, and the tile ID of the lower right tile is 8.
  • FIG. 8B shows an example of dividing tiles, bricks, and slices in the input image.
  • IDs are assigned to each brick in order from the top in the tiles in raster order.
  • the BID shown in FIG. 8B is the brick ID.
  • the input image is divided into slices 0 to 4.
  • the image division unit 102 outputs information on the size of each of the divided tiles, bricks, and slices to the integrated coding unit 111 as division information. Further, the image dividing unit 102 divides each brick into a basic block line image, and outputs the divided basic block line image to the block dividing unit 103.
  • the block division unit 103 divides the basic block line image output from the image division unit 102 into a plurality of basic blocks, and transmits the block image (64 ⁇ 64 pixels), which is an image of the basic block unit, to the prediction unit 104 in the subsequent stage. Output to.
  • the prediction unit 104 divides the image in units of basic blocks into sub-blocks, determines an intra-prediction mode such as horizontal prediction or vertical prediction in units of sub-blocks, and predicts an image from the determined intra-prediction mode and encoded pixels. To generate. Further, the prediction unit 104 calculates a prediction error from the input image and the prediction image, and outputs the calculated prediction error to the conversion / quantization unit 105. Further, the prediction unit 104 outputs information such as the sub-block division method and the intra prediction mode as prediction information to the coding unit 110 and the image reproduction unit 107.
  • an intra-prediction mode such as horizontal prediction or vertical prediction in units of sub-blocks
  • the conversion / quantization unit 105 obtains a conversion coefficient (orthogonal conversion coefficient) by orthogonally converting the prediction error output from the prediction unit 104 in subblock units (orthogonal conversion processing corresponding to the size of the subblock). Then, the conversion / quantization unit 105 quantizes the obtained conversion coefficient to obtain the quantization coefficient. Then, the conversion / quantization unit 105 outputs the obtained quantization coefficient to the coding unit 110 and the inverse quantization / inverse conversion unit 106.
  • the inverse quantization / inverse conversion unit 106 inversely quantizes the quantization coefficient output from the conversion / quantization unit 105 to reproduce the conversion coefficient, and further performs inverse orthogonal conversion of the reproduced conversion coefficient to reproduce the prediction error. To do. Then, the inverse quantization / inverse conversion unit 106 outputs the reproduced prediction error to the image reproduction unit 107.
  • the image reproduction unit 107 appropriately refers to the frame memory 108 based on the prediction information output from the prediction unit 104 to generate a prediction image, and the prediction image and the prediction input from the inverse quantization / inverse conversion unit 106. Generate a reproduced image from the error. Then, the image reproduction unit 107 stores the generated reproduced image in the frame memory 108.
  • the in-loop filter unit 109 reads a reproduced image from the frame memory 108, and performs in-loop filter processing such as a deblocking filter and a sample adaptive offset on the read reproduced image. Then, the in-loop filter unit 109 stores (restores) the image subjected to the in-loop filter processing in the frame memory 108 again.
  • the coding unit 110 generates code data by entropy-coding the quantization coefficient output from the conversion / quantization unit 105 and the prediction information output from the prediction unit 104.
  • the method of entropy coding is not particularly specified, but Golomb coding, arithmetic coding, Huffman coding and the like can be used. Then, the coding unit 110 outputs the generated code data to the integrated coding unit 111.
  • the integrated coding unit 111 generates header code data using the division information output from the image dividing unit 102, and multiplexes the generated header code data and the code data output from the coding unit 110. By doing so, a bit stream is generated and output.
  • the output destination of the bitstream is not limited to a specific output destination, and may be output (stored) in the internal or external memory of the image encoding device, or the image encoding device may be output (stored) via a network such as LAN or the Internet. It may be transmitted to an external device capable of communicating with.
  • FIG. 6 shows an example of the format of the bit stream (code data by VVC encoded by the image coding device) output by the integrated coding unit 111.
  • the bitstream of FIG. 6 contains a sequence parameter set (SPS), which is header information that includes information related to sequence coding.
  • the bit stream of FIG. 6 includes a picture parameter set (PPS) which is header information including information related to picture coding.
  • the bit stream of FIG. 6 includes a slice header (SLH) which is header information including information related to slice coding.
  • the bit stream of FIG. 6 contains code data of each brick (brick 0 to brick (N-1) in FIG. 6).
  • the SPS contains image size information and basic block data division information.
  • the PPS includes tile data division information which is tile division information, brick data division information which is brick division information, slice data division information 0 which is slice division information, and basic block row data synchronization information. It is included.
  • SLH includes slice data division information 1 and basic block line data position information.
  • the SPS includes information 601 pic_with_in_luma_samples and information 602 pic_height_in_luma_samples as image size information.
  • pic_with_in_luma_samples represents the horizontal size (number of pixels) of the input image
  • pic_height_in_luma_samples represents the vertical size (number of pixels) of the input image.
  • the SPS includes log2_ctu_size_minus2 which is information 603 as basic block data division information.
  • log2_ctu_size_minus2 represents the size of the basic block. The number of pixels in the vertical direction and the horizontal direction of the basic block is indicated by 1 ⁇ (log2_ctu_size_minus2 + 2).
  • the size of the basic block is 64 ⁇ 64 pixels, so the value of log2_ctu_size_minus2 is 4.
  • the PPS includes information 604 to 607 as tile data division information.
  • the information 604 is a single_tile_in_pic_flag indicating whether or not the input image is divided into a plurality of tiles and encoded.
  • single_tile_in_pic_flag 1, it indicates that the input image is divided into a plurality of tiles and is not encoded.
  • single_tile_in_pic_flag 0
  • Information 606 is tile_cols_width_minus1 indicating (the number of basic blocks in the horizontal direction of the tile-1).
  • Information 607 is tile_rows_height_minus1 indicating (the number of basic blocks in the vertical direction of the tile-1).
  • the number of tiles in the horizontal direction of the input image is obtained as a quotient when the number of basic blocks in the horizontal direction of the input image is divided by the number of basic blocks in the horizontal direction of the tiles. If a remainder is generated by this division, the number obtained by adding 1 to the quotient is defined as the "number of tiles in the horizontal direction of the input image".
  • the number of tiles in the vertical direction of the input image is obtained as a quotient when the number of basic blocks in the vertical direction of the input image is divided by the number of basic blocks in the vertical direction of the tiles. If a remainder is generated by this division, the number obtained by adding 1 to the quotient is defined as the "number of tiles in the vertical direction of the input image". Further, the total number of tiles in the input image can be obtained by calculating the number of tiles in the horizontal direction of the input image ⁇ the number of tiles in the vertical direction of the input image.
  • PPS contains information 608 to 613 as brick data division information.
  • Information 608 is bright_splitting_present_flag.
  • brick_slitting_present_flag 1
  • brick_splitting_present_flag 0
  • Information 609 is a brick_split_flag [] indicating, for each tile, whether or not the tile is divided into a plurality of bricks.
  • the brick_split_flag [] indicating whether the i-th tile is divided into a plurality of bricks is referred to as a black_split_flag [i].
  • Information 611 is brick_height_minus1 [i] indicating (the number of basic blocks in the vertical direction of the brick in the i-th tile-1).
  • the number of basic blocks in the vertical direction of a brick can be obtained by dividing the number of pixels in the vertical direction of the brick by the number of pixels in the vertical direction of the basic block (64 pixels in this embodiment). Further, the number of bricks constituting the tile is obtained as a quotient when the number of basic blocks in the vertical direction of the tile is divided by the number of basic blocks in the vertical direction of the brick. If a remainder is generated by this division, the number obtained by adding 1 to the quotient is defined as the "number of bricks constituting the tile". For example, assume that the number of basic blocks in the vertical direction of the tile is 10, and the value of black_height_minus1 is 2. At this time, this tile has four bricks in order from the top: a brick with 3 basic block lines, a brick with 3 basic block lines, a brick with 3 basic block lines, and a brick with 1 basic block line. Will be divided into.
  • num_brick_rows_minus2 [i] indicating (number of bricks constituting the tile-2) may be encoded instead of num_brick_rows_minus1 [i].
  • the number of bits of the syntax indicating the number of bricks constituting the tile can be reduced.
  • the tile is composed of two bricks and Golomb-codes num_brick_rows_minus1 [i]
  • the 3-bit data of "010" indicating "1” is encoded.
  • Golomb-coding number_brick_rows_minus2 [i] indicating (number of bricks constituting the tile-2) 1-bit data of "0" indicating 0 is encoded.
  • the number of bright_low_height_minus1 [i] [j] is encoded by the number of number_brick_lows_minus1 [i].
  • the number of blink_row_height_minus1 [i] [j] is encoded by the number of number_brick_rows_minus2 [i] + 1.
  • the PPS also includes information 614 to 618 as slice data division information 0.
  • Information 614 is single_brick_per_slice_flag.
  • single_brick_per_slice_flag 1, it indicates that all slices in the input image are composed of a single brick. That is, it indicates that each slice is composed of only one brick.
  • rect_slice_flag indicates whether the tiles contained in the slice are in raster order or rectangular.
  • top_left_brick_idx [i] indicating the index of the upper left brick of the slice (i-th slice) for each slice in the input image.
  • bottom_right_brick_idx_delta [i] indicating the difference between the index of the upper left brick and the index of the lower right brick in the i-th slice in the input image.
  • the "upper left brick in the i-th slice in the input image” is the first brick processed in the slice.
  • the "lower right brick in the i-th slice in the input image” is the last brick to be processed in the slice.
  • the index of the upper left brick of the first slice in the frame is determined to be 0, the top_left_brick_idx [0] of the first slice is not encoded.
  • information 619 is encoded and included as basic block line data synchronization information in PPS.
  • Information 619 is entropy_coding_sync_enable_flag.
  • entropy_coding_sync_enable_flag 1
  • the table of the probability of occurrence at the time when the basic block at a predetermined position in the adjacent basic block row is processed is applied to the leftmost block. This enables parallel processing of entropy encoding / decoding in units of basic block lines.
  • Information 620 to 621 is encoded and included as slice data division information 1 in SLH.
  • SLH contains information 622 as basic block line data position information.
  • Information 622 is entry_point_offset_minus1 [].
  • Entry_point_offset_minus1 [] represents the entry point of the code data of the basic block line, that is, the start position of the code data of the basic block line.
  • entry_point_offset_minus1 [j-1] indicates the entry point of the code data of the j-th basic block line.
  • the start position of the code data of the 0th basic block line is omitted because it is the same as the start position of the code data of the slice to which the basic block line belongs.
  • the ⁇ size of code data of the (j-1) th basic block line-1 ⁇ is encoded as entry_point_offset_minus1 [j-1].
  • step S301 the image dividing unit 102 divides the input image into tiles, bricks, and slices. Then, the image dividing unit 102 outputs information on the size of each of the divided tiles, bricks, and slices to the integrated coding unit 111 as division information. Further, the image dividing unit 102 divides each brick into a basic block line image, and outputs the divided basic block line image to the block dividing unit 103.
  • step S302 the block division unit 103 divides the basic block line image into a plurality of basic blocks, and outputs a block image, which is an image of each basic block, to the prediction unit 104 in the subsequent stage.
  • step S303 the prediction unit 104 divides the image of the basic block unit output from the block division unit 103 into subblocks, determines the intra prediction mode for each subblock, and determines the determined intra prediction mode and encoded. A predicted image is generated from the pixels of. Further, the prediction unit 104 calculates a prediction error from the input image and the prediction image, and outputs the calculated prediction error to the conversion / quantization unit 105. Further, the prediction unit 104 outputs information such as the sub-block division method and the intra prediction mode as prediction information to the coding unit 110 and the image reproduction unit 107.
  • step S304 the conversion / quantization unit 105 obtains a conversion coefficient (orthogonal conversion coefficient) by orthogonally converting the prediction error output from the prediction unit 104 in subblock units. Then, the conversion / quantization unit 105 quantizes the obtained conversion coefficient to obtain the quantization coefficient. Then, the conversion / quantization unit 105 outputs the obtained quantization coefficient to the coding unit 110 and the inverse quantization / inverse conversion unit 106.
  • a conversion coefficient orthogonal conversion coefficient
  • step S305 the inverse quantization / inverse conversion unit 106 inversely quantizes the quantization coefficient output from the conversion / quantization unit 105 to reproduce the conversion coefficient, and further performs inverse orthogonal conversion of the reproduced conversion coefficient. Reproduce the prediction error. Then, the inverse quantization / inverse conversion unit 106 outputs the reproduced prediction error to the image reproduction unit 107.
  • step S306 the image reproduction unit 107 generates a prediction image by appropriately referring to the frame memory 108 based on the prediction information output from the prediction unit 104, and from the prediction image and the inverse quantization / inverse conversion unit 106. A reproduced image is generated from the input prediction error. Then, the image reproduction unit 107 stores the generated reproduced image in the frame memory 108.
  • step S307 the coding unit 110 entropy-encodes the quantization coefficient output from the conversion / quantization unit 105 and the prediction information output from the prediction unit 104 to generate code data.
  • entropy_coding_sync_enable_flag 1
  • the occurrence probability table at the time when the basic block at a predetermined position of the adjacent basic block row is processed is applied before processing the leftmost basic block of the next basic block row. To do.
  • entropy_coding_sync_enable_flag 1.
  • step S308 the control unit 199 determines whether or not the coding of all the basic blocks in the slice is completed. As a result of this determination, when the coding of all the basic blocks in the slice is completed, the process proceeds to step S309. On the other hand, if an unencoded basic block (uncoded basic block) remains among the basic blocks in the slice, the process proceeds to step S303 in order to encode the uncoded basic block. move on.
  • step S309 the integrated coding unit 111 generates header code data using the division information output from the image dividing unit 102, and the generated header code data and the code data output from the coding unit 110 are used. Generates and outputs a bitstream containing ,.
  • the single_tile_in_pic_flag of the tile data division information is 0, and the uniform_tile_spacing_flag is 1. Further, tile_cols_width_minus1 is 5, and tile_rows_height_minus1 is 5.
  • uniform_brick_spacing_flag [0] uniform_brick_spacing_flag [3]
  • uniform_brick_spacing_flag [7] are all 1.
  • uniform_brick_spacing_flag [2] is 0.
  • Black_height_minus1 [0] is 2, and black_height_minus1 [3] is 1. Further, bright_height_minus1 [7] is 2. Note that bright_height_minus1 is encoded when uniform_brick_spacing is 1.
  • single_brick_per_slice_flag in the slice data division information 0 is 0.
  • the slice since the slice includes a plurality of tiles in the raster order (the slice includes the tiles arranged in the raster order), the rect_slice_flag is 0.
  • the slice data division information in SLH first, the first BID in the slice (the smallest BID among the BIDs in the slice) is encoded as slice_addless.
  • the basic block line data position information is the value of (the size of the code data of the ((j-1) th basic block line-1) in the slice) sent from the coding unit 110, entry_point_offset_minus1 [j]. -1].
  • the number of entry_point_offset_minus1 in the slice is equal to (the number of basic block lines in the slice-1).
  • black_height_minus1 [3] 1
  • tile_rows_height_minus1 5
  • the range of j is 0 to 28.
  • black_height_minus1 [7] 2
  • tile_rows_height_minus1 5
  • the range of j is 0 to 10.
  • the number of basic block lines in each slice is determined.
  • the number of entry_point_offset_minus1 can be derived from other syntaxes, it is not necessary to encode the number_entry_point_offset and include it in the header as in the conventional case. Therefore, according to the present embodiment, the amount of bitstream data can be reduced.
  • step S310 the control unit 199 determines whether or not the coding of all the basic blocks in the input image is completed. As a result of this determination, when the coding of all the basic blocks in the input image is completed, the process proceeds to step S311. On the other hand, if an unencoded basic block remains in the input image, the process proceeds to step S303, and the subsequent processing is performed on the unencoded basic block.
  • step S311 the in-loop filter unit 109 performs in-loop filter processing on the reproduced image generated in step S306, and outputs the image to which the in-loop filter processing has been performed.
  • the present embodiment it is not necessary to encode the information indicating how many codes of the information indicating the start position of the code data of the basic block line of the brick and include it in the bit stream. It is possible to generate a bitstream from which information can be derived.
  • the separation / decoding unit 202 acquires a bit stream generated by the image coding apparatus according to the first embodiment.
  • the bitstream acquisition method is not limited to a specific acquisition method.
  • the bitstream may be acquired directly or indirectly from the image encoding device via a network such as LAN or the Internet, or the bitstream stored inside or outside the image decoding device may be acquired. You may.
  • the separation / decoding unit 202 separates the information related to the decoding process and the code data related to the coefficient from the acquired bit stream and sends the code data to the decoding unit 203.
  • the separation / decoding unit 202 decodes the code data of the header of the bit stream.
  • header information related to image division such as tiles, bricks, slices, and basic block sizes is decoded to generate division information, and the generated division information is output to the image reproduction unit 205. That is, the separation / decoding unit 202 performs the reverse operation of the integrated coding unit 111 of FIG.
  • the decoding unit 203 decodes the code data output from the separation decoding unit 202 and reproduces the quantization coefficient and the prediction information.
  • the inverse quantization / inverse conversion unit 204 performs inverse quantization on the quantization coefficient to generate a conversion coefficient, and performs inverse orthogonal conversion on the generated conversion coefficient to reproduce a prediction error.
  • the frame memory 206 is a memory for storing the image data of the reproduced picture.
  • the image reproduction unit 205 appropriately refers to the frame memory 206 based on the input prediction information to generate a prediction image. Then, the image reproduction unit 205 generates a reproduction image from the generated prediction image and the prediction error reproduced by the inverse quantization / inverse conversion unit 204. Then, the image reproduction unit 205 identifies and outputs the positions of the tiles, bricks, and slices in the input image of the reproduced image based on the division information input from the separation / decoding unit 202.
  • the in-loop filter unit 207 performs in-loop filter processing such as a deblocking filter on the reproduced image, and outputs the image to which the in-loop filter processing has been performed.
  • the control unit 299 controls the operation of the entire image decoding device, and controls the operation of each functional unit of the image decoding device.
  • bitstream decoding process by the image decoding device having the configuration shown in FIG. 2 will be described.
  • the bitstream will be described as being input to the image decoding device in frame units, but a bitstream of a still image for one frame may be input to the image decoding device.
  • the intra-predictive decoding process will be described for ease of explanation, but the present embodiment is not limited to this and can be applied to the inter-predictive decoding process.
  • the separation / decoding unit 202 separates the information related to the decoding process and the code data related to the coefficient from the input bit stream and sends the code data to the decoding unit 203. Further, the separation / decoding unit 202 decodes the code data of the header of the bit stream. More specifically, the separation / decoding unit 202 includes basic block data division information, tile data division information, brick data division information, slice data division information 0, basic block line data synchronization information, and basic block line data position information in FIG. Etc. are decoded to generate division information. Then, the separation / decoding unit 202 outputs the generated division information to the image reproduction unit 205. Further, the separation / decoding unit 202 reproduces the code data of the basic block unit of the picture data and outputs the code data to the decoding unit 203.
  • the decoding unit 203 decodes the code data output from the separation decoding unit 202 and reproduces the quantization coefficient and the prediction information.
  • the reproduced quantization coefficient is output to the inverse quantization / inverse conversion unit 204, and the reproduced prediction information is output to the image reproduction unit 205.
  • the inverse quantization / inverse conversion unit 204 performs inverse quantization on the input quantization coefficient to generate a conversion coefficient, and performs inverse orthogonal conversion on the generated conversion coefficient to reproduce the prediction error. To do.
  • the reproduced prediction error is output to the image reproduction unit 205.
  • the image reproduction unit 205 generates a prediction image by appropriately referring to the frame memory 206 based on the prediction information input from the separation / decoding unit 202. Then, the image reproduction unit 205 generates a reproduction image from the generated prediction image and the prediction error reproduced by the inverse quantization / inverse conversion unit 204. Then, the image reproduction unit 205 specifies the shape of the tile, brick, slice as shown in FIG. 7, and the position in the input image of the reproduced image based on the division information input from the separation / decoding unit 202, and the frame memory. Output (store) to 206. The image stored in the frame memory 206 is used as a reference when making a prediction.
  • the in-loop filter unit 207 performs in-loop filter processing such as a deblocking filter on the reproduced image read from the frame memory 206, and outputs (stores) the image to which the in-loop filter processing has been performed to the frame memory 206.
  • in-loop filter processing such as a deblocking filter
  • 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.
  • the control unit 299 may output the reproduced image to a display device included in the image decoding device and display the reproduced image on the display device. Further, 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.
  • bitstream decoding process (the bitstream decoding process having the configuration of FIG. 6) by the image decoding apparatus according to the present embodiment will be described with reference to the flowchart of FIG.
  • the separation / decoding unit 202 separates the information related to the decoding process and the code data related to the coefficient from the input bit stream and sends the code data to the decoding unit 203. Further, the separation / decoding unit 202 decodes the code data of the header of the bit stream. More specifically, the separation / decoding unit 202 includes basic block data division information, tile data division information, brick data division information, slice data division information, basic block line data synchronization information, and basic block line data position information in FIG. Etc. are decoded to generate division information. Then, the separation / decoding unit 202 outputs the generated division information to the image reproduction unit 205. Further, the separation / decoding unit 202 reproduces the code data of the basic block unit of the picture data and outputs the code data to the decoding unit 203.
  • the division of the input image which is the encoding source of the bit stream, is the division shown in FIGS. 8A and 8B.
  • the input image that is the encoding source of the bitstream and the information related to its division can be derived from the division information.
  • the horizontal size (horizontal size) of the input image is 1152 pixels.
  • the vertical size (vertical size) of the input image is 1152 pixels.
  • the size of the basic block can be derived as 64 ⁇ 64 pixels from 1 ⁇ log2_ctu_size_minus2 + 2.
  • each tile is composed of 6 ⁇ 6 basic blocks. That is, it can be specified that each tile is composed of 384 ⁇ 384 pixels. Since the input image has 1152 ⁇ 1152 pixels, it can be seen that the input image is divided into nine tiles, three in the horizontal direction and three in the vertical direction, and encoded.
  • brick_splitting_present_flag 1
  • bright_low_height_minus1 [2] [1] 3 may not be encoded.
  • single_brick_per_slice_flag 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0 in the slice data division information 0, it can be specified that at least one slice is composed of a plurality of bricks.
  • uniform_brick_spacing_flag [i] 0, number_brick_rows_minus1 [i] indicating (number of bricks constituting the i-th tile-1) is included in the brick data division information.
  • uniform_brick_spacing_flag [i] 0
  • number_brick_rows_minus1 [i] indicating (number of bricks constituting the i-th tile-1)
  • the number_brick_rows_minus2 [i] indicating (number of bricks constituting the tile-2) may be decoded instead of the number_brick_rows_minus1 [i].
  • the coordinates are indicated by the horizontal and vertical positions of the basic block, with the origin at the upper left of the input image.
  • the coordinates of the upper left boundary of the third basic block from the left and the second from the top are (3,2)
  • the coordinates of the lower right boundary are (4,3).
  • slice_addless is 3 and num_bricks_in_slice_minus1 is 7.
  • slice_addless is 11 and num_bricks_in_slice_minus1 is 2.
  • entropy_coding_sync_enable_flag is 1. Therefore, it can be seen that (the size of the code data of the (j-1) th basic block line in the slice-1) is encoded as entry_point_offset_minus1 [j-1]. The number is (the number of basic block lines of the slice to be processed-1).
  • the number of entry_point_offset_minus1 can be derived from other syntaxes without encoding number_entry_point_offset as in the conventional case. Since the start position of the data in each basic block line is known, the decoding process can be performed in parallel for each basic block line.
  • the division information derived from the separation / decoding unit 202 is sent to the image reproduction unit 205, and is used in step S404 to identify the position of the processing target in the input image.
  • step S402 the decoding unit 203 decodes the code data separated by the separation decoding unit 202 and reproduces the quantization coefficient and the prediction information.
  • step S403 the inverse quantization / inverse conversion unit 204 performs inverse quantization on the input quantization coefficient to generate a conversion coefficient, and performs inverse orthogonal conversion on the generated conversion coefficient. Reproduce the prediction error.
  • step S404 the image reproduction unit 205 generates a prediction 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 reproduction image from the generated prediction image and the prediction error reproduced by the inverse quantization / inverse conversion unit 204. Then, the image reproduction unit 205 identifies the positions of the tiles, bricks, and slices in the input image of the tiles, bricks, and slices based on the division information input from the separation / decoding unit 202 of the reproduced images, synthesizes them at those positions, and stores the reproduced images in the frame memory 206. Output (store).
  • step S405 the control unit 299 determines whether or not all the basic blocks of the input image have been decoded. As a result of this determination, if all the basic blocks of the input image are decoded, the process proceeds to step S406. On the other hand, if a basic block that has not been decoded remains in the input image, the process proceeds to step S402, and the basic block that has not been decoded is subjected to the decoding process.
  • step S406 the in-loop filter unit 207 performs in-loop filter processing on the reproduced image read from the frame memory 206, and outputs (stores) the in-loop filtered image to the frame memory 206.
  • the information indicating how many pieces of the information indicating the start position of the basic block line of the brick, which is generated by the image coding apparatus according to the first embodiment, is encoded.
  • the input image can be decoded from the "not included bitstream".
  • the image coding device according to the first embodiment and the image decoding device according to the second embodiment may be separate devices. Further, the image coding device according to the first embodiment and the image decoding device according to the second embodiment may be integrated into one device.
  • Each functional part shown in FIGS. 1 and 2 may be implemented by hardware, but some of them may be implemented by software. In the latter case, each functional unit other than the frame memory 108 and the frame memory 206 may be implemented by software (computer program).
  • a computer device capable of executing such a computer program can be applied to the above-mentioned image coding device and image decoding device.
  • FIG. 5 An example of a hardware configuration of a computer device applicable to the above-mentioned image coding device and image decoding device will be described with reference to the block diagram of FIG.
  • the hardware configuration shown in FIG. 5 is merely an example of the hardware configuration of a computer device applicable to the above-mentioned image coding device and image decoding device, and can be appropriately changed / modified.
  • CPU 501 executes various processes using computer programs and data stored in RAM 502 and ROM 503. As a result, the CPU 501 controls the operation of the entire computer device, and also executes or controls each process described as performed by the image coding device and the image decoding device. That is, the CPU 501 can function as each functional unit (excluding the frame memory 108 and the frame memory 206) shown in FIGS. 1 and 2.
  • the RAM 502 has an area for storing computer programs and data loaded from the ROM 503 and the external storage device 506, and an area for storing data received from the outside via the I / F 507.
  • the RAM 502 also has a work area used by the CPU 501 to execute various processes. As described above, the RAM 502 can appropriately provide various areas.
  • the ROM 503 stores computer device setting data, a startup program, and the like.
  • the operation unit 504 is a user interface such as a keyboard, a mouse, and a touch panel screen, and various instructions can be input to the CPU 501 by the user operating the operation unit 504.
  • the display unit 505 is composed of a liquid crystal screen, a touch panel screen, and the like, and can display the processing result by the CPU 501 with images, characters, and the like.
  • the display unit 505 may be a device such as a projector that projects an image or characters.
  • the external storage device 506 is a large-capacity information storage device such as a hard disk drive device.
  • the external storage device 506 stores computer programs and data for causing the CPU 501 to execute or control each of the above-mentioned processes as performed by the OS (operating system) and the above-mentioned image coding device and image decoding device. ..
  • the computer program stored in the external storage device 506 includes a computer program for causing the CPU 501 to execute or control the functions of the functional units other than the frame memory 108 and the frame memory 206 in FIGS. 1 and 2. .. Further, the data stored in the external storage device 506 includes the data described as known information in the above description and various information related to coding and decoding.
  • the computer programs and data stored in the external storage device 506 are appropriately loaded into the RAM 502 according to the control by the CPU 501, and are processed by the CPU 501.
  • the frame memory 108 included in the image coding device of FIG. 1 and the frame memory 206 included in the image coding device of FIG. 2 can be mounted by using a memory device such as the RAM 502 or the external storage device 506 described above.
  • the I / F 507 is an interface for performing data communication with an external device.
  • the image coding device can output the generated bit stream to the outside via the I / F 507.
  • the image decoding device can receive the bit stream via the I / F 507.
  • the image decoding device can transmit the result of decoding the bit stream to the outside via the I / F 507.
  • the CPU 501, RAM 502, ROM 503, operation unit 504, display unit 505, external storage device 506, and I / F 507 are all connected to the bus 508.
  • the present invention supplies a program that realizes one or more functions of the above-described embodiment to a system or device via a network or storage medium, and one or more processors in the computer of the system or device reads and executes the program. It can also be realized by the processing to be performed. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
  • a circuit for example, ASIC

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割する。画像におけるスライスに含まれる矩形領域の数を示す情報に基づいて、該スライスに含まれる矩形領域を特定する。該特定された矩形領域における垂直方向におけるブロックの数に基づいて、スライスにおけるブロック行の符号データの先頭位置を特定するための情報の数を特定する。特定した数の情報と、スライスに含まれる矩形領域の数を示す情報と、ブロック行の符号データとを少なくとも多重化した、ビットストリームを生成する。

Description

画像符号化装置、画像復号装置、画像符号化方法、画像復号方法
 本発明は、画像の符号化/復号技術に関するものである。
 動画像の圧縮記録の符号化方式として、HEVC(High Efficiency Video Coding)符号化方式(以下、HEVCと記す)が知られている。HEVCでは符号化効率向上のため、従来のマクロブロック(16×16画素)より大きなサイズの基本ブロックが採用された。この大きなサイズの基本ブロックはCTU(Coding Tree Unit)と呼ばれ、そのサイズは最大64×64画素である。CTUはさらに予測や変換を行う単位となるサブブロックに分割される。
 またHEVCでは、ピクチャを複数のタイルまたはスライスに分割して符号化する事が可能である。各タイル間またはスライス間にはデータの依存性が少なく、並列に符号化・復号化処理を実施する事ができる。マルチコアのCPU等で並列に処理を実行し、処理時間を短縮できる事が、タイル、スライス分割の大きな利点の一つとして挙げられる。
 また、各スライスはHEVCに採用されている従来の2値算術符号化の手法によって符号化される。すなわち、各シンタックス要素が2値化され、2値信号が生成される。各シンタックス要素には、あらかじめ発生確率がテーブル(以下、発生確率テーブル)として与えられ、2値信号は発生確率テーブルに基づいて算術符号化される。この発生確率テーブルは復号時には復号情報として、続く符号の復号に使用される。符号化時には符号化情報として、続く符号化に使用される。そして符号化が行われる毎に、符号化された2値信号が発生確率の高い方のシンボルであったか否か、という統計情報に基づいて発生確率テーブルが更新される。
 またHEVCには、Wavefront Parallel Processing(以下、WPP)と呼ばれるエントロピー符号化・復号化を並列に処理するための手法がある。WPPでは、あらかじめ指定された位置のブロックを符号化処理した時点での発生確率のテーブルを、次の行の左端のブロックに適用することで、符号化効率の低下を抑制した上で行単位でのブロックの並列符号化処理が可能となる。ブロック行単位での並列処理を可能にする為、スライスヘッダにはビットストリーム中の各ブロック行の先頭位置を示すentry_point_offset_minus1及びその数を示すnum_entry_point_offsetsが符号化される。特許文献1では、WPPに関連する技術が開示されている。
 近年、HEVCの後継としてさらに高効率な符号化方式の国際標準化を行う活動が開始された。JVET(Joint Video Experts Team)がISO/IECとITU-Tの間で設立され、VVC(Versatile Video Coding)符号化方式(以下、VVC)として標準化が進められている。VVCでは、タイルを更に複数のブロック行から構成される矩形(ブリック)に分割する事が検討されている。そしてスライスは一つ以上のブリックを包含するように構成される。
特開2014-11638号公報
 VVCにおいては、スライスを構成するブリックが予め導出可能であり、更にそのブリックに内包される基本ブロック行の数も他のシンタクスから導出可能である。そのため、該スライスに属する基本ブロック行の先頭位置を示すentry_point_offset_minus1の数を、num_entry_point_offsetを用いずに導出する事が可能である。そのためnum_entry_point_offsetは冗長なシンタクスとなる。本発明では、冗長なシンタクスを減らすことでビットストリームの符号量を減らす技術を提供する。
 本発明の一様態は、画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割する分割手段と、前記画像におけるスライスに含まれる矩形領域の数を示す情報に基づいて、該スライスに含まれる前記矩形領域を特定し、該特定された前記矩形領域における垂直方向におけるブロックの数に基づいて、前記スライスにおける前記ブロック行の符号データの先頭位置を特定するための情報の数を特定する特定手段と、前記特定手段によって特定した数の前記先頭位置を特定するための前記情報と、前記スライスに含まれる矩形領域の数を示す前記情報と、前記ブロック行の符号データとを少なくとも多重化した、ビットストリームを生成する生成手段とを備えることを特徴とする。
 本発明の構成によれば、冗長なシンタクスを減らすことでビットストリームの符号量を減らすことができる。
 本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
 添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
画像符号化装置の機能構成例を示すブロック図。 画像復号装置の機能構成例を示すブロック図。 画像符号化装置による入力画像の符号化処理のフローチャート。 画像復号装置によるビットストリームの復号処理のフローチャート。 コンピュータ装置のハードウェア構成例を示すブロック図。 ビットストリームのフォーマットの一例を示す図。 入力画像の分割例を示す図。 入力画像の分割例を示す図。 入力画像の分割例を示す図。 タイルとスライスとの関係を示す図。 タイルとスライスとの関係を示す図。
 以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
 [第1の実施形態]
 先ず、本実施形態に係る画像符号化装置の機能構成例について、図1のブロック図を用いて説明する。画像分割部102には、符号化対象となる入力画像が入力される。入力画像は動画像を構成する各フレームの画像であっても良いし、静止画像であっても良い。画像分割部102は、入力画像を「一つもしくは複数のタイル」に分割する。タイルは入力画像内の矩形領域を覆う、連続する基本ブロックの集合である。画像分割部102はさらに、それぞれのタイルを一つもしくは複数のブリックに分割する。ブリックは、タイル内の一つもしくは複数の基本ブロックの行(基本ブロック行)で構成される矩形領域(タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域)である。画像分割部102はさらに入力画像を、「一つまたは複数のタイル」あるいは「一つのタイル内の一つ以上のブリック」で構成されるスライスに分割する。スライスは符号化の基本単位であり、スライス毎にスライスの種類を示す情報等のヘッダ情報が付加される。入力画像を4個のタイル、4個のスライス、11個のブリックに分割する例を図7に示す。左上のタイルは1個のブリック、左下のタイルは2個のブリック、右上のタイルは5個のブリック、右下のタイルは3個のブリックにそれぞれ分割されている。そして左のスライスは3個のブリック、右上のスライスは2個のブリック、右中央のスライスは3個のブリック、右下のスライスは3個のブリックを包含するように構成されている。画像分割部102は、このようにして分割したタイル、ブリック、スライスのそれぞれについて、大きさに関する情報を分割情報として出力する。
 ブロック分割部103は、画像分割部102から出力された基本ブロック行の画像(基本ブロック行画像)を複数の基本ブロックに分割し、基本ブロック単位の画像(ブロック画像)を後段に出力する。
 予測部104は、基本ブロック単位の画像をサブブロックに分割し、サブブロック単位でフレーム内予測であるイントラ予測やフレーム間予測であるインター予測などを行い、予測画像を生成する。ブリックを跨いだイントラ予測(他のブリックのブロックの画素を用いたイントラ予測)、ブリックを跨いだ動きベクトルの予測(他のブリックのブロックの動きベクトルを用いた動きベクトルの予測)は行われない。さらに予測部104は、入力された画像と予測画像から予測誤差を算出して出力する。また予測部104は、予測に必要な情報(予測情報)、例えばサブブロック分割方法、予測モードや動きベクトル等の情報も予測誤差と併せて出力する。
 変換・量子化部105は、予測誤差をサブブロック単位で直交変換して変換係数を求め、該求めた変換係数を量子化して量子化係数を求める。逆量子化・逆変換部106は、変換・量子化部105から出力された量子化係数を逆量子化して変換係数を再生し、さらに該再生した変換係数を逆直交変換して予測誤差を再生する。
 フレームメモリ108は、再生された画像を格納しておくメモリとして機能する。画像再生部107は、予測部104から出力された予測情報に基づいてフレームメモリ108を適宜参照して予測画像を生成し、該予測画像と入力された予測誤差から再生画像を生成して出力する。
 インループフィルタ部109は、再生画像に対してデブロッキングフィルタやサンプルアダプティブオフセットなどのインループフィルタ処理を行い、該インループフィルタ処理が施された画像(フィルタ画像)を出力する。
 符号化部110は、変換・量子化部105から出力された量子化係数および予測部104から出力された予測情報を符号化することで符号データ(符号化データ)を生成し、該生成した符号データを出力する。
 統合符号化部111は、画像分割部102から出力された分割情報を用いてヘッダ符号データを生成し、該生成したヘッダ符号データと、符号化部110から出力された符号データと、を含むビットストリームを生成して出力する。制御部199は、画像符号化装置全体の動作制御を行うものであり、上記の画像符号化装置の各機能部の動作制御を行う。
 次に、図1に示した構成を有する画像符号化装置による入力画像に対する符号化処理について説明する。本実施形態では、説明を容易にするために、イントラ予測符号化の処理のみを説明するが、これに限定されずインター予測符号化の処理においても適用可能である。さらに本実施形態では具体的な説明を行うために、ブロック分割部103は、画像分割部102から出力された基本ブロック行画像を「64×64画素のサイズを有する基本ブロック」を単位に分割するものとして説明する。
 画像分割部102は入力画像をタイル、ブリック、スライスに分割する。画像分割部102による入力画像の分割例を図8A,8Bに示す。本実施形態では図8Aに示す如く、1152×1152画素のサイズを有する入力画像を9つのタイル(1つのタイルのサイズは384×384画素)に分割する。各タイルには左上からラスタ順にID(タイルID)が付与され、左上のタイルのタイルIDは0、右下のタイルのタイルIDは8である。
 また、入力画像におけるタイル、ブリック、スライスの分割例を図8Bに示す。図8Bに示す如く、タイルID=0のタイル及びタイルID=7のタイルは2つのブリック(それぞれのブリックのサイズは384×192画素)に分割される。タイルID=2のタイルは2つのブリック(上側のブリックのサイズは384×128画素、下側のブリックのサイズは384×256画素)に分割される。タイルID=3のタイルは3つのブリック(それぞれのブリックのサイズは384×128画素)に分割される。タイルID=1,4,5,6,8のタイルはブリックに分割しておらず(1つのタイルを1つのブリックに分割することに等価)、その結果、タイル=ブリックとなっている。各ブリックにはラスタ順のタイルの中で上から順にIDが付与される。図8Bに示すBIDがブリックのIDである。また入力画像は、スライス0~4に分割されている。スライス0はBID=0に対応するブリックを含むスライス、スライス1はBID=1に対応するブリックを含むスライス、スライス2はBID=2に対応するブリックを含むスライスである。スライス3はBID=3~10に対応するブリックを含むスライス、スライス4はBID=11~13に対応するブリックを含むスライスである。なお、各スライスにも、ラスタ順のスライスの中で上から順にIDが付与されており、例えばスライス0はID=0のスライス、スライス4はID=4のスライスを指すものとする。
 そして画像分割部102は、分割したタイル、ブリック、スライスのそれぞれについて、大きさに関する情報を分割情報として統合符号化部111に出力する。また画像分割部102は、各ブリックを基本ブロック行画像に分割し、該分割した基本ブロック行画像をブロック分割部103に出力する。
 ブロック分割部103は、画像分割部102から出力された基本ブロック行画像を複数の基本ブロックに分割し、基本ブロック単位の画像であるブロック画像(64×64画素)を、後段の予測部104に対して出力する。
 予測部104は、基本ブロック単位の画像をサブブロックに分割し、サブブロック単位で水平予測や垂直予測などのイントラ予測モードを決定し、該決定したイントラ予測モードおよび符号化済の画素から予測画像を生成する。さらに予測部104は、入力された画像と予測画像から予測誤差を算出し、該算出した予測誤差を変換・量子化部105に対して出力する。また予測部104は、サブブロック分割方法やイントラ予測モードなどの情報を予測情報として、符号化部110および画像再生部107に対して出力する。
 変換・量子化部105は、予測部104から出力された予測誤差をサブブロック単位で直交変換(サブブロックのサイズに対応した直交変換処理)して変換係数(直交変換係数)を求める。そして変換・量子化部105は、該求めた変換係数を量子化して量子化係数を求める。そして変換・量子化部105は、該求めた量子化係数を符号化部110および逆量子化・逆変換部106に対して出力する。
 逆量子化・逆変換部106は、変換・量子化部105から出力された量子化係数を逆量子化して変換係数を再生し、さらに該再生した変換係数を逆直交変換して予測誤差を再生する。そして逆量子化・逆変換部106は、該再生した予測誤差を画像再生部107に対して出力する。
 画像再生部107は、予測部104から出力された予測情報に基づいてフレームメモリ108を適宜参照して予測画像を生成し、該予測画像と、逆量子化・逆変換部106から入力された予測誤差と、から再生画像を生成する。そして画像再生部107は、該生成した再生画像をフレームメモリ108に格納する。
 インループフィルタ部109は、フレームメモリ108から再生画像を読み出し、該読み出した再生画像に対してデブロッキングフィルタやサンプルアダプティブオフセットなどのインループフィルタ処理を行う。そしてインループフィルタ部109は、該インループフィルタ処理が施された画像を再びフレームメモリ108に格納(再格納)する。
 符号化部110は、変換・量子化部105から出力された量子化係数および予測部104から出力された予測情報をエントロピー符号化することで符号データを生成する。エントロピー符号化の方法は特に指定しないが、ゴロム符号化、算術符号化、ハフマン符号化などを用いることができる。そして符号化部110は、該生成した符号データを統合符号化部111に対して出力する。
 統合符号化部111は、画像分割部102から出力された分割情報を用いてヘッダ符号データを生成し、該生成したヘッダ符号データと、符号化部110から出力された符号データと、を多重化することでビットストリームを生成して出力する。ビットストリームの出力先は特定の出力先に限るものではなく、画像符号化装置の内部若しくは外部のメモリに出力(格納)しても良いし、LANやインターネットなどのネットワークを介して画像符号化装置と通信可能な外部装置に対して送信しても良い。
 次に、統合符号化部111が出力するビットストリーム(画像符号化装置が符号化するVVCによる符号データ)のフォーマットの一例を図6に示す。図6のビットストリームには、シーケンスの符号化に関わる情報が含まれたヘッダ情報であるシーケンス・パラメータ・セット(SPS)が含まれている。また図6のビットストリームには、ピクチャの符号化に関わる情報が含まれたヘッダ情報であるピクチャ・パラメータ・セット(PPS)が含まれている。また図6のビットストリームには、スライスの符号化に関わる情報が含まれたヘッダ情報であるスライスヘッダ(SLH)が含まれている。また図6のビットストリームには、各ブリック(図6ではブリック0~ブリック(N-1))の符号データが含まれている。
 SPSには画像サイズ情報と基本ブロックデータ分割情報とが含まれている。PPSには、タイルの分割情報であるタイルデータ分割情報と、ブリックの分割情報であるブリックデータ分割情報と、スライスの分割情報であるスライスデータ分割情報0と、基本ブロック行データ同期化情報と、が含まれている。SLHには、スライスデータ分割情報1と基本ブロック行データ位置情報とが含まれている。
 先ず、SPSについて説明する。SPSには画像サイズ情報として情報601であるpic_width_in_luma_samples及び情報602であるpic_height_in_luma_samplesが含まれている。pic_width_in_luma_samplesは入力画像の水平方向のサイズ(画素数)を表しており、pic_height_in_luma_samplesは入力画像の垂直方向のサイズ(画素数)を表している。本実施形態では、入力画像として図8A,8Bの入力画像を用いるため、pic_width_in_luma_samples=1152、pic_height_in_luma_samples=1152となる。またSPSには基本ブロックデータ分割情報として情報603であるlog2_ctu_size_minus2が含まれている。log2_ctu_size_minus2は、基本ブロックのサイズを表す。基本ブロックの垂直方向及び水平方向の画素数は1<<(log2_ctu_size_minus2+2)で示される。本実施形態では基本ブロックのサイズは64×64画素であるため、log2_ctu_size_minus2の値は4となる。
 次に、PPSについて説明する。PPSにはタイルデータ分割情報として情報604~607が含まれている。情報604は、入力画像が複数のタイルに分割されて符号化されているか否かを示すsingle_tile_in_pic_flagである。single_tile_in_pic_flag=1の場合は、入力画像が複数のタイルに分割されて符号化されていないことを示す。一方、single_tile_in_pic_flag=0の場合は、入力画像が複数のタイルに分割されて符号化されていることを示す。
 情報605は、single_tile_in_pic_flag=0の場合にタイルデータ分割情報に含められる情報である。情報605は、各タイルが同一のサイズを持つか否かを示すuniform_tile_spacing_flagである。uniform_tile_spacing_flag=1の場合は、各タイルが同一のサイズを持つことを示し、uniform_tile_spacing_flag=0の場合は、サイズが同一ではないタイルが存在することを示す。
 情報606および情報607は、uniform_tile_spacing_flag=1の場合にタイルデータ分割情報に含められる情報である。情報606は、(タイルの水平方向の基本ブロック数-1)を示すtile_cols_width_minus1である。情報607は、(タイルの垂直方向の基本ブロック数-1)を示すtile_rows_height_minus1である。入力画像の水平方向のタイル数は、入力画像の水平方向の基本ブロック数をタイルの水平方向の基本ブロック数で除算した場合の商として得られる。この除算により余りが生じた場合は、商に1を加えた数を「入力画像の水平方向のタイル数」とする。また入力画像の垂直方向のタイル数は、入力画像の垂直方向の基本ブロック数をタイルの垂直方向の基本ブロック数で除算した場合の商として得られる。この除算により余りが生じた場合は、商に1を加えた数を「入力画像の垂直方向のタイル数」とする。また、入力画像内の総タイル数は、入力画像の水平方向のタイル数×入力画像の垂直方向のタイル数を計算することで求めることができる。
 なお、uniform_tile_spacing_flag=0の場合、他とサイズの異なるタイルが含まれているため、入力画像の水平方向におけるタイルの数、入力画像の垂直方向におけるタイルの数、各タイルの縦横のサイズ、を符号にする。
 またPPSにはブリックデータ分割情報として情報608~613が含まれている。情報608は、brick_splitting_present_flagである。brick_splitting_present_flag=1の場合は、入力画像内における1つ以上のタイルが複数のブリックに分割されていることを示す。一方、brick_splitting_present_flag=0の場合は、入力画像内におけるそれぞれのタイルが単一のブリックで構成されていることを示す。
 情報609は、brick_splitting_present_flag=1の場合にブリックデータ分割情報に含められる情報である。情報609は、それぞれのタイルについて、該タイルが複数のブリックに分割されているか否かを示すbrick_split_flag[]である。i番目のタイルが複数のブリックに分割されているかを示すbrick_split_flag[]をbrick_split_flag[i]と表記する。brick_split_flag[i]=1の場合、i番目のタイルが複数のブリックに分割されていることを示し、brick_split_flag[i]=0の場合、i番目のタイルが単一のブリックで構成されていることを示す。
 情報610は、brick_split_flag[i]=1の場合に、i番目のタイルを構成するそれぞれのブリックのサイズが同一であるか否かを示すuniform_brick_spacing_flag[i]である。全てのiについてbrick_split_flag[i]=0であれば、情報610はブリックデータ分割情報には含まれていない。情報610は、brick_split_flag[i]=1を満たすiについて、uniform_brick_spacing_flag[i]を含む。uniform_brick_spacing_flag[i]=1の場合は、i番目のタイルを構成するそれぞれのブリックのサイズが同一であることを示す。一方、uniform_brick_spacing_flag[i]=0の場合は、i番目のタイルを構成するブリックのうち他とサイズが異なるブリックが存在することを示す。
 情報611は、uniform_brick_spacing_flag[i]=1の場合にブリックデータ分割情報に含められる情報である。情報611は、(i番目のタイルにおけるブリックの垂直方向の基本ブロック数-1)を示すbrick_height_minus1[i]である。
 なお、ブリックの垂直方向の基本ブロック数は、該ブリックの垂直方向の画素数を、基本ブロックの垂直方向の画素数(本実施形態では64画素)で除算することで求めることができる。また、タイルを構成するブリック数は、タイルの垂直方向の基本ブロック数をブリックの垂直方向の基本ブロック数で除算した場合の商として得られる。この除算により余りが生じた場合は、商に1を加えた数を「タイルを構成するブリック数」とする。例えばタイルの垂直方向の基本ブロック数が10で、brick_height_minus1の値が2であるとする。このとき、このタイルは上から順に、基本ブロック行数が3のブリック、基本ブロック行数が3のブリック、基本ブロック行数が3のブリック、基本ブロック行数が1のブリック、の4つのブリックに分割されることになる。
 情報612は、uniform_brick_spacing_flag[i]=0を満たすiについて(i番目のタイルを構成するブリック数-1)を示すnum_brick_rows_minus1[i]である。
 なお、本実施形態では、uniform_brick_spacing_flag[i]=0の場合は、(i番目のタイルを構成するブリック数-1)を示すnum_brick_rows_minus1[i]をブリックデータ分割情報に含めた。しかし、これに限定されるものではない。
 例えばbrick_split_flag[i]=1の時点でi番目のタイルを構成するブリックの数が2以上であると想定する。そして、(該タイルを構成するブリックの数-2)を示すnum_brick_rows_minus2[i]をnum_brick_rows_minus1[i]の代わりに符号化しても良い。このようにすることで、該タイルを構成するブリックの数を示すシンタクスのビット数を減らすことができる。例えば、該タイルが2個のブリックにより構成され、num_brick_rows_minus1[i]をゴロム符号化する場合、「1」を示す「010」の3ビットのデータが符号化される。一方で、(該タイルを構成するブリックの数-2)を示すnum_brick_rows_minus2[i]をゴロム符号化する場合、0を示す「0」の1ビットのデータが符号化される。
 情報613はuniform_brick_spacing_flag[i]=0を満たすiについて(i番目のタイルにおけるj番目のブリックの垂直方向の基本ブロック数-1)を示すbrick_row_height_minus1[i][j]である。brick_row_height_minus1[i][j]はnum_brick_rows_minus1[i]の数だけ符号化される。なお、上述のnum_brick_rows_minus2[i]を用いた場合は、brick_row_height_minus1[i][j]はnum_brick_rows_minus2[i]+1の数だけ符号化される。タイルにおける下端のブリックの垂直方向の基本ブロック数は、該タイルの垂直方向の基本ブロック数から「brick_row_height_minus1+1」の総和を減算することで求めることができる。例えば、タイルの垂直方向の基本ブロック数=10、num_brick_rows_minus1=3、brick_row_height_minus1=2、1、2であるとする。このとき、該タイルにおける下端のブリックの垂直方向の基本ブロック数は10-(3+2+3)=2になる。
 またPPSにはスライスデータ分割情報0として情報614~618が含まれている。情報614は、single_brick_per_slice_flagである。single_brick_per_slice_flag=1の場合、入力画像内の全てのスライスが単一のブリックで構成されていることを示す。つまり、それぞれのスライスが1つだけのブリックで構成されることを示す。一方、single_brick_per_slice_flag=0の場合、入力画像において1つ以上のスライスが複数のブリックで構成されていることを示す。
 情報615はrect_slice_flagであり、single_brick_per_slice_flag=0の場合にスライスデータ分割情報0に含められる情報である。rect_slice_flagは、スライスが含むタイルがラスタ順か矩形かを示す。図9Aは、rect_slice_flag=0の場合におけるタイルとスライスとの関係を示しており、スライス内のタイルがラスタ順で符号化されることを示している。一方、図9Bは、rect_slice_flag=1の場合におけるタイルとスライスとの関係を示しており、スライス内の複数のタイルが矩形状であることを示している。
 情報616はnum_slices_in_pic_minus1であり、rect_slice_flag=1かつsingle_brick_per_slice_flag=0の場合にスライスデータ分割情報0に含められる情報である。num_slices_in_pic_minus1は、(入力画像におけるスライスの数-1)を示す。
 情報617は、入力画像におけるそれぞれのスライスについて、該スライス(i番目のスライス)の左上のブリックのインデックスを示すtop_left_brick_idx[i]である。
 情報618は、入力画像中i番目のスライスにおける左上のブリックのインデックスと右下のブリックのインデックスとの差分を示すbottom_right_brick_idx_delta[i]である。ここで、「入力画像中i番目のスライスにおける左上のブリック」とは、該スライスにおいて最初に処理されるブリックである。また、「入力画像中i番目のスライスにおける右下のブリック」とは、該スライスにおいて最後に処理されるブリックである。ただし、フレーム内の最初のスライスの左上のブリックのインデックスは0と決まっているため、最初のスライスのtop_left_brick_idx[0]は符号化されない。
 またPPSには基本ブロック行データ同期化情報として情報619が符号化されて含まれている。情報619はentropy_coding_sync_enabled_flagである。entropy_coding_sync_enabled_flag=1の場合は、上に隣接する基本ブロック行の所定位置の基本ブロックを処理した時点での発生確率のテーブルを左端のブロックに適用する。これにより、基本ブロック行単位でエントロピー符号化・復号化の並列処理が可能になる。
 次に、SLHについて説明する。SLHにはスライスデータ分割情報1として情報620~621が符号化されて含まれている。情報620は、rect_slice_flag=1もしくは入力画像中のブリックの数が2以上の場合にスライスデータ分割情報1に含められるslice_addressである。slice_addressは、rect_slice_flag=0の場合はスライスの先頭のBIDを示し、rect_slice_flag=1の場合は、現在のスライスの番号を示す。
 情報621は、rect_slice_flag=0かつsingle_brick_per_slice_flag=0の場合にスライスデータ分割情報1に含められるnum_bricks_in_slice_minus1である。num_bricks_in_slice_minus1は(スライス中のブリック数-1)を示す。
 SLHには基本ブロック行データ位置情報として情報622が含まれている。情報622はentry_point_offset_minus1[]である。entry_point_offset_minus1[]は、entropy_coding_sync_enabled_flag=1の場合に、(スライス中の基本ブロック行数-1)の数だけ基本ブロック行データ位置情報に符号化されて含められる。
 entry_point_offset_minus1[]は、基本ブロック行の符号データのエントリポイント、即ち基本ブロック行の符号データの先頭位置を表す。entry_point_offset_minus1[j-1]はj番目の基本ブロック行の符号データのエントリポイントを示す。0番目の基本ブロック行の符号データの先頭位置は、該基本ブロック行が属するスライスの符号データの先頭位置と同じであるため省略される。そして、{(j-1)番目の基本ブロック行の符号データの大きさ-1}がentry_point_offset_minus1[j-1]として符号化される。
 次に、本実施形態に画像符号化装置による入力画像の符号化処理(図6の構成を有するビットストリームの生成処理)について、図3のフローチャートに従って説明する。
 まず、ステップS301では、画像分割部102は入力画像をタイル、ブリック、スライスに分割する。そして画像分割部102は、分割したタイル、ブリック、スライスのそれぞれについて、大きさに関する情報を分割情報として統合符号化部111に出力する。また画像分割部102は、各ブリックを基本ブロック行画像に分割し、該分割した基本ブロック行画像をブロック分割部103に出力する。
 ステップS302では、ブロック分割部103は、基本ブロック行画像を複数の基本ブロックに分割し、基本ブロック単位の画像であるブロック画像を、後段の予測部104に対して出力する。
 ステップS303では、予測部104は、ブロック分割部103から出力された基本ブロック単位の画像をサブブロックに分割し、サブブロック単位でイントラ予測モードを決定し、該決定したイントラ予測モードおよび符号化済の画素から予測画像を生成する。さらに予測部104は、入力された画像と予測画像から予測誤差を算出し、該算出した予測誤差を変換・量子化部105に対して出力する。また予測部104は、サブブロック分割方法やイントラ予測モードなどの情報を予測情報として、符号化部110および画像再生部107に対して出力する。
 ステップS304では、変換・量子化部105は、予測部104から出力された予測誤差をサブブロック単位で直交変換して変換係数(直交変換係数)を求める。そして変換・量子化部105は、該求めた変換係数を量子化して量子化係数を求める。そして変換・量子化部105は、該求めた量子化係数を符号化部110および逆量子化・逆変換部106に対して出力する。
 ステップS305では、逆量子化・逆変換部106は、変換・量子化部105から出力された量子化係数を逆量子化して変換係数を再生し、さらに該再生した変換係数を逆直交変換して予測誤差を再生する。そして逆量子化・逆変換部106は、該再生した予測誤差を画像再生部107に対して出力する。
 ステップS306では、画像再生部107は、予測部104から出力された予測情報に基づいてフレームメモリ108を適宜参照して予測画像を生成し、該予測画像と、逆量子化・逆変換部106から入力された予測誤差と、から再生画像を生成する。そして画像再生部107は、該生成した再生画像をフレームメモリ108に格納する。
 ステップS307では、符号化部110は、変換・量子化部105から出力された量子化係数および予測部104から出力された予測情報をエントロピー符号化することで符号データを生成する。
 ここで、entropy_coding_sync_enabled_flag=1の場合、上に隣接する基本ブロック行の所定の位置の基本ブロックを処理した時点での発生確率テーブルを、次の基本ブロック行の左端の基本ブロックを処理する前に適用する。本実施形態では、entropy_coding_sync_enabled_flag=1であるものとして説明する。
 ステップS308では、制御部199は、スライス内の全ての基本ブロックの符号化が完了したか否かを判断する。この判断の結果、スライス内の全ての基本ブロックの符号化が完了した場合には、処理はステップS309に進む。一方、スライス内の基本ブロックのうちまだ符号化していない基本ブロック(未符号化の基本ブロック)が残っている場合には、該未符号化の基本ブロックを符号化するべく、処理はステップS303に進む。
 ステップS309では、統合符号化部111は、画像分割部102から出力された分割情報を用いてヘッダ符号データを生成し、該生成したヘッダ符号データと、符号化部110から出力された符号データと、を含むビットストリームを生成して出力する。
 入力画像を図8A,8Bに示す如く分割した場合、タイルデータ分割情報の、single_tile_in_pic_flagは0、uniform_tile_spacing_flagは1になる。またtile_cols_width_minus1は5、tile_rows_height_minus1は5である。
 ブリックデータ分割情報のbrick_splitting_present_flagは1である。また、タイルID=1,4,5,6,8に対応するタイルはブリックに分割されていない。然るにbrick_split_flag[1]、brick_split_flag[4]、brick_split_flag[5]、brick_split_flag[6]、brick_split_flag[8]は0である。またタイルID=0,2,3,7に対応するタイルはブリックに分割されている。然るにbrick_split_flag[0]、brick_split_flag[2]、brick_split_flag[3]、brick_split_flag[7]は1である。
 また、タイルID=0,3,7に対応するタイルは何れも同一サイズのブリックに分割されている。然るにuniform_brick_spacing_flag[0]、uniform_brick_spacing_flag[3]、uniform_brick_spacing_flag[7]は何れも1である。タイルID=2に対応するタイルについては、BID=3のブリックのサイズは、BID=4のブリックのサイズとは異なる。然るに、uniform_brick_spacing_flag[2]は0である。
 brick_height_minus1[0]は2であり、brick_height_minus1[3]は1である。また、brick_height_minus1[7]は2である。なお、brick_height_minus1はuniform_brick_spacingが1の場合に符号化される。
 brick_row_height_minus1[2][0]は1である。なお、num_brick_rows_minus1[2]ではなく、代わりに上述のnum_brick_rows_minus2[2]のシンタクスを符号化する場合は、値は0になる。
 また、本実施形態では、1つのスライスが複数のブリックを含むため、スライスデータ分割情報0におけるsingle_brick_per_slice_flagは0となる。また本実施形態では、スライスが複数のタイルをラスタ順で内包する(スライスはラスタ順に並ぶタイルを含む)ため、rect_slice_flagは0である。
 この場合、SLHにおけるスライスデータ分割情報として、まずスライス中の最初のBID(該スライス中のブリックのBIDのうち最小のBID)がslice_addressとして符号化される。
 スライス0については、該スライス0中の最初のブリックのBIDである「0」がslice_addressとして符号化される。スライス1については、該スライス1中の最初のブリックのBIDである「1」がslice_addressとして符号化される。スライス2については、該スライス2中の最初のブリックのBIDである「2」がslice_addressとして符号化される。スライス3については、該スライス3中の最初のブリックのBIDである「3」がslice_addressとして符号化される。スライス4については、該スライス4中の最初のブリックのBIDである「11」がslice_addressとして符号化される。
 そしてnum_bricks_in_slice_minus1として各スライスがいくつのブリックを内包しているかが符号化される。スライス0に含まれるブリックはBID=0に対応するブリックのみ(単一のブリックのみ)であるから、スライス0に対応するnum_bricks_in_slice_minus1は0となる。スライス1に含まれるブリックはBID=1に対応するブリックのみ(単一のブリックのみ)であるから、スライス1に対応するnum_bricks_in_slice_minus1は0となる。スライス2に含まれるブリックはBID=2に対応するブリックのみ(単一のブリックのみ)であるから、スライス2に対応するnum_bricks_in_slice_minus1は0となる。スライス3に含まれるブリックはBID=3~10に対応するブリック(8個のブリック)であるから、スライス3に対応するnum_bricks_in_slice_minus1は7となる。スライス4に含まれるブリックはBID=11~13に対応するブリック(3個のブリック)であるから、スライス4に対応するnum_bricks_in_slice_minus1は2となる。
 次に、基本ブロック行データ位置情報は、符号化部110より送られた、(スライス中の((j-1)番目の基本ブロック行の符号データの大きさ-1)の値をentry_point_offset_minus1[j-1]として符号化する。スライス中のentry_point_offset_minus1の数は、(スライス中の基本ブロック行数-1)と等しい。
 スライス0は単一のブリックで構成されており(対応するnum_bricks_in_slice_minus1=0)、brick_height_minus1[0]=2である。然るに、該ブリックの基本ブロック行の数は、brick_height_minus1[0]+1=3となる(jの範囲は0~1)。
 スライス1は単一のブリックで構成されており(対応するnum_bricks_in_slice_minus1=0)、brick_height_minus1[0]=2、tile_rows_height_minus1=5である。然るに、該ブリックの基本ブロック行の数は、tile_rows_height_minus1-brick_height_minus1[0]=3となる(jの範囲は0~1)。
 スライス2は単一のブリックで構成されており(対応するnum_bricks_in_slice_minus1=0)、brick_height_minus1[1]=5である。然るに、該ブリックの基本ブロック行の数は、brick_height_minus1[1]+1=6となる(jの範囲は0~4)。
 スライス3の場合、対応するslice_address=3、対応するnum_bricks_in_slice_minus1=7である。然るに、スライス3は、BID=3~10(=slice_address+num_bricks_in_slice_minus1)に対応するブリック(8個のブリック)で構成されている。スライス3における基本ブロック行の数は、BID=3~10のそれぞれに対応するブリックの基本ブロック行の数の合計値となる。
 BID=3に対応するブリックの基本ブロック行の数は、brick_row_height_minus1[2][0]=1であるから、brick_row_height_minus1[2][0]+1=2である。
 BID=4に対応するブリックの基本ブロック行の数は、次のようにして導出することができる。brick_row_height_minus1[2][0]=1、num_brick_rows_minus1[2]=1、tile_rows_height_minus1=5である。然るに、BID=4に対応するブリックの基本ブロック行の数は、tile_rows_height_minus1-brick_row_height_minus1[2][0]=4である。
 BID=5~7のそれぞれに対応するブリックの基本ブロック行の数は、brick_height_minus1[3]=1であることから、brick_height_minus1[3]+1=2であることが分かる。
 BID=8~10のそれぞれに対応するブリックの基本ブロック行の数は、tile_rows_height_minus1=5であることから、tile_rows_height_minus1+1=6であることがわかる。
 よって、スライス3における基本ブロック行の数は、BID=3~10のそれぞれに対応するブリックの基本ブロック行の数の合計値(2+4+2+2+2+6+6+6)=30と導出することができる。jの範囲は0~28となる。
 スライス4の場合、対応するslice_address=11、対応するnum_bricks_in_slice_minus1=2である。然るに、スライス4は、BID=11~13(=slice_address+num_bricks_in_slice_minus1)に対応するブリック(3個のブリック)で構成されている。スライス4における基本ブロック行の数は、BID=11~13のそれぞれに対応するブリックの基本ブロック行の数の合計値となる。
 BID=11~12のそれぞれに対応するブリックの基本ブロック行の数は、brick_height_minus1[7]=2であることから、brick_height_minus1[7]+1=3であることが分かる。
 BID=13に対応するブリックの基本ブロック行の数は、tile_rows_height_minus1=5であることから、tile_rows_height_minus1+1=6であることがわかる。
 よって、スライス4における基本ブロック行の数は、BID=11~13のそれぞれに対応するブリックの基本ブロック行の数の合計値(3+3+6)=12と導出することができる。jの範囲は0~10となる。
 このような処理により、各スライスにおける基本ブロック行数が確定する。本実施形態では、他のシンタクスからentry_point_offset_minus1の数を導出することができるので、従来のようにnum_entry_point_offsetを符号化してヘッダに含める必要はない。よって、本実施形態によれば、ビットストリームのデータ量を削減することができる。
 ステップS310では、制御部199は、入力画像における全ての基本ブロックの符号化が完了したか否かを判断する。この判断の結果、入力画像における全ての基本ブロックの符号化が完了した場合には、処理はステップS311に進む。一方、入力画像において未だ符号化されていない基本ブロックが残っている場合には、処理はステップS303に進み、未だ符号化されていない基本ブロックについて以降の処理を行う。
 ステップS311では、インループフィルタ部109は、ステップS306で生成された再生画像に対してインループフィルタ処理を行い、該インループフィルタ処理が施された画像を出力する。
 このように本実施形態によれば、ブリックが有する基本ブロック行の符号データの先頭位置を示す情報がいくつ符号化されているのかを示す情報を符号化してビットストリームに含めなくても良く、該情報が導出可能なビットストリームを生成することができる。
 [第2の実施形態]
 本実施形態では、第1の実施形態に係る画像符号化装置によって生成されたビットストリームを復号する画像復号装置について説明する。なお、ビットストリームの構成など、第1の実施形態と共通する要件については第1の実施形態にて説明したとおりであるため、説明は省略する。
 本実施形態に係る画像復号装置の機能構成例について、図2のブロック図を用いて説明する。分離復号部202は、第1の実施形態に係る画像符号化装置によって生成されたビットストリームを取得する。ビットストリームの取得方法は特定の取得方法に限らない。例えば、LANやインターネットなどのネットワークを介して画像符号化装置から直接的もしくは間接的にビットストリームを取得しても良いし、画像復号装置の内部もしくは外部に保存しておいたビットストリームを取得しても良い。そして分離復号部202は、該取得したビットストリームから、復号処理に関する情報や係数に関する符号データを分離し、復号部203へ送る。また分離復号部202は、ビットストリームのヘッダの符号データを復号する。本実施形態では、タイル、ブリック、スライス、基本ブロックの大きさ等の画像の分割に関するヘッダ情報を復号して分割情報を生成し、該生成した分割情報を画像再生部205に出力する。つまり分離復号部202は、図1の統合符号化部111と逆の動作を行う。
 復号部203は、分離復号部202から出力された符号データを復号して量子化係数および予測情報を再生する。逆量子化・逆変換部204は、量子化係数に対して逆量子化を行って変換係数を生成し、該生成した変換係数に対して逆直交変換を行うことで予測誤差を再生する。
 フレームメモリ206は、再生されたピクチャの画像データを格納するためのメモリである。画像再生部205は、入力された予測情報に基づいてフレームメモリ206を適宜参照して予測画像を生成する。そして画像再生部205は、該生成した予測画像と逆量子化・逆変換部204で再生された予測誤差から再生画像を生成する。そして画像再生部205は、再生画像について、分離復号部202から入力された分割情報に基づいてタイル、ブリック、スライスの入力画像中の位置を特定して出力する。
 インループフィルタ部207は、上記のインループフィルタ部109と同様、再生画像に対してデブロッキングフィルタなどのインループフィルタ処理を行い、インループフィルタ処理が施された画像を出力する。制御部299は、画像復号装置全体の動作制御を行うものであり、上記の画像復号装置の各機能部の動作制御を行う。
 次に、図2に示した構成を有する画像復号装置によるビットストリームの復号処理について説明する。以下では、ビットストリームをフレーム単位で画像復号装置に入力するものとして説明するが、1フレーム分の静止画像のビットストリームを画像復号装置に入力するようにしても良い。また、本実施形態では説明を容易にするために、イントラ予測復号処理のみを説明するが、これに限定されずインター予測復号処理においても適用可能である。
 分離復号部202は、入力されたビットストリームから、復号処理に関する情報や係数に関する符号データを分離し、復号部203へ送る。また分離復号部202は、ビットストリームのヘッダの符号データを復号する。より具体的には分離復号部202は、図6における基本ブロックデータ分割情報、タイルデータ分割情報、ブリックデータ分割情報、スライスデータ分割情報0、基本ブロック行データ同期化情報、基本ブロック行データ位置情報等を復号して分割情報を生成する。そして分離復号部202は、該生成した分割情報を画像再生部205に出力する。また分離復号部202は、ピクチャデータの基本ブロック単位の符号データを再生し、復号部203に出力する。
 復号部203は、分離復号部202から出力された符号データを復号して量子化係数および予測情報を再生する。再生された量子化係数は逆量子化・逆変換部204に出力され、再生された予測情報は画像再生部205に出力される。
 逆量子化・逆変換部204は、入力された量子化係数に対して逆量子化を行って変換係数を生成し、該生成した変換係数に対して逆直交変換を行うことで予測誤差を再生する。再生された予測誤差は画像再生部205に出力される。
 画像再生部205は、分離復号部202から入力された予測情報に基づいてフレームメモリ206を適宜参照して予測画像を生成する。そして画像再生部205は、該生成した予測画像と逆量子化・逆変換部204で再生された予測誤差から再生画像を生成する。そして画像再生部205は、再生画像について、分離復号部202から入力された分割情報に基づいて、例えば図7のようなタイル、ブリック、スライスの形状および入力画像中の位置を特定してフレームメモリ206に出力(格納)する。フレームメモリ206に格納された画像は予測の際の参照に用いられる。
 インループフィルタ部207は、フレームメモリ206から読み出した再生画像に対してデブロッキングフィルタなどのインループフィルタ処理を行い、インループフィルタ処理が施された画像をフレームメモリ206に出力(格納)する。
 制御部299は、フレームメモリ206に格納された再生画像を出力する。再生画像の出力先は特定の出力先に限らない。例えば制御部299は、画像復号装置が有する表示装置に該再生画像を出力して該表示装置に該再生画像を表示させても良い。また例えば制御部299は、LANやインターネットなどのネットワークを介して再生画像を外部の装置に対して送信しても良い。
 次に、本実施形態に係る画像復号装置によるビットストリームの復号処理(図6の構成を有するビットストリームの復号処理)について、図4のフローチャートに従って説明する。
 ステップS401では、分離復号部202は、入力されたビットストリームから、復号処理に関する情報や係数に関する符号データを分離し、復号部203へ送る。また分離復号部202は、ビットストリームのヘッダの符号データを復号する。より具体的には、分離復号部202は、図6における基本ブロックデータ分割情報、タイルデータ分割情報、ブリックデータ分割情報、スライスデータ分割情報、基本ブロック行データ同期化情報、基本ブロック行データ位置情報等を復号して分割情報を生成する。そして分離復号部202は、該生成した分割情報を画像再生部205に出力する。また分離復号部202は、ピクチャデータの基本ブロック単位の符号データを再生し、復号部203に出力する。
 本実施形態では、ビットストリームの符号化元である入力画像の分割は図8A,8Bに示した分割とする。ビットストリームの符号化元である入力画像やその分割に係る情報は分割情報から導出することができる。
 画像サイズ情報に含まれているpic_width_in_luma_samplesから、入力画像の水平方向のサイズ(横サイズ)が1152画素であることを特定することができる。また、画像サイズ情報に含まれているpic_height_in_luma_samplesから、入力画像の垂直方向のサイズ(縦サイズ)が1152画素であることを特定することができる。
 また、基本ブロックデータ分割情報のlog2_ctu_size_minus2=4であることから、基本ブロックのサイズを、1<<log2_ctu_size_minus2+2より、64×64画素と導出することができる。
 また、タイルデータ分割情報のsingle_tile_in_pic_flag=0であることから、入力画像が複数のタイルに分割されていることを特定することができる。そして、uniform_tile_spacing_flag=1であることから、各タイルが(端部を除いて)同一のサイズを有することを特定することができる。
 また、tile_cols_width_minus1=5、tile_rows_height_minus1=5であることから、各タイルが6×6個の基本ブロックで構成されていることを特定することができる。つまり、各タイルが384×384画素で構成されていることを特定することができる。入力画像が1152×1152画素であることから、該入力画像は水平方向に3つ、垂直方向に3つの9つのタイルに分割されて符号化されていることがわかる。
 また、ブリックデータ分割情報のbrick_splitting_present_flag=1であることから、入力画像中の少なくとも一つのタイルが複数のブリックに分割されていることを特定することができる。
 また、brick_split_flag[1]、brick_split_flag[4]、brick_split_flag[5]、brick_split_flag[6]、brick_split_flag[8]は0である。これにより、タイルID=1,4,5,6,8に対応するタイルはブリックに分割されていないことを特定することができる。本実施形態では、すべてのタイルの基本ブロック行数が6であることから、タイルID=1、4、5、6、8に対応するタイルのブリックの基本ブロック行数は6であることがわかる。
 一方で、brick_split_flag[0]、brick_split_flag[2]、brick_split_flag[3]、brick_split_flag[7]は1である。これにより、タイルID=0,2,3,7に対応するタイルはブリックに分割されていることを特定することができる。また、uniform_brick_spacing_flag[0]、uniform_brick_spacing_flag[3]、uniform_brick_spacing_flag[7]は何れも1である。これにより、タイルID=0,3,7に対応するタイルは何れも同一サイズのブリックに分割されていることを特定することができる。
 また、brick_height_minus1[0]、brick_height_minus1[7]は何れも2である。然るに、タイルID=0に対応するタイル及びタイルID=7に対応するタイルは何れも、タイル内のブリックの垂直方向の基本ブロック数が3であることを特定することができる。また、タイルID=0に対応するタイル及びタイルID=7に対応するタイルは何れも、該タイル内のブリック数が2(=タイルの基本ブロック行数(6)/タイル内のブリックの垂直方向の基本ブロック数(3)」であることを特定することができる。
 また、brick_height_minus1[3]は1である。然るに、タイルID=3に対応するタイル内のブリックの垂直方向の基本ブロック数が2であることを特定することができる。また、タイルID=3に対応するタイル内のブリック数が3(=タイルの基本ブロック行数(6)/タイル内のブリックの垂直方向の基本ブロック数(2)」であることを特定することができる。
 タイルID=2に対応するタイルについては、num_brick_rows_minus1[2]=1であることから、該タイルは2つのブリックで構成されていることを特定することができる。また、uniform_brick_spacing_flag[2]=0である。これにより、タイルID=2に対応するタイルは、他とサイズが異なるブリックが存在することを特定することができる。そして、brick_row_height_minus1[2][0]=1、brick_row_height_minus1[2][1]=3、全てのタイルの垂直方向の基本ブロック数は6である。これにより、タイルID=2に対応するタイルは上から順に、垂直方向の基本ブロック数が2のブリック、垂直方向の基本ブロック数が4のブリック、で構成されていることを特定することができる。なお、brick_row_height_minus1[2][1]=3は符号化しないようにしてもよい。タイルにおけるブリックの数が2つの場合、タイルの高さと、タイル内の1つ目のブリックの高さ(brick_row_height_minus1[2][0]=1)とから2つ目のブリックの高さを求めることが可能であるためである。
 また、スライスデータ分割情報0におけるsingle_brick_per_slice_flag=0であることから、少なくとも1つのスライスが複数のブリックで構成されていることを特定することができる。本実施形態では、uniform_brick_spacing_flag[i]=0の場合は、(i番目のタイルを構成するブリック数-1)を示すnum_brick_rows_minus1[i]をブリックデータ分割情報に含めた。しかし、これに限定されるものではない。
 例えばbrick_split_flag[i]=1の時点でi番目のタイルを構成するブリックの数が2以上であると想定する。そして、(該タイルを構成するブリックの数-2)を示すnum_brick_rows_minus2[i]をnum_brick_rows_minus1[i]の代わりに復号しても良い。このようにすることで、該タイルを構成するブリックの数を示すシンタクスのビット数を減らしたビットストリームを復号することができる。
 次に、各ブリックの左上及び右下の境界の座標を求める。座標は入力画像の左上を原点とし、基本ブロックの水平位置と垂直位置で示される。例えば、左から3番目、上から2番目の基本ブロックの左上の境界の座標は(3,2)、右下の境界の座標は(4,3)になる。
 タイルID=0に対応するタイル内のBID=0のブリックの左上の境界の座標は(0,0)である。BID=0のブリックの基本ブロック行数は3で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(3,3)になる。
 タイルID=0に対応するタイル内のBID=1のブリックの左上の境界の座標は(0,3)である。BID=1のブリックの基本ブロック行数は3で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(6,6)になる。
 タイルID=1に対応するタイル(BID=2のブリック)の左上の境界の座標は(6,0)である。BID=2のブリックの基本ブロック行数は6で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(12,6)になる。
 タイルID=2に対応するタイル内のBID=3のブリックの左上の境界の座標は(12,0)である。BID=3のブリックの基本ブロック行数は2であるから、右下の境界の座標は(18,2)になる。
 タイルID=2に対応するタイル内のBID=4のブリックの左上の境界の座標は(12,2)である。BID=4のブリックの基本ブロック行数は4であるから、右下の境界の座標は(18,6)になる。
 タイルID=3に対応するタイル内のBID=5のブリックの左上の境界の座標は(0,6)である。BID=5のブリックの基本ブロック行数は2であるから、右下の境界の座標は(6,8)になる。
 タイルID=3に対応するタイル内のBID=6のブリックの左上の境界の座標は(0,8)である。BID=6のブリックの基本ブロック行数は2であるから、右下の境界の座標は(6,10)になる。
 タイルID=3に対応するタイル内のBID=7のブリックの左上の境界の座標は(0,10)である。BID=7のブリックの基本ブロック行数は2であるから、右下の境界の座標は(6,12)になる。
 タイルID=4に対応するタイル(BID=8のブリック)の左上の境界の座標は(6,6)である。BID=8のブリックの基本ブロック行数は6で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(12,12)になる。
 タイルID=5に対応するタイル(BID=9のブリック)の左上の境界の座標は(12,6)である。BID=9のブリックの基本ブロック行数は6で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(18,12)になる。
 タイルID=6に対応するタイル(BID=10のブリック)の左上の境界の座標は(0,12)である。BID=10のブリックの基本ブロック行数は6で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(6,18)になる。
 タイルID=7に対応するタイル内のBID=11のブリックの左上の境界の座標は(6,12)である。BID=11のブリックの基本ブロック行数は3で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(12,15)になる。
 タイルID=7に対応するタイル内のBID=12のブリックの左上の境界の座標は(6,15)である。BID=12のブリックの基本ブロック行数は3で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(12,18)になる。
 タイルID=8に対応するタイル(BID=13のブリック)の左上の境界の座標は(12,12)である。BID=13のブリックの基本ブロック行数は6で、全てのタイルの水平方向の基本ブロック数は6であるから、右下の境界の座標は(18,18)になる。
 次に、各スライスに含まれるブリックを特定する。スライス0については、slice_addressは0、num_bricks_in_slice_minus1は0であるから、スライス0はBID=0のブリックのみで構成されていることが分かる。
 スライス1については、slice_addressは1、num_bricks_in_slice_minus1は0であるから、スライス1はBID=1のブリックのみで構成されていることが分かる。
 スライス2については、slice_addressは2、num_bricks_in_slice_minus1は0であるから、スライス2はBID=2のブリックのみで構成されていることが分かる。
 スライス3については、slice_addressは3、num_bricks_in_slice_minus1は7である。然るに、スライス3はBID=3~10(=slice_address+num_bricks_in_slice_minus1)のブリックで構成されていることが分かる。
 スライス4については、slice_addressは11、num_bricks_in_slice_minus1は2である。然るに、スライス4はBID=11~13(=slice_address+num_bricks_in_slice_minus1)のブリックで構成されていることが分かる。
 また、entropy_coding_sync_enabled_flagが1である。よって、(スライス中の(j-1)番目の基本ブロック行の符号データの大きさ-1)がentry_point_offset_minus1[j-1]として符号化されていることが分かる。その個数は、(処理するスライスの基本ブロック行数-1)である。
 スライス0については、該スライス0を構成するBID=0のブリックの基本ブロック行数=3であるから、3-1=2となり、jの範囲は0~1となる。スライス1については、該スライス1を構成するBID=1のブリックの基本ブロック行数=3であるから、3-1=2となり、jの範囲は0~1となる。スライス2については、該スライス2を構成するBID=2のブリックの基本ブロック行数=6であるから、6-1=5となり、jの範囲は0~4となる。スライス3については、該スライス3を構成するBID=3~10のブリックの基本ブロック行数の合計値は2+4+2+2+2+6+6+6=30であるから、jの範囲は0~28となる。
 スライス4については、該スライス4を構成するBID=11~13のブリックの基本ブロック行数の合計値は3+3+6=12であるから、jの範囲は0~10となる。
 以上により、従来のようにnum_entry_point_offsetを符号化せずとも、他のシンタクスからentry_point_offset_minus1の数を導出できる。そして各基本ブロック行のデータの先頭位置がわかるため、基本ブロック行毎に並列して復号処理を行うことができる。分離復号部202より導出された分割情報は画像再生部205に送られ、ステップS404で入力画像内における処理対象の位置の特定に用いられる。
 ステップS402では、復号部203は、分離復号部202で分離された符号データを復号して量子化係数および予測情報を再生する。ステップS403では、逆量子化・逆変換部204は、入力された量子化係数に対して逆量子化を行って変換係数を生成し、該生成した変換係数に対して逆直交変換を行うことで予測誤差を再生する。
 ステップS404では、画像再生部205は、復号部203から入力された予測情報に基づいてフレームメモリ206を適宜参照して予測画像を生成する。そして画像再生部205は、該生成した予測画像と逆量子化・逆変換部204で再生された予測誤差から再生画像を生成する。そして画像再生部205は、再生画像について、分離復号部202から入力された分割情報に基づいて、タイル、ブリック、スライスの入力画像中の位置を特定してその位置に合成し、フレームメモリ206に出力(格納)する。
 ステップS405では、制御部299は、入力画像の全ての基本ブロックを復号したか否かを判断する。この判断の結果、入力画像の全ての基本ブロックを復号した場合には、処理はステップS406に進む。一方、入力画像において未だ復号していない基本ブロックが残っている場合には、処理はステップS402に進み、未だ復号していない基本ブロックについて復号処理を行う。
 ステップS406では、インループフィルタ部207は、フレームメモリ206から読み出した再生画像に対してインループフィルタ処理を行い、インループフィルタ処理が施された画像をフレームメモリ206に出力(格納)する。
 このように本実施形態によれば、第1の実施形態に係る画像符号化装置によって生成された「ブリックが有する基本ブロック行の先頭位置を示す情報がいくつ符号化されているのかを示す情報を含まないビットストリーム」から入力画像を復号することができる。
 なお、第1の実施形態に係る画像符号化装置と第2の実施形態に係る画像復号装置とは別個の装置であっても良い。また、第1の実施形態に係る画像符号化装置と第2の実施形態に係る画像復号装置とを1つの装置に統合しても良い。
 [第3の実施形態]
 図1や図2に示した各機能部はハードウェアで実装しても良いが、一部をソフトウェアで実装しても良い。後者の場合、フレームメモリ108やフレームメモリ206を除く各機能部をソフトウェア(コンピュータプログラム)で実装しても良い。このようなコンピュータプログラムを実行可能なコンピュータ装置は、上記の画像符号化装置や画像復号装置に適用可能である。
 上記の画像符号化装置や画像復号装置に適用可能なコンピュータ装置のハードウェア構成例について、図5のブロック図を用いて説明する。なお、図5に示したハードウェア構成は、上記の画像符号化装置や画像復号装置に適用可能なコンピュータ装置のハードウェア構成の一例に過ぎず、適宜変更/変形が可能である。
 CPU501はRAM502やROM503に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU501はコンピュータ装置全体の動作制御を行うと共に、上記の画像符号化装置や画像復号装置が行うものとして説明した各処理を実行若しくは制御する。すなわちCPU501は、図1や図2に示した各機能部(フレームメモリ108やフレームメモリ206を除く)として機能することができる。
 RAM502は、ROM503や外部記憶装置506からロードされたコンピュータプログラムやデータを格納するためのエリア、I/F507を介して外部から受信したデータを格納するためのエリアを有する。またRAM502は、CPU501が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM502は、各種のエリアを適宜提供することができる。ROM503には、コンピュータ装置の設定データや起動プログラムなどが格納されている。
 操作部504は、キーボード、マウス、タッチパネル画面などのユーザインターフェースであり、ユーザが操作することで各種の指示をCPU501に対して入力することができる。
 表示部505は、液晶画面やタッチパネル画面などにより構成されており、CPU501による処理結果を画像や文字などでもって表示することができる。なお、表示部505は、画像や文字を投影するプロジェクタなどの装置であっても良い。
 外部記憶装置506は、ハードディスクドライブ装置などの大容量情報記憶装置である。外部記憶装置506には、OS(オペレーティングシステム)や、上記の画像符号化装置や画像復号装置が行うものとして上述した各処理をCPU501に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。
 外部記憶装置506に保存されているコンピュータプログラムには、図1や図2においてフレームメモリ108やフレームメモリ206を除く各機能部の機能をCPU501に実行若しくは制御させるためのコンピュータプログラムが含まれている。また、外部記憶装置506に保存されているデータには、上記の説明において既知の情報として説明したものや、符号化や復号に関連する様々な情報が含まれている。
 外部記憶装置506に保存されているコンピュータプログラムやデータは、CPU501による制御に従って適宜RAM502にロードされ、CPU501による処理対象となる。
 図1の画像符号化装置が有するフレームメモリ108や図2の画像符号化装置が有するフレームメモリ206は、上記のRAM502や外部記憶装置506などのメモリ装置を用いて実装可能である。
 I/F507は、外部の装置との間のデータ通信を行うためのインターフェースである。例えば、コンピュータ装置を画像符号化装置に適用した場合、画像符号化装置は生成したビットストリームをI/F507を介して外部に出力することができる。また、コンピュータ装置を画像復号装置に適用した場合、画像復号装置はビットストリームをI/F507を介して受信することができる。また画像復号装置は、ビットストリームを復号した結果をI/F507を介して外部に送信することができる。CPU501、RAM502、ROM503、操作部504、表示部505、外部記憶装置506、I/F507は何れもバス508に接続されている。
 なお、上記の説明において使用した具体的な数値は、具体的な説明を行うために使用したものであって、上記の各実施形態がこれらの数値に限定されることを意図したものではない。また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に用いても構わない。
 (その他の実施例)
 本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
 発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
 本願は、2019年6月21日提出の日本国特許出願特願2019-115751を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
 102:画像分割部 103:ブロック分割部 104:予測部 105:変換・量子化部 106:逆量子化・逆変換部 107:画像再生部 108:フレームメモリ 109:インループフィルタ部 110:符号化部 111:統合符号化部

Claims (14)

  1.  画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割する分割手段と、
     前記画像におけるスライスに含まれる矩形領域の数を示す情報に基づいて、該スライスに含まれる前記矩形領域を特定し、該特定された前記矩形領域における垂直方向におけるブロックの数に基づいて、前記スライスにおける前記ブロック行の符号データの先頭位置を特定するための情報の数を特定する特定手段と、
     前記特定手段によって特定した数の前記先頭位置を特定するための前記情報と、前記スライスに含まれる矩形領域の数を示す前記情報と、前記ブロック行の符号データとを少なくとも多重化した、ビットストリームを生成する生成手段と
     を備えることを特徴とする画像符号化装置。
  2.  前記生成手段は、
     前記矩形領域におけるそれぞれのブロック行を並列に符号化することを特徴とする請求項1に記載の画像符号化装置。
  3.  前記画像は、動画像における各フレームの画像もしくは静止画像であることを特徴とする請求項1又は2に記載の画像符号化装置。
  4.  前記スライスは、ラスタ順に並ぶタイルを含むことを特徴とする請求項1乃至3の何れか1項に記載の画像符号化装置。
  5.  前記矩形領域はブリックであることを特徴とする請求項1乃至4の何れか1項に記載の画像符号化装置。
  6.  画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割して符号化されたビットストリームから画像を復号する画像復号装置であって、
     前記画像におけるスライスに含まれる矩形領域の数を示す情報を前記ビットストリームから復号する復号手段と、
     前記スライスに含まれる矩形領域の数を示す前記情報と、前記矩形領域における垂直方向におけるブロックの数に基づいて、前記スライスにおけるブロック行の符号データの先頭位置を特定するための情報の数を特定する特定手段と
     を備え、
     前記復号手段は、前記特定手段によって特定した前記先頭位置を特定するための情報の数と、前記先頭位置を特定するための情報とに少なくとも基づいて、前記ブロック行の符号データを復号する
     ことを特徴とする画像復号装置。
  7.  前記復号手段は、
     前記矩形領域におけるそれぞれのブロック行を並列に復号することを特徴とする請求項6に記載の画像復号装置。
  8.  前記画像は、動画像における各フレームの画像もしくは静止画像であることを特徴とする請求項6又は7に記載の画像復号装置。
  9.  前記スライスは、ラスタ順に並ぶタイルを含むことを特徴とする請求項7又は8に記載の画像復号装置。
  10.  前記矩形領域はブリックであることを特徴とする請求項6乃至9の何れか1項に記載の画像復号装置。
  11.  画像符号化装置が行う画像符号化方法であって、
     前記画像符号化装置の分割手段が、画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割する分割工程と、
     前記画像符号化装置の特定手段が、前記画像におけるスライスに含まれる矩形領域の数を示す情報に基づいて、該スライスに含まれる前記矩形領域を特定し、該特定された前記矩形領域における垂直方向におけるブロックの数に基づいて、前記スライスにおける前記ブロック行の符号データの先頭位置を特定するための情報の数を特定する特定工程と、
     前記画像符号化装置の生成手段が、前記特定工程によって特定した数の前記先頭位置を特定するための前記情報と、前記スライスに含まれる矩形領域の数を示す前記情報と、前記ブロック行の符号データとを少なくとも多重化した、ビットストリームを生成する生成工程と
     を備えることを特徴とする画像符号化方法。
  12.  画像を複数のタイルに分割し、該タイルを、該タイル以下の大きさの複数のブロックから成るブロック行を1つ以上含む矩形領域に分割して符号化されたビットストリームから画像を復号する画像復号装置が行う画像復号方法であって、
     前記画像復号装置の復号手段が、前記画像におけるスライスに含まれる矩形領域の数を示す情報を前記ビットストリームから復号する復号工程と、
     前記画像復号装置の特定手段が、前記スライスに含まれる矩形領域の数を示す前記情報と、前記矩形領域における垂直方向におけるブロックの数に基づいて、前記スライスにおけるブロック行の符号データの先頭位置を特定するための情報の数を特定する特定工程と
     を備え、
     前記復号工程では、前記特定工程によって特定した前記先頭位置を特定するための情報の数と、前記先頭位置を特定するための情報とに少なくとも基づいて、前記ブロック行の符号データを復号する
     ことを特徴とする画像復号方法。
  13.  コンピュータに請求項11に記載の画像符号化方法を実行させるためのコンピュータプログラム。
  14.  コンピュータに請求項12に記載の画像復号方法を実行させるためのコンピュータプログラム。
PCT/JP2020/021183 2019-06-21 2020-05-28 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法 Ceased WO2020255667A1 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020227001087A KR102668065B1 (ko) 2019-06-21 2020-05-28 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법, 화상 복호 방법, 컴퓨터 프로그램을 저장한 비일시적 컴퓨터-판독가능 저장 매체
CN202080045361.1A CN114051731B (zh) 2019-06-21 2020-05-28 图像编码设备和方法、图像解码设备和方法以及存储介质
CN202411325719.2A CN119211571A (zh) 2019-06-21 2020-05-28 图像编码设备、图像编码方法、图像解码设备和图像解码方法
CN202411325717.3A CN119211570A (zh) 2019-06-21 2020-05-28 图像编码设备、图像编码方法、图像解码设备和图像解码方法
CN202411325723.9A CN119211572A (zh) 2019-06-21 2020-05-28 图像编码设备、图像编码方法、图像解码设备和图像解码方法
CN202411325726.2A CN119211573A (zh) 2019-06-21 2020-05-28 图像编码设备、图像编码方法、图像解码设备和图像解码方法
CN202411325727.7A CN119211574A (zh) 2019-06-21 2020-05-28 图像编码设备、图像编码方法、图像解码设备和图像解码方法
US17/556,480 US20220116640A1 (en) 2019-06-21 2021-12-20 Image encoding apparatus, image decoding apparatus, image encoding method, image decoding method, and non-transitory computer-readable storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-115751 2019-06-21
JP2019115751A JP7403246B2 (ja) 2019-06-21 2019-06-21 画像復号装置、画像復号方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/556,480 Continuation US20220116640A1 (en) 2019-06-21 2021-12-20 Image encoding apparatus, image decoding apparatus, image encoding method, image decoding method, and non-transitory computer-readable storage medium

Publications (1)

Publication Number Publication Date
WO2020255667A1 true WO2020255667A1 (ja) 2020-12-24

Family

ID=73994334

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/021183 Ceased WO2020255667A1 (ja) 2019-06-21 2020-05-28 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法

Country Status (6)

Country Link
US (1) US20220116640A1 (ja)
JP (2) JP7403246B2 (ja)
KR (1) KR102668065B1 (ja)
CN (6) CN119211573A (ja)
TW (2) TWI853577B (ja)
WO (1) WO2020255667A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD984446S1 (en) * 2021-09-27 2023-04-25 HUM Systems GmbH Communication equipment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019078169A1 (ja) * 2017-10-20 2019-04-25 シャープ株式会社 動画像符号化装置及び動画像復号装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007166665A (ja) * 1995-09-29 2007-06-28 Toshiba Corp 画像復号化方法及び装置
US10349077B2 (en) * 2011-11-21 2019-07-09 Canon Kabushiki Kaisha Image coding apparatus, image coding method, image decoding apparatus, image decoding method, and storage medium
CN104170384A (zh) * 2012-06-25 2014-11-26 索尼公司 图像解码设备、图像解码方法、图像编码设备和图像编码方法
JP6080405B2 (ja) 2012-06-29 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
GB2532420A (en) * 2014-11-18 2016-05-25 Sony Corp Data encoding and decoding
CN114786009B (zh) * 2016-03-16 2025-07-08 寰发股份有限公司 视频编码中限制块尺寸的视频数据处理方法与装置
MY208561A (en) * 2019-04-25 2025-05-15 Op Solutions Llc Candidates in frames with global motion

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019078169A1 (ja) * 2017-10-20 2019-04-25 シャープ株式会社 動画像符号化装置及び動画像復号装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BROSS, BENJAMIN ET AL.: "Versatile Video Coding (Draft 5)", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 14TH MEETING, 19 March 2019 (2019-03-19), Geneva, CH, pages 18 - 20 , 35-37, 40-43, 81-85, 89-97, XP030205171 *
BROSS, BENJAMIN ET AL.: "Versatile Video Coding (Draft 6)", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 15TH MEETING, 3 July 2019 (2019-07-03), Gothenburg, SE, pages 19 - 21 , 37-40, 45-49, 90-96, 108-117, XP030208555 *
WANG, YE-KUI ET AL.: "AHG12: Miscellaneous AHG12 topics", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 15TH MEETING, 20 June 2019 (2019-06-20), Gothernburg, SE, pages 1 - 3, XP030205707 *

Also Published As

Publication number Publication date
CN119211574A (zh) 2024-12-27
CN114051731A (zh) 2022-02-15
JP7748440B2 (ja) 2025-10-02
KR102668065B1 (ko) 2024-05-23
CN114051731B (zh) 2024-10-01
TW202339505A (zh) 2023-10-01
CN119211571A (zh) 2024-12-27
US20220116640A1 (en) 2022-04-14
CN119211573A (zh) 2024-12-27
TW202101995A (zh) 2021-01-01
JP2021002775A (ja) 2021-01-07
CN119211570A (zh) 2024-12-27
KR20220019289A (ko) 2022-02-16
TWI853577B (zh) 2024-08-21
JP7403246B2 (ja) 2023-12-22
TWI805926B (zh) 2023-06-21
CN119211572A (zh) 2024-12-27
JP2024019496A (ja) 2024-02-09

Similar Documents

Publication Publication Date Title
JP7689564B2 (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法
JP7748440B2 (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法
JP7703083B2 (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法
JP2025176185A (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20827266

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20227001087

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 20827266

Country of ref document: EP

Kind code of ref document: A1