WO2012086829A1 - 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置 - Google Patents

動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置 Download PDF

Info

Publication number
WO2012086829A1
WO2012086829A1 PCT/JP2011/079970 JP2011079970W WO2012086829A1 WO 2012086829 A1 WO2012086829 A1 WO 2012086829A1 JP 2011079970 W JP2011079970 W JP 2011079970W WO 2012086829 A1 WO2012086829 A1 WO 2012086829A1
Authority
WO
WIPO (PCT)
Prior art keywords
vector
block
motion estimation
motion
blocks
Prior art date
Application number
PCT/JP2011/079970
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 US13/995,572 priority Critical patent/US9596467B2/en
Priority to JP2012549906A priority patent/JPWO2012086829A1/ja
Priority to EP11851988.3A priority patent/EP2658261A4/en
Publication of WO2012086829A1 publication Critical patent/WO2012086829A1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • 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/43Hardware specially adapted for motion estimation or compensation
    • 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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Definitions

  • the present invention relates to a motion estimation device, a motion estimation method, a motion estimation program, and a moving image encoding device.
  • Non-Patent Document 1 describes H.264.
  • Non-Patent Document 2 describes H.C. Details of implementation of a video encoding device based on the H.264 standard are described.
  • motion compensation is a technique for compressing moving image information by the following method. That is, using the motion information between the encoding target frame and the reference frame, a prediction image obtained by performing motion correction on the reference frame image is generated, and the difference between the encoding target frame and the prediction image and motion information called a motion vector are generated. Only encode. Including motion compensation, e.g. H.264 moving image encoding processing is performed in units of 16 ⁇ 16 pixel macroblocks. The process of calculating the motion information is called motion estimation, and a block having a high similarity to the encoding target block is searched from the reference frame for each block such as 16 ⁇ 16 pixels or 8 ⁇ 8 pixels in the macroblock.
  • motion compensation e.g. H.264 moving image encoding processing is performed in units of 16 ⁇ 16 pixel macroblocks.
  • the process of calculating the motion information is called motion estimation, and a block having a high similarity to the encoding target block is searched from the reference frame for each block such as 16 ⁇ 16 pixels or
  • Non-Patent Document 3 discloses a rate distortion optimization method for searching for a motion vector with good coding efficiency.
  • FIG. 30 is a block diagram illustrating a configuration of a moving image encoding device 5000 described in Non-Patent Document 1.
  • FIG. 31 is a flowchart showing the operation of the moving picture encoding apparatus 5000.
  • the motion estimation unit 50110 of the video encoding device 5000 calculates the prediction vector PMV of the block to be encoded from the motion vectors of the surrounding blocks (step S102), and performs a motion vector search optimized for rate distortion using the PMV. This is performed (step S103).
  • the motion compensation unit 5020 generates a prediction image using the motion vector.
  • Recent encoding schemes such as H.264 have a large amount of computation, and thus are often accelerated by parallel processing.
  • One method of parallelizing motion estimation processing is parallelization in units of blocks. Although motion estimation is almost independent for each block and can be easily parallelized, the processing order of the surrounding blocks is used for calculation of the prediction vector, so that the processing order is limited. As shown in Non-Patent Document 2, H.
  • FIG. 34 is a block diagram illustrating a configuration of a parallel motion estimation apparatus 700 described in Non-Patent Document 4.
  • the motion vector determined by the motion vector search unit 112 is stored in the motion vector buffer 120, and the prediction vector calculation unit 711 calculates a prediction vector using the motion vectors of other blocks stored in the motion vector buffer 120.
  • FIG. 34 is a block diagram illustrating a configuration of a parallel motion estimation apparatus 700 described in Non-Patent Document 4.
  • the motion vector determined by the motion vector search unit 112 is stored in the motion vector buffer 120, and the prediction vector calculation unit 711 calculates a prediction vector using the motion vectors of other blocks stored in the motion vector buffer 120.
  • FIG. 33 shows the parallel processing order in the parallel motion estimation apparatus 700 described in Non-Patent Document 4.
  • blocks with the same numbers are blocks that can be processed in parallel.
  • Non-Patent Document 5 describes an example of a parallel motion estimation device that does not perform vector prediction.
  • FIG. 35 is a block diagram illustrating a configuration of a parallel motion estimation apparatus 500 described in Non-Patent Document 5. The difference between this parallel motion estimation apparatus 500 and the parallel motion estimation apparatus 700 shown in FIG. 34 is that the motion estimation unit 510 does not have the prediction vector calculation unit 711.
  • all blocks can be processed in parallel with no dependency between the blocks.
  • FIG. 36 is a block diagram showing a configuration of a parallel motion estimation device 600 described in Patent Document 1.
  • the parallel motion estimation device 600 includes a motion estimation unit 610.
  • the motion estimation unit 610 includes a prediction vector calculation unit 61, a motion vector search unit 62, a pseudo prediction vector calculation unit 63, a direct mode / skip mode cost calculation unit 64, and a mode determination unit 65.
  • the motion estimation unit 610 operates as follows.
  • a pseudo prediction vector is calculated using the neighboring blocks, and the cost of the direct mode / skip mode is calculated using the pseudo prediction vector.
  • the motion vector search unit 62 searches without using the prediction vector.
  • the mode determination unit 65 compares and outputs the cost of each mode.
  • Each process in the motion estimation unit 610 operates in parallel by pipeline processing.
  • FIG. 37 is a flowchart for explaining the operation of this parallel motion estimation apparatus 600.
  • the motion vector search unit 62 searches for a motion vector without using the prediction vector (step S301).
  • the pseudo prediction vector calculation unit 63 calculates the pseudo prediction vector PMVx from the neighboring blocks of the specified block (step S302).
  • the direct mode / skip mode cost calculation unit 64 evaluates the costs of the direct mode and the skip mode using the pseudo prediction vector PMVx (step S303).
  • the mode determination unit 65 waits for the motion vectors of the prescribed blocks A, B, and C to be determined (step S304), and calculates the prediction vector PMV from the motion vector of the prescribed block (step S305). If PMVx and PMV are not equal, the result calculated in step S303 is discarded (step S308). If equal, the result calculated in step S303 is used (step S307), and the mode is determined (step S309).
  • H.C. Video encoding such as H.264 is premised on sequential processing, and macroblocks are processed in raster scan order from the upper left. For this reason, in the sequential processing, there are many portions that are processed using information of the macroblock on the left or on the left that has already been processed.
  • the motion estimation unit uses information on the left, upper, and upper right macroblocks, and the intra prediction unit and the deblocking filter also use information on the left and upper macroblocks. Achieve high coding efficiency.
  • GPU Graphics Processing Unit
  • a GPU is a menicore processor in which a large number of cores of tens to hundreds of cores are integrated, and sufficient parallelism of processing applications is required to extract performance.
  • the background art described above has a problem that the number of blocks that can be processed in parallel is small or the accuracy of the motion vector search result is poor.
  • the number of blocks that can be processed in parallel is small. If the number of blocks that can be processed in parallel is small, the parallelization efficiency is low and a sufficient processing speed cannot be obtained particularly when parallel processing is performed using a many-core processor such as a GPU.
  • the method described in Patent Document 1 also has a small number of blocks that can be processed in parallel, and since the motion vector is not searched using a prediction vector, the accuracy of the vector cost is low and the accuracy of the motion vector search result is poor.
  • the present invention provides a motion estimation device, a motion estimation method, a motion estimation program, and a video code that can calculate a motion vector with high accuracy and a large number of blocks that can be processed in parallel in motion search of a video
  • An object of the present invention is to provide a device.
  • the motion estimation apparatus of the present invention is a motion estimation apparatus that performs vector prediction with reference to the motion vectors of surrounding blocks, wherein a plurality of motion estimation units process adjacent blocks in parallel, and each of the motion estimation units includes: A pseudo prediction vector calculation unit that calculates a pseudo prediction vector using a motion vector of a block group that has been processed, and searches for a motion vector of a processing target block using the calculated pseudo prediction vector A motion vector search unit.
  • the motion estimation method of the present invention is a motion estimation method for performing vector prediction with reference to the motion vectors of surrounding blocks, wherein a plurality of motion estimation units process adjacent blocks in parallel, and in each of the motion estimation units, A pseudo prediction vector is calculated using the motion vector of the block group for which processing has been completed, and the motion vector of the processing target block is searched using the calculated pseudo prediction vector.
  • the motion estimation program of the present invention includes a computer of a motion estimation device that performs vector prediction with reference to motion vectors of surrounding blocks, a function in which a plurality of motion estimation units process adjacent blocks in parallel, and each of the motion estimation units A function of calculating a pseudo prediction vector using a motion vector of a block group that has been processed, and searching for a motion vector of a processing target block using the calculated pseudo prediction vector, Let it run.
  • a large number of blocks that can be processed in parallel and a highly accurate motion vector can be calculated.
  • FIG. 10 is a flowchart which shows the operation example of the motion estimation part of the parallel moving image encoder in the Example of this invention. It is a graph showing the difference of the frequency
  • FIG. 10 is a block diagram for explaining a configuration of a parallel motion estimation device described in Non-Patent Document 5.
  • FIG. 10 is a block diagram for explaining a configuration of a parallel motion estimation device described in Patent Literature 1. It is a flowchart for demonstrating operation
  • FIG. 1 is a block diagram illustrating a configuration example of a parallel motion estimation device 100 according to the first embodiment of the present invention.
  • a motion estimation unit 110 including a pseudo prediction vector calculation unit 111 and a motion vector search unit 112 is configured to process adjacent blocks in parallel.
  • the case of 4 parallel processing is taken as an example, but this is only an example, and the number of parallels may be 5 or more and less than 4.
  • the motion estimation unit 110 may be added with a function of calculating the cost of the direct mode and the skip mode and determining the mode as in Patent Document 1.
  • the pseudo prediction vector calculation unit 111 acquires a motion vector of an arbitrary block for which processing has been completed from the motion vector buffer 120, and calculates and outputs a pseudo prediction vector by, for example, a vector median.
  • the motion vector search unit 112 receives the pseudo prediction vector, the current frame, and the reference frame, and outputs a motion vector having the highest evaluation cost.
  • vector prediction in the first embodiment of the present invention will be described. In the first embodiment, with respect to the position (x, y) of the processing target block X shown in FIG.
  • a pseudo prediction vector is calculated by, for example, a median of a motion vector with reference to a motion vector of a block set that may include blocks other than blocks A, B, and C.
  • motion estimation processing between adjacent blocks is performed in parallel.
  • a block to be referred to in order to calculate a pseudo prediction vector a set of blocks that have been processed first is used.
  • FIG. 3 is a first block position example used for vector prediction by the parallel motion estimation device according to the first embodiment.
  • FIG. 5 is a second block position example used for vector prediction by the parallel motion estimation device according to the first embodiment.
  • the blocks of D (x ⁇ 1, y ⁇ 1), A (x ⁇ 1, y), and P (x ⁇ 1, y + 1) shown in FIG. 5 are referred to (that is, the blocks of D, A, and P are finished).
  • X (x, y) is processed after that), and vertically adjacent blocks can be processed in parallel as shown in FIG.
  • FIG. In order to process adjacent blocks in parallel, there is a reference block in any one of the vertical (1), horizontal (2), right diagonal (3), and left diagonal (4) directions shown in FIG. Must not exist. Blocks located in a direction that is not referred to are processed in parallel. For example, referring to the blocks D (x ⁇ 1, y ⁇ 1), A (x ⁇ 1, y), and P (x ⁇ 1, y + 1) shown in FIG. 5, the block A is horizontal (2), block Since P is located in the right diagonal (3) and block D is located in the left diagonal (4) direction, only blocks in the vertical (1) direction can be processed in parallel.
  • the block G is vertically (1) and the block D is diagonally left Since it is located at (4), blocks in the horizontal direction or diagonally to the right can be processed in parallel. Then, if the blocks adjacent to the vertical (1) are processed in parallel, the horizontal (2) direction is processed, and if the blocks adjacent to the right diagonal (3) are processed in parallel, the diagonally left (4) direction is processed in parallel. Processing proceeds in the vertical direction with respect to the block group. Therefore, if the blocks that are processed in parallel are the blocks adjacent in the horizontal direction, only the processing on either the right side or the left side of the processing target block ends if the block is adjacent to the processing target block.
  • the processing of the block to be processed cannot be performed unless the processing of the block to be referenced is completed, if there are blocks to be referenced on both the upper side and the lower side, and the right side and the left side, the processing of any block to be referenced ends first. As a result, the target block cannot be processed. For example, if blocks processed in parallel are adjacent to each other in the vertical (1) direction, the blocks referred to on the right and left sides, and if blocks processed in parallel are adjacent to the left diagonal (4) direction, the blocks referred to on both the upper right side and the lower left side are referred to. If there is, it cannot be processed.
  • the block set used for predictive vector calculation in the present embodiment is the blocks A (x ⁇ 1, y), B (x, y ⁇ 1), and C that are referred to in order to calculate the original predictive vector. Not all of (x + 1, y-1) are included at the same time.
  • the block A is adjacent to the processing target block X in the horizontal (2)
  • the block B is adjacent to the processing target block X in the vertical (1)
  • the block C is adjacent to the processing target block X in the diagonally right direction (3). . Therefore, only blocks adjacent in the left diagonal (4) direction can be processed in parallel, but block A is located at the left of block X and block C is located at the upper right of block X as shown in FIG. Either process in block C is not finished first and cannot be referenced.
  • FIG. 2 is a flowchart illustrating an operation example of the parallel motion estimation device 100 according to the first embodiment.
  • the pseudo prediction vector calculation unit 111 acquires the motion vectors of blocks for which processing has been completed, for example, the blocks D, G, and E in FIG. 3 from the motion vector buffer 120 (step S11).
  • the pseudo prediction vector calculation unit 111 calculates a pseudo prediction vector PMVx from, for example, a vector median using the acquired motion vector (step S12).
  • the motion vector search unit 112 searches for a motion vector using the pseudo prediction vector PMVx (step S13).
  • steps S11, S12, and S13 are processed in parallel between adjacent blocks.
  • a pseudo prediction vector calculation unit 111 is connected to the motion vector search unit 112 instead of the prediction vector calculation unit 711 in the parallel motion estimation device 700.
  • the number of blocks that can be processed in parallel is 60 in the parallel motion estimation device 700 (Non-Patent Document 4).
  • the present embodiment can shorten the overall processing time compared to the background art (for example, Non-Patent Document 4).
  • the difference between the parallel motion estimation device 100 of the present embodiment shown in FIG. 1 and the parallel motion estimation device 500 of Non-Patent Document 5 shown in FIG. 35 is as follows. That is, in the parallel motion estimation device 100, the motion vector search unit 112 is connected to a pseudo prediction vector calculation unit 111 that does not exist in the parallel motion estimation device 500. As a result, the motion vector search unit 112 can search for a motion vector using a prediction vector although it is pseudo, so that a motion vector with high accuracy can be calculated.
  • the difference between the parallel motion estimation apparatus 100 of the present embodiment shown in FIG. 1 and the parallel motion estimation apparatus 600 of Patent Document 1 shown in FIG. 36 is as follows.
  • the prediction vector calculation unit 61 in the parallel motion estimation device 600 is not provided, and the pseudo prediction vector calculation unit 111 is connected to the motion vector search unit 112.
  • the prediction vector calculation unit 61 needs to wait for the end of motion estimation for all of the blocks A, B, and C, but in this embodiment, waits for all the processes for the blocks A, B, and C It is not necessary to calculate the prediction vector afterwards. Therefore, since adjacent blocks can be processed in parallel, more blocks can be processed in parallel.
  • FIG. 9 is an example of a range in which block positions used for vector prediction by the parallel motion estimation apparatus according to the second embodiment exist.
  • the following processing is performed on the position (x, y) of the processing target block X among the blocks for which processing has been completed. That is, prediction is performed using a block set (s, t, and u are arbitrary positive integers) each including at least one block belonging to each area in the same row, in the same column, upward direction, left direction, and right direction as the processing target block.
  • a vector is simulated and adjacent blocks are processed in parallel.
  • the same row is the x coordinate x
  • K in FIG. 9 the same column is the y coordinate y
  • the M in FIG. 9 the upper direction is the y coordinate yu
  • FIG. 9 is a flowchart illustrating an operation example of the parallel motion estimation apparatus according to the second embodiment.
  • step S21 is provided instead of step S11.
  • the pseudo predicted vector calculation unit 111 has block positions x, x-s, x + t, y, and yu (s, t, and u are arbitrary positive integers) among blocks that have been processed.
  • a motion vector of a block set including one or more blocks To obtain a motion vector of a block set including one or more blocks.
  • the pseudo-prediction vector of the pseudo-predictive vector is determined when there is a boundary of the object in the horizontal direction above the encoding target block X as shown in FIG. Accuracy may deteriorate.
  • the processing target block (x2, y2) is located below the boundary of the object, and if only the upper row block is referenced, the influence of the movement of the object different from the processing target block is large, and the actual movement of the subject A pseudo prediction vector different from the above is calculated.
  • a vector can be calculated.
  • the following operation is performed with respect to the position (x, y) of the encoding target block X among the blocks that can be referred to in the second embodiment. That is, a motion vector is calculated using a motion vector of a block set composed of blocks A (x-1, y), B (x, y-1), and E (x + 1, y-2) shown in FIG. Further, as shown in FIG.
  • step 1 processing is performed in parallel between the blocks near the upper left and the diagonally adjacent blocks. That is, first, in step 1, the block having the processing order of 1 at the upper left is processed. Next, among the blocks that have not been processed as step 2, two blocks in the processing order 2 that are closest to the upper left and are diagonally adjacent to each other are processed. At this time, the processing of the block in the processing order 1 has been completed. When the processing of the processing order 2 block is completed, the processing is performed in the order of processing the three processing order 3 blocks closest to the upper left and diagonally adjacent among the blocks not processed as step 3. Is called.
  • FIG. 14 is a flowchart illustrating an operation example of the parallel motion estimation apparatus according to the third embodiment. The difference from the flowchart example (FIG. 12) in the second embodiment of FIG. 14 is that, instead of step S21, blocks A (x-1, y), B (x, y-1), E (x + 1) , Y-2) is to provide a step S31 for obtaining a motion vector.
  • a pseudo prediction vector is calculated using the motion vectors of the blocks A (x ⁇ 1, y), B (x, y ⁇ 1), and E (x + 1, y ⁇ 2).
  • a moving image has a spatial correlation between motion vectors, and a highly accurate pseudo prediction vector can be calculated by using a motion vector of a block having a shorter distance. Therefore, since a highly accurate pseudo prediction vector can be used by referring to a block close to the processing target block, a highly accurate motion vector can be calculated.
  • a pseudo prediction vector is calculated by using a plurality of reference block set patterns and using motion vectors of block set patterns at different relative positions for each block.
  • the block (2n, y) in the even (2n) -th column refers to the three blocks (2n-1, y), (2n, y-1), (2n + 1, y-1).
  • a pseudo prediction vector is calculated.
  • the block (2n + 1, y) in the odd (2n + 1) -th column calculates a pseudo prediction vector with reference to the three blocks (2n-1, y), (2n + 1, y-1), (2n + 2, y + 2).
  • the pseudo prediction vector of the even-numbered block is equal to the original prediction vector.
  • blocks that can be processed in parallel in this example are horizontally adjacent between even columns and odd columns, and odd columns and even columns are diagonally adjacent.
  • FIG. 18 is a flowchart illustrating an operation example of the parallel motion estimation device according to the fourth embodiment.
  • the pseudo prediction vector calculation unit 111 determines whether the processing target block X is an even column or an odd column (step S42). If it is an even column, the pseudo prediction vector calculation unit 111 acquires the motion vectors of the blocks A (x ⁇ 1, y), B (x, y ⁇ 1), and C (x + 1, y ⁇ 1) (Step S100). ).
  • the pseudo prediction vector calculation unit 111 acquires the motion vectors of the blocks F (x ⁇ 2, y), B (x, y ⁇ 1), and E (x + 1, y ⁇ 2) (Ste S41).
  • the pseudo prediction vector calculation unit 111 calculates the pseudo prediction vector PMVx of the processing target block X using the acquired motion vector (step S12).
  • the motion vector search unit 112 searches for a motion vector using the pseudo prediction vector PMVx (step S13). In this embodiment, it is possible to use a pseudo prediction vector equal to the original prediction vector in some blocks while processing adjacent blocks in parallel. Therefore, the accuracy of the calculated motion vector can be improved.
  • FIG. 21 is a block diagram illustrating a configuration example of the parallel motion estimation device 550 according to the fifth embodiment.
  • the motion estimation unit 510 included in the parallel motion estimation apparatus 550 further includes a reference block selection unit 511, and the reference block selection unit 511 receives block coding information as an input.
  • FIG. 21 is a block diagram illustrating a configuration example of the parallel motion estimation device 550 according to the fifth embodiment.
  • the motion estimation unit 510 included in the parallel motion estimation apparatus 550 further includes a reference block selection unit 511, and the reference block selection unit 511 receives block coding information as an input.
  • the reference block selection unit 511 acquires coding information of blocks used for prediction, for example, blocks A (x-1, y), B (x, y-1), and E (x + 1, y-2) (step S51). ). The reference block selection unit 511 determines whether any of the blocks A, B, and E is compression-encoded by intra prediction (step S52). If the prediction is intra-screen prediction, the reference block selection unit 511 selects the surrounding block, for example, the upper block instead of the block predicted within the screen (step S53). These processes are continued until all the blocks are not intra prediction blocks.
  • the pseudo prediction vector calculation unit 111 acquires the motion vector of the block selected by the reference block selection unit 511 (step S54), and calculates the prediction vector (step S12).
  • the motion vector search unit 112 searches for a motion vector using the pseudo prediction vector PMVx (step S13).
  • a pseudo prediction vector is calculated using surrounding blocks. Therefore, the number of motion vectors used for pseudo vector prediction does not decrease, and a more accurate pseudo prediction vector can be calculated.
  • the motion vector used for calculating the pseudo prediction vector is adaptively selected as in the fifth embodiment.
  • FIG. 23 is a block diagram illustrating a configuration example of the parallel motion estimation device 650 according to the sixth embodiment.
  • the motion estimation unit 610 constituting the parallel motion estimation device 650 further includes a pseudo prediction vector accuracy determination unit 611.
  • the pseudo prediction vector accuracy determination unit 611 is connected to the reference vector selection unit 612.
  • FIG. 24 is a flowchart illustrating an operation example of the parallel motion estimation device 650 according to the sixth embodiment.
  • the pseudo prediction vector accuracy determination unit 611 has sufficient accuracy of the pseudo prediction vector obtained from, for example, the blocks A (x ⁇ 1, y), B (x, y ⁇ 1), and E (x + 1, y ⁇ 2). It is determined whether or not (step S62). For example, if the accuracy of the obtained pseudo prediction vector is not sufficient, for example, the directions of the three motion vectors are greatly different, the reference block selection unit selects, for example, the upper left block from the surrounding blocks as the reference block. It adds (step S63). These processes are repeated until the pseudo prediction vector accuracy determination unit 611 determines that sufficient accuracy can be obtained, for example, the directions of the vectors are concentrated.
  • the pseudo prediction vector calculation unit 111 acquires a motion vector of the block selected by the reference block selection unit 612 and calculates a pseudo prediction vector.
  • the pseudo prediction vector is calculated after confirming that the accuracy of the pseudo prediction vector is sufficient, it is possible to always calculate the pseudo prediction vector with high accuracy.
  • a seventh embodiment of the present invention will be described.
  • the present embodiment is a parallel video encoding apparatus including the motion estimation unit of the third embodiment. H.
  • processing results of other blocks such as left and upper are used in image processing such as intra prediction and deblocking filter in addition to motion estimation. Therefore, the intra prediction and deblocking filter need to be processed after the processing of the left and upper blocks is completed first.
  • FIG. 25 is a block diagram illustrating a configuration example of the parallel moving image encoding apparatus 1000 according to the seventh embodiment.
  • the parallel video encoding apparatus 1000 includes at least a plurality of block encoding units 1100, a variable length encoding unit 13, a frame buffer 17, and a motion vector buffer 120.
  • Each block encoding unit 1100 includes an orthogonal transform unit 11, a quantization unit 12, an inverse quantization unit 14, an inverse orthogonal transform unit 15, a deblocking filter unit 16, an intra-screen prediction unit 18, and a motion estimation.
  • Unit 110 and motion compensation unit 20 The motion estimation unit 110 includes a pseudo prediction vector calculation unit 111 and a motion vector search unit 112.
  • the motion estimation unit 110 can be the motion estimation unit 510 of the fifth embodiment or the motion estimation unit 610 of the sixth embodiment.
  • the in-screen prediction unit 18 and the deblocking filter unit 16 are processes for referring to the left and upper blocks. As shown in FIG. 17, the block encoding unit 1100 processes blocks adjacent obliquely from the upper left block in parallel.
  • the orthogonal transform unit 11, the quantization unit 12, the inverse quantization unit 14, the inverse orthogonal transform unit 15, and the motion compensation unit 20 do not require processing results of other blocks, but the deblocking filter unit 16 and the in-screen prediction unit 18 requires processing results of the left and upper blocks.
  • the orthogonal transform unit 11 performs orthogonal transform such as discrete cosine transform on the difference value between the input image and the predicted image.
  • the quantization unit 12 quantizes the transform coefficient that has been subjected to the orthogonal transform.
  • the inverse quantization unit 14 inversely quantizes the transform coefficient quantized by the quantization unit 12.
  • the inverse orthogonal transform unit 15 performs inverse orthogonal transform on the inversely quantized transform coefficient.
  • the deblocking filter unit 16 removes distortion between blocks of the decoded frame. At this time, since the left and upper block images are used, the inversely orthogonally transformed image is stored in the frame buffer 17, and the left and upper block images are taken out of the frame buffer and stored in the deblocking filter unit 16. Process. An image from which distortion between blocks is removed is also stored in the frame buffer 17.
  • the motion vector search unit 112 inputs the pseudo prediction vector calculated by the pseudo prediction vector calculation unit 111, the input image (current frame), and the reference frame image from which the block distortion stored in the frame buffer 17 is removed. To search for motion vectors.
  • the motion vector calculated by the motion vector search unit 112 is sent to the motion vector buffer 120, and the pseudo prediction vector calculation unit 111 that processes other blocks calculates the pseudo prediction vector using the motion vector stored in the motion vector buffer 120.
  • the motion compensation unit 20 generates a prediction image from the searched motion vector and the decoded image from which the block distortion stored in the frame buffer has been removed.
  • the intra-screen prediction unit 18 performs a prediction process on the decoded image subjected to inverse orthogonal transform using the decoded images of the left and upper blocks of the same frame stored in the frame buffer 17.
  • the variable length encoding unit 13 encodes and outputs the transform coefficient quantized by the quantization unit 12.
  • the flowchart example of the motion estimation unit in the present embodiment can be shown in the same flowchart example as FIG. 14 of the third embodiment.
  • the in-screen prediction unit and the deblocking filter unit that need to finish the processing of the left block first are the same. Parallel processing is not possible in the processing order.
  • FIG. 26 for example, after performing motion estimation processing for one frame, it is necessary to perform intra prediction and deblocking filter processing in different parallel processing orders.
  • the motion estimation unit performs parallel processing between diagonally adjacent blocks as shown in FIG. 17, thereby performing motion estimation, intra prediction and deblocking filter processing of the same block as shown in FIG. 27.
  • the first to seventh embodiments described so far are the preferred embodiments of the present invention, and the scope of the present invention is not limited to the above-described embodiments. It is possible to implement the invention in various forms without departing from the scope of the invention.
  • the pseudo prediction vector is calculated from a vector of 3 blocks, but vector prediction may be performed using motion vectors of 2 blocks or less and 4 blocks or more.
  • a plurality of blocks may be combined into one parallel processing unit, and adjacent processing units may be processed in parallel.
  • MBAFF Macroblock-adaptive frame-field
  • the present invention can be applied by combining two blocks into one parallel processing unit.
  • H. H.264 encoding motion estimation is processed in parallel using a GPU (Graphics Processing Unit), and 16 ⁇ 16 pixel macroblock motion estimation is used as a parallel processing unit.
  • processing of diagonally adjacent macroblocks is performed in parallel, and a pseudo prediction vector of the processing target block is calculated using the motion vectors of blocks A, B, and E shown in FIG.
  • the configuration of the present embodiment is assumed to be equivalent to the configuration shown in FIG.
  • the motion estimation device 110 in the embodiment operates in parallel on the GPU.
  • the GPU is a three-dimensional graphics processing processor, and is characterized by having many cores of several tens to several hundreds compared to a multi-core CPU (Central Processing Unit) having several cores to several tens of cores.
  • FIG. 28 shows a flowchart of the processing of the present embodiment when the motion estimation processing for one frame is performed.
  • processing order numbers such as numbers 1-11 in FIG. 17 are assigned to each macroblock.
  • the motion estimator 110 initializes the variable i to 1 (step S51), and selects the block X from the blocks with the processing order number i (step S52).
  • the pseudo prediction vector calculation unit 111 calculates a prediction vector from the blocks A, B, and E in FIG. 16 (step S53).
  • the motion vector search unit 112 searches for a motion vector using the calculated pseudo prediction vector (step S54).
  • steps S52 to S54 operate in parallel on a plurality of cores. Then, it waits for the processing of all the blocks with the processing order number i to finish (step S55).
  • the motion estimation unit 110 increments the variable i (step S56), and repeats steps S52 to S57 if all the blocks have not been processed (No determination in step S57).
  • FIG. 29 shows the number of blocks that can be processed in parallel in Non-Patent Document 4 and the present embodiment, and the number of processes (processing order number i in FIG. 28).
  • the number of processing times is reduced to 187 times and 26% compared to 254 times of the parallel video encoding device described in Non-Patent Document 4.
  • the processing time for motion estimation is set as non-patent literature in this embodiment. This can be reduced by 26% compared to the fourth method.
  • the unit of parallel processing is not limited to processing of one macroblock, and an image segmented in a region range other than the macroblock is not limited.
  • the present invention can also be applied to processing.
  • a GPU is used as a parallel computing device.
  • this may be implemented on other parallel computers such as a multi-core processor in which a plurality of CPUs are integrated and a computer cluster in which a plurality of computers are connected. Is possible.
  • the first to seventh embodiments and examples described above can also be embodied as predetermined hardware, for example, a circuit.
  • the first to seventh embodiments and examples described above can be controlled and operated by a computer circuit (for example, CPU) (not shown) based on a control program.
  • control programs are stored in, for example, a storage medium inside the motion estimation apparatus or the moving picture encoding apparatus or an external storage medium, and are read and executed by the computer circuit.
  • Examples of the internal storage medium include a ROM (Read Only Memory) and a hard disk.
  • examples of the external storage medium include a removable medium and a removable disk.
  • the present invention relates to a motion estimation device, a motion estimation method, a motion estimation program, and a moving image encoding device, and has industrial applicability.

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

動画像の動き探索において、並列に処理できるブロック数が多く且つ高精度の動きベクトルを算出することを可能とする。 動き推定装置は、周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定装置であって、複数の動き推定部が隣接ブロックを並列に処理する。前記各動き推定部は、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出する擬似予測ベクトル算出部と、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する動きベクトル探索部と、を備える。

Description

動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
 本発明は、動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置に関する。
 近年、動画像の画像サイズ拡大要求は年々高まっており、それに伴って、符号化技術もMPEG−2、MPEG−4、H.264/MPEG−4AVC(以下、H.264)と圧縮効率を向上させるように進歩してきた。なお、上記において、MPEGは、Moving Picture Experts Groupの略である。AVCは、Advanced Video Codingの略である。これらの符号化方式は、フレーム間の動き補償を用いて情報を圧縮することで高い符号化効率を達成している。例えば、非特許文献1には、H.264の規格に基づく処理の内容が記載されている。また非特許文献2には、H.264の規格に基づいた動画像符号化装置の実装の詳細が記載されている。
 ここで、動き補償とは、次のような方法で動画像情報を圧縮する技術である。即ち符号化対象フレームと参照フレームの間の動き情報を用いて、参照フレームの画像に動き補正を行った予測画像を生成し、符号化対象フレームと予測画像との差分と動きベクトルと呼ばれる動き情報のみを符号化する。動き補償を含む、例えば、H.264における動画像符号化の処理は、16×16画素のマクロブロック単位で行われる。動き情報を算出する処理を動き推定といい、マクロブロック内の16×16画素や8×8画素などのブロック毎に参照フレームの中から符号化対象ブロックと類似度が高いブロックを探索する。参照フレームの最も類似度が高いブロックと符号化対象ブロックの位置差を表したのが動きベクトルである。
 さらに、近接する動きベクトル同士は相関性が高いため、すでに処理された周辺のブロックの動きベクトルから予測ベクトルを算出し、予測ベクトルと当該動きベクトルの差分のみを符号化することで、動きベクトルの符号量も削減することができる。符号化効率の良い動きベクトルを探索するためのレート歪最適化方式が非特許文献3に開示されている。
 図30は、非特許文献1に記載の動画像符号化装置5000の構成を示すブロック図である。図31は、動画像符号化装置5000の動作を示すフローチャートである。動画像符号化装置5000の動き推定部50110は、周辺のブロックの動きベクトルから符号化対象ブロックの予測ベクトルPMVを算出し(ステップS102)、PMVを使用してレート歪最適化した動きベクトル探索を行う(ステップS103)。動き補償部5020は、動きベクトルを使用して予測画像を生成する。
 また、H.264などの近年の符号化方式は演算量が多いため並列処理によって高速化を図ることも多い。動き推定処理の並列化方式の一つにブロック単位の並列化がある。動き推定は、ブロックごとにほぼ独立であり並列化しやすいが、予測ベクトルの算出には周囲のブロックの処理結果を使用するため、処理順序に制約が生じる。
 また、非特許文献2に示されるように、H.264における動き推定では図32に示すブロックXの予測ベクトルとしてブロックA、B、Cの動きベクトルのメディアンを用いる。動きベクトル探索では、予測ベクトルと各候補ベクトルの差分の符号量(ベクトルコスト)と、各候補ベクトルで動き補償した画像ブロックと符号化対象ブロックの差分絶対値和などによる類似度評価値との合計をコストとし、コストが最小になるベクトルを探索する。符号化時には、予測ベクトルと動きベクトルの差分、予測画像と原画像の差分のみを符号化するため、ベクトル予測により符号化効率が向上する。
 前述したように、予測ベクトルを用いる場合、動き推定時に正確なベクトルコストを得るためにはブロックA、B、Cにおける処理が終了し動きベクトルが決定しなければ符号化対象ブロックXの動き推定を開始できない。この制約を満たすように並列処理を行う例が非特許文献4に記載されている。
 図34は、非特許文献4に記載の並列動き推定装置700の構成を示すブロック図である。動きベクトル探索部112が決定した動きベクトルは動きベクトルバッファ120に格納され、予測ベクトル算出部711は動きベクトルバッファ120に格納されている他のブロックの動きベクトルを用いて予測ベクトルを算出する。図33は、非特許文献4に記載の並列動き推定装置700における並列処理順を示す。図33において、同一番号が付与されているブロックが並列に処理可能なブロックである。
 一方、ベクトル予測を行わない並列動き推定装置の一例が非特許文献5に記載されている。図35は、非特許文献5に記載の並列動き推定装置500の構成を示すブロック図である。この並列動き推定装置500と、図34に示す並列動き推定装置700との違いは、動き推定部510が予測ベクトル算出部711を有していない点にある。非特許文献5のようにベクトル予測を行わずに動きベクトル探索をすると、ブロック間に依存関係はなく全てのブロックを並列に処理できる。
 また、特許文献1には、図32のブロックA、B、Cの処理結果が決定していない場合にその近傍ブロックの処理結果を用いて処理を行う並列動画像符号化装置についての記載がある。図36は、特許文献1に記載の並列動き推定装置600の構成を示すブロック図である。並列動き推定装置600は、動き推定部610を備える。動き推定部610は、予測ベクトル算出部61と、動きベクトル探索部62と、擬似予測ベクトル算出部63と、ダイレクトモード・スキップモードコスト算出部64と、モード判定部65とを含む。予測ベクトルを算出するのに用いる規定のブロックA、B、Cの動きベクトルが決定していない場合、動き推定部610は以下のように動作する。即ち、その近傍ブロックを用いて擬似的な予測ベクトルを算出し、擬似的な予測ベクトルを用いてダイレクトモード・スキップモードのコストを算出する。また動きベクトル探索部62は、予測ベクトルは用いずに探索する。モード判定部65は、各モードのコストを比較し出力する。動き推定部610内の各処理はパイプライン処理により並列動作する。図37は、この並列動き推定装置600の動作を説明するためのフローチャートである。動きベクトル探索部62は、予測ベクトルを使用せずに動きベクトルを探索する(ステップS301)。擬似予測ベクトル算出部63は、規定のブロックの近傍ブロックから擬似予測ベクトルPMVxを算出する(ステップS302)。ダイレクトモード・スキップモードコスト算出部64は、擬似予測ベクトルPMVxを用いてダイレクトモードとスキップモードのコストを評価する(ステップS303)。モード判定部65は、規定のブロックA、B、Cの動きベクトルが確定するのを待って(ステップS304)、規定のブロックの動きベクトルから予測ベクトルPMVを算出する(ステップS305)。PMVxとPMVが等しくなければステップS303で算出した結果は廃棄し(ステップS308)、等しければ、ステップS303で算出した結果を使用して(ステップS307)、モードの判定を行う(ステップS309)。
 非特許文献1に記載のように、H.264などの動画像符号化は逐次処理を前提としており、マクロブロックは左上からラスタスキャン順に処理される。そのため、逐次処理では先に処理が終了している上や左のマクロブロックの情報を用いて処理する部分が多い。非特許文献2に記載のように、動き推定部は左と上と右上のマクロブロックの情報を使用し、画面内予測部やデブロッキングフィルタでも左と上のマクロブロックの情報を使用することで高い符号化効率を達成する。
 近年、並列処理演算装置として3Dグラフィックス処理プロセッサであるGPU(Graphics Processing Unit)の性能向上が著しい。GPUは数十から数百コアと非常に多くのコアを集積したメニコアプロセッサであり、性能を引き出すためには、処理アプリケーションの充分な並列性が必要となる。
特開2005−244503号公報
ITU−T Recommendation H.264"Advanced video coding for generic audiovisual services、"May 2003. K.P.Lim、G.Sullivan and T.Wiegand、"Text Description of Joint Model Reference Encoding Methods and Decoding Concealment Methods"、Joint Video Team(JVT)of ISO/IEC MPEG and ITU−T VCEG、Busan、Korea、Apr.2005 Sullivan、G.J.;Wiegand、T.;、"Rate−distortion optimization for video compression、"Signal Processing Magazine、IEEE、vol.15、no.6、pp.74−90、Nov 1998 Nagai−Man Cheung;Xiaopeng Fan;Au、O.C.;Man−Cheung Kung;"Video Coding on Multicore Graphics Processors、"Signal Processing Magazine、IEEE、vol.27、no.2、pp.79−89、March 2010 Wei−Nien Chen1 and Hsueh−Ming Hang1、"H.264/AVC Motion Estimation Implementation on Compute Unified Device Archtecturer(CUDA)"、Multimedia and Expo、2008 IEEE International Conference on、pp.697−700、June 23 2008−April 26 2008
 上述した背景技術では、並列に処理できるブロック数が少ない、もしくは動きベクトル探索結果の精度が悪いという課題がある。
 非特許文献4に記載の手法では、並列に処理できるブロック数が少ない。並列に処理できるブロック数が少ないと、特にGPUなどのプロセッサが多数あるメニコアプロセッサを使用して並列処理する場合には並列化効率が低く充分な処理速度を得られない。特許文献1に記載の手法も並列に処理できるブロック数は少なく、また予測ベクトルを用いて動きベクトルを探索しないためベクトルコストの精度が低く動きベクトル探索結果の精度が悪い。非特許文献5に記載の手法では全てのブロックを並列に処理することが可能なため並列に処理できるブロック数は多いが、予測ベクトルを用いないためベクトルコストの精度が低く動きベクトル探索結果の精度が悪い。
(発明の目的)
 本発明は、動画像の動き探索において、並列に処理できるブロック数が多く、且つ高精度の動きベクトルを算出することが可能な、動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置を提供することを目的とする。
 本発明の動き推定装置は、周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定装置であって、複数の動き推定部が隣接ブロックを並列に処理し、前記各動き推定部は、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出する擬似予測ベクトル算出部と、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する動きベクトル探索部と、を備える。
 本発明の動き推定方法は、周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定方法であって、複数の動き推定部が隣接ブロックを並列に処理し、前記各動き推定部において、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出し、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する。
 本発明の動き推定プログラムは、周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定装置のコンピュータに、複数の動き推定部が隣接ブロックを並列に処理する機能と、前記各動き推定部において、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出し、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する機能と、を実行させる。
 本発明によれば、並列に処理できるブロック数が多く、且つ高精度の動きベクトルを算出することが可能となる。
本発明の第1の実施の形態における並列動き推定装置の構成例を示すブロック図である。 第1の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第1の実施の形態における並列動き推定装置がベクトル予測に用いる第1のブロック位置例である。 第1の実施の形態における並列動き推定装置の第1の並列処理順例である。 第1の実施の形態における並列動き推定装置がベクトル予測に用いる第2のブロック位置例である。 第1の実施の形態における並列動き推定装置の第2の並列処理順例である。 第1の実施の形態における並列動き推定装置がベクトル予測に用いることのできるブロック位置を示すための参考図である。 第1の実施の形態における並列動き推定装置がベクトル予測に用いることのできないブロック位置の例である。 第2の実施の形態における並列動き推定装置がベクトル予測に用いるブロック位置が存在する範囲の例である。 第2の実施の形態における並列動き推定装置がベクトル予測に用いるブロック位置例である。 第2の実施の形態における並列動き推定装置の並列処理順例である。 第2の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第2の実施の形態における並列動き推定装置の擬似動きベクトルの例である。 第3の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第3の実施の形態における並列動き推定装置の並列処理順例である。 第3の実施の形態における並列動き推定装置がベクトル予測に用いるブロック位置例である。 第3の実施の形態における並列動き推定装置の並列処理順例である。 第4の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第4の実施の形態における並列動き推定装置がベクトル予測に用いるブロック位置例である。 第4の実施の形態における並列動き推定装置の並列処理順例である。 第5の実施の形態における並列動き推定装置の構成例を示すブロック図である。 第5の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第6の実施の形態における並列動き推定装置の構成例を示すブロック図である。 第6の実施の形態における並列動き推定装置の動作例を示すフローチャートである。 第7の実施の形態における並列動画像符号化装置の構成例を示すブロック図である。 動き推定と左と上を参照する処理を別の並列処理順で処理した場合の図である。 動き推定と左と上を参照する処理を同じ並列処理順で処理した場合の図である。 本発明の実施例における並列動画像符号化装置の動き推定部の動作例を示すフローチャートである。 非特許文献4と本実施例の処理回数の差を表すグラフである。 非特許文献1に記載の動画像符号化装置の構成を説明するためのブロック図である。 非特許文献1に記載の動画像符号化装置の動作を説明するためのフローチャートである。 非特許文献2に記載の動画像符号化装置におけるベクトル予測に用いるブロックである。 図34に示す並列動き推定装置における並列処理順である。 非特許文献4に記載の並列動き推定装置の構成を説明するためのブロック図である。 非特許文献5に記載の並列動き推定装置の構成を説明するためのブロック図である。 特許文献1に記載の並列動き推定装置の構成を説明するためのブロック図である。 図36に示す並列動き推定装置の動作を説明するためのフローチャートである。
 以下、本発明の実施の形態について、図面を参照して詳細に説明する。
 [第1の実施の形態]
 図1は、本発明の第1の実施の形態における並列動き推定装置100の構成例を示すブロック図である。図1に示されるように、並列動き推定装置100において、擬似予測ベクトル算出部111と動きベクトル探索部112とからなる動き推定部110が、隣接するブロックを並列処理するように構成される。なお、図1では、4並列処理の場合を例に挙げるが、これはあくまで一例であって、並列数は5以上でも4未満でもかまわない。また、動き推定部110には、特許文献1のようにダイレクトモードやスキップモードのコストを算出し、モードを判定する機能が追加されても構わない。
 擬似予測ベクトル算出部111は、処理の終了している任意のブロックの動きベクトルを動きベクトルバッファ120から取得し、擬似予測ベクトルを、例えばベクトルのメディアンにより算出し出力する。動きベクトル探索部112は、擬似予測ベクトルと現フレームと参照フレームとを入力とし、最も評価コストの良い動きベクトルを出力する。
 ここで、本発明の第1の実施の形態におけるベクトル予測(擬似ベクトル予測)の原理について説明する。第1の実施の形態では、図32に示す処理対象ブロックXの位置(x、y)に対して、ブロックA(x−1、y)、B(x、y−1)、C(x+1、y−1)の動きベクトルから算出される本来の予測ベクトルを参照して動きベクトル探索を行うのではない。第1の実施の形態では、ブロックA、B、C以外を含んでも良いブロックセットの動きベクトルを参照して、擬似的な予測ベクトルを、例えば動きベクトルのメディアンによって算出する。算出された擬似的な予測ベクトルを用いて処理対象ブロックの動きベクトルを探索することで、隣接するブロック同士の動き推定処理を並列に行う。擬似的な予測ベクトルを算出するために参照するブロックは、先に処理が終了したブロックのセットを用いる。
 図3は、第1の実施の形態における並列動き推定装置がベクトル予測に用いる第1のブロック位置例である。例えば、図3に示すD(x−1、y−1)、G(x、y−2)、E(x+1、y−2)のブロックを参照する(つまり、D、G、Eのブロックが終了してからX(x、y)のブロックを処理する)と、図4に示すように横に隣接するブロック同士を並列に処理することができる。
 また、図5は、第1の実施の形態における並列動き推定装置がベクトル予測に用いる第2のブロック位置例である。図5に示すD(x−1、y−1)、A(x−1、y)、P(x−1、y+1)のブロックを参照する(つまり、D、A、Pのブロックが終了してからX(x、y)のブロックを処理する)と、図6に示すように縦に隣接するブロック同士を並列に処理することができる。
 隣接するブロック同士を並列に処理するためには、図7に示す縦(1)、横(2)、右斜め(3)、左斜め(4)方向のいずれか1つには参照するブロックが存在しない必要がある。参照しない方向に位置するブロックが並列に処理される。例えば、図5に示すD(x−1、y−1)、A(x−1、y)、P(x−1、y+1)のブロックを参照するとすると、ブロックAは横(2)、ブロックPは右斜め(3)、ブロックDは左斜め(4)方向に位置しているため、並列に処理できるのは縦(1)方向のブロックのみである。図3に示すブロックD(x−1、y−1)、G(x、y−2)、E(x+1、y−2)を参照すると、ブロックGは縦(1)、ブロックDは左斜め(4)に位置しているため、横方向か右斜め方向のブロックが並列処理できる。そして、縦(1)に隣接するブロックを並列処理するなら横(2)方向、右斜め(3)に隣接するブロックを並列処理するなら左斜め(4)方向というように、並列に処理されるブロック群に対して垂直方向に処理が進む。そのため並列処理されるのが横方向に隣接するブロックであれば処理対象ブロックの上側と下側、縦方向に隣接するブロックであれば処理対象ブロックの右側と左側のそれぞれどちらかの処理のみ終了していることになる。
右斜め方向に隣接するブロックであれば処理対象ブロックの左側か上側か左上側と右側か下側か右下側のそれぞれどちらかの処理のみ終了していることになる。
左斜め方向に隣接するブロックであれば処理対象ブロックの左側か下側か左下側と右側か上側か右上側のそれぞれどちらかの処理のみ終了していることになる。図4に示すような順で処理が行われている場合には、処理対象よりも下のブロックの処理は開始していない。処理対象ブロックの処理は参照するブロックの処理が終了しないと行えないため、上側と下側、右側と左側の両側に参照するブロックがあると、参照するいずれかのブロックの処理は先に終了することがないため、対象ブロックの処理が行えない。例えば並列に処理されるブロックが縦(1)方向に隣接するなら右側と左側、並列に処理されるブロックが左斜め(4)方向に隣接するなら右上側と左下側の両側に参照するブロックがあると処理できない。以上のことより、本実施の形態で予測ベクトル算出に用いるブロックセットは、本来の予測ベクトルを算出するために参照するブロックA(x−1、y)、B(x、y−1)、C(x+1、y−1)の全てを同時に含むことはない。ブロックAは処理対象ブロックXと横(2)に隣接し、ブロックBは処理対象ブロックXと縦(1)に隣接し、ブロックCは処理対象ブロックXと右斜め(3)に隣接している。そのため、並列に処理できるのは左斜め(4)方向に隣接するブロック同士のみだが、図8のようにブロックAはブロックXの左、ブロックCはブロックXの右上に位置するため、ブロックAかブロックCのどちらかの処理は先には終了せず参照できない。よって、全てのブロックの処理でブロックA、B、Cの全てを参照すると隣接するブロック同士を並列処理できない。後述する第3の実施の形態のように、参照ブロックセットにブロックA、B、Cの一部を含む場合や、後述する第4の実施の形態のように一部のブロックで参照ブロックセットにA、B、Cの全てを含み、隣接するブロックを並列処理することは可能である。
 図2は、第1の実施の形態における並列動き推定装置100の動作例を示すフローチャートである。擬似予測ベクトル算出部111は、処理の終了しているブロック、例えば図3のブロックD、G、Eの動きベクトルを動きベクトルバッファ120から取得する(ステップS11)。擬似予測ベクトル算出部111は、取得した動きベクトルを用いて、例えばベクトルのメディアンから擬似予測ベクトルPMVxを算出する(ステップS12)。動きベクトル探索部112は、擬似予測ベクトルPMVxを用いて動きベクトルを探索する(ステップS13)。動き推定部110において、ステップS11、S12、S13は、隣接するブロック同士で並列処理される。
 次に本実施の形態と背景技術の違いによる効果について説明する。
 図1に示す本実施の形態の並列動き推定装置100の、図34に示す非特許文献4の並列動き推定装置700に対する違いは以下の通りである。即ち、並列動き推定装置100では、並列動き推定装置700における予測ベクトル算出部711の代わりに擬似予測ベクトル算出部111が動きベクトル探索部112に接続されている点にある。これにより、隣接するブロック同士を並列処理できるため、より多くのブロックを並列処理することができる。例えば、1920×1080画素のフルHD画像を16×16画素のブロックに分けて処理する場合、並列に処理できるブロック数は、並列動き推定装置700(非特許文献4)では60であるのに対して、並列動き推定装置100(本実施の形態)では120と2倍となる。よって、60より多くのプロセッサにより並列処理可能な環境において、本実施の形態は、背景技術(例えば、非特許文献4)に比べて、全体の処理時間を短縮することができる。
 図1に示す本実施の形態の並列動き推定装置100の、図35に示す非特許文献5の並列動き推定装置500に対する違いは以下の通りである。即ち、並列動き推定装置100では、動きベクトル探索部112に、並列動き推定装置500には存在しない擬似予測ベクトル算出部111が接続されている点にある。これにより、動きベクトル探索部112は擬似的では有るが予測ベクトルを用いて動きベクトルを探索することができるため、精度の高い動きベクトルを算出することができる。
 図1に示す本実施の形態の並列動き推定装置100の、図36に示す特許文献1の並列動き推定装置600に対する違いは以下の通りである。即ち、並列動き推定装置100では、並列動き推定装置600における予測ベクトル算出部61がなく且つ擬似予測ベクトル算出部111が動きベクトル探索部112に接続されている点にある。図36の動き推定部610において、予測ベクトル算出部61はブロックA、B、Cの全ての動き推定終了を待つ必要があるが、本実施の形態ではブロックA、B、Cの処理全てを待ってから予測ベクトルを算出する必要はない。従って、隣接するブロックを並列処理することができるため、より多くのブロックを並列処理することができる。
 以上を纏めると、以上説明した第1の実施の形態によれば、並列に処理できるブロック数が多く、且つ高精度の動きベクトルを算出することが可能となる。
 [第2の実施の形態]
 図9は、第2の実施の形態における並列動き推定装置がベクトル予測に用いるブロック位置が存在する範囲の例である。
 第2の実施の形態では、処理が終了したブロックのうち、処理対象ブロックXの位置(x、y)に対して、次のような処理を行う。即ち、処理対象ブロックと同行、同列、上方向、左方向、右方向の各エリアに属するブロックをそれぞれ1つ以上全て含むブロックセット(s、t、uは任意の正の整数)を用いて予測ベクトルを擬似的に算出し、隣接するブロック同士を並列に処理する。ここで同行とはx座標x、図9のK、同列とはy座標y、図9のM、上方向とはy座標y−u、図9のJ、左方向とはx座標x−s、図9のL、右方向とはx座標x+t、図9のN、である。
 例えば、図10に示すF(x−2、y)(図9のK、Lエリア)、G(x、y−2)(図9のJ、Mエリア)、H(x+1、y−3)(図9のJ、Nエリア)のブロックセットから擬似的な予測ベクトルを算出し、図11に示すように斜めに隣接するブロックを並列処理する。
 本実施の形態における動き推定部の構成は、第1の実施の形態の動き推定部110(図1)と同じ構成とすることができる。
 図12は、第2の実施の形態における並列動き推定装置の動作例を示すフローチャートである。第1の実施の形態におけるフローチャート例(図2)との違いはステップS11に替えてステップS21を設ける点にある。ステップS21は、擬似予測ベクトル算出部111が、処理の終了しているブロックのうちブロック位置がx、x−s、x+t、y、y−u(s、t、uは任意の正の整数)であるブロックをそれぞれ1つ以上含むブロックセットの動きベクトルを取得する。
 本実施の形態では、本来の予測ベクトルの算出法と同様に、符号化対象ブロックと同行、同列、上方向、左方向、右方向の座標を全て持つブロックセットを使用して擬似的な予測ベクトルを算出する。そのため、擬似的に予測されるベクトルは本来の予測ベクトルと近似している、つまりベクトルコストの精度がより高い。例えば、同行のブロックを参照しないと、図13のように符号化対象ブロックXの上の横方向にオブジェクトの境界があり境界を跨いだブロック間で動きが大きく異なっている場合に擬似予測ベクトルの精度が悪くなることがある。図13の例では処理対象ブロック(x2、y2)はオブジェクトの境界の下に位置し、上の行のブロックのみを参照すると処理対象ブロックと異なるオブジェクトの動きの影響が大きく、実際の被写体の動きとは異なる擬似予測ベクトルを算出してしまう。本実施の形態のように(x1、y2)のような同行のブロックも参照することで処理対象ブロックと同じオブジェクトの動きの影響を大きくでき、実際の被写体の動きに近いつまり精度の高い擬似予測ベクトルを算出できる。
 [第3の実施の形態]
 本発明の第3の実施の形態について説明する。本実施の形態では、第2の実施の形態で参照することができるブロックの中から、符号化対象ブロックXの位置(x、y)に対して次のように動作する。即ち、図16に示すブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)からなるブロックセットの動きベクトルを用いて動きベクトルを算出する。さらに図15のように左上に近いブロックから、斜めに隣接するブロック同士で並列に処理を行う。すなわち、まずステップ1で最も左上である処理順が1のブロックを処理する。次にステップ2として処理されていないブロックの中で最も左上に近く斜めに隣接する2つの処理順2のブロックを処理する。このとき処理順1のブロックの処理は終了している。そして、処理順2のブロックの処理が終わると、ステップ3として処理されていないブロックの中で最も左上に近く斜めに隣接する3つの処理順3のブロックを処理するというような順で処理が行われる。これにより、参照ブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)は常に処理対象ブロックXよりも先に処理が終了していることになる。
 本実施の形態における動き推定部の構成は、第1の実施の形態の動き推定部110(図1)と同じ構成とすることができる。
 図14は、第3の実施の形態における並列動き推定装置の動作例を示すフローチャートである。図14の、第2の実施の形態におけるフローチャート例(図12)との違いは、ステップS21に替えて、ブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)の動きベクトルを取得するステップS31を設ける点にある。
 本実施の形態では、ブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)の動きベクトルを用いて擬似的な予測ベクトルを算出する。動画像は一般的に動きベクトルに空間的な相関性があり、より距離が近いブロックの動きベクトルを用いることで精度の高い擬似予測ベクトルを算出することができる。よって処理対象ブロックに近い位置のブロックを参照することで精度の高い擬似予測ベクトルを使用できるため高精度の動きベクトルを算出することができる。
 [第4の実施の形態]
 本発明の第4の実施の形態について説明する。本実施の形態では、参照ブロックセットのパターンを複数持ち、ブロックごとに異なる相対位置のブロックセットパターンの動きベクトルを用いて擬似予測ベクトルを算出する。例として、図19のように偶数(2n)列目のブロック(2n、y)は(2n−1、y)、(2n、y−1)、(2n+1、y−1)の3ブロックを参照して擬似予測ベクトルを算出する。奇数(2n+1)列目のブロック(2n+1、y)は(2n−1、y)、(2n+1、y−1)、(2n+2、y+2)の3ブロックを参照して擬似予測ベクトルを算出する。偶数列ブロックの擬似予測ベクトルは本来の予測ベクトルと等しい。本例で並列に処理できるブロック同士は、図20に示すように偶数列と奇数列間は横に隣接しており奇数列と偶数列は斜めに隣接している。
 本実施の形態における動き推定部の構成は、第1の実施の形態の動き推定部110(図1)と同じ構成とすることができる。
 図18は、第4の実施の形態における並列動き推定装置の動作例を示すフローチャートである。本実施の形態では、擬似予測ベクトル算出部111は、処理対象ブロックXが偶数列か奇数列かを判断する(ステップS42)。偶数列であれば、擬似予測ベクトル算出部111は、ブロックA(x−1、y)、B(x、y−1)、C(x+1、y−1)の動きベクトルを取得する(ステップS100)。一方、奇数列であれば、擬似予測ベクトル算出部111は、ブロックF(x−2、y)、B(x、y−1)、E(x+1、y−2)の動きベクトルを取得する(ステップS41)。擬似予測ベクトル算出部111は、取得した動きベクトルを用いて処理対象ブロックXの擬似予測ベクトルPMVxを算出する(ステップS12)。動きベクトル探索部112は、擬似予測ベクトルPMVxを使用して動きベクトルを探索する(ステップS13)。
 本実施の形態では、隣接するブロックを並列処理しながら、一部のブロックでは本来の予測ベクトルと等しい擬似予測ベクトルを使用することができる。そのため、算出される動きベクトルの精度が向上できる。
 [第5の実施の形態]
 本発明の第5の実施の形態について説明する。本実施の形態では、擬似的な予測ベクトルを算出するのに参照する動きベクトルを適応的に選択する。より詳細に説明する。動画像圧縮符号化ではブロックは画面内予測を用いて圧縮符号化されることもあり、その場合にはそのブロックの動きベクトルはない。そこで、本実施の形態では、擬似予測ベクトルを算出するのに参照するブロックが画面内予測されていた場合は他のブロックの動きベクトルを用いる。
 図21は、第5の実施の形態における並列動き推定装置550の構成例を示すブロック図である。並列動き推定装置550を構成する動き推定部510は、参照ブロック選択部511を更に備え、参照ブロック選択部511は、ブロックの符号化情報を入力とする。
 図22は、並列動き推定装置550の動作例を示すフローチャートである。参照ブロック選択部511は、予測に用いるブロック、例えばブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)の符号化情報を取得する(ステップS51)。参照ブロック選択部511は、ブロックA、B、Eのいずれかが画面内予測により圧縮符号化されているか判断する(ステップS52)。画面内予測であった場合、参照ブロック選択部511は、画面内予測されていたブロックの代わりにその周囲のブロック例えば上のブロックを選択する(ステップS53)。これらの処理を全てのブロックが画面内予測ブロックでなくなるまで続ける。擬似予測ベクトル算出部111は、参照ブロック選択部511が選択したブロックの動きベクトルを取得し(ステップS54)、予測ベクトルを算出する(ステップS12)。動きベクトル探索部112は、擬似予測ベクトルPMVxを使用して動きベクトルを探索する(ステップS13)。
 本実施の形態では、擬似予測ベクトル算出時に参照するブロックが画面内予測であった場合に、周囲のブロックを用いて擬似予測ベクトルを算出する。従って、擬似ベクトル予測に用いる動きベクトルの数が減少せず、より精度の高い擬似予測ベクトルを算出することができる。
 [第6の実施の形態]
 本発明の第6の実施の形態について説明する。本実施の形態では、第5の実施の形態と同様に擬似的な予測ベクトルを算出するのに用いる動きベクトルを適応的に選択する。さらに、本実施の形態では、動きベクトル探索前に擬似的な予測ベクトルの精度を検討し、充分な精度が得られなそうな場合には参照ブロックを追加する。例えば、参照ブロックが画面内予測であり動きベクトルがない場合や参照ブロックの各動きベクトルの向きや大きさが大きく異なっている場合などは精度の高い擬似予測ベクトルが得られにくい。
 図23は、第6の実施の形態における並列動き推定装置650の構成例を示すブロック図である。並列動き推定装置650を構成する動き推定部610は、擬似予測ベクトル精度判定部611を更に備える。擬似予測ベクトル精度判定部611は、参照ベクトル選択部612と接続される。
 図24は、第6の実施の形態における並列動き推定装置650の動作例を示すフローチャートである。まず、擬似予測ベクトル精度判定部611は、例えばブロックA(x−1、y)、B(x、y−1)、E(x+1、y−2)から得られる擬似予測ベクトルの精度が十分かどうかを判断する(ステップS62)。例えば、3つの動きベクトルの向きが全て大きく異なるなど、得られる擬似予測ベクトルの精度が十分でなさそうであれば、参照ブロック選択部は周辺のブロックの中から例えば左上のブロックなどを参照ブロックに追加する(ステップS63)。これらの処理を、擬似予測ベクトル精度判定部611が各ベクトルの方向が集中するなど十分な精度を得られると判断するまで繰り返す。擬似予測ベクトル算出部111は、参照ブロック選択部612が選択したブロックの動きベクトルを取得し擬似予測ベクトルを算出する。
 本実施の形態では、擬似的な予測ベクトルの精度が充分であることを確認してから擬似的な予測ベクトルを算出するため、常に精度の高い擬似予測ベクトルを算出することができる。
 [第7の実施の形態]
 本発明の第7の実施の形態について説明する。本実施の形態は、第3の実施の形態の動き推定部を含む並列動画像符号化装置である。H.264などによる動画像符号化では、動き推定の他に画面内予測やデブロッキングフィルタなどの画像処理でも、左や上など他のブロックの処理結果を用いる。そのため、画面内予測やデブロッキングフィルタも左と上のブロックの処理が先に終了してから処理を行う必要がある。第3の実施の形態の動き推定部は左と上のブロックの処理が終了してから処理対象ブロックの処理を行うため、画面内予測やデブロッキングフィルタも同様の処理順で並列処理することができる。動き推定処理に加え、画面内予測やデブロッキングフィルタなどの左と上のブロックの処理結果を参照する画像処理、および直交変換などを含めたブロック単位で並列処理できる処理群をブロック符号化処理とする。
 図25は、第7の実施の形態における並列動画像符号化装置1000の構成例を示すブロック図である。並列動画像符号化装置1000は、複数のブロック符号化部1100と、可変長符号化部13と、フレームバッファ17と、動きベクトルバッファ120とを少なくとも備える。各ブロック符号化部1100は、直交変換部11と、量子化部12と、逆量子化部14と、逆直交変換部15と、デブロッキングフィルタ部16と、画面内予測部18と、動き推定部110と、動き補償部20と、を備える。動き推定部110は、擬似予測ベクトル算出部111と、動きベクトル探索部112と、を備える。動き推定部110は、第5の実施の形態の動き推定部510や第6の実施の形態の動き推定部610とすることができる。画面内予測部18とデブロッキングフィルタ部16は、左と上のブロックを参照する処理である。ブロック符号化部1100は、図17に示すように左上のブロックから斜めに隣接するブロック同士を並列に処理する。直交変換部11と量子化部12と逆量子化部14と逆直交変換部15と動き補償部20とは他のブロックの処理結果を必要としないが、デブロッキングフィルタ部16と画面内予測部18とは左と上のブロックの処理結果が必要となる。
 直交変換部11は、入力画像と予測画像の差分値に離散コサイン変換などの直交変換を行う。量子化部12は、直交変換が施された変換係数の量子化を行う。逆量子化部14は、量子化部12で量子化された変換係数を逆量子化する。逆直交変換部15は、逆量子化された変換係数を逆直交変換する。デブロッキングフィルタ部16は、復号されたフレームのブロック間の歪を除去する。このとき、左と上のブロックの画像を使用するため、逆直交変換された画像をフレームバッファ17に格納しておき、左と上のブロックの画像はフレームバッファから取り出してデブロッキングフィルタ部16の処理を行う。そして、ブロック間の歪が除去された画像もフレームバッファ17に格納する。動きベクトル探索部112は、擬似予測ベクトル算出部111が算出した擬似的な予測ベクトルと、入力画像(現フレーム)と、フレームバッファ17に格納されたブロック歪が除去された参照フレーム画像を入力して動きベクトルを探索する。動きベクトル探索部112の算出した動きベクトルは動きベクトルバッファ120に送られ、他のブロックを処理する擬似予測ベクトル算出部111が動きベクトルバッファ120に格納された動きベクトルを用いて擬似予測ベクトルを算出する。動き補償部20は、探索された動きベクトルとフレームバッファに格納されたブロック歪が除去済みの復号画像から予測画像を生成する。画面内予測部18は、逆直交変換された復号画像をフレームバッファ17に格納された同一フレームの左と上のブロックの復号画像を用いて予測処理を行う。可変長符号化部13は、量子化部12によって量子化された変換係数を符号化し出力する。
 本実施の形態における動き推定部のフローチャート例は、第3の実施の形態の図14と同じフローチャート例で示すことができる。
 動き推定を、例えば図4に示すように横に隣接するブロック同士で並列に処理すると、左のブロックの処理が先に終了している必要のある画面内予測部とデブロッキングフィルタ部は、同じ処理順では並列処理できない。そのため、図26のように例えば動き推定の処理を1フレーム分行ってから、画面内予測とデブロッキングフィルタの処理を別の並列処理順で行う必要がある。本実施の形態では、動き推定部を図17のように斜めに隣接するブロック同士で並列処理することで、図27のように、同じブロックの動き推定と画面内予測とデブロッキングフィルタの処理を連続して同じ並列処理順で行うことができる。これにより並列処理を開始するための初期オーバヘッドや同期処理、処理間のデータ転送などを低減することが可能になる。
 以上、これまで述べてきた第1から第7の各実施の形態は、本発明の好適な実施形態であり、前記実施の形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
 前記の擬似予測ベクトルは3ブロックのベクトルより算出しているが、2ブロック以下、4ブロック以上の動きベクトルを用いてベクトル予測を行っても良い。複数のブロックをまとめて一つの並列処理単位とし、隣接する処理単位同士を並列処理するのでもかまわない。MBAFF(Macroblock−adaptive frame−field:マクロブロック適応型フレーム/フィールド)符号化の場合も2ブロックまとめて一つの並列処理単位とすることで本発明を適用可能である。
 次に、具体的な実施例を用いて本発明を実施するための形態の動作を説明する。本実施例では、H.264エンコーディングの動き推定をGPU(Graphics Processing Unit)を用いて並列処理し、16×16画素のマクロブロックの動き推定を並列処理単位とする。本実施例では斜めに隣接するマクロブロックの処理を並列に行い、図10に示すブロックA、B、Eの動きベクトルを用いて処理対象ブロックの擬似的な予測ベクトルを算出する。
 本実施例の構成は、図1に示す構成と同等であるとする。実施例における動き推定装置110は、GPU上で並列に動作する。GPUは3次元グラフィックス処理プロセッサであり、数コアから数十コアのマルチコアCPU(Central Processing Unit)に比べて、数十から数百と多くのコアを搭載していることを特徴とする。
 次に、1フレームの動き推定処理を行う場合の、本実施例の処理のフローチャートを図28に示す。ここで、各マクロブロックには図17の番号1−11のような処理順番号が付与されているとする。まず、動き推定部110は、変数iを1に初期化し(ステップS51)、処理順番号がiのブロックの中からブロックXを選択する(ステップS52)。擬似予測ベクトル算出部111は、図16のブロックA、B、Eから予測ベクトルを算出する(ステップS53)。動きベクトル探索部112は、算出された擬似的な予測ベクトルを用いて動きベクトルを探索する(ステップS54)。ここで、ステップS52からステップS54までは複数のコア上で並列に動作する。そして、すべての処理順番号iのブロックの処理が終わるのを待つ(ステップS55)。動き推定部110は、変数iをインクリメントし(ステップS56)、すべてのブロックの処理が終了していなければ(ステップS57においてNo判定)、ステップS52からS57を繰り返す。
 本実施例の効果の例として、1920×1080画素のフルHDサイズ画像を並列処理する例を示す。図29には、非特許文献4と本実施例における並列に処理できるブロック数と、処理回数(図28における処理順番号i)を示す。処理回数は非特許文献4に記載の並列動画像符号化装置の254回に対して本実施例では187回と26%も処理回数が削減している。つまり、もしマクロブロックあたりの処理時間が全て同じであり、使用する並列計算機すなわち本例ではGPUが120以上の並列処理能力を持っていれば、本実施例では動き推定の処理時間を非特許文献4の手法に比べて26%削減することができる。
 以上、本発明の好適な実施例を説明した。本発明は、前記実施例のみに範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した実施が可能である。前記実施例は、動き推定処理をマクロブロック毎に並列処理を行っているが、並列処理単位は1マクロブロックの処理に限定されることはなく、マクロブロック以外の領域範囲で分割された画像の処理にも本発明を適用することができる。さらに、本実施例では並列演算装置としてGPUを用いているが、これは、複数のCPUが集積されたマルチコアプロセッサや、複数のコンピュータが接続されたコンピュータクラスタなど、他の並列計算機での実施も可能である。
 なお、以上説明した第1~7の実施形態および実施例は、所定のハードウェア、例えば、回路として具現化することもできる。
 また、以上説明した第1~7の実施形態および実施例は、制御プログラムに基づいて図示しないコンピュータ回路(例えば、CPU)によって制御され、動作するようにすることができる。その場合、これらの制御プログラムは、例えば、動き推定装置あるいは動画像符号化装置内部の記憶媒体、あるいは、外部の記憶媒体に記憶され、上記コンピュータ回路によって読み出され実行される。内部の記憶媒体としては、例えば、ROM(Read Only Memory)やハードディスク等を挙げることができる。また、外部の記憶媒体としては、例えば、リムーバブルメディアやリムーバブルディスク等を挙げることができる。
 また、以上の実施形態は各々他の実施形態と組み合わせることができる。
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2010年12月21日に出願された日本出願特願2010−284613を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明は、動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置に関するものであり、産業上の利用可能性を有する。
 11 直交変換部
 12 量子化部
 14 逆量子化部
 15 逆直交変換部
 16 デブロッキングフィルタ部
 18 画面内予測部
 20 動き補償部
 100 並列動き推定装置
 110 動き推定部
 111 擬似予測ベクトル算出部
 112 動きベクトル探索部
 120 動きベクトルバッファ
 550 並列動き推定装置
 510 動き推定部
 511 参照ブロック選択部
 650 並列動き推定装置
 610 動き推定部
 611 擬似予測ベクトル精度判定部
 612 参照ベクトル選択部
 1000 並列動画像符号化装置
 1100 ブロック符号化部

Claims (8)

  1.  周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定装置であって、
     複数の動き推定手段が隣接ブロックを並列に処理し、
     前記各動き推定手段は、
     処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出する擬似予測ベクトル算出手段と、
     算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する動きベクトル探索手段と
     を備えることを特徴とする動き推定装置。
  2.  前記擬似予測ベクトル算出手段は、
     処理の終了したブロックのうち、処理対象ブロック位置(x、y)に対して、ブロック位置にx、x−s、x+t、y、y−u(s、t、uは任意の正の整数)の座標を持つブロックをそれぞれ1つ以上含むブロック群の動きベクトルを参照して擬似的な予測ベクトルを算出する
     ことを特徴とする請求項1に記載の動き推定装置。
  3.  前記隣接ブロックは斜め方向に隣接するブロックであり、
     前記擬似予測ベクトル算出手段は、当該処理ブロック位置が(x、y)のブロックに対して、(x−1、y)、(x、y−1)、(x+1、y−2)の位置のブロックの動きベクトルを参照して擬似的な予測ベクトルを算出する
     ことを特徴とする請求項2に記載の動き推定装置。
  4.  前記擬似予測ベクトル算出手段は、
     参照するブロック位置のパターンを複数持ち、
     処理ブロック位置により前記参照ブロックパターンを切り替える
     ことを特徴とする請求項1または2に記載の動き推定装置。
  5.  前記動き推定手段は、
     参照ブロック選択手段を備え、
     前記参照ブロック選択手段は、処理が終了したブロックの中から何れのブロックを使用するかをブロックの情報に基づいて判断する
     ことを特徴とする請求項1または2に記載の動き推定装置。
  6.  周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定方法であって、
     複数の動き推定手段が隣接ブロックを並列に処理し、
     前記各動き推定手段において、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出し、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する
     ことを特徴とする動き推定方法。
  7.  周囲のブロックの動きベクトルを参照してベクトル予測を行う動き推定装置のコンピュータに、
     複数の動き推定手段が隣接ブロックを並列に処理する機能と、
     前記各動き推定手段において、処理が終了しているブロック群の動きベクトルを用いて擬似的な予測ベクトルを算出し、算出された擬似的な予測ベクトルを使用して処理対象ブロックの動きベクトルを探索する機能と
     を実行させることを特徴とする動き推定プログラム。
  8.  複数のブロック符号化手段が斜めに隣接するブロックを並列に処理し、
     各ブロック符号化手段は、
     請求項2、3、5のいずれか1項に記載の動き推定手段と、
     左と上のブロックの処理結果を参照する画像処理手段と
     を備えることを特徴とする動画像符号化装置。
PCT/JP2011/079970 2010-12-21 2011-12-16 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置 WO2012086829A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/995,572 US9596467B2 (en) 2010-12-21 2011-12-16 Motion estimation device for predicting a vector by referring to motion vectors of adjacent blocks, motion estimation method and storage medium of motion estimation program
JP2012549906A JPWO2012086829A1 (ja) 2010-12-21 2011-12-16 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
EP11851988.3A EP2658261A4 (en) 2010-12-21 2011-12-16 Motion estimation device, motion estimation method, motion estimation program, and video image encoder

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-284613 2010-12-21
JP2010284613 2010-12-21

Publications (1)

Publication Number Publication Date
WO2012086829A1 true WO2012086829A1 (ja) 2012-06-28

Family

ID=46314094

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/079970 WO2012086829A1 (ja) 2010-12-21 2011-12-16 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置

Country Status (4)

Country Link
US (1) US9596467B2 (ja)
EP (1) EP2658261A4 (ja)
JP (1) JPWO2012086829A1 (ja)
WO (1) WO2012086829A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014103967A1 (ja) * 2012-12-27 2014-07-03 日本電信電話株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム及び記録媒体
WO2015083300A1 (ja) * 2013-12-04 2015-06-11 日本電気株式会社 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体
JP6078138B1 (ja) * 2015-10-30 2017-02-08 Nttエレクトロニクス株式会社 動画像符号化装置及び動画像符号化方法
JPWO2015107887A1 (ja) * 2014-01-15 2017-03-23 日本電気株式会社 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体
US9924197B2 (en) 2012-12-27 2018-03-20 Nippon Telegraph And Telephone Corporation Image encoding method, image decoding method, image encoding apparatus, image decoding apparatus, image encoding program, and image decoding program
JP2021048619A (ja) * 2017-09-26 2021-03-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 符号化装置及び符号化方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10757437B2 (en) 2014-07-17 2020-08-25 Apple Inc. Motion estimation in block processing pipelines
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
KR20180111378A (ko) * 2017-03-31 2018-10-11 주식회사 칩스앤미디어 병렬 처리를 위한 움직임 정보를 처리하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005244503A (ja) * 2004-02-25 2005-09-08 Sony Corp 画像情報符号化装置および画像情報符号化方法
JP2006345157A (ja) * 2005-06-08 2006-12-21 Sony Corp 符号化装置、復号装置、符号化方法、復号方法、それらのプログラム
JP2008154085A (ja) * 2006-12-19 2008-07-03 Canon Inc 動画像符号化装置及び動画像符号化方法
JP2009055254A (ja) * 2007-08-27 2009-03-12 Nippon Telegr & Teleph Corp <Ntt> 動き検出装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0799658A (ja) * 1993-08-03 1995-04-11 Sony Corp 動きベクトル検出装置
EP2819411B1 (en) * 2001-09-14 2018-08-29 NTT DoCoMo, Inc. Coding method and decoding method
KR100886191B1 (ko) * 2004-12-06 2009-02-27 엘지전자 주식회사 영상 블록을 디코딩 하는 방법
KR101520027B1 (ko) * 2007-06-21 2015-05-14 삼성전자주식회사 움직임 추정 방법 및 장치
CN101686388B (zh) * 2008-09-24 2013-06-05 国际商业机器公司 视频流编码装置及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005244503A (ja) * 2004-02-25 2005-09-08 Sony Corp 画像情報符号化装置および画像情報符号化方法
JP2006345157A (ja) * 2005-06-08 2006-12-21 Sony Corp 符号化装置、復号装置、符号化方法、復号方法、それらのプログラム
JP2008154085A (ja) * 2006-12-19 2008-07-03 Canon Inc 動画像符号化装置及び動画像符号化方法
JP2009055254A (ja) * 2007-08-27 2009-03-12 Nippon Telegr & Teleph Corp <Ntt> 動き検出装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2658261A4 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9924197B2 (en) 2012-12-27 2018-03-20 Nippon Telegraph And Telephone Corporation Image encoding method, image decoding method, image encoding apparatus, image decoding apparatus, image encoding program, and image decoding program
JPWO2014103967A1 (ja) * 2012-12-27 2017-01-12 日本電信電話株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム及び画像復号プログラム
WO2014103967A1 (ja) * 2012-12-27 2014-07-03 日本電信電話株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム及び記録媒体
WO2015083300A1 (ja) * 2013-12-04 2015-06-11 日本電気株式会社 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体
US10136154B2 (en) 2013-12-04 2018-11-20 Nec Corporation Video coding apparatus, video coding method, and non-transitory computer readable medium
US10349071B2 (en) 2014-01-15 2019-07-09 Nec Corporation Motion vector searching apparatus, motion vector searching method, and storage medium storing motion vector searching program
JPWO2015107887A1 (ja) * 2014-01-15 2017-03-23 日本電気株式会社 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体
JP2017085448A (ja) * 2015-10-30 2017-05-18 Nttエレクトロニクス株式会社 動画像符号化装置及び動画像符号化方法
US10015508B2 (en) 2015-10-30 2018-07-03 Ntt Electronics Corporation Video encoding device and video encoding method
JP6078138B1 (ja) * 2015-10-30 2017-02-08 Nttエレクトロニクス株式会社 動画像符号化装置及び動画像符号化方法
JP2021048619A (ja) * 2017-09-26 2021-03-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 符号化装置及び符号化方法
JP7014881B2 (ja) 2017-09-26 2022-02-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置及び符号化方法
JP7489518B2 (ja) 2017-09-26 2024-05-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置及び符号化方法

Also Published As

Publication number Publication date
JPWO2012086829A1 (ja) 2014-06-05
US20130272421A1 (en) 2013-10-17
EP2658261A1 (en) 2013-10-30
US9596467B2 (en) 2017-03-14
EP2658261A4 (en) 2015-06-24

Similar Documents

Publication Publication Date Title
WO2012086829A1 (ja) 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
US9973756B2 (en) Video encoder and video encoding method
JP5277257B2 (ja) 動画像復号化方法および動画像符号化方法
US9451255B2 (en) Image encoding apparatus, image encoding method, image decoding apparatus, and image decoding method
RU2603541C2 (ru) Способ и устройство для кодирования видео и способ и устройство для декодирования видео
JP2021022936A (ja) 画像予測方法および関連装置
US20060045186A1 (en) Apparatus and method for coding moving picture
WO2012176381A1 (ja) 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法
KR101671676B1 (ko) 압축 동화상 부호화 장치, 압축 동화상 복호화 장치, 압축 동화상 부호화 방법 및 압축 동화상 복호화 방법
JP6607040B2 (ja) 動きベクトル探索装置、動きベクトル探索方法、及び動きベクトル探索プログラムを記憶する記録媒体
JP5613319B2 (ja) 映像符号化装置、映像符号化方法および映像符号化プログラム
JP2009049519A (ja) 動画像符号化装置の予測動きベクトル生成装置
JPWO2006100946A1 (ja) 画像信号再符号化装置及び画像信号再符号化方法
WO2020054060A1 (ja) 動画像符号化方法及び動画像符号化装置
JP6390275B2 (ja) 符号化回路、符号化方法
JP5281597B2 (ja) 動きベクトル予測方法,動きベクトル予測装置および動きベクトル予測プログラム
KR100790757B1 (ko) H.264 동영상 부호화기의 적응적 고속 움직임 추정 방법
JP6317720B2 (ja) 動画像符号化装置、動画像符号化方法、動画像符号化プログラム
JP6065090B2 (ja) 動画像復号装置、動画像復号方法、動画像復号プログラム
JP2013017128A (ja) イントラ予測モード推定装置、画像符号化装置、画像復号装置、及びプログラム
JP6311821B2 (ja) 動画像処理装置及び動画像処理方法
WO2009128208A1 (ja) 動画像符号化装置、動画像復号化装置、動画像符号化方法、および動画像復号化方法
JP2016054514A (ja) 動画像符号化装置、動画像符号化方法、動画像符号化プログラム
KR20130011061A (ko) 동영상 인코딩 방법 및 이를 기록한 컴퓨터 판독 가능한 저장 매체
WO2010100860A1 (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: 11851988

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012549906

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2011851988

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 13995572

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE