WO2012008040A1 - 画像符号化方法及び画像復号化方法 - Google Patents

画像符号化方法及び画像復号化方法 Download PDF

Info

Publication number
WO2012008040A1
WO2012008040A1 PCT/JP2010/062015 JP2010062015W WO2012008040A1 WO 2012008040 A1 WO2012008040 A1 WO 2012008040A1 JP 2010062015 W JP2010062015 W JP 2010062015W WO 2012008040 A1 WO2012008040 A1 WO 2012008040A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
prediction
motion vector
information
decoding
Prior art date
Application number
PCT/JP2010/062015
Other languages
English (en)
French (fr)
Inventor
太一郎 塩寺
昭行 谷沢
中條 健
Original Assignee
株式会社 東芝
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 株式会社 東芝 filed Critical 株式会社 東芝
Priority to PCT/JP2010/062015 priority Critical patent/WO2012008040A1/ja
Publication of WO2012008040A1 publication Critical patent/WO2012008040A1/ja

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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Definitions

  • Embodiments of the present invention relate to a coding and decoding method for moving images.
  • H.264 video coding methods that have greatly improved coding efficiency have been jointly developed by ITU-T Rec. H.264 and ISO / IEC 96 14496-10 (hereinafter referred to as H.264) in collaboration with ITU-T and ISO / IEC. 264)).
  • prediction processing, conversion processing, and entropy encoding processing are performed in units of rectangular blocks (for example, 16 ⁇ 16 pixel block units, 8 ⁇ 8 pixel block units, etc.).
  • motion compensation is performed on a rectangular block to be encoded (encoding target block) with reference to a frame (reference frame) that has already been encoded in the temporal direction.
  • motion compensation it is necessary to encode motion information including a motion vector as information indicating a spatial shift between a block to be encoded and a block to be referred to in a reference frame, and send it to the decoding side. Furthermore, when motion compensation is performed using a plurality of reference frames, it is necessary to encode a reference frame number together with motion information. For this reason, there exists a problem that the code amount regarding motion information and a reference frame number increases.
  • a median vector is derived as a prediction vector from a motion vector assigned to an already encoded block, and a difference value between the motion vector and the prediction vector is encoded to reduce the code amount of the motion vector.
  • This disclosure has been made to solve the above-described problems, and an object thereof is to provide an image encoding and image decoding method with high encoding efficiency.
  • the image coding method includes a predictive coding step of performing motion compensation predictive coding on a coding target block by bi-prediction using first and second motion vectors, and the first motion of the coding target block.
  • This image encoding method is a selected block having a first motion vector that is most similar to the first motion vector of the encoding target block, from predicted pixel blocks that have been bi-predicted prior to the encoding target block.
  • An image decoding method includes encoded data including a first motion vector and a difference vector related to a decoding target block to be subjected to motion compensation prediction decoding by bi-prediction using the first and second motion vectors.
  • the image decoding method includes: adding a second motion vector of the decoding target block by adding the difference vector of the decoding target block and a second motion vector of the selected block; And a predictive decoding step of performing motion compensation predictive decoding on the decoding target block by bi-prediction using the first motion vector and the second motion vector.
  • FIG. 1 is a block diagram schematically showing an image encoding device according to a first embodiment. It is a schematic diagram which shows an example of the size of the macroblock which is a process unit of the encoding by the image encoding part of FIG. It is a schematic diagram which shows the other example of the size of the macroblock which is a process unit of the encoding by the image encoding part of FIG. It is a figure which shows the order which the image encoding part of FIG. 1 encodes the pixel block in an encoding object frame. It is a figure which shows an example of the motion information memory of FIG. It is a figure which shows an example of the inter prediction process which the prediction part of FIG. 1 performs.
  • FIG. 2 is a block diagram schematically showing an entropy encoding unit in FIG. 1.
  • FIG. 13B is a diagram showing the positions of encoded peripheral blocks shown in FIG. 13A. It is a figure which shows the further another example of the encoded peripheral block used for prediction of motion information. It is a figure which shows the position of the encoded peripheral block shown to FIG. 13C. It is a figure for demonstrating scaling of the motion vector of reference motion information.
  • FIG. 16 is a diagram illustrating still another example of the prediction unit syntax illustrated in FIG. 15. It is a block diagram which shows roughly the image coding apparatus which concerns on 2nd Embodiment. It is a figure which shows an example of the intra prediction information which the intra prediction information memory of FIG. 20 hold
  • FIG. 21 is a block diagram schematically showing an entropy encoding unit in FIG. 20. It is a flowchart which shows an example of operation
  • FIG. 30 is a block diagram schematically showing an encoded string decoding unit in FIG. 29.
  • FIG. 33 is a flowchart illustrating an example of the operation of the encoded sequence decoding unit illustrated in FIG. 32.
  • FIG. 35 is a block diagram schematically showing an encoded string decoding unit in FIG. 34.
  • 11 is a flowchart illustrating another example of the operation of the motion information encoding unit in FIG. 10.
  • FIG. 1 schematically shows an image encoding apparatus according to the first embodiment.
  • the image encoding device includes an image encoding unit 100, an encoding control unit 150, and an output buffer 110.
  • the image encoding apparatus in FIG. 1 may be realized by hardware such as an LSI chip, or may be realized by causing a computer to execute an image encoding program.
  • an input image signal 10 of a moving image or a still image is divided into predetermined processing units and then input to the image encoding unit 100.
  • the image encoding unit 100 compresses and encodes the input image signal 10 to generate encoded data 14.
  • the generated encoded data 14 is temporarily stored in the output buffer 110, and then sent to a storage system (storage medium) or a transmission system (communication line) (not shown) at an output timing managed by the encoding control unit 150. Is done.
  • the encoding control unit 150 controls overall encoding processing of the image encoding unit 100 such as feedback control of generated code amount, quantization control, prediction mode control, and entropy encoding control. Specifically, the encoding control unit 150 provides the encoding control information 50 to the image encoding unit 100 and receives the feedback information 51 from the image encoding unit 100 as appropriate.
  • the encoding control information 50 includes prediction information, motion information 18 and quantization parameter information.
  • the prediction information includes prediction mode information and block size information.
  • the motion information 18 includes motion vector information, a reference frame number, and prediction direction information (information indicating whether prediction was performed using unidirectional prediction or bidirectional prediction).
  • the quantization parameter information includes quantization parameters such as a quantization width (quantization step size) and a quantization matrix.
  • the feedback information 51 includes a generated code amount in the image encoding unit 100, and is used, for example, to determine a quantization parameter.
  • the image encoding unit 100 encodes the input image signal 10 using a predetermined pixel block (for example, a coding tree block, a macro block, a sub block, one pixel, etc.) as a processing unit. For this reason, the input image signal 10 is sequentially input to the image encoding unit 100 in units of pixel blocks obtained by dividing the original image signal.
  • an encoding processing unit is a macroblock, and a pixel block (macroblock) that is an object of the encoding process is referred to as an encoding target block.
  • an image frame including an encoding target block that is, an image frame that is an object of encoding processing is referred to as an encoding target frame.
  • Such an encoding target block may be, for example, a 16 ⁇ 16 pixel block as shown in FIG. 2A or a 64 ⁇ 64 pixel block as shown in FIG. 2B.
  • the encoding target block is not limited to the macroblock example shown in FIGS. 2A and 2B, and may be a 128 ⁇ 128 pixel block, a 32 ⁇ 32 pixel block, an 8 ⁇ 8 pixel block, or the like.
  • the shape of the macroblock is not limited to the square shape as shown in FIGS. 2A and 2B, and may be set to an arbitrary shape such as a rectangular shape.
  • the processing unit is not limited to a pixel block such as a macroblock, and may be a frame or a field.
  • the encoding process for each pixel block in the encoding target frame may be executed in any order.
  • the scan order of encoding may be a raster scan, a line scan, or a Z scan order.
  • encoding is performed in raster scan order, that is, line by line from the upper left pixel block to the lower right pixel block of the encoding target frame. It is assumed that processing is executed.
  • a motion information memory 108 includes a prediction unit 101, a subtracter 102, a transform / quantization unit 103, an entropy coding unit 104, an inverse quantization / inverse transform unit 105, an adder 106, a frame memory 107, and A motion information memory 108 is provided.
  • the input image signal 10 is input to the subtracter 102.
  • the subtracter 102 receives the input image signal 10 and also receives the predicted image signal 11 from the prediction unit 101 described later.
  • the subtractor 102 calculates a difference between the input image signal 10 and the predicted image signal 11 and generates a prediction error image signal 12.
  • the transform / quantization unit 103 receives the prediction error image signal 12 from the subtractor 102, performs a conversion process on the received prediction error image signal 12, and generates a transform coefficient.
  • the transformation process is, for example, orthogonal transformation such as discrete cosine transformation (DCT: Discrete Cosine Transform).
  • the transform / quantization unit 103 may generate transform coefficients using a technique such as wavelet transform and independent component analysis instead of the discrete cosine transform.
  • the transform / quantization unit 103 quantizes the generated transform coefficient in accordance with the quantization parameter given by the encoding control unit 150, and generates transform coefficient information 13 that is information about the quantized transform coefficient. .
  • the transform coefficient information 13 is sent to the entropy encoding unit 104 and the inverse quantization / inverse transform unit 105.
  • the inverse quantization / inverse transform unit 105 performs the quantized transform included in the transform coefficient information 13 according to the quantization parameter given by the encoding control unit 150, that is, the same quantization parameter as the transform / quantization unit 103. Inversely quantize the coefficients. Subsequently, the inverse quantization / inverse transform unit 105 performs inverse transform on the inversely quantized transform coefficient to generate a decoded prediction error signal 15.
  • the inverse transformation process by the inverse quantization / inverse transformation unit 105 matches the inverse transformation process of the transformation process by the transformation / quantization unit 103.
  • the inverse transform process is inverse discrete cosine transform (IDCT: Inverse Discrete Cosine Transform) or inverse wavelet transform.
  • IDCT Inverse Discrete Cosine Transform
  • the adder 106 receives the decoded prediction error signal 15 from the inverse quantization / inverse transform unit 105, and further receives the predicted image signal 11 from the prediction unit 101.
  • the adder 106 adds the decoded prediction error signal 15 and the predicted image signal 11 to generate a local decoded image signal 16.
  • the generated local decoded image signal 16 is stored as a reference image signal 17 in the frame memory 107.
  • the reference image signal 17 is stored in the frame memory 107 in units of frames.
  • the reference image signal 17 stored in the frame memory 107 is read out and referred to by the prediction unit 101 when the prediction unit 101 generates the predicted image signal 11.
  • the prediction unit 101 reads the reference image signal 17 from the frame memory 107.
  • the prediction unit 101 performs a predetermined prediction process based on the reference image signal 17 to generate a predicted image signal 11 and motion information 18.
  • the prediction unit 101 generates motion information 18 to be allocated to the encoding target block based on the reference image signal 17, and performs motion compensation based on the generated motion information 18 to generate the predicted image signal 11. Generate.
  • the prediction unit 101 acquires reference motion information 19 assigned to an encoded pixel block located around the encoding target block from a motion information memory 108 described later.
  • the prediction unit 101 derives motion information 18 to be allocated to the encoding target block based on the acquired reference motion information 19 and performs motion compensation using the derived motion information 18 to obtain the predicted image signal 11. Generate.
  • the generated predicted image signal 11 is sent to the subtracter 102 and the adder 106.
  • the generated motion information 18 is sent to the entropy encoding unit 104 and stored in the motion information memory 108 as reference motion information 19 for prediction processing of a pixel block to be encoded later.
  • the prediction unit 101 will be described in detail later.
  • the motion information memory 108 temporarily stores the motion information 18 of the encoded pixel block as reference motion information 19.
  • FIG. 4 shows an example of the configuration of the motion information memory 108.
  • motion information 18 regarding encoded pixel blocks is sequentially input, and is held for each frame, for example.
  • the motion information memory 108 holds a plurality of motion information frames 25 having different encoding times.
  • the reference motion information 19 is held in the motion information frame 25 in a predetermined block unit, for example, a 4 ⁇ 4 pixel block unit.
  • the prediction unit 101 performs prediction with 16 ⁇ 16 pixel blocks, the same motion information 18 is copied to all (16) 4 ⁇ 4 pixel blocks corresponding to the position of the encoding target block.
  • the motion information memory 108 is not limited to the example in which the reference motion information 19 is stored in units of 4 ⁇ 4 pixel blocks, and the reference motion information 19 may be stored in units of other pixel blocks.
  • the pixel block unit that holds the reference motion information 19 may be one pixel or a 2 ⁇ 2 pixel block.
  • the shape of the pixel block that holds the reference motion information 19 is not limited to a square shape, and may be an arbitrary shape.
  • the entropy encoding unit 104 receives the transform coefficient information 13 from the transform / quantization unit 103, receives the motion information 18 from the prediction unit 101, receives the reference motion information 19 from the motion information memory 108, and further encodes the encoding control unit 150. Receiving encoding parameters including prediction information and quantization parameters.
  • the entropy encoding unit 104 performs entropy encoding (for example, isometric encoding, Huffman encoding, arithmetic encoding, etc.) on the transform coefficient information 13, the motion information 18, and the encoding parameter, and multiplexes them to generate encoded data. 14 is generated.
  • the encoding parameters include all parameters necessary for decoding such as information on transform coefficients and information on quantization, as well as prediction information such as motion information 18.
  • the entropy encoding unit 104 will be described in detail later.
  • the encoded data 14 generated by the entropy encoding unit 104 is temporarily stored in the output buffer 110 and then sent to a storage system or transmission system (not shown).
  • the prediction unit 101 generates the predicted image signal 11 in detail, specifically, intra prediction that generates a predicted image using the reference image signal 17 related to the encoding target frame (or encoding target field). (Also referred to as intraframe prediction) and inter prediction (also referred to as interframe prediction) in which a predicted image is generated using a reference image signal 17 related to one or more reference frames (or reference fields).
  • the reference frame refers to an already encoded frame (or field) that can be referred to when the predicted image signal is generated.
  • the prediction unit 101 selectively switches between intra prediction and inter prediction, and generates the predicted image signal 11 of the encoding target block.
  • the inter prediction will be described in detail.
  • the prediction unit 101 selectively switches between the inter prediction mode, the intra prediction mode, the direct mode, and the like so that the encoding cost described later is minimized.
  • the prediction image signal 11 may be generated by performing prediction.
  • the inter prediction performed by the prediction unit 101 includes unidirectional prediction that generates a predicted image using one reference frame and bidirectional prediction (also referred to as bi-prediction) that generates a predicted image using two or more reference frames.
  • FIG. 5A shows an example of unidirectional prediction by the prediction unit 101.
  • the prediction unit 101 assigns a pixel block in a reference frame one frame before to a coding target block from a pixel block at the same position as the coding target block.
  • the predicted image signal 11 is generated using the reference image signal 17 of the pixel block (reference block) 24 at a position spatially shifted in accordance with the motion vector included in the motion information 18 obtained.
  • the prediction unit 101 uses the reference image signal 17 of the reference block 24 specified by the position (coordinates) of the encoding target block and the motion vector included in the motion information 18 to predict the predicted image.
  • a signal 11 is generated.
  • the prediction unit 101 acquires the reference motion information 19 from the reference motion memory 108, and generates the motion information 18 of the encoding target block based on the acquired reference motion information 19.
  • the reference motion information 19 acquired by the prediction unit 101 may be pixel block motion information in the encoding target frame, and is different from the encoding target frame and motion of pixel blocks in another already encoded frame. It may be information.
  • motion compensation with fractional pixel accuracy for example, 1/2 pixel accuracy, 1/4 pixel accuracy, 1/6 pixel accuracy, 1/8 pixel accuracy, etc.
  • the value of the interpolation pixel is generated by performing the filtering process.
  • H.M. In H.264 it is possible to perform interpolation processing up to 1/4 pixel accuracy on the luminance signal.
  • the amount of motion vector information included in the motion information 18 is four times the integer pixel accuracy.
  • the reference frame two frames before may be used as shown in FIG. 5B, or Any frame that has already been encoded may be used.
  • reference image signals 17 of a plurality of reference frames having different time positions are held, information indicating which time position the reference image signal 17 is generated from the reference image signal 17 is represented by a reference frame number.
  • the reference frame number is included in the motion information 18.
  • the reference frame number can be changed on an area basis (picture, block basis, etc.).
  • the prediction unit 101 can generate the predicted image signal 11 using different reference frames for each pixel block.
  • the reference frame number of this area is set to 0, and when the reference frame two frames before is used for prediction, the reference frame number of this area Is set to 1.
  • the reference image signal 17 for only one frame is held in the frame memory 107, that is, when the number of frames that can be referred to is 1, the reference frame number is always set to 0. .
  • the prediction unit 101 performs prediction using two or more types of motion information 18.
  • H.M As shown in FIGS. 6A and 6B, H.264 includes bi-directional prediction in which prediction is performed using two types of motion information 18.
  • Two types of motion information 18 used in bidirectional prediction are referred to as first motion information 18a and second motion information 18b. These first and second motion information 18a and 18b are respectively H.264 and H.264. 264 corresponds to the motion information of List0 and List1.
  • Each of the first motion information 18a and the second motion information 18b includes information necessary for motion compensation, such as motion vector information, a reference frame number, and a reference frame position.
  • FIG. 6A shows an example of bidirectional prediction in which motion compensation is performed from both a temporally previous frame and a temporally subsequent frame.
  • the prediction unit 101 acquires the first reference block 24a in the first reference frame (first reference image signal 17) using the first motion information 18a, and further uses the second motion information 18b to obtain the second reference frame.
  • the second reference block 24b in (second reference image signal 17) is acquired.
  • the first reference frame is a frame to be displayed before the encoding target frame
  • the second reference frame is a frame to be displayed after the encoding target frame.
  • the prediction unit 101 generates a predicted image signal 11 based on bidirectional prediction by averaging or weighted averaging pixel values at the same position in the first reference block 24a and the second reference block 24b. This weighted average method is described in H.W. The same method as H.264 may be used.
  • the motion information 18 includes two types of motion information, that is, first and second motion information 18a and 18b. Therefore, the pixel block to which bi-directional prediction is applied.
  • the reference motion information 19 includes two types of reference motion information, that is, reference first motion information 19a and reference second motion information 19b.
  • both the first and second reference frames may be located in the past in time from the encoding target frame, or although not shown in the drawing, You may be located in the future.
  • the case where the number of motion information used for bidirectional prediction is two will be described.
  • bidirectional prediction may be performed using three or more pieces of motion information.
  • the first and second reference frames used in the bi-directional prediction may be any frames as long as they are already encoded frames.
  • the prediction unit 101 can select a block size suitable for the encoding target block from a plurality of motion compensation block sizes prepared in advance. That is, the prediction unit 101 can divide the encoding target block into a plurality of small pixel blocks and perform motion compensation for each small pixel block.
  • 7A to 7C show the motion compensation block size in units of macroblocks
  • FIG. 7D shows the motion compensation block size in units of sub-blocks (that is, pixel blocks of 8 ⁇ 8 pixels or less). As shown in FIG.
  • the motion compensation block when the encoding target block is a 64 ⁇ 64 pixel block, the motion compensation block is a 64 ⁇ 64 pixel block, a 64 ⁇ 32 pixel block, a 32 ⁇ 64 pixel block, or a 32 ⁇ 32 pixel block. Etc. can be selected.
  • the motion compensation block when the encoding target block is a 32 ⁇ 32 pixel block, the motion compensation block is a 32 ⁇ 32 pixel block, a 32 ⁇ 16 pixel block, a 16 ⁇ 32 pixel block, or a 16 ⁇ 16 block.
  • a pixel block or the like can be selected. Further, as shown in FIG.
  • the motion compensation block when the encoding target block is a 16 ⁇ 16 pixel block, the motion compensation block is a 16 ⁇ 16 pixel block, a 16 ⁇ 8 pixel block, an 8 ⁇ 16 pixel block, or an 8 ⁇ 8 block. It can be set to a pixel block or the like. Furthermore, as shown in FIG. 7D, when the encoding target block is an 8 ⁇ 8 pixel block, the motion compensation block is an 8 ⁇ 8 pixel block, an 8 ⁇ 4 pixel block, a 4 ⁇ 8 pixel block, or a 4 ⁇ A 4-pixel block or the like can be selected.
  • the motion information 18 is stored for each small pixel block (for example, 4 ⁇ 4 pixel block) in the reference frame used for the inter prediction, it is optimal according to the local property of the input image signal 10.
  • the motion compensation block shape and motion information 18 can be used. 7A to 7D can be arbitrarily combined (a collective term for the macroblocks and sub-macroblocks shown in H.264).
  • the encoding target block is the 64 ⁇ 64 pixel block shown in FIG. 7A
  • each block size shown in FIG. 7B is selected for each of the four 32 ⁇ 32 pixel blocks obtained by dividing the 64 ⁇ 64 pixel block.
  • a block of 64 ⁇ 64 to 16 ⁇ 16 pixels can be used hierarchically.
  • a block size of 64 ⁇ 64 to 4 ⁇ 4 can be used hierarchically.
  • the motion compensation block does not have to be square or rectangular as shown in FIGS. 8A to 8D.
  • the motion compensation block may be divided into small pixel blocks having asymmetric sizes.
  • the motion compensation block may be divided by a diagonal line.
  • the motion compensation block may be divided by an arbitrary line segment that divides the pixel block.
  • the motion compensation block may be divided by arcs (non-line segments).
  • a plurality of methods for dividing these motion compensation blocks are prepared as described above, and the prediction unit 101 uses a motion compensation block that minimizes the coding cost derived by the cost equation shown in the following equation (1). Select a size.
  • J represents the coding cost
  • D represents the coding distortion that represents the sum of square errors between the input image signal 10 and the reference image signal 17.
  • R represents a code amount estimated by provisional coding
  • represents a Lagrange undetermined coefficient determined by a quantization width or the like.
  • the prediction unit 101 may calculate the encoding cost J using only the code amount R or the encoding distortion D instead of the mathematical expression (1).
  • the cost function of Expression (1) may be created using a value that approximates the code amount R or the coding distortion D.
  • the coding distortion D is not limited to the sum of square errors, and may be the sum of absolute values of prediction errors (SAD: sums of absolute absolute differences).
  • the code amount R only the code amount related to the motion information 18 may be used. Further, the present invention is not limited to the example in which the motion compensation block size that minimizes the coding cost is selected, and even if one motion compensation block size that has a value within a predetermined range from the smallest coding cost is selected. I do not care.
  • the position of the pixel block from which the reference image signal 17 is extracted as the predicted image signal 11 is derived based on the motion information 18 of the encoding target block.
  • the motion compensation process for the encoding target block is H.264. Similar to the H.264 motion compensation process can be used.
  • an interpolation method with 1/4 pixel accuracy will be specifically described. In 1/4 pixel precision interpolation, if each component of the motion vector is a multiple of 4, the motion vector points to an integer pixel position. In other cases, the motion vector indicates a predicted position corresponding to the interpolation position with fractional accuracy.
  • x and y indicate horizontal and vertical indexes indicating the head position (for example, the upper left vertex) of the prediction target block
  • x_pos and y_pos indicate corresponding prediction positions of the reference image signal 17.
  • mv_x and mv_y indicate a horizontal component and a vertical component of a motion vector having a 1/4 pixel accuracy.
  • a predicted pixel is generated by interpolation or interpolation of the corresponding pixel position of the reference image signal 17 for the determined pixel position.
  • FIG. An example of H.264 prediction pixel generation is shown.
  • squares indicated by capital letters (hatched squares) indicate pixels at integer positions
  • squares displayed by shading indicate interpolation pixels at 1/2 pixel positions. Yes.
  • a square displayed in white indicates an interpolation pixel corresponding to a 1/4 pixel position.
  • the 1/2 pixel interpolation process corresponding to the positions of the alphabets b and h is calculated by the following equation (3).
  • interpolation processing of 1 ⁇ 4 pixels corresponding to the positions of the alphabets a and d in FIG. 9 is calculated by the following formula (4).
  • the interpolated pixel at the 1/4 pixel position is calculated using a 2-tap average value filter (tap coefficients: (1/2, 1/2)).
  • the interpolation process of 1/2 pixel corresponding to the alphabet j existing in the middle of the four integer pixel positions is generated by using both directions of 6 taps in the vertical direction and 6 taps in the horizontal direction.
  • Interpolated pixel values are generated in the same manner for pixel positions other than those described.
  • the interpolation pixel may be generated by an interpolation process different from Equation (3) and Equation (4), and is generated using an interpolation coefficient different from the interpolation coefficients shown in Equation (3) and Equation (4). It does not matter.
  • the interpolation coefficient may be a fixed value given from the encoding control unit 150, or the interpolation coefficient is optimized for each frame based on the encoding cost described above, and the optimized interpolation coefficient is calculated. May be used.
  • FIG. 10 shows the entropy encoding unit 104 in more detail.
  • the entropy encoding unit 104 includes a parameter encoding unit 1001, a transform coefficient encoding unit 1002, a motion information encoding unit 1003, and a multiplexing unit 1004.
  • the parameter encoding unit 1001 encodes parameters necessary for decoding, such as prediction mode information, block size information, and quantization parameter information, excluding the transform coefficient information 13 and the motion information 18, and generates encoded data 14a.
  • the transform coefficient encoding unit 1002 encodes the transform coefficient information 13 to generate encoded data 14b.
  • the motion information encoding unit 1003 acquires the motion information 18 and the reference motion information 19, encodes the motion information 18 using the motion information 18 and the reference motion information 19, and depends on the prediction mode applied to the encoding target block. Thus, one type of encoded data 14c relating to the motion information 18 or two types of encoded data 14c and 14d are generated.
  • the motion information encoding unit 1003 includes a motion information separation unit 1005, a first motion information encoding unit 1006, a second motion information encoding unit 1007, and a block selection unit 1008.
  • the motion information separation unit 1005 determines whether bi-directional prediction is applied to the encoding target block. When bi-directional prediction is applied, the motion information separation unit 1005 separates and outputs the first motion information 18a and the second motion information 18b from the motion information 18. When the bi-directional prediction is not applied, the motion information separation unit 1005 outputs the motion information 18a as the first motion information 18a.
  • the first motion information encoding unit 1006 encodes the first motion information 18a to generate encoded data 14c.
  • the first motion information encoding unit 1006 obtains a prediction vector (prediction value) using the motion vector included in the reference motion information 19 of the pixel blocks around the encoding target block, and uses the prediction vector and the first motion information 18a.
  • a difference from the included motion vector is calculated and encoded.
  • H.M. In H.264, as shown in FIG. 11A, the median value (median value) of the motion vector included in the reference motion information 19 of each of the predetermined pixels A, B, and C in each pixel block adjacent to the encoding target block. Is used as a prediction vector corresponding to the first motion information 18a.
  • the first motion information encoding unit 1006 selects one of the reference motion information 19 of the pixels A, B, and C.
  • the motion vector included in the selected reference motion information 19 may be used as the prediction vector of the first motion information 18a. In this case, it is necessary to encode selected block information indicating which pixel A, B, or C is selected.
  • the block selection unit 1008 and the second motion information encoding unit 1007 are used when bi-directional prediction is applied to the encoding target block.
  • the block selection unit 1008 acquires the first motion information 18a and the reference motion information 19 of each pixel block (referred to as a peripheral block) located around the encoding target block. Based on the reference motion information 19, the block selection unit 1008 selects a pixel block to be used for predictive coding of the second motion information 18b from neighboring blocks.
  • the block selection unit 1008 compares the motion vector included in the first motion information 18a with the motion vector included in the reference first motion information 19a in the reference motion information 19 and The peripheral block having the smallest inter-vector distance between these two motion vectors or the peripheral block having the two most similar motion vectors is selected as the selected block.
  • the block selection unit 1008 outputs selected block information 20 indicating the selected pixel block.
  • the second motion information encoding unit 1007 acquires the selected block information 20 and the second motion information 18b, and predictively encodes the second motion information 18b based on the reference motion information 19 of the pixel block indicated by the selected block information 20.
  • the encoded data 14d is output.
  • Entropy coding (for example, isometric coding, Huffman coding, or arithmetic coding) can be applied to these coding units 1001, 1002, and 1003.
  • the multiplexing unit 1004 multiplexes the generated encoded data 14a, 14b, 14c, and 14d, and outputs the encoded data 14.
  • FIG. 12 schematically shows the operation of the motion information encoding unit 1003 when bi-directional prediction is applied to the encoding target block.
  • the motion information separation unit 1005 separates the received motion information 18 into first motion information 18a and second motion information 18b (step S1200).
  • the first motion information encoding unit 1006 converts the first motion information 18a into H.264, for example.
  • the encoding is performed in the same manner as in H.264 (step S1201).
  • step S1201 for example, the first motion information encoding unit 1006 performs H.264.
  • the prediction vector (pred_L0_x, pred_L0_y) is derived by the same prediction method as H.264, and the difference between the prediction vector and the motion vector (MV_cur_L0_x, MV_cur_L0_y) included in the first motion information 18a (horizontal) Component: mvd_l0 [0], vertical component: mvd_l0 [1]) is encoded.
  • the first motion information encoding unit 1006 may derive a prediction vector from the encoded peripheral blocks and encode the difference between the prediction vector and the motion vector included in the first motion information 18a.
  • the block selection unit 1008 substitutes the maximum value (MAX_INT) that can be taken as the initial value for the minimum cost (sel_cost) for selecting the selected block in the subsequent processing, and further sets the initial value to the optimum index (sel_idx). The value zero is substituted (step S1202).
  • the block selection unit 1008 performs the following steps S1204 to S1208 for each of the encoded peripheral blocks (that is, the predicted pixel block subjected to bi-prediction before the encoding target block).
  • the process is repeated (step S1203).
  • the encoded peripheral blocks are pixel blocks adjacent to the encoding target block on the left, upper, upper right, upper left, and lower left as shown in FIG. 11A.
  • the relative position and index idx of the neighboring blocks are as shown in FIG. 11B.
  • Dx and dy in FIG. 11B indicate the horizontal component and the vertical component of the relative pixel position from the upper left pixel position in the encoding target block, respectively.
  • all the encoded pixel blocks adjacent to the encoding target block may be selected as the peripheral blocks.
  • NA in FIG. 13A indicates the number of blocks adjacent to the left with respect to the encoding target block.
  • the minimum block size is Nmin x Mmin pixel block
  • the maximum value of nA is M / Mmin.
  • nB indicates the number of blocks adjacent above the encoding target block, and its maximum value is N / Nmin.
  • the relative positions of the peripheral blocks and the index idx shown in FIG. 13A are shown in FIG. 13B.
  • peripheral blocks are out of the screen or unencoded area and cannot be referred to, or are encoded by intra prediction and have no motion information, these peripheral blocks are displayed in step S1203. Are previously excluded from the processing target. Note that some of the peripheral blocks shown in FIGS. 11A and 11B may be excluded from the processing target in step S1203.
  • the block selection unit 1008 determines whether or not bi-directional prediction has been applied to the peripheral block corresponding to the index idx (step S1204). When the bi-directional prediction is not applied, this neighboring block is excluded from the selection block candidates, and the subsequent steps S1205 to S1208 are skipped. When the bi-directional prediction is applied, the block selection unit 1008 separates the reference motion information 19 of the neighboring block idx into the reference first motion information 19a and the reference second motion information 19b, similarly to the motion information 18. S1205). Next, the block selection unit 1008 calculates a difference value between the first motion information 18a of the encoding target block and the reference first motion information 19a of the neighboring block idx as shown in the following formula (6), and the cost (cost ).
  • MV_cur_L0_x and MV_cur_L0_y indicate the horizontal and vertical components of the motion vector included in the first motion information 18a of the encoding target block, respectively, and MV_idx_L0_x and MV_idx_L0_y are included in the reference first motion information 19a of the peripheral block idx
  • Abs (x) is an operator that outputs the absolute value of the variable x. Therefore, Expression (6) represents SAD (Sum of Absolute Deference) of the first motion information 18a of the encoding target block and the reference first motion information 19a of the neighboring block idx.
  • the cost may be calculated by an SSD (Sum of Square Deference) represented by the following formula (7).
  • the cost may be calculated by SAD or SSD using either the horizontal component or the vertical component of the motion vector. Furthermore, the cost may be calculated using the city distance, the Euclidean distance, or the Minkowski distance between the motion vector in the first motion information 18a of the block to be encoded and the motion vector in the reference first motion information 19a. I do not care. Furthermore, the cost may be calculated using a difference value of only the norm component or only the angle component of each vector.
  • the block selection unit 1008 compares the calculated cost cost with the minimum cost sel_cost (step S1207).
  • the cost cost calculated in step S1206 is smaller than sel_cost (step S1207 is TRUE)
  • the block selection unit 1008 substitutes this cost for sel_cost, substitutes idx of this peripheral block for sel_idx, and selects sel_cost_ and sel_idx is updated (step S1208).
  • cost is a value equal to or greater than sel_cost (S107 is FALSE)
  • step S1208 is skipped.
  • the block selection unit 1008 selects the peripheral block corresponding to sel_idx as the selected block (step S1210), and The reference second motion information 19b is determined as a predicted value of the second motion information 18b of the encoding target block (step S1211).
  • the second motion information encoding unit 1007 encodes the difference value between the second motion information 18b and the prediction value, that is, the difference between the motion vector and the prediction vector in the second motion information 18b (step S1212).
  • a difference value (horizontal component mvd_l1 [0] and vertical component mvd_l1 [1]) between the second motion information 18b and the predicted value is calculated according to the following equation (8).
  • the first motion vector having the smallest motion vector or the first motion vector that is the most similar to the motion vector in the first motion information of the block to be encoded among the neighboring blocks is stored.
  • a peripheral block having motion information is selected as a selected block, and the second motion information 18b of the encoding target block is predictively encoded using the second motion information of the selected block.
  • the motion block selection unit 1008 refers to the frame position (reference frame number) referred to or indicated by the first motion information 18a and the frame position (reference frame number) referred to or indicated by the reference first motion information 19a. Accordingly, the motion vector of the reference first motion information 19a may be scaled. In this case, the reference frame number (ref_idx_l0) in the first motion information 18a needs to be encoded before the motion vector information.
  • FIG. 14 shows an example in which scaling is applied to the motion vector in the reference first motion information 19a.
  • the reference frame referenced by the first motion information 18a of the encoding target block and the reference first motion information 19b of the neighboring block idx are shown in FIG.
  • tc is a time distance (POC (Picture Order Count) (number indicating the display order) between the encoding target frame and the reference frame referenced by the first motion information 18a assigned to the encoding target block. ) Indicates a distance), and tr indicates a time distance between the encoding target frame and the reference frame referred to by the reference first motion information 19a assigned to the peripheral block.
  • POC Picture Order Count
  • tr indicates a time distance between the encoding target frame and the reference frame referred to by the reference first motion information 19a assigned to the peripheral block.
  • the peripheral block idx is a pixel block of a reference frame different from the encoding target frame
  • tr refers to the reference frame including the peripheral block idx and the reference first motion information 19a assigned to the peripheral block idx. Indicates the time distance to the frame.
  • curPOC indicates the POC of the encoding target block
  • refPOC indicates the POC of the reference frame referenced by the first motion information 18a allocated to the encoding target block
  • idxPOC is allocated to the peripheral block idx
  • the reference first motion information 19a indicates the POC of the reference frame referred to.
  • Clip (min, max, target) outputs min when target is a value smaller than min, outputs max when target is a value larger than max, and sets target otherwise.
  • DiffPicOrderCnt (x, y) is a function for calculating a difference between two types of POCs.
  • the motion vector MV_idx_L0 ′ (MV_idx_L0_x ′, MV_idx_L0_y ′) in the reference first motion information 19a after the application of scaling is calculated by the following equation (10).
  • the encoding target block and the peripheral block idx virtually refer to the same frame. This makes it possible to accurately calculate the cost, thereby improving the efficiency of block selection.
  • a scaling coefficient (DistScaleFactor) is obtained for all selectable reference frames for each slice or frame.
  • tx and DistScaleFactor are calculated in advance for tc and tr and tabulated as a reference table.
  • the block selection unit 1008 calls DistScaleFactor with reference to the reference table with tc and tr for each encoding target block, and performs the calculation shown in Equation (12), thereby performing the scaling of the reference first motion information 19a after scaling.
  • a motion vector MV_idx_L0 ′ is derived.
  • equation (10) may be expressed by table lookup.
  • the reference second motion information 19b of the selected block is used as a predicted value in S111
  • the reference second motion information 19b and the reference frame number in the second motion information 18b are used in the reference second motion information 19b.
  • the motion vector information may be scaled to generate a prediction vector.
  • the reference frame number (ref_idx_l0) in the second motion information 18a needs to be encoded before the motion vector information.
  • FIG. 15 shows an example in which scaling is applied to the motion vector in the reference second motion information 19b, and the reference second motion information 19b assigned to the reference frame and the selected block sel_idx to which the encoding target block refers is referred. A case where the reference frame is different is shown. In FIG.
  • tc ′ indicates a time distance (POC distance) between the encoding target frame and the reference frame referenced by the second motion information 18b allocated to the encoding target block
  • tr ′ The time distance between the frame to be converted and the reference frame referenced by the reference second motion information 19b of the selected block sel_idx is shown.
  • the selected block idx is a pixel block of a frame different from the encoding target frame
  • tr ′ is a reference frame including the selected block sel_idx and a reference frame referenced by the reference second motion information 19b of the selected block sel_idx. Indicates the time distance between.
  • tc ′ and tr ′ are calculated using the following formula (13).
  • refPOC ′ indicates the POC of the reference frame referenced by the encoding target block
  • sel_idxPOC ′ indicates the POC of the reference frame referenced by the selected block sel_idx.
  • the predicted value after applying scaling is calculated according to the following mathematical formula (14).
  • pred_L1_x and pred_L1_y indicate the horizontal and vertical components of the prediction vector
  • MV_sel_idx_L1_x and MV_sel_idx_L1_y indicate the horizontal and vertical components of the motion vector included in the reference second motion information 19b allocated to the selected block sel_idx. Show.
  • the second motion information encoding unit 1007 calls DistScaleFactor with reference to the reference table by tc ′ and tr ′ for each encoding block, and derives a scaled prediction vector according to the following equation (15). .
  • the block selection unit 1008 performs processing by scaling the reference first motion information 19a using Equation (12) when the reference first motion information 19a and the first motion information 18a refer to different reference frames.
  • the reference first motion information 19a may be used only when the reference frames referenced by the reference first motion information 19a and the first motion information 18a are the same without scaling. .
  • the reference second motion information 19b and the reference frame referred to by the 21st motion information 18b are different from each other, the reference second motion information 19b is processed by scaling using Equation (15).
  • the reference second motion information 19b may be used only when the reference frames referred to by the reference second motion information 19b and the second motion information 18b are the same without performing scaling.
  • an encoded block that is spatially or temporally separated from the encoding target block may be used as a peripheral block.
  • An example where coded blocks that are separated in time are used as peripheral blocks is shown in FIG. 13C.
  • Collocate block shown in FIG. 13C is a block in a reference frame spatially located at the same position as the encoding target block.
  • mvCol indicates the motion information held by the Collocate block
  • td indicates the time distance POC between the reference frame in which the Collocate block is located and the frame referenced by the Collocate block
  • tb refers to the encoding target frame and the encoding target block
  • a time distance (POC distance) from the reference frame is shown.
  • the reference first motion information 19a and the reference second motion information 19b are derived by proportionally distributing mvCol. Specifically, the horizontal component mvCol_x and the vertical component mvCol_y of mvCol are calculated according to Equation (16).
  • the second motion information encoding unit 1007 calls DistScaleFactor with reference to the reference table at tb and td for each encoding block, and derives a scaled prediction vector according to the following equation (17).
  • FIG. 13D shows an example of the relative position of the peripheral block and the index idx when the peripheral block in the time direction is used.
  • the motion information separation unit 1005 separates the received motion information 18 into first motion information 18a and second motion information 18b (step S3600).
  • the first motion information encoding unit 1006 converts the first motion information 18a into H.264, for example.
  • the encoding is performed in the same manner as in H.264 (step S3601).
  • Steps S3600 and S3601 perform the same processing as steps S1200 and S1201, respectively.
  • a threshold th for selecting the selected block in the subsequent process is derived (step S3602).
  • 13A and 13B is calculated and set to the threshold th.
  • This cost is calculated using any one of the above-described cost calculation methods such as Equation (6) and Equation (7).
  • the idth value is incremented by 1 until the peripheral block to which inter prediction is applied is found, and the above-described threshold th is derived.
  • the peripheral block may be excluded from the threshold value th derivation process.
  • the motion information array vec [] is initialized, and the number num stored in the motion information array is initialized to zero. Further, the reference first motion information 19a of the peripheral block used for threshold derivation is substituted into vec [0].
  • the block selection unit 1008 repeats the processing from step S3604 to step S3608 for each of the encoded peripheral blocks (step S3603).
  • the encoded peripheral blocks are pixel blocks adjacent to the encoding target block on the left, upper, upper right, upper left, and lower left as shown in FIG. 11A.
  • the relative position and index idx of the neighboring blocks are as shown in FIG. 11B.
  • Dx and dy in FIG. 11B indicate the horizontal component and the vertical component of the relative pixel position from the upper left pixel position in the encoding target block, respectively.
  • all the encoded pixel blocks adjacent to the encoding target block may be selected as the peripheral blocks.
  • the block selection unit 1008 determines whether or not unidirectional L1 prediction has been applied to the peripheral block corresponding to the index idx (step S3604).
  • the reference first motion information 19a does not exist, and the block selection unit 1008 refers to the reference frame referred to by the first motion information 18a. Is scaled to set the reference first motion information 19a.
  • the motion vector of the L1 motion information 19b of the peripheral block is MV_idx_L1
  • the scaled reference first motion information 19a (MV_idx_L0) is derived by performing the calculation shown in Equation (18).
  • tc indicates a time distance (POC distance) between the encoding target frame and the reference frame referred to by the first motion information 18a of the encoding target block
  • tr ′ The time distance between the reference frame including the selected block sel_idx and the reference frame referenced by the reference second motion information 19b of the selected block sel_idx is shown.
  • the second motion information encoding unit 1007 calls DistScaleFactor with reference to the reference table with tc and tr ′ for each encoding block, and derives a scaled prediction vector according to the following equation (19).
  • the block selection unit 1008 calculates a difference value between the first motion information 18a of the block to be encoded and the reference first motion information 19a of the neighboring block idx, as shown in Equation (6) or Equation (7).
  • the cost is calculated (step S3606).
  • the cost may be calculated by SAD or SSD using either the horizontal component or the vertical component of the motion vector. Furthermore, the cost may be calculated using the city distance, the Euclidean distance, or the Minkowski distance between the motion vector in the first motion information 18a of the block to be encoded and the motion vector in the reference first motion information 19a. I do not care. Furthermore, the cost may be calculated using a difference value of only the norm component or only the angle component of each vector.
  • step S3607 when the calculated cost cost is smaller than the threshold th (step S3607 is TRUE), the block selection unit 1008 substitutes the reference second motion information 19b of the neighboring block idx into the motion information array vec [] to obtain motion information. Is incremented by 1 (step S3608). If the calculated cost cost is greater than or equal to the threshold th (step S3607 is FALSE), step S3608 is skipped. Note that, when the peripheral block idx is unidirectional L0 prediction, the reference second motion information 19b does not exist, so the block selection unit 1008 uses the scaled reference first motion information 19a as a reference second motion information 19b. Set as. In this case, as shown in Expression (20), the reference second motion information 19b is scaled so as to refer to the reference frame referred to by the second motion information 18b.
  • tr indicates the time distance between the encoding target frame and the reference frame referred to by the reference first motion information 19a of the surrounding block, as shown in FIG. 14, and tc ′ is shown in FIG. As shown, the time distance (POC distance) between the encoding target frame and the reference frame referenced by the second motion information 18b of the encoding target block is shown.
  • the second motion information encoding unit 1007 calls DistScaleFactor with reference to the reference table with tc ′ and tr for each encoded block, and derives a scaled prediction vector according to the following equation (21).
  • the block selection unit 1008 may use a combination of the following two conditions in addition to the condition for determining whether or not the calculated cost cost is smaller than the threshold th. .
  • the process proceeds to step S3608, and the block selection unit 1008 adds the second reference block of the neighboring block idx to the motion information array vec []. The motion information 19b is substituted.
  • the norm of the reference first motion information 19a of the peripheral block idx is smaller than the threshold block motion information vec [0].
  • the threshold block motion information vec [0] and the reference first motion information 19a of the neighboring block idx are separated into horizontal components and vertical components, respectively, and compared, and the horizontal component and vertical components of the threshold block motion information vec [0] are compared. Both components are smaller than the horizontal component and the vertical component of the reference first motion information 19a of the peripheral block idx.
  • the block selection unit 1008 performs the calculation shown in Expression (15).
  • the first reference motion information 19a is scaled and stored in vec [].
  • step S3604 to step S3608 are completed for all the peripheral blocks (step S3609), the block selection unit 1008 uses the stored motion information vec [] and the stored number of motion information num to reference second motion information.
  • the predicted value of 19b is derived (step S3610).
  • num 1
  • the block selection unit 1008 sets the motion information stored in vec [0] as the predicted value of the reference second motion information 18b.
  • num the block selection unit 1008 derives a prediction value using Equation (22).
  • vec_x is a horizontal component of the motion information array vec []
  • vec_y is a vertical component of the motion information array vec [].
  • the block selection unit 1008 separates and sorts the motion information array vec [] into a horizontal component and a vertical component, and derives a predicted value using Equation (23).
  • the block selector 1008 Pred_L1_x and pred_L1_y are derived by a method indicated by H.264.
  • the second motion vector encoding unit 1007 encodes a difference value between the second motion information 18b of the block to be encoded and the predicted value derived in step S3611 (step S3611).
  • FIG. 16 shows a syntax structure used in the image encoding unit 100.
  • the syntax mainly includes three parts: a high level syntax 1601, a slice level syntax 1604, and a coding tree block level syntax 1607.
  • the high-level syntax 1601 includes syntax information of higher layers above the slice.
  • the slice level syntax 1604 includes information necessary for each slice, and the coding tree block level syntax 1607 is necessary for each coding tree block which is a unit of encoding represented by the macroblocks illustrated in FIGS. 7A to 7D. Data included.
  • the high level syntax 1601 includes sequence and picture level syntax such as a sequence parameter set syntax 1602 and a picture parameter set syntax 1603.
  • the slice level syntax 1604 includes a slice header syntax 1605, a slice data syntax 1606, and the like.
  • the coding tree block level syntax 1607 includes a coding tree block layer syntax 1608, a prediction unit syntax 1609, and the like.
  • FIG. 17 shows an example of the prediction unit syntax.
  • block prediction information (inter_partitioning_idc) for inter prediction is encoded.
  • inter_pred_idc [i] ref_idx_l0 [i] ref_idx_l1 [i] mvd_l0 [i] [0/1], and mvd_l1 [i] [0/1] included in the motion information 18 are encoded for each divided block i. It becomes.
  • inter_pred_idc [i] is a syntax indicating a prediction direction.
  • inter_pred_idc [i] indicates whether unidirectional prediction (List0 direction or List1 direction) or bidirectional prediction is applied.
  • ref_idx_l0 [i] is a syntax indicating the reference frame number included in the first motion information 18a.
  • ref_idx_l0 [i] is encoded when the number of reference frames in the List0 direction is 2 or more (num_ref_idx_l0_active_minus1> 0). Further, mvd_l0 [i] [0/1] is a syntax indicating the difference between the motion vector and the prediction vector in the first motion information 18a, and is calculated according to, for example, Expression (5).
  • ref_idx_l1 [i] is encoded when the number of reference frames in the List1 direction is 2 or more (num_ref_idx_l1_active_minus1> 0).
  • mvd_l1 [i] [0/1] is a syntax indicating the difference between the motion vector and the prediction vector in the second motion information 18b, and is calculated according to, for example, Equation (5).
  • syntax elements not defined in the present embodiment can be inserted between the rows of the syntax table shown in FIG. 17, or other conditional branch descriptions may be included.
  • the syntax table can be divided and integrated into a plurality of tables.
  • each syntax element described in the macroblock layer syntax may be changed as specified in the macroblock data syntax described later.
  • the encoding target block is a macroblock
  • the above-described encoding processing can be applied to an extended macroblock that performs motion compensation prediction by collectively combining a plurality of macroblocks.
  • the coding tree block layer syntax 1608 and the prediction unit syntax 1609 may be configured to have a recursive structure.
  • the block selection unit 1008 is not limited to the example of selecting one peripheral block with the lowest cost, and may select M types of peripheral blocks as the selected blocks in order of decreasing cost. In this case, the block selection unit 1008 selects peripheral blocks having different reference second motion information 19b.
  • the selected block information 20 indicating which block is selected as a selected block from the peripheral blocks is encoded by the second motion information encoding unit 1007.
  • FIG. 18 shows another example of the prediction unit syntax, and the prediction unit syntax includes syntax (mvp_idx_l1 [i]) related to the selected block information 20.
  • the syntax mvp_idx_l1 [i] is encoded when the number of selected blocks is two or more.
  • the block selection unit 1008 selects a peripheral block with the lowest cost as the selection block, and the second motion information encoding unit 1007 selects the motion vector in the reference second motion information 19b of the selected block.
  • the present invention is not limited to this, and when the minimum cost value is larger than a predetermined threshold, the second motion information encoding unit 1007 refers to the selected block. 2
  • the motion vector in the motion information 19b may not be used as a prediction vector. In this case, H.C.
  • a prediction vector can be generated by a prediction vector derivation method defined in H.264. H.
  • the median value of the motion vector in the reference second motion information 19b or the reference second motion of a predetermined peripheral block is generated as a prediction vector.
  • the block selection unit 1008 determines that the motion vector in the first motion information 18a of the encoding target block matches the motion vector in the reference first motion information 19a of the neighboring block. Only the peripheral block with the matching motion vector is selected as the selected block.
  • the second motion information encoding unit 1007 performs the above-described H.264.
  • the prediction vector of the encoding target block is derived by a prediction vector derivation method defined in H.264.
  • the motion information encoding unit 1003 has described an example in which the motion vector of the second motion information 18b is predicted and mvd_l1 that is the difference between the motion vector of the second motion information 18b and the prediction vector is encoded
  • the information encoding unit 1003 may not encode mvd_l1.
  • the motion vector of the second motion information 18b is the same as the prediction vector pred_mv_l1.
  • the prediction unit 101 derives a prediction vector from the reference second motion information assigned to the encoded peripheral block by the same method as the block selection unit 1008, and uses this prediction vector as the second motion.
  • the predicted image signal 11 of the encoding target block is generated using the vector.
  • FIG. 19 illustrates an example of the prediction unit syntax when the prediction vector mvd_l1 is not encoded.
  • the difference mvd_l0 related to the first motion information 18a may not be encoded.
  • the motion vector of the first motion information 18a is the same as the prediction vector pred_mv_l0. More specifically, the prediction unit 101 derives a prediction block from the reference first motion information assigned to the encoded peripheral block by the same method as the first motion information encoding unit 1006, and uses this prediction vector. Is used as the first motion vector to generate the predicted image signal 11 of the encoding target block.
  • step S1201 may be deleted from the flowchart of FIG.
  • this embodiment is H.264.
  • the present invention can also be applied to the case where the transform coefficient is not encoded as in the skip mode shown in H.264.
  • FIG. 20 schematically shows an image encoding device according to the second embodiment.
  • the image coding apparatus in FIG. 20 relates to intra prediction that performs prediction within a screen.
  • the difference between the image encoding apparatus of this embodiment and the image encoding apparatus of FIG. 1 will be described with reference to FIG. 20 includes an intra prediction unit 2001, a subtractor 102, a transform / quantization unit 103, an entropy coding unit 2003, an inverse quantization / inverse transform unit 105, an adder 106, a reference memory 2004, and an intra.
  • a prediction information memory 2002 is provided. That is, in the image coding unit 2000 in FIG.
  • the prediction unit 101 the frame memory 107, the motion information memory 108, and the entropy coding unit 104 in the image coding unit 100 in FIG.
  • the intra prediction unit 2001 receives the reference image signal 17 and generates the predicted image signal 11 and the intra prediction information 30 based on the reference image signal 17.
  • the reference memory 2004 holds the locally decoded image signal 16 related to the encoding target frame as a reference image signal 17.
  • the reference image signal 17 held in the reference memory 2004 is referred to by the intra prediction unit 2001 when the predicted image signal 11 of the next encoding target block is generated.
  • the intra prediction by the intra prediction unit 2001 includes intra unidirectional prediction and intra bidirectional prediction.
  • Intra unidirectional prediction One type of intra prediction mode is selected from the nine types of intra prediction modes defined in H.264, and the predicted image signal 11 is obtained in the selected prediction mode.
  • In the intra bi-directional prediction two kinds of intra prediction modes are selected from nine kinds of intra prediction modes, and the prediction image signal calculated from each intra prediction mode is weighted and averaged to obtain the final prediction image signal 11. Ask.
  • the intra prediction unit 2001 outputs information indicating the selected intra prediction mode as the intra prediction information 30 when performing prediction by intra unidirectional prediction.
  • the intra prediction unit 2001 outputs information indicating two types of intra prediction modes, that is, the first intra prediction information 30 a and the second intra prediction information 30 b as the intra prediction information 30 when performing prediction by intra bi-prediction. .
  • the intra prediction information 30 is sent to the entropy encoding unit 2003 and stored in the intra prediction information memory 2002 as reference intra prediction information.
  • FIG. 22 and 23 show examples of combinations of prediction information in intra bidirectional prediction.
  • FIG. 22 shows an example of a combination when the restriction that the second intra prediction information 30b is larger than the first intra prediction information 30a is imposed.
  • the first intra prediction information 30a takes any value from 0 to 7, and the second intra prediction information 30b has different values depending on the value of the first intra prediction information 30a. .
  • the 1st intra prediction information 30a is 0, the 2nd intra prediction information 30b can take the value of 1-8.
  • the second intra prediction information 30b takes a value of 8.
  • FIG. 23 illustrates an example of a combination when the restriction that the second intra prediction information 30b is smaller than the first intra prediction information 30a is imposed.
  • the predicted image signal p (x, y) at the pixel position (x, y) is calculated by the following mathematical formula (24).
  • p1 (x, y) indicates a predicted image signal at the pixel position (x, y) derived in the first intra prediction mode
  • p2 (x, y) is derived in the second intra prediction mode.
  • It is a prediction image signal of pixel position (x, y).
  • w (x, y) is a weighting factor of the pixel position (x, y)
  • S is the number of left shifts
  • R is a rounding offset value
  • M is the maximum value of the weighting factor.
  • the method of determining the weighting coefficient is described in, for example, “Intra-frame coding based on spatial bidirectional prediction” (Shionji et al., IEICE Transactions, Vol.J92-D, No.6, pp.843-853). It is shown.
  • the intra prediction information memory 2002 receives the intra prediction information 30 indicating the prediction mode applied to the encoding target block from the intra prediction unit 2001, and prepares for use in the entropy coding unit 2003. Temporarily stored as reference intra prediction information 31.
  • the entropy coding unit 2003 has the same function as the entropy coding unit 104 in FIG. 10, but includes an intra prediction information coding unit 2403 instead of the motion information coding unit 1003 as shown in FIG. Is different from the entropy encoding unit 104.
  • the entropy encoding unit 2003 receives the transform coefficient information 13 from the transform / quantization unit 103, receives the intra prediction information 30 from the intra prediction unit 2001, receives the reference intra prediction information 31 from the intra prediction information memory 2002, and further encodes the code.
  • the encoding control unit 150 receives encoding information such as prediction information and a quantization parameter.
  • the entropy coding unit 2003 performs entropy coding (for example, isometric coding, Huffman coding, arithmetic coding, etc.) on the transform coefficient information 13, the intra prediction information 30, and the coding parameters, and multiplexes these to perform coding. Generated data 14 is generated.
  • the encoding parameter includes all parameters necessary for decoding such as information regarding transform coefficients and information regarding quantization, as well as prediction information such as intra prediction information 30.
  • the entropy encoding unit 2003 includes an intra prediction information separation unit 2405, a first intra prediction information encoding unit 2406, a block selection unit 2407, and a second intra prediction information encoding unit 2408.
  • the prediction information 30 and the reference intra prediction information 31 are acquired, and the encoded data 14e and 14f regarding the intra prediction information are output.
  • the intra prediction information separation unit 2405 determines whether intra bi-directional prediction has been applied to the encoding target block. When the bi-directional prediction is not applied, the intra prediction information separation unit 2405 sends the intra prediction information 30 to the first intra prediction information encoding unit 2406 as the first intra prediction information 30a. The first intra prediction information encoding unit 2406 encodes the first intra prediction information 30a.
  • the intra prediction information separation unit 2405 separates and outputs the first intra prediction information 30a and the second intra prediction information 30b from the intra prediction information 30 (step S2501). ).
  • the first intra prediction information encoding unit 2408 encodes the first intra prediction information 30a and outputs encoded data 14c (step S2502).
  • For encoding the first intra prediction information 30a fixed-length encoding may be used, and prediction is performed using the reference intra prediction information 31 of the already-encoded neighboring blocks, and the prediction value and the first intra prediction are calculated. You may use the method of encoding the difference value with the information 30a.
  • step S2504 the processing from step S2504 is repeated on each of the encoded peripheral blocks (index idx) in order from the peripheral block with index idx being zero (step S2503).
  • the block selection unit 2407 determines whether intra bi-directional prediction has been applied to the neighboring block idx (step S2504). When intra bi-prediction is not applied, the neighboring block idx is excluded from the selection block candidates, and the operation proceeds to step S2507. If it is determined in step S2504 that intra bi-prediction has been applied, the reference intra prediction information of the neighboring block idx is separated into first intra prediction information 31a and second intra prediction information 31b (step S2505).
  • the block selection unit 2407 determines whether or not the first intra prediction information 30a of the block to be encoded matches the reference first intra prediction information 31a of the neighboring block idx (step S2506). If the first intra prediction information 30a and the reference first intra prediction information 31a do not match, the block selection unit 2407 increments the value of idx by 1 (step S2507), returns to step S2504, and processes the next encoded peripheral block Move on.
  • step S2509 when the 1st intra prediction information 30a and the reference 1st intra prediction information 31a correspond, it progresses to step S2509 and the block selection part 2407 selects the surrounding block idx as a selection block (step S2509).
  • the second intra prediction information encoding unit 2408 sets the reference second intra prediction of the selected block as a prediction value (step S2510), and encodes a difference value between the second intra prediction information and the prediction value ( Step S2511).
  • the second intra prediction information encoding unit 2408 encodes a flag (prev_intra_pred_l1_flag) indicating whether or not the second intra prediction information (IntraPredMode) 30b matches the reference second intra prediction (prev_intra_pred_mode) 31b. It does not matter.
  • prev_intra_pred_l1_flag indicates that the second intra prediction information 30b and the reference second intra prediction information 31b do not match
  • information indicating which prediction mode (rem_intra_pred_l1_mode) the second intra prediction information 30b is is encoded.
  • the second intra prediction information encoding unit 2408 obtains the prediction value. Without the calculation, the second intra prediction information 31b is encoded (step S2508). In this case, the second intra prediction information encoding unit 2408 performs fixed length encoding, or performs variable length encoding according to a value that the second intra prediction information 30b can take.
  • Entropy coding for example, isometric coding, Huffman coding, arithmetic coding, or the like
  • Entropy coding can be applied to these coding units 1001, 1002, and 2403.
  • the generated encoded data 14a, 14b, 14d, and 14e are multiplexed by the multiplexing unit 1004 and output as the encoded data 14.
  • FIG. 27 shows an example of the prediction unit syntax in the syntax structure used in the image encoding unit 2000.
  • the syntax structure used in the image encoding unit 2000 can be the same as the syntax structure shown in FIG.
  • the first intra prediction information 30a (intra_pred_mode_l0 [i]) of the encoding target block i is encoded.
  • intra prediction information 30a For encoding the first intra prediction information 30a, fixed-length encoding or variable-length encoding may be used, or prediction encoding may be performed using a prediction value calculated from an already encoded peripheral block. I do not care.
  • a flag (intra_bipred_flag [i]) indicating whether intra bi-prediction has been applied to the encoding target block i is encoded.
  • intra bidirectional prediction is applied to the encoding target block i (intra_bipred_flag [i] is TRUE)
  • the second intra prediction information 30b matches the prediction value (reference second intra prediction information 31b).
  • a flag (prev_intra_pred_l1_flag [i]) indicating whether or not the data is encoded is encoded.
  • mode information (rem_intra_luma_pred_l1_mode [i]) indicating which prediction mode is the second intra prediction information 30b among the remaining prediction modes is encoded.
  • FIG. 27 shows another example of the prediction unit syntax in the syntax structure used by the image encoding unit 2000.
  • a flag (intra_bipred_flag) indicating whether or not the prediction unit performs intra bi-prediction is encoded.
  • intra_bipred_flag is FALSE
  • H.H. Unidirectional prediction as defined in H.264 is performed. If (! Intra_bipred_flag) ⁇ in FIG.
  • the syntax of intra prediction defined in H.264 is shown as an example.
  • the first intra prediction information 30a and the second intra prediction information 30b are encoded.
  • the first intra prediction information 30a (intra_pred_mode_l0 [i]) is encoded.
  • the first intra-prediction information 30a includes a prediction value calculated from an already encoded peripheral block. And may be predictively encoded.
  • a flag (prev_intra_pred_l1_flag [i]) indicating whether or not the second intra prediction information 30b matches the predicted value (reference 2 intra prediction information 31b) is encoded.
  • mode information (rem_intra_luma_pred_l1_mode [i]) indicating which of the remaining prediction modes is the second intra prediction information 30b is encoded.
  • the image encoding device uses the first intra prediction information assigned to the encoding target block first. After that, the first intra prediction information is matched with the first intra prediction information assigned to the already encoded neighboring block, and the second intra prediction information of the matching neighboring block is used as a predicted value. Thus, the second intra prediction information of the encoding target block is predictively encoded. Therefore, according to the image coding apparatus according to the present embodiment, since it is possible to select an appropriate block used for prediction without additional information, it is possible to reduce the amount of code related to the second intra prediction information. Efficiency can be realized.
  • FIG. 28 illustrates an example of intra direction prediction.
  • Intra direction prediction As shown in H.264, the prediction value of the prediction target pixel is set by copying the luminance value of the already encoded reference pixel adjacent to the encoding target block. In this case, for example, prediction angle information (dx, dy in FIG. 28) is used as information indicating which reference pixel the prediction target pixel refers to.
  • This prediction angle information indicates that prediction is performed using a reference pixel existing at an angle indicated by a dx pixel in the horizontal direction and a dy pixel in the vertical direction with respect to a certain prediction target pixel. Each block is transmitted to the decoding side.
  • the prediction angle information dx and dy When the above concept is applied to the encoding of the prediction angle information dx and dy, the prediction angle information is separated into the horizontal component dx and the vertical component dy, and the vertical component dy of the prediction angle information is encoded first. Next, the vertical component dy of the predicted angle information is compared with the vertical component dy of the predicted angle information in the already encoded peripheral block, and the peripheral block with the smallest difference is selected as the selected block. When encoding the horizontal component dx of the prediction angle information, differential encoding is performed using the horizontal component dx of the prediction angle information held by the selected block as a prediction value.
  • the horizontal component dy may be encoded first, and then the vertical component dy may be predictively encoded.
  • the picture level weighted prediction shown in H.264 is applied to a finer area such as a macro block or a coding tree block, and the offset value o and the coefficient w can be switched in units of the macro block or the coding tree block.
  • the prediction signal is calculated according to the following equation (26).
  • MB is a macroblock set of predicted values before application of WP
  • MB ′ is a macroblock set of predicted values after application of WP.
  • WP information such as the offset value o and the coefficient w is transmitted to the decoding side in units of macroblocks.
  • the offset value o of the WP information is encoded first.
  • the offset value o of the encoding target block is compared with the offset value o in the already encoded peripheral block, and the peripheral block having the smallest difference is selected as the selected block.
  • differential encoding is performed using the coefficient w held by the selected block as a predicted value.
  • the coefficient w may be encoded first, and then the offset value o may be predictively encoded.
  • a method of encoding filter coefficient information used in the horizontal / vertical separation type adaptive loop filter according to the second modification of the first embodiment will be briefly described.
  • Filter coefficients in horizontal and vertical separation type adaptive loop filters as described in ⁇ JCTVC-A116.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11 ''
  • JCT-VC Joint Collaborative Team on Video Coding
  • a horizontal component w h and a vertical component w v are transmitted to the decoding side as filter coefficients.
  • the filter coefficient is predicted from the already encoded pictures having different time positions, and the difference is encoded.
  • the vertical component w v of the filter coefficient is encoded first. The next, and a vertical component w v of the filter coefficients of the encoding target picture, the vertical component w v of the filter coefficients of a plurality of coded pictures are compared, as the smallest encoded pictures is the difference selected picture Selected.
  • differential encoding is performed.
  • the vertical component w v of the filter coefficients has been described an example that is encoded previously, the horizontal component w h are encoded first, and then the vertical component w v is may be predictive coding.
  • FIG. 29 schematically shows an image decoding apparatus according to the third embodiment.
  • the image decoding apparatus includes an image decoding unit 2900, a decoding control unit 2950, and an output buffer 2910.
  • An image decoding apparatus according to the third embodiment corresponds to the image encoding apparatus according to the first embodiment. That is, the decoding process by the image decoding apparatus in FIG. 29 has a complementary relationship with the encoding process by the image encoding process in FIG.
  • the image decoding apparatus in FIG. 29 may be realized by hardware such as an LSI chip, or may be realized by causing a computer to execute an image decoding program.
  • 29 includes an encoded sequence decoding unit 2901, an inverse quantization / inverse transform unit 2902, an adder 2903, a frame memory 2904, a prediction unit 2905, and a motion information memory 2906.
  • encoded data 60 from a storage system or transmission system (not shown) is input to the encoded string decoding unit 2901.
  • the encoded data 60 corresponds to, for example, the encoded data 14 transmitted in a multiplexed state from the image encoding device in FIG.
  • the decoding control unit 2950 controls the entire decoding process of the image decoding unit 2900. Specifically, the decoding control unit 2950 receives, from the image decoding unit 2900, various information regarding the quantization decoded by the encoded sequence decoding unit 2901 and the feedback information 71, and converts the decoding control information 70 into the image. This is given to the decoding unit 2900.
  • a pixel block (for example, a macro block or a coding tree block indicating a coding unit) that is a decoding target is referred to as a decoding target block.
  • An image frame including a decoding target block is referred to as a decoding target frame.
  • the encoded string decoding unit 2901 performs decoding by syntax analysis based on the syntax for each frame or field. Specifically, the encoded sequence decoding unit 2901 sequentially performs variable-length decoding on the code sequence of each syntax, and decodes the transform coefficient information 61, the motion information 66, the decoding parameters related to the decoding target block, and the like.
  • the decoding parameter includes prediction information such as block size information and mode information. Details of the coded sequence decoding unit 2901 will be described later.
  • the decoding parameters include transform coefficient information 61, motion information 66, and prediction information, and include all parameters necessary for decoding such as information regarding transform coefficients and information regarding quantization. Prediction information, information on transform coefficients, and information on quantization are input to the decoding control unit 2950 as decoding control information 70.
  • the transform coefficient information 61 decoded by the encoded sequence decoding unit 2901 is sent to the inverse quantization / inverse transform unit 2902.
  • Various information relating to the quantization decoded by the encoded sequence decoding unit 2901, that is, the quantization parameter, the quantization matrix, and the like are given to the decoding control unit 2950, and when the inverse quantization is performed, the inverse quantization / inverse
  • the data is loaded into the conversion unit 2902.
  • the inverse quantization / inverse transform unit 2902 performs inverse quantization on the transform coefficient information 61 in accordance with the quantization information obtained from the decoding control unit 2950, and then performs inverse transform processing (for example, inverse discrete cosine transform).
  • the prediction error signal 62 is generated.
  • the inverse transformation process by the inverse quantization / inverse transformation unit 2902 in FIG. 29 is an inverse transformation of the transformation process by the transformation / quantization unit in FIG.
  • the inverse quantization / inverse transform unit 2902 executes the corresponding inverse quantization and inverse wavelet transform.
  • the prediction error signal 62 restored by the inverse quantization / inverse transform unit 2902 is sent to the adder 2903.
  • the adder 2903 adds a prediction error signal 62 and a prediction image signal 64 generated by a prediction unit 2905 described later to generate a decoded image signal 63.
  • the generated decoded image signal 63 is temporarily stored in the output buffer 2910 and then output according to the output timing managed by the decoding control unit 2950.
  • the decoded image signal 63 is stored as a reference image signal 65 in the frame memory 2904.
  • the reference image signal 65 is sequentially read from the frame memory 2904 for each frame or field and is input to the prediction unit 2905.
  • the prediction unit 2905 has the same function as the prediction unit 101 shown in FIG.
  • the prediction unit 2905 receives the reference image signal 65 from the frame memory 2904, and receives the decoded motion information 66 from the encoded sequence decoding unit 2901 described later.
  • the prediction unit 2905 performs motion compensation using the reference image signal 65 and the motion information 66 to generate a predicted image signal 64.
  • the predicted image signal 64 is sent to the adder 2903.
  • the motion information 66 is stored in the motion information memory 2906 for subsequent prediction processing and decoding processing on the decoding target block.
  • the prediction unit 2905 will be described in detail later.
  • the motion information memory 2906 has the same function as the prediction unit 101 shown in FIG.
  • the motion information 66 of the pixel block that has been decoded is temporarily stored as reference motion information 67.
  • FIG. 4 shows an example of the configuration of the motion information memory 2906.
  • the motion information 66 related to the decoded block is sequentially input to the motion information memory 2906 as reference motion information 67.
  • the motion information memory 2906 holds a plurality of frames of motion information having different decoding times.
  • the reference motion information 67 is held in the motion information frame 25 in a predetermined block unit, for example, a 4 ⁇ 4 pixel block unit or a pixel unit.
  • the motion information memory 2906 is not limited to the example in which the reference motion information 19 is stored in units of 4 ⁇ 4 pixel blocks, and the reference motion information 67 may be stored in units of other pixel blocks.
  • the pixel block unit that holds the reference motion information 67 may be one pixel or a 2 ⁇ 2 pixel block.
  • the shape of the pixel block that holds the reference motion information 67 is not limited to a square shape, and may be an arbitrary shape.
  • each part in the image decoding part 2900 shown in FIG. 29 is demonstrated in detail.
  • a plurality of prediction modes are prepared in the prediction unit 2905, and each prediction mode differs in the generation method of the predicted image signal 64 and the motion compensation block size.
  • the prediction unit 2905 generates the predicted image signal 64 in a broad manner. Specifically, intra prediction (intraframe) that generates a predicted image using the reference image signal 65 related to the decoding target frame (or field). Prediction) and inter prediction (interframe prediction) that generates a predicted image signal 64 using a reference image signal 65 related to one or more reference frames (reference fields).
  • the reference frame or reference field refers to an already decoded frame (or field) that can be referred to when the predicted image signal 64 is generated.
  • the prediction unit 2905 selectively switches between intra prediction and inter prediction, and generates a prediction image signal 64 of a decoding target block.
  • the prediction unit 2905 selectively switches between the inter prediction mode, the intra prediction mode, the direct mode, and the like so that the decoding cost described later is minimized.
  • the prediction image signal 64 may be generated by performing prediction.
  • Inter prediction by the prediction unit 2905 includes unidirectional prediction in which a prediction image is generated using one reference frame and bidirectional prediction (also referred to as bi-prediction) in which a prediction image is generated using two or more reference frames.
  • FIG. 30A shows an example of unidirectional prediction by the prediction unit 2905.
  • the prediction unit 2905 is included in the motion information 66 from a pixel block in the reference frame one frame before and at the same position as the decoding target block 73.
  • a predicted image signal 64 is generated using the reference image signal 65 of the pixel block (reference block) 74 at a position spatially shifted according to the motion vector.
  • the prediction unit 2905 identifies the position (coordinates) of the decoding target block 73 and the reference specified by the motion vector included in the motion information 66 of the decoding target block decoded by the encoded sequence decoding unit 2901.
  • the reference image signal 65 of block 74 is used to generate a predicted image signal 64.
  • motion compensation with small pixel accuracy (for example, 1/2 pixel accuracy, 1/4 pixel accuracy, 1/6 pixel accuracy, 1/8 pixel accuracy, etc.) is possible.
  • the filtering process By performing the filtering process, the value of the interpolation pixel is generated. For example, H.M. In H.264, it is possible to perform interpolation processing up to 1/4 pixel accuracy on the luminance signal.
  • the amount of motion vector information included in the motion information 66 is four times the integer pixel accuracy.
  • the reference frame two frames before may be used as shown in FIG. 30B, or Any frame that has already been decoded may be used.
  • the reference image signals 65 of a plurality of reference frames having different time positions are held, information indicating which time position the reference image signal 65 is generated from the reference image signal 65 is represented by a reference frame number.
  • the reference frame number is included in the motion information 66.
  • the reference frame number can be changed on an area basis (picture, block basis, etc.).
  • the prediction unit 2905 can generate the predicted image signal 64 using different reference frames for each pixel block.
  • the reference frame number of this area is set to 0, and when the reference frame two frames before is used for prediction, the reference frame number of this area Is set to 1.
  • the reference image signal 65 for only one frame is held in the frame memory 2904, that is, when the number of reference frames is 1, the reference frame number is always set to 0.
  • the prediction unit 2905 performs prediction using two or more types of motion information.
  • H.M. In H.264 as shown in FIGS. 31A and 31B, there is bidirectional prediction in which prediction is performed using two types of motion information 66.
  • the two types of motion information 66 used in bi-directional prediction correspond to the first motion information 66a and the second motion information 66b decoded by the coded sequence decoding unit 2901. These first and second motion information 66a and 66b are respectively H.264 and H.264. 264 corresponds to the motion information of List0 and List1.
  • the first motion information 66a and the second motion information 66b each include prediction information necessary for motion compensation, such as motion vector information, a reference frame number, and a reference frame position.
  • FIG. 31A shows an example of bidirectional prediction in which motion compensation is performed from both a temporally previous frame and a temporally subsequent frame.
  • the prediction unit 2905 acquires the first reference block 74a in the first reference frame (first reference image signal 65) using the first motion information 66a, and further uses the second motion information 66b to obtain the second reference frame.
  • the second reference block 74b in (second reference image signal 65) is acquired.
  • the first reference frame is a frame to be displayed before the decoding target frame
  • the second reference frame is a frame to be displayed after the decoding target frame.
  • the prediction unit 2905 generates a predicted image signal 64 based on bidirectional prediction by averaging or weighted averaging pixel values at the same position in the first reference block 74a and the second reference block 74b. This weighted average method is described in H.W. The same method as H.264 may be used.
  • both the first and second reference frames may be located in the past in time from the decoding target frame as shown in FIG. 31B. You may be located in the future. In this embodiment, the case where the number of motion information used for bidirectional prediction is two will be described. However, bidirectional prediction may be performed using three or more pieces of motion information. Furthermore, the first and second reference frames used in bi-directional prediction may be any frames that have already been decoded.
  • the prediction unit 2905 can select a block size suitable for a decoding target block from a plurality of motion compensation block sizes prepared in advance. That is, the prediction unit 2905 can divide the decoding target block into a plurality of small pixel blocks and perform motion compensation for each small pixel block.
  • 7A to 7C show the motion compensation block size in units of macroblocks
  • FIG. 7D shows the motion compensation block size in units of sub-blocks (that is, pixel blocks of 8 ⁇ 8 pixels or less). As shown in FIG.
  • the motion compensation block when the decoding target block is a 64 ⁇ 64 pixel block, the motion compensation block is a 64 ⁇ 64 pixel block, a 64 ⁇ 32 pixel block, a 32 ⁇ 64 pixel block, or a 32 ⁇ 32 pixel block. Etc. can be selected. Also, as shown in FIG. 7B, when the decoding target block is a 32 ⁇ 32 pixel block, the motion compensation block is a 32 ⁇ 32 pixel block, a 32 ⁇ 16 pixel block, a 16 ⁇ 32 pixel block, or a 16 ⁇ 16 block. A pixel block or the like can be selected. Further, as shown in FIG.
  • the motion compensation block when the decoding target block is a 16 ⁇ 16 pixel block, the motion compensation block is a 16 ⁇ 16 pixel block, a 16 ⁇ 8 pixel block, an 8 ⁇ 16 pixel block, or an 8 ⁇ 8 block. It can be set to a pixel block or the like. Furthermore, as shown in FIG. 7D, when the decoding target block is an 8 ⁇ 8 pixel block, the motion compensation block is an 8 ⁇ 8 pixel block, an 8 ⁇ 4 pixel block, a 4 ⁇ 8 pixel block, or a 4 ⁇ A 4-pixel block or the like can be selected.
  • the motion information 66 is stored for each small pixel block (for example, 4 ⁇ 4 pixel block) in the reference frame used for the inter prediction, the motion information 66 is optimized according to the local characteristics of the input image signal 10.
  • the motion compensation block shape and motion information 66 can be used. 7A to 7D can be arbitrarily combined (a collective term for the macroblocks and sub-macroblocks shown in H.264).
  • the decoding target block is the 64 ⁇ 64 pixel block shown in FIG. 7A
  • each block size shown in FIG. 7B is selected for each of the four 32 ⁇ 32 pixel blocks obtained by dividing the 64 ⁇ 64 pixel block.
  • a block of 64 ⁇ 64 to 16 ⁇ 16 pixels can be used hierarchically.
  • a block size of 64 ⁇ 64 to 4 ⁇ 4 can be used hierarchically.
  • the motion compensation block does not have to be square or rectangular as shown in FIGS. 8A to 8D.
  • the motion compensation block may be divided into small pixel blocks having asymmetric sizes.
  • the motion compensation block may be divided by a diagonal line.
  • the motion compensation block may be divided by an arbitrary line segment that divides the pixel block.
  • the motion compensation block may be divided by arcs (non-line segments).
  • the specific method for processing motion information is the same as that in the first embodiment, and thus the description thereof is omitted.
  • FIG. 32 is a block diagram showing the encoded string decoding unit 2901 in more detail.
  • the encoded sequence decoding unit 2901 separates the encoded data 60 into syntax units, and encodes data 60a including parameters related to the prediction block size and quantization, and encoded data related to transform coefficients. 60b, and a separation unit 3201 that outputs encoded data 60c and 60d related to motion information.
  • the encoded sequence decoding unit 2901 includes a parameter decoding unit 3202, a transform coefficient decoding unit 3203, and a motion information decoding unit 3204.
  • the encoded data 60a, 60b, 60c, and 60d in FIG. 32 correspond to the encoded data 14a, 14b, 14c, and 14d in FIG. 10, respectively.
  • the parameter decoding unit 3202 receives the encoded data 60a including the prediction block size and parameters related to quantization from the separating unit 3201, and decodes the encoded data 60a to generate control information 71.
  • the transform coefficient decoding unit 3203 receives encoded data 60b that is encoded transform coefficient information from the separation unit 3201, and decodes the encoded data 60b to generate transform coefficient information 61.
  • the motion information decoding unit 3204 receives the encoded data 60c and 60d related to the motion information and the reference motion information 67, and outputs the motion information 66. More specifically, the motion information decoding unit 3204 includes a first motion information decoding unit 3205, a second motion information decoding unit 3207, and a block selection unit 3206.
  • the first motion information decoding unit 3205 obtains first motion information 66a by decoding the encoded data 60c of the first motion information by a method corresponding to the first motion information encoding unit 1003 of FIG. More specifically, the first motion information decoding unit 3205 obtains a difference vector obtained by decoding the encoded data 60c and a prediction vector calculated from the reference motion information 67 of the peripheral blocks that have already been decoded.
  • the first motion information 66a is generated by addition.
  • a method for generating a prediction vector for example, H.264. There is a prediction method defined in H.264.
  • one of the reference motion information 67 of the pixels A, B, and C in the pixel block adjacent to the decoding target block is selected and used as a prediction vector of the decoding target block.
  • the block selection unit 3206 and the second motion information decoding unit 3207 are used when bi-directional prediction is applied to the decoding target block.
  • the block selection unit 3206 acquires the first motion information 66a and the reference motion information 67, selects a pixel block used for predictive decoding of the second motion information as a selected block, and outputs selected block information 80 indicating the selected block. To do.
  • the second motion information decoding unit 3207 acquires the selected block information 80 and the encoded data 60d of the second motion information, and obtains the reference motion information 66 of the peripheral block indicated by the selected block information 80 as a prediction vector. Subsequently, the second motion information decoding unit 3207 generates the second motion information 66b by adding the difference vector obtained by decoding the encoded data 60b of the second motion information and the prediction vector.
  • FIG. 33 schematically illustrates an operation of the motion information decoding unit 3204 when bi-directional prediction is applied to a decoding target block.
  • the first motion information decoding unit 3205 converts the encoded data 60c of the first motion information into, for example, H.264. Decoding is performed in the same manner as in H.264 (step S3301). In step S3301, for example, the first motion information decoding unit 3205 performs the H.264 operation.
  • the prediction vector (pred_L0_x, pred_L0_y) is derived by the same prediction method as H.264, and the prediction vector and the difference vector (mvd_l0 [0], mvd_l0 [1]) obtained by decoding the encoded data 60c are added.
  • the motion vector (MV_cur_L0_x, MV_cur_L1_x) of the first motion information 66a is obtained.
  • the first motion information decoding unit 3205 may derive a prediction vector from the decoded neighboring blocks and add the prediction vector and the difference vector.
  • the block selection unit 3206 substitutes the maximum value (MAX_INT) that can be taken as the initial value for the minimum cost (sel_cost) for selecting the selected block in the subsequent processing, and further sets the initial value for the optimal index (sel_idx) The value zero is substituted (step S3302).
  • the block selection unit 3206 repeats the processing from the next step S3304 to step S3308 for all the decoded peripheral blocks (step S3303).
  • a decoded peripheral block that is, a predicted pixel block that has been subjected to bi-prediction prior to the decoding target block is, as shown in FIG.
  • the pixel block is set adjacent to the upper, upper right, upper left, and lower left.
  • the relative position and the index idx of the neighboring blocks are as shown in FIG. 11B.
  • Dx and dy in FIG. 11B indicate the horizontal component and the vertical component of the relative pixel position from the upper left pixel position in the decoding target block, respectively.
  • all the decoded pixel blocks adjacent to the decoding target block may be selected as the peripheral blocks.
  • the relative positions of the peripheral blocks and the index idx shown in FIG. 13A are shown in FIG. 13B. If these peripheral blocks are out of the screen or undecoded area and cannot be referred to, or if they are encoded by intra prediction and have no motion information, these peripheral blocks are displayed in step S3303.
  • peripheral blocks shown in FIGS. 11A and 11B may be excluded from the processing target in step S3303.
  • a decoded block that is spatially or temporally separated from the decoding target block may be used as a peripheral block.
  • the block selection unit 3206 determines whether or not bi-directional prediction has been applied to the peripheral block corresponding to the index idx (step S3304). When the bi-directional prediction is not applied, this neighboring block is excluded from the selection block candidates, and the subsequent steps S3305 to S3308 are skipped.
  • the block selection unit 3206 separates the reference motion information 67 of the neighboring block idx into the reference first motion information and the reference second motion information (step S3305).
  • the block selection unit 3206 calculates a difference value between the first motion information 66a of the block to be decoded and the reference first motion information of the neighboring block idx, as in Equation (6), and calculates the cost (cost ).
  • the cost may be calculated by SSD (Sum of Square Deference) shown in the above formula (7).
  • the cost may be calculated by SAD or SSD using either the horizontal component or the vertical component of the motion vector. Further, the cost may be calculated using the city distance, the Euclidean distance, or the Minkowski distance between the motion vector in the first motion information 66a of the decoding target block and the motion vector in the reference first motion information 19a. I do not care.
  • the cost may be calculated using a difference value of only the norm component or only the angle component of each vector.
  • the block selection unit 3206 compares the calculated cost cost with the minimum cost sel_cost (step S3307).
  • the cost cost calculated in step S3306 is smaller than sel_cost, this cost is substituted for sel_cost, idx of this peripheral block is substituted for sel_idx, and sel_cost_ and sel_idx are updated (step S3308). If cost is greater than or equal to sel_cost, step S1208 is skipped.
  • the block selection unit 3206 selects the peripheral block corresponding to sel_idx as the selected block (step S3310), and The reference second motion information is determined as a prediction value (prediction vector) of the second motion information of the decoding target block (step S3311).
  • the second motion information decoding unit 3207 decodes the encoded data 60d to generate a difference vector, and adds the difference vector and the prediction vector as shown in Equation (27) below to add the second motion information.
  • a vector (MV_cur_L1_x, MV_cur_L1_y) is generated.
  • the difference vector (horizontal component mvd_l1 [0] and vertical component mvd_l1 [1]) is a syntax for decoding the second motion information shown in FIGS. Further, the vectors (pred_L1_x, pred_L1_y) indicate prediction vectors.
  • the motion information decoding unit 3204 decodes the first motion information 66a and the second motion information 66b.
  • Entropy decoding (for example, isometric decoding, Huffman decoding, or arithmetic decoding) can be applied to these decoding units 3202, 3203, and 3204.
  • FIG. 16 shows a syntax structure used in the image decoding unit 2900.
  • the syntax mainly includes three parts: a high level syntax 1601, a slice level syntax 1604, and a coding tree block level syntax 1607.
  • the high-level syntax 1601 includes syntax information of higher layers above the slice.
  • the slice level syntax 1604 includes information necessary for each slice, and the coding tree block level syntax 1607 is necessary for each coding tree block that is a unit of decoding represented by the macroblocks illustrated in FIGS. 7A to 7D. Data included.
  • the high level syntax 1601 includes sequence and picture level syntax such as a sequence parameter set syntax 1602 and a picture parameter set syntax 1603.
  • the slice level syntax 1604 includes a slice header syntax 1605, a slice data syntax 1606, and the like.
  • the coding tree block level syntax 1607 includes a coding tree block layer syntax 1608, a prediction unit syntax 1609, and the like.
  • FIG. 17 shows an example of the prediction unit syntax.
  • block prediction information (inter_partitioning_idc) for inter prediction is decoded.
  • inter_pred_idc [i] ref_idx_l0 [i] ref_idx_l1 [i] mvd_l0 [i] [0/1], mvd_l1 [i] [0/1] included in the motion information is decoded for each divided block i Is done.
  • inter_pred_idc [i] is a syntax indicating a prediction direction.
  • inter_pred_idc [i] indicates whether unidirectional prediction (List0 direction or List1 direction) or bidirectional prediction is applied.
  • ref_idx_l0 [i] is a syntax indicating a reference frame number included in the first motion information.
  • ref_idx_l0 [i] is decoded when the number of reference frames in the List0 direction is 2 or more (num_ref_idx_l0_active_minus1> 0). Also, mvd_l0 [i] [0/1] is a syntax indicating the difference between the motion vector and the prediction vector in the first motion information.
  • ref_idx_l1 [i] is decoded when the number of reference frames in the List1 direction is 2 or more (num_ref_idx_l1_active_minus1> 0).
  • syntax elements not defined in the present embodiment can be inserted between the rows of the syntax table shown in FIG. 17, or other conditional branch descriptions may be included.
  • the syntax table can be divided and integrated into a plurality of tables.
  • each syntax element described in the macroblock layer syntax may be changed as specified in the macroblock data syntax described later.
  • the decoding target block is a macroblock
  • the above-described decoding processing can be applied to an extended macroblock that performs motion compensation prediction by combining a plurality of macroblocks.
  • the coding tree block layer syntax 1608 and the prediction unit syntax 1609 may be configured to have a recursive structure.
  • the image decoding apparatus decodes the image encoded by the above-described image encoding apparatus according to the first embodiment. Therefore, the image decoding according to the present embodiment can reproduce a high-quality decoded image from relatively small encoded data.
  • the block selection unit 3206 is not limited to the example of selecting one peripheral block with the lowest cost, and may select M types of peripheral blocks as selection blocks in the order of decreasing cost. In this case, the block selection unit 3206 selects peripheral blocks with different assigned reference second motion information.
  • the selected block information 80 indicating which block is selected as a selected block from the peripheral blocks is decoded by the second motion information decoding unit 3207.
  • FIG. 18 shows another example of the prediction unit syntax, and this prediction unit syntax includes syntax (mvp_idx_l1 [i]) related to the selected block information 80.
  • the syntax mvp_idx_l1 [i] is decoded when the number of selected blocks is two or more.
  • the block selection unit 3206 selects a peripheral block with the lowest cost as the selected block
  • the second motion information decoding unit 3207 selects the motion vector in the reference second motion information of the selected block.
  • the present invention is not limited to this, and when the minimum cost value is larger than a predetermined threshold, the second motion information decoding unit 3207 refers to the selected block reference second
  • the motion vector in the motion information may not be used as the prediction vector.
  • a prediction vector can be generated by a prediction vector derivation method defined in H.264. H.
  • the median value of the motion vector in the reference second motion information or the reference second motion information of a predetermined peripheral block is generated as a prediction vector.
  • the block selection unit 3206 only when the motion vector in the first motion information of the decoding target block matches the motion vector in the reference first motion information of the neighboring blocks, A peripheral block having the same motion vector is selected as a selected block. If the motion vector in the reference first motion information of any of the neighboring blocks does not match the motion vector in the first motion information, the second motion information decoding unit 3207 determines that the above-described H.264 is not included.
  • the prediction vector of the decoding target block is derived by the prediction vector derivation method defined in H.264.
  • the motion information decoding unit 3204 predicts the motion vector of the second motion information and adds the decoded difference vector and the prediction vector to obtain mvd_l1
  • the motion information decoding unit 3204 , Mvd_l1 need not be decrypted.
  • the motion vector in the second motion information is the same as the prediction vector pred_mv_l1.
  • the prediction unit 2905 derives a prediction vector from the reference second motion information assigned to the decoded neighboring block by the same method as the block selection unit 3206, and uses this prediction vector as the second motion.
  • the prediction image signal 64 of the decoding target block is generated using the vector.
  • FIG. 19 illustrates an example of the prediction unit syntax when the encoded data 60d is not decoded.
  • the difference mvd_l0 related to the first motion information may not be decoded.
  • the motion vector of the first motion information is the same as the prediction vector pred_mv_l0.
  • the prediction unit 2905 derives a prediction block from the reference first motion information assigned to the decoded neighboring block by the same method as the first motion information decoding unit 3207, and this prediction vector Is used as the first motion vector to generate a predicted image signal 64 of the decoding target block.
  • step S3301 in the flowchart of FIG. 33 may be deleted.
  • this embodiment is H.264.
  • the present invention is also applicable to a case where transform coefficients are not decoded as in the skip mode shown in H.264.
  • FIG. 34 schematically shows an image decoding apparatus according to the fourth embodiment.
  • the image decoding apparatus includes an image decoding unit 3400, a decoding control unit 2950, and an output buffer 2910.
  • the image decoding apparatus according to the fourth embodiment corresponds to the image decoding apparatus according to the second embodiment. That is, the decoding process by the image decoding apparatus in FIG. 34 has a complementary relationship with the decoding process by the image decoding process in FIG.
  • the image decoding apparatus in FIG. 34 may be realized by hardware such as an LSI chip, or may be realized by causing a computer to execute an image decoding program.
  • the intra prediction unit 3405 receives the reference image signal 69 of the decoding target frame from the reference memory 3404, and generates the predicted image signal 64 and the intra prediction information 76 based on the reference image signal 69.
  • the reference memory 3404 holds a decoded image signal 63 related to the decoding target frame as a reference image signal 69.
  • Intra prediction by the intra prediction unit 3405 is H.264.
  • One intra prediction mode is selected from nine types of intra prediction modes defined by H.264, and intra unidirectional prediction for obtaining a predicted image signal 64 in the selected prediction mode, and nine types of intra prediction modes. This includes intra bi-prediction in which two types of intra prediction modes are selected, and the predicted image signal calculated from each intra prediction mode is weighted and averaged to obtain a final predicted image signal 64.
  • the intra-prediction unit 3405 outputs information indicating the selected intra-prediction mode as intra-prediction information 76 when prediction is performed by intra-unidirectional prediction.
  • the intra prediction unit 3405 outputs information indicating two types of intra prediction modes, that is, first intra prediction information and second intra prediction information as intra prediction information 76 when prediction is performed by intra bidirectional prediction.
  • the intra prediction information 76 is stored in the intra prediction information memory 3406 as reference intra prediction information 77.
  • FIG. 22 and 23 show examples of combinations of prediction information in intra bidirectional prediction.
  • FIG. 22 shows an example of a combination when the restriction that the second intra prediction information is larger than the first intra prediction information is imposed.
  • the first intra prediction information takes any value from 0 to 7, and the second intra prediction information has different values depending on the value of the first intra prediction information.
  • 1st intra prediction information is 0, 2nd intra prediction information can take the value of 1-8.
  • the second intra prediction information takes a value of 8.
  • FIG. 23 illustrates an example of a combination when the restriction that the second intra prediction information is smaller than the first intra prediction information is imposed.
  • the predicted image signal p (x, y) at the pixel position (x, y) is calculated by the above equation (24).
  • the intra prediction information memory 3406 receives the intra prediction information 76 indicating the prediction mode applied to the decoding target block from the intra prediction unit 3405 and prepares it as reference intra prediction information 77 for use in the coded sequence decoding unit 3401. Store temporarily.
  • the encoded sequence decoding unit 3401 shown in FIG. This is different from the encoded string decoding unit 2901.
  • the parameter decoding unit 3202 receives the encoded data 60a including the prediction block size and the parameters relating to the quantization from the separating unit 3201, and decodes the encoded data 60a to generate control information 71.
  • the transform coefficient decoding unit 3203 receives the encoded data 60b related to the transform coefficient from the separating unit 3201, and decodes the encoded data 60b to obtain transform coefficient information 61.
  • the intra prediction information decoding unit 3504 uses the reference intra prediction information 77 to decode the encoded data 60e and 60f related to the intra prediction information, and generates the intra prediction information 76. Specifically, the intra prediction information decoding unit 3504 includes a first intra prediction information decoding unit 3505, a second intra prediction information decoding unit 3507, and a block selection unit 3506.
  • the encoded data 60a, 60b, 60e, and 60f in FIG. 35 correspond to the encoded data 14a, 14b, 14e, and 14f in FIG.
  • the first intra prediction information decoding unit 3505 decodes the encoded data 60e by a method corresponding to the first intra prediction information encoding unit 2406 shown in FIG. 24 to generate the first intra prediction information 76a.
  • the block selection unit 3506 and the second intra prediction information decoding unit 3507 are used when intra bi-prediction is applied to the decoding target block.
  • the block selection unit 3506 acquires the first intra prediction information 76a and the reference intra prediction information 77 of the decoding target block, and outputs selected block information 80 indicating a pixel block used for predictive decoding of the second intra prediction information. .
  • the second intra prediction information decoding unit 3507 receives the selected block information 80 and the encoded data 60f related to the second intra prediction information.
  • the second intra prediction information decoding unit 3507 decodes the encoded data 60f to obtain a difference vector, and further derives a motion vector in the reference intra prediction information 77 of the pixel block indicated by the selected block information 80 as a prediction vector. To do.
  • the second intra prediction information decoding unit 3507 adds the difference vector and the prediction vector to generate second intra prediction information 76b.
  • the method of deriving the prediction vector used by the intra prediction information decoding unit 3504 for decoding the second intra prediction information 76b is the same as that described in the second embodiment, and the “code” of the flowchart shown in FIG. Detailed description is omitted because it is sufficient to read “decoding” as “decoding”.
  • the calculation process of the intra prediction information 76b (IntraPredMode) is described as the following mathematical formula (28) in the pseudo program code.
  • prev_intra_pred_l1_flag rem_intra_pred_l1_mode
  • prev_intra_pred_mode rem_intra_pred_l1_mode
  • FIG. 26 shows an example of the prediction unit syntax in the syntax structure used in the image decoding unit 3400.
  • the first intra prediction information 76a (intra_pred_mode_l0 [i]) of the decoding target block i is decoded.
  • the first intra prediction information 76a fixed-length decoding or variable-length decoding may be used, and the first intra-prediction information 76a is a prediction value calculated from a peripheral block that has already been decoded. Predictive decoding may be performed originally.
  • a flag (intra_bipred_flag [i]) indicating whether or not intra bi-prediction has been applied to the decoding target block i is decoded.
  • intra bidirectional prediction is applied to the decoding target block i (intra_bipred_flag [i] is TRUE)
  • the second intra prediction information 76b matches the prediction value derived from the reference 2 intra prediction information.
  • a flag (prev_intra_pred_l1_flag [i]) indicating whether or not the data is decoded is decoded.
  • mode information (rem_intra_luma_pred_l1_mode [i]) indicating which of the remaining prediction modes is the second intra prediction information 76b is further decoded.
  • FIG. 27 shows another example of the prediction unit syntax among the syntax structures used in the image decoding unit 3400.
  • the prediction unit first decodes a flag (intra_bipred_flag) indicating whether or not intra bi-prediction is performed.
  • intra_bipred_flag is FALSE
  • H.H. Unidirectional prediction as defined in H.264 is performed. If (! Intra_bipred_flag) ⁇ in FIG.
  • the syntax of intra prediction defined in H.264 is shown as an example.
  • the prediction unit When the prediction unit performs intra bi-prediction (intra_bipred_flag is TRUE), the first intra prediction information 30a and the second intra prediction information 30b are decoded.
  • the first intra prediction information 76a (intra_pred_mode_l0 [i]) is decoded.
  • the first intra-prediction information 76a includes a prediction value calculated from a peripheral block that has already been decoded. And may be predictively decoded.
  • a flag (prev_intra_pred_l1_flag [i]) indicating whether or not the second intra prediction information 76b matches a prediction value derived from the reference 2 intra prediction information is decoded.
  • prev_intra_pred_l1_flag [i] is FLASE
  • mode information (rem_intra_luma_pred_l1_mode [i]) indicating which prediction mode the second intra prediction information 30b is from among the remaining prediction modes is further decoded.
  • the image decoding apparatus decodes the image encoded by the image encoding apparatus according to the second embodiment described above. Therefore, the image decoding according to the present embodiment can reproduce a high-quality decoded image from relatively small encoded data.
  • FIG. 28 illustrates an example of intra direction prediction.
  • Intra direction prediction As shown in H.264, the prediction value of the prediction target pixel is set by copying the luminance value of the already decoded reference pixel adjacent to the decoding target block.
  • prediction angle information (dx, dy in FIG. 28) is used as information indicating which reference pixel the prediction target pixel refers to.
  • This prediction angle information indicates that prediction is performed using a reference pixel existing at an angle indicated by a dx pixel in the horizontal direction and a dy pixel in the vertical direction with respect to a certain prediction target pixel. Received from the code side for each block.
  • the prediction angle information dx and dy When the above concept is applied to the decoding of the prediction angle information dx and dy, the prediction angle information is separated into the horizontal component dx and the vertical component dy, and the vertical component dy of the prediction angle information is decoded first. Next, the vertical component dy of the prediction angle information is compared with the vertical component dy of the prediction angle information in the already decoded peripheral block, and the peripheral block having the smallest difference is selected as the selected block. When decoding the horizontal component dx of the prediction angle information, differential decoding is performed using the horizontal component dx of the prediction angle information held by the selected block as a prediction value.
  • the horizontal component dy may be decoded first, and then the vertical component dy may be predicted decoded.
  • the prediction angle information dx and dy When the above concept is applied to the decoding of the prediction angle information dx and dy, the prediction angle information is separated into the horizontal component dx and the vertical component dy, and only the vertical component dy of the prediction angle information is decoded first. Next, the vertical component dy of the decoding target block is compared with the vertical component dy of the prediction angle information in the already decoded peripheral block, and the peripheral block having the smallest difference is selected as the selected block. When decoding the horizontal component dx of the prediction angle information, differential decoding is performed using the horizontal component dx of the prediction angle information held by the selected block as a prediction value.
  • the decoding method of the prediction angle information which is another embodiment in intra prediction.
  • the vertical component dy is decoded first, but the horizontal component dx may be decoded first, and then the vertical component dy may be predicted decoded.
  • a method of decoding WP information used in MB level weighted prediction (WP) according to a first modification of the first embodiment will be briefly described.
  • the concept of the decoding method shown in the third embodiment is described in (JCTVC-A107.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11).
  • JCT-VC Joint Collaborative Team on Video Coding
  • the present invention can also be applied to decoding of WP information in Weighted Prediction at the macroblock (MB) level as shown.
  • the picture level weighted prediction shown in H.264 is applied to a finer area such as a macro block or a coding tree block, and the offset value o and the coefficient w can be switched in units of the macro block or the coding tree block.
  • the prediction signal is calculated according to the above equation (24).
  • WP information such as offset value o and coefficient w is received from the decoding side in units of macroblocks.
  • the offset value o of the WP information is decoded first.
  • the offset value o of the decoding target block is compared with the offset value o in the already decoded neighboring block, and the neighboring block having the smallest difference is selected as the selected block.
  • differential decoding is performed using the coefficient w held by the selected block as a predicted value.
  • the coefficient w may be decoded first, and then the offset value o may be predicted decoded.
  • a method of decoding filter coefficient information used in the horizontal / vertical separation type adaptive loop filter according to the second modification of the first embodiment will be briefly described.
  • Filter coefficients in horizontal and vertical separation type adaptive loop filters as described in ⁇ JCTVC-A116.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11 ''
  • JCT-VC Joint Collaborative Team on Video Coding
  • the vertical component w v of the filter coefficient is decoded first.
  • the vertical component w v of the filter coefficient of the picture to be decoded is compared with the vertical component w v of the filter coefficients of a plurality of decoded pictures, and the decoded picture having the smallest difference is selected as the selected picture. Selected.
  • differential decoding is performed.
  • the vertical component w v of the filter coefficients has been described an example that is decoded earlier, the horizontal component w h is decoded first, and then the vertical component w v is may be predictive decoding.
  • the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying constituent elements without departing from the scope of the invention in the implementation stage.
  • various inventions can be formed by appropriately combining a plurality of components disclosed in the embodiment. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, you may combine the component covering different embodiment suitably.
  • the processing target frame is divided into rectangular blocks such as 16 ⁇ 16 pixel blocks, and the pixel blocks from the upper left pixel block to the lower right pixel block as shown in FIG.
  • the encoding or decoding order is not limited to this example.
  • the encoding or decoding order may be an order from the lower right to the upper left of the screen or an order from the upper right to the lower left.
  • the encoding or decoding order may be a spiral order from the central part of the screen to the peripheral part, or an order from the peripheral part to the central part of the screen.
  • Motion information 19 Reference motion information, 20 Block selection information, 60 Encoded data, 61 Transform coefficient information, 62 Prediction error signal, 63 Decoded image signal, 64 Prediction image signal, 65 Reference image signal, 66 Motion Information: 67: Reference motion information, 80: Selected block information, 100: Image encoding unit, 101: Prediction unit, 102: Subtractor, 103: Transform / quantization unit, 104: Entropy encoding unit, 105: Inverse quantum Conversion unit, 106 ... adder, 107 ... frame memory, 108 ... motion information memory, 110 ... output buffer, 150 ... encoding control unit, 1001 ... parameter encoding unit, 10 2 ... transform coefficient encoding unit, 1003 ...
  • motion information encoding unit 1004 ... multiplexing unit, 1005 ... motion information separation unit, 1006 ... first motion information encoding unit, 1007 ... second motion information encoding unit, 1008 ... block selection unit, 2000 ... image coding unit, 2001 ... intra prediction unit, 2002 ... intra prediction information memory, 2003 ... entropy coding unit, 2004 ... reference memory, 2403 ... intra prediction information coding unit, 2405 ... intra prediction Information separation unit, 2406 ... first intra prediction information encoding unit, 2407 ... block selection unit, 2408 ... second intra prediction information encoding unit, 2900 ... image decoding unit, 2901 ... encoded sequence decoding unit, 2902 ... Inverse quantization / inverse transform unit, 2903 ...

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

 実施形態に係る画像符号化方法は、第1及び第2動きベクトルを用いた双予測により符号化対象ブロックを動き補償予測符号化する予測符号化ステップと、前記符号化対象ブロックの前記第1動きベクトルを符号化する第1動きベクトル符号化ステップと、を含む。この画像符号化方法は、前記符号化対象ブロックよりも先に双予測がなされた予測済画素ブロックから、前記符号化対象ブロックの前記第1動きベクトルに最も類似する第1動きベクトルを有する選択ブロックを選択する選択ステップと、前記符号化対象ブロックの前記第2動きベクトルと前記選択ブロックの第2動きベクトルとの差分ベクトルを符号化する第2動きベクトル符号化ステップと、をさらに含む。

Description

画像符号化方法及び画像復号化方法
 本発明の実施形態は、動画像のための符号化及び復号化方法に関する。
 近年、大幅に符号化効率を向上させた動画像符号化方法が、ITU-TとISO/IECとの共同で、ITU-T Rec. H.264及びISO/IEC 14496-10(以下、H.264という)として勧告されている。H.264では、予測処理、変換処理及びエントロピー符号化処理は、矩形ブロック単位(例えば、16×16画素ブロック単位、8×8画素ブロック単位など)で行われる。予測処理においては、符号化対象の矩形ブロック(符号化対象ブロック)に対して、既に符号化済みのフレーム(参照フレーム)を参照して時間方向の予測を行う動き補償が行われる。
 このような動き補償では、符号化対象ブロックと参照フレーム内の参照されるブロックとの空間的シフトを示す情報としての動きベクトルを含む動き情報を符号化して復号化側に送る必要がある。さらに、複数の参照フレームを用いて動き補償を行う場合、動き情報とともに参照フレーム番号も符号化する必要がある。このため、動き情報及び参照フレーム番号に関する符号量が増大する問題がある。
 動きベクトルを符号化する一例としてのH.264では、既に符号化済みのブロックに割り当てられている動きベクトルからメディアンベクトルを予測ベクトルとして導出し、動きベクトルと予測ベクトルとの差分値を符号化して、動きベクトルの符号量を低減している。
ITU-T SG16/Q.6 VCEG document VCEG-AC06
 本開示は、上記問題点を解決するためになされたものであり、符号化効率の高い画像符号化及び画像復号化方法を提供することを目的とする。
 実施形態に係る画像符号化方法は、第1及び第2動きベクトルを用いた双予測により符号化対象ブロックを動き補償予測符号化する予測符号化ステップと、前記符号化対象ブロックの前記第1動きベクトルを符号化する第1動きベクトル符号化ステップと、を含む。この画像符号化方法は、前記符号化対象ブロックよりも先に双予測がなされた予測済画素ブロックから、前記符号化対象ブロックの前記第1動きベクトルに最も類似する第1動きベクトルを有する選択ブロックを選択する選択ステップと、前記符号化対象ブロックの前記第2動きベクトルと前記選択ブロックの第2動きベクトルとの差分ベクトルを符号化する第2動きベクトル符号化ステップと、をさらに含む。
 他の実施形態に係る画像復号化方法は、第1及び第2動きベクトルを用いた双予測により動き補償予測復号化すべき復号化対象ブロックに関する第1動きベクトルと差分ベクトルとを含む符号化データを復号化する第1動きベクトル復号化ステップと、前記復号化対象ブロックよりも先に双予測がなされた予測済画素ブロックから、前記復号化対象ブロックの前記第1動きベクトルに最も類似する第1動きベクトルを有する選択ブロックを選択する選択ステップと、を含む。この画像復号化方法は、前記復号化対象ブロックの前記差分ベクトルと前記選択ブロックの第2動きベクトルとを加算して前記復号化対象ブロックの第2動きベクトルを復号化する第2動きベクトル復号化ステップと、前記第1動きベクトルと前記第2動きベクトルを用いた双予測により、前記復号化対象ブロックを動き補償予測復号化する予測復号化ステップと、をさらに含む。
第1の実施形態に係る画像符号化装置を概略的に示すブロック図である。 図1の画像符号化部による符号化の処理単位であるマクロブロックのサイズの一例を示す模式図である。 図1の画像符号化部による符号化の処理単位であるマクロブロックのサイズの他の例を示す模式図である。 図1の画像符号化部が符号化対象フレーム内の画素ブロックを符号化する順序を示す図である。 図1の動き情報メモリの一例を示す図である。 図1の予測部が実行するインター予測処理の一例を示す図である。 図1の予測部が実行するインター予測処理の他の例を示す図である。 図1の予測部が実行するインター双方向予測処理の一例を示す図である。 図1の予測部が実行するインター双方向予測処理の他の例を示す図である。 インター予測処理に使用される動き補償ブロックのサイズの一例を示す図である。 インター予測処理に使用される動き補償ブロックのサイズの他の例を示す図である。 インター予測処理に使用される動き補償ブロックのサイズのさらに他の例を示す図である。 インター予測処理に使用される動き補償ブロックのサイズのさらにまた他の例を示す図である。 インター予測処理に使用される動き補償ブロックの分割方法の一例を示す図である。 インター予測処理に使用される動き補償ブロックの分割方法の他の例を示す図である。 インター予測処理に使用される動き補償ブロックの分割方法のさらに他の例を示す図である。 インター予測処理に使用される動き補償ブロックの分割方法のさらにまた他の例を示す図である。 図1の予測部による動き補償処理において利用可能な少数画素精度の補間処理を説明するための図である。 図1のエントロピー符号化部を概略的に示すブロック図である。 動き情報の予測に用いる符号化済みの周辺ブロックの他の一例を示す図である。 図11Aに示した符号化済みの周辺ブロックの位置を示す図である。 図10の動き情報符号化部の動作の一例を示すフローチャートである。 動き情報の予測に用いる符号化済みの周辺ブロックの他の例を示す図である。 図13Aに示した符号化済みの周辺ブロックの位置を示す図である。 動き情報の予測に用いる符号化済みの周辺ブロックのさらに他の例を示す図である。 図13Cに示した符号化済みの周辺ブロックの位置を示す図である。 参照動き情報の動きベクトルのスケーリングを説明するための図である。 予測ベクトルのスケーリングを説明するための図である。 第1の実施形態に係るシンタクス構造の一例を概略的に示すブロック図である。 図15に示したプレディクションユニットシンタクスの一例を示す図である。 図15に示したプレディクションユニットシンタクスの他の例を示す図である。 図15に示したプレディクションユニットシンタクスのさらに他の例を示す図である。 第2の実施形態に係る画像符号化装置を概略的に示すブロック図である。 図20のイントラ予測情報メモリが保持するイントラ予測情報の一例を示す図である。 イントラ双方向予測で使用される2種類の単方向予測モードの組み合わせの一例を示す図である。 イントラ双方向予測で使用される2種類の単方向予測モードの組み合わせの他の例を示す図である。 図20のエントロピー符号化部を概略的に示すブロック図である。 図24に示したイントラ予測情報符号化部の動作の一例を示すフローチャートである。 第2の実施形態に係るプレディクションユニットの一例を示す図である。 第2の実施形態に係るプレディクションユニットの他の例を示す図である。 イントラ方向予測の予測方向パラメータを示す図である。 第3の実施形態に係る画像復号化装置を概略的に示すブロック図である。 図29の予測部が実行するインター予測処理の一例を示す図である。 図29の予測部が実行するインター予測処理の他の例を示す図である。 図29の予測部が実行するインター双方向予測処理の一例を示す図である。 図29の予測部が実行するインター双方向予測処理の他の例を示す図である。 図29の符号化列復号化部を概略的に示すブロック図である。 図32に示した符号化列復号化部の動作の一例を示すフローチャートである。 第4の実施形態に係る画像復号化装置を概略的に示すブロック図である。 図34の符号化列復号化部を概略的に示すブロック図である。 図10の動き情報符号化部の動作の他の例を示すフローチャートである。
 以下、必要に応じて図面を参照しながら、実施形態に係る画像符号化方法及び装置並びに画像復号化方法及び装置を説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
 (第1の実施形態) 
 図1は、第1の実施形態に係る画像符号化装置を概略的に示している。この画像符号化装置は、図1に示されるように、画像符号化部100、符号化制御部150及び出力バッファ110を備えている。図1の画像符号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像符号化プログラムを実行させることにより実現されても構わない。
 図1において、動画像又は静止画像の入力画像信号10は、所定の処理単位に分割されたうえで画像符号化部100に入力される。画像符号化部100は、後に詳細に説明するように、入力画像信号10を圧縮符号化して、符号化データ14を生成する。生成された符号化データ14は、出力バッファ110に一時的に格納され、その後、符号化制御部150が管理する出力タイミングで、図示しない蓄積系(蓄積メディア)又は伝送系(通信回線)へ送出される。
 符号化制御部150は、発生符号量のフィードバック制御、量子化制御、予測モード制御及びエントロピー符号化制御といった画像符号化部100の符号化処理全般を制御する。具体的には、符号化制御部150は、符号化制御情報50を画像符号化部100に与え、画像符号化部100からフィードバック情報51を適宜受け取る。符号化制御情報50には、予測情報、動き情報18及び量子化パラメータ情報などが含まれる。予測情報は、予測モード情報及びブロックサイズ情報を含む。動き情報18は、動きベクトル情報、参照フレーム番号及び予測方向情報(単方向予測及び双方向予測のいずれを使用して予測を行ったかを示す情報)を含む。量子化パラメータ情報は、量子化幅(量子化ステップサイズ)及び量子化マトリクスなどの量子化パラメータを含む。フィードバック情報51は、画像符号化部100での発生符号量を含み、例えば、量子化パラメータを決定するために使用される。
 画像符号化部100は、所定の画素ブロック(例えば、コーディングツリーブロック、マクロブロック、サブブロック、1画素など)を処理単位として、入力画像信号10を符号化する。このため、入力画像信号10は、原画像信号を分割した画素ブロック単位で画像符号化部100へ順次に入力される。本実施形態では、特に断りのない限り、符号化の処理単位をマクロブロックとし、また、符号化処理の対象になっている画素ブロック(マクロブロック)を符号化対象ブロックと称す。さらに、符号化対象ブロックを含む画像フレーム、即ち、符号化処理の対象になっている画像フレームを符号化対象フレームと称す。
 このような符号化対象ブロックは、例えば、図2Aに示すような16×16画素ブロックであってもよく、図2Bに示すような64×64画素ブロックであっても構わない。なお、符号化対象ブロックは、図2A及び図2Bに示されるマクロブロックの例に限らず、128×128画素ブロック、32×32画素ブロック、8×8画素ブロックなどであっても構わない。また、マクロブロックの形状は、図2A及び図2Bに示されるような正方形状の例に限らず、矩形状などの任意形状に設定されても構わない。さらに、上記処理単位は、マクロブロックのような画素ブロックに限らず、フレーム又はフィールドであっても構わない。
 なお、符号化対象フレーム内の各画素ブロックに対する符号化処理は、いかなる順序で実行されても構わない。例えば、符号化のスキャン順は、ラスタスキャン、ラインスキャン又はZスキャン順とすることができる。本実施形態では、説明を簡単にするために、図3に示すように、ラスタスキャン順に、即ち、符号化対象フレームの左上の画素ブロックから右下の画素ブロックに向かって一行毎に、符号化処理が実行されるものとする。
 図1に示した画像符号化部100は、予測部101、減算器102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、加算器106、フレームメモリ107及び動き情報メモリ108を備えている。
 画像符号化部100内では、入力画像信号10は、減算器102へ入力される。減算器102は、入力画像信号10を受け取るとともに、後述する予測部101から予測画像信号11を受け取る。減算器102は、入力画像信号10と予測画像信号11との差分を算出して、予測誤差画像信号12を生成する。
 変換・量子化部103は、減算器102から予測誤差画像信号12を受け取り、受け取った予測誤差画像信号12に対して変換処理を施して、変換係数を生成する。変換処理は、例えば、離散コサイン変換(DCT:Discrete Cosine Transform)等の直交変換である。他の実施形態では、変換・量子化部103は、離散コサイン変換に代えて、ウェーブレット変換及び独立成分解析などの手法を利用して、変換係数を生成しても構わない。さらに、変換・量子化部103は、符号化制御部150によって与えられた量子化パラメータに従って、生成した変換係数を量子化して、量子化された変換係数に関する情報である変換係数情報13を生成する。変換係数情報13は、エントロピー符号化部104及び逆量子化・逆変換部105へ送られる。
 逆量子化・逆変換部105は、符号化制御部150によって与えられた量子化パラメータ、即ち、変換・量子化部103と同じ量子化パラメータに従って、変換係数情報13に含まれる量子化された変換係数を逆量子化する。続いて、逆量子化・逆変換部105は、逆量子化された変換係数に対して逆変換を施して、復号予測誤差信号15を生成する。逆量子化・逆変換部105による逆変換処理は、変換・量子化部103による変換処理の逆変換処理に一致する。例えば、逆変換処理は、逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)又は逆ウェーブレット変換などである。
 加算器106は、逆量子化・逆変換部105から復号予測誤差信号15を受け取り、さらに、予測部101から予測画像信号11を受け取る。加算器106は、復号予測誤差信号15と予測画像信号11とを加算して、局所復号画像信号16を生成する。生成された局所復号画像信号16は、フレームメモリ107に参照画像信号17として格納される。フレームメモリ107には、例えば、フレーム単位で参照画像信号17が記憶される。フレームメモリ107に格納されている参照画像信号17は、予測部101による予測画像信号11の生成の際に、予測部101によって読み出されて参照される。
 予測部101は、フレームメモリ107から参照画像信号17を読み出す。予測部101は、参照画像信号17に基づいて所定の予測処理を行って予測画像信号11及び動き情報18を生成する。一例として、予測部101は、参照画像信号17に基づいて、符号化対象ブロックに割り当てるべき動き情報18を生成し、そして、生成した動き情報18に基づいて動き補償を行って予測画像信号11を生成する。他の例では、予測部101は、符号化対象ブロックの周辺に位置する符号化済みの画素ブロックに割り当てられている参照動き情報19を、後述する動き情報メモリ108から取得する。続いて、予測部101は、取得した参照動き情報19に基づいて符号化対象ブロックに割り当てるべき動き情報18を導出し、導出した動き情報18を使用して動き補償を行って予測画像信号11を生成する。生成された予測画像信号11は、減算器102及び加算器106へ送られる。生成された動き情報18は、エントロピー符号化部104へ送られるとともに、後に符号化する画素ブロックの予測処理のために、参照動き情報19として動き情報メモリ108に格納される。予測部101については、後に詳細に説明する。
 動き情報メモリ108には、符号化済みの画素ブロックの動き情報18が参照動き情報19として一時的に格納される。図4には、動き情報メモリ108の構成の一例が示されている。動き情報メモリ108には、符号化済みの画素ブロックに関する動き情報18が順次入力され、例えばフレーム毎に、保持される。その結果、動き情報メモリ108は、符号化時間の異なる複数の動き情報フレーム25を保持している。参照動き情報19は、所定のブロック単位、例えば、4×4画素ブロック単位で動き情報フレーム25内に保持される。予測部101が16×16画素ブロックで予測を行った場合、符号化対象ブロックの位置に対応する全ての(16個の)4×4画素ブロックには同一の動き情報18がコピーされる。
 なお、動き情報メモリ108は、4×4画素ブロック単位で参照動き情報19を保持する例に限らず、他の画素ブロック単位で参照動き情報19を保持しても構わない。例えば、参照動き情報19を保持する画素ブロック単位は、1画素であってもよく、2×2画素ブロックであっても構わない。また、参照動き情報19を保持する画素ブロックの形状は、正方形状の例に限らず、任意形状とすることができる。
 エントロピー符号化部104は、変換・量子化部103から変換係数情報13を受け取り、予測部101から動き情報18を受け取り、動き情報メモリ108から参照動き情報19を受け取り、さらに、符号化制御部150から、予測情報及び量子化パラメータなどを含む符号化パラメータを受け取る。エントロピー符号化部104は、変換係数情報13、動き情報18及び符号化パラメータをエントロピー符号化(例えば、等長符号化、ハフマン符号化又は算術符号化など)し、これらを多重化して符号化データ14を生成する。符号化パラメータは、動き情報18などの予測情報とともに、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。エントロピー符号化部104については、後に詳細に説明する。
 エントロピー符号化部104で生成された符号化データ14は、出力バッファ110に一時的に格納され、その後に、図示しない蓄積系又は伝送系へ送出される。
 次に、図1に示す画像符号化部100内の各部をより詳細に説明する。 
 予測部101には、複数の予測モードが用意されており、各予測モードでは、予測画像信号11の生成方法及び動き補償ブロックサイズが互いに異なる。予測部101が予測画像信号11を生成する方法としては、具体的には大きく分けて、符号化対象フレーム(又は、符号化対象フィールド)に関する参照画像信号17を用いて予測画像を生成するイントラ予測(フレーム内予測ともいう)と、1以上の参照フレーム(又は、参照フィールド)に関する参照画像信号17を用いて予測画像を生成するインター予測(フレーム間予測ともいう)とがある。ここで、参照フレーム(又は、参照フィールド)は、予測画像信号を生成する際に参照可能な既に符号化済みのフレーム(又は、フィールド)を指す。予測部101は、イントラ予測及びインター予測を選択的に切り替えて、符号化対象ブロックの予測画像信号11を生成する。
 なお、本実施形態では、インター予測について詳細に説明するが、予測部101は、例えば後述する符号化コストが最小になるように、インター予測モード、イントラ予測モード及びダイレクトモードなどを選択的に切り替えて予測を行い、予測画像信号11を生成しても構わない。
 予測部101によるインター予測は、1つの参照フレームを利用して予測画像を生成する単方向予測、及び2以上の参照フレームを利用して予測画像を生成する双方向予測(双予測ともいう)を含む。図5Aは、予測部101による単方向予測の一例を示している。単方向予測では、予測部101は、図5Aに示されるように、1フレーム前の参照フレーム内の画素ブロックであって、符号化対象ブロックと同じ位置の画素ブロックから、符号化対象ブロックに割り当てられた動き情報18に含まれる動きベクトルに応じて空間的にシフトした位置にある画素ブロック(参照ブロック)24の参照画像信号17を使用して、予測画像信号11を生成する。即ち、単方向予測では、予測部101は、符号化対象ブロックの位置(座標)と動き情報18に含まれる動きベクトルとで特定される参照ブロック24の参照画像信号17を使用して、予測画像信号11を生成する。一例として、予測部101は、参照動きメモリ108から参照動き情報19を取得し、取得した参照動き情報19に基づいて符号化対象ブロックの動き情報18を生成する。予測部101が取得する参照動き情報19は、符号化対象フレーム内の画素ブロックの動き情報であってもよく、符号化対象フレームとは異なる既に符号化済みの他のフレーム内の画素ブロックの動き情報であっても構わない。
 単方向予測では、分数画素精度(例えば、1/2画素精度、1/4画素精度、1/6画素精度、1/8画素精度など)の動き補償が可能であり、参照画像信号17に対してフィルタリング処理を行うことによって、補間画素の値が生成される。例えば、H.264では、輝度信号に対して1/4画素精度までの補間処理が可能である。1/4画素精度の動き補償を行う場合、動き情報18に含まれる動きベクトルの情報量は、整数画素精度の4倍となる。
 なお、単方向予測では、図5Aに示されるような1フレーム前の参照フレームを使用する例に限らず、図5Bに示されるように、2フレーム前の参照フレームが使用されてもよく、或いは、既に符号化済みのいずれのフレームが使用されても構わない。時間位置が異なる複数の参照フレームの参照画像信号17が保持されている場合、どの時間位置の参照画像信号17から予測画像信号11を生成したかを示す情報は、参照フレーム番号で表される。参照フレーム番号は、動き情報18に含まれる。参照フレーム番号は、領域単位(ピクチャ、ブロック単位など)で変更することができる。例えば、予測部101は、画素ブロック毎に異なる参照フレームを使用して予測画像信号11を生成することができる。一例として、1フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、0に設定され、また、2フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、1に設定される。他の例として、1フレーム分だけの参照画像信号17がフレームメモリ107に保持されている場合、即ち、参照可能なフレームの数が1である場合、参照フレーム番号は、常に0に設定される。
 双方向予測では、予測部101は、2種類以上の動き情報18を利用して予測を行う。例えば、H.264には、図6A及び図6Bに示されるように、2種類の動き情報18を利用して、予測を行う双方向予測がある。双方向予測で利用される2種類の動き情報18を第1動き情報18a及び第2動き情報18bと称する。これらの第1及び第2動き情報18a、18bは、夫々、H.264におけるList0及びList1の動き情報に相当する。第1動き情報18a及び第2動き情報18bは、夫々、動きベクトル情報、参照フレーム番号、参照フレーム位置などの動き補償に必要な情報を含む。
 図6Aは、時間的に前のフレーム及び時間的に後のフレームの両方から動き補償を行う双方向予測の一例を示している。図6Aに示す双方向予測を行う場合、符号化するフレームの順序を入れ替えて、符号化対象フレームより後に表示すべきフレームが、符号化対象フレームに先行して符号化される。予測部101は、第1動き情報18aを用いて第1参照フレーム(第1参照画像信号17)内の第1参照ブロック24aを取得し、さらに、第2動き情報18bを用いて第2参照フレーム(第2参照画像信号17)内の第2参照ブロック24bを取得する。図6Aの例では、第1参照フレームは、符号化対象フレームより先に表示すべきフレームであり、第2参照フレームは、符号化対象フレームより後に表示すべきフレームである。続いて、予測部101は、第1参照ブロック24a及び第2参照ブロック24bの同一位置の画素値を平均若しくは加重平均することで、双方向予測による予測画像信号11を生成する。この加重平均の方法は、H.264と同一の方法を用いても構わない。
 このように、双方向予測が適用された場合、動き情報18は、2種類の動き情報、即ち、第1及び第2動き情報18a及び18bを含み、従って、双方向予測が適用された画素ブロックの参照動き情報19は、2種類の参照動き情報、即ち、参照第1動き情報19a及び参照第2動き情報19bを含む。
 なお、第1及び第2参照フレームの両方は、図7Bに示されるように、符号化対象フレームより時間的に過去に位置してもよく、或いは、図示されないが、符号化対象フレームより時間的に未来に位置しても構わない。また、本実施形態では、双方向予測に利用する動き情報の数が2である場合を説明するが、3以上の動き情報を利用して双方向予測が行われても構わない。さらに、双方向予測で使用される第1及び第2参照フレームは、既に符号化済みフレームであれば、いずれのフレームであっても構わない。
 さらに、インター予測では、予測部101は、予め用意される複数の動き補償ブロックサイズの中から符号化対象ブロックに適したブロックサイズを選択することができる。即ち、予測部101は、符号化対象ブロックを複数の小画素ブロックに分割し、小画素ブロック毎に動き補償を行うことができる。図7Aから図7Cは、マクロブロック単位の動き補償ブロックサイズを示し、図7Dは、サブブロック(即ち、8×8画素以下の画素ブロック)単位の動き補償ブロックサイズを示す。図7Aに示されるように、符号化対象ブロックが64×64画素ブロックである場合、動き補償ブロックとして、64×64画素ブロック、64×32画素ブロック、32×64画素ブロック又は32×32画素ブロックなどが選択されることができる。また、図7Bに示されるように、符号化対象ブロックが32×32画素ブロックである場合、動き補償ブロックとして、32×32画素ブロック、32×16画素ブロック、16×32画素ブロック又は16×16画素ブロックなどが選択されることができる。さらに、図7Cに示されるように、符号化対象ブロックが16×16画素ブロックである場合、動き補償ブロックは、16×16画素ブロック、16×8画素ブロック、8×16画素ブロック又は8×8画素ブロックなどに設定されることができる。さらにまた、図7Dに示されるように、符号化対象ブロックが8×8画素ブロックである場合、動き補償ブロックは、8×8画素ブロック、8×4画素ブロック、4×8画素ブロック又は4×4画素ブロックなどが選択されることができる。
 前述したように、インター予測に使用する参照フレーム内の小画素ブロック(例えば、4×4画素ブロック)毎に動き情報18が保存されているので、入力画像信号10の局所的な性質に従って、最適な動き補償ブロックの形状及び動き情報18を利用することができる。また、図7Aから図7Dの動き補償ブロック(H.264に示されるマクロブロック及びサブマクロブロックをまとめた総称)を任意に組み合わせることができる。符号化対象ブロックが図7Aに示される64×64画素ブロックである場合、64×64画素ブロックを分割した4つの32×32画素ブロックの各々に対して、図7Bに示す各ブロックサイズを選択することで、階層的に64×64~16×16画素のブロックを利用することができる。同様にして、図7Dに示されるブロックサイズまで選択可能とする場合、階層的に64×64~4×4のブロックサイズを利用することができる。
 なお、動き補償ブロックは、図8Aから図8Dに示されるように、正方形又は矩形状でなくても構わない。一例として、図9Aに示すように、動き補償ブロックが非対称の大きさの小画素ブロックに分割されても構わない。また、図9Bに示すように、動き補償ブロックは、対角線で分割されても構わない。さらに、図9Cに示すように、動き補償ブロックは、画素ブロックを分割する任意の線分で分割されても構わない。さらにまた、図9Dに示すように、動き補償ブロックは、円弧(非線分)で分割されても構わない。
 これらの動き補償ブロックの分割方法は、上述したように複数用意されており、予測部101は、下記数式(1)に示すコスト式によって導出される符号化コストが最小になるような動き補償ブロックサイズを選択する。
Figure JPOXMLDOC01-appb-M000001
 ここで、Jは符号化コストを示し、Dは入力画像信号10と参照画像信号17との間の二乗誤差和を表す符号化歪みを示す。また、Rは仮符号化によって見積もられる符号量を示し、λは量子化幅等によって定められるラグランジュ未定係数を示す。なお、予測部101は、数式(1)に代えて、符号量R又は符号化歪みDのみを使用して、符号化コストJを算出しても構わない。また、数式(1)のコスト関数は、符号量R又は符号化歪みDを近似した値を使用して作成されても構わない。さらに、符号化歪みDは、二乗誤差和に限らず、予測誤差の絶対値和(SAD:sums of absolute difference)であっても構わない。符号量Rは、動き情報18に関する符号量のみを使用しても構わない。また、符号化コストが最小になる動き補償ブロックサイズが選択される例に限定されず、符号化コストが最も小さい値から所定の範囲内の値になる1つの動き補償ブロックサイズが選択されても構わない。
 動き補償は、符号化対象ブロックの動き情報18に基づいて、参照画像信号17が予測画像信号11として取り出される画素ブロックの位置を導出する。符号化対象ブロックに対する動き補償処理は、H.264の動き補償処理と同様のものを使用することができる。ここでは、一例として、1/4画素精度の補間手法を具体的に説明する。1/4画素精度の補間では、動きベクトルの各成分が4の倍数である場合、動きベクトルは、整数画素位置を指し示す。それ以外の場合、動きベクトルは、分数精度の補間位置に対応する予測位置を指し示す。
Figure JPOXMLDOC01-appb-M000002
 ここで、x及びyは、予測対象ブロックの先頭位置(例えば、左上頂点)を示す水平及び垂直方向のインデクスを示し、x_pos及びy_posは、参照画像信号17の対応する予測位置を示す。mv_x及びmv_yは、1/4画素精度を持つ動きベクトルの水平成分及び垂直成分を示す。次に、割り出した画素位置に対して、参照画像信号17の対応する画素位置の補填又は補間処理によって予測画素を生成する。図9に、H.264の予測画素生成の一例が示されている。図9において大文字のアルファベットで示される正方形(斜線が施された正方形)は、整数位置の画素を示しており、網掛けで表示されている正方形は、1/2画素位置の補間画素を示している。また、白塗りで表示された正方形は1/4画素位置に対応する補間画素を示している。例えば、図9において、アルファベットb、hの位置に対応する1/2画素の補間処理は、下記数式(3)で算出される。
Figure JPOXMLDOC01-appb-M000003
 ここで、数式(3)及び下記数式(4)に示されるアルファベット(例えば、a,b,d,h,A,C,E,F,G,H,I,J,M,R,T等)は、図9において同じアルファベットを付与された画素の画素値を示す。また、「>>」は、右シフト演算を示し、「>> 5」は、32で除算することに相当する。即ち、1/2画素位置の補間画素は、6タップFIR(Finite Impulse Response)フィルタ(タップ係数:(1,-5,20,20,-5,1)/32)を用いて算出される。
 また、図9でアルファベットa、dの位置に対応する1/4画素の補間処理は、下記数式(4)で算出される。
Figure JPOXMLDOC01-appb-M000004
 このように、1/4画素位置の補間画素は、2タップの平均値フィルタ(タップ係数:(1/2,1/2))を用いて算出される。4つの整数画素位置の中間に存在するアルファベットjに対応する1/2画素の補間処理は、垂直方向6タップ及び水平方向6タップの両方向を用いて生成される。説明した以外の画素位置に対しても同様の方法で、補間画素値が生成される。
 なお、補間画素は、数式(3)及び数式(4)とは異なる補間処理で生成されても構わず、数式(3)及び数式(4)に示す補間係数とは異なる補間係数を用いて生成されても構わない。また、補間係数は、符号化制御部150から与えられる固定の値を用いてもよく、或いは、前述の符号化コストに基づいて、フレーム毎に補間係数を最適化し、最適化された補間係数を用いて生成されても構わない。
 図10は、エントロピー符号化部104をより詳細に示している。エントロピー符号化部104は、図10に示されるように、パラメータ符号化部1001、変換係数符号化部1002、動き情報符号化部1003及び多重化部1004を備えている。パラメータ符号化部1001は、変換係数情報13及び動き情報18を除く、予測モード情報、ブロックサイズ情報、量子化パラメータ情報などの復号に必要になるパラメータを符号化し、符号化データ14aを生成する。変換係数符号化部1002は、変換係数情報13を符号化して、符号化データ14bを生成する。動き情報符号化部1003は、動き情報18及び参照動き情報19を取得し、動き情報18及び参照動き情報19を使用して動き情報18を符号化し、符号化対象ブロックに適用した予測モードに応じて、動き情報18に関する1種類の符号化データ14c若しくは2種類の符号化データ14c及び14dを生成する。
 動き情報符号化部1003は、動き情報分離部1005、第1動き情報符号化部1006、第2動き情報符号化部1007及びブロック選択部1008を備える。 
 動き情報分離部1005は、符号化対象ブロックに双方向予測が適用されたか否かを判定する。双方向予測が適用された場合、動き情報分離部1005は、動き情報18から第1動き情報18a及び第2動き情報18bを分離して出力する。双方向予測が適用されてない場合、動き情報分離部1005は、動き情報18aを第1動き情報18aとして出力する。
 第1動き情報符号化部1006は、第1動き情報18aを符号化して、符号化データ14cを生成する。第1動き情報符号化部1006は、符号化対象ブロックの周辺の画素ブロックの参照動き情報19に含まれる動きベクトルを用いて予測ベクトル(予測値)を求め、予測ベクトルと第1動き情報18aに含まれる動きベクトルとの差分を算出して符号化する。例えば、H.264では、図11Aに示されるように、符号化対象ブロックに隣接する各画素ブロック内の所定の画素A,B,Cの各々の参照動き情報19に含まれる動きベクトルのメディアン値(中央値)を第1動き情報18aに対応する予測ベクトルとして使用して符号化を行う。また、ITU-T SG16/Q.6 VCEG document VCEG-AC06に示されるように、第1動き情報符号化部1006は、画素A,B,Cの参照動き情報19のうちの1つを選択し、選択した参照動き情報19に含まれる動きベクトルを第1動き情報18aの予測ベクトルとして使用しても構わない。この場合、画素A,B,Cのどれを選択したかを示す選択ブロック情報を符号化する必要がある。
 ブロック選択部1008及び第2動き情報符号化部1007は、符号化対象ブロックに双方向予測が適用された場合に使用される。ブロック選択部1008は、第1動き情報18aと、符号化対象ブロックの周辺に位置する画素ブロック(周辺ブロックと称す)の各々の参照動き情報19を取得する。ブロック選択部1008は、参照動き情報19に基づいて、周辺ブロックから、第2動き情報18bの予測符号化に使用する画素ブロックを選択する。より具体的には、ブロック選択部1008は、第1動き情報18aに含まれる動きベクトルと、参照動き情報19中の参照第1動き情報19aに含まれる動きベクトルとを比較し、周辺ブロックのうち、これら2つの動きベクトルのベクトル間距離が最も小さい周辺ブロック、若しくは、これら2つの動きベクトルが最も類似している周辺ブロックを選択ブロックとして選択する。ブロック選択部1008は、選択した画素ブロックを示す選択ブロック情報20を出力する。第2動き情報符号化部1007は、選択ブロック情報20及び第2動き情報18bを取得し、選択ブロック情報20が示す画素ブロックの参照動き情報19に基づいて、第2動き情報18bを予測符号化し、符号化データ14dを出力する。
 これらの符号化部1001、1002、1003には、エントロピー符号化(例えば、等長符号化、ハフマン符号化又は算術符号化など)が適用されることができる。多重化部1004は、生成された符号化データ14a、14b、14c、14dを多重化して、符号化データ14を出力する。
 図12は、符号化対象ブロックに双方向予測が適用された場合における動き情報符号化部1003の動作を概略的に示す。まず、動き情報分離部1005は、受け取った動き情報18を第1動き情報18a及び第2動き情報18bに分離する(ステップS1200)。次に、第1動き情報符号化部1006は、第1動き情報18aを、例えばH.264と同様の方式で、符号化する(ステップS1201)。ステップS1201では、例えば、第1動き情報符号化部1006は、H.264と同様の予測方法で予測ベクトル(pred_L0_x, pred_L0_y)を導出し、下記数式(5)のように、予測ベクトルと第1動き情報18aに含まれる動きベクトル(MV_cur_L0_x, MV_cur_L0_y)との差分(水平成分:mvd_l0[0]、垂直成分:mvd_l0[1])を符号化する。或いは、第1動き情報符号化部1006は、符号化済みの周辺ブロックから予測ベクトルを導出し、この予測ベクトルと第1動き情報18aに含まれる動きベクトルとの差分を符号化しても構わない。
Figure JPOXMLDOC01-appb-M000005
 次に、ブロック選択部1008は、後段の処理で選択ブロックを選択するための最小コスト(sel_cost)に、初期値としてとり得る最大値(MAX_INT)を代入し、さらに、最適インデクス(sel_idx)に初期値ゼロを代入する(ステップS1202)。
 次に、ブロック選択部1008は、符号化済みの周辺ブロック(即ち、符号化対象ブロックよりも先に双予測がなされた予測済画素ブロック)の各々に対して、次のステップS1204からステップS1208の処理を繰り返す(ステップS1203)。本実施形態では、符号化済みの周辺ブロックは、図11Aに示されるように、符号化対象ブロックに対して左、上、右上、左上、左下に隣接する画素ブロックである。符号化対象ブロックのサイズがNxM画素である場合、周辺ブロックの相対位置及びインデクスidxは、図11Bに示されるようになる。図11B中のdx,dyは、符号化対象ブロック内の左上端画素位置からの相対画素位置の水平成分及び垂直成分を夫々示している。他の例では、図13Aに示されるように、符号化対象ブロックに隣接する全ての符号化済みの画素ブロックが周辺ブロックとして選定されても構わない。図13A中のnAは、符号化対象ブロックに対し左に隣接するブロックの数を示し、最小ブロックサイズをNmin x Mmin画素ブロックとすると、nAの最大値は、M/Mminとなる。同様に、nBは、符号化対象ブロックに対し上に隣接するブロックの数を示し、その最大値は、N/Nminとなる。図13Aに示される周辺ブロックの相対位置とインデクスidxは、図13Bに示されている。これらの周辺ブロックが画面外や未符号化領域などであって参照不可能な場合、或いは、イントラ予測で符号化されて動き情報を有していない場合には、これらの周辺ブロックは、ステップS1203の処理対象から予め除外される。なお、図11A及び11Bに示される周辺ブロックのいくつかがステップS1203の処理対象から除外されても構わない。
 次に、ブロック選択部1008は、インデクスidxに対応する周辺ブロックに双方向予測が適用されたか否かを判定する(ステップS1204)。双方向予測が適用されてない場合、この周辺ブロックは、選択ブロックの候補から除かれ、以降のステップS1205からステップS1208をスキップされる。双方向予測が適用された場合、ブロック選択部1008は、周辺ブロックidxの参照動き情報19を、動き情報18と同様に、参照第1動き情報19a及び参照第2動き情報19bに分離する(ステップS1205)。次に、ブロック選択部1008は、下記数式(6)のように、符号化対象ブロックの第1動き情報18aと周辺ブロックidxの参照第1動き情報19aとの差分値を計算し、コスト(cost)に代入する。
Figure JPOXMLDOC01-appb-M000006
 ここで、MV_cur_L0_x及びMV_cur_L0_yは、符号化対象ブロックの第1動き情報18aに含まれる動きベクトルの水平成分及び垂直成分を夫々示し、MV_idx_L0_x及びMV_idx_L0_yは、周辺ブロックidxの参照第1動き情報19aに含まれる動きベクトルの水平成分及び垂直成分を夫々示す。また、abs(x)は、変数xの絶対値を出力するオペレータ(演算子)である。従って、数式(6)は、符号化対象ブロックの第1動き情報18aと周辺ブロックidxの参照第1動き情報19aのSAD(Sum of Absolute Deference)を示す。
 なお、コストは、下記数式(7)に示されるSSD(Sum of Square Deference)で算出されても構わない。
Figure JPOXMLDOC01-appb-M000007
 また、コストは、動きベクトルの水平成分又は垂直成分のいずれか一方を使用したSAD又はSSDによって算出されても構わない。さらに、コストは、符号化対象ブロックの第1動き情報18a中の動きベクトルと、参照第1動き情報19a中の動きベクトルとの市街地距離、ユークリッド距離又はミンコフスキー距離を使用して、算出されても構わない。さらにまた、コストは、各ベクトルのノルム成分のみ若しくは角度成分のみの差分値を使用して算出されても構わない。
 次に、ブロック選択部1008は、算出したコストcostを最小コストsel_costと比較する(ステップS1207)。ステップS1206で算出されたコストcostがsel_costよりも小さい値の場合(ステップS1207がTRUE)、ブロック選択部1008は、このcostをsel_costに代入し、この周辺ブロックのidxをsel_idxに代入し、sel_cost 及びsel_idxを更新する(ステップS1208)。costがsel_cost以上の値であった場合(S107がFALSE)、ステップS1208はスキップする。
 全ての周辺ブロックidxに対してステップS1204からステップS1208の処理が終了した(ステップS1209)後、ブロック選択部1008は、sel_idxに対応する周辺ブロックを選択ブロックとして選択し(ステップS1210)、選択ブロックの参照第2動き情報19bを符号化対象ブロックの第2動き情報18bの予測値に決定する(ステップS1211)。最後に、第2動き情報符号化部1007は、第2動き情報18bと予測値との差分値を、即ち、第2動き情報18b中の動きベクトルと予測ベクトルとの差分を符号化する(ステップS1212)。第2動き情報18bと予測値との差分値(水平成分mvd_l1[0]及び垂直成分mvd_l1[1])は、下記数式(8)に従って計算される。
Figure JPOXMLDOC01-appb-M000008
 このようにして、周辺ブロックの中から、符号化対象ブロックの第1動き情報中の動きベクトルと最もベクトル間距離が小さい第1動きベクトル若しくは最も類似している第1動きベクトルを保持する第1動き情報を有する周辺ブロックが、選択ブロックとして選択され、選択ブロックの第2動き情報を使用して、符号化対象ブロックの第2動き情報18bが予測符号化される。
 なお、ステップS1206では、動きブロック選択部1008は、第1動き情報18aが参照する若しくは指し示すフレーム位置(参照フレーム番号)と参照第1動き情報19aが参照する若しくは指し示すフレーム位置(参照フレーム番号)とに応じて、参照第1動き情報19aの動きベクトルをスケーリングしても構わない。この場合、第1動き情報18a中の参照フレーム番号(ref_idx_l0)は、動きベクトル情報より先に符号化する必要がある。図14は、参照第1動き情報19a中の動きベクトルにスケーリングを適用する一例を示し、符号化対象ブロックの第1動き情報18aが参照する参照フレームと周辺ブロックidxの参照第1動き情報19bが参照する参照フレームとが異なる場合を示している。図14中のtcは、符号化対象フレームと符号化対象ブロックに割り当てられている第1動き情報18aが参照する参照フレームとの間の時間距離(POC(Picture Order Count)(ディスプレイ順序を示す番号)距離)を示し、trは、符号化対象フレームと周辺ブロックに割り当てられている参照第1動き情報19aが参照する参照フレームとの間の時間距離を示す。なお、周辺ブロックidxが符号化対象フレームと異なる参照フレームの画素ブロックである場合、trは、周辺ブロックidxを含む参照フレームと周辺ブロックidxに割り当てられている参照第1動き情報19aが参照する参照フレームとの間の時間距離を示す。これらのtc及びtrは、下記数式(9)を用いて計算される。
Figure JPOXMLDOC01-appb-M000009
 ここで、curPOCは、符号化対象ブロックのPOCを示し、refPOCは、符号化対象ブロックに割り当てられている第1動き情報18aが参照する参照フレームのPOCを示し、idxPOCは、周辺ブロックidxに割り当てられている参照第1動き情報19aが参照する参照フレームのPOCを示している。また、Clip(min, max, target)は、targetがminより小さい値である場合にminを出力し、targetがmaxより大きい値である場合にmaxを出力し、それ以外の場合にはtargetを出力するクリップ関数である。また、DiffPicOrderCnt(x,y)は、2種類のPOCの差分を計算する関数である。
 スケーリング適用後の参照第1動き情報19a中の動きベクトルMV_idx_L0'=(MV_idx_L0_x',MV_idx_L0_y')は、下記数式(10)により計算される。
Figure JPOXMLDOC01-appb-M000010
 数式(10)に従ってスケーリングされた動きベクトルMV_idx_L0'を、参照第1動き情報19a中のスケーリングされていない動きベクトルと置き換えることにより、符号化対象ブロックと周辺ブロックidxが同一フレームを仮想的に参照することが可能となり、正確にコスト計算を行うことが可能になるため、ブロック選択の効率が向上する。
 また、スケーリングに関する他の実施形態は、乗算、加算及びシフト演算のみで実行することができる。まず、スライスやフレーム毎に、選択可能な全ての参照フレームについてスケーリング係数(DistScaleFactor)を求める。
Figure JPOXMLDOC01-appb-M000011
 ここで、tx及びDistScaleFactorは、tc及びtrに対して予め計算されて参照テーブルとしてテーブル化される。
 ブロック選択部1008は、符号化対象ブロック毎に、tc及びtrで参照テーブルを参照してDistScaleFactorを呼び出し、数式(12)に示される計算を行うことで、スケーリング後の参照第1動き情報19aの動きベクトルMV_idx_L0'を導出する。
Figure JPOXMLDOC01-appb-M000012
 なお、数式(10)の除算は、テーブル引きで表現されても構わない。
 また、S111において選択ブロックの参照第2動き情報19bを予測値とする場合には、参照第2動き情報19b及び第2動き情報18b中の参照フレーム番号を用いて、参照第2動き情報19b中の動きベクトル情報をスケーリングして予測ベクトルを生成しても構わない。この場合、第2動き情報18a中の参照フレーム番号(ref_idx_l0)は、動きベクトル情報より先に符号化する必要がある。図15は、参照第2動き情報19b中の動きベクトルにスケーリングを適用する一例を示し、符号化対象ブロックが参照する参照フレームと選択ブロックsel_idxに割り当てられている参照第2動き情報19bが参照する参照フレームとが異なる場合を示している。図15中のtc'は、符号化対象フレームと符号化対象ブロックに割り当てられている第2動き情報18bが参照する参照フレームとの間の時間距離(POC距離)を示し、tr'は、符号化対象フレームと選択ブロックsel_idxの参照第2動き情報19bが参照する参照フレームとの間の時間距離を示す。なお、選択ブロックidxが符号化対象フレームとは異なるフレームの画素ブロックである場合、tr'は、選択ブロックsel_idxを含む参照フレームと選択ブロックsel_idxの参照第2動き情報19bが参照する参照フレームとの間の時間距離を示す。これらtc'及びtr'は、下記数式(13)を用いて計算される。
Figure JPOXMLDOC01-appb-M000013
 ここで、refPOC'は、符号化対象ブロックが参照する参照フレームのPOCを示し、sel_idxPOC'は、選択ブロックsel_idxが参照する参照フレームのPOCを示す。
 スケーリング適用後の予測値は、下記数式(14)に従って計算される。
Figure JPOXMLDOC01-appb-M000014
 ここで、pred_L1_x及びpred_L1_yは、予測ベクトルの水平成分及び垂直成分を示し、MV_sel_idx_L1_x、MV_sel_idx_L1_yは、選択ブロックsel_idxに割り当てられている参照第2動き情報19bに含まれる動きベクトルの水平成分及び垂直成分を示す。
 また、予測ベクトルのスケーリングに関する他の実施形態は、乗算、加算及びシフト演算で実行することができる。この場合、第2動き情報符号化部1007は、符号化ブロック毎に、tc'及びtr'で参照テーブルを参照してDistScaleFactorを呼び出し、下記数式(15)に従って、スケーリング後の予測ベクトルを導出する。
Figure JPOXMLDOC01-appb-M000015
 ブロック選択部1008では、参照第1動き情報19a及び第1動き情報18aが夫々参照する参照フレームが異なる場合には、参照第1動き情報19aを数式(12)を用いてスケーリングすることにより処理を行っていたが、スケーリングを行わずに、参照第1動き情報19a及び第1動き情報18aが夫々参照する参照フレームが同一である場合のみ、この参照第1動き情報19aを使用しても構わない。
 また、参照第2動き情報19bと21動き情報18bが夫々参照する参照フレームが異なる場合には、参照第2動き情報19bを数式(15)を用いてスケーリングすることにより処理を行っていたが、スケーリングを行わずに、参照第2動き情報19b及び第2動き情報18bが夫々参照する参照フレームが同一である場合のみ、当該参照第2動き情報19bを使用しても構わない。
 また、符号化対象ブロックから空間的又は時間的に離れた符号化済みブロックを周辺ブロックとしても構わない。時間的に離れた符号化済みブロックを周辺ブロックとする一例は、図13Cに示されている。図13Cに示すCollocate blockは、符号化対象ブロックと空間的に同位置の参照フレームの内のブロックである。mvColはCollocate blockが保持する動き情報を示し、tdはCollocate blockが位置する参照フレームとCollocate blockが参照するフレームとの時間距離POCを示し、tbは符号化対象フレームと符号化対象ブロックが参照する参照フレームとの時間距離(POC距離)を示す。参照第1動き情報19a、参照第2動き情報19bは、mvColを比例配分することにより導出される。具体的には、mvColの水平成分mvCol_xと垂直成分mvCol_yは、数式(16)に従って計算される。
Figure JPOXMLDOC01-appb-M000016
 また、予測ベクトルのスケーリングに関する他の実施形態は、乗算、加算及びシフト演算で実行することができる。この場合、第2動き情報符号化部1007は、符号化ブロック毎に、tb及びtdで参照テーブルを参照してDistScaleFactorを呼び出し、下記数式(17)に従って、スケーリング後の予測ベクトルを導出する。
Figure JPOXMLDOC01-appb-M000017
 図13Dには、時間方向の周辺ブロックを用いた場合における周辺ブロックの相対位置及びインデクスidxの一例が示されている。
 また、動き情報符号化部1003の動作に関する他の実施形態を図36に示す。まず、動き情報分離部1005は、受け取った動き情報18を第1動き情報18a及び第2動き情報18bに分離する(ステップS3600)。次に、第1動き情報符号化部1006は、第1動き情報18aを、例えばH.264と同様の方式で、符号化する(ステップS3601)。ステップS3600及びステップS3601は前述のステップS1200及びステップS1201と夫々同様の処理を行う。次に、後段の処理で選択ブロックを選択するための閾値thを導出する(ステップS3602)。ステップS3602では、例えば、図13A及び図13Bに示されるidx=0に対応する周辺ブロックに対するコストを計算し、閾値thにセットする。このコストは、数式(6)及び数式(7)といった前述のコスト計算方法のいずれかを用いて算出される。idx=0に対応する周辺ブロックにインター予測が適用されてない場合には、インター予測が適用された周辺ブロックが見つかるまで、idxの値を1インクリメントして、前述の閾値thの導出処理を行う。周辺ブロックに双方向予測が適用されてない場合、即ち、周辺ブロックに単方向予測が適用されている場合、この周辺ブロックは、前述の閾値thの導出処理から除外されても構わない。さらに、動き情報の配列vec[]を初期化し、動き情報の配列への格納数numをゼロに初期化する。さらに、閾値導出に使用した周辺ブロックの参照第1動き情報19aをvec[0]に代入する。
 次に、ブロック選択部1008は、符号化済みの周辺ブロックの各々に対して、次のステップS3604からステップS3608の処理を繰り返す(ステップS3603)。本実施形態では、符号化済みの周辺ブロックは、図11Aに示されるように、符号化対象ブロックに対して左、上、右上、左上、左下に隣接する画素ブロックである。符号化対象ブロックのサイズがNxM画素である場合、周辺ブロックの相対位置及びインデクスidxは、図11Bに示されるようになる。図11B中のdx,dyは、符号化対象ブロック内の左上端画素位置からの相対画素位置の水平成分及び垂直成分を夫々示している。他の例では、図13Aに示されるように、符号化対象ブロックに隣接する全ての符号化済みの画素ブロックが周辺ブロックとして選定されても構わない。
 次に、ブロック選択部1008は、インデクスidxに対応する周辺ブロックに単方向のL1予測が適用されたか否かを判定する(ステップS3604)。単方向L1予測が適用されている場合、参照第1動き情報19aは存在せず、ブロック選択部1008は、第1動き情報18aが参照する参照フレームを参照するように、参照第2動き情報19bをスケーリングして、参照第1動き情報19aを設定する。周辺ブロックのL1動き情報19bの動きベクトルをMV_idx_L1とすると、数式(18)に示される計算を行うことでスケーリング後の参照第1動き情報19a(MV_idx_L0)を導出する。
Figure JPOXMLDOC01-appb-M000018
 ここで、tcは、図14に示されるように、符号化対象フレームと符号化対象ブロックの第1動き情報18aが参照する参照フレームとの間の時間距離(POC距離)を示し、tr'は選択ブロックsel_idxを含む参照フレームと選択ブロックsel_idxの参照第2動き情報19bが参照する参照フレームとの間の時間距離を示す。
 また、予測ベクトルのスケーリングに関する他の実施形態は、乗算、加算及びシフト演算で実行することができる。この場合、第2動き情報符号化部1007は、符号化ブロック毎に、tc及びtr'で参照テーブルを参照してDistScaleFactorを呼び出し、下記数式(19)に従って、スケーリング後の予測ベクトルを導出する。
Figure JPOXMLDOC01-appb-M000019
 また、前述のように、参照第1動き情報19aが参照する参照フレームと第1動き情報18aが参照する参照フレームが異なる場合には、数式(12)に示される計算を行うことで、参照第1動き情報19aをスケーリングする。
 次に、ブロック選択部1008は、符号化対象ブロックの第1動き情報18aと周辺ブロックidxの参照第1動き情報19aとの差分値を計算し、数式(6)又は数式(7)のように、コスト(cost)を算出する(ステップS3606)。
 また、コストは、動きベクトルの水平成分又は垂直成分のいずれか一方を使用したSAD又はSSDによって算出されても構わない。さらに、コストは、符号化対象ブロックの第1動き情報18a中の動きベクトルと、参照第1動き情報19a中の動きベクトルとの市街地距離、ユークリッド距離又はミンコフスキー距離を使用して、算出されても構わない。さらにまた、コストは、各ベクトルのノルム成分のみ若しくは角度成分のみの差分値を使用して算出されても構わない。
 次に、算出したコストcostが閾値thより小さい場合(ステップS3607がTRUE)、ブロック選択部1008は、動き情報の配列vec[]に周辺ブロックidxの参照第2動き情報19bを代入し、動き情報の配列vec[]への格納数numを1インクリメントする(ステップS3608)。算出したコストcostが閾値th以上である場合には(ステップS3607がFALSE)、ステップS3608はスキップする。なお、周辺ブロックidxが単方向L0予測である場合には、参照第2動き情報19bが存在しないため、ブロック選択部1008は、参照第1動き情報19aをスケーリングしたベクトルを参照第2動き情報19bとして設定する。この場合、数式(20)に示されるように、参照第2動き情報19bは、第2動き情報18bが参照する参照フレームを参照するようにスケーリングされる。
Figure JPOXMLDOC01-appb-M000020
 ここで、trは、図14に示されるように、符号化対象フレームと周辺ブロックの参照第1動き情報19aが参照する参照フレームとの間の時間距離を示し、tc'は、図15に示されるように符号化対象フレームと符号化対象ブロックの第2動き情報18bが参照する参照フレームとの間の時間距離(POC距離)を示す。
 また、予測ベクトルのスケーリングに関する他の実施形態は、乗算、加算及びシフト演算で実行することができる。この場合、第2動き情報符号化部1007は、符号化ブロック毎に、tc'及びtrで参照テーブルを参照してDistScaleFactorを呼び出し、下記数式(21)に従って、スケーリング後の予測ベクトルを導出する。
Figure JPOXMLDOC01-appb-M000021
 他の例では、ブロックステップS3607において、ブロック選択部1008は、算出したコストcostが閾値thより小さいか否かを判定する条件に加えて、次の2つの条件を組み合わせて使用しても構わない。これらの3つの条件を使用する例では、ステップS3607でこれらの3つの条件を満たす場合に、ステップS3608に進み、ブロック選択部1008は、動き情報の配列vec[]に周辺ブロックidxの参照第2動き情報19bを代入する。
・閾値ブロックの動き情報vec[0]より、周辺ブロックidxの参照第1動き情報19aのノルムが小さい。
・閾値ブロックの動き情報vec[0]と、周辺ブロックidxの参照第1動き情報19aを夫々水平成分及び垂直成分に分離して比較し、閾値ブロックの動き情報vec[0]の水平成分及び垂直成分が共に周辺ブロックidxの参照第1動き情報19aの水平成分及び垂直成分より小さい。
 また、前述のように参照第2動き情報19bが参照する参照フレームと第2動き情報18bが参照する参照フレームが異なる場合、ブロック選択部1008は、数式(15)に示される計算を行うことで、参照第1動き情報19aをスケーリングし、vec[]に格納する。
 全ての周辺ブロックに対してステップS3604からステップS3608が終了すると(ステップS3609)、ブロック選択部1008は、格納された動き情報vec[]及び動き情報の格納数numを用いて、参照第2動き情報19bの予測値を導出する(ステップS3610)。numが1である場合、ブロック選択部1008は、vec[0]に格納されている動き情報を参照第2動き情報18bの予測値として設定する。numが2である場合、ブロック選択部1008は、数式(22)を用いて、予測値を導出する。
Figure JPOXMLDOC01-appb-M000022
 ここで、vec_xは、動き情報の配列vec[]の水平成分であり、vec_yは、動き情報の配列vec[]の垂直成分である。
 numが2以上である場合には、ブロック選択部1008は、動き情報の配列vec[]を水平成分及び垂直成分に分離してソートし、数式(23)を用いて予測値を導出する。
Figure JPOXMLDOC01-appb-M000023
 numがゼロである場合には、ブロック選択部1008は、H.264で示される方法でpred_L1_x及びpred_L1_yを導出する。
 第2動きベクトル符号化部1007は、符号化対象ブロックの第2動き情報18bとステップS3611で導出された予測値との差分値を符号化する(ステップS3611)。
 以上が、他の実施形態に従う動き情報符号化部1003の動作の説明である。
 図16は、画像符号化部100において用いられるシンタクス構造を示している。図16に示されるように、シンタクスは、主に3つのパート、即ち、ハイレベルシンタクス1601、スライスレベルシンタクス1604及びコーディングツリーブロックレベルシンタクス1607を含む。ハイレベルシンタクス1601は、スライス以上の上位レイヤのシンタクス情報を含む。スライスレベルシンタクス1604は、スライス毎に必要な情報を含み、コーディングツリーブロックレベルシンタクス1607は、図7Aから図7Dに示されるマクロブロックに代表される符号化の一単位であるコーディングツリーブロック毎に必要とされるデータを含む。
 各パートは、さらに詳細なシンタクスを含む。ハイレベルシンタクス1601は、シーケンスパラメータセットシンタクス1602及びピクチャパラメータセットシンタクス1603などのシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス1604は、スライスヘッダーシンタクス1605及びスライスデータシンタクス1606などを含む。さらに、コーディングツリーブロックレベルシンタクス1607は、コーディングツリーブロックレイヤーシンタクス1608及びプレディクションユニットシンタクス1609などを含む。
 図17は、プレディクションユニットシンタクスの一例を示す。符号化対象ブロックにインター予測が適用された場合(PredMode==MODE_INTERがTRUE)、インター予測のブロック分割情報(inter_partitioning_idc)が符号化される。その後、分割ブロックi毎に、動き情報18に含まれるinter_pred_idc[i]、ref_idx_l0[i]、ref_idx_l1[i]、mvd_l0[i][0/1]、mvd_l1[i][0/1]が符号化される。inter_pred_idc[i]は、予測方向を示すシンタクスである。具体的には、シンタクスinter_pred_idc[i]は、単方向予測(List0方向又はList1方向)及び双方向予測のどちらが適用されたかを示す。ref_idx_l0[i]及びmvd_l0[i][0/1]は、inter_pred_idc[i]がList0方向の動き情報18(即ち、第1動き情報18a)を符号化したことを示す場合(inter_pred_idc[i]!=Pred_L1)に符号化される。ref_idx_l0[i]は、第1動き情報18aに含まれる参照フレーム番号を示すシンタクスである。ref_idx_l0[i]は、List0方向の参照フレームの数が2以上である場合(num_ref_idx_l0_active_minus1 > 0)に符号化される。また、mvd_l0[i][0/1]は、第1動き情報18a中の動きベクトルと予測ベクトルとの差分を示すシンタクスであり、例えば数式(5)に従って計算される。
 ref_idx_l1[i]、mvd_l1[i][0/1]は、inter_pred_idc[i]がList1方向の動き情報18(即ち、第2動き情報18b)を符号化したことを示す場合(inter_pred_idc[i]!=Pred_L0)に符号化される。ref_idx_l1[i]は、List1方向の参照フレームの数が2以上である場合(num_ref_idx_l1_active_minus1 > 0)に符号化される。mvd_l1[i][0/1]は、第2動き情報18b中の動きベクトルと予測ベクトルとの差分を示すシンタクスであり、例えば数式(5)に従って計算される。
 図17に示すシンタクステーブルの行間には、本実施形態で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。さらに、マクロブロックレイヤーシンタクスに記述されている各々のシンタクス要素は、後述するマクロブロックデータシンタクスに明記されるように変更しても構わない。
 本実施形態では、符号化対象ブロックがマクロブロックである例を説明したが、複数のマクロブロックをまとめて動き補償予測を行う拡張マクロブロックに対しても、上述した符号化処理は適応可能である。また、コーディングツリーブロックレイヤーシンタクス1608及びプレディクションユニットシンタクス1609は、再帰構造を持つような構成とすることも可能である。
 以上のように、本実施形態に係る画像符号化装置は、符号化対象ブロックが双方向予測を用いて符号化を行う際に、双方向予測のうち第1動き情報を先に符号化し、その後、第1動き情報と既に符号化済みの周辺ブロックの第1動き情報とのマッチングを行い、最もコストが小さい周辺ブロックに割り当てられている第2動き情報中の動きベクトルを予測ベクトルとして導出し、符号化対象ブロックに割り当てられた第2動き情報中の動きベクトルと予測ベクトルとの差分を符号化している。従って、本実施形態に係る画像符号化装置によれば、付加情報無しに、予測に用いる適切なブロックを選択できることにより、第2動き情報に関する符号量を削減することができるため、高い符号化効率を実現することができる。
 なお、ブロック選択部1008は、コストが最小となる1つの周辺ブロックを選択する例に限定されず、コストが小さい順番にM種類の周辺ブロックを選択ブロックとして選択しても構わない。この場合、ブロック選択部1008は、参照第2動き情報19bが互いに異なる周辺ブロックを選択する。周辺ブロックからどのブロックが選択ブロックとして選択されたかを示す選択ブロック情報20は、第2動き情報符号化部1007によって符号化される。図18は、プレディクションユニットシンタクスの他の例を示し、このプレディクションユニットシンタクスは、選択ブロック情報20に関連するシンタクス(mvp_idx_l1[i])を含む。シンタクスmvp_idx_l1[i]は、選択ブロックの数が2以上である場合に符号化される。
 また、本実施形態では、ブロック選択部1008が、コストが最小となる周辺ブロックを選択ブロックとして選択し、第2動き情報符号化部1007が、選択ブロックの参照第2動き情報19b中の動きベクトルを予測ベクトルとして使用する例を説明したが、これに限定されず、最小のコストの値が所定の閾値より大きい値であった場合、第2動き情報符号化部1007は、選択ブロックの参照第2動き情報19b中の動きベクトルを予測ベクトルとして使用しなくても構わない。この場合、H.264に規定される予測ベクトル導出方法で予測ベクトルを生成することができる。H.264に規定される予測ベクトル導出方法では、参照第2動き情報19b中の動きベクトルのメディアン値、又は所定の周辺ブロック(例えば、符号化対象ブロックの左に隣接する周辺ブロック)の参照第2動き情報19b中の動きベクトルが予測ベクトルとして生成される。
 閾値がゼロに設定される例では、ブロック選択部1008は、符号化対象ブロックの第1動き情報18a中の動きベクトルと、周辺ブロックの参照第1動き情報19a中の動きベクトルが一致した場合にのみ、動きベクトルが一致した周辺ブロックを選択ブロックとして選択する。いずれの周辺ブロックの参照第1動き情報19aの動きベクトルも第1動き情報18a中の動きベクトルと一致しない場合、第2動き情報符号化部1007は、前述のH.264に規定される予測ベクトルの導出方法で、符号化対象ブロックの予測ベクトルを導出する。
 また、動き情報符号化部1003は、第2動き情報18bの動きベクトルを予測し、第2動き情報18bの動きベクトルと予測ベクトルとの差分であるmvd_l1を符号化する例を説明したが、動き情報符号化部1003は、mvd_l1を符号化しなくても構わない。この場合、第2動き情報18bの動きベクトルは、予測ベクトルpred_mv_l1と同一である。より具体的には、予測部101は、ブロック選択部1008と同じ方法で、符号化済みの周辺ブロックに割り当てられている参照第2動き情報から予測ベクトルを導出し、この予測ベクトルを第2動きベクトルとして使用して、符号化対象ブロックの予測画像信号11を生成する。図19は、予測ベクトルmvd_l1を符号化しない場合のプレディクションユニットシンタクスの例を示している。
 同様に、第1動き情報18aに関連する差分mvd_l0は、符号化されなくても構わない。この場合、第1動き情報18aの動きベクトルは、予測ベクトルpred_mv_l0と同一である。より具体的には、予測部101は、第1動き情報符号化部1006と同じ方法で、符号化済みの周辺ブロックに割り当てられている参照第1動き情報から予測ブロックを導出し、この予測ベクトルを第1動きベクトルとして使用して、符号化対象ブロックの予測画像信号11を生成する。第1動き情報18aを符号化しない場合、図12のフローチャートからステップS1201を消去すればよい。
 なお、本実施形態は、H.264に示されるスキップモードのように、変換係数を符号化しない場合についても、適用可能である。
 (第2の実施形態) 
 図20は、第2の実施形態に係る画像符号化装置を概略的に示している。図20の画像符号化装置は、画面内で予測を行うイントラ予測に関する。本実施形態の画像符号化装置を、図1の画像符号化装置と異なる部分について、図20を参照して説明する。図20の画像符号化部2000は、イントラ予測部2001、減算器102、変換・量子化部103、エントロピー符号化部2003、逆量子化・逆変換部105、加算器106、参照メモリ2004及びイントラ予測情報メモリ2002を備えている。即ち、図20の画像符号化部2000では、図1の画像符号化部100内の予測部101、フレームメモリ107、動き情報メモリ108及びエントロピー符号化部104が、夫々、イントラ予測部2001、参照メモリ2004、イントラ予測情報メモリ2002及びエントロピー符号化部2003に置き換えられている。
 イントラ予測部2001は、参照画像信号17を受け取り、参照画像信号17に基づいて、予測画像信号11及びイントラ予測情報30を生成する。参照メモリ2004は、符号化対象フレームに関連する局所復号画像信号16を参照画像信号17として保持する。参照メモリ2004が保持する参照画像信号17は、次の符号化対象ブロックの予測画像信号11を生成する際に、イントラ予測部2001によって参照される。イントラ予測部2001によるイントラ予測は、イントラ単方向予測及びイントラ双方向予測を含む。イントラ単方向予測は、H.264で規定される9種類のイントラ予測モードの中から1種類のイントラ予測モードを選択し、選択した予測モードで予測画像信号11を求める。イントラ双方向予測は、9種類のイントラ予測モードの中から2種類のイントラ予測モードを選択し、各イントラ予測モードから計算される予測画像信号を加重平均して、最終的な予測画像信号11を求める。
 イントラ予測部2001は、イントラ単方向予測で予測を行った場合、選択したイントラ予測モードを示す情報をイントラ予測情報30として出力する。イントラ予測部2001は、イントラ双方向予測で予測を行った場合、2種類のイントラ予測モードを示す情報、即ち、第1イントラ予測情報30a及び第2イントラ予測情報30bをイントラ予測情報30として出力する。イントラ予測情報30は、エントロピー符号化部2003へ送られるとともに、参照イントラ予測情報としてイントラ予測情報メモリ2002に格納される。
 図22及び図23は、イントラ双方向予測における予測情報の組み合わせの例を示している。図22は、第2イントラ予測情報30bが第1イントラ予測情報30aより大きいという制約を課した場合の組み合わせの例を示す。図22に示されるように、第1イントラ予測情報30aは、0から7までのいずれかの値をとり、第2イントラ予測情報30bは、第1イントラ予測情報30aの値によって取り得る値が異なる。第1イントラ予測情報30aが0の場合には、第2イントラ予測情報30bは、1から8の値をとることができる。第1イントラ予測情報30aが7の場合には、第2イントラ予測情報30bは8の値をとる。図23は、第2イントラ予測情報30bが第1イントラ予測情報30aより小さいという制約を課した場合の組み合わせの例を示している。
 イントラ予測部2001によるイントラ双方向予測では、画素位置(x,y)の予測画像信号p(x,y)は、下記数式(24)で計算される。
Figure JPOXMLDOC01-appb-M000024
 ただし、p1(x,y)は、第1イントラ予測モードで導出される画素位置(x,y)の予測画像信号を示し、p2(x,y)は、第2イントラ予測モードで導出される画素位置(x,y)の予測画像信号である。また、w(x,y)は、画素位置(x,y)の重み係数であり、Sは左シフト数であり、Rは丸めオフセット値であり、Mは重み係数の最大値である。これらの重み係数は、参照画像信号17と予測対象画素との空間的距離によって一意に決定される。重み係数の決定方法は、例えば「空間双方向予測に基づく画面内符号化方式」(塩寺他、電子情報通信学会論文誌、Vol.J92-D, No.6, pp.843-853)に示されている。
 イントラ予測情報メモリ2002は、図21に示されるように、符号化対象ブロックに適用した予測モードを示すイントラ予測情報30をイントラ予測部2001から受け取り、エントロピー符号化部2003での使用に備えて、参照イントラ予測情報31として一時的に格納する。
 エントロピー符号化部2003は、図10のエントロピー符号化部104と同様の機能を有するが、図24に示されるように、動き情報符号化部1003に代えて、イントラ予測情報符号化部2403を備えている点がエントロピー符号化部104と異なる。エントロピー符号化部2003は、変換・量子化部103から変換係数情報13を受け取り、イントラ予測部2001からイントラ予測情報30を受け取り、イントラ予測情報メモリ2002から参照イントラ予測情報31を受け取り、さらに、符号化制御部150から予測情報及び量子化パラメータなどの符号化パラメータを受け取る。エントロピー符号化部2003は、変換係数情報13、イントラ予測情報30や符号化パラメータをエントロピー符号化(例えば、等長符号化、ハフマン符号化又は算術符号化など)して、これらを多重化して符号化データ14を生成する。符号化パラメータは、イントラ予測情報30などの予測情報とともに、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。
 エントロピー符号化部2003は、図24に示されるように、イントラ予測情報分離部2405、第1イントラ予測情報符号化部2406、ブロック選択部2407及び第2イントラ予測情報符号化部2408を備え、イントラ予測情報30、参照イントラ予測情報31を取得し、イントラ予測情報に関する符号化データ14e及び14fを出力する。
 次に、図25を参照して、イントラ予測情報符号化部2403をより詳細に説明する。 
 イントラ予測情報分離部2405は、符号化対象ブロックにイントラ双方向予測が適用されたか否かを判定する。双方向予測が適用されていない場合、イントラ予測情報分離部2405は、イントラ予測情報30を第1イントラ予測情報30aとして第1イントラ予測情報符号化部2406へ送る。第1イントラ予測情報符号化部2406は、第1イントラ予測情報30aを符号化する。
 符号化対象ブロックにイントラ双方向予測が適用された場合、イントラ予測情報分離部2405は、イントラ予測情報30から第1イントラ予測情報30a及び第2イントラ予測情報30bを分離して出力する(ステップS2501)。続いて、第1イントラ予測情報符号化部2408は、第1イントラ予測情報30aを符号化して、符号化データ14cを出力する(ステップS2502)。第1イントラ予測情報30aの符号化には、固定長符号化を用いても構わないし、既に符号化済みの周辺ブロックの参照イントラ予測情報31を用いて予測を行い、予測値と第1イントラ予測情報30aとの差分値を符号化する方法を用いても構わない。
 続いて、符号化済みの周辺ブロック(インデクスidx)の各々に対して、インデクスidxがゼロの周辺ブロックから順に、ステップS2504以降の処理を繰り返す(ステップS2503)。まず、ブロック選択部2407は、周辺ブロックidxにイントラ双方向予測が適用されたか否かを判定する(ステップS2504)。イントラ双方向予測が適用されてない場合、周辺ブロックidxは、選択ブロックの候補から除外され、動作がステップS2507に進む。ステップS2504においてイントラ双方向予測が適用されたと判定された場合、周辺ブロックidxの参照イントラ予測情報を第1イントラ予測情報31aと第2イントラ予測情報31bに分離する(ステップS2505)。
 次に、ブロック選択部2407は、符号化対象ブロックの第1イントラ予測情報30aと周辺ブロックidxの参照第1イントラ予測情報31aとが一致するか否かを判定する(ステップS2506)。第1イントラ予測情報30aと参照第1イントラ予測情報31aが不一致の場合、ブロック選択部2407は、idxの値を1インクリメントし(ステップS2507)、ステップS2504に戻り次の符号化済み周辺ブロックの処理に移る。
 一方、第1イントラ予測情報30aと参照第1イントラ予測情報31aが一致した場合、ステップS2509に進み、ブロック選択部2407は、その周辺ブロックidxを選択ブロックとして選択する(ステップS2509)。次に、第2イントラ予測情報符号化部2408は、選択ブロックの参照第2イントラ予測を予測値に設定し(ステップS2510)、第2イントラ予測情報と予測値との差分値を符号化する(ステップS2511)。
 他の実施形態では、第2イントラ予測情報符号化部2408は、第2イントラ予測情報(IntraPredMode)30bと参照第2イントラ予測(prev_intra_pred_mode)31bが一致するか否かを示すフラグ(prev_intra_pred_l1_flag)を符号化しても構わない。第2イントラ予測情報30bと参照第2イントラ予測情報31bとが一致しないことをprev_intra_pred_l1_flagが示す場合、第2イントラ予測情報30bがどの予測モード(rem_intra_pred_l1_mode)であるかを示す情報を符号化する。第2イントラ予測情報30bと参照第2イントラ予測情報30bとが一致する(prev_intra_pred_l1_flagがTRUEである)場合、1ビットの符号量で第2イントラ予測情報を符号化することが可能となる。上述した処理は、擬似プログラムコードで次のように記述される。
Figure JPOXMLDOC01-appb-M000025
 一方、全ての符号化済み周辺ブロックにおいて、ステップS2506で第1イントラ予測情報30aと参照第1イントラ予測情報31aとが一致しなかった場合、第2イントラ予測情報符号化部2408は、予測値を算出せずに、第2イントラ予測情報31bを符号化する(ステップS2508)。この場合、第2イントラ予測情報符号化部2408は、固定長符号化を行い、或いは、第2イントラ予測情報30bの取り得る値に応じた可変長符号化を行う。
 これらの符号化部1001、1002、2403には、エントロピー符号化(例えば等長符号化、ハフマン符号化若しくは算術符号化など)を適用することができる。生成された符号化データ14a、14b、14d、14eは、多重化部1004によって多重化されて符号化データ14として出力される。
 図27は、画像符号化部2000において使用されるシンタクス構造のうちのプレディクションユニットシンタクスの一例を示す。画像符号化部2000において使用されるシンタクス構造は、図16に示されるシンタクス構造と同じであることができる。符号化対象ブロックに適用された予測モードがイントラ予測である場合(PredMode==MODE_INTRAがTRUE)、符号化対象ブロックiの第1イントラ予測情報30a(intra_pred_mode_l0[i])は符号化される。第1イントラ予測情報30aの符号化には、固定長符号化又は可変長符号化が用いられてもよく、既に符号化済みの周辺ブロックから計算される予測値を使用して予測符号化しても構わない。次に、符号化対象ブロックiにイントラ双方向予測が適用されたか否かを示すフラグ(intra_bipred_flag[i])が符号化される。符号化対象ブロックiにイントラ双方向予測が適用された場合(intra_bipred_flag[i]がTRUE)、前述したように、第2イントラ予測情報30bが予測値(参照第2イントラ予測情報31b)と一致しているか否かを示すフラグ(prev_intra_pred_l1_flag[i])が符号化される。prev_intra_pred_l1_flag[i]がFLASEの場合には、さらに残りの予測モードのうち、第2イントラ予測情報30bがどの予測モードであるかを示すモード情報(rem_intra_luma_pred_l1_mode[i])が符号化される。
 図27は、画像符号化部2000が使用するシンタクス構造のうちのプレディクションユニットシンタクスの他の例を示す。符号化対象ブロックの予測モードがイントラ予測である場合(PredMode==MODE_INTRAがTRUE)、まず、プレディクションユニットがイントラ双方向予測を行うか否かを示すフラグ(intra_bipred_flag)を符号化する。プレディクションユニットがイントラ双方向予測を行わない場合(intra_bipred_flagがFALSE)、プレディクションユニット内のブロックに対してH.264に規定されるような単方向予測を行う。図27中のif(!intra_bipred_flag){}では、H.264で規定されるイントラ予測のシンタクスが一例として示されている。プレディクションユニットがイントラ双方向予測を行う場合(intra_bipred_flagがTRUE)には、第1イントラ予測情報30aと第2イントラ予測情報30bが符号化される。まず、第1イントラ予測情報30a(intra_pred_mode_l0[i])が符号化される。第1イントラ予測情報30aの符号化には、固定長符号化又は可変長符号化を用いてもよく、第1イントラ予測情報30aは、既に符号化済みの周辺ブロックから計算される予測値をもとに予測符号化されても構わない。次に、第2イントラ予測情報30bが予測値(参照2イントラ予測情報31b)と一致しているか否かを示すフラグ(prev_intra_pred_l1_flag[i])が符号化される。prev_intra_pred_l1_flag[i]がFLASEの場合、第2イントラ予測情報30bが残りの予測モードのうちのいずれの予測モードであるかを示すモード情報(rem_intra_luma_pred_l1_mode[i])が符号化される。
 以上のように、本実施形態に係る画像符号化装置は、符号化対象ブロックがイントラ双方向予測を用いて符号化を行う際に、符号化対象ブロックに割り当てられた第1イントラ予測情報を先に符号化し、その後、その第1イントラ予測情報を既に符号化済みの周辺ブロックに割り当てられている第1イントラ予測情報とマッチングを行い、一致する周辺ブロックの第2イントラ予測情報を予測値として用いて、符号化対象ブロックの第2イントラ予測情報を予測符号化している。従って、本実施形態に係る画像符号化装置によれば、付加情報無しに、予測に用いる適切なブロックを選択できることにより、第2イントラ予測情報に関する符号量を削減することができるため、高い符号化効率を実現することができる。
 第2の実施形態の変形例に係る、イントラ方向予測で使用される予測角度情報の符号化方法を簡単に説明する。 
 第2の実施形態は、イントラ双方向予測を行った場合、第1及び第2イントラ予測情報を分離して符号化しているが、このような概念は、イントラ方向予測情報の符号化に適用することができる。図28は、イントラ方向予測の一例を示している。イントラ方向予測は、H.264に示されるように、符号化対象ブロックに隣接する既に符号化済みの参照画素の輝度値をコピーすることにより、予測対象画素の予測値を設定する。この場合、予測対象画素がどの参照画素を参照するかを示す情報として、例えば、予測角度情報(図28中のdx,dy)が利用される。この予測角度情報は、ある予測対象画素に対して水平方向にdx画素及び垂直方向にdy画素で示される角度の位置に存在する参照画素を使用して予測することを示しており、符号化対象ブロック毎に復号側に送信される。
 上述した概念を予測角度情報dx,dyの符号化に適用すると、予測角度情報が水平成分dx及び垂直成分dyに分離され、予測角度情報の垂直成分dyが先に符号化される。その次に、予測角度情報の垂直成分dyと既に符号化済みの周辺ブロックにおける予測角度情報の垂直成分dyとが比較され、その差が最も小さい周辺ブロックが選択ブロックとして選択される。予測角度情報の水平成分dxを符号化する際には、選択ブロックが保持する予測角度情報の水平成分dxが予測値として使用して差分符号化が行われる。
 なお、垂直成分dyが先に符号化される例を説明したが、水平成分dyが先に符号化され、その後に垂直成分dyが予測符号化されても構わない。
 第1の実施形態の第1変形例に係る、MBレベルのWeighted Prediction(WP)で使用されるWP情報の符号化方法を簡単に説明する。 
 第1の実施形態に示した符号化方法の概念は、(JCTVC-A107.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11)に示されるようなマクロブロック(MB)レベルのWeighted Predictionおける後述するWP情報の符号化に対しても適用可能である。これは、H.264に示されるピクチャレベルのWeighted Predictionを、マクロブロックやコーディングツリーブロックといったさらに細かい領域に適用するものであり、オフセット値o及び係数wがマクロブロックやコーディングツリーブロックの単位で切り替えることが可能となる。例えばマクロブロックレベルのWPを行う場合、予測信号は下記数式(26)に従って計算される。
Figure JPOXMLDOC01-appb-M000026
 ここで、MBは、WP適用前の予測値のマクロブロック集合であり、MB’は、WP適用後の予測値のマクロブロック集合である。オフセット値o、係数wといったWP情報は、マクロブロック単位で復号側に送信される。前述の概念をWP係数o、wの符号化に適用すると、WP情報のうちオフセット値oが先に符号化される。その次に、符号化対象ブロックのオフセット値oと、既に符号化済みの周辺ブロックにおけるオフセット値oとが比較され、その差が最も小さい周辺ブロックが選択ブロックとして選択される。係数wを符号化する際には、選択ブロックが保持する係数wを予測値として使用して、差分符号化が行われる。
 なお、オフセット値oが先に符号化される例を説明したが、係数wが先に符号化され、その後オフセット値oが予測符号化されても構わない。
 第1の実施形態の第2変形例に係る、水平・垂直分離型Adaptive Loop Filterで使用されるフィルタ係数情報の符号化方法を簡単に説明する。 
 「JCTVC-A116.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11」に示されるような水平・垂直分離型Adaptive Loop Filterにおけるフィルタ係数の符号化にも上記概念は適用可能である。水平・垂直分離型Adaptive Loop Filterでは、フィルタ係数として水平成分w、垂直成分wが復号側に送信される。この際に、時間位置が異なる既に符号化済みのピクチャからフィルタ係数を予測し、その差分を符号化する。
 前述の概念をフィルタ係数の水平成分w、垂直成分wの符号化に適用すると、フィルタ係数のうち垂直成分wが先に符号化される。その次に、符号化対象ピクチャのフィルタ係数の垂直成分wと、複数の符号化済みのピクチャのフィルタ係数の垂直成分wが比較され、その差が最も小さい符号化済みピクチャが選択ピクチャとして選択される。水平成分wを符号化する際には、選択ピクチャが保持する水平成分wを予測値として使用して、差分符号化が行われる。
 なお、フィルタ係数の垂直成分wが先に符号化される例を説明したが、水平成分wが先に符号化され、その後垂直成分wが予測符号化されても構わない。
 これらの変形例に係る画像符号化方法においても、第1及び第2の実施形態と同様に、高い符号化効率を実現することができる。
 (第3の実施形態) 
 図29は、第3の実施形態に係る画像復号化装置を概略的に示している。この画像復号化装置は、図29に示されるように、画像復号化部2900、復号化制御部2950及び出力バッファ2910を備えている。第3の実施形態に係る画像復号化装置は、第1の実施形態に係る画像符号化装置に対応する。即ち、図29の画像復号化装置による復号処理は、図1の画像符号化処理による符号化処理と相補的な関係を有している。図29の画像復号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像復号化プログラムを実行させることにより実現されても構わない。
 図29の画像復号化装置は、符号化列復号化部2901、逆量子化・逆変換部2902、加算器2903、フレームメモリ2904、予測部2905及び動き情報メモリ2906を備えている。画像復号化部2900において、図示しない蓄積系又は伝送系からの符号化データ60は、符号化列復号化部2901に入力される。この符号化データ60は、例えば、図1の画像符号化装置から多重化された状態で送出された符号化データ14に対応する。
 復号化制御部2950は、画像復号化部2900の復号化処理全般を制御する。具体的には、復号化制御部2950は、画像復号化部2900から、符号化列復号化部2901によって解読された量子化に関する種々の情報及びフィードバック情報71を受け取り、復号化制御情報70を画像復号化部2900に与える。
 本実施形態では、復号化する対象になっている画素ブロック(例えば、マクロブロック、符号化単位を示すコーディングツリーブロックなど)を復号化対象ブロックと称す。また、復号化対象ブロックを含む画像フレームを復号化対象フレームと称す。
 符号化列復号化部2901では、1フレーム又は1フィールド毎に、シンタクスに基づいて、構文解析による解読が行われる。具体的には、符号化列復号化部2901は、各シンタクスの符号列を順次に可変長復号化し、変換係数情報61、動き情報66、並びに復号化対象ブロックに関する復号化パラメータなどを復号する。復号化パラメータは、ブロックサイズ情報及びモード情報などの予測情報を含む。符号化列復号化部2901の詳細については後述する。
 本実施形態において、復号化パラメータは、変換係数情報61、動き情報66及び予測情報を含み、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。予測情報、変換係数に関する情報、及び量子化に関する情報は、復号化制御情報70として復号化制御部2950へ入力される。
 符号化列復号化部2901によって解読された変換係数情報61は、逆量子化・逆変換部2902へ送られる。符号化列復号化部2901によって解読された量子化に関する種々の情報、即ち、量子化パラメータ及び量子化マトリクスなどは、復号化制御部2950に与えられ、逆量子化する際に逆量子化・逆変換部2902にロードされる。逆量子化・逆変換部2902は、復号化制御部2950から得た量子化に関する情報に従って、変換係数情報61を逆量子化し、続いて逆変換処理(例えば、逆離散コサイン変換など)を施して、予測誤差信号62を生成する。図29の逆量子化・逆変換部2902による逆変換処理は、図1の変換・量子化部による変換処理の逆変換である。例えば、図1の画像符号化装置によりウェーブレット変換が施された場合、逆量子化・逆変換部2902は、対応する逆量子化及び逆ウェーブレット変換を実行する。
 逆量子化・逆変換部2902によって復元された予測誤差信号62は、加算器2903へ送られる。加算器2903は、予測誤差信号62と、後述する予測部2905で生成された予測画像信号64とを加算して、復号画像信号63を生成する。生成された復号画像信号63は、出力バッファ2910に一旦蓄積された後、復号化制御部2950が管理する出力タイミングに従って、出力される。また、この復号画像信号63は、フレームメモリ2904に参照画像信号65として格納される。参照画像信号65は、フレームメモリ2904からフレーム毎或いはフィールド毎に順次読み出され、予測部2905へ入力される。
 予測部2905は、図1に示される予測部101と同様の機能を有する。予測部2905は、フレームメモリ2904から参照画像信号65を受け取り、後に説明する符号化列復号化部2901から復号された動き情報66を受け取る。予測部2905は、参照画像信号65及び動き情報66を使用して動き補償を行い、予測画像信号64を生成する。予測画像信号64は、加算器2903へ送られる。動き情報66は、その後の復号化対象ブロックに対する予測処理及び復号化処理のために、動き情報メモリ2906に格納される。予測部2905については、後に詳細に説明する。
 動き情報メモリ2906は、図1に示される予測部101と同様の機能を有している。動き情報メモリ2906には、復号化が終了した画素ブロックの動き情報66が参照動き情報67として一時的に格納される。図4には、動き情報メモリ2906の構成の一例が示されている。動き情報メモリ2906には、復号化済みのブロックに関する動き情報66が参照動き情報67として順次に入力され、その結果、動き情報メモリ2906は、復号化時間の異なる複数の動き情報のフレームを保持する。参照動き情報67は、所定のブロック単位、例えば、4×4画素ブロック単位又は画素単位で動き情報フレーム25内に保持される。
 なお、動き情報メモリ2906は、4×4画素ブロック単位で参照動き情報19を保持する例に限らず、他の画素ブロック単位で参照動き情報67を保持しても構わない。例えば、参照動き情報67を保持する画素ブロック単位は、1画素であってもよく、2×2画素ブロックであっても構わない。また、参照動き情報67を保持する画素ブロックの形状は、正方形状の例に限らず、任意形状とすることができる。
 次に、図29に示す画像復号化部2900内の各部をより詳細に説明する。 
 予測部2905には、複数の予測モードが用意されており、各予測モードは、予測画像信号64の生成方法及び動き補償ブロックサイズが互いに異なる。予測部2905が予測画像信号64を生成する方法としては、具体的には大きく分けて、復号化対象フレーム(又は、フィールド)に関する参照画像信号65を用いて予測画像を生成するイントラ予測(フレーム内予測)と、1以上の参照フレーム(参照フィールド)に関する参照画像信号65を用いて予測画像信号64を生成するインター予測(フレーム間予測)とがある。ここで、参照フレーム(又は、参照フィールド)は、予測画像信号64を生成する際に参照可能な既に復号化済みのフレーム(又は、フィールド)を指す。予測部2905は、イントラ予測及びインター予測を選択的に切り替えて、復号化対象ブロックの予測画像信号64を生成する。
 なお、本実施形態では、インター予測について詳細に説明するが、予測部2905は、例えば後述する復号化コストが最小になるように、インター予測モード、イントラ予測モード及びダイレクトモードなどを選択的に切り替えて予測を行い、予測画像信号64を生成しても構わない。
 予測部2905によるインター予測は、1つの参照フレームを利用して予測画像を生成する単方向予測、及び2以上の参照フレームを利用して予測画像を生成する双方向予測(双予測ともいう)を含む。図30Aは、予測部2905による単方向予測の一例を示している。単方向予測では、予測部2905は、図30Aに示されるように、1フレーム前の参照フレーム内の画素ブロックであって、復号化対象ブロック73と同じ位置のブロックから、動き情報66に含まれる動きベクトルに応じて空間的にシフトした位置にある画素ブロック(参照ブロック)74の参照画像信号65を使用して、予測画像信号64を生成する。即ち、予測部2905は、復号化対象ブロック73の位置(座標)と、符号化列復号化部2901で復号された、復号化対象ブロックの動き情報66に含まれる動きベクトルとで特定される参照ブロック74の参照画像信号65を使用して、予測画像信号64を生成する。インター予測では、少数画素精度(例えば、1/2画素精度、1/4画素精度、1/6画素精度、1/8画素精度など)の動き補償が可能であり、参照画像信号65に対してフィルタリング処理を行うことによって、補間画素の値が生成される。例えば、H.264では、輝度信号に対して1/4画素精度までの補間処理が可能である。1/4画素精度の動き補償を行う場合、動き情報66に含まれる動きベクトルの情報量は、整数画素精度の4倍となる。
 なお、単方向予測では、図30Aに示されるような1フレーム前の参照フレームを使用する例に限らず、図30Bに示されるように、2フレーム前の参照フレームが使用されてもよく、或いは、既に復号化済みのいずれのフレームが使用されても構わない。時間位置が異なる複数の参照フレームの参照画像信号65が保持されている場合、どの時間位置の参照画像信号65から予測画像信号64を生成したかを示す情報は、参照フレーム番号で表される。参照フレーム番号は、動き情報66に含まれる。参照フレーム番号は、領域単位(ピクチャ、ブロック単位など)で変更することができる。例えば、予測部2905は、画素ブロック毎に異なる参照フレームを使用して予測画像信号64を生成することができる。一例として、1フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、0に設定され、また、2フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、1に設定される。他の例として、1フレーム分だけの参照画像信号65がフレームメモリ2904に保持されている場合、即ち、参照フレームの数が1である場合、参照フレーム番号は、常に0に設定される。
 双方向予測では、予測部2905は、2種類以上の動き情報を利用して予測を行う。例えば、H.264では、図31A及び図31Bに示されるように、2種類の動き情報66を利用して予測を行う双方向予測がある。双方向予測で利用される2種類の動き情報66は、符号化列復号化部2901で復号される第1動き情報66a及び第2動き情報66bに対応する。これらの第1及び第2動き情報66a及び66bは、夫々、H.264におけるList0及びList1の動き情報に相当する。第1動き情報66a及び第2動き情報66b、夫々、動きベクトル情報、参照フレーム番号、参照フレーム位置などの動き補償に必要な予測情報を含む。
 図31Aは、時間的に前のフレーム及び時間的に後のフレームの両方から動き補償を行う双方向予測の一例を示している。図31Aに示す双方向予測を行う場合、復号化するフレームの順序を入れ替えて、復号化対象フレームより後に表示すべきフレームが、復号化対象フレームに先行して復号化される。予測部2905は、第1動き情報66aを用いて第1参照フレーム(第1参照画像信号65)内の第1参照ブロック74aを取得し、さらに、第2動き情報66bを用いて第2参照フレーム(第2参照画像信号65)内の第2参照ブロック74bを取得する。図31Aの例では、第1参照フレームは、復号化対象フレームより先に表示すべきフレームであり、第2参照フレームは、復号化対象フレームより後に表示すべきフレームである。続いて、予測部2905は、第1参照ブロック74a及び第2参照ブロック74bの同一位置の画素値を平均若しくは加重平均することで、双方向予測による予測画像信号64を生成する。この加重平均の方法は、H.264と同一の方法を用いても構わない。
 なお、第1及び第2参照フレームの両方は、図31Bに示されるように、復号化対象フレームより時間的に過去に位置してもよく、或いは、図示されないが、復号化対象フレームより時間的に未来に位置しても構わない。また、本実施形態では、双方向予測に利用する動き情報の数が2である場合を説明するが、3以上の動き情報を利用して双方向予測が行われても構わない。さらに、双方向予測で使用される第1及び第2参照フレームは、既に復号化済みのいずれのフレームであっても構わない。
 さらに、インター予測では、予測部2905は、予め用意される複数の動き補償ブロックサイズの中から復号化対象ブロックに適したブロックサイズを選択することができる。即ち、予測部2905は、復号化対象ブロックが複数の小画素ブロックに分割し、小画素ブロック毎に動き補償を行うことができる。図7Aから図7Cは、マクロブロック単位の動き補償ブロックサイズを示し、図7Dは、サブブロック(即ち、8×8画素以下の画素ブロック)単位の動き補償ブロックサイズを示す。図7Aに示されるように、復号化対象ブロックが64×64画素ブロックである場合、動き補償ブロックとして、64×64画素ブロック、64×32画素ブロック、32×64画素ブロック又は32×32画素ブロックなどが選択されることができる。また、図7Bに示されるように、復号化対象ブロックが32×32画素ブロックである場合、動き補償ブロックとして、32×32画素ブロック、32×16画素ブロック、16×32画素ブロック又は16×16画素ブロックなどが選択されることができる。さらに、図7Cに示されるように、復号化対象ブロックが16×16画素ブロックである場合、動き補償ブロックは、16×16画素ブロック、16×8画素ブロック、8×16画素ブロック又は8×8画素ブロックなどに設定されることができる。さらにまた、図7Dに示されるように、復号化対象ブロックが8×8画素ブロックである場合、動き補償ブロックは、8×8画素ブロック、8×4画素ブロック、4×8画素ブロック又は4×4画素ブロックなどが選択されることができる。
 前述したように、インター予測に使用する参照フレーム内の小画素ブロック(例えば、4×4画素ブロック)毎に動き情報66が保存されているので、入力画像信号10の局所的な性質に従って、最適な動き補償ブロックの形状及び動き情報66を利用することができる。また、図7Aから図7Dの動き補償ブロック(H.264に示されるマクロブロック及びサブマクロブロックをまとめた総称)を任意に組み合わせることができる。復号化対象ブロックが図7Aに示される64×64画素ブロックである場合、64×64画素ブロックを分割した4つの32×32画素ブロックの各々に対して、図7Bに示す各ブロックサイズを選択することで、階層的に64×64~16×16画素のブロックを利用することができる。同様にして、図7Dに示されるブロックサイズまで選択可能とする場合、階層的に64×64~4×4のブロックサイズを利用することができる。
 なお、動き補償ブロックは、図8Aから図8Dに示されるように、正方形又は矩形状でなくても構わない。一例として、図9Aに示すように、動き補償ブロックが非対称の大きさの小画素ブロックに分割されても構わない。また、図9Bに示すように、動き補償ブロックは、対角線で分割されても構わない。さらに、図9Cに示すように、動き補償ブロックは、画素ブロックを分割する任意の線分で分割されても構わない。さらにまた、図9Dに示すように、動き補償ブロックは、円弧(非線分)で分割されても構わない。
 動き情報の具体的な処理方法については、第1の実施形態と同様であるので説明を省略する。
 図32は、符号化列復号化部2901をより詳細に示すブロック図である。符号化列復号化部2901は、図32に示されるように、符号化データ60をシンタクス単位に分離して、予測ブロックサイズ及び量子化に関するパラメータを含む符号化データ60a、変換係数に関する符号化データ60b、並びに動き情報に関する符号化データ60c及び60dを出力する分離部3201を備えている。また、符号化列復号化部2901は、パラメータ復号化部3202、変換係数復号化部3203、動き情報復号化部3204を備えている。図32の符号化データ60a、60b、60c、60dは、夫々図10の符号化データ14a、14b、14c、14dに対応する。
 パラメータ復号化部3202は、分離部3201から、予測ブロックサイズ及び量子化に関するパラメータを含む符号化データ60aを受け取り、符号化データ60aを復号化して制御情報71を生成する。変換係数復号化部3203は、分離部3201から、符号化されている変換係数情報である符号化データ60bを受け取り、この符号化データ60bを復号化して、変換係数情報61を生成する。
 動き情報復号化部3204は、動き情報に関する符号化データ60c、60d及び参照動き情報67を入力として、動き情報66を出力する。より具体的には、動き情報復号化部3204は、第1動き情報復号化部3205、第2動き情報復号化部3207及びブロック選択部3206を備える。
 第1動き情報復号化部3205は、図10の第1動き情報符号化部1003に対応する方法で、第1動き情報の符号化データ60cを復号化して第1動き情報66aを得る。より詳細には、第1動き情報復号化部3205は、符号化データ60cを復号化して得られた差分ベクトルと、既に復号化済みの周辺ブロックの参照動き情報67から計算される予測ベクトルとを加算して、第1動き情報66aを生成する。予測ベクトルを生成する方法としては、例えば、H.264に規定される予測方法がある。また、VCEG-AC06に示されるように、復号化対象ブロックに隣接する画素ブロック内の画素A,B,Cの参照動き情報67のうち1つを選択し、復号化対象ブロックの予測ベクトルとする方法もある。この場合、画素A,B,Cのどれを選択したかを示す選択ブロック情報80を復号化する必要がある。
 ブロック選択部3206及び第2動き情報復号化部3207は、復号化対象ブロックに双方向予測が適用された場合に使用される。ブロック選択部3206は、第1動き情報66a及び参照動き情報67を取得し、第2動き情報の予測復号化に使用する画素ブロックを選択ブロックとして選択し、選択ブロックを示す選択ブロック情報80を出力する。第2動き情報復号化部3207は、選択ブロック情報80、及び第2動き情報の符号化データ60dを取得し、選択ブロック情報80が示す周辺ブロックの参照動き情報66を予測ベクトルとして求める。続いて、第2動き情報復号化部3207は、第2動き情報の符号化データ60bを復号化して得られた差分ベクトルと予測ベクトルとを加算して、第2動き情報66bを生成する。
 図33は、復号化対象ブロックに双方向予測が適用された場合における動き情報復号化部3204の動作を概略的に示す。第1動き情報復号化部3205は、第1動き情報の符号化データ60cを、例えばH.264と同様の方式で、復号化する(ステップS3301)。ステップS3301では、例えば、第1動き情報復号化部3205は、H.264と同様の予測方法で予測ベクトル(pred_L0_x, pred_L0_y)を導出し、予測ベクトルと、符号化データ60cを復号化して得られた差分ベクトル(mvd_l0[0],mvd_l0[1])とを加算して、第1動き情報66aの動きベクトル(MV_cur_L0_x, MV_cur_L1_x)を得る。なお、第1動き情報復号化部3205は、復号化済みの周辺ブロックから予測ベクトルを導出し、この予測ベクトルと差分ベクトルとを加算しても構わない。
 次に、ブロック選択部3206は、後段の処理で選択ブロックを選択するための最小コスト(sel_cost)に、初期値としてとり得る最大値(MAX_INT)を代入し、さらに、最適インデクス(sel_idx)に初期値ゼロを代入する(ステップS3302)。ブロック選択部3206は、全ての復号化済みの周辺ブロックに対して、次のステップS3304からステップS3308の処理を繰り返す(ステップS3303)。本実施形態では、復号化済みの周辺ブロック、即ち、復号化対象ブロックよりも先に双予測がなされた予測済画素ブロックは、図11Aに示されるように、復号化対象ブロックに対して左、上、右上、左上、左下に隣接する画素ブロックに設定される。復号化対象ブロックのサイズがNxM画素である場合、周辺ブロックの相対位置及びインデクスidxは、図11Bに示されるようになる。図11B中のdx,dyは、復号化対象ブロック内の左上端画素位置からの相対画素位置の水平成分及び垂直成分を夫々示している。他の例では、図13Aに示されるように、復号化対象ブロックに隣接する全ての復号化済みの画素ブロックが周辺ブロックとして選定されても構わない。図13Aに示される周辺ブロックの相対位置とインデクスidxは、図13Bに示されている。これらの周辺ブロックが画面外や未復号化領域などであって参照不可能な場合、或いは、イントラ予測で符号化されて動き情報を有していない場合には、これらの周辺ブロックは、ステップS3303の処理対象から予め除外される。なお、図11A及び11Bに示される周辺ブロックのいくつかがステップS3303の処理対象から除外されても構わない。また、復号化対象ブロックから空間的又は時間的に離れた復号化済みブロックを周辺ブロックとしても構わない。
 次に、ブロック選択部3206は、インデクスidxに対応する周辺ブロックに双方向予測が適用されたか否かを判定する(ステップS3304)。双方向予測が適用されてない場合、この周辺ブロックは、選択ブロックの候補から除かれ、以降のステップS3305からステップS3308をスキップする。双方向予測が適用された場合、ブロック選択部3206は、周辺ブロックidxの参照動き情報67を参照第1動き情報及び参照第2動き情報に分離する(ステップS3305)。次に、ブロック選択部3206は、前述の数式(6)のように、復号化対象ブロックの第1動き情報66aと周辺ブロックidxの参照第1動き情報との差分値を計算し、コスト(cost)に代入する。
 なお、コストは、前述の数式(7)に示されるSSD(Sum of Square Deference)で算出されても構わない。また、コストは、動きベクトルの水平成分又は垂直成分のいずれかを使用したSAD又はSSDによって算出されても構わない。さらに、コストは、復号化対象ブロックの第1動き情報66a中の動きベクトルと、参照第1動き情報19a中の動きベクトルとの市街地距離、ユークリッド距離又はミンコフスキー距離を使用して、算出されても構わない。さらにまた、コストは、各ベクトルのノルム成分のみ若しくは角度成分のみの差分値を使用して算出されても構わない。
 次に、ブロック選択部3206は、算出したコストcostを最小コストsel_costと比較する(ステップS3307)。ステップS3306で算出されたコストcostがsel_costよりも小さい値の場合、このcostをsel_costに代入し、この周辺ブロックのidxをsel_idxに代入し、sel_cost 及びsel_idxを更新する(ステップS3308)。costがsel_cost以上の値であった場合、ステップS1208はスキップする。
 全ての周辺ブロックidxに対してステップS3304からステップS3308の処理が終了した(ステップS3309)後、ブロック選択部3206は、sel_idxに対応する周辺ブロックを選択ブロックとして選択し(ステップS3310)、選択ブロックの参照第2動き情報を復号化対象ブロックの第2動き情報の予測値(予測ベクトル)に決定する(ステップS3311)。最後に、第2動き情報復号化部3207は、符号化データ60dを復号化して差分ベクトルを生成し、下記数式(27)のように、差分ベクトルと予測ベクトルとを加算して第2動き情報ベクトル(MV_cur_L1_x, MV_cur_L1_y)を生成する。
Figure JPOXMLDOC01-appb-M000027
 ここで、差分ベクトル(水平成分mvd_l1[0]、及び垂直成分mvd_l1[1])は、図17から図19に示される第2動き情報を復号化するためのシンタクスである。また、ベクトル(pred_L1_x,pred_L1_y)は、予測ベクトルを示す。
 このようにして、動き情報復号化部3204は、第1動き情報66a及び第2動き情報66bを復号化する。
 これらの復号化部3202、3203、3204には、エントロピー復号化(例えば等長復号化、ハフマン復号化若しくは算術復号化など)が適用されることができる。
 参照第1動き情報のスケーリング及び予測ベクトルのスケーリングについては、第1の実施形態と同様であるのでその説明を省略する。
 図16は、画像復号化部2900において用いられるシンタクス構造を示している。図16に示されるように、シンタクスは、主に3つのパート、即ち、ハイレベルシンタクス1601、スライスレベルシンタクス1604及びコーディングツリーブロックレベルシンタクス1607を含む。ハイレベルシンタクス1601は、スライス以上の上位レイヤのシンタクス情報を含む。スライスレベルシンタクス1604は、スライス毎に必要な情報を含み、コーディングツリーブロックレベルシンタクス1607は、図7Aから図7Dに示されるマクロブロックに代表される復号化の一単位であるコーディングツリーブロック毎に必要とされるデータを含む。
 各パートは、さらに詳細なシンタクスを含む。ハイレベルシンタクス1601は、シーケンスパラメータセットシンタクス1602及びピクチャパラメータセットシンタクス1603などのシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス1604は、スライスヘッダーシンタクス1605及びスライスデータシンタクス1606などを含む。さらに、コーディングツリーブロックレベルシンタクス1607は、コーディングツリーブロックレイヤーシンタクス1608及びプレディクションユニットシンタクス1609などを含む。
 図17は、プレディクションユニットシンタクスの一例を示す。復号化対象ブロックにインター予測が適用された場合(PredMode==MODE_INTERがTRUE)、インター予測のブロック分割情報(inter_partitioning_idc)が復号化される。その後、分割ブロックi毎に、動き情報に含まれるinter_pred_idc[i]、ref_idx_l0[i]、ref_idx_l1[i]、mvd_l0[i][0/1]、mvd_l1[i][0/1]が復号化される。inter_pred_idc[i]は、予測方向を示すシンタクスである。具体的には、シンタクスinter_pred_idc[i]は、単方向予測(List0方向又はList1方向)及び双方向予測のどちらが適用されたかを示す。ref_idx_l0[i]及びmvd_l0 [i][0/1]は、inter_pred_idc[i]がList0方向の動き情報(即ち、第1動き情報)を復号化したことを示す場合(inter_pred_idc[i]!=Pred_L1)に復号化される。ref_idx_l0[i]は、第1動き情報に含まれる参照フレーム番号を示すシンタクスである。ref_idx_l0[i]は、List0方向の参照フレームの数が2以上である場合(num_ref_idx_l0_active_minus1 > 0)に復号化される。また、mvd_l0[i][0/1]は、第1動き情報中の動きベクトルと予測ベクトルとの差分を示すシンタクスである。
 ref_idx_l1[i]、mvd_l1[i][0/1]は、inter_pred_idc[i]がList1方向の動き情報(即ち、第2動き情報)を復号化したことを示す場合(inter_pred_idc[i]!=Pred_L0)に復号化される。ref_idx_l1[i]は、List1方向の参照フレームの数が2以上である場合(num_ref_idx_l1_active_minus1 > 0)に復号化される。
 図17に示すシンタクステーブルの行間には、本実施形態で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。さらに、マクロブロックレイヤーシンタクスに記述されている各々のシンタクス要素は、後述するマクロブロックデータシンタクスに明記されるように変更しても構わない。
 本実施形態では、復号化対象ブロックがマクロブロックである例を説明したが、複数のマクロブロックをまとめて動き補償予測を行う拡張マクロブロックに対しても、上述した復号化処理は適応可能である。また、コーディングツリーブロックレイヤーシンタクス1608及びプレディクションユニットシンタクス1609は、再帰構造を持つような構成とすることも可能である。
 以上のように、本実施形態に係る画像復号化装置は、前述した第1の実施形態に係る画像符号化装置によって符号化された画像を復号化している。従って、本実施形態に係る画像復号化は、比較的小さな符号化データから高画質な復号画像を再生することができる。
 なお、ブロック選択部3206は、コストが最小となる一つの周辺ブロックを選択する例に限定されず、コストが小さい順番にM種類の周辺ブロックを選択ブロックとして選択しても構わない。この場合、ブロック選択部3206は、割り当てられている参照第2動き情報が互いに異なる周辺ブロックを選択する。周辺ブロックからどのブロックが選択ブロックとして選択されたかを示す選択ブロック情報80は、第2動き情報復号化部3207によって復号化される。図18は、プレディクションユニットシンタクスの他の例を示し、このプレディクションユニットシンタクスは、選択ブロック情報80に関連するシンタクス(mvp_idx_l1[i])を含む。シンタクスmvp_idx_l1[i]は、選択ブロックの数が2以上である場合に復号化される。
 また、本実施形態では、ブロック選択部3206が、コストが最小となる周辺ブロックを選択ブロックとして選択し、第2動き情報復号化部3207が、選択ブロックの参照第2動き情報中の動きベクトルを予測ベクトルとして使用する例を説明したが、これに限定されず、最小のコストの値が所定の閾値より大きい値であった場合、第2動き情報復号化部3207は、選択ブロックの参照第2動き情報中の動きベクトルを予測ベクトルとして使用しなくても構わない。この場合、H.264に規定される予測ベクトル導出方法で予測ベクトルを生成することができる。H.264に規定される予測ベクトル導出方法では、参照第2動き情報中の動きベクトルのメディアン値、又は所定の周辺ブロック(例えば、復号化対象ブロックの左に隣接する周辺ブロック)の参照第2動き情報中の動きベクトルが予測ベクトルとして生成される。
 閾値がゼロに設定される例では、ブロック選択部3206は、復号化対象ブロックの第1動き情報中の動きベクトルと、周辺ブロックの参照第1動き情報中の動きベクトルが一致した場合にのみ、動きベクトルが一致した周辺ブロックを選択ブロックとして選択する。いずれの周辺ブロックの参照第1動き情報中の動きベクトルも第1動き情報中の動きベクトルと一致しない場合、第2動き情報復号化部3207は、前述のH.264に規定される予測ベクトルの導出方法で、復号化対象ブロックの予測ベクトルを導出する。
 また、動き情報復号化部3204は、第2動き情報の動きベクトルを予測し、復号化した差分ベクトルと予測ベクトルとを加算してmvd_l1を得る例を説明したが、動き情報復号化部3204は、mvd_l1を復号化しなくても構わない。この場合、第2動き情報中の動きベクトルは、予測ベクトルpred_mv_l1と同一である。より具体的には、予測部2905は、ブロック選択部3206と同じ方法で、復号化済みの周辺ブロックに割り当てられている参照第2動き情報から予測ベクトルを導出し、この予測ベクトルを第2動きベクトルとして使用して、復号化対象ブロックの予測画像信号64を生成する。図19は、符号化データ60dを復号化しない場合のプレディクションユニットシンタクスの例を示している。
 同様に、第1動き情報に関連する差分mvd_l0は、復号化されなくても構わない。この場合、第1動き情報の動きベクトルは、予測ベクトルpred_mv_l0と同一である。より具体的には、予測部2905は、第1動き情報復号化部3207と同じ方法で、復号化済みの周辺ブロックに割り当てられている参照第1動き情報から予測ブロックを導出し、この予測ベクトルを第1動きベクトルとして使用して、復号化対象ブロックの予測画像信号64を生成する。符号化データ60cを復号化しない場合、図33のフローチャートのうち、ステップS3301を消去ればよい。
 なお、本実施形態は、H.264に示されるスキップモードのように、変換係数を復号化しない場合についても、適用可能である。
 (第4の実施形態) 
 図34は、第4の実施形態に係る画像復号化装置を概略的に示している。この画像復号化装置は、図34に示されるように、画像復号化部3400、復号化制御部2950及び出力バッファ2910を備えている。第4の実施形態に係る画像復号化装置は、第2の実施形態に係る画像復号化装置に対応する。即ち、図34の画像復号化装置による復号処理は、図20の画像復号化処理による復号化処理と相補的な関係を有している。図34の画像復号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像復号化プログラムを実行させることにより実現されても構わない。
 本実施形態では、画面内で予測を行うイントラ予測に関する。以下、本実施形態の画像復号化装置を、図34を参照して説明するが、上述の説明と重複する部分を省略する。イントラ予測部3405は、参照メモリ3404から、復号化対象フレームの参照画像信号69を受け取り、参照画像信号69に基づいて予測画像信号64及びイントラ予測情報76を生成する。参照メモリ3404は、復号化対象フレームに関連する復号画像信号63を参照画像信号69として保持する。
 イントラ予測部3405によるイントラ予測は、H.264で規定される9種類のイントラ予測モードの中から1種類のイントラ予測モードを選択し、選択した予測モードで予測画像信号64を求めるイントラ単方向予測と、9種類のイントラ予測モードの中から2種類のイントラ予測モードを選択し、各イントラ予測モードから計算される予測画像信号を加重平均して、最終的な予測画像信号64を求めるイントラ双方向予測とを含む。
 イントラ予測部3405は、イントラ単方向予測で予測を行った場合、選択したイントラ予測モードを示す情報をイントラ予測情報76として出力する。イントラ予測部3405は、イントラ双方向予測で予測を行った場合、2種類のイントラ予測モードを示す情報、即ち、第1イントラ予測情報及び第2イントラ予測情報をイントラ予測情報76として出力する。イントラ予測情報76は、参照イントラ予測情報77としてイントラ予測情報メモリ3406に格納される。
 図22及び図23は、イントラ双方向予測における予測情報の組み合わせの例を示している。図22は、第2イントラ予測情報が第1イントラ予測情報より大きいという制約を課した場合の組み合わせの例を示す。図22に示されるように、第1イントラ予測情報は、0から7までのいずれかの値をとり、第2イントラ予測情報は、第1イントラ予測情報の値によって取り得る値が異なる。第1イントラ予測情報が0の場合には、第2イントラ予測情報は、1から8の値をとることができる。第1イントラ予測情報が7の場合には、第2イントラ予測情報は8の値をとる。図23は、第2イントラ予測情報が第1イントラ予測情報より小さいという制約を課した場合の組み合わせの例を示している。
 図34のイントラ予測部3405によるイントラ双方向予測では、画素位置(x,y)の予測画像信号p(x,y)は、上記の数式(24)で計算される。
 イントラ予測情報メモリ3406は、復号化対象ブロックに適用した予測モードを示すイントラ予測情報76をイントラ予測部3405から受け取り、符号化列復号化部3401での使用に備えて、参照イントラ予測情報77として一時的に格納する。
 図35に示す符号化列復号化部3401は、図32に示す符号化列復号化部2901と同様の機能を有するが、動き情報復号化部3204に代えてイントラ予測情報復号化部3504を有している点が符号化列復号化部2901と異なる。パラメータ復号化部3202は、分離部3201から、予測ブロックサイズ及び量子化に関するパラメータを含む符号化データ60aを受け取り、符号化データ60aを復号化して制御情報71を生成する。変換係数復号化部3203は、分離部3201から、変換係数に関する符号化データ60bを受け取り、この符号化データ60bを復号化して、変換係数情報61を得る。
 イントラ予測情報復号化部3504は、参照イントラ予測情報77を用いて、イントラ予測情報に関する符号化データ60e、60fを復号化し、イントラ予測情報76を生成する。具体的には、イントラ予測情報復号化部3504は、第1イントラ予測情報復号化部3505、第2イントラ予測情報復号化部3507及びブロック選択部3506を有する。ここで、図35の符号化データ60a、60b、60e、60fは、図32の符号化データ14a、14b、14e、14fに対応する。
 第1イントラ予測情報復号化部3505は、図24に示される第1イントラ予測情報符号化部2406に対応する方法で、符号化データ60eを復号化して第1イントラ予測情報76aを生成する。
 ブロック選択部3506及び第2イントラ予測情報復号化部3507は、復号化対象ブロックにイントラ双方向予測が適用された場合に使用される。ブロック選択部3506は、復号化対象ブロックの第1イントラ予測情報76a及び参照イントラ予測情報77を取得し、第2イントラ予測情報の予測復号化に使用する画素ブロックを示す選択ブロック情報80を出力する。
 第2イントラ予測情報復号化部3507は、選択ブロック情報80及び第2イントラ予測情報に関する符号化データ60fを受け取る。第2イントラ予測情報復号化部3507は、符号化データ60fを復号化して差分ベクトルを得て、さらに、選択ブロック情報80が示す画素ブロックの参照イントラ予測情報77中の動きベクトルを予測ベクトルとして導出する。続いて、第2イントラ予測情報復号化部3507は、差分ベクトルと予測ベクトルとを加算して第2イントラ予測情報76bを生成する。
 イントラ予測情報復号化部3504が第2イントラ予測情報76bの復号に使用する予測ベクトルを導出する方法は、第2の実施形態で説明したものと同様であり、図25に示されるフローチャートの「符号化」を「復号化」と読み替えればよいため、詳細な説明を省略する。なお、イントラ予測情報76b(IntraPredMode)の計算処理は、擬似プログラムコードで下記の数式(28)のように記述される。
Figure JPOXMLDOC01-appb-M000028
 なお、prev_intra_pred_l1_flag, rem_intra_pred_l1_mode , prev_intra_pred_modeに関する説明は第2の実施形態と同様であるので省略する。
 図26は、画像復号化部3400において用いられるシンタクス構造のうち、プレディクションユニットシンタクスの一例を示す。復号化対象ブロックの予測モードがイントラ予測である場合(PredMode==MODE_INTRAがTRUE)に、復号化対象ブロックiの第1イントラ予測情報76a(intra_pred_mode_l0[i])が復号化される。第1イントラ予測情報76aの復号化には、固定長復号化又は可変長復号化を用いられてもよく、第1イントラ予測情報76aは、既に復号化済みの周辺ブロックから計算される予測値をもとに予測復号化されても構わない。次に、復号化対象ブロックiにイントラ双方向予測が適用されたか否かを示すフラグ(intra_bipred_flag[i])が復号化される。復号化対象ブロックiにイントラ双方向予測が適用された場合(intra_bipred_flag[i]がTRUE)、前述のように、第2イントラ予測情報76bが参照2イントラ予測情報から導出される予測値と一致しているか否かを示すフラグ(prev_intra_pred_l1_flag[i])が復号化される。prev_intra_pred_l1_flag[i]がFLASEの場合には、第2イントラ予測情報76bが、残りの予測モードのうちのいずれの予測モードであるかを示すモード情報(rem_intra_luma_pred_l1_mode[i])がさらに復号化される。
 図27は、画像復号化部3400において用いられるシンタクス構造のうち、プレディクションユニットシンタクスの他の例を示す。復号化対象ブロックの予測モードがイントラ予測である場合(PredMode==MODE_INTRAがTRUE)、まずプレディクションユニットは、イントラ双方向予測を行うか否かを示すフラグ(intra_bipred_flag)を復号化する。プレディクションユニットがイントラ双方向予測を行わない場合(intra_bipred_flagがFALSE)、プレディクションユニット内のブロックに対してH.264に規定されるような単方向予測を行う。図27中のif(!intra_bipred_flag){}には、H.264で規定されるイントラ予測のシンタクスが一例として示されている。プレディクションユニットがイントラ双方向予測を行う場合(intra_bipred_flagがTRUE)には、第1イントラ予測情報30a及び第2イントラ予測情報30bが復号化される。まず、第1イントラ予測情報76a(intra_pred_mode_l0[i])が復号化される。第1イントラ予測情報76aの復号化には固定長復号化又は可変長復号化が用いられてもよく、第1イントラ予測情報76aは、既に復号化済みの周辺ブロックから計算される予測値をもとに予測復号化されても構わない。次に、第2イントラ予測情報76bが参照2イントラ予測情報から導出される予測値と一致しているか否かを示すフラグ(prev_intra_pred_l1_flag[i])が復号化される。prev_intra_pred_l1_flag[i]がFLASEの場合、第2イントラ予測情報30bが残りの予測モードのうちのいずれの予測モードであるかを示すモード情報(rem_intra_luma_pred_l1_mode[i])がさらに復号化される。
 以上のように、本実施形態に係る画像復号化装置は、前述した第2の実施形態に係る画像符号化装置によって符号化された画像を復号化している。従って、本実施形態に係る画像復号化は、比較的小さな符号化データから高画質な復号画像を再生することができる。
 第4の実施形態の変形例に係る、イントラ方向予測で使用される予測角度情報の復号化方法を簡単に説明する。 
 第4の実施形態は、イントラ双方向予測を行った場合、第1及び第2イントラ予測情報を分離して復号化しているが、このような概念は、イントラ方向予測情報の復号化に適用することができる。図28は、イントラ方向予測の一例を示している。イントラ方向予測は、H.264に示されるように、復号化対象ブロックに隣接する既に復号化済みの参照画素の輝度値をコピーすることにより、予測対象画素の予測値を設定する。この場合、予測対象画素がどの参照画素を参照するかを示す情報として、例えば、予測角度情報(図28中のdx,dy)が利用される。この予測角度情報は、ある予測対象画素に対して水平方向にdx画素及び垂直方向にdy画素で示される角度の位置に存在する参照画素を使用して予測することを示しており、復号化対象ブロック毎に符号側から受信される。
 上述した概念を予測角度情報dx,dyの復号化に適用すると、予測角度情報が水平成分dx及び垂直成分dyに分離され、予測角度情報の垂直成分dyが先に復号化される。その次に、予測角度情報の垂直成分dyと既に復号化済みの周辺ブロックにおける予測角度情報の垂直成分dyとが比較され、その差が最も小さい周辺ブロックが選択ブロックとして選択される。予測角度情報の水平成分dxを復号化する際には、選択ブロックが保持する予測角度情報の水平成分dxが予測値として使用して差分復号化が行われる。
 なお、垂直成分dyが先に復号化される例を説明したが、水平成分dyが先に復号化され、その後に垂直成分dyが予測復号化されても構わない。
 前述の概念を予測角度情報dx, dyの復号化に適用すると、予測角度情報を水平成分dx、垂直成分dyに分離し、予測角度情報の垂直成分dyのみを先に復号化する。その次に、復号化対象ブロックの垂直成分dyと、既に復号化済みの周辺ブロックにおける予測角度情報の垂直成分dyを比較し、その差が最も小さい周辺ブロックを選択ブロックとして選択する。予測角度情報の水平成分dxを復号化する際には、前記選択ブロックが保持する予測角度情報の水平成分dxを予測値として、差分復号化する。
 以上が、イントラ予測における別の実施形態である予測角度情報の復号化方法である。本実施の形態では垂直成分dyを先に復号化したが、水平成分dxを先に復号化しその後垂直成分dyを予測復号化しても構わない。
 第1の実施形態の第1変形例に係る、MBレベルのWeighted Prediction(WP)で使用されるWP情報の復号化方法を簡単に説明する。 
 第3の実施形態に示した復号化方法の概念は、(JCTVC-A107.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11)に示されるようなマクロブロック(MB)レベルのWeighted PredictionおけるWP情報の復号化に対しても適用可能である。これは、H.264に示されるピクチャレベルのWeighted Predictionを、マクロブロックやコーディングツリーブロックといったさらに細かい領域に適用するものであり、オフセット値o, 係数wがマクロブロックやコーディングツリーブロックの単位で切り替えることが可能となる。例えばマクロブロックレベルのWPを行う場合、予測信号は上記数式(24)に従って計算される。
 オフセット値o、係数wといったWP情報は、マクロブロック単位で復号側から受信される。前述の概念をWP係数o、wの復号化に適用すると、WP情報のうちオフセット値oが先に復号化される。その次に、復号化対象ブロックのオフセット値oと、既に復号化済みの周辺ブロックにおけるオフセット値oとが比較され、その差が最も小さい周辺ブロックが選択ブロックとして選択される。係数wを復号化する際には、選択ブロックが保持する係数wを予測値として使用して、差分復号化が行われる。
 なお、オフセット値oが先に復号化される例を説明したが、係数wが先に復号化され、その後オフセット値oが予測復号化されても構わない。
 第1の実施形態の第2変形例に係る、水平・垂直分離型Adaptive Loop Filterで使用されるフィルタ係数情報の復号化方法を簡単に説明する。 
 「JCTVC-A116.doc, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11」に示されるような水平・垂直分離型Adaptive Loop Filterにおけるフィルタ係数の復号化にも上記概念は適用可能である。水平・垂直分離型Adaptive Loop Filterでは、フィルタ係数として水平成分w、垂直成分wが復号側に送信される。この際に、時間位置が異なる既に復号化済みのピクチャからフィルタ係数を予測し、その差分を復号化する。
 前述の概念をフィルタ係数の水平成分w、垂直成分wの復号化に適用すると、フィルタ係数のうち垂直成分wが先に復号化される。その次に、復号化対象ピクチャのフィルタ係数の垂直成分wと、複数の復号化済みのピクチャのフィルタ係数の垂直成分wが比較され、その差が最も小さい復号化済みピクチャが選択ピクチャとして選択される。水平成分wを復号化する際には、選択ピクチャが保持する水平成分wを予測値として使用して、差分復号化が行われる。
 なお、フィルタ係数の垂直成分wが先に復号化される例を説明したが、水平成分wが先に復号化され、その後垂直成分wが予測復号化されても構わない。
 これらの変形例に係る画像復号化方法においても、第3及び第4の実施形態と同様に、高い復号化効率を実現することができる。
 なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても構わない。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても構わない。
 この一例として、上述した第1から第4の実施形態を次のように変形しても同様の効果が得られる。 
 (1)第1から第4の実施形態では、処理対象フレームを16×16画素ブロックなどの矩形ブロックに分割し、図3に示したような画面左上の画素ブロックから右下の画素ブロックに向かう順序で、符号化又は復号化する場合を例にとって説明しているが、符号化又は復号化順序は、この例に制限されることはない。例えば、符号化又は復号化順序は、画面右下から左上に向かう順序でもよく、右上から左下に向かう順序でも構わない。また、符号化又は復号化順序は、画面の中央部から周辺部に渦巻状に向かう順序であってもよく、画面の周辺部から中心部に向かう順序であっても構わない。 
 (2)第1から第4の実施形態では、輝度信号と色差信号とを分割せず、一方の色信号成分に限定した場合を例にとって説明している。しかしながら、輝度信号及び色差信号に対して、異なる予測処理を使用してもよく、或いは、同一の予測処理を使用しても構わない。異なる予測処理を使用する場合、色差信号に対して選択した予測方法を、輝度信号と同様の方法で符号化/復号化する。
 その他、本発明の要旨である、複数の相関のある情報を予測符号化/復号化する際に、一方を先に符号化し、当該情報を用いて周囲の適切な予測値を選択し、もう一方の予測符号化することを逸脱しない範囲で種々の変更を施しても同様に実施可能であることはいうまでもない。
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…入力画像信号、11…予測画像信号、13…変換係数情報、14…符号化データ、15…復号予測誤差信号、16…局所復号画像信号、17…参照画像信号、18…動き情報、19…参照動き情報、20…ブロック選択情報、60…符号化データ、61…変換係数情報、62…予測誤差信号、63…復号画像信号、64…予測画像信号、65…参照画像信号、66…動き情報、67…参照動き情報、80…選択ブロック情報、100…画像符号化部、101…予測部、102…減算器、103…変換・量子化部、104…エントロピー符号化部、105…逆量子化・逆変換部、106…加算器、107…フレームメモリ、108…動き情報メモリ、110…出力バッファ、150…符号化制御部、1001…パラメータ符号化部、1002…変換係数符号化部、1003…動き情報符号化部、1004…多重化部、1005…動き情報分離部、1006…第1動き情報符号化部、1007…第2動き情報符号化部、1008…ブロック選択部、2000…画像符号化部、2001…イントラ予測部、2002…イントラ予測情報メモリ、2003…エントロピー符号化部、2004…参照メモリ、2403…イントラ予測情報符号化部、2405…イントラ予測情報分離部、2406…第1イントラ予測情報符号化部、2407…ブロック選択部、2408…第2イントラ予測情報符号化部、2900…画像復号化部、2901…符号化列復号化部、2902…逆量子化・逆変換部、2903…加算器、2904…フレームメモリ、2905…予測部、2906…動き情報メモリ、2910…出力バッファ、2950…復号化制御部、3201…分離部、3202…パラメータ復号化部、3203…変換係数復号化部、3204…第1動き情報復号化部、3206…ブロック選択部、3207…第2動き情報復号化部、3400…画像復号化部、符号化列復号化部、3404…参照メモリ、3405…イントラ予測部、3406…イントラ予測情報メモリ

Claims (12)

  1.  第1及び第2動きベクトルを用いた双予測により符号化対象ブロックを動き補償予測符号化する予測符号化ステップと、
     前記符号化対象ブロックの前記第1動きベクトルを符号化する第1動きベクトル符号化ステップと、
     前記符号化対象ブロックよりも先に双予測がなされた予測済画素ブロックから、前記符号化対象ブロックの前記第1動きベクトルに最も類似する第1動きベクトルを有する選択ブロックを選択する選択ステップと、
     前記符号化対象ブロックの前記第2動きベクトルと前記選択ブロックの第2動きベクトルとの差分ベクトルを符号化する第2動きベクトル符号化ステップと、
    を備える画像符号化方法。
  2.  前記符号化対象ブロックを含む第1フレームと前記符号化対象ブロックの前記第1動きベクトルが参照する第2フレームとの間の第1時間距離を算出する第1算出ステップと、
     前記第1フレームと前記予測済画素ブロックの前記第1動きベクトルが参照する第3フレームとの間の第2時間距離を算出する第2算出ステップと、
     前記第1及び第2時間距離を使用して、前記予測済画素ブロックの前記第1動きベクトルが前記第2フレームを参照するように、前記予測済画素ブロックの前記第1動きベクトルをスケーリングするスケーリングステップと、
     をさらに備えることを特徴とする請求項1の画像符号化方法。
  3.  前記第1フレームと前記符号化対象ブロックの前記第2動きベクトルが参照する第4フレームとの間の第3時間距離を算出する第3算出ステップと、
     前記第1フレームと前記選択ブロックの前記第2動きベクトルが参照する第5フレームとの間の第4時間距離を算出する第4算出ステップと、
     前記第3及び第4時間距離を使用して、前記選択ブロックの前記第2動きベクトルが前記第4フレームを参照するように、前記選択ブロックの前記第2動きベクトルをスケーリングするスケーリングステップと、
     をさらに備えることを特徴とする請求項1の画像符号化方法。
  4.  前記選択ステップは、前記符号化対象ブロックの前記第1動きベクトルと前記予測済画素ブロックの前記第1動きベクトルとが類似しているほど値が小さくなるコストを算出し、当該コストが最も小さい予測済画素ブロックを前記選択ブロックとして選択し、
     前記第2動きベクトル符号化ステップは、前記コストが特定の条件を満たす場合には、前記符号化対象ブロックの第2動きベクトルと前記予測済画素ブロックの第2動きベクトルのメディアン値との差分ベクトルを符号化することを特徴とする請求項3に記載の画像符号化方法。
  5.  前記双予測に用いられる前記第2動きベクトルが前記選択ブロックの前記第2動きベクトルである場合、前記第2動きベクトル符号化ステップを使用しないことを特徴とする請求項1に記載の画像符号化方法。
  6.  前記双予測に用いられる前記第2動きベクトルが前記予測済画素ブロックの前記第1動きベクトルである場合、前記第1動きベクトル符号化ステップを使用しないことを特徴とする請求項1に記載の画像符号化方法。
  7.  第1及び第2動きベクトルを用いた双予測により動き補償予測復号化すべき復号化対象ブロックに関する第1動きベクトルと差分ベクトルとを含む符号化データを復号化する第1動きベクトル復号化ステップと、
     前記復号化対象ブロックよりも先に双予測がなされた予測済画素ブロックから、前記復号化対象ブロックの前記第1動きベクトルに最も類似する第1動きベクトルを有する選択ブロックを選択する選択ステップと、
     前記復号化対象ブロックの前記差分ベクトルと前記選択ブロックの第2動きベクトルとを加算して前記復号化対象ブロックの第2動きベクトルを復号化する第2動きベクトル復号化ステップと、
     前記第1動きベクトルと前記第2動きベクトルを用いた双予測により、前記復号化対象ブロックを動き補償予測復号化する予測復号化ステップと、
    を備える画像復号化方法。
  8.  前記復号化対象ブロックを含む第1フレームと前記復号化対象ブロックの前記第1動きベクトルが参照する第2フレームとの間の第1時間距離を算出する第1算出ステップと、
     前記第1フレームと前記予測済画素ブロックの前記第1動きベクトルが参照する第3フレームとの間の第2時間距離を算出する第2算出ステップと、
     前記第1及び第2時間距離を使用して、前記予測済画素ブロックの前記第1動きベクトルが前記第2フレームを参照するように、前記予測済画素ブロックの前記第1動きベクトルをスケーリングするスケーリングステップと、
     をさらに備えることを特徴とする請求項7の画像復号化方法。
  9.  前記第1フレームと前記復号化対象ブロックの前記第2動きベクトルが参照する第4フレームとの間の第3時間距離を算出する第3算出ステップと、
     前記第1フレームと前記選択ブロックの前記第2動きベクトルが参照する第5フレームとの間の第4時間距離を算出する第4算出ステップと、
     前記第3及び第4時間距離を使用して、前記選択ブロックの前記第2動きベクトルが前記第4フレームを参照するように、前記選択ブロックの前記第2動きベクトルをスケーリングするスケーリングステップと、
     をさらに備えることを特徴とする請求項7の画像復号化方法。
  10.  前記選択ステップは、前記復号化対象ブロックの前記第1動きベクトルと前記予測済画素ブロックの前記第1動きベクトルとが類似しているほど値が小さくなるコストを算出し、当該コストが最も小さい予測済画素ブロックを前記選択ブロックとして選択し、
     前記第2動きベクトル復号化ステップは、前記コストが特定の条件を満たす場合には、前記復号化対象ブロックの前記差分ベクトルと前記予測済画素ブロックの第2動きベクトルのメディアン値とを加算して前記復号化対象ブロックの前記第2動きベクトルを復号化することを特徴とする請求項9に記載の画像復号化方法。
  11.  前記双予測に用いられる前記第2動きベクトルが前記選択ブロックの前記第2動きベクトルである場合、前記第2動きベクトル復号化ステップを使用しないことを特徴とする請求項7に記載の画像復号化方法。
  12.  前記双予測に用いられる前記第1動きベクトルが前記予測済画素ブロックの前記第1動きベクトルである場合、前記第1動きベクトル復号化ステップを使用しないことを特徴とする請求項7に記載の画像復号化方法。
PCT/JP2010/062015 2010-07-15 2010-07-15 画像符号化方法及び画像復号化方法 WO2012008040A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/062015 WO2012008040A1 (ja) 2010-07-15 2010-07-15 画像符号化方法及び画像復号化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/062015 WO2012008040A1 (ja) 2010-07-15 2010-07-15 画像符号化方法及び画像復号化方法

Publications (1)

Publication Number Publication Date
WO2012008040A1 true WO2012008040A1 (ja) 2012-01-19

Family

ID=45469064

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/062015 WO2012008040A1 (ja) 2010-07-15 2010-07-15 画像符号化方法及び画像復号化方法

Country Status (1)

Country Link
WO (1) WO2012008040A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014511648A (ja) * 2011-03-08 2014-05-15 クゥアルコム・インコーポレイテッド ビデオコード化における双方向予測インターモードのための動きベクトル予測子(mvp)
JP2015015595A (ja) * 2013-07-04 2015-01-22 富士通株式会社 動画像符号化装置、符号化モード判定方法及び符号化プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004023458A (ja) * 2002-06-17 2004-01-22 Toshiba Corp 動画像符号化/復号化方法及び装置
JP2007505529A (ja) * 2003-09-12 2007-03-08 中国科学院▲計▼算技▲術▼研究所 映像符号化の符号化側/復号化側に使用される双方向予測方法
JP2010081465A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd 動画像符号化方法および動画像復号化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004023458A (ja) * 2002-06-17 2004-01-22 Toshiba Corp 動画像符号化/復号化方法及び装置
JP2007505529A (ja) * 2003-09-12 2007-03-08 中国科学院▲計▼算技▲術▼研究所 映像符号化の符号化側/復号化側に使用される双方向予測方法
JP2010081465A (ja) * 2008-09-29 2010-04-08 Hitachi Ltd 動画像符号化方法および動画像復号化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SADAATSU KATO ET AL.: "Motion Vector Prediction for Multiple Reference Frame Video Coding Using Temporal Motion Vector Normalization", 2004 NEN PICTURE CODING SYMPOSIUM OF JAPAN (PCSJ2004) YOKOSHU, 2004 NEN 11 GATSU, 2004, pages 43 - 44 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014511648A (ja) * 2011-03-08 2014-05-15 クゥアルコム・インコーポレイテッド ビデオコード化における双方向予測インターモードのための動きベクトル予測子(mvp)
US9288501B2 (en) 2011-03-08 2016-03-15 Qualcomm Incorporated Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
JP2015015595A (ja) * 2013-07-04 2015-01-22 富士通株式会社 動画像符号化装置、符号化モード判定方法及び符号化プログラム

Similar Documents

Publication Publication Date Title
US20240292020A1 (en) Image encoding method and image decoding method
WO2012008040A1 (ja) 画像符号化方法及び画像復号化方法
JP5479648B1 (ja) 画像符号化方法及び画像復号化方法
JP5444497B2 (ja) 画像符号化方法及び画像復号化方法
JP6795666B2 (ja) 画像符号化方法及び画像復号化方法
JP6961781B2 (ja) 画像符号化方法及び画像復号化方法
JP7242811B2 (ja) 画像符号化方法及び画像復号化方法
JP6980889B2 (ja) 画像符号化方法及び画像復号化方法
JP5571262B2 (ja) 画像符号化方法及び画像復号化方法
JP5367161B2 (ja) 画像符号化方法、装置、及びプログラム
JP6609004B2 (ja) 画像符号化方法及び画像復号化方法
JP6370977B2 (ja) 画像符号化方法及び画像復号化方法
JP6367452B2 (ja) 画像符号化方法及び画像復号化方法
JP6271694B2 (ja) 画像符号化方法及び画像復号化方法
JP6196341B2 (ja) 画像符号化方法及び画像復号化方法
JP5659314B1 (ja) 画像符号化方法及び画像復号化方法
JP5649701B2 (ja) 画像復号化方法、装置、及びプログラム
JP5509398B1 (ja) 画像符号化方法及び画像復号化方法
JP2014131295A (ja) 画像符号化方法及び画像復号化方法
JP2014131293A (ja) 画像符号化方法及び画像復号化方法
JP2015053729A (ja) 画像符号化方法及び画像復号化方法
JP2013219805A (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: 10854723

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10854723

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP