Symbolization device
Patent Information
- Application Number
- JP2024153800
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2010-10-01
- Filing Date
- 2024-09-06
- Publication Date
- 2025-11-26
- Estimated Expiration
- 2031-09-30
AI Technical Summary
Existing video compression systems require high bit rates for maintaining desired quality, despite using motion vector competition techniques, exceeding the capacity of transmission media.
A nested entropy coding structure is employed to select motion vector predictors from ordered candidate sets, optimizing coding efficiency by leveraging non-random distributions and syntax elements, while maintaining spatial and temporal independence.
The system reduces bit rate requirements for video transmission, ensuring high-quality decoding without temporal or spatial dependency issues, and enhances error resilience.
Abstract
Description
[Technical Field]
[0001] There are no related applications cross-referenced to this case.
[0002] The present invention relates to a method for generating a set of motion vector candidates. [Background technology]
[0003] Modern video transmission and display systems, especially those supporting high-resolution content, require significant data compression to display visually acceptable moving images. This is because the transmission medium cannot transmit an uncompressed sequence of video frames fast enough to allow the displayed image to be perceived by the human eye as continuous moving images. At the same time, to display visually acceptable moving images, the compression techniques used should not unduly sacrifice image quality by discarding excessive frame data.
[0004] To achieve these two conflicting goals, video compression coding standards such as MPEG and H.264 exploit the temporal redundancy of video frame sequences. In other words, in most video sequences of human interest, adjacent frames often show the same objects or features. These same objects or features then move slightly from frame to frame, either due to the movement of the objects within the captured scene (resulting in local motion within the frame), or the movement of the camera capturing the scene (resulting in global motion), or both.
[0005] Video compression standards use motion estimation to define regions in an image (which may correspond to objects) and associate them with motion vectors that indicate the frame-to-frame movement of the content in each region. This avoids redundant coding and transmission of objects or patterns that appear in two or more consecutive frames, even though their location differs only slightly between the successive frames. Motion vectors can be represented by translational models or many other models that approximate the actual motion of a video camera, such as rotation, translation, or magnification. Motion estimation is therefore the process of calculating and encoding motion vectors instead of repeatedly encoding the same information in successive frames.
[0006] A motion vector may refer to the entire image, but more often it refers to a small region within the image. The small region within the image may be a rectangular block, an arbitrary shape, the boundary of an object, or even an individual pixel. There are various methods for detecting motion vectors. One well-known method is the block matching method. In the block matching method, the current image is divided into rectangular pixel blocks (4x4 pixels, 4x8 pixels, 8x8 pixels, 16x16 pixels, etc.), and the pixel block of a reference image that best matches the pixel block is searched for in a predetermined search area of a subsequent frame, and the motion vector (or displacement vector) of each pixel block is predicted.
[0007] As suggested by the above discussion, the use of motion vectors improves the coding efficiency of a particular block in an image by allowing the block to be coded only with respect to the motion vector pointing to a corresponding block in another frame and the "residual" or difference between the current block and the reference block. Therefore, the goal is to determine the motion vector for the block so that the difference that needs to be coded is minimized. Therefore, there are many variations on block matching, which differ in the definition of block size and location, search method, matching criteria between blocks in the current frame and the reference frame, or some other aspect.
[0008] In traditional motion compensation, an encoder performs motion prediction and signals motion vectors as part of the bitstream. The bits spent on transmitting motion vectors can consume a significant portion of the overall bit budget, especially in low-bitrate applications. Recently, motion vector competition (MVC) techniques have been proposed to reduce the amount of motion information in compressed bitstreams. MVC improves the coding of motion vector data by differentially encoding the motion vector itself with respect to a motion vector predictor and a differential motion vector. A motion vector predictor is typically selected by the encoder from a number of candidates to optimize rate-distortion. The motion vector candidates consist of already-coded motion vectors of neighboring blocks within the same frame and / or a subset of motion vectors in a previous frame. In other words, the use of motion vectors and differentials improves the coding efficiency of block data by eliminating information redundancy between successive frames. At the same time, the coding of motion vectors can exploit redundancy in situations where the motion vector does not change significantly between successive frames by identifying an optimal prediction from a limited set of already-coded candidates, thereby minimizing the bit length of the differential. The prediction set typically includes both spatial motion vector neighbors and temporally co-located motion vectors, and may also include spatiotemporal vectors.
[0009] However, even when vector competitive techniques are used to encode video, the bit rate required to maintain the desired quality is often too high for the transmission medium used to transmit the video to the decoder. Therefore, there is a need for improved coding systems for video transmission.
[0010] The above and other objects, features, and advantages of the present invention will be more readily understood by considering the following detailed description of the invention in conjunction with the accompanying drawings. [Prior art documents] [Non-patent literature]
[0011] [Non-Patent Document 1] Frank Bossen, Philipp Kosse, "Simplified motion vector coding method", Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11 2nd Meeting: Geneva, CH, 21-28 July, 2010, [JCTVC-B094] Summary of the Invention [Problem to be solved by the invention]
[0012] Even when vector competition techniques are used to encode video, the bit rate required to maintain the desired quality is often too high for the transmission medium used to transmit the video to the decoder. Therefore, there is a need for improved coding systems for video transmission. [Means for solving the problem]
[0013] A preferred embodiment is an encoding device for encoding a motion vector of a target block in an image, the encoding device including: a process for identifying a first block adjacent to the target block; a process for identifying a second block adjacent to the target block; a process for determining a motion vector of the first block and a motion vector of the second block; and a process for generating a motion vector predictor candidate set including at least one of the motion vector of the first block and the motion vector of the second block, wherein when the motion vector of the first block is equal to the motion vector of the second block, the motion vector predictor candidate set includes the motion vector of the first block and the motion vector of the second block. the process of excluding one motion vector from the candidate predictor motion vector set so that only one motion vector is included, not both; the process of determining whether a motion vector located in the time direction can be used as a predictor motion vector for the target block; the process of including a motion vector of a block in another image in the candidate predictor motion vector set as a result of determining that a motion vector located in the time direction can be used as a predictor motion vector for the target block; the process of generating a flag indicating whether a motion vector located in the time direction can be used as a predictor motion vector; and the process of selecting a motion vector from the candidate predictor motion vector set as the predictor motion vector for the target block. [Effects of the Invention]
[0014] The improvement to the coding system for video transmission ensures that even when vector competition techniques are used to code video, the bit rate required to maintain a desired quality is not too high for the transmission medium used to transmit the video to a decoder. [Brief explanation of the drawings]
[0015] [Figure 1A] 1 illustrates a schematic representation of motion vector conflicts. [Figure 1B] 1 illustrates a schematic representation of motion vector conflicts. [Figure 2]1 shows an example of a motion vector encoding / decoding system. [Figure 3] 1 shows a nested entropy coding structure. [Figure 4] A system utilizing the nested entropy coding structure shown in FIG. [Figure 5A] 1 shows an example of an encoder capable of trimming the set of motion vector candidates. [Figure 5B] 6 shows an example of a method for trimming the set of candidate motion vectors used by the encoder of FIG. [Figure 6] 10 illustrates, in outline, another embodiment for encoding temporally co-located motion vectors in a motion vector candidate set. DETAILED DESCRIPTION OF THE INVENTION
[0016] 1A and 1B, the motion vector of a candidate block (shown as a shaded area) in a current frame (T=0) points to a shaded area in a subsequent frame (T=1). a , V x , V y , and ,V z In this example, the motion vector V a is the co-located motion vector in the previous frame (T=-1) and points to block A in the current frame. x , V y , and ,V z are pre-encoded motion vectors in the current frame, pointing to blocks X, Y, and Z in the subsequent frame (T=1), respectively. Figure 1A also shows blocks A', X', Y', and Z', which are the blocks pointed to by the motion vectors when the motion vectors are used to encode the candidate blocks.
[0017] As shown in Figure 1B, using the motion vector competition (MVC) method, the difference V d The motion vector V is calculated so as to minimize the code length of z is selected. In this case, only a single component (lower) of the vector needs to have a value of "1". All other differential motion vectors either need to code two components or need a larger value for the single component.
[0018] The above description is a simplification. Therefore, blocks of different sizes may be used, each block may represent a single pixel, and more motion vectors may be included in the candidate set. For example, all previously calculated motion vectors in the current frame may be included in the candidate set, as well as any motion vectors calculated in the previous frame. Furthermore, the candidate set may include any desired number of motion vectors that are useful for capturing large and sudden movements in a scene.
[0019] Continuing with the above example, with reference to FIG. z In a straightforward approach, the encoder 10 assigns a value to each candidate motion vector in a table of symbols 14. This relies on a variable length entropy coding method such as Huffman or arithmetic coding, and takes the form: Motion vector candidate symbols V a 0 V x 10 V y 110 V z 1110 Note that none of the above symbols are prefixes of other symbols. Therefore, in this example, decoder 12 can accurately analyze the received bitstream by pausing when it receives a "0" in the received bitstream and refer to the corresponding table 16 to decode the received bitstream. Furthermore, the encoder and decoder preferably collect statistics while encoding and decoding the bitstream to reorganize the assignment of symbols to candidate motion vectors in each of tables 14 and 16, e.g., to always assign the shortest symbols to the most frequent motion vectors. This process, commonly referred to as entropy coding, typically results in significant lossless compression of the bitstream. Encoder 10 and decoder 12 use the same technique to build and update tables 14 and 16, respectively, which are initialized at the beginning of the bitstream. This ensures that, for all symbols, the table 16 used to encode a symbol is the same as the table used to decode it.
[0020] Even with entropy coding, the system shown in Figure 2 can incur significant overhead when transmitting signals indicating which prediction is selected from a set of motion vector candidates. This is especially true when the number of predictions is large. However, using more predictions can improve the coding efficiency of differential motion vectors. Additional techniques can be employed to further reduce the overhead of transmitting signals indicating which prediction is selected.
[0021] First, the set of motion vector predictor candidates may be trimmed to remove duplicated vectors. Two motion vectors are duplicated if their horizontal values, vertical values, and reference indices are equal. The term "duplicated vector" is a term having an equivalent meaning to "duplicated motion vector," "identical vector," or "identical motion vector." For example, in FIG. 1A, vector V x , Vy Since V is the same vector, trimming can be performed on one of these motion vectors. As a result, the largest symbol in the table, "1110," can be deleted. Secondly, knowing the size of the trimmed motion vector predictor set means that the last bit of the last symbol in the set can be omitted. For example, in the above example, V x , V y The result is a trim on one side of the The last symbol is "110". For this symbol "110", the bit arrangement is If the sequence "11" is distinct from all other preceding symbols stored in the table, then "110" may simply be encoded as the bit sequence "11" and the decoder will determine that there are no more symbols based on the size of the trimmed set.
[0022] The addition of these two techniques may significantly reduce the overhead of transmitting signals indicating the selected motion vector predictor. However, using these techniques makes the entropy decoding of the motion vector predictor dependent on the motion prediction set. This means that accurate analysis of the bitstream is not possible until the complete motion prediction set is available and correctly constructed. This constraint severely impacts the decoder's error resilience, resulting in two drawbacks. The first drawback is temporal dependency: if an image is damaged or lost, decoding of subsequent images may fail during the analysis phase. The second drawback is spatial dependency: if a particular region of an image is damaged, decoding of subsequent regions within that image may fail during the analysis phase.
[0023] This can be a serious problem: if motion vector data for a previous or current frame is lost but a complete set of candidate motion vectors is required to be reconstructed, the decoder will not even be able to parse the bitstream until an independently coded frame arrives. This is a more serious problem than simply being unable to accurately decode the parsed data due to the loss of motion vectors, differential motion vectors, and the information used to code the differentials, because in the latter case, it would still be possible to decode any parsed data received subsequently in the bitstream that is independent of the lost data. However, once the decoder is no longer able to parse the bitstream, it has no way to decode subsequent symbols.
[0024] Although counterintuitive, the tradeoff between error resilience and overhead is not insurmountable. The inventors have further discovered that, similar to signaling a motion vector from a candidate set, improved coding efficiency can theoretically be achieved by signaling a motion vector from a collection of ordered candidate sets. This improved coding efficiency not only supports motion vector trimming and its serial use with truncated unary codes, but can also effectively replace these techniques. That is, spatial and temporal independence can be maintained when performing bitstream analysis without trimming duplicate motion vector candidates or truncating the longest bit-length symbols.
[0025] Specifically, referring to FIG. 3, an encoder or decoder utilizes a nested entropy coding structure in which one of a plurality of coded symbols 18 is assigned to each of a plurality of entropy-coded candidate sets of motion vectors, such as individual VLC tables 20. Note that a particular VLC table 20 may contain a different set of motion vectors than the other VLC tables 20. That is, a particular motion vector included in one VLC table 20 need not be included in all VLC tables 20. The encoder may signal one of the symbols 18 corresponding to one of the VLC tables 20 (candidate sets) whose signaled motion vectors have the highest frequency and, therefore, the shortest code length. The coded symbols 18 identifying each candidate set may themselves be entropy coded, as desired, or coded using a fixed-length code or any other coding technique.
[0026] An underlying assumption in the above explanation is that there is a non-random distribution among all possible motion vector candidate sets. For example, if each candidate set contained all permutations of symbols that were randomly distributed with respect to each other, there would be no reason to expect an improvement in coding efficiency. This is because the number of motion vector candidate sets required to ensure that a sufficient number of motion vector candidates were included in the candidate set in the table to benefit from the reduced code length would be too large. In essence, the efficiency gain gained in encoding a selected one of the motion vector candidates is lost in the overhead incurred when encoding the symbols associated with a particular candidate set. This can be understood from the following. Just as entropy coding of motion vectors works by relying on predictable spatial and temporal relationships between motion vectors, causing some motion vector candidates to occur more frequently than others, the nested entropy coding structure of this disclosure aims to perform further bitstream compression only when some of the possible permutations of symbols in a candidate set occur more frequently than others, so that candidate sets with longer code lengths are used less frequently than candidate sets with shorter code lengths.
[0027] Through research, the inventors have found that not only does the nested entropy coding structure of the present disclosure actually improve coding efficiency, but also that the syntax elements of neighboring pixels or neighboring pixel blocks correlate with the probability of the ordering of motion vector candidates within the set. For example, referring to FIG. 4, the encoder 10 may obtain syntax symbols from a syntax model 24. The syntax model 24 defines a set of syntax elements in the coded data used to distinguish between multiple VLC tables in a motion vector candidate set, thereby also defining a set of syntax elements used by the encoder and decoder to determine the VLC table to use when encoding a selected motion vector candidate with a code symbol. These syntax elements may, for example, relate to selected motion vector candidates in temporally or spatially neighboring pixel blocks, to a combination of such selected motion vector candidates, or to any element determined to have a relationship to the probability distribution of the selected motion vector within the candidate set. In one embodiment, encoder 10 (and therefore decoder 12) includes a learning factor that tests different combinations of syntax elements to intelligently maximize coding efficiency. In other words, encoder 10 intelligently optimizes coding efficiency by iteratively selecting different combinations of available syntax elements, measuring the change in coding efficiency associated with each selected combination, and reacting accordingly by substituting one or more syntax elements within each combination.
[0028] Using the syntax symbols obtained from syntax model 24, encoder 10 may then use the motion vector symbols available in VLC tables 28a, 28b, 28c, 28d, etc. for the motion vector selected for the current block and encode the motion vector symbols in the bitstream sent to decoder 12. Encoder 10 also updates the order of the motion vector symbols in the VLC tables used based on the selected symbols. In one embodiment, symbols are reordered when a change occurs in the frequency distribution of symbols contained in a table. In another embodiment, encoder 10 (and decoder 12) keeps track of the most frequently occurring symbol in the set before reordering and ensures that symbol is ordered highest in the table (i.e., ensures that the code length of that symbol is shortest). Note that in this example, because the syntax symbols are determined solely by the syntax of the previously encoded data, it is not necessary for the encoder to encode the syntax symbols along with the motion vector symbols, so long as the decoder 12 uses the same syntax model to determine the particular VLC table 30a, 30b, 30c, 30d from which to extract the received motion vector symbols. In other words, very high coding efficiency can be achieved if the encoder 10 uses the syntax of the previously encoded data to distinguish between VLC tables, and updates the ordering of symbols in those VLC tables in the process.
[0029] When decoder 12 receives the coded bitstream from encoder 10, decoder 12 parses the bitstream, determines the appropriate VLC table for the received symbols (using syntax model 26, if available), decodes the received symbols, and identifies a motion vector selected from the candidate set. The decoder also updates each VLC table in the same manner as encoder 10.
[0030] The predicted motion vector set may include motion vector candidates that spatially predict the selected motion vector (i.e., candidates in the same frame as the current block), motion vector candidates that temporally predict the selected motion vector (i.e., candidates in a co-located block in a frame preceding the current frame), and motion vector candidates that spatio-temporally predict the selected motion vector (i.e., candidates in a frame preceding the current block that is spatially offset from the co-located block). As mentioned above, the nested entropy coding structure of the present disclosure allows a decoder to parse the bitstream without trimming motion vector candidates or shortening code symbols, thereby maintaining spatial and temporal independence in the parsing process and maintaining error resilience while achieving very high coding efficiency. Alternatively, the nested entropy coding structure can be used in conjunction with motion vector candidate trimming or code symbol reduction techniques while at least partially maintaining error resilience.
[0031] For example, as shown in FIG. 5A, the encoder 10 may include a motion vector candidate set construction module 40. The motion vector candidate set construction module 40 reads the entire set of motion vector candidates applicable to the current block being encoded from one or more buffers 28. The motion vector candidate set trimming module 42 then selectively trims the motion vector candidate set according to a predetermined rule by applying the syntax model 24 to the motion vector candidate set before the selected motion vector is encoded by the encoding module 44. The encoding module 44 sequentially selects symbols based on the trimmed candidate set. One possible predetermined rule may, for example, prevent the motion vector candidate set module 42 from trimming a predicted motion vector derived from an already reconstructed / transmitted frame. In other words, if two predicted motion vectors have the same value, and one predicted motion vector corresponds to data of the current frame and the other predicted motion vector corresponds to data of another frame, both of these predicted motion vectors are included in the trimmed set. This maintains temporal independence. According to another possible predetermined rule, for example, the motion vector candidate set module 42 may prevent trimming of a predicted motion vector with a different reference index. In other words, if two predicted motion vectors have the same horizontal and vertical values and the reference index of one predicted motion vector is different from the reference index of the other predicted motion vector, both of these two predicted motion vectors are included in the trimmed set. According to another possible predetermined rule, for example, two motion vectors with the same reference index but different horizontal and / or vertical values are included in the trimmed set. According to yet another possible predetermined rule, for example, if two motion vectors with the same reference index value, horizontal and vertical values exist in the set, one motion vector is deleted by the motion vector candidate set module 42.
[0032] As another example, a predetermined rule may be set to prevent motion vector predictors derived from regions located in different slices from being trimmed by the motion vector candidate set trimming module 42, thereby maintaining spatial independence. As an additional embodiment, a predetermined rule may be set to prevent motion vector predictors derived from regions located in different entropy slices from being trimmed by the motion vector candidate set trimming module 42. An entropy slice is a unit of a bitstream that can be analyzed without reference to other data in the current frame.
[0033] These two rules are provided for illustrative purposes only, as examples of rules that can be added if desired. FIG. 5B illustrates a general technique for applying various trimming rule sets, transmitted using novel flags, by way of example. For example, in step 50, encoder 10 receives a candidate set of motion vector predictors from buffer 28. In step 52, the encoder transmits (or the decoder receives) a flag that is used to determine whether to apply trimming in decision step 53. Optionally, a trimming rule set that can be used to define which vectors to trim may also be transmitted. If the flag indicates that no trimming is to be performed, processing proceeds to step 60, where the entire candidate set of motion vectors is used to encode the selected motion vector. However, if the flag indicates that trimming is to be performed according to a predetermined rule set, then in step 54, a subset of overlapping motion vectors is identified. Thus, in one embodiment, a subset of overlapping motion vectors can be considered as the maximal collection of motion vectors in which each motion vector in the subset has an identical motion vector outside the subset. In other words, the subset may be a subset obtained by removing from the subset motion vectors that do not have any duplicate motion vectors in the motion vector candidate set and by removing only one identical duplicate motion vector from the set of duplicate motion vectors.
[0034] In step 56, selected candidate motion vectors may be selectively removed from the overlapping subset according to predetermined rules in the rule set. This step may ensure spatial and / or temporal independence. Optionally, candidate motion vectors may be added to the subset of overlapping motion vectors, for reasons that will be explained in more detail below. At a conceptual level, the purpose of steps 54 and 56 is simply to apply the rule set to identify motion vectors to be trimmed from the complete candidate set. Once this subset is identified, the candidate motion vectors in this subset are trimmed in step 58, after which the encoder encodes a selected motion vector from the remaining candidate motion vectors based on the size of the trimmed candidate set in step 60.
[0035] To illustrate the functionality of the general method shown in FIG. 5A, consider the example of the temporal MVP flag (temporal_mvp_flag). The temporal MVP flag is used by the encoder to transmit in the bitstream a true / false status indicating whether a motion vector selected from the candidate set is a motion vector located in the temporal direction. Furthermore, it is assumed that the rule set applicable for this flag is intended to maintain temporal independence. If the temporal MVP flag indicates that temporal prediction is selected by the encoder, the temporal prediction subset in the candidate set is not trimmed, since trimming the temporal prediction subset would result in temporal dependency. However, the spatial prediction subset in the candidate set can be trimmed, since the size of the temporal prediction subset is predicted in advance by the decoder 12.
[0036] Conversely, if temporal_mvp_flag indicates that temporal prediction is not selected by the encoder, then in some embodiments, it is possible to trim not only overlapping motion vectors but also temporal predictions to the candidate set, thereby significantly reducing the candidate set that needs to be coded. It should further be recognized that, if temporal and spatial dependencies are allowed by the applicable rule set, temporal_mvp_flag, regardless of its value, can be used to (1) trim temporally or spatially overlapping subsets that are signaled using the flag, or (2) trim entire subsets that are not signaled using the flag.
[0037] The present inventors have coincidentally found a definite correlation between the value of temporal_mvp_flag in the present disclosure and the constrained intra prediction flag (constrained_intra_pred_flag). The constrained_intra_pred_flag is often associated with a frame and used in coded video bitstreams. Specifically, the present inventors have found that there is a strong correlation between these two flags when the value of constrained_intra_pred_flag is 1, and a somewhat weak correlation when the value of constrained_intra_pred_flag is 0. Therefore, to reduce the overhead of reporting the selected motion vector, the encoder may optionally be configured as follows: That is, if constrained_intra_pred_flag is set to 1 for the frame of the current pixel, the decoder may be configured not to encode the temporal_mvp_flag of the present disclosure, but to simply insert or assume an equal value for temporal_mvp_flag, and to encode temporal_mvp_flag if constrained_intra_pred_flag is not set to 1. Alternatively, the temporal_mvp_flag of the present disclosure may simply be assigned the same value as constrained_intra_pred_flag. In this case, however, it is preferable for the prescribed rule set to associate a value of 0 with the result of simply trimming overlapping vectors in the candidate set.
[0038] The nested entropy coding structure of the present disclosure can be additionally applied to this temporal_mvp_flag syntax. In one embodiment, the upper neighbor flag and the left neighbor flag are used to determine the prediction set template used in entropy coding of temporal_mvp_flag. This is usually effective when the encoder and decoder exclusively allocate entropy symbols for the coded values and temporal_mvp_flag has multiple values. In another embodiment, the prediction set template used to code the selected motion vector in the candidate set is determined depending on the temporal_mvp_flag of the current block.
[0039] Also, in another embodiment, as described above for temporal_mvp_flag, the predicted motion vector may be equal to the motion vector derived from the current frame, or equal to the motion vector derived from a previously reconstructed / transmitted frame. However, in this particular embodiment, a flag is transmitted indexed by the number of unique predicted motion vectors derived from the current frame. For example, the prediction set template in this embodiment can distinguish all possible combinations of first coded values (e.g., 00, 01, 10, 11 (entropy coded as 0, 10, 110, 1110)) reflecting flag combinations in blocks to the left and above the current block, indexed by a second coded value reflecting the number of unique motion vectors in the candidate set. Alternatively, the context template in this embodiment can identify all possible combinations of a first coding value reflecting whether the flags in the block to the left and above the current block are the same (e.g., 00 and 11 (entropy coded as 0) and 01 and 10 (entropy coded as 10)), and a second coding value reflecting the number of unique motion vectors in the candidate set.
[0040] The encoding scheme may include a motion vector candidate set containing a large number of temporally collocated motion vectors (e.g., the motion vectors shown in FIG. 6 ) for each of multiple frames. This means that to encode block 64 of the current frame, the encoder may need to access one or more buffers containing the history of all motion vectors selected in each previous frame from which motion vector candidates are extracted. This requires a significant amount of memory. Alternatively, the small-sized pixel blocks (e.g., 2×2 pixel blocks) used in the encoding scheme may be grouped into larger blocks 62 (the motion vectors are stored in a buffer and then used as collocated motion vectors when encoding subsequent blocks), and each group may instead use an average motion vector 66 of all selected vectors. This averaging process tends to result in large coded differences whenever a collocated motion vector is selected, so this arrangement trades memory requirements for reduced coding efficiency. That said, the reduction in coding efficiency is not significant if the average collocated vector is selected only when it is more efficient to use the average collocated vector than other motion vectors in the candidate set. In addition to using the average value of neighboring blocks, vector median processing or component-wise median processing may be performed, as well as other standard processing, such as upper limit processing, lower limit processing, or a combination thereof, or so-called dilate processing, erode processing, open processing, close processing, etc. Furthermore, motion vectors at predetermined positions may be used. For example, in the latter usage described above, the motion vector corresponding to the Nth small-sized pixel block in the large block may be recorded in a buffer as a collocated motion vector for the large block (N is an integer corresponding to the position of the small-sized block in the large block in the raster scan order).
[0041] In some embodiments, the operation used to group small-sized pixel blocks into larger blocks may be transmitted in the bitstream from the encoder to the decoder. For example, the operation may be transmitted in a sequence parameter set. Alternatively, the operation may be transmitted in a picture parameter set, a slice header, or any predetermined group of pixels. Furthermore, the operation may be determined from a level or profile identifier transmitted in the bitstream.
[0042] In some embodiments, the number of small-sized blocks grouped into larger blocks may be transmitted from the encoder to the decoder in the bitstream. For example, the number of small-sized blocks may be transmitted in a sequence parameter set. Alternatively, the number of small-sized blocks may be transmitted in a picture parameter set, a slice header, or any predetermined group of pixels. The number of small-sized blocks may be determined from a level or profile identifier transmitted in the bitstream. In some embodiments, the number of small-sized blocks may be expressed as the number of rows and columns of small-sized blocks.
[0043] It should be understood that the above-described embodiments of the encoder and / or decoder may be used in any of numerous hardware, firmware, or software implementations. For example, the encoder may be used in a set-top recorder, a server, a desktop computer, etc., and the decoder may be used in a display device, a set-top cable box, a set-top recorder, a server, a desktop computer, etc. These examples are illustrative only and not limiting. When the encoders and decoders of the present disclosure are implemented in firmware and / or software, the various components of the disclosed encoders and decoders may access any available processing devices and storage to implement the techniques described above.
[0044] The terms and expressions used in the above specification are terms and expressions for describing the present invention, not for limiting the present invention. Therefore, the use of such terms and expressions is not intended to exclude any equivalents of the features illustrated and described above or any portion thereof. It should be recognized that the scope of the invention is defined and limited only by the following claims.
[0045] (Another expression of the invention) The present invention can also be expressed as follows: That is, a preferred embodiment is a decoding method for decoding a predicted motion vector of a current block in an image of a sequence of images, comprising: a first identification step of identifying a first neighboring block adjacent to the current block in the image; a second identification step of identifying a second neighboring block adjacent to the current block in the image; a first generation step of generating a set of candidate predicted motion vectors including the motion vectors of both the first and second neighboring blocks when the motion vectors of the first and second neighboring blocks are not equal; and a second generation step of generating a candidate predicted motion vector set including only either the motion vector of the first or second neighboring block when the motion vector of the first or second neighboring block is equal. the step of obtaining a flag from the bitstream indicating whether a motion vector located in the time direction can be used as a predicted motion vector; the step of including a motion vector of a block in another image in the predicted motion vector candidate set if the flag indicates that the motion vector located in the time direction can be used as a predicted motion vector; the step of excluding the motion vector of the block in the other image from the predicted motion vector candidate set if the flag indicates that the motion vector located in the time direction cannot be used as a predicted motion vector; and the step of selecting a motion vector from the predicted motion vector candidate set as the predicted motion vector for the target block, wherein the motion vector of the target block is derived based on the selected predicted motion vector and differential motion vector.
[0046] Also, a preferred embodiment is an apparatus comprising a decoder for decoding a motion vector predictor for a current block in an image of a sequence of images, the decoder identifying a first neighboring block adjacent to the current block in the image, identifying a second neighboring block adjacent to the current block in the image, generating a motion vector predictor candidate set including the motion vectors of both the first and second neighboring blocks when the motion vectors of the first and second neighboring blocks are not equal, and generating a motion vector predictor candidate set including only either the motion vector of the first or second neighboring block when the motion vector of the first and second neighboring blocks are equal. a flag indicating whether a motion vector located in the temporal direction can be used as a predicted motion vector is obtained from the bitstream; if the flag indicates that a motion vector located in the temporal direction can be used as a predicted motion vector, the motion vector of a block in another image is included in the predicted motion vector candidate set; if the flag indicates that a motion vector located in the temporal direction cannot be used as a predicted motion vector, the motion vector of the block in the other image is excluded from the predicted motion vector candidate set; and a motion vector is selected from the predicted motion vector candidate set as the predicted motion vector for the target block; the motion vector of the target block is derived based on the selected predicted motion vector and a differential motion vector, and the differential motion vector is obtained from the bitstream.
[0047] Also, a preferred embodiment is a method for decoding a predicted motion vector of a current block in an image of a sequence of images, the method comprising the steps of: accessing the current block in the image; identifying a first block and a second block each adjacent to the current block in the image; including the motion vector of the first block and the motion vector of the second block in a candidate predicted motion vector set for the current block, if it is determined that the motion vector of the first block is not equal to the motion vector of the second block; including either the motion vector of the first block or the motion vector of the second block in the candidate predicted motion vector set for the current block, if it is determined that the motion vector of the first block is equal to the motion vector of the second block; and setting a flag indicating whether a motion vector located in a time direction can be used as a predicted motion vector in a bit sequence. the step of receiving the motion vector of a block in another image from a stream; the step of including, on condition that it is determined that the flag indicates that a motion vector located in the time direction can be used as a predicted motion vector, the motion vector of the block in another image in the predicted motion vector candidate set of the target block; the step of excluding, on condition that it is determined that the flag indicates that a motion vector located in the time direction cannot be used as a predicted motion vector, the motion vector of the block in the other image from the predicted motion vector candidate set of the target block; the step of selecting a motion vector from the predicted motion vector candidate set as the predicted motion vector of the target block; the step of deriving a motion vector of the target block based on the selected predicted motion vector and a differential motion vector; and the step of generating a residual block as a difference between the target block and a reference block identified by the motion vector of the target block.
[0048] In addition, a preferred embodiment is an encoding device that encodes a predicted motion vector of a target block in an image, and performs the following operations: identifying a first block adjacent to the target block; identifying a second block adjacent to the target block; determining a motion vector of the first block and a motion vector of the second block; generating a predicted motion vector candidate set including at least one of the motion vector of the first block or the motion vector of the second block; determining whether a motion vector located in the time direction can be used as a predicted motion vector for the target block; and, if it is determined that a motion vector located in the time direction can be used as a predicted motion vector for the target block, including a motion vector of a block in another image in the predicted motion vector candidate set; and selecting a motion vector from the predicted motion vector candidate set as the predicted motion vector for the target block.
[0049] In addition, a preferred embodiment is a bitstream storing one or more coded images of a sequence of images, comprising: a first block adjacent to a target block in an image of the one or more coded images; a second block adjacent to the target block in the image; and a flag indicating whether a motion vector located in a temporal direction can be used as a predicted motion vector; if the motion vector of the first block is not equal to the motion vector of the second block, a set of predicted motion vector candidates for the target block includes the motion vector of the first block and the motion vector of the second block; and if the motion vector of the first block is equal to the motion vector of the second block and the flag indicates that a motion vector located in a temporal direction can be used as a predicted motion vector, the set of predicted motion vector candidates for the target block includes the motion vector of the first block and the motion vector located in the temporal direction.
Claims
1. 1. An encoding device for encoding a motion vector of a target block in an image, comprising: identifying a first block adjacent to the target block; identifying a second block adjacent to the target block; determining a motion vector for the first block and a motion vector for the second block; a process of generating a motion vector predictor candidate set including at least one of the motion vector of the first block or the motion vector of the second block, wherein, when the motion vector of the first block is equal to the motion vector of the second block, a motion vector is excluded from the motion vector predictor candidate set so that the motion vector predictor candidate set includes only one of the motion vector of the first block and the motion vector of the second block, rather than both; determining whether a motion vector located in a time direction can be used as a motion vector predictor for the current block; a process of including a motion vector of a block in another image in the motion vector predictor candidate set as a result of determining that a motion vector located in a time direction can be used as the motion vector predictor of the current block; A process of generating a flag indicating whether a motion vector located in a time direction can be used as a motion vector predictor; selecting a motion vector from the motion vector predictor candidate set as the motion vector predictor for the current block.
2. The encoding device according to claim 1 , further comprising a process of generating a differential motion vector for the current block based on the selected predicted motion vector for the current block.
Citation Information
Patent Citations
Apparatus and method for image processing, recording medium, and program
JP2004241880A