WO2015083300A1 - 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体 - Google Patents

動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体 Download PDF

Info

Publication number
WO2015083300A1
WO2015083300A1 PCT/JP2014/002745 JP2014002745W WO2015083300A1 WO 2015083300 A1 WO2015083300 A1 WO 2015083300A1 JP 2014002745 W JP2014002745 W JP 2014002745W WO 2015083300 A1 WO2015083300 A1 WO 2015083300A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
motion information
motion
processing
blocks
Prior art date
Application number
PCT/JP2014/002745
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 JP2015551369A priority Critical patent/JP6344398B2/ja
Priority to US15/038,626 priority patent/US10136154B2/en
Publication of WO2015083300A1 publication Critical patent/WO2015083300A1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Definitions

  • the present invention relates to a moving image encoding device, a moving image encoding method, and a moving image encoding program, and in particular, a moving image encoding device and a moving image code that operate with high parallel processing efficiency without reducing the encoding efficiency.
  • the present invention relates to an encoding method and a moving image encoding program.
  • a moving picture encoding apparatus based on the H.265 standard is usually a motion compensated predictor 001, an orthogonal transformer 002, a quantizer 003, an encoder 004, an inverse quantizer 005, an inverse orthogonal transformer 006, and an intra-screen predictor. 007, a motion estimator 008, a loop filter 009, and a frame buffer 010.
  • ITU-T International Telecommunication Union Telecommunication Standardization Sector
  • the moving image encoding process according to the H.265 standard is performed in units of blocks of up to 64 ⁇ 64 pixels called CTB (Coding Tree Brock).
  • the motion compensation prediction in the H.265 standard is the following technique.
  • the motion compensated predictor 001 corrects the image of the reference frame using motion information between the encoding target frame input as an input image and the encoded reference frame stored in the frame buffer 010.
  • the moving image information is compressed by encoding only the information representing the motion between frames, which is the difference information between the corrected image (predicted image) and the current image to be encoded.
  • the motion between frames is expressed by a motion vector that represents the amount of movement.
  • the process of calculating motion information between the reference frame and the encoding target frame in the motion estimator 008 is referred to as motion estimation.
  • motion estimation process it is important to calculate motion information that can minimize the amount of information to be encoded while suppressing the amount of noise generated in the decoded image. For this reason, a technique called RD (Rate-Distortion) optimization is widely used in recent video encoding apparatuses.
  • D is the amount of distortion generated in the difference image
  • R is the amount of code generated by encoding the motion information
  • is a weighting factor that depends on the complexity of the image.
  • the motion information includes a difference between prediction vector information described later and the motion vector, and merge information.
  • FIG. 20 is a schematic diagram for explaining spatial neighboring blocks of the encoding target block.
  • the CTB of the lower left neighboring block A0 in FIG. 20 is a process subsequent to the encoding target CTB
  • the motion information of the neighboring block A0 that is, the processing result is referred to only when the sub-block within CTB is coded. . Therefore, in order to simplify the following description, the blocks to be encoded refer to the left neighboring block A1, the upper left neighboring block B2, the upper neighboring block B1, and the upper right neighboring block B0.
  • the motion information of the neighboring block is the same as the information obtained in the decoder, the motion information can be transmitted by encoding only the index of the neighboring block list, and the code amount R is reduced. Can do. If the merge mode is used, the motion information includes only the flag indicating the merge mode and the index of the reference block. Otherwise, the index of the block referenced by the prediction vector and the difference between the prediction vector and the motion vector Information.
  • FIG. 21 shows a configuration example of the motion estimator 008 of the moving picture encoding apparatus shown in FIG.
  • the motion estimator 008 shown in FIG. 21 includes a motion vector search unit 020, an AMVP selection unit 021, a merge cost calculation unit 022, and a motion information determination unit 023.
  • the motion vector search unit 020 performs block matching on a large number of motion vector candidates to determine a provisional motion vector that minimizes the cost.
  • the AMVP selection unit 021 selects a prediction vector from the motion vectors of neighboring blocks so that the motion vector code amount R is minimized.
  • the merge cost calculation unit 022 calculates the rate distortion cost J of the merge mode using the motion information of the neighboring blocks.
  • the motion information determination unit 023 determines whether or not to use the merge mode as final motion information.
  • the merge vector obtained by copying the motion vector of the neighboring block becomes the motion vector of the encoding target block.
  • the provisional motion vector that is the result of the motion search is used as it is.
  • the motion information determined in a certain block to be encoded is used for AMVP selection and merge cost calculation of other blocks.
  • AMVP and merge mode have a great effect on reducing the amount of code, and it is important to use them appropriately in order to obtain high coding efficiency.
  • WPP Widefront Parallel Processing
  • FIG. 22 is a schematic diagram for explaining a specific example of parallel processing by WPP described in Non-Patent Document 2.
  • Patent Document 1 discloses that an image is divided into a plurality of regions and blocks that are in contact with the boundaries of the divided regions are A technique is described in which each area is processed in parallel by using only the information of the block in the area to which the block belongs.
  • the task indicates the processing of each block in the case of parallel processing such as WPP, and indicates the processing of each divided area in the case of the technique described in Patent Document 1.
  • WPP parallel processing
  • the processing amount of each task is different, the larger the number of tasks, the easier it is to distribute the processing amount to each processor core. Therefore, when parallel processing is performed by a many-core processor having several thousand or more processor cores such as a GPU, it is necessary to enable a very large number of tasks to be processed in parallel.
  • An object of the present invention is to solve the above-mentioned problems and to enable a moving image coding apparatus, a moving image coding method, and a moving image code capable of processing a large number of tasks in parallel without reducing the coding efficiency. It is to provide a computer program.
  • the moving picture coding apparatus, the moving picture coding method, and the moving picture coding program according to the present invention mainly adopt the following characteristic configuration.
  • a moving image encoding apparatus is a moving image encoding apparatus including a motion estimation processing unit that divides an image into a plurality of blocks and estimates motion information including a motion vector for each of the divided blocks.
  • the motion estimation processing means includes Independent processing means for performing processing for each block without using motion information of neighboring blocks; Dependency processing means for performing processing for each block using motion information of neighboring blocks; A motion information buffer that holds motion information that is the processing result of each block, and
  • the independent processing means is:
  • the motion information buffer has a configuration capable of processing all blocks in parallel by an arbitrarily set number of blocks, searches for a motion vector of each block using a reference image and a current image as input, and Including motion vector search means for recording,
  • the dependency processing means includes: If the motion information of the block to be processed is determined by referring to the motion information of the neighboring block held in the motion information buffer, and it is determined that the motion information needs to be changed, the changed motion information Is recorded in the motion information buffer and output to the outside.
  • a video encoding method is a video encoding method having a motion estimation processing step of dividing an image into a plurality of blocks and estimating motion information including a motion vector for each of the divided blocks.
  • the independent processing step includes:
  • the motion information buffer has a configuration capable of processing all blocks in parallel by an arbitrarily set number of blocks, searches for a motion vector of each block using a reference image and a current image as input, and A motion vector search step held by a ring step;
  • the dependency processing step includes:
  • the motion information of neighboring blocks held by the motion information buffering step is referred to determine whether or not the motion information of the block to be processed has been changed. Processing for recording motion information in the motion information buffer and outputting the motion information to the outside is performed.
  • a moving picture coding program according to the present invention is characterized in that the moving picture coding method described in (2) is implemented as a program executable by a computer.
  • the following effects can be obtained.
  • the influence on the encoder is only limited to a part of the options for arbitrarily selecting the neighboring block to be referenced, and the decoder is changed. There is no need at all and the scope of application can be expanded.
  • FIG. 9 It is a schematic diagram for demonstrating the other example which classify
  • FIG. It is a schematic diagram for demonstrating the further different example which classify
  • H It is a flowchart which shows an example of the motion estimation process outline
  • H It is a block block diagram which shows an example of the moving image encoder based on H.265 standard. It is a schematic diagram for demonstrating the spatial neighborhood block of an encoding object block. It is a block block diagram which shows the structural example of the motion estimator of the moving image encoder shown in FIG. It is a schematic diagram for demonstrating the specific example of the parallel processing by WPP of a nonpatent literature 2.
  • the moving picture coding apparatus is implemented as a moving picture coding program executable by a computer.
  • the moving image encoding program may be recorded on a computer-readable recording medium.
  • the present invention is not limited to the hardware configuration, and the processing of the present invention can also be realized by causing a CPU (Central Processing Unit) to execute a moving image encoding program. is there.
  • a CPU Central Processing Unit
  • Non-transitory computer readable media include various types of tangible storage media.
  • Examples of non-transitory computer-readable media include magnetic recording media (eg, flexible disks, magnetic tapes, hard disk drives), magneto-optical recording media (eg, magneto-optical disks), CD-ROM (Read Only Memory) CD-R, CD -R / W, including semiconductor memory (for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, RAM (Random Access Memory)).
  • the program may be supplied to the computer by various types of temporary computer readable media. Examples of transitory computer readable media include electrical signals, optical signals, and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the computer via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.
  • the present invention provides processing that does not require processing results of neighboring blocks, that is, processing that does not require inter-block dependence, such as motion vector search, and processing that requires motion information of neighboring blocks at the time of video encoding.
  • processing such as merge cost calculation and AMVP selection, which are inter-block dependent processing, is separated.
  • the main feature is that motion vector search, which has a particularly large amount of calculation in motion estimation, can be made parallel processing with high parallelism.
  • the moving image encoding apparatus according to the first embodiment is configured by removing the internal configuration of the motion estimator that calculates the motion information between the encoding target frame input as an input image and the encoded reference frame.
  • H. shown in FIG. It has the same configuration as each component in the moving image encoding device compliant with the H.265 standard.
  • the moving picture encoding apparatus includes a motion compensated predictor 001, an orthogonal transformer 002, a quantizer 003, an encoder 004, an inverse quantizer 005, an inverse orthogonal transformer 006, a screen.
  • An inner predictor 007, a loop filter 009, and a frame buffer 010 are provided.
  • this image encoding apparatus divides an input image into a plurality of blocks, and uses motion estimation instead of the motion estimator 008 as motion estimation processing means for estimating motion information including a motion vector for each divided block.
  • the device 108 is configured.
  • FIG. 1 shows a configuration example of the motion estimator 108 in the first embodiment.
  • the motion estimator 108 can replace the motion estimator 008 of the moving picture encoding apparatus shown in FIG. 19, but the independent processing units 124 a, 124 b, 124 c, and the dependent processing unit 125. And at least a motion vector buffer 126.
  • FIG. 1 shows a case where the number of independent processing units 124a, 124b, and 124c is three, the present invention is not limited to such a case, and it may be composed of two or more.
  • Each of the independent processing units 124a, 124b, and 124c is independent processing means that performs processing for each block without using motion information of other neighboring blocks (neighboring blocks).
  • the independent processing means has a configuration capable of processing all blocks in parallel by an arbitrarily set number of blocks, and includes three independent processing units 124a, 124b, and 124c shown in FIG. In the configuration example including the dependency processing means, a case where parallel processing is possible for every three blocks is shown.
  • the dependence processing unit 125 is dependence processing means that performs processing for each block using motion information (neighboring blocks) of other blocks in the vicinity.
  • the motion vector buffer 126 is a motion information buffer that holds motion information including a motion vector as a processing result for each block, that is, a motion information holding unit.
  • the independent processing units 124a, 124b, and 124c are configured to include motion vector search units 120a, 120b, and 120c, respectively.
  • Each of the motion vector search units 120a, 120b, and 120c is a motion vector search unit that performs a motion vector search of each block by, for example, block matching using the reference image and the current image as inputs.
  • the three motion vector search means of the motion vector search units 120a, 120b, and 120c can process the motion vector search of three blocks in parallel, and the processing result is provisional motion of each block. Output as a vector.
  • the motion vector buffer 126 stores the provisional motion vector of each block output from each of the motion vector search units 120a, 120b, and 120c.
  • the dependency processing unit 125 refers to the motion information of the neighboring block held in the motion vector buffer 126, determines whether or not the motion information of the block to be encoded is to be changed, and needs to change the motion information. When the determination is made, an operation for recording the changed motion information in the motion vector buffer 126 is performed.
  • the dependency processing unit 125 includes at least an AMVP selection unit 121, a merge cost calculation unit 122, and a motion information determination unit 123.
  • the AMVP selection unit 121 selects a prediction vector capable of minimizing the motion information code amount R in each block from the motion vectors of neighboring blocks held in the motion vector buffer 126, and based on the selected result, the AMVP This is a prediction vector selection means for calculating the rate distortion cost J1 and outputting it as an AMVP cost.
  • the merge cost calculation unit 122 calculates merge vector candidates from the motion vectors of neighboring blocks held in the motion vector buffer 126, and further uses the reference image and the current image to rate rate distortion cost J2 of each merge vector candidate. , Calculates a merge vector candidate that minimizes the calculated rate distortion cost J2, and outputs the minimum rate distortion cost J2 as a merge cost.
  • the motion information determination unit 123 compares the rate distortion cost J2 (merge cost) of the merge vector candidate calculated by the merge cost calculation unit 122 with the AMVP rate distortion cost J1 (AMVP cost) calculated by the AMVP selection unit 121. This is motion information determination means for determining whether to set the encoding process target block to the merge mode based on the result. If the merge cost is smaller than the AMVP cost, the motion information determination unit 123 determines the block as the merge mode and updates the content of the motion vector buffer 126 to the merge mode.
  • FIG. 2 is a flowchart showing an example of an outline of motion estimation processing in the motion estimator 108 shown in FIG. As shown in the flowchart of FIG. 2, first, independent processing is performed in parallel for all blocks (steps S101 and S103), and then dependent processing is performed for all blocks using the processing result of step S101 ( Step S102, Step S104).
  • FIG. 3 is a flowchart showing an example of the independent processing (step S101 in FIG. 2) in the independent processing units 124a, 124b, and 124c of the motion estimator 108 shown in FIG. 1, and
  • FIG. 6 is a flowchart illustrating an example of dependency processing (step S102 in FIG. 2) in the dependency processing unit 125 of the motion estimator 108.
  • each of the motion vector search units 120a, 120b, and 120c performs a motion vector search for each block in parallel (step S201).
  • the provisional motion vector obtained as a result of the motion vector search is written into the motion vector buffer 126.
  • step S102 of FIG. 2 details of the dependency process in step S102 of FIG. 2 will be described.
  • the processing of each block shown in the flowchart of FIG. 4 is sequentially executed.
  • the AMVP selection unit 121 lists AMVP candidates using the motion vectors of neighboring blocks held in the motion vector buffer 126, and selects a prediction vector that can minimize the motion information code amount R.
  • the rate distortion cost J1 using the prediction vector with the smallest motion information code amount R is the AMVP cost.
  • the merge cost calculation unit 122 calculates the merge cost (step S302).
  • the merge vector candidates are listed from the motion vectors of neighboring blocks held in the motion vector buffer 126, the rate distortion cost J2 of each listed merge vector candidate is calculated, and the minimum rate distortion is obtained. Cost J2 (merge cost) is obtained.
  • step S303 the AMVP cost and the merge cost obtained in step S301 and step S302 are compared by the motion information determination unit 123 (step S303). If the merge cost is smaller (yes in step S303), the motion information determination unit 123 sets the merge mode as the motion information (step S304), and uses the merge vector as the motion vector of the block in the motion vector buffer 126. Is updated (step S305). Conversely, if the AMVP cost is smaller (no in step S303), the motion information determination unit 123 sets a prediction vector as motion information (step S306). That is, when the AMVP cost is smaller, the content of the motion vector buffer 126 is not updated.
  • a motion vector search with a large amount of computation in motion estimation is processed in parallel for all blocks in a plurality of motion vector search units 120a, 120b, and 120c arranged in parallel as independent processing. can do.
  • a many-core processor is used, more processor cores can be used effectively, and the processing time can be shortened.
  • AMVP selection and merge selection can be performed using the result of motion vector search and the merge determination of neighboring blocks, it is possible to suppress a decrease in encoding efficiency.
  • the motion vector of the motion vector is the same as in the first embodiment described above. Although the update is performed, the motion vector is not updated when the dependency process for the second block is performed. As a result, AMVP selection and merge cost calculation which are dependent processes can be performed in parallel.
  • the dependent processing related to the block classified as the first block is performed using the result of the independent processing, and then the independent processing is performed.
  • the dependency process related to the block classified as the second block is performed.
  • FIG. 5 is a schematic diagram for explaining an example of classifying blocks to be encoded into a first block and a second block in the second embodiment.
  • FIG. 5 shows a block adjacent to the block included in the group of the first block 051, and a total of eight blocks surrounding the periphery of the block (up, down, left and right) are all included in the group of the second block 052. The example comprised by the block is shown.
  • the motion vectors of the left, upper left, upper, and upper right blocks of the neighboring blocks of the block are referred to. Therefore, it can be seen that the first block 051 in FIG. 5 refers only to the motion vector of the second block 052 among the neighboring blocks. Therefore, the update of the motion vector by the dependency process of the first block 051 does not affect the dependency process of the other first block 051. Therefore, all the dependent processes of the first block 051 can be performed in parallel. Further, regarding the dependency processing of the second block 052 in FIG.
  • the moving picture coding apparatus according to the second embodiment is similar to the moving picture coding apparatus according to the first embodiment except for the internal structure of the motion estimator, as shown in FIG. It has the same configuration as each component in the moving image encoding device compliant with the H.265 standard. That is, the moving picture coding apparatus according to the second embodiment includes a motion compensation predictor 001, an orthogonal transformer 002, a quantizer 003, an encoder 004, an inverse quantizer 005, an inverse orthogonal transformer 006, a screen. It includes an inner predictor 007, a loop filter 009, and a frame buffer 010, and a motion estimator 208 instead of the motion estimator 008.
  • FIG. 6 shows a configuration example of the motion estimator 208 in the second embodiment.
  • the motion estimator 208 includes at least independent processing units 124a, 124b, and 124c, first dependent processing units 227a and 227b, second dependent processing units 228a and 228b, and a motion vector buffer 126.
  • the independent processing units 124a, 124b, 124c and the motion vector buffer 126 are exactly the same as those of the motion estimator 108 shown in FIG. 1 as the first embodiment, and hereinafter, the motion estimator 108 shown in FIG.
  • the first dependency processing units 227a and 227b and the second dependency processing units 228a and 228b which are components different from the dependency processing unit 125, will be described.
  • the motion estimator 208 illustrated in FIG. 6 includes the first dependency processing units 227a and 227b that perform the dependency processing of the first block 051 in place of the dependency processing unit 125 of the motion estimator 108 illustrated in FIG.
  • the second dependency processing units 228a and 228b that perform the dependency processing of the second block 052 are arranged.
  • FIG. 6 shows a case in which the number of each of the first dependency processing units 227a and 227b and the second dependency processing units 228a and 228b is two.
  • the present invention is not limited to this case. Any number can be used.
  • the internal configurations of the first dependency processing units 227a and 227b and the second dependency processing units 228a and 228b are the same as the case of the dependency processing unit 125 in FIG. 1, and the AMVP selection unit 121, the merge cost calculation unit 122, and the motion information determination unit 123 at least.
  • the first dependency processing in the first dependency processing units 227a and 227b (first dependency processing means) and the second dependency processing in the second dependency processing units 228a and 228b (second dependency processing means) are independent processing units 124a, It is different whether or not the motion vector that is the result of the independent processing in 124b and 124c can be changed.
  • the motion vector buffer 126 is updated by updating the motion information of the block to be processed based on the reference result of the motion information of the neighboring blocks held in the motion vector buffer 126. When the information is recorded and output to the outside, the motion information of the block to be processed can be updated including the motion vector.
  • a motion vector different from the result of the motion vector search in the independent processing units 124a, 124b, and 124c can be output as motion information.
  • the motion information of the block to be processed is updated by updating the motion information of the block to be processed based on the reference result of the motion information of the neighboring block held in the motion vector buffer 126.
  • the motion vector of the motion information of the block to be processed is not updated. Therefore, in the second dependency process, the same motion vector as the result of the motion vector search in the independent processing units 124a, 124b, and 124c is output as motion information.
  • FIG. 7 is a flowchart showing an example of a motion estimation process outline in the motion estimator 208 shown in FIG. As shown in the flowchart of FIG. 7, first, as in steps S101 and S103 of the flowchart of FIG. A first dependency process is performed on the block 051 using the process result of step S401 (steps S402 and S404).
  • step S404 when all the first dependency processing relating to the first block is completed (Yes in step S404), the second dependency processing is performed for all the second blocks 052 (steps S405 and S406).
  • step S405 and S406 When all the second dependent processes related to the second block 052 are completed (yes in step S406), the motion estimation process is completed.
  • each of the first dependency processing in step S402 and the second dependency processing in step S405 uses a plurality of first dependency processing units 227a and 227b and second dependency processing units 228a and 228b, respectively. A plurality of blocks can be processed in parallel.
  • the same operation as the flowchart of the dependency processing shown in FIG. 4 as the first embodiment is performed on the first block 051 instead of all the blocks. Do it. However, as illustrated in FIG. 5, the block referred to as the neighboring block in the process of the first block 051 is only the second block 052 that does not change the motion information, and the first dependency processing units 227a and 227b. Can operate in parallel.
  • FIG. 8 is a flowchart illustrating an example of second dependency processing (step S405 in FIG. 7) in the second dependency processing units 228a and 228b of the motion estimator 208 illustrated in FIG.
  • the dependency processing related to the second block 052 is performed.
  • the AMVP selection unit 121 uses the motion vector of the neighboring block held in the motion vector buffer 126 as in step S301 shown in FIG. 4 as the first embodiment. AMVP candidates are enumerated, and a prediction vector that can minimize the motion information code amount R is selected (step S501). The rate distortion cost J1 using the prediction vector with the smallest motion information code amount R is the AMVP cost.
  • the merge cost calculation unit 122 determines whether or not the provisional motion vector of the corresponding second block 052 held in the motion vector buffer 126 is the same as the merge vector in the merge mode (step S502). ). If the provisional motion vector of the second block 052 is the same as the merge vector (yes in step S502), a merge cost is calculated (step S503). In the calculation of the merge cost, as in the case of step S302 shown in FIG. 4 as the first embodiment, merge vector candidates are enumerated from the motion vectors of neighboring blocks held in the motion vector buffer 126. The rate distortion cost J2 of each merge vector candidate is calculated, and the minimum rate distortion cost J2 (merge cost) is obtained.
  • step S504 the AMVP cost and the merge cost obtained in step S501 and step S503 are compared in the motion information determination unit 123 (step S504). If the merge cost is smaller (yes in step S504), the first As in the case of step S304 shown in FIG. 4 as an embodiment, it is set as the motion information that the merge mode is set (step S505). However, unlike the case of FIG. 4 of the first embodiment, the result of the second dependency process in the second block 052 is not referred to by other blocks, and therefore the process of updating the motion vector buffer 126 is not performed.
  • step S502 if the provisional motion vector of the second block 052 is not the same as the merge vector (no in step S502), if the AMVP cost is smaller in step S504 (no in step S504). ), The merge cost is not calculated, and the merge mode is not set in the motion information. Further, since the temporary motion vector is not changed, the motion vector is not updated in the motion vector buffer 126. That is, as in the case of step S306 shown in FIG. 4 as the first embodiment, only the operation of setting a prediction vector as motion information is performed (step S507).
  • the blocks to be encoded are classified into two types of blocks, a first block 051 and a second block 052, and a plurality of first dependent processing units 227a are arranged respectively.
  • 227b and the second dependency processing units 228a and 228b perform parallel processing. As a result, not only independent processing but also dependent processing can be processed in parallel, and the processing time can be shortened compared to the case of the first embodiment.
  • the moving image encoding apparatus can arbitrarily select a neighboring block to be used for merge mode determination / AMVP (predicted vector) selection from candidates. Therefore, by restricting a part of the blocks to be referred to in the first block group, it is possible to increase the number of first blocks in which motion vectors can be changed in the merge mode while enabling parallel processing.
  • the first dependency processing means of the first dependency processing units 227a and 227b of the motion estimator 208 shown in FIG. 6 as the second embodiment is illustrated in FIG. 5 as a neighboring block of the block to be processed.
  • Only the blocks included in the group of the second blocks 052 are set to be arbitrarily selected and referred to, and the blocks included in the group of the first blocks 051 are processed in parallel. As a result, the number of blocks included in the first block 051 can be increased.
  • FIG. 9 is a schematic diagram for explaining an example of classifying the blocks to be encoded into the first block 051 and the second block 052 in the third embodiment.
  • the reference block of the first block 051 is only the second block 052 except for the upper left block.
  • the number of the first blocks 051 can be increased as compared with the case of FIG. 5 in the second embodiment.
  • the first block 051 and the second block 052 can be set as shown in FIG. 10 by prohibiting reference to the upper right block in addition to the upper left. it can.
  • the first block 051 and the second block 052 can be set as shown in FIG. Also, as shown in FIG.
  • the first block 051 and the second block 052 are set, and reference to the upper left, upper, and upper right blocks is prohibited for a part of the first block 051, and the other one is Blocks for which reference is prohibited are changed for each first block 051 such that reference to the left, upper left, and upper right blocks is prohibited for the part, and reference to the left and upper blocks is prohibited for the other part. You can also.
  • the configuration and operation of the video encoding apparatus in the third embodiment are the same as those in the second embodiment, and the motion estimator that performs motion estimation processing is also the motion shown in FIG. A configuration similar to that of the estimator 208 may be used.
  • the AMVP selection / merge cost calculation process for the second block 052 is set in advance as a reference prohibited block among neighboring blocks, unlike the second embodiment. It does not refer to a specific block.
  • the specific block means the upper left block of the first block 051, for example, in the case of the classification example of the first block 051 and the second block 052 shown in FIG.
  • the merge mode determination is performed as compared to the second embodiment. It is possible to increase the number of blocks (first block 051) that can change the motion vector. For this reason, encoding efficiency can be improved. In addition, since both the first block 051 and the second block 052 can be processed in parallel, an increase in processing time can be suppressed.
  • the fourth embodiment not only the first block 051 in the second and third embodiments but also the second block 052 is restricted by limiting the blocks that can be referred to.
  • the block 051 and the second block 052 can be further processed in parallel. That is, in the fourth embodiment, in the second dependency processing for processing the second block 052, reference to the first block 051 is prohibited, and reference is made only to the second block 052 whose motion vector does not change. To allow.
  • the second dependent processing for processing the second block 052 only the second block 052, that is, the upper left and upper right blocks where the motion vector does not change can be referred to. .
  • the moving picture coding apparatus according to the fourth embodiment is similar to the moving picture coding apparatus according to the first embodiment except for the internal configuration of the motion estimator, as shown in FIG. It has the same configuration as each component in the moving image encoding device compliant with the H.265 standard. That is, the moving picture encoding apparatus of the fourth embodiment includes a motion compensation predictor 001, an orthogonal transformer 002, a quantizer 003, an encoder 004, an inverse quantizer 005, an inverse orthogonal transformer 006, a screen. It includes an inner predictor 007, a loop filter 009, and a frame buffer 010, and a motion estimator 308 instead of the motion estimator 008.
  • FIG. 13 shows a configuration example of the motion estimator 308 in the fourth embodiment.
  • the motion estimator 308 includes independent functions 124a, 124b, 124c, second dependent processors 228a, 228b, and second dependent processors 228a, 228b, which have the same functions as those of the motion estimator 208 shown in FIG.
  • a motion vector buffer 126 is provided.
  • the motion estimator 308 includes at least first dependency processing units 327a and 327b that perform operations different from the first dependency processing units 227a and 227b in the case of the motion estimator 208 illustrated in FIG.
  • the first dependence processing unit of the first dependence processing units 327a and 327b processes the first block among the neighboring blocks as in the case of the first dependence processing units 227a and 227b in FIG. With reference to only the blocks included in the group of the second block 052, an operation of processing each block included in the group of the first block 051 in parallel is performed.
  • the second dependency processing means of the second dependency processing units 228a and 228b when processing the block to be processed, differs from the case of the second dependency processing units 228a and 228b in FIG. With reference to the blocks included in the group of the second block 052, an operation of processing each block included in the group of the second block 052 in parallel is performed.
  • the first dependency processing unit of the first dependency processing units 327a and 327b and the second dependency processing unit of the second dependency processing units 228a and 228b can operate in parallel.
  • FIG. 14 is a flowchart illustrating an example of a motion estimation process outline in the motion estimator 308 illustrated in FIG. 13.
  • steps S101 and S103 of the flowchart of FIG. 2 all blocks are subjected to independent processing in parallel.
  • the first dependence process is performed on all the first blocks 051 using the processing result of step S101 (steps S702 and S704), and the flowchart of FIG. 7 is performed on all the second blocks 052 in parallel.
  • step S705 The second dependency process similar to steps S401 and S406 is performed (steps S705 and S706).
  • the blocks referred to as the neighboring blocks are limited to only the blocks included in the group of the second blocks 052 as described above.
  • the operations in the independent processing and the second dependent processing are the same as the processing shown in FIG. 8 as the second embodiment except that the reference block of the second dependent processing is limited to the second block 052 only. Is exactly the same.
  • the result of the first dependency process related to the first block 051 is not referred to by other blocks. Therefore, unlike the process shown in FIG. 8 as the second embodiment, it is not necessary to update the motion vector buffer 126.
  • FIG. 15 is a flowchart illustrating an example of the first dependency processing (step S702 in FIG. 14) in the first dependency processing units 327a and 327b of the motion estimator 308 illustrated in FIG.
  • the dependency processing related to the first block 051 is performed as described above.
  • the AMVP selection unit 121 uses the motion vector of the neighboring block held in the motion vector buffer 126 as in step S301 shown in FIG. 4 as the first embodiment. AMVP candidates are listed, and a prediction vector that can minimize the motion information code amount R is selected (step S801). The rate distortion cost J1 using the prediction vector with the smallest motion information code amount R is the AMVP cost.
  • the merge cost calculation unit 122 calculates the merge cost (step S802).
  • merge vector candidates are enumerated from the motion vectors of neighboring blocks held in the motion vector buffer 126.
  • the rate distortion cost of each merge vector candidate is calculated, and the minimum rate distortion cost J2 (merge cost) is obtained.
  • step S803 the AMVP cost and the merge cost obtained in step S801 and step S802 are compared by the motion information determination unit 123 (step S803). If the merge cost is smaller (Yes in step S803), the motion information determination unit 123 sets the merge information as the motion information in the same manner as in step S304 shown in FIG. 4 as the first embodiment. (Step S804). However, unlike the first embodiment, the result of the first dependency process in the first block 051 is not referred to by other blocks, so there is no need to update the motion vector buffer 126.
  • step S803 If the AMVP cost is smaller in step S803 (no in step S803), a prediction vector is set as motion information as in the case of step S306 shown in FIG. 4 as the first embodiment ( Step S805).
  • the operation of the second dependency process for the second block 052 is illustrated as the second embodiment except that the reference block as a neighboring block is limited. This is exactly the same as shown in the flowchart of FIG. However, the operation of the first dependency process for the first block 051 is different from the case shown in the flowchart of FIG. 8 as the second embodiment. It is not referenced from the block. Therefore, as shown in the block configuration diagram of FIG. 13 and the flowchart of FIG. 15, it is not necessary to update the contents of the motion vector buffer 126 with the first dependence processing result. As shown in the flowchart of FIG. 14, in the fourth embodiment, the first dependency process and the second dependency process can be executed in parallel.
  • the dependency processing of the first block and the second block can be processed in parallel, so that the first, second, and third embodiments are the same. Compared with the case, the processing time can be further shortened.
  • the motion vector in addition to the second and third embodiments, the motion vector can be changed not only for the first block but also for the second block. Referring to the dependence processing result of the second block, the dependence processing of the first block is executed again.
  • the configuration example of the motion estimator in the fifth embodiment may be the same as the configuration of the motion estimator 208 shown in FIG. 6 as the second embodiment.
  • step S901 An example of an outline of the operation of the motion estimator 208 in the fifth embodiment is shown in the flowchart of FIG.
  • steps S101 and S103 in the flowchart of FIG. 2 all blocks are subjected to independent processing in parallel (steps S901 and S903), and then all the first steps are performed.
  • a first dependency process capable of changing the motion vector is performed in parallel for the block 051 (steps S902 and S904).
  • step S902 the motion vectors of both the first block 051 and the second block 052 can be referred to as neighboring blocks. Note that the motion vector of the first block 051 uses the result of the independent processing in step S901, not the result of step S902.
  • step S904 when all the first dependency processing relating to the first block is completed (yes in step S904), it is possible to change the motion vector for all the second blocks 052, not the second dependency processing that does not change the motion vector.
  • the first dependency process is performed in parallel (steps S905 and S906).
  • step S905 only the motion vector that is the processing result of the first dependency process related to the first block 051 in step S902 is used as the neighboring block.
  • the process again returns to the processing related to all the first blocks 051, and for the first block 051, refer to the processing result of step S 902 relating to the first block 051 and the processing result of step S 905 relating to the second block 051.
  • step S907 the second dependency process is performed (steps S907 and S908).
  • step S907 the second dependency process is performed instead of the first dependency process for all the first blocks 051, and the motion vector regarding the first block 051 is not changed.
  • step S908 When all the second dependent processes related to the first block 052 are completed (Yes in step S908), the motion estimation process is completed.
  • the first dependency process related to the first block 051 and the second block 052 is performed once, and then the second dependency process related to the first block is performed. It is also possible to repeat the process by further increasing the number of repetitions.
  • FIG. 17 is a schematic diagram for explaining an example of classifying blocks to be encoded into a plurality of types of blocks in the sixth embodiment.
  • the first block 051 the first block
  • the configuration example of the motion estimator in the sixth embodiment may be the same as the configuration of the motion estimator 208 shown in FIG. 6 as the second embodiment.
  • the first dependency processing units 227a and 227b perform dependency processing on the first block 051 and the second block 052, and the second dependency processing unit 228a. 228b may perform the dependency process related to the third block 053.
  • step S1001 An example of an outline of the operation of the motion estimator 208 in the sixth embodiment is shown in the flowchart of FIG.
  • steps S101 and S103 of the flowchart of FIG. 2 all blocks are subjected to independent processing in parallel (step S1001, step S1003), and then all the first steps are performed.
  • a first dependence process capable of changing the motion vector is performed for the block 051 (steps S1002 and S1004).
  • step S1002 referring to the third block 053, the first dependence process of the first block 051 is performed.
  • step S1004 when all the first dependency processing relating to the first block is completed (yes in step S1004), the first dependency processing capable of changing the motion vector is performed for all the second blocks 052 (steps S1005 and S1006).
  • step S1005 the first dependence process of the second block 052 is performed with reference to the first block 051 and the third block 053.
  • step 1007 the second dependence process of the third block 053 is performed with reference to the first block 051, the second block 052, and the third block 053.
  • the schematic diagram of FIG. 17 and the flowchart of FIG. 18 an example classified into three types of the first block 051, the second block 052, and the third block 053 is shown, but as described above, The number of classifications is not limited to the above, and the same processing can be performed even if the number of classifications is further increased.
  • the number of blocks whose motion vectors can be changed can be increased as compared with the second to fifth embodiments, so the second to fifth embodiments.
  • the encoding efficiency can be further improved as compared with the case of this form.
  • motion vector is shown as the data held in the motion vector buffer 126, other information such as encoding mode information may be further added and held. By using such a variety of information, it becomes possible to further improve the accuracy of the RD cost and improve the coding efficiency.
  • H.264 is used as an example of the dependency process.
  • An AMVP selection process and a merge mode determination process in a codec compliant with the H.265 standard have been shown.
  • the skip mode determination process is a target of the dependency process.
  • the present invention since high-performance parallel processing is possible while maintaining encoding efficiency, high-speed processing of high-resolution video can be realized, and the present invention can be applied to an imaging system or a transformer that requires high-resolution processing. It can be usefully applied to code systems and the like.

Abstract

画像を複数のブロックに分割してブロックごとに動きベクトルを含む動き情報を推定する動き推定器(108)に、無依存処理部(124a、124b、124c)、依存処理部(125)、動きベクトルバッファ(126)を備え、無依存処理部(124a、124b、124c)は、並列動作が可能であり、かつ、近傍ブロックの動き情報を用いることなく、参照画像と現画像とにより各ブロックの動きベクトルを探索して、動きベクトルバッファ(126)に記録し、依存処理部(125)は、動きベクトルバッファ(126)に保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を動きベクトルバッファ(126)に記録するとともに外部に出力する処理を行う。

Description

動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体
 本発明は、動画像符号化装置、動画像符号化方法および動画像符号化用プログラムに関し、特に、符号化効率を低下させずに高い並列処理効率で動作する動画像符号化装置、動画像符号化方法および動画像符号化用プログラムに関する。
 近年、動画像の解像度向上の要求が年々高まっており、それに伴って、符号化技術に関しても、MPEG(Moving Picture Experts Group)-2、H.264/MPEG-4 AVC(以下H.264と略記する)、H.265/HEVC(High Efficiency Video Coding)(以下H.265と略記する)、と圧縮効率を向上させる技術が次々に開発されてきた。これらの符号化方式は、フレーム間の動き補償予測を用いて情報を圧縮することによって高い符号化効率を達成している。H.265規格に基づいた動画像符号化装置の一例を図19に示す。
 図19に示すように、H.265規格に基づく動画像符号化装置は、通常、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、動き推定器008、ループフィルタ009、フレームバッファ010を備えて構成される。なお、非特許文献1のITU-T(International Telecommunication Union Telecommunication Standardization Sector) Recommendation H.265“High efficiency video  coding”には、H.265規格に基づく処理内容が詳細に記載されているので、ここでの各構成要素の詳細な説明は割愛する。
 H.265規格による動画像符号化処理は、CTB(Coding Tree Brock)と呼ばれる最大64×64画素のブロック単位で行われる。H.265規格における動き補償予測は、次の通りの技術である。入力画像として入力されてくる符号化対象フレームとフレームバッファ010に格納された符号化済みの参照フレームとの間の動き情報を用いて、動き補償予測器001において参照フレームの画像を補正する。そして、補正された画像(予測画像)と符号化対象となる現画像との差分情報であるフレーム間の動きを表す情報のみを符号化することによって、動画像情報を圧縮する。
 フレーム間の動きは、移動量を表す動きベクトルによって表現される。参照フレームと符号化対象フレーム間の動き情報を動き推定器008において算出する処理を動き推定と称している。動き推定の処理に当たっては、デコード画像に発生するノイズ量を抑えつつ、符号化する情報量も最小化することができる動き情報を算出することが重要である。このため、近年の動画像符号化装置においては、RD(Rate-Distortion)最適化と呼ばれる手法が広く用いられている。
 RD最適化手法においては、多数の動きベクトル候補に対して、J=D+λRで表されるレート歪みコストを算出し、該レート歪みコストが最小になるものを動きベクトルとして採用する。ここで、Dは差分画像に発生する歪み量、Rは動き情報の符号化で発生する符号量、λは画像の複雑さなどに依存する重み係数である。なお、動き情報には、後述する予測ベクトル情報とその動きベクトルとの差分、マージ情報を含む。
 空間的・時間的に近傍のブロック同士は、動き情報の相関が高いことから、H.265規格においては、動きベクトルの予測値(予測ベクトル)を近傍の動きベクトルから適応的に選択するAMVP(Adaptive Motion Vector Prediction)や、動き情報を近傍ブロックからコピーするマージモードを用いることによって、動き情報に必要な符号量Rを削減することができる。ここで、近傍ブロックとは、具体的には、図20に示すような符号化対象ブロックの空間近傍ブロック(A0、A1、B0、B1、B2)や時間近傍フレームの同位置ブロックなどであり、マージモードやAMVPに用いるブロックは、近傍ブロックのリストの中からエンコーダが任意に選択することができる。なお、図20は、符号化対象ブロックの空間的な近傍ブロックを説明するための模式図である。
 ただし、図20の左下の近傍ブロックA0のCTBは符号化対象CTBよりも後続の処理であるため、近傍ブロックA0の動き情報すなわち処理結果は、CTB内サブブロックの符号化時においてのみ参照される。そこで、以降の説明を簡単にするため、符号化処理対象の各ブロックは、左の近傍ブロックA1・左上の近傍ブロックB2・上の近傍ブロックB1・右上の近傍ブロックB0の各ブロックを参照するものとする。
 ここで、近傍ブロックの動き情報は、デコーダにおいて得られる情報と同一であることから、近傍ブロックリストのインデックスのみを符号化することによって動き情報を伝送することができ、符号量Rを削減することができる。動き情報には、マージモードを使用する場合はマージモードであるというフラグと参照ブロックのインデックスのみを含み、それ以外の場合は予測ベクトルで参照するブロックのインデックスと、予測ベクトルと動きベクトルとの差分情報とを含む。
 図19に示した動画像符号化装置の動き推定器008の構成例を図21に示す。図21に示す動き推定器008は、動きベクトル探索部020、AMVP選択部021、マージコスト算出部022および動き情報決定部023から構成されている。動きベクトル探索部020は、多数の動きベクトル候補についてブロックマッチングを行ってコストが最小となる暫定動きベクトルを決定する。AMVP選択部021は、動きベクトル符号量Rが最小となるように近傍ブロックの動きベクトルから予測ベクトルを選択する。マージコスト算出部022は、近傍ブロックの動き情報を用いてマージモードのレート歪みコストJを算出する。動き情報決定部023は、最終的な動き情報としてマージモードを用いるか否かを決定する。
 マージモードを用いる場合は、近傍ブロックの動きベクトルをコピーしたマージベクトルが符号化対象ブロックの動きベクトルとなり、マージモード以外の場合は、動き探索の結果である暫定動きベクトルがそのまま用いられる。符号化処理対象の或るブロックで決定された動き情報は他のブロックのAMVP選択やマージコスト算出に用いられる。AMVPやマージモードは、符号量削減に大きな効果があり、高符号化効率を得るためには適切に使用することが重要である。
 多数のベクトルのコストを比較する動き推定処理は、非常に演算量が多く、高速化が求められる。高速化には、多数のプロセッサコアを持つGPU(Graphic Processing Unit)などのメニ-コアプロセッサを用いた並列処理が特に有望である。
 関連する並列処理手法の一つにWPP(Wavefront Parallel Processing)がある。WPPによる並列処理の具体例が、非特許文献2のCheungらによる“Video coding on multicore graphics processors”に記載されている。WPPによる並列処理においては、図22に示すように、符号化対象フレームの各行において一つ上の上行から2ブロックずつ左にずれたブロックを符号化対象ブロックとして並列に処理することによって、左の近傍ブロックや上の近傍ブロックや右上の近傍ブロックの処理結果を参照ブロックとして参照可能としている。ここで、図22は、前記非特許文献2に記載のWPPによる並列処理の具体例を説明するための模式図である。
 また、特許文献1の特開2012-175424号公報「符号化処理装置および符号化処理方法」には、画像を複数の領域に分割し、分割された領域の境界に接しているブロックについては、当該ブロックの属する領域内のブロックの情報のみを用いることによって、各領域を並列処理するという技術が記載されている。
特開2012-175424号公報(第9-14頁)
ITU-T Recommendation H.265"High efficiency video  coding",Apr.2013. Cheung,Nagai-Man,et al."Video coding on multicore graphics processors",Signal Processing Magazine,IEEE 27.2(2010):79-89.
 動画像符号化時の並列処理においては、複数のプロセッサコアそれぞれを十分に稼働させるために多数のタスクを並列に処理可能な状態とすることが重要である。ここで、タスクとは、WPPのような並列処理の場合は各ブロックの処理を指し、前記特許文献1に記載の技術の場合は分割された各領域の処理を指す。複数のプロセッサコアを稼働させるためには、少なくともプロセッサコア数のタスクが必要である。また、各タスクの処理量が異なる場合には、タスク数がより多い方が各プロセッサコアへの処理量の配分を均等にし易い。したがって、GPUのような数千以上のプロセッサコアを持つメニ-コアプロセッサによる並列処理を行う場合には、非常に多くのタスクを並列に処理可能とすることが必要である。
 一方、動き推定の処理においては、前述のように、空間的相関性を利用して動き情報を圧縮することから、ブロック間には空間的なデータ依存関係があり、多数のブロックすなわち多数のタスクを並列処理することが難しいという課題がある。WPPによる並列処理の場合は、最大の並列処理数であっても、ブロック行数(4K解像度の場合でも34個)のタスク数しか並列に処理することができない。また、前記特許文献1に記載の技術の場合は、多数の領域(タスク)に分割すると、領域外のブロックを参照することができない、すなわち、マージモードやAMVPを適用することができないブロックが多くなり、符号化効率が低下するという課題がある。
(本発明の目的)
 本発明の目的は、前述のような問題を解決し、符号化効率を低下させることなく、多数のタスクを並列処理することが可能な動画像符号化装置、動画像符号化方法および動画像符号化用プログラムを提供することである。
 前述の課題を解決するため、本発明による動画像符号化装置、動画像符号化方法および動画像符号化用プログラムは、主に、次のような特徴的な構成を採用している。
 (1)本発明による動画像符号化装置は、画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動き推定処理手段を備えた動画像符号化装置であって、
 前記動き推定処理手段は、
 近傍ブロックの動き情報を用いることなくブロックごとの処理を行う無依存処理手段と、
 近傍ブロックの動き情報を用いてブロックごとの処理を行う依存処理手段と、
 各ブロックの処理結果である動き情報を保持する動き情報バッファと
 を備え、
 前記無依存処理手段は、
 任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報バッファに記録する動きベクトル探索手段を含んで構成され、
 前記依存処理手段は、
 前記動き情報バッファに保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する動作を行う
 ことを特徴とする。
  (2)本発明による動画像符号化方法は、画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動き推定処理ステップを有する動画像符号化方法であって、
 前記動き推定処理ステップとして、
 近傍ブロックの動き情報を用いることなくブロックごとの処理を行う無依存処理ステップと、
 近傍ブロックの動き情報を用いてブロックごとの処理を行う依存処理ステップと、
 各ブロックの処理結果である動き情報を保持する動き情報バッファリングステップと
 を有し、
 前記無依存処理ステップは、
 任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報バッファリングステップによって保持する動きベクトル探索ステップを有し、
 前記依存処理ステップは、
 前記動き情報バッファリングステップによって保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する処理を行う
 ことを特徴とする。
 (3)本発明による動画像符号化用プログラムは、前記(2)に記載の動画像符号化方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とする。
 本発明の動画像符号化装置、動画像符号化方法および動画像符号化用プログラムによれば、以下のような効果を奏することができる。
 動画像符号化の処理において、符号化効率の低下を抑えつつ、多数のタスクを並列処理することが可能になるので、処理を高速化することができる。
 さらに、既存の動画像処理装置に本発明の手法を適用するに当たって、エンコーダへの影響は、参照する近傍ブロックを任意に選択するための選択肢を一部限定するのみであり、デコーダについては変更する必要が一切なく、適用範囲を拡大することができる。
本発明による動画像符号化装置の第1の実施の形態における動き推定器の構成例を示すブロック構成図である。 図1に示した動き推定器における動き推定処理概要の一例を示すフローチャートである。 図1に示した動き推定器の無依存処理部における無依存処理の一例を示すフローチャートである。 図1に示した動き推定器の依存処理部における依存処理の一例を示すフローチャートである。 本発明による動画像符号化装置の第2の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類する例を説明するための模式図である。 本発明による動画像符号化装置の第2の実施の形態における動き推定器の構成例を示すブロック構成図である。 図6に示した動き推定器における動き推定処理概要の一例を示すフローチャートである。 図6に示した動き推定器の第2依存処理部における依存処理の一例を示すフローチャートである。 本発明による動画像符号化装置の第3の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類する一例を説明するための模式図である。 本発明による動画像符号化装置の第3の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類する他の例を説明するための模式図である。 本発明による動画像符号化装置の第3の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類する図9、図10とは異なる例を説明するための模式図である。 本発明による動画像符号化装置の第3の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類するさらに異なる例を説明するための模式図である。 本発明による動画像符号化装置の第4の実施の形態における動き推定器の構成例を示すブロック構成図である。 図13に示した動き推定器における動き推定処理概要の一例を示すフローチャートである。 図13に示した動き推定器の第1依存処理部における依存処理の一例を示すフローチャートである。 本発明による動画像符号化装置の第5の実施の形態における動き推定器における動き推定処理概要の一例を示すフローチャートである。 本発明による動画像符号化装置の第6の実施の形態において符号化対象のブロックを複数種類のブロックに分類する一例を説明するための模式図である。 本発明による動画像符号化装置の第6の実施の形態における動き推定器における動き推定処理概要の一例を示すフローチャートである。 H.265規格に基づいた動画像符号化装置の一例を示すブロック構成図である。 符号化対象ブロックの空間的な近傍ブロックを説明するための模式図である。 図19に示した動画像符号化装置の動き推定器の構成例を示すブロック構成図である。 非特許文献2に記載のWPPによる並列処理の具体例を説明するための模式図である。
 以下、本発明による動画像符号化装置、動画像符号化方法および動画像符号化用プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明による動画像符号化装置および動画像符号化方法について説明するが、かかる動画像符号化方法をコンピュータにより実行可能な動画像符号化用プログラムとして実施するようにしても良いし、あるいは、動画像符号化用プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。換言すれば、本発明は、ハードウェアの構成に限定されるものではなく、本発明の処理を、CPU(Central Processing Unit)に動画像符号化用プログラムを実行させることにより実現することも可能である。
 動画像符号化用プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
 また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
(本発明の特徴)
 本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、動画像符号化時において、近傍ブロックの処理結果を必須としない処理、つまり、ブロック間依存のない処理である動きベクトル探索などの処理と、近傍ブロックの動き情報を必須とする処理、つまり、ブロック間依存のある処理であるマージコスト算出・AMVP選択などの処理とを分離する。これによって、動き推定の中でも特に演算量が多い動きベクトル探索を高い並列性を有する並列処理とすることを可能にしていることを主要な特徴とする。
[第1の実施の形態]
 本第1の実施の形態においては、前述のように、近傍ブロックの処理結果を必須としない処理、つまり、ブロック間依存のない処理である動きベクトル探索処理を少なくとも含む無依存処理と、近傍ブロックの動き情報を必須とする処理、つまり、ブロック間依存のある処理であるマージコスト算出・AMVP選択などの処理を含む依存処理とを分離する。これによって、動き推定の中でも特に演算量が多い動きベクトル探索を高い並列性を有する並列処理とすることを可能にしていることを特徴とする。
(第1の実施の形態の構成の説明)
 次に、本発明による動画像符号化装置の構成例として第1の実施の形態の構成について図面を参照して詳細に説明する。第1の実施の形態の動画像符号化装置は、入力画像として入力されてくる符号化対象フレームと符号化済みの参照フレームとの間の動き情報を算出する動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第1の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備える。かつ、この画像符号化装置は、入力画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動き推定処理手段として、動き推定器008の代わりに、動き推定器108を備えて構成される。
 本第1の実施の形態における動き推定器108の構成例を図1に示す。動き推定器108は、前述のように、図19に示す動画像符号化装置の動き推定部008を代替することができるものであるが、無依存処理部124a、124b、124c、依存処理部125、動きベクトルバッファ126を少なくとも備えて構成される。図1には、無依存処理部124a、124b、124cの個数を3個とする場合を示しているが、かかる場合に限るものではなく、2個以上の複数個から構成されていれば良い。
 無依存処理部124a、124b、124cそれぞれは、近傍にある他のブロック(近傍ブロック)の動き情報を用いることなくブロックごとの処理を行う無依存処理手段である。無依存処理手段は、任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなっており、図1に示す無依存処理部124a、124b、124cの3つの無依存処理手段からなる構成例においては、3つのブロックごとに並列処理が可能な場合を示している。一方、依存処理部125は、近傍にある他のブロックの動き情報(近傍ブロック)を用いてブロックごとの処理を行う依存処理手段である。また、動きベクトルバッファ126は、各ブロックごとの処理結果である動きベクトルを含む動き情報を保持する動き情報バッファすなわち動き情報保持手段である。
 また、無依存処理部124a、124b、124cそれぞれには、動きベクトル探索部120a、120b、120cが含まれて構成されている。動きベクトル探索部120a、120b、120cそれぞれは、参照画像と現画像とを入力として、例えばブロックマッチングにより各ブロックの動きベクトル探索を実施する動きベクトル探索手段である。図1に示す構成例においては、動きベクトル探索部120a、120b、120cの3つの動きベクトル探索手段は、3ブロックの動きベクトル探索を並列に処理することができ、処理結果を各ブロックの暫定動きベクトルとして出力する。動きベクトル探索部120a、120b、120cそれぞれが出力する各ブロックの暫定動きベクトルは動きベクトルバッファ126に保持される。
 依存処理部125は、動きベクトルバッファ126に保持された近傍ブロックの動き情報を参照して、符号化処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合には、変更した動き情報を動きベクトルバッファ126に記録する動作を行うものである。依存処理部125は、AMVP選択部121、マージコスト算出部122、動き情報決定部123を少なくとも含んで構成される。AMVP選択部121は、動きベクトルバッファ126に保持された近傍ブロックの動きベクトルから、各ブロックにおける動き情報符号量Rを最小化することができる予測ベクトルを選択し、選択した結果に基づいてAMVPのレート歪みコストJ1を算出してAMVPコストとして出力する予測ベクトル選択手段である。
 マージコスト算出部122は、動きベクトルバッファ126に保持された近傍ブロックの動きベクトルから、マージベクトル候補を算出し、さらに、参照画像と現画像とを用いて、各マージベクトル候補のレート歪みコストJ2を算出し、算出したレート歪みコストJ2が最小になるマージベクトル候補を選択し、最小となったレート歪みコストJ2をマージコストとして出力するマージコスト算出手段である。動き情報決定部123は、マージコスト算出部122が算出したマージベクトル候補のレート歪みコストJ2(マージコスト)とAMVP選択部121の算出結果のAMVPのレート歪みコストJ1(AMVPコスト)とを比較した結果に基づいて、符号化処理対象ブロックをマージモードに設定するか否かを決定する動き情報決定手段である。動き情報決定部123は、マージコストがAMVPコストよりも小さければ、当該ブロックをマージモードと決定し、動きベクトルバッファ126の内容をマージモードに更新する。
(第1の実施の形態の動作の説明)
 次に、本第1の実施の形態として図1に示した動き推定器108の動作について図2から図4に示すフローチャートを参照しながら詳細に説明する。図2は、図1に示した動き推定器108における動き推定処理概要の一例を示すフローチャートである。図2のフローチャートに示すように、まず、全てのブロックについて並列に無依存処理を行い(ステップS101、ステップS103)、しかる後、全てのブロックについてステップS101の処理結果を用いて依存処理を行う(ステップS102、ステップS104)。
 次に、図2のステップS101とステップS102とのそれぞれの動作について、図3のフローチャートと図4のフローチャートとを用いて詳細に説明する。図3は、図1に示した動き推定器108の無依存処理部124a、124b、124cにおける無依存処理(図2のステップS101)の一例を示すフローチャートであり、図4は、図1に示した動き推定器108の依存処理部125における依存処理(図2のステップS102)の一例を示すフローチャートである。
 図2のステップS101の無依存処理については、図3のフローチャートに示すように、まず、動きベクトル探索部120a、120b、120cそれぞれが各ブロックの動きベクトル探索を並列に行う(ステップS201)。動きベクトル探索の結果として得られる暫定動きベクトルは、動きベクトルバッファ126に書き込まれる。
 次に、図2のステップS102の依存処理の詳細について説明する。依存処理については、図4のフローチャートに示す各ブロックの処理が逐次処理で実行される。各ブロックにおいて、まず、AMVP選択部121が動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルを用いてAMVP候補を列挙し、動き情報符号量Rを最も少なくすることができる予測ベクトルを選択する(ステップS301)。動き情報符号量Rが最も少なくなる予測ベクトルを用いたレート歪みコストJ1がAMVPコストとなる。次に、マージコスト算出部122がマージコストを算出する(ステップS302)。マージコストの算出においては、動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルからマージベクトル候補を列挙し、列挙した各マージベクトル候補のレート歪みコストJ2を算出して、最小となるレート歪みコストJ2(マージコスト)を求める。
 次いで、ステップS301およびステップS302それぞれにおいて求めたAMVPコストとマージコストとを動き情報決定部123にて比較する(ステップS303)。動き情報決定部123は、マージコストの方が小さければ(ステップS303のyes)、動き情報としてマージモードであることを設定し(ステップS304)、マージベクトルを当該ブロックの動きベクトルとして動きベクトルバッファ126の内容を更新する(ステップS305)。逆に、AMVPコストの方が小さければ(ステップS303のno)、動き情報決定部123は、動き情報として予測ベクトルを設定する(ステップS306)。つまり、AMVPコストの方が小さい場合は、動きベクトルバッファ126の内容の更新は行われない。
 なお、以上の説明においては、依存処理部125における依存処理を逐次的に実施する場合について一例として説明したが、近傍ブロックとの依存制約を守れば、前述したWPPのように、複数の依存処理部を用いて並列処理を行うことも可能である。
(第1の実施の形態の効果の説明)
 次に、本第1の実施の形態の効果について説明する。本第1の実施の形態においては、動き推定の中でも演算量の多い動きベクトル探索を、無依存処理として並列に配置した複数個の動きベクトル探索部120a、120b、120cにおいて全ブロックについて並列に処理することができる。これにより、メニーコアプロセッサを用いた場合に、より多くのプロセッサコアを有効に活用することができ、処理時間を短縮することができる。また、動きベクトル探索の結果、近傍ブロックのマージ判定の結果を用いてAMVP選択、マージ選択を行うことができるため、符号化効率の低下を抑えることができる。
[第2の実施の形態]
 本第2の実施の形態においては、符号化対象のブロックを2種類に分類し、第1のブロックに対する依存処理を行う場合には、前述した第1の実施の形態と同様に、動きベクトルの更新を行うが、第2のブロックに対する依存処理を行う場合には、動きベクトルの更新を実施しない。これによって、依存処理であるAMVP選択、マージコスト算出も並列処理を行うことを可能にすることを特徴とする。
 つまり、本第2の実施の形態においては、全ブロックの無依存処理が終了した後、無依存処理の結果を用いて、第1のブロックに分類したブロックに関する依存処理を行い、続いて、無依存処理の結果と第1のブロックの依存処理の結果とを用いて、第2のブロックに分類したブロックに関する依存処理を行う。
 例えば、図5に示すように、互いのブロックの配置関係が左・左上・上・右上のいずれのブロックにもならないブロックからなる第1のブロック051の群とそれ以外の残りのブロックからなる第2のブロック052の群との2つの群に符号化対象画像の全ブロックを分類する。ここで、図5は、第2の実施の形態において符号化対象のブロックを第1のブロックと第2のブロックとに分類する例を説明するための模式図である。図5は、第1のブロック051の群に含まれるブロックの近傍ブロックである、当該ブロックの周辺(上下左右斜め)を囲む合計8個のブロックが、全て第2のブロック052の群に含まれるブロックによって構成されている例を示している。
 処理対象のブロックに関する依存処理であるAMVP選択・マージコスト算出の処理に当たっては、当該ブロックの近傍ブロックのうち左・左上・上・右上の各ブロックの動きベクトルを参照する。従って、図5における第1のブロック051は、近傍ブロックのうち第2のブロック052の動きベクトルのみを参照することが分かる。そのため、第1のブロック051の依存処理による動きベクトルの更新は、他の第1のブロック051の依存処理には影響を与えない。よって、第1のブロック051の依存処理は全て並列に実施することができる。さらに、図5における第2のブロック052の依存処理については、動きベクトルを更新しないようにすることによって、近傍ブロックとして第1ブロック051および第2のブロック052の区別なく参照しても、他の第2のブロック052の依存処理に影響を与えることがない。よって、第2のブロック052の依存処理も全て並列に実行することができる。
(第2の実施の形態の構成の説明)
 次に、本発明による動画像符号化装置の第2の実施の形態の構成について詳細に説明する。第2の実施の形態の動画像符号化装置についても、第1の実施の形態における動画像符号化装置と同様、動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第2の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備え、かつ、動き推定器008の代わりに動き推定器208を備えて構成される。
 本第2の実施の形態における動き推定器208の構成例を図6に示す。動き推定器208は、無依存処理部124a、124b、124c、第1依存処理部227a、227b、第2依存処理部228a、228b、動きベクトルバッファ126を少なくとも備えて構成される。無依存処理部124a、124b、124cおよび動きベクトルバッファ126は第1の実施の形態として図1に示した動き推定器108と全く同様であり、以下では、図1に示した動き推定器108の依存処理部125とは異なる構成要素である第1依存処理部227a、227b、第2依存処理部228a、228bについて説明する。
 つまり、図6に示す動き推定器208は、図1に示した動き推定器108の依存処理部125の代わりに、第1のブロック051の依存処理を行う第1依存処理部227a、227bと第2のブロック052の依存処理を行う第2依存処理部228a、228bとを配置して構成される。なお、図6には、第1依存処理部227a、227b、第2依存処理部228a、228bそれぞれの個数を2個ずつ備えた場合を示しているが、かかる場合に限るものではなく、それぞれが任意の個数であって良い。第1依存処理部227a、227b、第2依存処理部228a、228bそれぞれの内部構成は、図1の依存処理部125の場合と同様、AMVP選択部121、マージコスト算出部122、動き情報決定部123を少なくとも含んでそれぞれ構成されている。
 第1依存処理部227a、227b(第1依存処理手段)における第1依存処理と第2依存処理部228a、228b(第2依存処理手段)における第2依存処理とは、無依存処理部124a、124b、124cにおける無依存処理の結果である動きベクトルを変更することが可能であるか否かが異なっている。第1依存処理部227a、227bにおける第1依存処理は、動きベクトルバッファ126に保持された近傍ブロックの動き情報の参照結果に基づいて、処理対象のブロックの動き情報を更新して動きベクトルバッファ126に記録するとともに外部に出力する際に、当該処理対象のブロックの動き情報のうち動きベクトルをも含んで更新することができる。そのため、第1依存処理では、無依存処理部124a、124b、124cにおける動きベクトル探索の結果とは異なる動きベクトルを動き情報として出力することができる。一方、第2依存処理部228a、228bにおける第2依存処理は、動きベクトルバッファ126に保持された近傍ブロックの動き情報の参照結果に基づいて、処理対象のブロックの動き情報を更新して動きベクトルバッファ126に記録するとともに外部に出力する際に、当該処理対象のブロックの動き情報のうち動きベクトルについては更新しない。そのため、第2依存処理では、無依存処理部124a、124b、124cにおける動きベクトル探索の結果と同一の動きベクトルを動き情報として出力する。
(第2の実施の形態の動作の説明)
 次に、本第2の実施の形態として図6に示した動き推定器208の動作について図7に示すフローチャートを参照しながら詳細に説明する。図7は、図6に示した動き推定器208における動き推定処理概要の一例を示すフローチャートである。図7のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS401、ステップS403)、しかる後、全ての第1のブロック051についてステップS401の処理結果を用いて第1依存処理を行う(ステップS402、ステップS404)。
 次いで、第1のブロックに関する第1依存処理を全て終了すると(ステップS404のyes)、全ての第2のブロック052について第2依存処理を行う(ステップS405、S406)。第2のブロック052に関する第2依存処理を全て終了すると(ステップS406のyes)、動き推定処理が完了になる。ここで、ステップS402の第1依存処理とステップS405の第2依存処理とのそれぞれは、複数個配置されている第1依存処理部227a、227b、第2依存処理部228a、228bそれぞれを用いて、複数個のブロックを並列に処理することができる。
 第1依存処理部227a、227bの第1依存処理については、第1の実施の形態として図4に示した依存処理のフローチャートと全く同一の動作を全てのブロックではなく第1のブロック051に対して行う。ただし、第1のブロック051の処理において近傍ブロックとして参照されるブロックは、図5に例示したように、動き情報の変更がない第2のブロック052のみであり、第1依存処理部227a、227bは、並列に動作することが可能である。
 次に、図7のステップS405の第2依存処理の動作について、図8のフローチャートを用いて詳細に説明する。図8は、図6に示した動き推定器208の第2依存処理部228a、228bにおける第2依存処理(図7のステップS405)の一例を示すフローチャートである。なお、前述のように、第2依存処理部228a、228bそれぞれにおける第2依存処理においては第2のブロック052に関する依存処理を行う。
 各第2のブロックについて、まず、AMVP選択部121が、第1の実施の形態として図4に示したステップS301の場合と同様、動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルを用いてAMVP候補を列挙し、動き情報符号量Rを最も少なくすることができる予測ベクトルを選択する(ステップS501)。動き情報符号量Rが最も少なくなる予測ベクトルを用いたレート歪みコストJ1がAMVPコストとなる。
 次に、マージコスト算出部122は、動きベクトルバッファ126に保持されている該当の第2のブロック052の暫定動きベクトルが、マージモードにおけるマージベクトルと同一であるか否かを判断する(ステップS502)。当該第2のブロック052の暫定動きベクトルがマージベクトルと同一であった場合には(ステップS502のyes)、マージコストを算出する(ステップS503)。マージコストの算出においては、第1の実施の形態として図4に示したステップS302の場合と同様、動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルからマージベクトル候補を列挙し、列挙した各マージベクトル候補のレート歪みコストJ2を算出して、最小となるレート歪みコストJ2(マージコスト)を求める。
 次いで、ステップS501およびステップS503それぞれにおいて求めたAMVPコストとマージコストとを動き情報決定部123にて比較して(ステップS504)、マージコストの方が小さければ(ステップS504のyes)、第1の実施の形態として図4に示したステップS304の場合と同様、動き情報としてマージモードであることを設定する(ステップS505)。ただし、第1の実施の形態の図4の場合とは異なり、第2のブロック052における第2依存処理の結果は他のブロックから参照されないため、動きベクトルバッファ126を更新する処理は行わない。
 また、ステップS502において、当該第2のブロック052の暫定動きベクトルがマージベクトルと同一ではなかった場合には(ステップS502のno)、ステップS504においてAMVPコストの方が小さかった場合(ステップS504のno)と同様、マージコストは算出されず、動き情報にマージモードが設定されることはない。さらに、暫定動きベクトルから変更することもないので、動きベクトルバッファ126に対する動きベクトルの更新も行われない。つまり、第1の実施の形態として図4に示したステップS306の場合と同様、動き情報として予測ベクトルを設定する動作のみを行う(ステップS507)。
(第2の実施の形態の効果の説明)
 本第2の実施の形態においては、符号化対象のブロックを第1のブロック051と第2のブロック052との2種類のブロックに分類して、それぞれ、複数個配置した第1依存処理部227a、227bと、第2依存処理部228a、228bとにより、並列に処理する。これにより、無依存処理のみならず、依存処理も並列に処理することが可能になり、処理時間を第1の実施の形態の場合よりも短縮することができる。
[第3の実施の形態]
 H.265規格においては、前述のように、動画像符号化装置(エンコーダ)が、マージモード判定・AMVP(予測ベクトル)選択に用いる近傍ブロックを候補内から任意に選択することができる。そのため、第1のブロック群において参照するブロックを一部制限することによって、並列処理を可能としながら、マージモードによる動きベクトルの変更が可能な第1のブロックの個数を増加することができる。つまり、例えば、第2の実施の形態として図6に示した動き推定器208の第1依存処理部227a、227bの第1依存処理手段は、処理対象のブロックの近傍ブロックとして、図5に例示したような第2のブロック052の群に含まれるブロックのみを任意に選択して参照するように設定して、第1のブロック051の群に含まれるブロックの処理を並列に行う構成とする。これによって、第1のブロック051に含まれるブロックの個数を増加させることができる。
 例えば、マージモード判定・AMVP選択において、参照を制限するブロックとして、第1のブロック051のそれぞれにおける左上ブロックの参照を禁止することにより、第1のブロック051と第2のブロック052とを図9に示すように設定することも可能である。ここで、図9は、第3の実施の形態において符号化対象のブロックを第1のブロック051と第2のブロック052とに分類する一例を説明するための模式図である。図9に示すように、第1のブロック051の参照ブロックは、左上のブロックを除くと第2のブロック052のみとなる。これにより、第2の実施の形態における図5の場合に比して、第1のブロック051の個数を増加させることができる。
 さらに、第1のブロック051の群において、左上に加えて、右上のブロックの参照も禁止することにより、図10に示すように第1のブロック051と第2のブロック052とを設定することもできる。あるいは、第1のブロック051の群において、左ブロックの参照を禁止することによって、図11に示すように第1のブロック051と第2のブロック052とを設定することもできる。また、図12に示すように第1のブロック051と第2のブロック052とを設定して、第1のブロック051の一部については左上・上・右上のブロックの参照を禁止、他の一部については左・左上・右上のブロックの参照を禁止、さらに他の一部については左・上のブロックの参照を禁止というように、第1のブロック051ごとに参照を禁止するブロックを変更することもできる。
 なお、本第3の実施の形態における動画像符号化装置の構成や動作については、第2の実施の形態の場合と同様であり、動き推定処理を行う動き推定器も図6に示した動き推定器208と同様の構成を用いて構わない。ただし、本第3の実施の形態においては、第2のブロック052に関するAMVP選択・マージコスト算出の処理において、第2の実施の形態の場合とは異なり、近傍ブロックのうち参照禁止ブロックとしてあらかじめ設定された特定のブロックを参照することはない。ここで、特定のブロックとは、例えば図9に示した第1のブロック051、第2のブロック052の分類例の場合について説明すると、第1のブロック051の左上のブロックを意味している。
(第3の実施の形態の効果の説明)
 本第3の実施の形態においては、第1のブロック051が近傍ブロックに関して参照することが可能なブロックに制限を設定することによって、第2の実施の形態の場合に比べて、マージモード判定により動きベクトルを変更することができるブロック(第1のブロック051)の個数を増加することが可能になる。このため、符号化効率を向上することができる。また、第1のブロック051、第2のブロック052のいずれも並列処理が可能であるため、処理時間の増加を抑えることができる。
[第4の実施の形態]
 本第4の実施の形態においては、第2・第3の実施の形態における第1のブロック051のみならず、第2のブロック052についても、参照可能なブロックを制限することにより、第1のブロック051と第2のブロック052とをさらに並列に処理することを可能とすることを特徴とする。つまり、本第4の実施の形態においては、第2のブロック052を処理する第2依存処理において、第1のブロック051の参照を禁止し、動きベクトルが変化しない第2のブロック052のみの参照を許可するようにする。例えば、図10に示したブロック分類例の場合、第2のブロック052を処理する第2依存処理においては、第2のブロック052すなわち動きベクトルが変化しない左上と右上のブロックのみを参照可能とする。
(第4の実施の形態の構成の説明)
 本第4の実施の形態の動画像符号化装置についても、第1の実施の形態における動画像符号化装置と同様、動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第4の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備え、かつ、動き推定器008の代わりに動き推定器308を備えて構成される。
 本第4の実施の形態における動き推定器308の構成例を図13に示す。動き推定器308は、第2の実施形態として図6に示した動き推定器208の場合と同様の機能をそれぞれに有する無依存処理部124a、124b、124c、第2依存処理部228a、228bおよび動きベクトルバッファ126を備える。さらに、動き推定器308は、図6に示した動き推定器208の場合の第1依存処理部227a、227bとは異なる動作を行う第1依存処理部327a、327bを少なくとも備えて構成される。ここで、第1依存処理部327a、327bの第1依存処理手段は、処理対象のブロックを処理する際に、図6における第1依存処理部227a、227bの場合と同様、近傍ブロックのうち第2のブロック052の群に含まれるブロックのみを参照して、第1のブロック051の群に含まれる各ブロックを並列に処理する動作を行う。一方、第2依存処理部228a、228bの第2依存処理手段は、処理対象のブロックを処理する際に、図6における第2依存処理部228a、228bの場合とは異なり、近傍ブロックのうち第2のブロック052の群に含まれるブロックを参照して、第2のブロック052の群に含まれる各ブロックを並列に処理する動作を行う。而して、第1依存処理部327a、327bの第1依存処理手段と第2依存処理部228a、228bの第2依存処理手段とが並列に動作することを可能にしている。
(第4の実施の形態の動作の説明)
 次に、本第4の実施の形態として図13に示した動き推定器308の動作について図14に示すフローチャートを参照しながら詳細に説明する。図14は、図13に示した動き推定器308における動き推定処理概要の一例を示すフローチャートである。図14のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行う(ステップS701、ステップS703)。しかる後、全ての第1のブロック051についてステップS101の処理結果を用いて第1依存処理を行うとともに(ステップS702、ステップS704)、並行して、全ての第2のブロック052について図7のフローチャートのステップS401、S406と同様の第2依存処理を行う(ステップS705、ステップS706)。ただし、ステップS705の第2依存処理において、近傍ブロックとして参照されるブロックは、前述のように、第2ブロック052の群に含まれるブロックのみに制限されている。
 つまり、無依存処理および第2依存処理における動作は、第2依存処理の参照ブロックが第2のブロック052のみに制限されている以外は、第2の実施の形態として図8に示した処理と全く同一である。しかし、第1依存処理における動作は、第1のブロック051に関する第1依存処理の結果が他のブロックからは参照されることがない。そのため、第2の実施の形態として図8に示した処理とは異なり、動きベクトルバッファ126を更新する必要はない。
 次に、図14のステップS702の第1依存処理の動作について、図15のフローチャートを用いて詳細に説明する。図15は、図13に示した動き推定器308の第1依存処理部327a、327bにおける第1依存処理(図14のステップS702)の一例を示すフローチャートである。第1依存処理部327a、327bそれぞれにおける第1依存処理においては、前述のように、第1のブロック051に関する依存処理を行う。
 各第1のブロックについて、まず、AMVP選択部121が、第1の実施の形態として図4に示したステップS301の場合と同様、動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルを用いてAMVP候補を列挙し、動き情報符号量Rを最も少なくすることができる予測ベクトルを選択する(ステップS801)。動き情報符号量Rが最も少なくなる予測ベクトルを用いたレート歪みコストJ1がAMVPコストとなる。
 次に、マージコスト算出部122が、マージコストを算出する(ステップS802)。マージコストの算出においては、第1の実施の形態として図4に示したステップS302の場合と同様、動きベクトルバッファ126に保持されている近傍ブロックの動きベクトルからマージベクトル候補を列挙し、列挙した各マージベクトル候補のレート歪みコストを算出して、最小となるレート歪みコストJ2(マージコスト)を求める。
 次いで、ステップS801およびステップS802それぞれにおいて求めたAMVPコストとマージコストとを動き情報決定部123にて比較する(ステップS803)。動き情報決定部123は、マージコストの方が小さければ(ステップS803のyes)、第1の実施の形態として図4に示したステップS304の場合と同様、動き情報としてマージモードであることを設定する(ステップS804)。ただし、第1の実施の形態とは異なり、第1のブロック051における第1依存処理の結果は他のブロックから参照されないため、動きベクトルバッファ126を更新する必要はない。
 また、ステップS803においてAMVPコストの方が小さかった場合(ステップS803のno)には、第1の実施の形態として図4に示したステップS306の場合と同様、動き情報として予測ベクトルを設定する(ステップS805)。
 以上のように、本第4の実施の形態においては、第2のブロック052に対する第2依存処理の動作は、近傍ブロックとしての参照ブロックに制限がある以外は、第2の実施の形態として図8のフローチャートに示した場合と全く同一である。しかし、第1のブロック051に対する第1依存処理の動作は、第2の実施の形態として図8のフローチャートに示した場合とは異なり、第1のブロック051に対する第1依存処理の結果が他のブロックからは参照されることがない。そのため、図13のブロック構成図、図15のフローチャートに示したように、第1依存処理結果によって動きベクトルバッファ126の内容を更新する必要がない。また、図14のフローチャートに示したように、本第4の実施の形態においては、第1依存処理と第2依存処理とを並列に実行することが可能である。
(第4の実施の形態の効果の説明)
 本第4の実施の形態においては、第1のブロックと第2のブロックとのそれぞれの依存処理を並列に処理することが可能となるため、第1・第2・第3の実施の形態の場合と比較して、処理時間をさらに短縮することができる。
[第5の実施の形態]
 本第5の実施の形態においては、第2・第3の実施の形態の場合に加えて、第1のブロックのみならず、第2のブロックについても、動きベクトルを変更可能とし、さらに、第2のブロックの依存処理結果を参照して、再び、第1のブロックの依存処理を実行することを特徴としている。なお、本第5の実施の形態における動き推定器の構成例は、第2の実施の形態として図6に示した動き推定器208と全く同一の構成で構わない。
(第5の実施の形態の動作の説明)
 本第5の実施の形態における動き推定器208の動作概要の一例を図16のフローチャートに示す。図16のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS901、ステップS903)、しかる後、全ての第1のブロック051について動きベクトルの変更が可能な第1依存処理を並列に行う(ステップS902、ステップS904)。ここで、ステップS902においては、近傍ブロックとして第1のブロック051と第2のブロック052との両方の動きベクトルを参照可能とする。なお、第1のブロック051の動きベクトルは、ステップS902の結果ではなく、ステップS901における無依存処理の結果を用いる。
 次いで、第1のブロックに関する第1依存処理を全て終了すると(ステップS904のyes)、全ての第2のブロック052について、動きベクトルを変更しない第2依存処理ではなく、動きベクトルの変更が可能な第1依存処理を並列に行う(ステップS905、S906)。ここで、ステップS905においては、近傍ブロックとして、ステップS902の第1のブロック051に関する第1依存処理の処理結果である動きベクトルのみを用いる。しかる後、再度、全ての第1のブロック051に関する処理に戻り、第1のブロック051について、第1のブロック051に関するステップS902の処理結果と第2のブロック051に関するステップS905の処理結果とを参照して、第2依存処理を行う(ステップS907、ステップS908)。すなわち、ステップS907においては、全ての第1のブロック051に関し、第1依存処理ではなく、第2依存処理を行うこととし、第1のブロック051に関する動きベクトルの変更は行わない。
 第1のブロック052に関する第2依存処理を全て終了すると(ステップS908のyes)、動き推定処理が完了になる。なお、図16のフローチャートにおいては、第1のブロック051・第2のブロック052に関する第1依存処理を1回行った後、第1のブロックに関する第2依存処理を行う場合を例示したが、かくのごとき処理の繰り返し回数をさらに増やして繰り返すようにしても良い。
(第5の実施の形態の効果の説明)
 本第5の実施の形態においては、第1のブロック051、第2のブロック052のいずれに対しても、少なくとも一度は動きベクトルを変更することを可能とすることによって、第2・第3の実施の形態の場合に比して、符号化効率をさらに向上させることができる。
[第6の実施の形態]
 本第6の実施の形態においては、図17に示すように、符号化対象のブロックを、第2ないし第5の実施の形態の場合のように、2種類のみのブロックに分類するのではなく、3種類以上のブロックに分類することを特徴とする。ここで、図17は、第6の実施の形態において符号化対象のブロックを複数種類のブロックに分類する一例を説明するための模式図であり、図17においては、第1のブロック051、第2のブロック052、第3のブロック053の3種類に分類した場合を例示している。なお、本第6の実施の形態における動き推定器の構成例は、第2の実施の形態として図6に示した動き推定器208と全く同一の構成であっても構わない。例えば図6に示した動き推定器208を用いる場合には、第1依存処理部227a、227bが、第1のブロック051と第2のブロック052とに関する依存処理を行い、第2依存処理部228a、228bが、第3のブロック053に関する依存処理を行うようにすれば良い。
(第6の実施の形態の動作の説明)
 本第6の実施の形態における動き推定器208の動作概要の一例を図18のフローチャートに示す。図18のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS1001、ステップS1003)、しかる後、全ての第1のブロック051について動きベクトルの変更が可能な第1依存処理を行う(ステップS1002、ステップS1004)。ここで、ステップS1002においては、第3のブロック053を参照して、第1のブロック051の第1依存処理を行う。
 次いで、第1のブロックに関する第1依存処理を全て終了すると(ステップS1004のyes)、全ての第2のブロック052について動きベクトルの変更が可能な第1依存処理を行う(ステップS1005、S1006)。ここで、ステップS1005においては、第1のブロック051および第3のブロック053を参照して、第2のブロック052の第1依存処理を行う。
 しかる後、全ての第3のブロック053について動きベクトルの変更を行わない第2依存処理を行う(ステップS1007、S1008)。ここで、ステップ1007においては、第1のブロック051、第2のブロック052および第3のブロック053を参照して、第3のブロック053の第2依存処理を行う。なお、図17の模式図および図18のフローチャートにおいては、第1のブロック051・第2のブロック052・第3のブロック053の3種類に分類した例を示したが、前述のように、かくのごとき分類数に限るものではなく、分類数をさらに増やしても同様の処理を行うことができる。
(第6の実施の形態の効果の説明)
 本第6の実施の形態においては、第2ないし第5の実施の形態の場合に比して、動きベクトルを変更可能とするブロック数を増加することができるため、第2ないし第5の実施の形態の場合よりも符号化効率をさらに向上させることができる。
(その他の実施の形態)
 前述したAMVP選択処理においては、動き情報の符号化コストのみを算出して動きベクトルとの差分が最も小さい近傍ブロックのベクトルを選択する場合について説明したが、さらに、予測ベクトル周辺の候補ベクトルについて改めてレート歪みコストを計算し直すことにすれば、符号化効率の向上を見込むことができる。また、かくのごとき処理を繰り返すことにより、すなわち、近傍ブロックのベクトルを使用した動きベクトル探索を複数回繰り返す処理を行うことにより、さらに符号化効率を向上させることが可能である。
 また、動きベクトルバッファ126に保持するデータとして動きベクトルのみを対象として示しているが、符号化モード情報等の他の情報をさらに加えて保持するようにしても良い。かくのごとき多彩な情報を用いることにより、RDコストの精度をさらに上げて、符号化効率を向上させることが可能になる。
 また、前述した各実施の形態においては、依存処理の例として、H.265規格に準拠のコーデックにおけるAMVP選択処理とマージモード判定処理とを示したが、例えばH.264規格準拠のコーデックにおいては、さらに、スキップモード判定処理が依存処理の対象となる。
 本発明によれば、符号化効率を保ちつつ高性能の並列処理が可能であるので、高解像度映像の高速処理を実現することができ、本発明を高解像度処理が要求される撮像システムやトランスコードシステムなどに有用に適用することができる。
 以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
 この出願は、2013年12月4日に出願された日本出願特願2013-250926を基礎とする優先権を主張し、その開示の全てをここに取り込む。
001   動き補償予測器
002   直交変換器
003   量子化器
004   符号化器
005   逆量子化器
006   逆直交変換器
007   画面内予測器
008   動き推定器
009   ループフィルタ
010   フレームバッファ
020   動きベクトル探索部
021   AMVP選択部
022   マージコスト算出部
023   動き情報決定部
051   第1のブロック
052   第2のブロック
053   第3のブロック
108   動き推定器
120a  動きベクトル探索部
120b  動きベクトル探索部
120c  動きベクトル探索部
121   AMVP選択部
122   マージコスト算出部
123   動き情報決定部
124a  無依存処理部
124b  無依存処理部
124c  無依存処理部
125   依存処理部
126   動きベクトルバッファ
208   動き推定器
227a  第1依存処理部
227b  第1依存処理部
228a  第2依存処理部
228b  第2依存処理部
308   動き推定器
327a  第1依存処理部
327b  第1依存処理部

Claims (10)

  1.  画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動き推定処理手段を備えた動画像符号化装置であって、
     前記動き推定処理手段は、
     近傍ブロックの動き情報を用いることなくブロックごとの処理を行う無依存処理手段と、
     近傍ブロックの動き情報を用いてブロックごとの処理を行う依存処理手段と、
     各ブロックの処理結果である動き情報を保持する動き情報バッファと
     を備え、
     前記無依存処理手段は、
     任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報バッファに記録する動きベクトル探索手段を含んで構成され、
     前記依存処理手段は、
     前記動き情報バッファに保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する動作を行う
     ことを特徴とする動画像符号化装置。
  2.  前記依存処理手段は、
     前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルをも含んで更新することができる第1依存処理手段と、
     前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルについては更新しない第2依存処理手段と
     を備えることを特徴とする請求項1に記載の動画像符号化装置。
  3.  前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
     前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックのみを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行い、
     前記第2依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行う
     ことを特徴とする請求項2に記載の動画像符号化装置。
  4.  前記第1依存処理手段は、
     前記第1のブロック群に含まれるブロックの近傍ブロックとして当該ブロックの周辺を囲む8個のブロックが全て前記第2のブロック群に含まれるブロックからなっているように分類される場合には、処理対象のブロックの近傍ブロックとして当該ブロックの周辺を囲む前記第2のブロック群に含まれるブロックのみを選択して参照するか、
     または、
     前記第1のブロック群に含まれるブロックの近傍ブロックとして当該ブロックの周辺を囲む8個のブロックが全て前記第2のブロック群に含まれるブロックからなっているように分類されるか否かに関わらず、処理対象のブロックの近傍ブロックとして前記第2のブロック群に含まれるブロックのみを任意に選択して参照する
     ことを特徴とする請求項3に記載の動画像符号化装置。
  5.  前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
     前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行い、
     前記第2依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行う
     ことにより、前記第1依存処理手段と前記第2依存処理手段とが並列に動作することを特徴とする請求項2に記載の動画像符号化装置。
  6.  前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
     前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行った後、さらに、近傍ブロックのうち前記第1のブロック群に含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行い、
     しかる後、前記第2依存処理手段が、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行う
     ことを特徴とする請求項2に記載の動画像符号化装置。
  7.  前記依存処理手段は、
     前記動きベクトルバッファに保持された近傍ブロックの動きベクトルから各ブロックにおける動き情報符号量を最小化することができる予測ベクトルを選択し、選択結果に基づいて、レート歪みコストを算出してAMVP(Adaptive Motion Vector Prediction)コストとして出力する予測ベクトル選択処理手段と、
     前記動きベクトルバッファに保持された近傍ブロックの動きベクトルから得られるマージベクトル候補それぞれのレート歪みコストを算出し、最小となるレート歪みコストをマージコストとして出力するマージコスト算出手段と、
     前記マージコストと前記AMVPコストとの比較結果に基づいて、処理対象のブロックをマージモードとするか否かを決定する動き情報決定手段と
     を含んで構成されていることを特徴とする請求項1ないし6のいずれかに記載の動画像符号化装置。
  8.  画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動画像符号化方法であって、
     前記動き情報の推定は、
     近傍ブロックの動き情報を用いることなくブロックごとの処理を行うこと、
     近傍ブロックの動き情報を用いてブロックごとの処理を行うこと、
     各ブロックの処理結果である動き情報を保持すること、
     を有し、
     前記近傍ブロックの動き情報を用いることなくブロックごとの処理を行うことにおいては、
     任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報を保持することにより保持し、
     前記近傍ブロックの動き情報を用いてブロックごとの処理を行うことにおいては、
     前記各ブロックの処理結果である前記動き情報を保持することによって保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する処理を行う
     ことを特徴とする動画像符号化方法。
  9.  前記近傍ブロックの動き情報を用いてブロックごとの処理を行うことは、
     前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルをも含んで更新可能とし、
     前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルについては更新しないこと
     を有することを特徴とする請求項8に記載の動画像符号化方法。
  10.  請求項8または9のいずれかに記載の動画像符号化方法を、コンピュータによって実行せしめる動画像符号化用プログラムが格納された非一時的なコンピュータ可読媒体。
PCT/JP2014/002745 2013-12-04 2014-05-26 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体 WO2015083300A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015551369A JP6344398B2 (ja) 2013-12-04 2014-05-26 動画像符号化装置、動画像符号化方法および動画像符号化用プログラム
US15/038,626 US10136154B2 (en) 2013-12-04 2014-05-26 Video coding apparatus, video coding method, and non-transitory computer readable medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013250926 2013-12-04
JP2013-250926 2013-12-04

Publications (1)

Publication Number Publication Date
WO2015083300A1 true WO2015083300A1 (ja) 2015-06-11

Family

ID=53273092

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/002745 WO2015083300A1 (ja) 2013-12-04 2014-05-26 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体

Country Status (3)

Country Link
US (1) US10136154B2 (ja)
JP (1) JP6344398B2 (ja)
WO (1) WO2015083300A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017010073A1 (ja) * 2015-07-10 2017-01-19 日本電気株式会社 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体
WO2019065444A1 (ja) * 2017-09-26 2019-04-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160014415A1 (en) * 2014-07-08 2016-01-14 Mediatek Inc. Method and apparatus for performing wave-front parallel encoding procedure with constraint on coding mode and/or quantization parameter selection
GB2539211A (en) * 2015-06-08 2016-12-14 Canon Kk Enhanced coding and decoding using intra block copy mode
US10440378B1 (en) 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
CN110650346B (zh) * 2019-09-26 2022-04-22 西安邮电大学 一种3d-hevc深度图运动估计并行实现方法及结构
CN111770345B (zh) * 2020-07-22 2022-02-22 腾讯科技(深圳)有限公司 编码单元的运动估计方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07177519A (ja) * 1993-12-20 1995-07-14 Kyocera Corp 動きベクトル検出方法
JP2000050281A (ja) * 1998-08-03 2000-02-18 Custom Technol Kk 動きベクトル検出方法および装置、記録媒体
WO2012086829A1 (ja) * 2010-12-21 2012-06-28 日本電気株式会社 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
JP2013121167A (ja) * 2011-12-09 2013-06-17 Jvc Kenwood Corp 画像符号化装置、画像符号化方法及び画像符号化プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126278A1 (en) * 2006-11-29 2008-05-29 Alexander Bronstein Parallel processing motion estimation for H.264 video codec
US8098733B2 (en) * 2008-03-10 2012-01-17 Neomagic Corp. Multi-directional motion estimation using parallel processors and pre-computed search-strategy offset tables
JP2012175424A (ja) 2011-02-22 2012-09-10 Panasonic Corp 符号化処理装置および符号化処理方法
US9143795B2 (en) * 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07177519A (ja) * 1993-12-20 1995-07-14 Kyocera Corp 動きベクトル検出方法
JP2000050281A (ja) * 1998-08-03 2000-02-18 Custom Technol Kk 動きベクトル検出方法および装置、記録媒体
WO2012086829A1 (ja) * 2010-12-21 2012-06-28 日本電気株式会社 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
JP2013121167A (ja) * 2011-12-09 2013-06-17 Jvc Kenwood Corp 画像符号化装置、画像符号化方法及び画像符号化プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017010073A1 (ja) * 2015-07-10 2017-01-19 日本電気株式会社 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体
JPWO2017010073A1 (ja) * 2015-07-10 2018-04-26 日本電気株式会社 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体
US10462479B2 (en) 2015-07-10 2019-10-29 Nec Corporation Motion picture encoding device, motion picture encoding method, and storage medium storing motion picture encoding program
WO2019065444A1 (ja) * 2017-09-26 2019-04-04 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US11677975B2 (en) 2017-09-26 2023-06-13 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method

Also Published As

Publication number Publication date
JP6344398B2 (ja) 2018-06-20
US20160295225A1 (en) 2016-10-06
US10136154B2 (en) 2018-11-20
JPWO2015083300A1 (ja) 2017-03-16

Similar Documents

Publication Publication Date Title
JP6344398B2 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化用プログラム
RU2720560C1 (ru) Устройство и способ кодирования изображения, устройство и способ декодирования изображения и носители данных
TWI669953B (zh) 用於視訊編解碼的基於模型的運動向量推導
US11902563B2 (en) Encoding and decoding method and device, encoder side apparatus and decoder side apparatus
JP2023036862A5 (ja)
JP2019024241A (ja) 方法、装置、及びプログラム
JP2015119502A (ja) 複数の動きベクトル・プレディクタを使用して動きベクトルを推定する方法、装置、エンコーダ、デコーダ及びデコーディング方法
KR20130030181A (ko) 움직임 벡터 예측기를 이용한 움직임 벡터 부호화/복호화 방법 및 장치
CN113596459A (zh) 编解码方法方法、装置及设备
JP6962193B2 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラムを記憶する記録媒体
JP7437426B2 (ja) インター予測方法および装置、機器、記憶媒体
JP6992815B2 (ja) 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
WO2021056205A1 (zh) 一种视频处理方法、设备及存储介质
JP2012120108A (ja) 補間画像生成装置及びプログラム、並びに、動画像復号装置及びプログラム
WO2011142221A1 (ja) 符号化装置、および、復号装置
JP2016025432A (ja) 動画像符号化装置、動画像符号化方法、及びプログラム
JP2016058874A (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: 14868051

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15038626

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2015551369

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14868051

Country of ref document: EP

Kind code of ref document: A1