WO2015107887A1 - 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 - Google Patents

動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 Download PDF

Info

Publication number
WO2015107887A1
WO2015107887A1 PCT/JP2015/000132 JP2015000132W WO2015107887A1 WO 2015107887 A1 WO2015107887 A1 WO 2015107887A1 JP 2015000132 W JP2015000132 W JP 2015000132W WO 2015107887 A1 WO2015107887 A1 WO 2015107887A1
Authority
WO
WIPO (PCT)
Prior art keywords
motion vector
vector
search
image
input image
Prior art date
Application number
PCT/JP2015/000132
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 US15/109,930 priority Critical patent/US10349071B2/en
Priority to JP2015557767A priority patent/JP6607040B2/ja
Publication of WO2015107887A1 publication Critical patent/WO2015107887A1/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/567Motion estimation based on rate distortion criteria

Definitions

  • the present invention relates to a moving picture coding technique, and more particularly to a technique for detecting a motion vector.
  • moving image compression coding technology is used in a wide range of applications such as digital broadcasting, distribution of video content by optical disc, and video distribution via the Internet.
  • moving image compression coding technology has advanced to be able to encode a moving image signal with a low bit rate, a high compression rate, and high image quality.
  • H.264 standardized by ITU (International Telecommunication Union). 261 and H.261.
  • H.263 is an example of such a technique.
  • ISO International Organization for Standardization
  • MPEG Motion Picture Experts Group
  • MPEG-4 are examples of such technologies.
  • VC-1 of SMPTE Society of Motion Picture and Television Engineers
  • H.264 which was standardized jointly by ITU and ISO.
  • H.264 / MPEG-4 AVC Advanced Video Coding
  • H.C. H.264 / MPEG-4 AVC H.264 As the latest moving image compression coding standard, in 2013 H.264 H.265 / MPEG-H HEVC (High Efficiency Video Coding) has been standardized.
  • H.C. H.265 / MPEG-H HEVC High Efficiency Video Coding
  • H.C. H.265 / MPEG-H HEVC High Efficiency Video Coding
  • These moving image coding techniques are realized by a combination of a plurality of elemental techniques such as motion compensation prediction, orthogonal transformation of prediction error images, quantization of orthogonal transformation coefficients, and entropy coding of quantized orthogonal transformation coefficients.
  • These moving image encoding techniques are called hybrid encoding.
  • motion vector search processing processing for searching for a motion vector.
  • the motion vector search process processes such as prediction image generation, rate distortion cost calculation, comparison, and selection for each of a large number of candidate vectors are repeatedly executed for each MB of the encoding target image. Therefore, the calculation amount of the motion vector search process is large.
  • the calculation amount of the motion vector search process may occupy most of the calculation amount of the entire moving image encoding process. For this reason, it is important to speed up the motion vector search process in order to speed up the moving picture coding.
  • processors that execute processing have become multicore and manycore.
  • a CPU Central Processing Unit
  • Some high-end CPUs have eight or more cores.
  • a many-core accelerator in which 50 or more processor cores are integrated has been put into practical use.
  • a GPU Graphics Processing Unit
  • GPGPU General Purpose Computing on Graphics Processing Unit
  • the speed at which the process is executed by using the GPU is several times to several times the speed at which the process is performed by using the CPU. The speed can be increased ten times.
  • the motion vector search processing can be greatly speeded up. If the speed of the motion vector search process can be increased, the speed of moving picture encoding can be increased.
  • Non-Patent Document 1 In section 4.3.1 of Non-Patent Document 1, a technique for performing motion vector search processing in parallel is disclosed. In the motion vector search process, encoded vectors of neighboring blocks are used. That is, there is a dependency relationship between blocks located near each other. Therefore, arbitrary blocks cannot be processed in parallel. In the technique disclosed in Non-Patent Document 1, as shown in FIG. 14 of Non-Patent Document 1, processing for a plurality of MBs having a predetermined relative positional relationship apart from each other in a frame is performed in parallel. Is called.
  • the motion vector search process Since the motion vector search process repeatedly executes processes such as prediction image generation, rate distortion cost calculation, comparison and selection for each of a large number of candidate vectors for each MB of the encoding target image, the amount of calculation is large. It may occupy most of the calculation amount of the entire encoding process. For this reason, it is important to speed up the motion vector search process in order to speed up the moving picture coding.
  • an MB that can perform motion vector search processing in parallel is an MB that has a predetermined positional relationship as shown in FIG. 14 of Non-Patent Document 1, for example. Limited.
  • the size of the encoding target image is full high-definition resolution (that is, 1920 pixels ⁇ 1080 pixels) and the MB size is 16 pixels ⁇ 16 pixels
  • MB that can be processed in parallel by the technique disclosed in Non-Patent Document 1 The maximum number is about 60.
  • the degree of parallelism is insufficient for parallel processing by a many-core accelerator having 50 cores or more and a many-core GPU having thousands or more cores. That is, with the technique disclosed in Non-Patent Document 1, it is not possible to realize a high-speed motion vector search process according to the number of cores of the many-core processor.
  • Non-Patent Document 1 the parallelism is restricted by the dependency between neighboring blocks by referring to the vectors of neighboring blocks when searching for motion vectors. Therefore, for example, if the reference of vectors is prohibited, the degree of parallelism can be improved. However, if vector reference is prohibited, the accuracy of the motion vector is lowered, and as a result, the compression rate is lowered and the image quality is deteriorated.
  • One of the objects of the present invention is to provide a motion vector search apparatus and the like that can improve the parallelism of the parallel processing in the motion vector search without reducing the accuracy of the motion vector.
  • a motion vector search device relates to a control unit that generates a plurality of candidate vectors based on a predetermined search range, and each of a plurality of blocks into which an input image is divided, related to the block.
  • a motion vector storage means for storing a first motion vector selected as a motion vector that is a vector from the position of the area of the reference image to the position of the block, and a position around the target block included in the input image
  • An evaluation value representing evaluation of the candidate vector is calculated based on the first motion vector, the generated candidate vector, the input image, and the reference image for each of neighboring blocks that are a plurality of blocks
  • a cost calculation unit that performs the evaluation from the plurality of candidate vectors, and the candidate vector having a high evaluation in the evaluation by the evaluation value, And a vector selecting means for selecting as the second motion vector of the serial target block.
  • a motion vector search method generates a plurality of candidate vectors based on a predetermined search range, and for each of a plurality of blocks obtained by dividing an input image, a reference image related to the block
  • a first motion vector selected as a motion vector that is a vector from the position of the area to the position of the block is stored in the motion vector storage means, and a plurality of positions located around the target block included in the input image are stored.
  • an evaluation value representing evaluation of the candidate vector is calculated, From a plurality of candidate vectors, the candidate vector having a high evaluation in the evaluation based on the evaluation value is determined as a second motion vector of the target block. Selected as Le.
  • a motion vector search program includes a computer, a control unit that generates a plurality of candidate vectors based on a predetermined search range, and a plurality of blocks into which an input image is divided.
  • a motion vector storage means for storing a first motion vector selected as a motion vector that is a vector from the position of the region of the reference image related to the block to the position of the block, Based on the first motion vector, each of the generated candidate vectors, the input image, and the reference image for each of neighboring blocks that are a plurality of blocks located around the target block included in the input image, Cost calculation means for calculating an evaluation value representing evaluation of the candidate vector, and the plurality of candidate vectors Said Rated the candidate vector in the evaluation by the evaluation value, and the vector selecting means for selecting as the second motion vector of the target block, and stores the motion vector search program for operating with.
  • the present invention can also be realized by a motion vector search program stored in such a computer-readable recording medium.
  • the present invention has an effect that the parallelism of the parallel processing in the motion vector search can be improved without reducing the accuracy of the motion vector.
  • FIG. 1 is a block diagram illustrating an example of a configuration of a H.264 video encoding apparatus 1C.
  • FIG. 2 is a block diagram illustrating an example of a configuration of a motion vector search unit 100 of a H.264 video encoding apparatus 1C.
  • FIG. 6 is a flowchart illustrating an example of the operation of the motion vector search unit 100 of the H.264 moving image encoding apparatus 1C.
  • FIG. 2 is a diagram schematically illustrating a motion vector used for calculation of a prediction vector in H.264.
  • FIG. It is a figure which represents typically the motion vector used for calculation of the prediction vector in H.265.
  • FIG. 1 is a block diagram illustrating an example of a configuration of a H.264 video encoding apparatus 1C.
  • FIG. 2 is a block diagram illustrating an example of a configuration of a motion vector search unit 100 of a H.264 video encoding apparatus 1C.
  • FIG. 6 is a flowchart illustrating an example of
  • FIG. 6 is a block diagram illustrating an example of the configuration of the motion vector search apparatus 10 according to the first and second embodiments of the present invention.
  • FIG. 7 is a flowchart showing an example of the operation of the motion vector search apparatus 10 according to the first, second, and third embodiments of the present invention.
  • FIG. 8 is a diagram schematically showing an operation for searching for a motion vector in the first embodiment of the present invention.
  • FIG. 9 is a block diagram showing an example of the configuration of a motion vector search apparatus 10A according to the third embodiment of the present invention.
  • FIG. 10 is a diagram illustrating an example of a block related to an encoding target block in motion vector derivation.
  • FIG. 11 is a block diagram illustrating an example of a configuration of a motion vector search apparatus 10B according to the fourth embodiment.
  • FIG. 12 is a flowchart illustrating an example of the operation of the motion vector search apparatus 10B according to the fourth embodiment.
  • FIG. 13 is a diagram schematically illustrating a converted input image and a converted motion vector used in search processing in the fourth embodiment.
  • FIG. 14 is a block diagram illustrating an example of a configuration of the moving image encoding device 1 according to the first and second embodiments.
  • FIG. 15 is a diagram schematically illustrating the search range of each search step in the second embodiment.
  • FIG. 16 is a block diagram illustrating an example of a configuration of a moving image encoding device 1A according to the third embodiment.
  • FIG. 17 is a block diagram illustrating an example of a configuration of a moving image encoding device 1B according to the fourth embodiment.
  • FIG. 18 is a block diagram illustrating an example of a configuration of a moving image encoding device 1C according to the fifth embodiment.
  • FIG. 19 is a diagram illustrating an example of a configuration of a computer 1000 that can realize the motion vector search device according to each embodiment and each moving image encoding device according to each embodiment.
  • H.264 is used as an example of the configuration of a video encoding device.
  • a H.264 video encoding apparatus will be described in detail with reference to the drawings.
  • H. In the H.264 system, techniques of intra prediction and deblocking filter are also employed for the purpose of improving compression efficiency and image quality.
  • Intra prediction is a technique for performing prediction using information on neighboring pixels in the same image frame.
  • the deblocking filter technique is a technique for reducing encoding noise generated in an image as a result of encoding.
  • H. Details of H.264 are described, for example, in Document 1 below.
  • FIG. 1 is a block diagram illustrating an example of a configuration of a H.264 video encoding apparatus 1C. As shown in FIG. In the following description, the H.264 video encoding apparatus 1C is also referred to as a comparative video encoding apparatus 1C. Referring to FIG. 1, moving image encoding apparatus 1C includes the following units as components.
  • Motion vector search unit 100 Motion compensation unit 101, Intra prediction mode determination unit 102, Intra prediction unit 103, Selector 104, Integer conversion unit 105, Quantization unit 106, Inverse quantization unit 107, Inverse integer conversion unit 108, Variable-length encoding unit 109, Deblocking filter 110, Frame buffer 111, Subtractor 112, Adder 113.
  • the frame buffer 111 stores image data of previously encoded frames.
  • the input image is subjected to encoding processing in units of 16 ⁇ 16 pixel blocks called macroblocks (MB).
  • MB macroblocks
  • a motion vector search (ME) unit 100 detects a change in the position of the corresponding image block between the input image and the encoded image stored in the frame buffer 111.
  • the motion vector search unit 100 outputs a motion vector corresponding to the detected position change.
  • the input image is, for example, a frame included in a moving image that is encoded by the moving image encoding device 1C.
  • the input image is also referred to as an encoding target image in the following description.
  • a motion compensation (MC) unit 101 performs a motion compensation process using the encoded image stored in the frame buffer 111 and the motion vector supplied from the motion vector search unit 100. Then, the motion compensation unit 101 outputs a motion compensated prediction image obtained by the motion compensation process.
  • the intra prediction mode determination unit 102 selects an appropriate intra prediction mode (that is, generally the highest encoding efficiency) using the input image and the image of the encoded macroblock in the same image. . In general, the intra prediction mode determination unit 102 selects an intra prediction mode with the highest coding efficiency as an appropriate intra prediction mode. The intra prediction mode determination unit 102 outputs the selected intra prediction mode.
  • An intra prediction (IP) unit 103 performs an intra prediction process using an image of a coded macroblock in the same image and an intra prediction mode supplied from the intra prediction mode determination unit 102. Intra prediction is also referred to as intra prediction.
  • the intra prediction unit 103 outputs an intra predicted image obtained by the intra prediction process.
  • the selection unit 104 selects an appropriate image as a predicted image from among the motion compensated prediction image supplied from the motion compensation unit 101 and the intra prediction image supplied from the intra prediction unit 103. In general, the selection unit 104 selects an image with higher encoding efficiency as an appropriate image. The selection unit 104 outputs the selected image as a predicted image. A case where a motion compensated prediction image is selected may be referred to as an Inter mode, and a case where an intra prediction image is selected may be referred to as an Intra mode.
  • the subtraction unit 112 derives a prediction error image by subtracting the prediction image output from the selection unit 104 from the input image.
  • the subtraction unit 112 outputs the derived prediction error image.
  • An integer transform (DIT: Discrete Integral Transform) unit 105 performs orthogonal transform processing similar to DCT (Discrete Cosine Transform) on the output prediction error image.
  • the integer transform unit 105 outputs an orthogonal transform coefficient sequence obtained by the orthogonal transform process.
  • a quantization (Q: Quantize) unit 106 performs a quantization process on the output orthogonal transform coefficient sequence. Then, the quantization unit 106 outputs the quantized orthogonal transform coefficient sequence.
  • variable length coding (VLC) unit 109 encodes the quantized orthogonal transform coefficient sequence according to a predetermined rule.
  • the variable length encoding unit 109 outputs the encoding result as a bit stream. This is H. This is an output bit stream of the H.264 moving image encoding apparatus 1C.
  • an inverse quantization (IQ: Inverse Quantization) unit 107 performs an inverse quantization process on the quantized orthogonal transform coefficient sequence.
  • An inverse integer transform (IDIT: Inverse Discrete Integral Transform) unit 108 performs an inverse integer transform process on the result of the inverse quantization process.
  • the addition unit 113 adds the predicted image output from the selection unit 104 and the result of the inverse integer conversion process.
  • the deblocking filter 110 generates a local decoded image by performing a deblocking filter process on the image obtained by the addition.
  • the local decoded image is stored in the frame buffer 111.
  • the local decoded image stored in the frame buffer 111 is used for encoding the subsequent frame.
  • a reference image to be described later is this local decoded image. More specific processing contents of the processing described above are disclosed in, for example, Document 2 below.
  • FIG. 2 is a diagram illustrating an example of a configuration of a motion vector search unit 100 of a H.264 video encoding apparatus 1C.
  • motion vector search unit 100 includes the following units as components.
  • Input image storage unit 200 Reference image storage unit 201, A motion vector storage unit 202, Control unit 300, Difference image cost calculation unit 301, Predicted image generation unit 302, Cost calculator 303, Vector cost calculator 304, Cost comparison / vector selection unit 305, A prediction vector generation unit 306.
  • Cost comparison / vector selection unit 305 is also referred to as vector selection unit 305.
  • the input image storage unit 200 stores an input image.
  • the reference image storage unit 201 stores previously encoded image data.
  • the previously encoded image data stored in the reference image storage unit 201 is referred to in motion compensation prediction.
  • the image stored in the reference image storage unit 201 is the above-described local decoded image.
  • An image stored in the reference image storage unit 201 is also referred to as a reference image.
  • the frame buffer 111 illustrated in FIG. 1 may operate as the reference image storage unit 201. In that case, the motion vector search unit 100 may not include the reference image storage unit 201.
  • the motion vector storage unit 202 stores the motion vector derived in the encoded MB in the encoding target image.
  • the role of the motion vector search unit 100 is to obtain an optimal motion vector for use in motion compensation prediction.
  • the accuracy of the motion vector obtained by the motion vector search unit 100 greatly affects the compression performance.
  • it is required to obtain a motion vector that minimizes the amount of information to be encoded while suppressing the amount of noise generated in the decoded image.
  • RD Random-Distortion
  • the rate distortion cost expressed by Equation 1 is calculated for a large number of motion vector candidates. Then, the motion vector candidate that minimizes the rate distortion cost is adopted as the optimal motion vector.
  • D the amount of distortion (difference image cost) generated in the prediction difference image
  • R the amount of code (vector cost) generated by encoding the motion vector
  • depends on the complexity of the image It is a weighting factor (cost factor). Details of the RD optimization are described in, for example, Document 2 above and Document 3 below.
  • the motion vector search unit 100 obtains a motion vector by RD optimization.
  • the control unit 300 controls the operation of the motion vector search unit 100.
  • the control unit 300 generates a candidate vector based on a predetermined search range, and supplies the generated candidate vector to the predicted image generation unit 302 and the vector cost calculation unit 304.
  • the difference image cost calculation unit 301 calculates a difference image between the prediction image supplied from the prediction image generation unit 302 and the encoding target image supplied from the input image storage unit 200.
  • the predicted image generation unit 302 generates a predicted image by performing a motion compensation process using the reference image stored in the reference image storage unit 201 based on the candidate vector supplied from the control unit 300.
  • the difference image cost calculation unit 301 calculates a difference image between the prediction image supplied from the prediction image generation unit 302 and the encoding target image supplied from the input image storage unit 200. As described above, the input image is the encoding target image.
  • the prediction vector generation unit 306 generates a prediction vector of the encoding target MB using the encoded MB motion vector read from the motion vector storage unit 202.
  • the vector cost calculation unit 304 calculates the vector cost of the candidate vector based on the candidate vector supplied from the control unit 300 and the prediction vector supplied from the prediction vector generation unit 306.
  • the cost calculation unit 303 calculates the rate distortion cost represented by Expression 1 based on the difference image cost, the vector cost, and the cost coefficient ( ⁇ in Expression 1) supplied from the control unit 300.
  • the rate distortion cost is an evaluation value that is an index representing how much the supplied candidate vector is suitable as the motion vector of the encoding target block.
  • the cost comparison / vector selection unit 305 selects the current candidate vector as a provisional optimal vector when the rate distortion cost supplied from the cost calculation unit 303 is smaller than the rate distortion cost of the already evaluated candidate vector. That is, the cost comparison / vector selection unit 305 selects a candidate vector having the lowest rate distortion cost for each block of the input image as a provisional optimal vector.
  • FIG. 6 is a flowchart showing the operation of the motion vector search unit 100 of the H.264 video encoding apparatus 1C.
  • the control unit 300 determines whether or not an unprocessed MB exists in the encoding target image (step S301). When there is no unprocessed MB (Yes in step S301), the motion vector search unit 100 ends the operation shown in FIG. When there is an unprocessed MB (No in step S301), the control unit 300 performs initialization processing for motion vector search using the MB as an encoding target block (step S302). In this initialization process, the control unit 300 initializes a temporary optimal motion vector and a value held as the minimum value of the rate distortion cost, which will be described later, and sets an initial search candidate vector.
  • the control unit 300 determines whether ungenerated candidate vectors remain for the encoding target block (step S303).
  • the control unit 300 generates a candidate vector to be searched (Step S304).
  • the controller 300 may sequentially generate candidate vectors so as to perform a raster scan within a predetermined search range. For example, the control unit 300 may generate a vector representing the selected position in the search range as a candidate vector while sequentially selecting positions in the search range.
  • the control unit 300 may set the next candidate vector around the provisional optimal vector at a certain time.
  • the controller 300 may generate candidate vectors by any of various other methods. When the candidate vector is generated for the entire search range, the control unit 300 may determine that no ungenerated candidate vector remains.
  • the control unit 300 supplies the generated candidate vector to the predicted image generation unit 302.
  • the cost calculation unit 303 calculates the rate distortion cost represented by Equation 1 (step S305).
  • the predicted image generation unit 302 performs a motion compensation process using a reference image stored in the reference image storage unit 201 based on the candidate vector supplied from the control unit 300, thereby obtaining a predicted image. Generate.
  • the predicted image generation unit 302 supplies the generated predicted image to the difference image cost calculation unit 301.
  • the difference image cost calculation unit 301 calculates a difference image between the prediction image supplied from the prediction image generation unit 302 and the encoding target image supplied from the input image storage unit 200.
  • the difference image cost calculation unit 301 further calculates a difference image cost based on the distortion amount of the difference image.
  • the difference image cost calculated by the difference image cost calculation unit 301 may be a sum of absolute differences of pixel values (SAD: Sum of Absolute Differences).
  • the difference image cost calculated by the difference image cost calculation unit 301 may be a sum of squares of pixel values (SSD: Sum of Square Differences).
  • the difference image cost calculated by the difference image cost calculation unit 301 may be a sum of absolute values of coefficients obtained by performing predetermined conversion on the difference between pixel values (SATD: Sum of Absolute Transformed Differences).
  • the prediction vector generation unit 306 reads the motion vector of the encoded MB from the motion vector storage unit 202.
  • the prediction vector generation unit 306 generates a prediction vector of the encoding target MB using the read motion vector of the encoded MB.
  • the calculation procedure of the prediction vector is defined by the encoding standard.
  • FIG. 2 is a diagram schematically illustrating a motion vector used for calculation of a prediction vector in H.264.
  • H.C the left (block A), upper (block B), and upper right (block C) motion vectors adjacent to the encoding target block are used to calculate the prediction vector.
  • the prediction vector generation unit 306 uses the median (median value) of these three motion vectors as a prediction vector.
  • FIG. It is a figure which represents typically the motion vector used for calculation of the prediction vector in H.265.
  • the predictive vector generation unit 306 predetermines the motion vectors of the five types of positions in the spatial vicinity of the encoding target block and the two types of motion vectors around the same position block of the temporally neighboring frame. List based on the rules.
  • the temporally neighboring frame is, for example, a frame that is temporally previous to the encoding target frame.
  • the five types of positions in the spatial vicinity of the encoding target block are positions A0 to B2 in FIG.
  • Two types of positions C0 and C1 around the same position block in the temporally neighboring frame are two types of positions C0 and C1 in FIG.
  • the prediction vector generation unit 306 selects any one of the vectors in the list as a prediction vector.
  • H. Details of H.265 are described, for example, in Reference 4 below.
  • the vector cost calculation unit 304 calculates the vector cost of the candidate vector based on the candidate vector supplied from the control unit 300 and the prediction vector supplied from the prediction vector generation unit 306.
  • the vector cost of a candidate vector is a code amount generated for encoding the candidate vector.
  • the cost calculation unit 303 calculates the rate distortion cost represented by Equation 1 based on the difference image cost, the vector cost, and the cost coefficient ( ⁇ in Equation 1) supplied from the control unit 300 (the steps up to here). S305).
  • the difference image cost is supplied from the difference image cost calculation unit 301.
  • the vector cost is supplied from the vector cost calculation unit 304.
  • the control unit 300 supplies the cost coefficient to the cost calculation unit 303.
  • the cost comparison / vector selection unit 305 compares the rate distortion cost supplied from the cost calculation unit 303 with the minimum value of the rate distortion cost of the already evaluated candidate vectors. When the cost of the current candidate vector is smaller, the cost comparison / vector selection unit 305 selects the current candidate vector as a provisional optimal vector, and additionally updates the minimum value of the rate distortion cost. The cost comparison / vector selection unit 305 supplies the provisional optimal vector to the control unit 300 (step S306).
  • the control unit 300 determines a candidate vector to be evaluated next using a temporary optimal vector or the like. When the evaluation of all candidate vectors is completed, the control unit 300 completes the motion vector search for the current block. The control unit 300 determines the provisional optimal vector at the time when the motion vector search is completed as the final motion vector. The control unit 300 stores the determined final motion vector in the motion vector storage unit 202 (step S307).
  • FIG. 14 is a block diagram showing an example of the configuration of the moving picture encoding apparatus 1 of the present embodiment.
  • the moving picture encoding apparatus 1 of the present embodiment includes a motion vector search apparatus 10 instead of the motion vector search unit 100.
  • the other components of the video encoding device 1 are the same as the components of the video encoding device 1C to which the same reference numerals are assigned.
  • the moving image encoding device 1 is similar to the moving image encoding device 1C.
  • H.264 bit stream is output.
  • the motion vector search device 10 is an H.264 standard. A case will be described in which a motion vector search is performed in the video encoding device 1 that performs video encoding in H.264.
  • the moving picture coding apparatus to which the motion vector search apparatus 10 according to the present embodiment and the motion vector search apparatus according to another embodiment can be applied is H.264. H.264 and H.264.
  • the present invention is not limited to a moving picture coding apparatus that performs moving picture coding in H.265.
  • the motion vector search apparatus 10 according to the present embodiment and the motion vector search apparatus according to another embodiment are moving picture coding that encodes a moving picture with another coding scheme that is an international standard or not an international standard. It is also applicable to the device.
  • FIG. 6 is a block diagram showing an example of the configuration of the motion vector search apparatus 10 of the present embodiment.
  • the motion vector search apparatus 10 includes the following units as components.
  • Input image storage unit 200 Reference image storage unit 201, A motion vector storage unit 203, Control unit 300, Predicted image generation unit 302, Prediction vector generation unit 306, Switching unit 307, Cost calculation unit 308.
  • the cost calculation unit 308 includes a difference image cost calculation unit 301, a cost calculation unit 303, and a vector cost calculation unit 304.
  • the motion vector search apparatus 10 of this embodiment includes a motion vector storage unit 203 instead of the motion vector storage unit 202. Furthermore, the motion vector search apparatus 10 includes a switching unit 307 and a cost calculation unit 308 that are not included in the configuration of the motion vector search unit 100. The difference image cost calculation unit 301, the cost calculation unit 303, and the vector cost calculation unit 304 are included in the cost calculation unit 308. Other components of the motion vector search apparatus 10 of the present embodiment perform the same operations as the components of the motion vector search unit 100 shown in FIG.
  • the motion vector storage unit 203 stores a motion vector.
  • the motion vector storage unit 203 is divided into a first storage area and a second storage area.
  • the first storage area is accessed as the motion vector storage unit 203A or the motion vector storage unit 203B.
  • the second storage area is accessed as the motion vector storage unit 203B or the motion vector storage unit 203A.
  • the motion vector storage unit 203A is also referred to as a storage unit A.
  • the motion vector storage unit 203B is also expressed as a storage unit B.
  • the switching unit 307 switches the storage area accessed as the motion vector storage unit 203A between the first storage area and the second storage area based on an instruction received from the control unit 300, for example. Similarly, the switching unit 307 switches the storage area accessed as the motion vector storage unit 203B between the second storage area and the first storage area based on an instruction received from the control unit 300, for example.
  • the switching unit 307 performs switching so that the second storage area is accessed as the motion vector storage unit 203B.
  • the switching unit 307 performs switching so that the second storage area is accessed as the motion vector storage unit 203A.
  • the motion vector supplied from the control unit 300 is stored in the motion vector storage unit 203A. That is, the control unit 300 stores the derived motion vector in the motion vector storage unit 203A.
  • a motion vector is supplied from the motion vector storage unit 203B to the prediction vector generation unit 306. That is, the prediction vector generation unit 306 reads a motion vector from the motion vector storage unit 203B.
  • FIG. 7 is a flowchart showing an example of the operation of the motion vector search apparatus 10 of the present embodiment.
  • each step shown in FIG. 7 is the same as the operation of the step given the same reference numeral shown in FIG. 3 except for the operations of Step S700, Step S705, Step S707, and Step S708.
  • the motion vector search apparatus 10 of the present embodiment performs motion vector search for the entire frame at least twice per frame. That is, the motion vector search apparatus 10 performs a motion vector search for the entire encoding target image twice or more per encoding target image.
  • one motion vector search for the entire frame is referred to as a search step.
  • the motion vector search apparatus 10 uses the predetermined initial value of the motion vector instead of the encoded MB motion vector of the encoding target image to A simple motion vector is derived.
  • the motion vector search apparatus 10 uses the motion vector derived in the previous search step for the encoding target image to derive an optimal motion vector. .
  • FIG. 8 is a diagram schematically illustrating an example of a motion vector updated in a plurality of search steps.
  • the vector shown in the upper part of FIG. 8 represents the initial value of the motion vector.
  • the vector shown in the middle part of FIG. 8 represents the motion vector derived by the first search step (search step 1).
  • the calculated prediction vector is, for example, a zero vector.
  • the vector shown in the lower part of FIG. 8 represents the motion vector derived by the second search step (search step 2).
  • search step 2 In the second search step, a prediction vector is calculated using the motion vector derived in the first search step.
  • the vector represented by the thick arrow represents a motion vector that has changed from the motion vector derived in the previous search step. That is, the vector represented by the thick arrow represents a motion vector different from the motion vector derived in the previous search step for the same block.
  • step S700 shown in FIG. 7 the control unit 300 performs an initialization process for searching for a motion vector for the encoding target frame.
  • the motion vector search apparatus 10 of the present embodiment when calculating a prediction vector in RD optimization, motion vectors of blocks in the vicinity of a block that is a target for motion vector derivation (that is, a target block) derived in the same search step. Is not used.
  • the motion vector search device 10 calculates a prediction vector in RD optimization using the motion vector of the block near the target block derived in the previous search step. Therefore, the control unit 300 stores the initial motion vectors for all the blocks used in the first search step in the motion vector storage unit 203 in the initialization process of step S700.
  • control unit 300 stores the derived motion vector in the motion vector storage unit 203A.
  • the prediction vector generation unit 306 reads a motion vector from the motion vector storage unit 203B.
  • the control unit 300 stores the initial motion vector in either the first storage area or the second storage area of the motion vector storage unit 203 in step S700. For example, when storing the initial motion vector in the second storage area, for example, the control unit 300 first switches the second storage area to be accessed as the motion vector storage unit 203A, that is, the storage unit A. May be transmitted to the switching unit 307. Then, the control unit 300 may write the initial motion vector into the storage unit A. Furthermore, the control unit 300 may transmit an instruction to switch the storage area in which the initial motion vector is stored to be accessed as the motion vector storage unit 203B, that is, the storage unit B, to the switching unit 307.
  • the initial motion vectors may all be zero vectors indicating no motion.
  • the control unit 300 stores a vector (0, 0) that is a zero vector in the storage unit A for all MBs.
  • the motion vector including the initial motion vector is a two-dimensional vector.
  • a two-dimensional zero vector is represented by a vector (0, 0).
  • the initial motion vector may be a motion vector derived for an encoded frame.
  • the control unit 300 stores, for each MB, the motion vector derived in the MB at the same position in the encoded frame in the storage unit A.
  • the control unit 300 may store other initial motion vectors in the storage unit A. That is, the control unit 300 may initialize the storage unit A with another vector.
  • the control unit 300 allocates the storage area allocated to the storage unit A during the initialization process to the storage unit B, and stores the storage area allocated to the storage unit B during the initialization process.
  • An instruction to be assigned to A is transmitted to the switching unit 307.
  • the switching unit 307 When the switching unit 307 receives the instruction, the switching unit 307 switches the storage area allocated to the storage unit A and the storage area allocated to the storage unit B. As a result, the initial motion vector can be read from the storage unit B.
  • step S301 to step S304 is the same as the operation of the step to which the same reference numeral is assigned in the motion vector search unit 100 shown in FIG.
  • the cost calculation processing procedure in step S705 is the same as the cost calculation processing procedure in step S305 shown in FIG. However, the motion vector supplied to the prediction vector generation unit 306 in step S705 is different from the motion vector supplied to the prediction vector generation unit 306 in step S305.
  • the motion vector supplied to the prediction vector generation unit 306 in step S305 is a motion vector of a neighboring block that is stored in the motion vector storage unit 202 and is derived in the same search step.
  • the motion vector supplied to the prediction vector generation unit 306 in step S705 is a motion vector stored in the storage unit B.
  • the motion vector stored in the storage unit B is an initial motion vector in the first search step.
  • the motion vector stored in the storage unit B is the motion vector of the neighboring block derived in the previous search step in the second and subsequent search steps.
  • the motion vector supplied to the prediction vector generation unit 306 is used to derive a prediction vector in RD optimization.
  • step S306 is the same as the operation in step S306 shown in FIG.
  • step S ⁇ b> 707 the control unit 300 stores the derived motion vector in the storage unit A of the motion vector storage unit 203.
  • Step S301 when it is determined that the processing for all MBs is completed (Yes in Step S301), the control unit 300 determines whether to end the search (Step S708).
  • the control unit 300 may determine whether or not to end the search based on a result of determining whether or not a sufficiently accurate motion vector has been obtained based on a predetermined criterion. That is, when it is determined that the motion vector with sufficient accuracy is obtained, the control unit 300 may end the search. For example, as described below, the control unit 300 determines that a sufficiently accurate motion vector has been obtained when the magnitude of a difference between successive search steps of a derived motion vector is less than a predetermined reference. do it.
  • the control unit 300 determines that the search is to be ended when the derived motion vector is less than a predetermined threshold value for the percentage of MB that has changed with respect to the motion vector derived in the same MB in the previous search step. do it.
  • the control unit 300 performs the search May be determined to end.
  • the control unit 300 may calculate the magnitude of the average value of the amount of change of the derived motion vector with respect to the motion vector derived in the same MB in the previous search step.
  • the control unit 300 may calculate the ratio of the calculated average value to the average value of the amount of change derived in the previous search step.
  • the control part 300 may determine with a search being complete
  • control unit 300 may abort the search depending on the number of search steps. For example, the control unit 300 may determine that the search is to be terminated when the number of search steps reaches a predetermined upper limit value.
  • the control unit 300 may switch the determination method for determining to end the search and the threshold value used in the determination depending on the encoding type and the encoding parameter.
  • the encoding type represents, for example, a P picture or a B picture, or a reference picture or a non-reference picture.
  • the encoding parameter is, for example, a bit rate, a quantization step size, or the like.
  • step S708 when the search end condition is not satisfied and the control unit 300 determines that the search is not ended (No in step S708), the operation of the motion vector search apparatus 10 returns to step S700.
  • step S700 the control unit 300 transmits an instruction to replace the storage areas allocated to the storage unit A and the storage unit B to the switching unit 307.
  • the switching unit 307 switches the storage areas allocated to the storage unit A and the storage unit B based on the received instruction. That is, the switching unit 307 switches the storage area accessed as the storage unit A and the storage area accessed as the storage unit B.
  • a motion vector that is a search result derived in a certain search step is read out in a process of calculating a prediction vector in the next search step. That is, a motion vector that is a search result derived in a certain search step is supplied to the prediction vector generation unit 306 in a process of calculating a prediction vector in the next search step.
  • step S708 when the search end condition is satisfied and the control unit 300 determines that the search is to be ended (Yes in step S708), the motion vector search apparatus 10 is stored in the input image storage unit 200 as an encoding target image. The motion vector search for the current frame is terminated.
  • the embodiment described above has an effect that the parallelism of the parallel processing in the motion vector search can be improved without reducing the accuracy of the motion vector.
  • the prediction vector generation unit 306 uses, in a certain search step, the motion vector of the neighboring block derived in the previous search step, not the motion vector of the neighboring block derived in the same search step. It is.
  • motion vectors of neighboring blocks in the same search step are not referred to, and therefore, motion vector search processing can be performed independently for all blocks in the frame. That is, motion vector search processing for all blocks in the frame can be performed in parallel. Therefore, a high degree of parallelism can be realized in the motion vector search process for all blocks in the frame.
  • the degree of parallelism within a frame is The maximum is about 60.
  • the maximum degree of parallelism is 8160.
  • the amount of processing increases by performing a plurality of search steps for one frame.
  • the processing time is shortened because parallel processing efficiency is improved by performing processing in parallel with a large number of cores.
  • the motion vector derived in the previous search step is referred to.
  • the effect of the RD optimization is not greatly reduced, and a sufficiently high accuracy motion vector can be obtained. Accordingly, it is possible to suppress a decrease in compression rate and deterioration in image quality. Further, in the present embodiment, it is possible to reduce a decrease in accuracy of the derived motion vector by repeating the search step for one frame.
  • FIG. 14 is a block diagram showing an example of the configuration of the moving picture encoding apparatus 1 of the present embodiment.
  • the configuration of the video encoding device 1 of the present embodiment is the same as the configuration of the video encoding device 1 of the first embodiment.
  • FIG. 6 is a block diagram showing an example of the configuration of the motion vector search apparatus 10 of the present embodiment.
  • the configuration of the motion vector search apparatus 10 of the present embodiment is the same as the configuration of the motion vector search apparatus 10 of the first embodiment.
  • FIG. 7 is a flowchart showing an example of the operation of the motion vector search apparatus 10 of the present embodiment.
  • the operation of the motion vector search device 10 of the present embodiment is the same as the operation of the motion vector search device 10 of the first embodiment, except for the differences described below.
  • step S304 illustrated in FIG. 7 the control unit 300 according to the present embodiment sequentially reduces the size of the search range for generating the candidate vector according to a predetermined method according to the number of search steps performed on the same frame. . That is, the control unit 300 sets a search range that narrows as the number of search steps for the same frame increases. And the control part 300 produces
  • FIG. 15 is a diagram schematically showing a search range in each search step.
  • the control unit 300 may set the widest search range in the search steps performed on the same frame in the first search step.
  • the search range in the first search step is, for example, from the right 128 pixels to the left 128 pixels at the position indicated by the initial vector with respect to the position of the target MB, as shown in the upper part of FIG.
  • the range is from the upper 128 pixels to the lower 128 pixels.
  • the initial vector is, for example, a zero vector.
  • the search range in the first search step is a range from the right 128 pixel to the left 128 pixel and the upper 128 pixel to the lower 128 pixel at the position of the target MB, for example, as shown in the upper part of FIG. It is.
  • the image coordinate system is represented by, for example, an x-axis whose right direction is the + direction and a y-axis whose down direction is the + direction and orthogonal to the x-axis.
  • a straight line consisting of a point whose x coordinate is smaller by x pixels than the x coordinate of the target MB a straight line consisting of a point whose x coordinate is q pixels larger than the x coordinate of the target MB, and an area between these straight lines
  • the range from ⁇ p pixel to + q pixel in the x-coordinate direction with respect to the MB position is described.
  • the search range in the first search step is a range from ⁇ 128 pixels to +128 pixels in both the vertical direction (that is, the y-axis direction) and the horizontal direction (that is, the x-axis direction) with respect to the position of the target MB.
  • the image coordinate system is not limited to the above example.
  • the control unit 300 may set a search range narrower than the search range set in the first search step in the second search step.
  • the search range in the second search step is 16 pixels from the right to 16 pixels at the position indicated by the motion vector derived in the first search step with respect to the position of the target MB.
  • the search range in the second search step is in the vertical direction with respect to the position indicated by the motion vector derived in the first search step with respect to the position of the target MB. In the horizontal direction, the range is from ⁇ 16 pixels to +16 pixels.
  • the control unit 300 may set a search range narrower than the search range set in the second search step in the third search step.
  • the search range in the third search step is the right 4 pixels to the left 4 pixels at the position indicated by the motion vector derived in the second search step with respect to the position of the target MB.
  • the search range in the third search step is in the vertical direction with respect to the position indicated by the motion vector derived in the second search step with respect to the position of the target MB. In the horizontal direction, the range is from -4 pixels to +4 pixels.
  • the size of the search range is not limited to the above example.
  • the present embodiment described above has the same effect as the first embodiment.
  • the reason is the same as the reason for the effect of the first embodiment.
  • This embodiment further has an effect of reducing the total amount of calculation of the entire motion vector processing.
  • control unit 300 sets a search range that is sequentially narrowed according to the number of search steps performed on the same frame. By performing a search in a search range that becomes narrower according to the number of search steps, the total amount of computation of the entire motion vector process can be reduced. Therefore, higher speed processing is possible.
  • FIG. 16 is a diagram illustrating a configuration of the moving image encoding device 1A according to the present embodiment. 16 and FIG. 14 are compared, the difference between the moving image encoding apparatus 1A of the present embodiment and the moving image encoding apparatus 1 of the first embodiment is that the moving image encoding apparatus 1A of the present embodiment
  • the motion vector search device 10 ⁇ / b> A is included instead of the search device 10.
  • FIG. 9 is a block diagram showing an example of the configuration of the motion vector search apparatus 10A of the present embodiment.
  • the motion vector search apparatus 10A Comparing the configuration of the motion vector search apparatus 10 of the first embodiment shown in FIG. 9 and FIG. 6, the motion vector search apparatus 10A includes a vector cost calculation unit 904 instead of the vector cost calculation unit 304. Furthermore, the motion vector search apparatus 10A includes a cost calculation unit 908 instead of the cost calculation unit 308. The cost calculation unit 908 includes a difference image cost calculation unit 301, a cost calculation unit 303, and a vector cost calculation unit 904. In addition, the motion vector search apparatus 10A does not include the prediction vector generation unit 306. The other components of the motion vector search device 10A are the same as the components of the motion vector search device 10 assigned the same numbers.
  • the vector cost calculation unit 904 reads the motion vector derived in the previous search step for the related block from the motion vector storage unit 203B. Then, the vector cost calculation unit 904 calculates the vector cost using the read motion vector derived in the previous search step of the related block.
  • FIG. 7 is a flowchart showing an example of the operation of the motion vector search apparatus 10A of the present embodiment.
  • the operation of the motion vector search apparatus 10A of the present embodiment is the same as that of the motion vector search apparatus 10 of the first embodiment except for the vector cost calculation method in step S705.
  • motion vectors in blocks close in time or space are often similar. Therefore, the motion vector in the block located around the encoding target block in the same frame as the encoding target block is used to derive the motion vector in the encoding target block.
  • the motion vector used for the derivation has already been derived. There is. Therefore, for example, encoding target blocks are sequentially selected from each block included in the same frame in the raster scan order, and a motion vector in the selected encoding target block is derived.
  • the motion vector is derived in the encoding target block, the motion vector of the block located before the encoding target block in the raster scan order is used.
  • the motion vector search unit 100 shown in FIG. 2 derives a motion vector in each block in the frame only once for each block in each frame in the raster scan order.
  • the prediction vector generation unit 306 uses motion vectors derived in blocks of the same frame located on the left side and the upper side of the encoding target block based on the procedure defined in the encoding standard. Thus, a prediction vector is calculated.
  • the vector cost calculation unit 304 calculates the vector cost based on the relationship between the predicted vector and the candidate vector.
  • the cost comparison / vector selection unit 305 selects a motion vector from the candidate vectors based on the calculated vector cost.
  • FIG. 4 and FIG. 5 represent blocks in which a motion vector is used for calculation of a prediction vector in an encoding target block.
  • the prediction vector generation unit 306 cannot use these motion vectors when deriving the motion vectors in the encoding target block.
  • a block in which a prediction vector is calculated using a motion vector in an encoding target block and a block in which a motion vector is used in calculating a prediction vector of the encoding target block are referred to as related blocks.
  • a block in which a motion vector is used for calculation of a prediction vector of an encoding target block is referred to as a first related block.
  • a block for which a prediction vector is calculated using a motion vector in an encoding target block is referred to as a second related block.
  • FIG. 10 is a diagram illustrating an example of a block related to the encoding target block in the derivation of the motion vector.
  • the motion vectors in block A, block B, and block C in FIG. 10 are used to calculate the prediction vector of the encoding target block.
  • the motion vector of the encoding target block is used to calculate a prediction vector of a block adjacent to the encoding target block on the right, lower left, and lower in FIG.
  • the motion vectors in these right and lower blocks are used in consideration of the relationship with the motion vectors of the right and lower blocks. Is considered effective.
  • the motion vector search unit 100 performs a motion vector search only once for each block of each frame. Therefore, the motion vector search unit 100 cannot use a motion vector in the same frame of a block in which the motion vector is derived after the encoding target block.
  • the motion vector in the previous search step of the above-described related block stored in the motion vector storage unit 203B is supplied to the vector cost calculation unit 904. That is, the vector cost calculation unit 904 reads the motion vector derived in the previous search step for the related block from the motion vector storage unit 203B. Then, the vector cost calculation unit 904 calculates the vector cost using the read motion vector derived in the previous search step of the related block.
  • the blocks adjacent to the encoding target block on the right, lower left, and lower are the related blocks described above. . H.
  • the motion vector of the encoding target block affects the prediction vector of a block adjacent to the encoding target block on the right, lower left, and lower.
  • the motion vector of the block adjacent to the encoding target block on the left, top, and upper right affects the prediction vector of the encoding target block.
  • Blocks adjacent to the encoding target block on the left, upper, and upper right are block A, block B, and block C, respectively. H.
  • the vector cost calculation unit 904 reads, from the motion vector storage unit 203B, the motion vector in the previous search step of the block adjacent to the encoding target block on the left, top, top right, right, bottom left, and bottom. . Then, the vector cost calculation unit 904 calculates the vector cost using the motion vector in the previous search step of the block adjacent to the encoding target block on the left, upper, upper right, right, lower left, and lower.
  • the vector cost calculation unit 904 can calculate the vector cost by calculating R in Expression 1 based on Expression 2, for example.
  • R 3/6 * Rc + 1/6 * Rr + 1/6 * Rll + 1/6 * Rl (Formula 2)
  • Rc, Rr, Rll, and Rl are code amounts generated by encoding motion vectors of the encoding target, right, lower left, and lower blocks, respectively.
  • “*” Is an operator representing multiplication.
  • the vector cost calculation unit 904 may calculate the vector cost by another method.
  • the code amount can be significantly increased by reusing the prediction vector information of neighboring blocks for the encoding target block.
  • a coding mode for reducing the number is set.
  • Such an encoding mode is referred to as an abbreviated encoding mode in the following description.
  • Such an abbreviated coding mode is, for example, H.264. H.264 skip (SKIP) mode, H.265 is an encoding mode called a merge mode.
  • the moving image encoding apparatus 1A does not encode a motion vector for an encoding target block in which such an abbreviated encoding mode is set.
  • the motion vector of the block for which the abbreviated encoding mode is set is estimated based on the motion vector of another block, for example.
  • a block in which a motion vector is used for estimating a motion vector of a block for which an abbreviated coding mode is set is referred to as a reuse block.
  • the location of the reuse block for the block for which the abbreviated encoding mode is set is determined according to the encoding method.
  • the selection unit 104 of the moving image coding apparatus 1A sets the abbreviated coding mode for each block based on a predetermined standard according to the coding method. It may be determined whether or not.
  • the selection unit 104 may transmit information specifying a block for which the abbreviated coding mode is set to the motion vector search apparatus 10A.
  • the control part 300 should just identify the block which is the above-mentioned reuse block of the block in which the abbreviated encoding mode was set.
  • the control unit 300 may store the identified reuse block identifier in, for example, the motion vector storage unit 203A.
  • the vector cost calculation unit 904 calculates the derived rate distortion cost so that the motion vector used in any block in which the abbreviated coding mode is set is preferentially selected. May be adjusted. For example, the vector cost calculation unit 904 may subtract a predetermined value from the rate distortion cost calculated for the candidate vector equal to the motion vector used in any block for which the above-described abbreviated coding mode is set. Good. For example, for the motion vector selected as the merge mode vector of the neighboring block among the candidate vectors of the encoding target block, the vector cost calculation unit 904 sets the code amount to be reduced by setting the merge mode to R. May be subtracted from
  • the vector cost calculation unit 904 determines whether the encoding target block is a reuse block. When the identifier of the encoding target block is stored in the motion vector storage unit 203B as the reuse block identifier, the vector cost calculation unit 904 may determine that the encoding target block is a reuse block. . Otherwise, the vector cost calculation unit 904 may determine that the encoding target block is not a reuse block. When it is determined that the encoding target block is a reuse block, the vector cost calculation unit 904 calculates the rate distortion cost of the candidate vector equal to the motion vector of the encoding target block stored in the motion vector storage unit 203B. As described above, the adjustment may be made according to the offset or the code amount.
  • the present embodiment described above has the same effect as the first embodiment.
  • the reason is the same as the reason for the effect of the first embodiment.
  • control unit 300 of the present embodiment may perform the same operation as the control unit 300 of the second embodiment.
  • the present embodiment further has the same effect as the second embodiment.
  • the reason is the same as the reason for the effect of the second embodiment.
  • This embodiment further has an effect that the compression efficiency is improved and the image quality is improved.
  • the vector cost calculation unit 904 uses the motion vector of the second related block in addition to the motion vector of the first related block to calculate the vector cost.
  • the first related block is a block in which a motion vector is used for calculation of a prediction vector of an encoding target block.
  • the second related block is a block in which the motion vector of the encoding target vector is used for calculation of the prediction vector.
  • the search step is executed a plurality of times per frame, as in the first and second embodiments.
  • the motion vector used by the vector cost calculation unit 904 of the present embodiment is a motion vector derived in the previous search step among a plurality of search steps for the same frame.
  • the motion of the second related block derived in the previous search step is performed.
  • Vectors can be used. Therefore, in the present embodiment, for example, RD optimization can be performed in consideration of the relationship with the motion vector of the second related block, such as the right side block or the lower side block of the encoding target block.
  • RD optimization can be performed in consideration of the relationship with the motion vector of the second related block, such as the right side block or the lower side block of the encoding target block.
  • the compression efficiency is improved in the moving image coding performed by using the derived motion vector.
  • an unnatural motion vector field including a motion vector of surrounding blocks and a discontinuous motion vector causes noise. When noise occurs, the quality of the encoded moving image is degraded.
  • the possibility that a motion vector and a discontinuous motion vector of surrounding blocks are derived is reduced. Therefore, noise generation due to an unnatural motion vector field can be suppressed, so that the quality of the encoded moving image is improved.
  • FIG. 17 is a block diagram showing an example of the configuration of the moving picture encoding apparatus 1B of the present embodiment. Comparing FIG. 17 with FIG. 16, the difference between the moving image encoding apparatus 1B of the present embodiment and the moving image encoding apparatus 1A of the second embodiment is that the moving image encoding apparatus 1B of the present embodiment
  • the motion vector search device 10B is included instead of the search device 10A.
  • FIG. 11 is a block diagram showing an example of the configuration of the motion vector search apparatus 10B of the present embodiment. Comparing the configuration of the motion vector search device 10A of the second embodiment shown in FIG. 11 and FIG. 9, the motion vector search device 10B further includes a vector conversion unit 1108.
  • the motion vector search apparatus 10B further includes an input image conversion unit 1109, a converted input image storage unit 1110, a converted reference image storage unit 1111, and a reference image conversion unit 1112.
  • the other components of the motion vector search device 10B are the same as the components of the motion vector search device 10A of the second embodiment, which are assigned the same numbers.
  • the input image conversion unit 1109 reads the input image stored in the input image storage unit 200. Then, the input image conversion unit 1109 performs a predetermined conversion on the read input image according to the number of search steps. The input image conversion unit 1109 stores the converted input image in the converted input image storage unit 1110.
  • the converted input image storage unit 1110 stores the input image that has been converted.
  • the difference image cost calculation unit 301 reads the converted input image from the converted input image storage unit 1110.
  • the difference image cost calculation unit 301 calculates a difference image between the predicted image supplied from the predicted image generation unit 302 and the converted input image supplied from the converted input image storage unit 1110.
  • the reference image conversion unit 1112 reads the reference image stored in the reference image storage unit 201.
  • the reference image conversion unit 1112 performs predetermined conversion on the read reference image according to the number of search steps.
  • the reference image conversion unit 1112 stores the converted reference image in the conversion reference image storage unit 1111.
  • the converted reference image storage unit 1111 stores the converted reference image.
  • the predicted image generation unit 302 reads the converted reference image from the converted reference image storage unit 1111.
  • the predicted image generation unit 302 generates a predicted image by performing a motion compensation process using the converted reference image stored in the converted reference image storage unit 1111 based on the candidate vector supplied from the control unit 300. To do.
  • the input image conversion unit 1109 and the reference image conversion unit 1112 perform the same conversion in the same search step.
  • the input image conversion unit 1109 and the reference image conversion unit 1112 perform conversion for reducing an image at a reduction rate corresponding to the number of search steps.
  • the method for reducing the image may be any of various existing methods.
  • the vector conversion unit 1108 converts the motion vector stored in the motion vector storage unit 203B according to the reduction rate of the converted input image and the converted reference image in the current search step. First, the vector conversion unit 1108 reads a motion vector stored in the motion vector storage unit 203B. When the reduction rate in the current search step is different from the reduction rate in the previous search step from which the read motion vector is derived, the vector conversion unit 1108 reads out the data so as to match the reduction rate in the current search step. Convert the motion vector. For example, when the reduction rate in the current search step is 1 and the reduction rate in the previous search step is 1 ⁇ 2, the vector conversion unit 1108 converts the read motion vector by 2 times. I do. Then, the vector conversion unit 1108 supplies the converted motion vector to the vector cost calculation unit 904.
  • the control unit 300 supplies a candidate vector having a size corresponding to the reduction ratio in the current search step to the predicted image generation unit 302 and the vector cost calculation unit 904.
  • FIG. 12 is a flowchart showing an example of the operation of the motion vector search apparatus 10B of this embodiment. Comparing FIG. 12 and FIG. 7, the motion vector search apparatus 10B of the present embodiment performs the operation of step S1209 after step S700.
  • step S1209 the input image conversion unit 1109 performs predetermined conversion on the input image read from the input image storage unit 200 according to the number of search steps.
  • the input image conversion unit 1109 stores the converted input image in the converted input image storage unit 1110.
  • the reference image conversion unit 1112 performs predetermined conversion on the reference image read from the reference image storage unit 201 according to the number of search steps.
  • the reference image conversion unit 1112 stores the converted reference image in the conversion reference image storage unit 1111.
  • the predetermined conversion is, for example, image reduction.
  • step S304 the control unit 300 may set a search range in which candidate vectors are generated according to the conversion in the current search step. For example, if the conversion in the first search step is a reduction with a reduction ratio of 1/2, the control unit 300 reduces the search range to a search range that is set when conversion is not performed to 1/2 in the vertical and horizontal directions. The range may be set.
  • step S705 the vector conversion unit 1108 reads a motion vector from the motion vector storage unit 203B.
  • the motion vector read from the motion vector storage unit 203B is converted to eliminate the motion vector difference based on the conversion difference between the current search step and the previous search step.
  • the vector conversion unit 1108 doubles the read motion vector. Expand to.
  • the vector conversion unit 1108 transmits the converted motion vector to the vector cost calculation unit 904.
  • the conversion in the first search step may be reduction at a reduction ratio of 1/2, for example.
  • the reduction rate in the second and subsequent search steps for example, may be 1. In this case, conversion is not performed in the second and subsequent search steps.
  • the conversion by the input image conversion unit 1109 and the reference image conversion unit 1112 is not limited to the above example.
  • the reduction rate in the first search step may be 1/4
  • the reduction rate in the second search step may be 1/2
  • the reduction rate in the third and subsequent search steps may be 1.
  • the reduction rate in the first search step is 1 ⁇ 4
  • the reduction rate in the second search step is 1 ⁇ 2
  • the reduction rate in the third search step is 1 in the vertical direction
  • the reduction ratio in the fourth and subsequent search steps may be 1.
  • FIG. 13 is a diagram schematically showing the input image after conversion and the motion vector after conversion used in the search process in the present embodiment.
  • the upper part of FIG. 13 represents the input image after conversion in the first search step and the initial value of the motion vector.
  • the input image after conversion in the first search step is reduced to be smaller than the input image after conversion in the second and subsequent search steps.
  • the initial value of the motion vector in the first search step is a zero vector.
  • the middle part of FIG. 13 represents the input image after conversion in the second search step and a vector in which the motion vector obtained in the first search step is expanded in accordance with the conversion in the second search step.
  • the lower part of FIG. 13 represents the input image after the conversion in the third search step and the vector obtained by expanding the motion vector obtained in the second search step in accordance with the conversion in the third search step.
  • the predetermined conversion described above may be to reduce the number of bits of the bit string representing the pixel value of each pixel, instead of reducing the image.
  • the conversion for reducing the number of bits of the bit string representing the pixel value is performed, for example, by an operation for removing a predetermined number of lower bits from the bit string representing the pixel value. For example, when the number of bits of a pixel value represented by an 8-bit bit string is reduced by 1 bit, the input image conversion unit 1109 and the reference image conversion unit 1112 may remove the least significant bit from the bit string representing the pixel value. Then, the input image conversion unit 1109 and the reference image conversion unit 1112 may use the 7-bit bit string from which the least significant bit is removed as the converted pixel value.
  • the conversion in the first search step is to reduce the number of bits of the bit string representing the pixel value of each pixel by 2 bits
  • the conversion in the second search step is a bit of the bit string representing the pixel value of each pixel.
  • the number may be reduced by 1 bit.
  • the number of bits of the bit string representing the pixel value of each pixel is not changed.
  • the motion vector search apparatus 10B may not include the vector conversion unit 1108. .
  • the predetermined conversion described above may be adding pixels having pixel values calculated by interpolation between pixels of the image. In that case, the number of pixels added between the pixels of the image may be changed according to the search step.
  • This embodiment described above has the same effect as each of the first, second, and third embodiments.
  • the reason is the same as the reason why the effects of the first, second, and third embodiments are produced.
  • the input image conversion unit 1109 converts the input image according to the number of search steps
  • the reference image conversion unit 1112 determines the reference image according to the number of search steps. This is because the same conversion as that performed by the input image conversion unit 1109 is performed.
  • the input image in the first search step in which a search is performed in a wide search region, the input image can be reduced at a high reduction ratio, and then the search process can be performed in a search range having a width corresponding to the reduction ratio. .
  • a coarse search with a high reduction ratio is performed in a search with low accuracy of a prediction vector, such as an initial search step, and a precise search with a low reduction ratio is performed in a subsequent search step in which the accuracy of a prediction vector is high. It can be carried out. Therefore, the motion vector search device 10B of the present embodiment can generate a smoother motion vector field. As a result, the image quality of the moving image encoded using the motion vector derived by the motion vector search apparatus 10B is improved.
  • FIG. 18 is a diagram illustrating the configuration of the motion vector search apparatus 10C of the present embodiment.
  • the motion vector search apparatus 10C of the present embodiment includes a control unit 300, a motion vector storage unit 203, a cost calculation unit 308, and a cost comparison / vector selection unit 305.
  • the control unit 300 generates a plurality of candidate vectors based on a predetermined search range.
  • the motion vector storage unit 203 is selected as a motion vector that is a vector from the position of the area of the reference image related to the block to the position of the block for each of the plurality of blocks into which the input image is divided.
  • the first motion vector is stored.
  • the cost calculation unit 308 calculates an evaluation value representing evaluation of the candidate vector based on the first motion vector for each of the neighboring blocks, the generated candidate vector, the input image, and the reference image. To do.
  • Neighboring blocks are a plurality of blocks located around the target block included in the input image.
  • the cost comparison / vector selection unit 305 selects, as the second motion vector of the target block, the optimal candidate vector having a high evaluation in the evaluation using the evaluation value from the plurality of candidate vectors.
  • the present embodiment described above has the same effect as the first embodiment.
  • the reason is the same as the reason for the effect of the first embodiment.
  • the encoding method is mainly H.264. H.264 or H.264
  • Each embodiment of the present invention in the case of H.265 has been described.
  • the present invention relates to H.264. H.264 or H.264
  • the present invention is not limited to the application with the H.265 encoding method.
  • the present invention can also be applied to other encoding methods such as VC-1 or encoding methods not included in the international standard moving image encoding method.
  • only a part of examples of the difference image cost and vector cost calculation procedure, candidate vector generation procedure, image conversion method, and the like have been described. However, it is easy to use various procedures other than those illustrated.
  • the apparatus according to the above-described embodiment of the present invention includes a motion vector search device 10, a motion vector search device 10A, a motion vector search device 10B, a motion vector search device 10C, a moving image encoding device 1, a moving image encoding device 1A, These are the moving image encoding device 1B and the moving image encoding device 1C.
  • FIG. 19 is a diagram illustrating an example of a configuration of a computer 1000 that can implement the motion vector search apparatus according to each embodiment of the present invention and the moving image coding apparatus according to each embodiment of the present invention.
  • a computer 1000 includes a processor 1001, a memory 1002, a storage device 1003, and an I / O (Input / Output) interface 1004.
  • the computer 1000 can access the recording medium 1005.
  • the memory 1002 and the storage device 1003 are storage devices such as a RAM (Random Access Memory) and a hard disk, for example.
  • the recording medium 1005 is, for example, a storage device such as a RAM or a hard disk, a ROM (Read Only Memory), or a portable recording medium.
  • the storage device 1003 may be the recording medium 1005.
  • the processor 1001 can read and write data and programs from and to the memory 1002 and the storage device 1003.
  • the processor 1001 can access, for example, a moving image encoding device, a motion vector search device, a device that transmits a moving image, or a device that receives an encoded moving image via the I / O interface 1004. it can.
  • the processor 1001 can access the recording medium 1005.
  • the recording medium 1005 stores a program that causes the computer 1000 to operate as one of the above-described apparatuses according to the embodiment of the present invention.
  • the processor 1001 loads the above-described program stored in the recording medium 1005 into the memory 1002. Then, when the processor 1001 executes the program loaded in the memory 1002, the computer 1000 operates as one of the devices according to the above-described embodiments of the present invention according to the program.
  • a unit included in the first group shown below includes, for example, a dedicated program for realizing the function of the unit read from the recording medium 1005 storing the program into the memory 1002, and a processor 1001 that executes the program. Can be realized.
  • the first group includes the following parts.
  • Motion vector search unit 100 Motion compensation unit 101, Intra prediction mode determination unit 102, Intra prediction unit 103, Selector 104, Integer conversion unit 105, Quantization unit 106, Inverse quantization unit 107, Inverse integer conversion unit 108, Variable-length encoding unit 109, Deblocking filter 110, Subtractor 112, Adder 113, Control unit 300, Difference image cost calculation unit 301, Predicted image generation unit 302, Cost calculator 303, Vector cost calculator 304, Vector cost calculator 904, Cost comparison / vector selection unit 305, Prediction vector generation unit 306, Switching unit 307, Vector converter 1108, Input image conversion unit 1109, Reference image conversion unit 1112.
  • the units included in the second group described below can be realized by the memory 1002 included in the computer 1000 and the storage device 1003 such as a hard disk device.
  • the second group includes the following parts. Frame buffer 111, Input image storage unit 200, Reference image storage unit 201, A motion vector storage unit 203, A motion vector storage unit 203A, A motion vector storage unit 203B, Conversion input image storage unit 1110, Conversion reference image storage unit 1111.
  • part or all of the units included in the first group and the second group described above can be realized by a dedicated circuit that realizes the functions of these units.

Landscapes

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

Abstract

 動きベクトルの精度を低下させることなく、動きベクトル探索における並列処理の並列度を向上させることができる動きベクトル探索装置を提供する。 本発明の動きベクトル探索装置は、所定の探索範囲に基づき複数の候補ベクトルを生成する制御手段と、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する動きベクトル記憶手段と、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出するコスト計算手段と、前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択するベクトル選択手段と、を備える。

Description

動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体
 本発明は、動画像符号化技術に関し、特に動きベクトルを検出する技術に関する。
 近年、動画像の圧縮符号化技術は広く普及している。動画像の圧縮符号化技術は、例えば、デジタル放送、光学ディスクによる映像コンテンツの頒布、インターネット等を経由した映像配信など、幅広い用途に利用されている。さらに、動画像の圧縮符号化技術は、低ビットレート、高圧縮率かつ高画質で、動画像信号を符号化できるよう進歩している。動画像信号を符号化して符号化データを生成したり、符号化された動画像を復号化したりする技術には、以下のような技術がある。ITU(International Telecommunication Union)が標準化したH.261や、H.263は、そのような技術の例である。ISO(International Organization for Standardization)のMPEG(Motion Picture Experts Group)-1、MPEG-2、MPEG-4も、そのような技術の例である。SMPTE(Society of Motion Picture and Television Engineers)のVC-1も、そのような技術の例である。これらの技術は、国際標準規格として広く用いられている。また、ITUとISOが共同で規格化を行なったH.264/MPEG-4 AVC(Advanced Video Coding)も普及が進んでいる。以下では、H.264/MPEG-4 AVCをH.264と記述する。さらに、最新の動画像圧縮符号化規格として、2013年にH.265/MPEG-H HEVC(High Efficiency Video Coding)が標準化された。以下では、H.265/MPEG-H HEVCをH.265と記述する。H.265は、H.264と同等の映像品質でデータサイズが半分程度になるように動画像を圧縮することができると言われている。H.265は、今後幅広い分野での活用が期待されている。
 これらの動画像符号化技術は、動き補償予測、予測誤差画像の直交変換、直交変換係数の量子化、量子化した直交変換係数のエントロピー符号化といった複数の要素技術の組み合わせによって実現される。これらの動画像符号化技術は、ハイブリッド符号化と呼ばれている。
 上述の動き補償予測では、動画像における前のフレームと現在のフレームとの間で、MB(Macro Block)毎に、画像の動きを表す動きベクトルの探索が行われる。以下の本発明の説明において、動きベクトルの探索を行う処理を、「動きベクトル探索処理」と表記する。
 動きベクトル探索処理では、符号化対象画像の各MBに対して、多数の候補ベクトルそれぞれについての予測画像生成、レート歪みコスト算出、比較、選択といった処理が反復実行される。そのため、動きベクトル探索処理の演算量は大きい。動きベクトル探索処理の演算量が、動画像符号化処理全体の演算量の大部分を占める場合がある。このため、動画像符号化を高速化するためには動きベクトル探索処理の高速化が重要である。
 処理を実行するプロセッサにおいて、近年、プロセッサのマルチコア化、メニーコア化が進んでいる。一般的なパーソナルコンピュータのCPU(Central Processing Unit)にも、2コア、又は4コアのプロセッサコアが搭載されていることが多い。ハイエンドCPUには、8コア以上のコアを搭載するCPUもある。また、50コア以上のプロセッサコアが集積されたメニーコアアクセラレータも実用化されている。さらに、3次元グラフィックス処理用に利用されているGPU(Graphics Processing Unit)は、数千基のプロセッサコアが集積された大規模な並列プロセッサである。このようなGPUを他の用途にも活用する、GPGPU(General Purpose Computing on Graphics Processing Unit)と呼ばれる技術がある。処理がGPUの特性とマッチする場合、GPUを使用してその処理を行うことにより、その処理を実行する速度は、CPUを使用してその処理を行う場合の速度と比較して数倍~数十倍に高速化され得る。
 上述のベクトル探索処理を、これらのマルチコア、メニーコアプロセッサを使用することによって、並列に行うことができれば、動きベクトル探索処理の大幅な高速化が可能になる。動きベクトル探索処理の高速化ができれば、動画像符号化の高速化が可能になる。
 非特許文献1の4.3.1節には、動きベクトル探索処理を並列に処理する技術が開示されている。動きベクトル探索処理では、近傍ブロックの符号化済みベクトルが利用される。すなわち、互いに近傍に位置するブロック間に依存関係がある。そのため、任意のブロックを並列に処理することはできない。非特許文献1によって開示されている技術では、非特許文献1のFigure 14に示されているように、フレーム内で互いに離れた所定の相対的位置関係にある複数のMBに対する処理が並列に行われる。そして、処理の対象であるMBの位置をフレームの左上から右下に向かって変更することによって、所定の相対的位置関係にある複数のMBの組み合わせを変更しながら、それらの複数のMBに対する並列処理を順次進行させる。この処理は、Wavefront処理と呼ばれる。
 動きベクトル探索処理は、符号化対象画像の各MBに対して、多数の候補ベクトルそれぞれについての予測画像生成、レート歪みコスト算出、比較及び選択といった処理を反復実行するため演算量が大きく、動画像符号化処理全体の演算量の大部分を占める場合がある。このため、動画像符号化を高速化するためには動きベクトル探索処理の高速化が重要である。
Y. Chen, E. Li, X. Zhou and S. Ge, "Implementation of H.264 encoder and decoder on personal computers," Journal of Visual Communication and Image Representation, Volume 17, Issue 2, April 2006, pp.509-532, 2006.
 非特許文献1によって開示されている技術では、動きベクトル探索処理を並列に行うことができるMBは、例えば非特許文献1のFigure 14に示されているような、所定の位置関係にあるMBに限定される。符号化対象画像のサイズがフルハイビジョン解像度(すなわち1920画素×1080画素)であり、MBのサイズが16画素×16画素である場合、非特許文献1によって開示されている技術によって並列に処理できるMB数は最大でも60程度である。この場合の並列度は、50コア以上を持つメニーコアアクセラレータや、数千以上のコアを持つメニーコアGPUによって並列処理を行うためには不十分である。すなわち、非特許文献1によって開示されている技術では、動きベクトル探索処理の、メニーコアプロセッサのコア数に応じた高速化を実現することはできない。
 非特許文献1によって開示されている技術では、動きベクトルを探索する際に近傍ブロックのベクトルを参照することによる、近傍ブロック間の依存関係によって、並列度が制約される。従って、例えばベクトルの参照を禁止すれば、並列度を向上させることができる。しかし、ベクトルの参照を禁止すると、動きベクトルの精度が低下し、結果として圧縮率の低下や画質の劣化を招く。
 本発明の目的の一つは、動きベクトルの精度を低下させることなく、動きベクトル探索における並列処理の並列度を向上させることができる動きベクトル探索装置等を提供することにある。
 本発明の一形態に係る動きベクトル探索装置は、所定の探索範囲に基づき複数の候補ベクトルを生成する制御手段と、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する動きベクトル記憶手段と、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出するコスト計算手段と、前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択するベクトル選択手段と、を備える。
 本発明の一形態に係る動きベクトル探索方法は、所定の探索範囲に基づき複数の候補ベクトルを生成し、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを動きベクトル記憶手段に記憶し、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出し、前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択する。
 本発明の一形態に係るコンピュータ読み取り可能な記録媒体は、動きベクトル探索プログラムは、コンピュータを、所定の探索範囲に基づき複数の候補ベクトルを生成する制御手段と、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する動きベクトル記憶手段と、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出するコスト計算手段と、前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択するベクトル選択手段と、して動作させる動きベクトル探索プログラムを記憶する。
 本発明は、そのようなコンピュータ読み取り可能な記録媒体に格納されている動きベクトル探索プログラムによっても実現することができる。
 本発明には、動きベクトルの精度を低下させることなく、動きベクトル探索における並列処理の並列度を向上させることができるという効果がある。
図1は、H.264方式の動画像符号化装置1Cの構成の例を示すブロック図である。 図2は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の構成の例を示すブロック図である。 図3は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の動作の例を示すフローチャートである。 図4は、H.264における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。 図5は、H.265における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。 図6は、本発明の第1、及び第2の実施形態の動きベクトル探索装置10の構成の例を表すブロック図である。 図7は、本発明の第1、第2、及び第3の実施形態の動きベクトル探索装置10の動作の例を表すフローチャートである。 図8は、本発明の第1の実施形態における、動きベクトルを探索する動作を模式的に表す図である。 図9は、本発明の第3の実施の形態における動きベクトル探索装置10Aの構成の例を示すブロック図である。 図10は、動きベクトルの導出において符号化対象ブロックと関連があるブロックの例を表す図である。 図11は、第4の実施形態の動きベクトル探索装置10Bの構成の例を表すブロック図である。 図12は、第4の実施形態の動きベクトル探索装置10Bの動作の例を表すフローチャートである。 図13は、第4の実施形態における、変換後の入力画像と、探索の処理で使用される変換後の動きベクトルとを、模式的に表す図である。 図14は、第1、及び第2の実施形態の動画像符号化装置1の構成の例を表すブロック図である。 図15は、第2の実施形態における各探索ステップの探索範囲を模式的に表す図である。 図16は、第3の実施形態の動画像符号化装置1Aの構成の例を表すブロック図である。 図17は、第4の実施形態の動画像符号化装置1Bの構成の例を表すブロック図である。 図18は、第5の実施形態の動画像符号化装置1Cの構成の例を表すブロック図である。 図19は、各実施形態の動きベクトル探索装置及び各実施形態の各動画像符号化装置を実現することができる、コンピュータ1000の構成の一例を表す図である。
 次に、本発明の実施の形態について図面を参照して詳細に説明する。
 まず、本発明の各実施形態との比較のために、動画像符号化装置の構成の一例として、H.264方式の動画像符号化装置について、図面を参照して詳細に説明する。H.264方式では、圧縮効率向上および画質向上を目的として、イントラ予測や、デブロックフィルタの技術も採用されている。イントラ予測は、同一画像フレーム内の近傍の画素の情報を用いて予測を行なう技術である。デブロックフィルタの技術は、符号化結果の画像に発生した符号化ノイズを低減する技術である。H.264の詳細は、例えば、下記の文献1に記載されている。
 (文献1) ITU-T Recommendation H.264 「Advanced  video coding for generic audiovisual services」、2010年3月.
 図1は、H.264方式の動画像符号化装置1Cの構成の例を表すブロック図である。図1に示すH.264方式の動画像符号化装置1Cを、以下の説明では、比較例の動画像符号化装置1Cとも表記する。図1を参照すると、動画像符号化装置1Cは、次に示す部を構成要素として含む。
 動きベクトル探索部100、
 動き補償部101、
 イントラ予測モード判定部102、
 イントラ予測部103、
 選択部104、
 整数変換部105、
 量子化部106、
 逆量子化部107、
 逆整数変換部108、
 可変長符号化部109、
 デブロックフィルタ110、
 フレームバッファ111、
 減算部112、
 加算部113。
 フレームバッファ111は、過去に符号化済みのフレームの画像データを記憶する。
 動画像符号化装置1Cに新たな画像が入力されると、その入力された画像に対して、マクロブロック(MB)と呼ばれる16×16画素のブロック単位で符号化処理が行なわれる。
 動きベクトル探索(ME:Motion Estimation)部100は、入力画像とフレームバッファ111に格納されている符号化済み画像との間で対応する画像ブロックの位置変化を検出する。動きベクトル探索部100は、その検出された位置変化に相当する動きベクトルを出力する。入力画像は、例えば、動画像符号化装置1Cが符号化を行う動画像に含まれるフレームである。入力画像は、以下の説明において、符号化対象画像とも表記される。
 動き補償(MC:Motion Compensation)部101は、フレームバッファ111に格納されている符号化済み画像と、動きベクトル探索部100から供給される動きベクトルとを用いて、動き補償処理を行なう。そして、動き補償部101は、動き補償処理によって得られた動き補償予測画像を出力する。
 イントラ予測モード判定部102は、入力画像と、同一画像内の符号化済みマクロブロックの画像を用いて適切な(すなわち、一般的には、符号化効率が最も高くなる)イントラ予測モードを選択する。イントラ予測モード判定部102は、一般的には、符号化効率が最も高くなるイントラ予測モードを、適切なイントラ予測モードとして選択する。イントラ予測モード判定部102は、選択されたイントラ予測モードを出力する。
 イントラ予測(IP:Intra Prediction)部103は、同一画像内の符号化済みマクロブロックの画像と、イントラ予測モード判定部102から供給されるイントラ予測モードを用いて、イントラ予測処理を行なう。イントラ予測は、画面内予測とも表記される。イントラ予測部103は、イントラ予測処理によって得られた、イントラ予測画像を出力する。
 選択部104は、動き補償部101から供給される動き補償予測画像と、イントラ予測部103から供給されるイントラ予測画像のうち、適切な画像を予測画像として選択する。選択部104は、一般的には、より符号化効率が高くなる画像を、適切な画像として選択する。選択部104では、選択した画像を、予測画像として出力する。動き補償予測画像が選択される場合がInterモードと呼ばれ、イントラ予測画像が選択される場合がIntraモードと呼ばれることがある。
 減算部112は、入力画像から、選択部104から出力される予測画像を減算することにより、予測誤差画像を導出する。減算部112は、導出された予測誤差画像を出力する。
 整数変換(DIT:Discrete Integer Transform)部105は、出力された予測誤差画像に対して、DCT(Discrete Cosine Transform)と同様な直交変換処理を行なう。整数変換部105は、直交変換処理によって得られた直交変換係数列を出力する。
 量子化(Q:Quantize)部106は、出力された直交変換係数列に対して、量子化処理を行なう。そして、量子化部106は、量子化された直交変換係数列を出力する。
 可変長符号化(VLC:Variable-Length Coding)部109は、量子化された直交変換係数列を所定の規則で符号化する。可変長符号化部109は、符号化の結果をビットストリームとして出力する。これがH.264方式の動画像符号化装置1Cの出力ビットストリームである。
 また、逆量子化(IQ:Inverse Qunatization)部107は、量子化された直交変換係数列に対して、逆量子化処理を行う。
 逆整数変換(IDIT:Inverse Discrete Integer Transform)部108は、逆量子化処理の結果に対して、逆整数変換処理を行なう。
 加算部113は、選択部104から出力される予測画像と、逆整数変換処理の結果とを加算する。
 さらに、デブロックフィルタ110は、加算によって得られた画像に対して、デブロックフィルタ処理を行なうことによって、ローカルデコード画像を生成する。
 ローカルデコード画像はフレームバッファ111に記憶される。フレームバッファ111に記憶されているローカルデコード画像は、後続フレームに対する符号化に利用される。例えば、後述される参照画像は、このローカルデコード画像である。以上で説明した処理の、より具体的な処理の内容は、例えば、下記の文献2に開示されている。
 (文献2) Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG、Document JVT-O079、「Text Description of Joint Mode Reference Encoding Method and Decoding Concealment Method」、2005年4月.
 次に、動画像符号化装置1Cに含まれる動きベクトル探索部100について、図面を参照して詳細に説明する。
 図2は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の構成の例を表す図である。図2を参照すると、動きベクトル探索部100は、次に示す部を構成要素として含む。
 入力画像記憶部200、
 参照画像記憶部201、
 動きベクトル記憶部202、
 制御部300、
 差分画像コスト計算部301、
 予測画像生成部302、
 コスト算出部303、
 ベクトルコスト計算部304、
 コスト比較・ベクトル選択部305、
 予測ベクトル生成部306。
 コスト比較・ベクトル選択部305は、ベクトル選択部305とも表記される。
 入力画像記憶部200は、入力画像を記憶する。
 参照画像記憶部201は、過去に符号化済みの画像データを記憶する。参照画像記憶部201が記憶する過去に符号化済みの画像データは、動き補償予測において参照される。参照画像記憶部201が記憶する画像は、上述のローカルデコード画像である。参照画像記憶部201が記憶する画像は、参照画像とも表記される。図1に示すフレームバッファ111が、参照画像記憶部201として動作してもよい。その場合、動きベクトル探索部100は、参照画像記憶部201を含んでいなくてよい。
 動きベクトル記憶部202は、符号化対象画像内の符号化済みのMBにおいて導出された、動きベクトルを記憶する。
 動き補償予測に用いるのに最適な動きベクトルを求めるのが動きベクトル探索部100の役割である。動きベクトル探索部100が求める動きベクトルの精度が、圧縮性能を大きく左右する。この処理では、復号画像に発生するノイズ量を抑えつつ、符号化する情報量も最小化する動きベクトルを求めることが要求される。このため、近年の動画像符号化装置ではRD(Rate-Distortion)最適化と呼ばれる手法が広く用いられている。RD最適化では、多数の動きベクトル候補に対して、式1で表されるレート歪みコストを算出される。そして、レート歪みコストが最小になる動きベクトル候補が、最適な動きベクトルとして採用される。
   J = D + λR                  (式1)
 ここで、Dは予測差分画像に発生する歪み量(差分画像コスト)であり、Rは動きベクトルの符号化で発生する符号量(ベクトルコスト)であり、λは画像の複雑さなどに依存する重み係数(コスト係数)である。RD最適化の詳細は、例えば、上記の文献2や、下記の文献3に記載されている。
 (文献3) G.J. Sullivan, T. Wiegand, "Rate-distortion optimization for video compression," Signal Processing Magazine, IEEE, vol.15, no.6, pp.74-90, 1998.
 動きベクトル探索部100は、RD最適化によって、動きベクトルを求める。
 制御部300が、動きベクトル探索部100の動作を制御する。制御部300は、所定の探索範囲に基づき候補ベクトルを生成し、生成した候補ベクトルを、予測画像生成部302とベクトルコスト計算部304に供給する。
 差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象の画像との差分画像を計算する。
 予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、参照画像記憶部201に格納されている参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。
 差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象画像との差分画像を計算する。前述のように、入力画像が符号化対象画像である。
 予測ベクトル生成部306は、動きベクトル記憶部202から読み出された、符号化済みのMBの動きベクトルを用いて、符号化対象MBの予測ベクトルを生成する。
 ベクトルコスト計算部304は、制御部300から供給される候補ベクトルと、予測ベクトル生成部306から供給される予測ベクトルとをもとに、その候補ベクトルのベクトルコストを算出する。
 コスト算出部303は、差分画像コストと、ベクトルコストと、制御部300から供給されるコスト係数(式1におけるλ)に基づき、式1によって表されるレート歪みコストを算出する。レート歪みコストは、供給された候補ベクトルが、符号化対象ブロックの動きベクトルとしてどの程度適するかを表す指標である評価値である。
 コスト比較・ベクトル選択部305は、コスト算出部303から供給されるレート歪みコストが、既に評価済みである候補ベクトルのレート歪みコストより小さい場合、現候補ベクトルを暫定的な最適ベクトルとして選択する。すなわち、コスト比較・ベクトル選択部305は、入力画像のブロック毎に、レート歪みコストが最も小さい候補ベクトルを、暫定的な最適ベクトルとして選択する。
 次に、動きベクトル探索部100の動作について、図面を参照して詳細に説明する。
 図3は、H.264方式の動画像符号化装置1Cの動きベクトル探索部100の動作を表すフローチャートである。
 制御部300は、符号化対象画像内に未処理のMBが存在するかを判定する(ステップS301)。未処理のMBが存在しない場合(ステップS301においてYes)、動きベクトル探索部100は、図3に示す動作を終了する。未処理のMBが存在する場合(ステップS301においてNo)、制御部300は、そのMBを符号化対象ブロックとした動きベクトル探索のための初期化処理を行う(ステップS302)。制御部300は、この初期化処理では、後述する暫定的な最適動きベクトルやレート歪みコストの最小値として保持する値の初期化や、初期探索候補ベクトルの設定を行う。
 次に、制御部300は、符号化対象ブロックに対して未生成の候補ベクトルが残っているかを判定する(ステップS303)。未生成の候補ベクトルが残っている場合(ステップS303においてYes)、制御部300は、探索する候補ベクトルを生成する(ステップS304)。制御部300は、所定の探索範囲内をラスタースキャンするように順次候補ベクトルを生成してもよい。制御部300は、例えば、探索範囲内の位置を順次選択しながら、探索範囲内の選択された位置を表すベクトルを、候補ベクトルとして生成すればよい。制御部300は、ある時点での暫定の最適ベクトルの周囲に次の候補ベクトルを設定してもよい。制御部300は、他のさまざまな方法のいずれかによって、候補ベクトルを生成してもよい。制御部300は、探索範囲内全体に対して候補ベクトルが生成された場合、未生成の候補ベクトルが残っていないと判定すればよい。制御部300は生成した候補ベクトルを、予測画像生成部302に供給する。
 次に、コスト算出部303が、式1によって表されるレート歪みコストを算出する(ステップS305)。
 そのために、まず、予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、参照画像記憶部201に格納されている参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。予測画像生成部302は、生成した予測画像を、差分画像コスト計算部301に供給する。
 差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、入力画像記憶部200から供給される符号化対象の画像との差分画像を計算する。差分画像コスト計算部301は、さらに、その差分画像の、歪み量に基づく差分画像コストを算出する。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分絶対値和(SAD: Sum of Absolute Differences)であってもよい。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分二乗和(SSD: Sum of Square Differences)であってもよい。差分画像コスト計算部301が算出する差分画像コストは、画素値の差分に所定の変換を施した係数の絶対値和(SATD:Sum of Absolute Transformed Differences)であってもよい。
 予測ベクトル生成部306は、動きベクトル記憶部202から、符号化済みのMBの動きベクトルを読み出す。予測ベクトル生成部306は、読み出された、符号化済みのMBの動きベクトルを用いて、符号化対象MBの予測ベクトルを生成する。予測ベクトルの算出手順は符号化規格で定められている。
 図4は、H.264における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。例えばH.264の場合は図4に示すように、符号化対象ブロックに隣接する左(ブロックA)、上(ブロックB)、右上(ブロックC)の動きベクトルが、予測ベクトルの算出に用いられる。予測ベクトル生成部306は、この3本の動きベクトルのMedian(中央値)を予測ベクトルとする。
 図5は、H.265における予測ベクトルの算出に使用される動きベクトルを模式的に表す図である。H.265の場合、予測ベクトル生成部306は、符号化対象ブロックの空間的近傍の5種類の位置の動きベクトル、および時間的近傍フレームの同位置ブロックの周辺の2種類の位置の動きベクトルを、所定の規則に基づきリスト化する。時間的近傍フレームは、例えば、符号化対象フレームより時間的に一つ前のフレームである。符号化対象ブロックの空間的近傍の5種類の位置は、図5におけるA0~B2の位置である。時間的近傍フレームの同位置ブロックの周辺のC0、C1の2種類の位置は、図5におけるC0、C1の2種類の位置である。予測ベクトル生成部306は、リスト中のベクトルのいずれか一つを、予測ベクトルとして選択する。H.265の詳細は、例えば、下記の文献4に記載されている。
 (文献4) ITU-T Recommendation H.265 「Advanced  video coding for generic audiovisual services」、2013年4月.
 ベクトルコスト計算部304は、制御部300から供給される候補ベクトルと、予測ベクトル生成部306から供給される予測ベクトルとをもとに、その候補ベクトルのベクトルコストを算出する。候補ベクトルのベクトルコストは、その候補ベクトルを符号化するために発生する符号量である。
 コスト算出部303は、差分画像コストと、ベクトルコストと、制御部300から供給されるコスト係数(式1におけるλ)に基づき、式1によって表されるレート歪みコストを算出する(ここまでがステップS305)。差分画像コストは、差分画像コスト計算部301から供給される。ベクトルコストは、ベクトルコスト計算部304から供給される。制御部300は、コスト算出部303にコスト係数を供給する。
 次に、コスト比較・ベクトル選択部305は、コスト算出部303から供給されるレート歪みコストと、既に評価済みの候補ベクトルのレート歪みコストの最小値を比較する。コスト比較・ベクトル選択部305は、現候補ベクトルのコストの方が小さい場合、現候補ベクトルを暫定的な最適ベクトルとして選択し、加えて、レート歪みコストの最小値を更新する。コスト比較・ベクトル選択部305は、暫定的な最適ベクトルを制御部300に供給する(ステップS306)。
 制御部300は、暫定的な最適ベクトルなどを用いて、次に評価する候補ベクトルを決定する。すべての候補ベクトルの評価が完了すると、制御部300は、現ブロックの動きベクトル探索を完了する。制御部300は、動きベクトル探索を完了した時点における暫定的な最適ベクトルを、最終的な動きベクトルとして確定する。制御部300は、確定した最終的な動きベクトルを、動きベクトル記憶部202に格納する(ステップS307)。
 以上の動きベクトル探索処理が、画像内の各MBに対して順次ラスタースキャン順に実行されると、1フレームの動きベクトル探索処理が完了する。
 <第1の実施形態>
 次に、本発明の第1の実施の形態について、図面を参照して詳細に説明する。
 図14は、本実施形態の動画像符号化装置1の構成の例を表すブロック図である。
 図14と図1とを比較すると、本実施形態の動画像符号化装置1は、動きベクトル探索部100の代わりに動きベクトル探索装置10を含む。動画像符号化装置1の他の構成要素は、同じ符号が付与された、動画像符号化装置1Cの構成要素と同じである。動画像符号化装置1は、動画像符号化装置1Cと同様に、動画像が入力されると、例えばH.264のビットストリームを出力する。
 以下、本発明の各実施形態において、動きベクトル探索装置10が、H.264で動画像の符号化を行う動画像符号化装置1において動きベクトルの探索を行う場合について説明する。しかし、本実施形態の動きベクトル探索装置10及び他の実施形態に係る動きベクトル探索装置を適用することができる動画像符号化装置は、H.264やH.265で動画像の符号化を行う動画像符号化装置に限定されない。本実施形態の動きベクトル探索装置10及び他の実施形態に係る動きベクトル探索装置は、国際標準である、あるいは国際標準ではない、他の符号化方式で動画像の符号化を行う動画像符号化装置にも適用可能である。
 図6は、本実施形態の動きベクトル探索装置10の構成の例を表すブロック図である。
 図6を参照すると、動きベクトル探索装置10は、次に示す部を構成要素として含む。
 入力画像記憶部200、
 参照画像記憶部201、
 動きベクトル記憶部203、
 制御部300、
 予測画像生成部302、
 予測ベクトル生成部306、
 切り替え部307、
 コスト計算部308。
 コスト計算部308は、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部304とを含む。
 図6と図2に示す動きベクトル探索部100の構成とを比較すると、本実施形態の動きベクトル探索装置10は、動きベクトル記憶部202の代わりに、動きベクトル記憶部203を含む。さらに、動きベクトル探索装置10は、動きベクトル探索部100の構成に含まれない、切り替え部307と、コスト計算部308とを含む。そして、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部304は、コスト計算部308に含まれる。本実施形態の動きベクトル探索装置10の他の構成要素は、以下の相違を除き、同じ番号が付与された、図2に示す動きベクトル探索部100の構成要素と同等の動作を行う。
 動きベクトル記憶部203は、動きベクトルを記憶する。動きベクトル記憶部203は、第1の記憶領域と第2の記憶領域に分割されている。第1の記憶領域は、動きベクトル記憶部203A又は動きベクトル記憶部203Bとしてアクセスされる。同様に、第2の記憶領域は、動きベクトル記憶部203B又は動きベクトル記憶部203Aとしてアクセスされる。以下の説明において、動きベクトル記憶部203Aを記憶部Aとも表記する。同様に、動きベクトル記憶部203Bを記憶部Bとも表記する。
 切り替え部307は、例えば制御部300から受信する指示に基づき、動きベクトル記憶部203Aとしてアクセスされる記憶領域を、第1の記憶領域と第2の記憶領域の間で切り替える。同様に、切り替え部307は、例えば制御部300から受信する指示に基づき、動きベクトル記憶部203Bとしてアクセスされる記憶領域を、第2の記憶領域と第1の記憶領域の間で切り替える。切り替え部307は、第1の記憶領域が動きベクトル記憶部203Aとしてアクセスされる場合、第2の記憶領域が動きベクトル記憶部203Bとしてアクセスされるように切り替えを行う。また、切り替え部307は、第1の記憶領域が動きベクトル記憶部203Bとしてアクセスされる場合、第2の記憶領域が動きベクトル記憶部203Aとしてアクセスされるように切り替えを行う。
 本実施形態では、制御部300から供給される動きベクトルは、動きベクトル記憶部203Aに格納される。すなわち、制御部300は、導出された動きベクトルを、動きベクトル記憶部203Aに格納する。一方、動きベクトル記憶部203Bから、予測ベクトル生成部306に対して、動きベクトルが供給される。すなわち、予測ベクトル生成部306は、動きベクトル記憶部203Bから動きベクトルを読み出す。
 次に、本実施形態の動きベクトル探索装置10の動作について、図面を参照して詳細に説明する。
 図7は、本実施形態の動きベクトル探索装置10の動作の例を表すフローチャートである。
 図7に示す各ステップの動作は、ステップS700、ステップS705、ステップS707及びステップS708の動作を除き、図3に示す同じ符号が付与されたステップの動作と同じである。
 後述されるように、本実施形態の動きベクトル探索装置10は、フレーム全体に対する動きベクトル探索を、1フレーム当たり2回以上行う。すなわち、動きベクトル探索装置10は、符号化対象画像全体に対する動きベクトル探索を、1つの符号化対象画像当たり2回以上行う。以下の説明において、1回の、フレーム全体に対する動きベクトル探索を、探索ステップと表記する。動きベクトル探索装置10は、符号化対象画像に対する1回目の探索ステップにおいて、その符号化対象画像の符号化済みMBの動きベクトルではなく、動きベクトルのあらかじめ決められた初期値を使用して、最適な動きベクトルの導出を行う。動きベクトル探索装置10は、符号化対象画像に対する2回目以降の探索ステップにおいては、その符号化対象画像に対する前回の探索ステップにおいて導出された動きベクトルを使用して、最適な動きベクトルの導出を行う。
 図8は、複数回の探索ステップで更新される動きベクトルの例を模式的に表す図である。図8の上段に示すベクトルは、動きベクトルの初期値を表す。図8の中段に示すベクトルは、1回目の探索ステップ(探索ステップ1)によって導出された動きベクトルを表す。1回目の探索ステップでは、算出される予測ベクトルは例えばゼロベクトルである。図8の下段に示すベクトルは、2回目の探索ステップ(探索ステップ2)によって導出された動きベクトルを表す。2回目の探索ステップでは、1回目の探索ステップで導出された動きベクトルを使用して、予測ベクトルが算出される。下段のベクトルのうち、太い矢印によって表されるベクトルは、前回の探索ステップにおいて導出された動きベクトルから変化した動きベクトルを表す。すなわち、太い矢印によって表されるベクトルは、同じブロックに対して前回の探索ステップにおいて導出された動きベクトルと異なる動きベクトルを表す。
 図7に示すステップS700において、制御部300は、符号化対象フレームに対して動きベクトルの探索を行うための初期化処理を行う。
 本実施形態の動きベクトル探索装置10では、RD最適化における予測ベクトルの算出の際、同じ探索ステップで導出された、動きベクトル導出の対象であるブロック(すなわち対象ブロック)の近傍のブロックの動きベクトルは使用されない。動きベクトル探索装置10は、一つ前の探索ステップにおいて導出された、対象ブロックの近傍のブロックの動きベクトルを使用して、RD最適化における予測ベクトルを算出する。そのため、制御部300は、ステップS700の初期化処理では、1回目の探索ステップにおいて使用される、全てのブロックに対する初期動きベクトルを動きベクトル記憶部203に格納する。
 上述のように、本実施形態では、制御部300は、導出された動きベクトルを、動きベクトル記憶部203Aに格納する。予測ベクトル生成部306は、動きベクトル記憶部203Bから動きベクトルを読み出す。
 制御部300は、1回目の探索ステップでは、ステップS700において、動きベクトル記憶部203の第1の記憶領域又は第2の記憶領域の何れかに初期動きベクトルを格納する。例えば、制御部300は、例えば第2の記憶領域に初期動きベクトルを格納する場合、まず、第2の記憶領域が、動きベクトル記憶部203Aとして、すなわち記憶部Aとしてアクセスされるように切り替える指示を、切り替え部307に送信すればよい。そして、制御部300は、初期動きベクトルを記憶部Aに書き込めばよい。さらに、制御部300は、初期動きベクトルが格納された記憶領域が、動きベクトル記憶部203Bとして、すなわち記憶部Bとしてアクセスされるように切り替える指示を、切り替え部307に送信すればよい。
 初期動きベクトルは、全て、動きが無いことを表すゼロベクトルであってもよい。その場合、制御部300は、全てのMBに対して、ゼロベクトルであるベクトル(0,0)を記憶部Aに格納する。本発明の各実施形態では、初期動きベクトルを含む動きベクトルは、2次元のベクトルである。2次元のゼロベクトルは、ベクトル(0,0)で表される。あるいは、初期動きベクトルは、符号化済みのフレームに対して導出された動きベクトルであってもよい。その場合、制御部300は、各MBに対して、符号化済みのフレームの同位置のMBにおいて導出された動きベクトルを、記憶部Aに格納する。制御部300は、他の初期動きベクトルを記憶部Aに格納してもよい。すなわち制御部300は、他のベクトルによって、記憶部Aを初期化してもよい。
 ステップS700の後、制御部300は、初期化処理時に記憶部Aに割り当てられていた記憶領域を、記憶部Bに割り当て、初期化処理時に記憶部Bに割り当てられていた記憶領域を、記憶部Aに割り当てる指示を、切り替え部307に送信する。切り替え部307は、その指示を受信すると、記憶部Aに割り当てる記憶領域と、記憶部Bに割り当てる記憶領域を入れ替える。その結果、初期動きベクトルを記憶部Bから読み出すことができるようになる。
 ステップS301からステップS304までの動作は、図3に示す、動きベクトル探索部100の、同じ符号が付与されたステップの動作と同じである。
 ステップS705におけるコスト算出の処理手順は、図3に示すステップS305におけるコスト算出の処理手順と同じである。しかし、ステップS705において予測ベクトル生成部306に供給される動きベクトルが、ステップS305において予測ベクトル生成部306に供給される動きベクトルと異なる。ステップS305において予測ベクトル生成部306に供給される動きベクトルは、動きベクトル記憶部202に格納されている、同じ探索ステップで導出された、近傍ブロックの動きベクトルである。一方、ステップS705において予測ベクトル生成部306に供給される動きベクトルは、記憶部Bに格納されている動きベクトルである。記憶部Bに格納されている動きベクトルは、1回目の探索ステップでは、初期動きベクトルである。記憶部Bに格納されている動きベクトルは、2回目以降の探索ステップでは、前回の探索ステップで導出された、近傍ブロックの動きベクトルである。前述のように、予測ベクトル生成部306に供給される動きベクトルは、RD最適化において予測ベクトルを導出するために使用される。
 ステップS306の動作は、図3に示すステップS306の動作と同じである。ステップS707において、制御部300は、導出された動きベクトルを、動きベクトル記憶部203の記憶部Aに格納する。
 ステップS301において、全MBに対する処理が完了したと判定された場合(ステップS301においてYes)、制御部300は、探索を終了するか否かを判定する(ステップS708)。制御部300は、十分な精度の動きベクトルを得られたか否かを所定の基準により判定した結果に基づいて、探索を終了するか否かを判定すればよい。すなわち、制御部300は、十分な精度の動きベクトルを得られたと判定した場合、探索を終了すればよい。制御部300は、例えば以下のように、導出される動きベクトルの、連続する探索ステップ間の差の大きさが、所定の基準を下回った場合に、十分な精度の動きベクトルを得られたと判定すればよい。
 例えば、導出された動きベクトルが、前回の探索ステップで同じMBにおいて導出された動きベクトルに対して変化したMBの割合が所定の閾値を下回った場合に、制御部300は、探索を終了すると判定すればよい。あるいは、例えば、導出された動きベクトルの、前回の探索ステップで同じMBにおいて導出された動きベクトルに対する変化量の大きさの平均値が、所定の閾値を下回った場合に、制御部300は、探索を終了すると判定してもよい。あるいは、制御部300は、例えば、導出された動きベクトルの、前回の探索ステップで同じMBにおいて導出された動きベクトルに対する変化量の平均値の大きさを算出してもよい。制御部300は、算出された平均値の大きさの、前回の探索ステップにおいて導出された変化量の平均値の大きさに対する割合を算出してもよい。そして、制御部300は、算出された割合が所定の閾値以上である場合に、探索を終了すると判定してもよい。
 以上で説明した判定によって探索が終了すると判定されない場合であっても、制御部300は、探索ステップの回数によって探索を打ち切ってもよい。例えば、制御部300は、探索ステップの回数が、あらかじめ定められた上限値に達した場合、探索を終了すると判定してもよい。
 制御部300は、探索を終了する判定を行う判定方法や、その判定で使用される閾値を、符号化タイプや符号化パラメータによって切り替えてもよい。符号化タイプは、例えば、PピクチャかBピクチャか、あるいは、参照ピクチャか非参照ピクチャかを表す。符号化パラメータは、例えば、ビットレート、量子化ステップサイズなどである。
 ステップS708において、探索終了条件が満たされず、制御部300が探索を終了しないと判定した場合(ステップS708においてNo)、動きベクトル探索装置10の動作は、ステップS700に戻る。
 2回目以降の探索ステップでは、ステップS700において、制御部300は、記憶部Aと記憶部Bに割り当てられている記憶領域を入れ替える指示を、切り替え部307に送信する。切り替え部307は、受信した指示に基づき、記憶部Aと記憶部Bに割り当てられている記憶領域を入れ替える。すなわち、切り替え部307は、記憶部Aとしてアクセスされる記憶領域と、記憶部Bとしてアクセスされる記憶領域を入れ替える。このことにより、ある探索ステップにおいて導出された探索結果である動きベクトルが、次の探索ステップにおける予測ベクトルを算出する処理において読み出される。すなわち、ある探索ステップにおいて導出された探索結果である動きベクトルが、次の探索ステップにおける予測ベクトルを算出する処理において、予測ベクトル生成部306に供給される。
 ステップS708において、探索終了条件が満たされ、制御部300が探索を終了すると判定した場合(ステップS708においてYes)、動きベクトル探索装置10は、入力画像記憶部200に符号化対象画像として格納されているフレームに対する動きベクトルの探索を終了する。
 以上で説明した本実施形態には、動きベクトルの精度を低下させることなく、動きベクトル探索における並列処理の並列度を向上させることができるという効果がある。
 その理由は、予測ベクトル生成部306が、ある探索ステップにおいて、同じ探索ステップにおいて導出された近傍ブロックの動きベクトルではなく、1回前の探索ステップで導出された近傍ブロックの動きベクトルを使用するからである。ある探索ステップにおいて、同じ探索ステップの近傍ブロックの動きベクトルが参照されることが無いため、フレーム内の全ブロックに対して独立に、動きベクトル探索の処理を行うことが可能である。すなわち、フレーム内の全ブロックに対する動きベクトル探索の処理を、並列に処理することができる。よって、フレーム内の全ブロックに対する動きベクトル探索の処理において、高い並列度を実現できる。例えばフルハイビジョン解像度(1920画素×1080画素)の画像を16画素×16画素のMB単位で処理する場合、非特許文献1で開示された技術に基づく動きベクトル探索では、フレーム内での並列度は最大でも60程度である。しかし、本実施形態では、全MBに対する処理を並列に行うことが可能である。従って、本実施形態では、並列度は最大で8160である。これにより、50コア以上を持つメニーコアアクセラレータや、数千以上のコアを持つメニーコアGPUを使用して、動きベクトルを探索する処理を行う場合に、多数のコアによって、並列度の高い並列に処理を行うことができる。本実施形態では、1フレームに対して複数回の探索ステップが行われることにより、処理量は増加する。しかし、多数のコアによって並列に処理を行うことによって並列処理の効率が向上するので、処理時間は短縮される。
 また、本実施形態では、同じ探索ステップにおいて導出された近傍ブロックの動きベクトルを参照することが禁止される代わりに、1つ前の探索ステップにおいて導出された動きベクトルが参照される。そのため、RD最適化の効果が大きく低下することはないので、十分に高い精度の動きベクトルが得られる。従って、圧縮率の低下や画質の劣化を抑制することができる。さらに、本実施形態では、一つのフレームに対して探索ステップを反復することにより、導出される動きベクトルの精度の低下が軽減される。
 <第2の実施形態>
 次に、本発明の第2の実施の形態について、図面を参照して詳細に説明する。
 図14は、本実施形態の動画像符号化装置1の構成の例を表すブロック図である。本実施形態の動画像符号化装置1の構成は、第1の実施形態の動画像符号化装置1の構成と同じである。
 図6は、本実施形態の動きベクトル探索装置10の構成の例を表すブロック図である。本実施形態の動きベクトル探索装置10の構成は、第1の実施形態の動きベクトル探索装置10の構成と同じである。
 次に、本実施形態の動きベクトル探索装置10の動作について、図面を参照して詳細に説明する。
 図7は、本実施形態の動きベクトル探索装置10の動作の例を表すフローチャートである。本実施形態の動きベクトル探索装置10の動作は、以下で説明する相違を除き、第1の実施形態の動きベクトル探索装置10の動作と同じである。
 図7に示すステップS304において、本実施形態の制御部300は、同じフレームに対して実行した探索ステップの回数に応じて、候補ベクトルを生成する探索範囲の大きさを、所定の方法に従って順次狭める。すなわち、制御部300は、同じフレームに対する探索ステップの回数の増加に応じて狭くなる探索範囲を設定する。そして、制御部300は、設定された探索範囲に基づき、候補ベクトルを生成する。
 図15は、各探索ステップにおける探索範囲を模式的に表す図である。
 制御部300は、最初の探索ステップにおいて、同じフレームに対して行われる探索ステップ中で最も広い探索範囲を設定すればよい。図15に示す例では、最初の探索ステップにおける探索範囲は、例えば、図15の上段に示すように、対象MBの位置に対して初期ベクトルが示す位置の、右128画素から左128画素まで、かつ、上128画素から下128画素までの範囲である。前述のように、初期ベクトルは、例えばゼロベクトルである。その場合、最初の探索ステップにおける探索範囲は、例えば、図15の上段に示すように、対象MBの位置の、右128画素から左128画素まで、かつ、上128画素から下128画素までの範囲である。画像の座標系が、例えば、右方向が+方向であるx軸と、下方向が+方向でありx軸と直交するy軸とによって表されているとする。そして、例えばx座標が対象MBのx座標よりp画素分小さい点からなる直線、x座標が対象MBのx座標よりq画素分大きい点からなる直線、及びそれらの直線に挟まれる領域を、対象MBの位置に対してx座標方向に-p画素から+q画素までの範囲と表記する。その場合、最初の探索ステップにおける探索範囲は、対象MBの位置に対して、縦方向(すなわちy軸方向)、横方向(すなわちx軸方向)とも、-128画素から+128画素までの範囲である。なお、画像座標系は上述の例に限らない。
 制御部300は、2回目の探索ステップにおいて、最初の探索ステップにおいて設定された探索範囲より狭い探索範囲を設定すればよい。2回目の探索ステップにおける探索範囲は、例えば図15の中段に示す例では、対象MBの位置に対して1回目の探索ステップにおいて導出された動きベクトルが示す位置の、右16画素から左16画素まで、かつ、上16画素から下16画素までの範囲である。画像座標系が上述の座標系である場合、2回目の探索ステップにおける探索範囲は、対象MBの位置に対して1回目の探索ステップにおいて導出された動きベクトルが示す位置に対して、縦方向、横方向とも、-16画素から+16画素までの範囲である。
 制御部300は、3回目の探索ステップにおいて、2回目の探索ステップにおいて設定された探索範囲より狭い探索範囲を設定すればよい。3回目の探索ステップにおける探索範囲は、例えば図15の下段に示す例では、対象MBの位置に対して2回目の探索ステップにおいて導出された動きベクトルが示す位置の、右4画素から左4画素まで、かつ、上4画素から下4が素までの範囲である。画像座標系が上述の座標系である場合、3回目の探索ステップにおける探索範囲は、対象MBの位置に対して2回目の探索ステップにおいて導出された動きベクトルが示す位置に対して、縦方向、横方向とも、-4画素から+4画素までの範囲である。探索範囲の大きさは、以上の例に限られない。
 以上で説明した本実施形態には、第1の実施形態と同じ効果がある。
 その理由は、第1の実施形態の効果の理由と同じである。
 本実施形態には、さらに、動きベクトル処理全体の演算量の総和を削減できるという効果がある。
 その理由は、制御部300が、同じフレームに対して行われた探索ステップの回数に応じて、順次狭くなる探索範囲を設定するからである。探索ステップの回数に応じて狭くなる探索範囲で探索が行われることにより、動きベクトル処理全体の演算量の総和を削減できる。したがって、さらに高速な処理が可能になる。
 <第3の実施形態>
 次に、本発明の第3の実施の形態について、図面を参照して説明する。
 図16は、本実施形態の動画像符号化装置1Aの構成を表す図である。図16と図14とを比較すると、本実施形態の動画像符号化装置1Aと第1の実施形態の動画像符号化装置1の相違は、本実施形態の動画像符号化装置1Aは動きベクトル探索装置10ではなく動きベクトル探索装置10Aを含むことである。
 図9は、本実施形態の動きベクトル探索装置10Aの構成の例を表すブロック図である。
 図9と図6に示す第1の実施形態の動きベクトル探索装置10の構成とを比較すると、動きベクトル探索装置10Aは、ベクトルコスト計算部304の代わりに、ベクトルコスト計算部904を含む。さらに、動きベクトル探索装置10Aは、コスト計算部308の代わりに、コスト計算部908を含む。コスト計算部908は、差分画像コスト計算部301と、コスト算出部303と、ベクトルコスト計算部904とを含む。また、動きベクトル探索装置10Aは、予測ベクトル生成部306を含まない。動きベクトル探索装置10Aの他の構成要素は、同じ番号が付与された、動きベクトル探索装置10の構成要素と同じである。
 ベクトルコスト計算部904は、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、読み出された、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを使用して、ベクトルコストを計算する。
 次に、本実施形態の動きベクトル探索装置10Aの動作について、図面を参照して詳細に説明する。
 図7は、本実施形態の動きベクトル探索装置10Aの動作の例を表すフローチャートである。本実施形態の動きベクトル探索装置10Aの動作は、ステップS705におけるベクトルコストの計算方法を除き、第1の実施形態の動きベクトル探索装置10と同じである。
 一般に、時間的または空間的に近いブロックにおける動きベクトルは、似ていることが多い。そのため、符号化対象ブロックにおける動きベクトルの導出に、その符号化対象ブロックと同一フレームの、その符号化対象ブロックの周囲に位置するブロックにおける動きベクトルが使用される。しかし、符号化対象ブロックの動きベクトルの導出に、同じフレームの隣接する他のブロックの動きベクトルを利用するためには、導出を行う際、導出に利用される動きベクトルが既に導出されている必要がある。そのため、例えば同一フレームに含まれる各ブロックからラスタースキャン順に順次符号化対象ブロックが選択され、選択された符号化対象ブロックにおける動きベクトルが導出される。そして、符号化対象ブロックにおいて動きベクトルが導出される際、ラスタースキャン順で符号化対象ブロックより前に位置するブロックの動きベクトルが使用される。
 図2に示す動きベクトル探索部100も同様に、フレーム内の各ブロックにおける動きベクトルの導出を、ラスタースキャン順に、各フレームの各ブロックに対して1回だけ行う。具体的には、まず予測ベクトル生成部306が、符号化規格において定められている手順に基づき、符号化対象ブロックより左側と上側に位置する、同一フレームのブロックにおいて導出された動きベクトルを使用して、予測ベクトルを算出する。そして、ベクトルコスト計算部304ではその予測ベクトルと候補ベクトルとの関係をもとにベクトルコストを計算する。そして、コスト比較・ベクトル選択部305が、計算されたベクトルコストに基づき、候補ベクトルから動きベクトルを選択する。前述のように、図4や図5は、符号化対象ブロックにおける予測ベクトルの算出に動きベクトルが使用されるブロックを表す。
 一方、符号化対象ブロックよりラスタースキャン順で後ろにあり、その符号化対象ブロックの右側や下側に位置する、同一フレームのブロックの動きベクトルは、その符号化対象ブロックにおける動きベクトル導出の際、導出されていない。従って、予測ベクトル生成部306は、符号化対象ブロックにおける動きベクトル導出の際、これらの動きベクトルを使用することはできない。
 しかし、これらの、符号化対象ブロックの下側及び右側のブロックには、その符号化対象ブロックが影響を与えるブロックが存在する。すなわち、符号化対象ブロックの下側及び右側のブロックには、その符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロックが存在する。以下の説明において、符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロック及び符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックを、関連ブロックと表記する。また、符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックを、第1の関連ブロックと表記する。符号化対象ブロックにおける動きベクトルを使用して予測ベクトルが算出されるブロックを、第2の関連ブロックと表記する。
 図10は、動きベクトルの導出において符号化対象ブロックと関連があるブロックの例を表す図である。H.264では、図10におけるブロックA、ブロックB、及びブロックCにおける動きベクトルが、符号化対象ブロックの予測ベクトルの算出に使用される。また、符号化対象ブロックの動きベクトルが、図10において右、左下、及び下で符号化対象ブロックに隣接するブロックの予測ベクトルの算出に使用される。
 上述のRD最適化の際、右側及び下側のブロックの動きベクトルとの関係性も考慮して、左側と上側のブロックに加えて、これらの右側及び下側のブロックにおける動きベクトルも使用した方が効果的であると考えられる。しかし、上述のように、動きベクトル探索部100は、各フレームの各ブロックに対して、動きベクトルの探索を1回だけ行う。従って、動きベクトル探索部100は、動きベクトルを導出する順番が符号化対象ブロックより後であるブロックの、同一フレームにおける動きベクトルを使用することはできない。
 本実施形態では、動きベクトル記憶部203Bに格納されている、上述の関連ブロックの前回の探索ステップにおける動きベクトルが、ベクトルコスト計算部904に供給される。すなわち、ベクトルコスト計算部904は、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、読み出された、関連ブロックの、前回の探索ステップにおいて導出された動きベクトルを使用して、ベクトルコストを計算する。
 H.264の場合、図10における、左、上、及び右上で符号化対象ブロックに隣接するブロックに加えて、右、左下、及び下で符号化対象ブロックに隣接するブロックが、前述の関連ブロックである。H.264の場合、符号化対象ブロックの動きベクトルは、右、左下、及び下で符号化対象ブロックに隣接するブロックの予測ベクトルに影響を及ぼす。左、上、及び右上で符号化対象ブロックに隣接するブロックの動きベクトルが、符号化対象ブロックの予測ベクトルに影響を及ぼす。左、上、及び右上で符号化対象ブロックに隣接するブロックは、それぞれ、ブロックA、ブロックB、及びブロックCである。H.264の場合、ベクトルコスト計算部904は、左、上、右上、右、左下、及び下で符号化対象ブロックに隣接するブロックの、前回の探索ステップにおける動きベクトルを、動きベクトル記憶部203Bから読み出す。そして、ベクトルコスト計算部904は、左、上、右上、右、左下、及び下で符号化対象ブロックに隣接するブロックの、前回の探索ステップにおける動きベクトルを使用して、ベクトルコストを計算する。
 ベクトルコスト計算部904は、例えば、式1におけるRを、式2に基づき算出することによって、ベクトルコストを算出することができる。
   R = 3/6 * Rc + 1/6 * Rr + 1/6 * Rll + 1/6 * Rl       (式2)
 ここで、Rc、Rr、Rll、Rl はそれぞれ符号化対象、右、左下、下のブロックの動きベクトルの符号化で発生する符号量である。また、「*」は掛け算を表す演算子である。ベクトルコスト計算部904は、他の方法によって、ベクトルコストを算出してもよい。
 また、符号化対象ブロックが符号化方式に応じて定められた条件を満たした場合に、その符号化対象ブロックに対して、近傍ブロックの予測ベクトルの情報を再利用することなどにより大幅に符号量を削減する符号化モードが設定される場合がある。そのような符号化モードを、以下の説明では、省略符号化モードと表記する。そのような省略符号化モードは、例えば、H.264におけるスキップ(SKIP)モードや、H.265ではマージ(Merge)モードと呼ばれる符号化モードである。このような省略符号化モードが設定された符号化対象ブロックに対して、動画像符号化装置1Aは、動きベクトルの符号化を行わない。そして、符号化された動画像が復号化される際、省略符号化モードが設定されたブロックの動きベクトルは、例えば、他のブロックの動きベクトルに基づき推定される。本実施形態の説明において、省略符号化モードが設定されたブロックの動きベクトルの推定に、動きベクトルが利用されるブロックを、再利用ブロックと表記する。省略符号化モードが設定されたブロックに対する再利用ブロックの場所は、符号化方式に応じて定まる。
 省略符号化モードが使用される場合、例えば、動画像符号化装置1Aの選択部104が、符号化方式に応じた所定の基準に基づき、ブロック毎に、そのブロックに省略符号化モードが設定されるか否かを決定すればよい。選択部104は、省略符号化モードが設定されているブロックを特定する情報を、動きベクトル探索装置10Aに送信すればよい。そして、制御部300が、省略符号化モードが設定されているブロックの、前述の再利用ブロックであるブロックを特定すればよい。制御部300は、特定された再利用ブロックの識別子を、例えば、動きベクトル記憶部203Aに格納すればよい。
 レート歪みコストを算出する際、ベクトルコスト計算部904は、上述の省略符号化モードが設定されたいずれかのブロックにおいて利用される動きベクトルが優先的に選ばれるように、導出されるレート歪みコストを調整してもよい。例えば、ベクトルコスト計算部904は、上述の省略符号化モードが設定されたいずれかのブロックにおいて利用される動きベクトルと等しい候補ベクトルに対して算出されるレート歪みコストから、所定値を引いてもよい。ベクトルコスト計算部904は、例えば、符号化対象ブロックの候補ベクトルのうち、近傍ブロックのMergeモードベクトルに選択されている動きベクトルについては、Mergeモードとすることで削減される分の符号量をRから差し引いてもよい。
 具体的には、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックであるか否かを判定する。符号化対象ブロックの識別子が、再利用ブロックの識別子として、動きベクトル記憶部203Bに格納されている場合に、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックであると判定すればよい。そうでない場合、ベクトルコスト計算部904は、符号化対象ブロックが再利用ブロックではないと判定すればよい。符号化対象ブロックが再利用ブロックであると判定された場合、ベクトルコスト計算部904は、動きベクトル記憶部203Bに格納されているその符号化対象ブロックの動きベクトルに等しい候補ベクトルのレート歪みコストを、上述のようにオフセットや符号量によって調整すればよい。
 以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
 また、本実施形態の制御部300は、第2の実施形態の制御部300と同じ動作を行ってもよい。その場合、本実施形態には、さらに、第2の実施形態と同じ効果がある。その理由は、第2の実施形態の効果が生じる理由と同じである。
 本実施形態には、さらに、圧縮効率が改善され、画質が向上するという効果がある。
 その理由は、ベクトルコスト計算部904が、第1の関連ブロックの動きベクトルに加えて、第2の関連ブロックの動きベクトルを、ベクトルコストの計算に使用するからである。上述のように、第1の関連ブロックは、符号化対象ブロックの予測ベクトルの算出に動きベクトルが使用されるブロックである。第2の関連ブロックは、予測ベクトルの算出に符号化対象ベクトルの動きベクトルが使用されるブロックである。本実施形態では、第1、第2の実施形態と同様に、1フレーム当たり複数回の探索ステップが実行される。本実施形態のベクトルコスト計算部904が使用する動きベクトルは、同一フレームに対する複数の探索ステップのうち、前回の探索ステップにおいて導出された動きベクトルである。従って、同一フレームの隣接するブロックの動きベクトルを使用して動きベクトルの探索を1回だけ行う場合と異なり、本実施形態では、1回前の探索ステップにおいて導出された第2の関連ブロックの動きベクトルを使用することができる。そのため、本実施形態では、例えば、符号化対象ブロックの右側、下側のブロック等の、第2の関連ブロックの動きベクトルとの関係性も考慮したRD最適化が可能である。それにより、導出された動きベクトルが使用して行う動画像符号化において、圧縮効率が改善される。また、周囲のブロックの動きベクトルと不連続な動きベクトルを含む、不自然な動きベクトル場は、ノイズ発生の原因となる。ノイズが発生すると、符号化された動画像の画質は低下する。本実施形態にでは、符号化対象ブロックにおいて、周囲のブロックの動きベクトルと不連続な動きベクトルが導出される可能性が低減される。そのため、不自然な動きベクトル場によるノイズ発生が抑えられるので、符号化された動画像の画質が向上する。
 <第4の実施形態>
 次に、本発明の第4の実施形態について、図面を参照して詳細に説明する。
 図17は、本実施形態の動画像符号化装置1Bの構成の例を表すブロック図である。図17と図16とを比較すると、本実施形態の動画像符号化装置1Bと第2の実施形態の動画像符号化装置1Aの相違は、本実施形態の動画像符号化装置1Bは動きベクトル探索装置10Aではなく動きベクトル探索装置10Bを含むことである。
 図11は、本実施形態の動きベクトル探索装置10Bの構成の例を表すブロック図である。図11と図9に示す第2の実施形態の動きベクトル探索装置10Aの構成とを比較すると、動きベクトル探索装置10Bは、さらに、ベクトル変換部1108を含む。また、動きベクトル探索装置10Bは、さらに、入力画像変換部1109と、変換入力画像記憶部1110と、変換参照画像記憶部1111と、参照画像変換部1112とを含む。動きベクトル探索装置10Bの他の構成要素は、同じ番号が付与された、第2の実施形態の動きベクトル探索装置10Aの構成要素と同じである。
 入力画像変換部1109は、入力画像記憶部200に格納されている入力画像を読み出す。そして、入力画像変換部1109は、読み出された入力画像に対して、探索ステップの回数に応じた、所定の変換を行う。入力画像変換部1109は、変換が行われた入力画像を、変換入力画像記憶部1110に格納する。
 変換入力画像記憶部1110は、変換が行われた入力画像を記憶する。
 差分画像コスト計算部301は、変換が行われた入力画像を、変換入力画像記憶部1110から読み出す。差分画像コスト計算部301は、予測画像生成部302から供給される予測画像と、変換入力画像記憶部1110から供給される、変換が行われた入力画像との差分画像を計算する。
 参照画像変換部1112は、参照画像記憶部201に格納されている参照画像を読み出す。そして、参照画像変換部1112は、読み出された参照画像に対して、探索ステップの回数に応じた、所定の変換を行う。参照画像変換部1112は、変換が行われた参照画像を、変換参照画像記憶部1111に格納する。
 変換参照画像記憶部1111は、変換が行われた参照画像を記憶する。
 予測画像生成部302は、変換参照画像記憶部1111から、変換された参照画像を読み出す。予測画像生成部302は、制御部300から供給される候補ベクトルに基づき、変換参照画像記憶部1111に格納されている変換された参照画像を用いて動き補償処理を行うことによって、予測画像を生成する。
 入力画像変換部1109及び参照画像変換部1112は、同じ探索ステップでは同じ変換を行う。入力画像変換部1109及び参照画像変換部1112は、前述の所定の変換として、例えば、探索ステップの回数に応じた縮小率で、画像を縮小する変換を行う。画像を縮小する方法は、既存のさまざまな方法のいずれかでよい。
 ベクトル変換部1108は、動きベクトル記憶部203Bに格納されている動きベクトルを、現探索ステップにおける変換入力画像及び変換参照画像の縮小率に応じて変換する。ベクトル変換部1108は、まず、動きベクトル記憶部203Bに格納されている動きベクトルを読み出す。現探索ステップにおける縮小率が、読み出された動きベクトルが導出された、前回の探索ステップにおける縮小率と異なる場合、ベクトル変換部1108は、現探索ステップにおける縮小率に合うように、読み出された動きベクトルを変換する。例えば、現探索ステップにおける縮小率が1であり、前回の探索ステップにおける縮小率が1/2である場合、ベクトル変換部1108は、読み出された動きベクトルに対して、2倍に拡大する変換を行う。そして、ベクトル変換部1108は、変換された動きベクトルを、ベクトルコスト計算部904に供給する。
 制御部300は、予測画像生成部302及びベクトルコスト計算部904に対して、現探索ステップにおける縮小率に応じた大きさの候補ベクトルを供給する。
 次に、本実施形態の動きベクトル探索装置10Bの動作について、図面を参照して詳細に説明する。
 図12は、本実施形態の動きベクトル探索装置10Bの動作の例を表すフローチャートである。図12と図7とを比較すると、本実施形態の動きベクトル探索装置10Bは、ステップS700の次に、ステップS1209の動作を行う。
 ステップS1209において、入力画像変換部1109は、入力画像記憶部200から読み出した入力画像に対して、探索ステップの回数に応じた所定の変換を行う。そして、入力画像変換部1109は、変換が行われた入力画像を、変換入力画像記憶部1110に格納する。また、参照画像変換部1112は、参照画像記憶部201から読み出した参照画像に対して、探索ステップの回数に応じた所定の変換を行う。そして、参照画像変換部1112は、変換が行われた参照画像を、変換参照画像記憶部1111に格納する。前述のように、所定の変換は、例えば、画像の縮小である。
 また、ステップS304において、制御部300は、現探索ステップにおける変換に応じて、候補ベクトルが生成される探索範囲を設定してもよい。例えば、変換が最初の探索ステップにおける変換が、縮小率1/2の縮小である場合、制御部300は、探索範囲を、変換を行わない場合に設定される探索範囲を縦横1/2に縮小した範囲に設定すればよい。
 さらに、ステップS705において、ベクトル変換部1108は、動きベクトル記憶部203Bから動きベクトルを読み出す。動きベクトル記憶部203Bから読み出された動きベクトルに対して、現探索ステップと前回の探索ステップの変換の違いに基づく動きベクトルの差異を解消する変換を行う。前述のように、例えば、前回の探索ステップにおける変換が縮小率1/2の縮小であり、現探索ステップでは変換が行われない場合、ベクトル変換部1108は、読み出された動きベクトルを2倍に拡大する。ベクトル変換部1108は、変換後の動きベクトルを、ベクトルコスト計算部904に送信する。
 最初の探索ステップにおける変換は、例えば、縮小率1/2での縮小であってもよい。その場合、2回目以降の探索ステップにおける縮小率、例えば、1であってもよい。この場合、2回目以降の探索ステップにおいて変換は行われない。
 入力画像変換部1109及び参照画像変換部1112による変換は、以上の例に限られない。
 例えば、1回目の探索ステップにおける縮小率は1/4であり、2回目の探索ステップにおける縮小率は1/2であり、3回目以降の探索ステップにおける縮小率は1であってもよい。あるいは、1回目の探索ステップにおける縮小率は1/4であり、2回目の探索ステップにおける縮小率は1/2であり、3回目の探索ステップにおける縮小率は縦方向において1であり、横方向において1/2であり、4回目以降の探索ステップにおける縮小率は1であってもよい。
 図13は、本実施形態における、変換後の入力画像と、探索の処理で使用される変換後の動きベクトルとを、模式的に表す図である。図13の上段は、1回目の探索ステップにおける変換後の入力画像と、動きベクトルの初期値とを表す。1回目の探索ステップにおける変換後の入力画像は、2回目以降の探索ステップのおける変換後の入力画像より、小さく縮小されている。また、1回目の探索ステップにおける動きベクトルの初期値は、ゼロベクトルである。図13の中段は、2回目の探索ステップにおける変換後の入力画像と、1回目の探索ステップにおいて得られた動きベクトルが、2回目の探索ステップにおける変換に合わせて拡大されたベクトルとを表す。図13の下段は、3回目の探索ステップにおける変換後の入力画像と、2回目の探索ステップにおいて得られた動きベクトルが、3回目の探索ステップにおける変換に合わせて拡大されたベクトルとを表す。
 前述の所定の変換は、画像の縮小ではなく、各画素の画素値を表すビット列のビット数を削減することであってもよい。画素値を表すビット列のビット数を削減する変換は、例えば、画素値を表すビット列から、所定個数の下位ビットを除去する演算によって行われる。例えば、8ビットのビット列によって表される画素値のビット数を1ビット削減する場合、入力画像変換部1109及び参照画像変換部1112は、画素値を表すビット列から最下位ビットを除去すればよい。そして、入力画像変換部1109及び参照画像変換部1112は、最下位ビットが除去された7ビットのビット列を、変換後の画素値にすればよい。例えば、1回目の探索ステップにおける変換は、各画素の画素値を表すビット列のビット数を2ビット削減することであり、2回目の探索ステップにおける変換は、各画素の画素値を表すビット列のビット数を1ビット削減することであってもよい。この場合、例えば、3回目以降の探索ステップにおいて、各画素の画素値を表すビット列のビット数を変更しない。変換が、例えば画素値を表すビット列のビット数の変更する変換である場合のように、画像のサイズが変化しない変換である場合、動きベクトル探索装置10Bは、ベクトル変換部1108を含まなくてよい。
 さらに、前述の所定の変換は、画像の画素間に、補間により算出される画素値を持つ画素を追加することであってもよい。その場合、画像の画素と画素の間に追加される画素の数は、探索ステップに応じて変更されればよい。
 以上で説明した本実施形態には、第1、第2、及び第3の実施形態のそれぞれと同じ効果がある。その理由は、第1、第2、及び第3の実施形態の効果が生じる理由と同じである。
 本実施形態には、さらに、動きベクトルを探索する処理全体の演算量をさらに削減することができるという効果がある。
 その理由は、入力画像変換部1109が、入力画像に対して、探索ステップの回数に応じた変換を行い、加えて、参照画像変換部1112が、参照画像に対して、探索ステップの回数に応じた、入力画像変換部1109が行う変換と同じ変換を行うからである。本実施形態では、広い探索領域で探索が行われる最初の探索ステップでは、高い縮小比で入力画像を縮小してから、縮小比に応じた広さの探索範囲において探索の処理を行うことができる。このことにより、変換を行うことによる演算量の増加量より多くの演算量を削減することができる。
 また、本実施形態では、最初の探索ステップなど、予測ベクトルの精度が低い探索では高い縮小比で粗い探索を行い、予測ベクトルの精度が高くなる後段の探索ステップでは低い縮小比で精密な探索を行うことができる。そのため、本実施形態の動きベクトル探索装置10Bは、より滑らかな動きベクトル場を生成することができる。このことにより、動きベクトル探索装置10Bが導出した動きベクトルを利用して符号化された動画像の画質が向上する。
 <第5の実施形態>
 次に、本発明の第5の実施形態について、図面を参照して詳細に説明する。
 図18は、本実施形態の動きベクトル探索装置10Cの構成を表す図である。
 図18を参照すると、本実施形態の動きベクトル探索装置10Cは、制御部300と、動きベクトル記憶部203と、コスト計算部308と、コスト比較・ベクトル選択部305と、を備える。制御部300は、所定の探索範囲に基づき複数の候補ベクトルを生成する。動きベクトル記憶部203は、入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する。コスト計算部308は、近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出する。近傍ブロックは、前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである。コスト比較・ベクトル選択部305は、前記複数の候補ベクトルから、前記評価値による評価において評価が高い最適な前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択する。
 以上で説明した本実施形態には、第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
 以上、主に、符号化方式がH.264あるいはH.265である場合の、本発明の各実施形態について説明した。しかし、本発明は、H.264あるいはH.265の符号化方式での応用のみに限定されない。本発明は、VC-1等の他の符号化方式や、あるいは国際標準の動画像符号化方式等に含まれない符号化方式にも適用可能である。また、差分画像コストやベクトルコストの算出手順、候補ベクトル生成手順、画像変換方法などについて、一部の例のみを説明した。しかし、例示した以外の種々の手順を使用することも容易である。
 以下に示す、本発明の実施形態に係る装置の各々は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。上述の本発明の実施形態に係る装置は、動きベクトル探索装置10、動きベクトル探索装置10A、動きベクトル探索装置10B、動きベクトル探索装置10C、動画像符号化装置1、動画像符号化装置1A、動画像符号化装置1B及び動画像符号化装置1Cである。
 図19は、本発明の各実施形態の動きベクトル探索装置及び本発明の各実施形態の動画像符号化装置を実現することができる、コンピュータ1000の構成の一例を表す図である。図19を参照すると、コンピュータ1000は、プロセッサ1001と、メモリ1002と、記憶装置1003と、I/O(Input/Output)インタフェース1004とを含む。また、コンピュータ1000は、記録媒体1005にアクセスすることができる。メモリ1002と記憶装置1003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記録媒体1005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記録媒体である。記憶装置1003が記録媒体1005であってもよい。プロセッサ1001は、メモリ1002と、記憶装置1003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ1001は、I/Oインタフェース1004を介して、例えば、動画像符号化装置、動きベクトル探索装置、動画像を送信する装置、あるいは、符号化された動画像を受信する装置にアクセスすることができる。プロセッサ1001は、記録媒体1005にアクセスすることができる。記録媒体1005には、コンピュータ1000を、上述の、本発明の実施形態に係る装置のいずれかとして動作させるプログラムが格納されている。
 プロセッサ1001は、記録媒体1005に格納されている上述のプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、そのプログラムに応じた、上述の本発明の実施形態に係る装置のいずれかとして動作する。
 以下に示す第1グループに含まれる部は、例えば、プログラムを記憶する記録媒体1005からメモリ1002に読み込まれた、その部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサ1001により実現することができる。第1グループは、次に示す各部を含む。
 動きベクトル探索部100、
 動き補償部101、
 イントラ予測モード判定部102、
 イントラ予測部103、
 選択部104、
 整数変換部105、
 量子化部106、
 逆量子化部107、
 逆整数変換部108、
 可変長符号化部109、
 デブロックフィルタ110、
 減算部112、
 加算部113、
 制御部300、
 差分画像コスト計算部301、
 予測画像生成部302、
 コスト算出部303、
 ベクトルコスト計算部304、
 ベクトルコスト計算部904、
 コスト比較・ベクトル選択部305、
 予測ベクトル生成部306、
 切り替え部307、
 ベクトル変換部1108、
 入力画像変換部1109、
 参照画像変換部1112。
 また、以下に示す第2グループに含まれる部は、コンピュータ1000が含むメモリ1002やハードディスク装置等の記憶装置1003により実現することができる。第2のグループは、次に示す各部を含む。
 フレームバッファ111、
 入力画像記憶部200、
 参照画像記憶部201、
 動きベクトル記憶部203、
 動きベクトル記憶部203A、
 動きベクトル記憶部203B、
 変換入力画像記憶部1110、
 変換参照画像記憶部1111。
 あるいは、上述の第1グループ及び第2グループに含まれる部の一部又は全部を、それらの部の機能を実現する専用の回路によって実現することもできる。
 以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2014年1月15日に出願された日本出願特願2014-004777を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 1  動画像符号化装置
 1A  動画像符号化装置
 1B  動画像符号化装置
 1C  動画像符号化装置
 10  動きベクトル探索装置
 10A  動きベクトル探索装置
 10B  動きベクトル探索装置
 10C  動きベクトル探索装置
 100  動きベクトル探索部
 101  動き補償部
 102  イントラ予測モード判定部
 103  イントラ予測部
 104  選択部
 105  整数変換部
 106  量子化部
 107  逆量子化部
 108  逆整数変換部
 109  可変長符号化部
 110  デブロックフィルタ
 111  フレームバッファ
 112  減算部
 113  加算部
 200  入力画像記憶部
 201  参照画像記憶部
 202  動きベクトル記憶部
 203  動きベクトル記憶部
 203A  動きベクトル記憶部
 203B  動きベクトル記憶部
 300  制御部
 301  差分画像コスト計算部
 302  予測画像生成部
 303  コスト算出部
 304  ベクトルコスト計算部
 305  コスト比較・ベクトル選択部
 306  予測ベクトル生成部
 307  切り替え部
 308  コスト計算部
 904  ベクトルコスト計算部
 908  コスト計算部
 1000  コンピュータ
 1001  プロセッサ
 1002  メモリ
 1003  記憶装置
 1004  I/Oインタフェース
 1005  記録媒体
 1108  ベクトル変換部
 1109  入力画像変換部
 1110  変換入力画像記憶部
 1111  変換参照画像記憶部
 1112  参照画像変換部

Claims (10)

  1.  所定の探索範囲に基づき複数の候補ベクトルを生成する制御手段と、
     入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する動きベクトル記憶手段と、
     前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出するコスト計算手段と、
     前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択するベクトル選択手段と、
     を備える動きベクトル探索装置。
  2.  前記制御手段は、選択された前記第2の動きベクトルを前記動きベクトル記憶手段に格納し、
     前記入力画像に含まれる全ての前記ブロックに対する前記第2の動きベクトルを、前記第1の動きベクトルに基づいて選択する探索ステップが終了すると、前記コスト計算手段は、前記動きベクトル記憶手段に格納された前記第2の動きベクトルを、新しい前記第1の動きベクトルとして、当該第1の動きベクトルと、前記入力画像と、前記参照画像と、前記候補ベクトルとに基づき前記評価値を算出する
     請求項1に記載の動きベクトル探索装置。
  3.  前記探索ステップが終了すると、前記制御手段は、前記探索ステップにおける前記探索範囲より広くない、新しい探索範囲を選択し、選択された前記新しい探索範囲に基づき前記候補ベクトルを生成し、
     前記コスト計算手段は、前記第1の動きベクトルと、前記入力画像と、前記参照画像と、前記新しい発生範囲に基づき生成された前記候補ベクトルとに基づき前記評価値を算出する
     請求項2に記載の動きベクトル探索装置。
  4.  前記近傍ブロックは、前記対象ブロックの下及び右において前記対象ブロックに隣接する前記ブロックを含む
     請求項2又は3に記載の動きベクトル探索装置。
  5.  前記制御手段は、さらに、省略符号化モードが設定されたいずれかの前記ブロックにおける、当該ブロックに対して前記省略符号化モードに応じた所定の位置にある前記近傍ブロックである再利用ブロックに、前記対象ブロックが含まれるか否かを判定し、
     前記コスト計算手段は、前記対象ブロックが前記再利用ブロックに含まれる場合、前記対象ブロックの前記第1の動きベクトルと等しい前記候補ベクトルの前記評価値を、前記評価が高くなるよう変更する
     請求項2乃至4のいずれかに記載の動きベクトル探索装置。
  6.  前記省略符号化モードは、H.264におけるスキップモードである、又は、H.265におけるマージモードである
     請求項5に記載の動きベクトル探索装置。
  7.  前記入力画像に行われた前記探索ステップの回数に応じた所定の変換である画像変換を、前記入力画像に対して行うことにより、変換入力画像を生成する入力画像変換手段と、
     前記画像変換を、前記参照画像に対して行うことにより、変換参照画像を生成する参照画像変換手段と、
     を含み、
     前記コスト計算手段は、前記第1の動きベクトルと、前記候補ベクトルと、前記変換入力画像と、前記変換参照画像とに基づき、前記候補ベクトルの評価値を算出する
     請求項2乃至4のいずれかに記載の動きベクトル探索装置。
  8.  前記画像変換は、前記探索ステップの回数の増加に応じて前記変換入力画像のサイズが減少しないように、前記回数に応じて定められた縮小率に基づき、画像を縮小する縮小処理であり、
     前記制御手段は、前記縮小率に基づき前記探索範囲を変換し、変換された前記探索範囲に基づき前記候補ベクトルを生成し、
     前記動きベクトル探索装置は、
     前記変換入力画像である対象変換入力画像のサイズに、前記第1の動きベクトルの導出に使用された前記変換入力画像である前回変換入力画像のサイズを合わせる変換に基づき、前記第1の動きベクトルを変換することによって、変換動きベクトルを生成する動きベクトル変換手段と、
     を含み、
     前記コスト計算手段は、前記変換動きベクトルと、前記候補ベクトルと、前記対象変換入力画像と、前記変換参照画像とに基づき、前記候補ベクトルの評価値を算出する
     請求項7に記載の動きベクトル探索装置。
  9.  所定の探索範囲に基づき複数の候補ベクトルを生成し、
     入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを動きベクトル記憶手段に記憶し、
     前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出し、
     前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択する、
     動きベクトル探索方法。
  10.  コンピュータを、
     所定の探索範囲に基づき複数の候補ベクトルを生成する制御手段と、
     入力画像が分割された複数のブロックの各々に対して、当該ブロックに関連する、参照画像の領域の位置から、前記ブロックの位置までのベクトルである動きベクトルとして選択された第1の動きベクトルを記憶する動きベクトル記憶手段と、
     前記入力画像に含まれる対象ブロックの周囲に位置する複数のブロックである近傍ブロックの各々に対する前記第1の動きベクトルと、生成された前記候補ベクトルと、前記入力画像と、前記参照画像とに基づき、前記候補ベクトルの評価を表す評価値を算出するコスト計算手段と、
     前記複数の候補ベクトルから、前記評価値による評価において評価が高い前記候補ベクトルを、前記対象ブロックの第2の動きベクトルとして選択するベクトル選択手段と、
     して動作させる動きベクトル探索プログラムを記憶するコンピュータ読み取り可能な記録媒体。
PCT/JP2015/000132 2014-01-15 2015-01-14 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体 WO2015107887A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/109,930 US10349071B2 (en) 2014-01-15 2015-01-14 Motion vector searching apparatus, motion vector searching method, and storage medium storing motion vector searching program
JP2015557767A JP6607040B2 (ja) 2014-01-15 2015-01-14 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-004777 2014-01-15
JP2014004777 2014-01-15

Publications (1)

Publication Number Publication Date
WO2015107887A1 true WO2015107887A1 (ja) 2015-07-23

Family

ID=53542784

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/000132 WO2015107887A1 (ja) 2014-01-15 2015-01-14 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体

Country Status (3)

Country Link
US (1) US10349071B2 (ja)
JP (1) JP6607040B2 (ja)
WO (1) WO2015107887A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109155856A (zh) * 2016-06-09 2019-01-04 英特尔公司 用于视频编解码的利用近邻块模式的运动估计的方法和***

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6453652B2 (ja) * 2015-01-09 2019-01-16 株式会社東芝 映像伝送システム
US20190082192A1 (en) * 2016-03-16 2019-03-14 Mediatek Inc. Method and apparatus of pattern-based motion vector derivation for video coding
WO2018211144A1 (en) * 2017-05-19 2018-11-22 Deepmind Technologies Limited Making object-level predictions of the future state of a physical system
CN110267041B (zh) 2019-06-28 2021-11-09 Oppo广东移动通信有限公司 图像编码方法、装置、电子设备和计算机可读存储介质
CN111698517B (zh) * 2020-06-29 2022-07-12 Oppo广东移动通信有限公司 运动矢量的确定方法、装置、电子设备和可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06506578A (ja) * 1991-04-12 1994-07-21 デーヴェー スウェーデン アクチボラグ ビデオ信号における運動内容推定方法
JP2008053875A (ja) * 2006-08-23 2008-03-06 Sony Corp 画像処理装置および方法、プログラム、並びにプログラム格納媒体
JP2011130265A (ja) * 2009-12-18 2011-06-30 Nippon Telegr & Teleph Corp <Ntt> 動きベクトル検出装置、動きベクトル検出方法およびプログラム
JP2013118626A (ja) * 2011-10-31 2013-06-13 Jvc Kenwood Corp 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4062712B2 (ja) 2006-04-17 2008-03-19 俊宏 南 動画像符号化装置および動画像符号化方法
KR101403343B1 (ko) * 2007-10-04 2014-06-09 삼성전자주식회사 부화소 움직임 추정을 이용한 인터 예측 부호화, 복호화방법 및 장치
JP5310614B2 (ja) * 2010-03-17 2013-10-09 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像復号装置ならびに動画像復号方法
JP2011223303A (ja) * 2010-04-09 2011-11-04 Sony Corp 画像符号化装置と画像符号化方法および画像復号化装置と画像復号化方法
EP2658261A4 (en) 2010-12-21 2015-06-24 Nec Corp Motion estimation device, motion estimation method, motion estimation program, and video image encoder

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06506578A (ja) * 1991-04-12 1994-07-21 デーヴェー スウェーデン アクチボラグ ビデオ信号における運動内容推定方法
JP2008053875A (ja) * 2006-08-23 2008-03-06 Sony Corp 画像処理装置および方法、プログラム、並びにプログラム格納媒体
JP2011130265A (ja) * 2009-12-18 2011-06-30 Nippon Telegr & Teleph Corp <Ntt> 動きベクトル検出装置、動きベクトル検出方法およびプログラム
JP2013118626A (ja) * 2011-10-31 2013-06-13 Jvc Kenwood Corp 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109155856A (zh) * 2016-06-09 2019-01-04 英特尔公司 用于视频编解码的利用近邻块模式的运动估计的方法和***
US11616968B2 (en) 2016-06-09 2023-03-28 Intel Corporation Method and system of motion estimation with neighbor block pattern for video coding
CN109155856B (zh) * 2016-06-09 2023-10-24 英特尔公司 用于视频编解码的利用近邻块模式的运动估计的方法和***

Also Published As

Publication number Publication date
US20160330466A1 (en) 2016-11-10
JPWO2015107887A1 (ja) 2017-03-23
JP6607040B2 (ja) 2019-11-20
US10349071B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
JP6607040B2 (ja) 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体
KR102070719B1 (ko) 인터 예측 방법 및 그 장치
WO2010035370A1 (ja) 動画像符号化方法および動画像復号化方法
US20120027092A1 (en) Image processing device, system and method
KR20060127155A (ko) 화상 정보 부호화 장치 및 화상 정보 부호화 방법
JP5488612B2 (ja) 動画像符号化装置および動画像復号装置
JP2013535919A (ja) 予測ブロック生成装置
JP2013509063A (ja) 画像シーケンスのブロックを符号化する方法およびこのブロックを再構成する方法
WO2010067529A1 (ja) 動画像復号化方法及び装置、動画像符号化方法及び装置
JP4995789B2 (ja) 画面内予測符号化方法,画面内予測復号方法,これらの装置,およびそれらのプログラム並びにプログラムを記録した記録媒体
US20120237132A1 (en) Image-encoding method, image-encoding device, and computer-readable recording medium storing image-encoding program
KR20130126698A (ko) 영상 부호화 장치, 영상 부호화 방법 및 영상 부호화 프로그램
Liu et al. Adaptive motion vector resolution for affine-inter mode coding
JP2011166592A (ja) 画像符号化装置及び画像復号装置
KR102281514B1 (ko) 인터 예측 방법 및 그 장치
JP2009049969A (ja) 動画像符号化装置及び方法並びに動画像復号化装置及び方法
JP5513333B2 (ja) 動画像符号化装置、動画像符号化方法、およびプログラム
WO2010061515A1 (ja) 動画像符号化装置及び符号化方法、動画像復号化装置及び復号化方法
KR100790757B1 (ko) H.264 동영상 부호화기의 적응적 고속 움직임 추정 방법
KR102380722B1 (ko) 인터 예측 방법 및 그 장치
KR20130050898A (ko) 영상의 부호화 방법 및 장치, 그리고 영상의 복호화 방법 및 장치
KR102173576B1 (ko) 인터 예측 방법 및 그 장치
JP5533885B2 (ja) 動画像符号化装置および動画像復号装置
WO2011142221A1 (ja) 符号化装置、および、復号装置
JP5887020B1 (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: 15737577

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015557767

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15109930

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15737577

Country of ref document: EP

Kind code of ref document: A1