WO2015083300A1 - 動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体 - Google Patents
動画像符号化装置、動画像符号化方法および非一時的なコンピュータ可読媒体 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods 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
Description
本発明の目的は、前述のような問題を解決し、符号化効率を低下させることなく、多数のタスクを並列処理することが可能な動画像符号化装置、動画像符号化方法および動画像符号化用プログラムを提供することである。
前記動き推定処理手段は、
近傍ブロックの動き情報を用いることなくブロックごとの処理を行う無依存処理手段と、
近傍ブロックの動き情報を用いてブロックごとの処理を行う依存処理手段と、
各ブロックの処理結果である動き情報を保持する動き情報バッファと
を備え、
前記無依存処理手段は、
任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報バッファに記録する動きベクトル探索手段を含んで構成され、
前記依存処理手段は、
前記動き情報バッファに保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する動作を行う
ことを特徴とする。
前記動き推定処理ステップとして、
近傍ブロックの動き情報を用いることなくブロックごとの処理を行う無依存処理ステップと、
近傍ブロックの動き情報を用いてブロックごとの処理を行う依存処理ステップと、
各ブロックの処理結果である動き情報を保持する動き情報バッファリングステップと
を有し、
前記無依存処理ステップは、
任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報バッファリングステップによって保持する動きベクトル探索ステップを有し、
前記依存処理ステップは、
前記動き情報バッファリングステップによって保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する処理を行う
ことを特徴とする。
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、動画像符号化時において、近傍ブロックの処理結果を必須としない処理、つまり、ブロック間依存のない処理である動きベクトル探索などの処理と、近傍ブロックの動き情報を必須とする処理、つまり、ブロック間依存のある処理であるマージコスト算出・AMVP選択などの処理とを分離する。これによって、動き推定の中でも特に演算量が多い動きベクトル探索を高い並列性を有する並列処理とすることを可能にしていることを主要な特徴とする。
本第1の実施の形態においては、前述のように、近傍ブロックの処理結果を必須としない処理、つまり、ブロック間依存のない処理である動きベクトル探索処理を少なくとも含む無依存処理と、近傍ブロックの動き情報を必須とする処理、つまり、ブロック間依存のある処理であるマージコスト算出・AMVP選択などの処理を含む依存処理とを分離する。これによって、動き推定の中でも特に演算量が多い動きベクトル探索を高い並列性を有する並列処理とすることを可能にしていることを特徴とする。
次に、本発明による動画像符号化装置の構成例として第1の実施の形態の構成について図面を参照して詳細に説明する。第1の実施の形態の動画像符号化装置は、入力画像として入力されてくる符号化対象フレームと符号化済みの参照フレームとの間の動き情報を算出する動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第1の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備える。かつ、この画像符号化装置は、入力画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動き推定処理手段として、動き推定器008の代わりに、動き推定器108を備えて構成される。
次に、本第1の実施の形態として図1に示した動き推定器108の動作について図2から図4に示すフローチャートを参照しながら詳細に説明する。図2は、図1に示した動き推定器108における動き推定処理概要の一例を示すフローチャートである。図2のフローチャートに示すように、まず、全てのブロックについて並列に無依存処理を行い(ステップS101、ステップS103)、しかる後、全てのブロックについてステップS101の処理結果を用いて依存処理を行う(ステップS102、ステップS104)。
次に、本第1の実施の形態の効果について説明する。本第1の実施の形態においては、動き推定の中でも演算量の多い動きベクトル探索を、無依存処理として並列に配置した複数個の動きベクトル探索部120a、120b、120cにおいて全ブロックについて並列に処理することができる。これにより、メニーコアプロセッサを用いた場合に、より多くのプロセッサコアを有効に活用することができ、処理時間を短縮することができる。また、動きベクトル探索の結果、近傍ブロックのマージ判定の結果を用いてAMVP選択、マージ選択を行うことができるため、符号化効率の低下を抑えることができる。
本第2の実施の形態においては、符号化対象のブロックを2種類に分類し、第1のブロックに対する依存処理を行う場合には、前述した第1の実施の形態と同様に、動きベクトルの更新を行うが、第2のブロックに対する依存処理を行う場合には、動きベクトルの更新を実施しない。これによって、依存処理であるAMVP選択、マージコスト算出も並列処理を行うことを可能にすることを特徴とする。
次に、本発明による動画像符号化装置の第2の実施の形態の構成について詳細に説明する。第2の実施の形態の動画像符号化装置についても、第1の実施の形態における動画像符号化装置と同様、動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第2の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備え、かつ、動き推定器008の代わりに動き推定器208を備えて構成される。
次に、本第2の実施の形態として図6に示した動き推定器208の動作について図7に示すフローチャートを参照しながら詳細に説明する。図7は、図6に示した動き推定器208における動き推定処理概要の一例を示すフローチャートである。図7のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS401、ステップS403)、しかる後、全ての第1のブロック051についてステップS401の処理結果を用いて第1依存処理を行う(ステップS402、ステップS404)。
本第2の実施の形態においては、符号化対象のブロックを第1のブロック051と第2のブロック052との2種類のブロックに分類して、それぞれ、複数個配置した第1依存処理部227a、227bと、第2依存処理部228a、228bとにより、並列に処理する。これにより、無依存処理のみならず、依存処理も並列に処理することが可能になり、処理時間を第1の実施の形態の場合よりも短縮することができる。
H.265規格においては、前述のように、動画像符号化装置(エンコーダ)が、マージモード判定・AMVP(予測ベクトル)選択に用いる近傍ブロックを候補内から任意に選択することができる。そのため、第1のブロック群において参照するブロックを一部制限することによって、並列処理を可能としながら、マージモードによる動きベクトルの変更が可能な第1のブロックの個数を増加することができる。つまり、例えば、第2の実施の形態として図6に示した動き推定器208の第1依存処理部227a、227bの第1依存処理手段は、処理対象のブロックの近傍ブロックとして、図5に例示したような第2のブロック052の群に含まれるブロックのみを任意に選択して参照するように設定して、第1のブロック051の群に含まれるブロックの処理を並列に行う構成とする。これによって、第1のブロック051に含まれるブロックの個数を増加させることができる。
本第3の実施の形態においては、第1のブロック051が近傍ブロックに関して参照することが可能なブロックに制限を設定することによって、第2の実施の形態の場合に比べて、マージモード判定により動きベクトルを変更することができるブロック(第1のブロック051)の個数を増加することが可能になる。このため、符号化効率を向上することができる。また、第1のブロック051、第2のブロック052のいずれも並列処理が可能であるため、処理時間の増加を抑えることができる。
本第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の実施の形態の動画像符号化装置についても、第1の実施の形態における動画像符号化装置と同様、動き推定器の内部構成を除いて、図19に示したH.265規格準拠の動画像符号化装置における各構成要素と全く同様の構成からなる。すなわち、第4の実施の形態の動画像符号化装置は、動き補償予測器001、直交変換器002、量子化器003、符号化器004、逆量子化器005、逆直交変換器006、画面内予測器007、ループフィルタ009、フレームバッファ010を備え、かつ、動き推定器008の代わりに動き推定器308を備えて構成される。
次に、本第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の群に含まれるブロックのみに制限されている。
本第4の実施の形態においては、第1のブロックと第2のブロックとのそれぞれの依存処理を並列に処理することが可能となるため、第1・第2・第3の実施の形態の場合と比較して、処理時間をさらに短縮することができる。
本第5の実施の形態においては、第2・第3の実施の形態の場合に加えて、第1のブロックのみならず、第2のブロックについても、動きベクトルを変更可能とし、さらに、第2のブロックの依存処理結果を参照して、再び、第1のブロックの依存処理を実行することを特徴としている。なお、本第5の実施の形態における動き推定器の構成例は、第2の実施の形態として図6に示した動き推定器208と全く同一の構成で構わない。
本第5の実施の形態における動き推定器208の動作概要の一例を図16のフローチャートに示す。図16のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS901、ステップS903)、しかる後、全ての第1のブロック051について動きベクトルの変更が可能な第1依存処理を並列に行う(ステップS902、ステップS904)。ここで、ステップS902においては、近傍ブロックとして第1のブロック051と第2のブロック052との両方の動きベクトルを参照可能とする。なお、第1のブロック051の動きベクトルは、ステップS902の結果ではなく、ステップS901における無依存処理の結果を用いる。
本第5の実施の形態においては、第1のブロック051、第2のブロック052のいずれに対しても、少なくとも一度は動きベクトルを変更することを可能とすることによって、第2・第3の実施の形態の場合に比して、符号化効率をさらに向上させることができる。
本第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の実施の形態における動き推定器208の動作概要の一例を図18のフローチャートに示す。図18のフローチャートに示すように、まず、図2のフローチャートのステップS101、S103と同様、全てのブロックについて並列に無依存処理を行い(ステップS1001、ステップS1003)、しかる後、全ての第1のブロック051について動きベクトルの変更が可能な第1依存処理を行う(ステップS1002、ステップS1004)。ここで、ステップS1002においては、第3のブロック053を参照して、第1のブロック051の第1依存処理を行う。
本第6の実施の形態においては、第2ないし第5の実施の形態の場合に比して、動きベクトルを変更可能とするブロック数を増加することができるため、第2ないし第5の実施の形態の場合よりも符号化効率をさらに向上させることができる。
前述したAMVP選択処理においては、動き情報の符号化コストのみを算出して動きベクトルとの差分が最も小さい近傍ブロックのベクトルを選択する場合について説明したが、さらに、予測ベクトル周辺の候補ベクトルについて改めてレート歪みコストを計算し直すことにすれば、符号化効率の向上を見込むことができる。また、かくのごとき処理を繰り返すことにより、すなわち、近傍ブロックのベクトルを使用した動きベクトル探索を複数回繰り返す処理を行うことにより、さらに符号化効率を向上させることが可能である。
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に記載の動画像符号化装置。 - 前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックのみを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行い、
前記第2依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行う
ことを特徴とする請求項2に記載の動画像符号化装置。 - 前記第1依存処理手段は、
前記第1のブロック群に含まれるブロックの近傍ブロックとして当該ブロックの周辺を囲む8個のブロックが全て前記第2のブロック群に含まれるブロックからなっているように分類される場合には、処理対象のブロックの近傍ブロックとして当該ブロックの周辺を囲む前記第2のブロック群に含まれるブロックのみを選択して参照するか、
または、
前記第1のブロック群に含まれるブロックの近傍ブロックとして当該ブロックの周辺を囲む8個のブロックが全て前記第2のブロック群に含まれるブロックからなっているように分類されるか否かに関わらず、処理対象のブロックの近傍ブロックとして前記第2のブロック群に含まれるブロックのみを任意に選択して参照する
ことを特徴とする請求項3に記載の動画像符号化装置。 - 前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行い、
前記第2依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第2のブロック群に含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行う
ことにより、前記第1依存処理手段と前記第2依存処理手段とが並列に動作することを特徴とする請求項2に記載の動画像符号化装置。 - 前記動き推定処理手段の処理対象画像の全ブロックを第1のブロック群と第2のブロック群とに分類し、
前記第1依存処理手段は、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行った後、さらに、近傍ブロックのうち前記第1のブロック群に含まれるブロックを参照して、前記第2のブロック群に含まれる各ブロックを並列に処理する動作を行い、
しかる後、前記第2依存処理手段が、処理対象のブロックを処理する際に、近傍ブロックのうち前記第1のブロック群と前記第2のブロック群とに含まれるブロックを参照して、前記第1のブロック群に含まれる各ブロックを並列に処理する動作を行う
ことを特徴とする請求項2に記載の動画像符号化装置。 - 前記依存処理手段は、
前記動きベクトルバッファに保持された近傍ブロックの動きベクトルから各ブロックにおける動き情報符号量を最小化することができる予測ベクトルを選択し、選択結果に基づいて、レート歪みコストを算出してAMVP(Adaptive Motion Vector Prediction)コストとして出力する予測ベクトル選択処理手段と、
前記動きベクトルバッファに保持された近傍ブロックの動きベクトルから得られるマージベクトル候補それぞれのレート歪みコストを算出し、最小となるレート歪みコストをマージコストとして出力するマージコスト算出手段と、
前記マージコストと前記AMVPコストとの比較結果に基づいて、処理対象のブロックをマージモードとするか否かを決定する動き情報決定手段と
を含んで構成されていることを特徴とする請求項1ないし6のいずれかに記載の動画像符号化装置。 - 画像を複数のブロックに分割し、分割されたブロックごとに動きベクトルを含む動き情報を推定する動画像符号化方法であって、
前記動き情報の推定は、
近傍ブロックの動き情報を用いることなくブロックごとの処理を行うこと、
近傍ブロックの動き情報を用いてブロックごとの処理を行うこと、
各ブロックの処理結果である動き情報を保持すること、
を有し、
前記近傍ブロックの動き情報を用いることなくブロックごとの処理を行うことにおいては、
任意に設定したブロック数ずつ全てのブロックに対して並列に処理することが可能な構成からなるとともに、参照画像と現画像とを入力として、各ブロックの動きベクトルを探索して、前記動き情報を保持することにより保持し、
前記近傍ブロックの動き情報を用いてブロックごとの処理を行うことにおいては、
前記各ブロックの処理結果である前記動き情報を保持することによって保持された近傍ブロックの動き情報を参照して、処理対象のブロックの動き情報の変更の是非を判定し、動き情報を変更する必要があると判定した場合、変更した動き情報を前記動き情報バッファに記録するとともに外部に出力する処理を行う
ことを特徴とする動画像符号化方法。 - 前記近傍ブロックの動き情報を用いてブロックごとの処理を行うことは、
前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルをも含んで更新可能とし、
前記動き情報バッファに保持された近傍ブロックの動き情報を参照し、参照結果に基づいて、処理対象のブロックの動き情報を更新して前記動き情報バッファに記録するとともに外部に出力する際に、前記処理対象のブロックの動き情報のうち動きベクトルについては更新しないこと
を有することを特徴とする請求項8に記載の動画像符号化方法。 - 請求項8または9のいずれかに記載の動画像符号化方法を、コンピュータによって実行せしめる動画像符号化用プログラムが格納された非一時的なコンピュータ可読媒体。
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)
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)
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)
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)
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 |
-
2014
- 2014-05-26 JP JP2015551369A patent/JP6344398B2/ja not_active Expired - Fee Related
- 2014-05-26 WO PCT/JP2014/002745 patent/WO2015083300A1/ja active Application Filing
- 2014-05-26 US US15/038,626 patent/US10136154B2/en not_active Expired - Fee Related
Patent Citations (4)
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)
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 |