A motion vector coding unit 117 executes processing including a neighboring block specification step (S100) of specifying a neighboring block which is located in the neighborhood of a current block; a judgment step (Steps S102, S104) of judging whether or not the neighboring block has been coded using a motion vector of another block; a prediction step (S106, S108) of deriving a predictive motion vector of the current block using a motion vector calculated from the motion vector of the other block as a motion vector of the neighboring block; and a coding step (S110) of coding the motion vector of the current block using the predictive motion vector.

Patent
   RE46924
Priority
Jan 09 2002
Filed
Jul 20 2015
Issued
Jun 26 2018
Expiry
Jan 08 2023
Assg.orig
Entity
Large
0
28
all paid
1. A motion vector decoding method for decoding a coded motion vector of a current block in a moving picture, comprising:
specifying a three neighboring block blocks which is are located in a neighborhood of the current block and is are previously decoded;
deriving a predictive motion vector of the current block; and
decoding the coded motion vector of the current block using the predictive motion vector; to derive a final motion vector of the current block, wherein deriving the final motion vector of the current block comprises:
adding the predictive motion vector of the current block to a decoded difference motion vector of the current block to derive the final motion vector of the current block,
wherein, in the deriving of the predictive motion vector of the current block, when comprises:
responsive to determining that at least one of the three neighboring block blocks is decoded based on a motion vector of another block coded in a skip mode or a direct mode, deriving the predictive motion vector of the current block is derived based on the a motion vector of the another block different from the three neighboring blocks, and
responsive to determining that none of the three neighboring blocks are coded in the skip mode or the direct mode, deriving the predictive motion vector of the current block based on one or more motion vectors of the three neighboring blocks.
0. 7. A motion vector decoding method for decoding a coded motion vector of a current block in a moving picture, comprising:
specifying three neighboring blocks which are located in a neighborhood of the current block and are previously decoded;
deriving, using one or more processing devices, a predictive motion vector of the current block;
decoding, using the one or more processing devices, the coded motion vector of the current block using the predictive motion vector to derive a final motion vector of the current block, wherein deriving the final motion vector of the current block comprises:
adding the predictive motion vector of the current block to a decoded difference motion vector of the current block to derive the final motion vector of the current block,
wherein, deriving the predictive motion vector of the current block comprises:
responsive to determining that at least one of the three neighboring blocks is coded in a skip mode or a direct mode, deriving the predictive motion vector of the current block based on a motion vector of another block different from the three neighboring blocks, and
responsive to determining that none of the three neighboring blocks are coded in the skip mode or the direct mode, deriving the predictive motion vector of the current block based on one or more motion vectors of the three neighboring blocks; and
storing results of the decoding in a tangible storage device.
2. The motion vector decoding method according to claim 1, wherein the another block is located temporally at a forward or backward position relatively to one of the three neighboring block blocks.
3. The motion vector decoding method according to claim 1, wherein the another block is located in the moving picture including the three neighboring block blocks.
0. 4. The motion vector decoding method according to claim 1, wherein the another block is located temporally at a forward position relatively to one of the three neighboring blocks.
0. 5. The method of claim 1, further comprising generating a motion compensation image for the current block based on the final motion vector of the current block.
0. 6. The method of claim 1, wherein deriving the predictive motion vector of the current block based on one or more motion vectors of the three neighboring blocks comprises deriving the predictive motion vector based on a median calculated from components of the one or more motion vectors of the three neighboring blocks.


mvb=(TRB−TRD)×xmvp/TRD   Equation 2
where mvf and mvb respectively represent horizontal components and vertical components of the motion vectors. And the plus values indicate the direction of the motion vector MVp, and the minus values indicate the direction opposite to that of the motion vector MVp.

The neighboring block C is coded using the motion vectors MVFc and MVBc obtained as mentioned above.

When coding the motion vectors MVF and MVB of the current block A as shown in FIG. 10, the motion vector coding unit 117 specifies the three neighboring blocks B, C and D of the current block A, and judges whether or not each of the neighboring blocks B, C and D is a block which has been coded using a motion vector of another block. As a result, when it is judged that only the neighboring block C is coded in temporal direct mode, that is, coded using the motion vector of the other block, the motion vector coding unit 117 treats the motion vectors MVFc and MVBc calculated from the motion vector MVp of the block X that is the other block for coding the neighboring block C as motion vectors of the neighboring block C, and calculates the medians of the motion vectors MVFc and MVBc and the motion vectors of the neighboring blocks B and D so as to derive predictive values of the motion vectors of the current block A. A forward predictive value and a backward predictive value are derived separately. Then, the motion vector coding unit 117 codes differences between the predictive values and the motion vectors MVF and MVB of the current block A, respectively.

The motion vector storage unit 116 stores coding modes of coded blocks, and based on the coding modes stored in this motion vector storage unit 116, the motion vector coding unit 117 judges whether or not each of the neighboring blocks B, C and D has been coded using motion vectors of other blocks. The motion vector storage unit 116 further stores motion vectors of blocks which have been coded without using motion vectors of other blocks but using their own motion vectors estimated from reference pictures. In other words, when coding the motion vectors of the current block A, the motion vector coding unit 117 uses the motion vectors stored in the motion vector storage unit 116 as they are for the neighboring blocks B and D, but for the neighboring block C, it reads out the motion vector MVp of the block X stored in the motion vector storage unit 116 to calculate the motion vectors MVFc and MVBc. Note that the motion vector storage unit 116 may store in advance motion vectors calculated from motion vectors of other blocks in order to code a block which has been coded using the motion vectors of the other blocks. In this case, the motion vector storage unit 116 stores in advance the motion vectors MVFc and MVBc. Therefore, when coding the motion vectors of the current block A, the motion vector coding unit 117 does not need to read out the motion vector MVp of the block X so as to calculate the motion vectors MVFc and MVBc of the neighboring block C using Equation 1 and Equation 2, but can use the motion vectors MVFc and MVBc stored in the motion vector storage unit 116 directly as the motion vectors of the neighboring block C.

Next, a method for coding motion vectors of a current block in a case where a neighboring block is coded in spatial direct mode will be explained.

FIG. 12 is an illustration for explaining how to code a neighboring block in spatial direct mode.

As shown in FIG. 12, when a neighboring block C of the picture B11 is coded in spatial direct mode, it is coded using motion vectors MVFc and MVBc calculated based on medians in the forward and backward directions respectively which are obtained from the motion vectors MVFe and MVBe of the block E, the motion vectors MVFf and MVBf of the block F and the motion vectors MVFg and MVBg of the block G, where the blocks E, F and G are located in the neighborhood of the neighboring block C.

When coding the motion vectors MVF and MVB of the current block A as shown in FIG. 10, the motion vector coding unit 117 specifies the three neighboring blocks B, C and D in the neighborhood of the current block A, and judges whether each of the neighboring blocks B, C and D is a block which has been coded using motion vectors of other blocks or not. As a result, when the motion vector coding unit 117 judges that only the neighboring block C has been coded in spatial direct mode, that is, using motion vectors of other blocks, it treats the motion vectors MVFc and MVBc calculated from the blocks E, F and G which are the other blocks used for coding the neighboring block C as the motion vectors of the neighboring block C, calculates the medians of the motion vectors MVFc and MVBc and the motion vectors of the neighboring blocks B and D, and thus derives predictive values of the motion vectors of the current block A, as shown in FIG. 12. Then, the motion vector coding unit 117 codes differences between the predictive values and the motion vectors MVF and MVB of the current block A.

The motion vector storage unit 116 stores motion vectors of blocks which have been coded without using motion vectors of other blocks but using their own motion vectors estimated from reference pictures. In other words, it stores two motion vectors in the forward and backward directions for each of the blocks E, F and G. When coding the motion vectors of the current block A, the motion vector coding unit 117 calculates the motion vectors MVFc and MVBc of the neighboring block C using these motion vectors stored in the motion vector storage unit 116. Note that the motion vector storage unit 116 may store in advance two motion vectors in the forward and backward directions which are calculated based on medians obtained from motion vectors of other blocks in order to code a block which has been coded using the motion vectors of the other blocks. In this case, the motion vector storage unit 116 stores in advance the motion vectors MVFc and MVBc. Therefore, when coding the motion vectors of the current block A, the motion vector coding unit 117 does not need to calculate the motion vectors MVFc and MVBc of the neighboring block C, but can use the motion vectors MVFc and MVBc stored in the motion vector storage unit 116 directly as the motion vectors of the neighboring block C.

As described above, when the neighboring block C is coded in the above temporal direct mode, the motion vectors of the backward reference picture (the picture P13 in the above case) of the current picture needs to be stored in the motion vector storage unit 116, but when the neighboring block C is coded in spatial direct mode, the storage thereof can be omitted.

Here, when coding motion vectors of a current block, the moving picture coding apparatus 100 performs an exceptional processing if a neighboring block of the current block is not inter picture prediction coded, as mentioned above, but intra picture coded.

For example, when there exists one block which has been intra picture coded in the three neighboring blocks, the motion vector coding unit 117 of the moving picture coding apparatus 100 performs processing considering the motion vectors of the block to be 0. When there exist two neighboring blocks which have been intra picture coded, the motion vector coding unit 117 uses the motion vectors of the remaining one neighboring block as predictive values of motion vectors of a current block. Further, when all of the three neighboring blocks have been intra picture coded, the motion vector coding unit 117 performs coding processing of the motion vectors of the current block considering the predictive values thereof to be 0.

On the other hand, the prediction error image indicating a difference between a current macroblock in the picture B11 and the motion compensation image has been coded by the prediction error coding unit 103 and generated as coded data, and information on the motion vectors which have been coded as mentioned above is added to the coded data by the bit stream generation unit 104. However, information on motion vectors of a macroblock which has been coded in direct mode is not added to the coded data.

Coding processing of the remaining macroblocks in the picture B11 is performed in the same manner. After the processing is completed for all the macroblocks in the picture B11, the coding processing of the picture B12 follows.

As described above, according to the motion vector coding method of the present invention, a motion vector of each current block is coded using a predictive value derived from motion vectors of the previously coded neighboring blocks and the motion vector of the current block. If any of the neighboring blocks has been coded using a motion vector calculated from motion vectors of other blocks, for example, in skip mode or direct mode, a predictive value is derived using, as a motion vector of the neighboring block, the motion vector calculated from the motion vectors of the other blocks for coding that neighboring block.

Accordingly, when a motion vector of a current block is coded using a predictive value derived from a motion vector of a neighboring block, if the neighboring block is coded using motion vectors of other blocks, the motion vector of the neighboring block is not considered as 0 like the conventional art, but the motion vector calculated from the motion vectors of the other blocks is used as the motion vector of the neighboring block. As a result, accuracy of the above predictive value is improved, and thus efficiency of coding motion vectors can be improved.

Note that in the present embodiment, a case has been explained where a macroblock is coded in every horizontal 16×vertical 16 pixels, motion compensation is performed in every block of horizontal 8×vertical 8 pixels, and a block prediction error image is coded in every horizontal 8×vertical 8 pixels, but this processing may be performed in other units of pixels.

Also, in the present embodiment, a case has been explained where a median calculated from motion vectors of previously coded three neighboring blocks is used as a predictive value for coding a motion vector, but any other number of neighboring blocks other than three may be applied, and the predictive value may be determined by any other method. For example, a motion vector of an immediately left block may be used as a predictive value, or an average, instead of a median, may be used.

Also, in the present embodiment, locations of neighboring blocks for coding a motion vector has been explained using FIGS. 3A-3D and FIG. 4, but any other locations may be applied.

Also, in the present embodiment, a method for coding a current block using motion vectors of other blocks has been explained by taking skip mode and temporal and spatial direct modes as examples, but any other method may be used.

Also, in the present embodiment, a case has been explained where a difference between a motion vector of a current block and a predictive value obtained from motion vectors of neighboring blocks so as to code the motion vector, but any other method other than obtaining of a difference may be used to code the motion vector.

Also, in the present embodiment, a case has been explained where when a neighboring block is coded in spatial direct mode, a median of motion vectors of previously coded three blocks in the neighborhood of the neighboring block is calculated and is treated as a motion vector of the neighboring block, but any other number of blocks other than three may be used, and any other method may be used to determine the motion vector. For example, a motion vector of an immediately left block may be used as a motion vector of a neighboring block, or an average, instead of a median, may be used.

Also, in the present embodiment, when a block in a B-picture is coded in spatial direct mode, two motion vectors of the block in the forward and backward directions are calculated, but two motion vectors in the forward direction only or two motion vectors in the backward direction only may be calculated. In this case, the B-picture refers to two pictures in the forward direction only or two pictures in the backward direction.

Also, in the present embodiment, a case has been explained where one predetermined picture is referred to in coding a P-picture (a picture P10 is referred to in coding a picture P13, for example) and two predetermined pictures are referred to in coding a B-picture (pictures P10 and P13 are referred to in coding a picture B11), but these P-picture and B-picture may be coded by selecting reference pictures for every macroblock or block from among a plurality of pictures. In such a case, a predictive value of a motion vector can be generated in the manner as shown in FIG. 13.

FIG. 13 is a flowchart showing an operation the motion vector coding unit 117 conducts in deriving a predictive value of a motion vector of a current block to code the motion vector, when reference pictures are selected for every block.

First, the motion vector coding unit 117 specifies previously coded three neighboring blocks of a current block (Step S300).

Then, the motion vector coding unit 117 judges whether each of the specified neighboring blocks is a neighboring block Ba which has been coded using motion vectors of other blocks or a neighboring block Bb which has been coded without using motion vectors of other blocks (Step S302).

Here, as for the neighboring block Ba, the motion vector coding unit 117 obtains information indicating motion vectors used for coding the block Ba and reference pictures for the neighboring block Ba, and treats those motion vectors used for coding the block Ba as motion vectors thereof. As for the neighboring block Bb, the motion vector coding unit 117 obtains information indicating motion vectors of the neighboring block Bb and reference pictures for the neighboring block Bb (Step S304).

Next, the motion vector coding unit 117 specifies, out of the three neighboring blocks, a neighboring block which refers to the picture that a current block refers to based on the information obtained in Step S304 (Step S306), and determines the number of the specified neighboring blocks (Step S308).

Then, if the number of the neighboring blocks judged in Step S308 is 1, the motion vector coding unit 117 considers the motion vector of the neighboring block which refers to the same picture to be a predictive value of the motion vector MV of the current block (Step S310).

If the number of the neighboring blocks judged in Step S308 is not 1, the motion vector coding unit 117 considers the motion vectors of the neighboring blocks which refer to another picture other than the current block refers to, out of the three neighboring blocks, to be 0 (Step S312), and considers a median of the motion vectors of the three neighboring blocks to be a predictive value of the motion vector MV of the current block (Step S314).

Using the predictive value derived in Step S310 or Step S314 as mentioned above, the motion vector coding unit 117 calculates a difference between the predictive value and the motion vector MV of the current block, and codes the difference (Step S316).

Also, when a motion vector is coded using a motion vector of a spatially adjacent block as a predictive value, an amount of motion vectors of 1 macroblock line (a portion of 1 macroblock high and a screen wide) needs to be stored in the motion vector storage unit 116 for coding the motion vector, if the motion vectors which have been actually used for motion compensation in skip mode or direct mode are stored in the motion vector storage unit 116. This applies to the case where the motion vectors which have been actually used for motion compensation in skip mode or direct mode are stored in the motion vector storage unit 116. That is why when the neighboring blocks explained in connection with FIGS. 3A-3D and FIG. 4 of the present embodiment are used, there are past 1 macroblock slices of blocks which are referred to as neighboring blocks for coding the motion vector, with the current macroblock as a starting point.

(Second Embodiment)

A moving picture decoding apparatus 700 in the second embodiment of the present invention will be explained with reference to the figures.

FIG. 14 is a block diagram showing the structure of the moving picture decoding apparatus 700 in the second embodiment of the present invention.

The moving picture decoding apparatus 700 as shown in FIG. 14 decodes moving pictures coded by the moving picture coding apparatus 100 in the first embodiment, and includes a bit stream analysis unit 701, a prediction error decoding unit 702, a mode decoding unit 703, a motion compensation decoding unit 705, a motion vector storage unit 706, a frame memory 707, an addition unit 708, switches 709 and 710, and a motion vector decoding unit 711.

The bit stream analysis unit 701 extracts various data from the inputted bit stream. Here, various data includes information on coding mode, information on motion vectors, and so on. The extracted coding mode information is outputted to the mode decoding unit 703. The extracted motion vector information is outputted to the motion vector decoding unit 711. Further, the extracted coded prediction error data is outputted to the prediction error decoding unit 702.

The prediction error decoding unit 702 decodes the inputted coded prediction error data to generate a prediction error image. The generated prediction error image is outputted to the switch 709. When the switch 709 is connected to the terminal “b”, the prediction error image is outputted to the addition unit 708.

The mode decoding unit 703 controls the switch 709 and the switch 710 with reference to the coding mode information extracted from the bit stream. If the coding mode is intra picture coding, the mode decoding unit 703 controls the switches 709 and 710 to connect to the terminal “a” and the terminal “c”, respectively, and if the coding mode is inter picture coding, it controls the switches 709 and 710 to connect to the terminal “b” and the terminal “d”, respectively. The mode decoding unit 703 further outputs the coding mode information to the motion vector decoding unit 711.

The motion vector decoding unit 711 decodes the motion vector information outputted from the bit stream analysis unit 701.

To be more specific, when the coding mode information indicates inter picture prediction coding using motion vectors, the motion vector decoding unit 711 derives a predictive value for a current block to be decoded using the motion vectors of previously decoded neighboring blocks, in the same manner as described in connection with FIGS. 3A-3D and FIG. 4. For example, as shown in FIGS. 3A-3D, the motion vector decoding unit 711 derives a predictive value for a current block A from the motion vector MVb of the neighboring block B, the motion vector MVc of the neighboring block C and the motion vector MVd of the neighboring block D. Here, the predictive value is calculated based on a median calculated from each of the horizontal components and vertical components of the three previously decoded motion vectors MVb, MVc and MVd. Then, the motion vector decoding unit 711 adds the predictive value to the difference that is the motion vector information outputted from the bit stream analysis unit 701 so as to determine the motion vector MV of the current block A. When the coding mode information is any of the above-mentioned skip mode, temporal direct mode, and spatial direct mode, the motion vector decoding unit 711 determines the motion vector using only the motion vectors of the previously decoded neighboring blocks.

FIG. 15 is a flowchart showing the general operation of the motion vector decoding unit 711 in the present embodiment.

First, the motion vector decoding unit 711 specifies previously decoded three neighboring blocks of a current block to be decoded (Step S200).

Then, the motion vector decoding unit 711 judges whether each of the specified neighboring blocks is a neighboring block which has been coded using motion vectors of other blocks or a neighboring block Bb which has been coded without using motion vectors of other blocks (Step S202).

As a result, the motion vector decoding unit 711 determines whether or not a neighboring block Ba is included in the specified three neighboring blocks (Step S204).

When it is judged in Step S204 that a neighboring block Ba is included (Y in Step S204), the motion vector decoding unit 711 derives a predictive value from the motion vectors of the three neighboring blocks by treating a motion vector calculated from motion vectors of other blocks for decoding the neighboring block Ba as a motion vector of the neighboring block Ba, as mentioned above (Step S206).

On the other hand, when it is judged in Step S206 that a neighboring block Ba is not included (N in Step S204), the motion vector decoding unit 711 derives a predictive value from the motion vectors obtained respectively based on the estimation results of the three neighboring blocks Bb (Step S208).

Then, the motion vector decoding unit 711 adds the predictive value derived in Step S206 or S208 to the difference that is the motion vector information outputted from the bit stream analysis unit 701, so as to decode the coded motion vector of the current block (Step S210). The motion vector decoding unit 711 also outputs the decoded motion vector to the motion compensation decoding unit 705.

The motion vector storage unit 706 stores the motion vector decoded in the motion vector decoding unit 711 and the coding mode obtained in the mode decoding unit 703.

The motion compensation decoding unit 705 obtains a motion compensation image of every macroblock from the frame memory 707 based on the motion vector decoded in the motion vector decoding unit 711.

The addition unit 708 adds the inputted prediction error image and the motion compensation image to generate the decoded image, and outputs the generated decoded image to the frame memory 707.

The frame memory 707 stores the decoded image generated by the addition unit 708 on every picture basis.

The operation of this moving picture decoding apparatus 700, particularly the general operation thereof, will be explained first.

FIGS. 16A and 16B are illustrations for explaining input to and output from the moving picture decoding apparatus 700.

As shown in FIG. 16A, the moving picture decoding apparatus 700 obtains the bit stream outputted from the moving picture coding apparatus 100 in the first embodiment in output order, and decodes the pictures included in the bit stream in sequence. Then, as shown in FIG. 16B, the moving picture decoding apparatus 700 reorders the decoded pictures in display order for output.

The decoding processing performed by the above moving picture decoding apparatus 700 will be explained below by taking decoding of the picture P13 and the picture B11 as shown in FIGS. 16A and 16B as a specific example.

(Decoding of Picture P13)

First, the bit stream analysis unit 701 of the moving picture decoding apparatus 700 obtains the bit stream regarding the picture P13, and extracts the mode selection information and the motion vector information and the coded prediction error data from the bit stream.

The mode decoding unit 703 controls the switches 709 and 710 with reference to the mode selection information extracted from the bit stream of the picture P13.

A case where the mode selection information indicates inter picture prediction coding will be explained below.

The motion vector decoding unit 711 performs the above decoding processing on the motion vector information extracted from the bit stream of the picture P13 on a block-by-block basis based on the mode selection information indicating inter picture prediction coding outputted from the mode decoding unit 703.

Here, when decoding the motion vector of the current block in the picture P13, the motion vector decoding unit 711 specifies previously decoded three neighboring blocks of the current block, and judges whether each of these neighboring blocks has been coded using motion vectors of other blocks or not. When any of the neighboring blocks is a block which has been coded using motion vectors of other blocks, namely, in skip mode, the motion vector decoding unit 711 treats a motion vector calculated from the motion vectors of the other blocks for decoding the neighboring block as a motion vector of the neighboring block, in the same manner as the motion vector coding unit 117 in the first embodiment does. To be more specific, the motion vector decoding unit 711 calculates the median of the motion vectors of the previously decoded three blocks in the neighborhood of that neighboring block, and treats it as a motion vector of the neighboring block.

Also, the motion vector storage unit 706 stores the mode selection information outputted from the mode decoding unit 703, and the motion vector decoding unit 711 judges whether or not each of the neighboring blocks is a block which has been coded using motion vectors of other blocks based on the mode selection information stored in the motion vector storage unit 706. The motion vector storage unit 706 further stores the motion vectors of the other blocks used for decoding the neighboring block. To be more specific, the motion vector storage unit 706 stores the motion vectors of the three blocks in the neighborhood of the neighboring block which has been coded in skip mode. When decoding the motion vector of the current block, the motion vector decoding unit 711 calculates a median from the motion vectors of the above three blocks stored in the motion vector storage unit 706. Note that the motion vector storage unit 706 may store in advance a motion vector of a block which has been coded using motion vectors of other blocks, by calculating a median of the motion vectors for decoding the block. In this case, when decoding the motion vector of the current block, the motion vector decoding unit 711 does not need to obtain the motion vector of the neighboring block which has been coded in skip mode, but can use the motion vector stored in the motion vector storage unit 706 directly as a motion vector of the neighboring block.

On the other hand, the coded prediction error data of the current macroblock in the picture P13 is decoded in the prediction error decoding unit 702 and generated as a prediction error image, and the switches 709 and 710 are connected to the addition unit 708. Therefore, the motion compensation image generated based on the motion vector decoded in the motion vector decoding unit 711 is added to the prediction error image and outputted to the frame memory 707.

Also, when decoding a motion vector of a P-picture, the motion vector decoding unit 711 stores its motion vector and a coding mode obtained from the mode decoding unit 703 in the motion vector storage unit 706 for decoding the following pictures and blocks.

The remaining macroblocks in the picture P13 are decoded in sequence. After decoding of all of the macroblocks in the picture P13 is completed, decoding of the picture B11 follows.

(Decoding of Picture B11)

First, the bit stream analysis unit 701 of the moving picture decoding apparatus 700 obtains the bit stream of the picture B11, and extracts the mode selection information and the motion vector information and the coded prediction error data from the bit stream.

The mode decoding unit 703 controls the switches 709 and 710 with reference to the mode selection information extracted from the bit stream of the picture B11.

A case where the mode selection information indicates inter picture prediction coding will be explained below.

The motion vector decoding unit 711 performs the above decoding processing on the motion vector information extracted from the bit stream of the picture B11 on a block-by-block basis based on the mode selection information indicating inter picture prediction coding outputted from the mode decoding unit 703.

When decoding a motion vector of a current block in the picture B11, the motion vector decoding unit 711 specifies previously decoded three neighboring blocks of the current block, and judges whether or not each of these neighboring blocks has been coded using motion vectors of other blocks. When any of the neighboring blocks is a block which has been coded using motion vectors of other blocks, namely, in temporal or spatial direct mode, the motion vector decoding unit 711 treats a motion vector obtained using the motion vectors of the other blocks for decoding the neighboring block as a motion vector thereof, in the same manner as the motion vector coding unit 117 in the first embodiment does.

More specifically, when the neighboring block has been coded in temporal direct mode, the motion vector decoding unit 711 reads out from the motion vector storage unit 706 a motion vector of a block, which is co-located with a neighboring block which has been coded in direct mode, in a just previously decoded reference picture (picture P13). For example, as shown in FIG. 11, if the neighboring block C has been coded in temporal direct mode, the motion vector decoding unit 711 reads out the decoded motion vector of the block X in the picture P13 from the motion vector storage unit 706. Then, the motion vector decoding unit 711 calculates a forward motion vector MVFc and a backward motion vector MVBc used for coding the neighboring block C using Equation 1 and Equation 2, and uses these motion vectors MVFc and MVBc as motion vectors of the neighboring block C.

In the above case, the motion vector decoding unit 711 reads out from the motion vector storage unit 706 the motion vector MVp of the block X in the picture P13 which is co-located with the neighboring block C which has been coded in direct mode. However, as for a block which has been coded using motion vectors of other blocks, the motion vector storage unit 706 may store the motion vector of the block calculated from the motion vectors of the other blocks for decoding the block. In this case, the motion vector storage unit 706 stores the motion vectors MVFc and MVBc in advance. Therefore, when decoding the motion vector of the current block A, the motion vector decoding unit 711 does not need to calculate the motion vectors MVFc and MVBc for the neighboring block C by reading out the motion vector MVp of the block X and using Equation 1 and Equation 2, but can use the motion vectors MVFc and MVBc stored in the motion vector storage unit 706 directly as motion vectors of the neighboring block C.

On the other hand, when a neighboring block has been coded in spatial direct mode, the motion vector decoding unit 711 treats motion vectors calculated using motion vectors of other blocks in the neighborhood of the neighboring block as motion vectors thereof. For example, in the situation as shown in FIG. 12, the motion vector decoding unit 711 calculates medians from the motion vectors of the previously decoded three blocks E, F and G in the neighborhood of the neighboring block C which has been coded in spatial direct mode, and treats the forward motion vector MVFc and the backward motion vector MVBc indicated by the medians as motion vectors of the neighboring block C.

Also, the motion vector storage unit 706 stores motion vectors used for decoding a block which has been coded without using motion vectors of other blocks. To be more specific, in the situation as shown in FIG. 12, the motion vector storage unit 706 stores the motion vectors of the three blocks E, F and G in the neighborhood of the neighboring block C which has been coded in spatial direct mode. Therefore, when decoding the motion vector of the current block A, the motion vector decoding unit 711 calculates the motion vectors MVFc and MVBc for the neighboring block from the motion vectors of the above three blocks E, F and G stored in the motion vector storage unit 706. Note that the motion vector storage unit 706 may store in advance motion vectors obtained by calculating medians for decoding a block which has been coded using motion vectors of other blocks. In this case, in the situation as shown in FIG. 12, the motion vector storage unit 706 stores the motion vectors MVFc and MVBc in advance. Therefore, when decoding the motion vectors of the current block A, the motion vector decoding unit 711 does not need to calculate the motion vectors of the neighboring block C which has been coded in spatial direct mode, but can use the motion vectors MVFc and MVBc stored in the motion vector storage unit 706 directly as motion vectors of the neighboring block C.

Here, when motion vectors of a current block to be decoded are decoded, if previously decoded neighboring block of the current block has been processed in intra picture coding, not in inter picture coding as mentioned above, the moving picture decoding apparatus 700 performs exceptional processing.

For example, when one of three neighboring blocks has been intra picture coded, the motion vector decoding unit 711 of the moving picture decoding apparatus 700 performs processing considering the motion vectors of the neighboring block to be 0. When two neighboring blocks have been intra picture coded, the motion vector decoding unit 711 uses the motion vectors of the remaining one neighboring block as predictive values of the motion vectors of the current block. Further, when all the three neighboring blocks have been intra picture coded, the motion vector decoding unit 711 decodes the motion vectors of the current block considering predictive values thereof to be 0.

On the other hand, the coded prediction error data for the current macroblock in the picture B11 has been decoded in the prediction error decoding unit 702 and generated as a prediction error image, and the switches 709 and 710 are connected to the addition unit 708. Therefore, the motion compensation image generated based on the motion vector decoded by the motion vector decoding unit 711 is added to the prediction error image and outputted to the frame memory 707.

Decoding processing of the remaining macroblocks in the picture B11 is performed in the same manner. After the processing is completed for all the macroblocks in the picture B11, the decoding processing of the picture B12 follows.

As described above, according to the motion vector decoding method of the present invention, a predictive value is derived from motion vectors of previously decoded neighboring blocks, and a motion vector of each current block is decoded using the predictive value and the difference. If any of the neighboring blocks has been coded using motion vectors of other blocks, for example, in skip mode or direct mode, a predictive value is derived using, as a motion vector of the neighboring block, a motion vector calculated from the motion vectors of the other blocks for decoding that neighboring block.

Accordingly, motion vectors which have been coded in the manner as shown in the first embodiment can be decoded properly.

Note that, in the present embodiment, a case has been explained where a median calculated from motion vectors of previously decoded three neighboring blocks is used as a predictive value for decoding a motion vector, but any other number of neighboring blocks than three may be applied, and the predictive value may be determined by any other method. For example, a motion vector of an immediately left block may be used as a predictive value, or an average, instead of a median, may be used.

Also, in the present embodiment, locations of neighboring blocks for decoding a motion vector has been explained using FIG. 3 and FIG. 4, but any other locations may be applied.

Also, in the present embodiment, a method for coding a current block using motion vectors of other blocks has been explained by taking skip mode and temporal and spatial direct modes as examples, but any other mode may be used.

Also, in the present embodiment, a case has been explained where a motion vector is decoded by adding a predictive value obtained from motion vectors of neighboring blocks and a difference as indicated in a bit stream, but any other method than addition may be used to decode the motion vector.

Also, in the present embodiment, a case has been explained where when a neighboring block has been coded in spatial direct mode, a median of motion vectors of previously coded three blocks in the neighborhood of the neighboring block is calculated and is treated as a motion vector of the neighboring block, but any other number of blocks than three may be used, and any other method may be used to determine the motion vector. For example, a motion vector of an immediately left block may be used as a motion vector of the neighboring block, or an average, instead of a median, may be used.

Also, in the present embodiment, when there exists a neighboring block which has been coded in spatial direct mode, two motion vectors of the block in the forward and backward directions are calculated, but two motion vectors in the forward direction only or two motion vectors in the backward direction only may be calculated. In this case, a current B-picture to be decoded refers to two pictures in the forward direction only or two pictures in the backward direction only.

Also, in the present embodiment, a case has been explained where one predetermined picture is referred to in decoding a P-picture (the picture P10 is referred to in decoding the picture P13, for example) and two predetermined pictures are referred to in decoding a B-picture (the pictures P10 and P13 are referred to in decoding the picture B11), but these P-picture and B-picture may be decoded by selecting reference pictures from among a plurality of pictures on every macroblock or block basis. In such a case, a predictive value of a motion vector can be generated in the manner as shown in FIG. 17.

FIG. 17 is a flowchart showing an operation of the motion vector decoding unit 711 for deriving a predictive value of a motion vector of a current block to be decoded and decoding the motion vector using the predictive value when a reference picture is selected on a block-by-block basis.

First, the motion vector decoding unit 711 specifies previously decoded three neighboring blocks of the current block (Step S400).

Then, the motion vector decoding unit 711 judges whether each of the specified neighboring blocks is a neighboring block Ba which has been coded using motion vectors of other blocks, or a neighboring block Bb which has been coded without using motion vectors of other blocks (Step S402).

Here, as for the neighboring block Ba, the motion vector decoding unit 711 obtains information indicating a motion vector used for decoding the neighboring block Ba and which reference picture it refers to, and treats the motion vector used for the decoding as a motion vector of the neighboring block Ba. As for the neighboring block Bb, the motion vector decoding unit 711 obtains information indicating the motion vector of the neighboring block Bb and which reference picture it refers to (Step S404).

Next, the motion vector decoding unit 711 specifies the neighboring block which refers to the picture that the current block refers to, out of the three neighboring blocks, based on the information obtained in Step S404 (Step S406), and determines the number of the specified neighboring blocks (Step S408).

If the number of the neighboring blocks determined in Step S408 is 1, the motion vector decoding unit 711 considers the motion vector of that one neighboring block which refers to the same picture to be a predictive value of the motion vector of the current block (Step S410).

If the number of the neighboring blocks determined in Step S408 is another number than one, the motion vector decoding unit 711 considers the motion vector of the neighboring block, out of the three neighboring blocks, which refers to another picture other than the current block refers to to be 0 (Step S412), and considers the median of the motion vectors of the three neighboring blocks as a predictive value of the motion vector of the current block (Step S414).

As described above, the coded motion vector of the current block is decoded by adding the difference to the predictive value derived in Step S410 or Step S414.

Also, when a motion vector is decoded using a motion vector of a spatially adjacent block as a predictive value, an amount of motion vectors of 1 macroblock line (a portion of 1 macroblock high and a screen wide) needs to be stored in the motion vector storage unit 706 for decoding the motion vector, if the motion vectors which have been actually used for motion compensation in skip mode or direct mode are stored in the motion vector storage unit 706. This applies to the case where the motion vectors which have been actually used for motion compensation in skip mode or direct mode are stored in the motion vector storage unit 706. That is why when the neighboring blocks explained in connection with FIGS. 3A-3D and FIG. 4 of the present embodiment are used, there are past 1 macroblock slice of blocks which are referred to as neighboring blocks for decoding the motion vector, with the current macroblock as a starting point.

(Third Embodiment)

In addition, if a program for realizing the motion vector coding method or the motion vector decoding method as shown in each of the above-mentioned embodiments is recorded on a storage medium such as a flexible disk, it becomes possible to perform the processing as shown in each of the above embodiments easily in an independent computer system.

FIGS. 18A-18C are illustrations of a storage medium that stores a program for realizing the motion vector coding method and the motion vector-decoding method executed by the moving picture coding apparatus 100 in the first embodiment and the moving picture decoding apparatus 200 in the second embodiment by a computer system.

FIG. 18B shows the front view and the cross-sectional view of the appearance of a flexible disk FD, and a disk FD1, and FIG. 18A shows an example of a physical format of the disk FD1 as a recording medium itself.

The disk FD1 is contained in a case F, a plurality of tracks Tr are formed concentrically on the surface of the disk FD1 in the radius direction from the periphery, and each track is divided into 16 sectors Se in the angular direction. Therefore, in the flexible disk storing the above-mentioned program, the motion vector coding method and the motion vector decoding method as the above program are recorded in an area allocated for it on the disk FD 1.

FIG. 18C shows the structure for recording and reproducing the program on and from the flexible disk FD.

For recording the program on the flexible disk FD, the computer system Cs writes the motion vector coding method or the motion vector decoding method as the program on the flexible disk FD via a flexible disk drive FDD. For constructing the above motion vector coding method and the motion vector decoding method in the computer system Cs by the program recorded on the flexible disk FD, the program is read out from the flexible disk FD via the flexible disk drive FDD and transferred to the computer system Cs.

Note that the above explanation is made on the assumption that a recording medium is a flexible disk FD, but the same processing can also be performed using an optical disk. In addition, the recording medium is not limited to these, but any other mediums such as an IC card and a ROM cassette can be used in the same manner if a program can be recorded on them.

(Fourth Embodiment)

Further, the applications of the motion vector coding method and the motion vector decoding method as shown in the above embodiments and a system using them will be explained here.

FIG. 19 is a block diagram showing the overall configuration of a content providing system ex100 for realizing content distribution service. The area for providing communication service is divided into cells of desired size, and base stations ex107˜ex110 which are fixed wireless stations are placed in respective cells.

In this content providing system ex100, various devices such as a computer ex111, a PDA (personal digital assistant) ex112, a camera ex113, a mobile phone ex114 and a camera-equipped mobile phone ex115 are connected to the Internet ex101, via an Internet service provider ex102, a telephone network ex104 and base stations ex107˜ex110, for example.

However, the content providing system ex100 is not limited to the combination as shown in FIG. 19, and may be connected to a combination of any of them. Also, each device may be connected directly to the telephone network ex104, not through the base stations ex107˜ex110 which are the fixed wireless stations.

The camera ex113 is a device such as a digital video camera capable of shooting moving pictures. The mobile phone may be any of a mobile phone of a PDC (Personal Digital Communications) system, a CDMA (Code Division Multiple Access) system, a W-CDMA (Wideband-Code Division Multiple Access) system or a GSM (Global System for Mobile Communications) system, a PHS (Personal Handyphone System) and the like.

Also, a streaming server ex103 is connected to the camera ex113 via the base station ex109 and the telephone network ex104, which enables live distribution or the like using the camera ex113 based on the coded data transmitted from the user. Either the camera ex113 or the server for transmitting the data may code the data shot by the camera. Also, the moving picture data shot by a camera ex116 may be transmitted to the streaming server ex103 via the computer ex111. The camera ex116 is a device such as a digital camera capable of shooting still and moving pictures. In this case, either the camera ex116 or the computer ex111 may code the moving picture data. An LSI ex117 included in the computer ex111 or the camera ex116 performs coding processing. Note that software for coding and decoding pictures may be integrated into any type of a storage medium (such as a CD-ROM, a flexible disk and a hard disk) that is a recording medium which can be read by the computer ex111 or the like. Furthermore, the camera-equipped mobile phone ex115 may transmit the moving picture data. This moving picture data is the data coded by the LSI included in the mobile phone ex115.

In this content providing system ex100, contents (such as a music live video) shot by users using the camera ex113, the camera ex116 or the like are coded in the same manner as the above embodiments and transmitted to the streaming server ex103, while the streaming server ex103 makes stream distribution of the above content data to the clients at their request. The clients include the computer ex111, the PDA ex112, the camera ex113, the mobile phone ex114 and so on capable of decoding the above-mentioned coded data. The content providing system ex100 is a system in which the clients can thus receive and reproduce the coded data, and further can receive, decode and reproduce the data in real time so as to realize personal broadcasting.

When each device in this system performs coding or decoding, the moving picture coding apparatus or the moving picture decoding apparatus as shown in each of the above-mentioned embodiments may be used.

A mobile phone will be explained as an example thereof.

FIG. 20 is a diagram showing a mobile phone ex115 which uses the motion vector coding method and the motion vector decoding method as explained in the above embodiments. The mobile phone ex115 has an antenna ex201 for sending and receiving radio waves between the base station ex110, a camera unit ex203 such as a CCD camera capable of shooting video and still pictures, a display unit ex202 such as a liquid crystal display for displaying the data obtained by decoding video shot by the camera unit ex203, video received by the antenna ex201, or the like, a main body including a set of operation keys ex204, a voice output unit ex208 such as a speaker for outputting voices, a voice input unit ex205 such as a microphone for inputting voices, a storage medium ex207 for storing coded or decoded data, such as data of moving or still pictures shot by the camera, and data of text, moving pictures or still pictures of received e-mails, and a slot unit ex206 for attaching the storage medium ex207 into the mobile phone ex115. The storage medium ex207 includes a flash memory element, a kind of EEPROM (Electrically Erasable and Programmable Read Only Memory) that is an electrically erasable and rewritable nonvolatile memory, in a plastic case such as an SD card.

Further, the mobile phone ex115 will be explained with reference to FIG. 21. In the mobile phone ex115, a main control unit ex311 for overall controlling each unit of the main body including the display unit ex202 and the operation keys ex204 is connected to a power supply circuit unit ex310, an operation input control unit ex304, a picture coding unit ex312, a camera interface unit ex303, an LCD (Liquid Crystal Display) control unit ex302, a picture decoding unit ex309, a multiplex/demultiplex unit ex308, a record/reproduce unit ex307, a modem circuit unit ex306 and a voice processing unit ex305 to each other via a synchronous bus ex313.

When a call-end key or a power key is turned ON by a user's operation, the power supply circuit unit ex310 supplies respective units with power from a battery pack so as to activate the camera-equipped digital mobile phone ex115 for a ready state.

In the mobile phone ex115, under the control of the main control unit ex311 including a CPU, ROM, RAM and the like, the voice processing unit ex305 converts the voice signals received by the voice input unit ex205 in conversation mode into digital voice data, the modem circuit unit ex306 performs spread spectrum processing of the digital voice data, and the send/receive circuit unit ex301 performs digital-to-analog conversion and frequency transformation of the data, so as to transmit the result via the antenna ex201. Also, in the mobile phone ex115, the data received by the antenna ex201 in conversation mode is amplified and performed of frequency transformation and analog-to-digital conversion, the modem circuit unit ex306 performs inverse spread spectrum processing of the data, and the voice processing unit ex305 converts it into analog voice data, so as to output the result via the voice output unit ex208.

Furthermore, when transmitting an e-mail in data communication mode, the text data of the e-mail inputted by operating the operation keys ex204 on the main body is sent out to the main control unit ex311 via the operation input control unit ex304. In the main control unit ex311, after the modem circuit unit ex306 performs spread spectrum processing of the text data and the send/receive circuit unit ex301 performs digital-to-analog conversion and frequency transformation of it, the result is transmitted to the base station ex110 via the antenna ex201.

When picture data is transmitted in data communication mode, the picture data shot by the camera unit ex203 is provided to the picture coding unit ex312 via the camera interface unit ex303. When the picture data is not transmitted, the picture data shot by the camera unit ex203 can also be displayed directly on the display unit 202 via the camera interface unit ex303 and the LCD control unit ex302.

The picture coding unit ex312, including the picture coding apparatus explained in the present invention, compress and codes the picture data provided from the camera unit ex203 by the coding method used for the picture coding apparatus as shown in the above-mentioned embodiments so as to transform it into coded picture data, and sends it out to the multiplex/demultiplex unit ex308. At this time, the mobile phone ex115 sends out the voices received by the voice input unit ex205 during picture pickup by the camera unit ex203 to the multiplex/demultiplex unit ex308 as digital voice data via the voice processing unit ex305.

The multiplex/demultiplex unit ex308 multiplexes the coded picture data provided from the picture coding unit ex312 and the voice data provided from the voice processing unit ex305 by a predetermined method, the modem circuit unit ex306 performs spread spectrum processing of the resulting multiplexed data, and the send/receive circuit unit ex301 performs digital-to-analog conversion and frequency transformation on the result for transmitting via the antenna ex201.

As for receiving data of a moving picture file which is linked to a Website or the like in data communication mode, the modem circuit unit ex306 performs inverse spread spectrum processing of the data received from the base station ex110 via the antenna ex201, and sends out the resulting multiplexed data to the multiplex/demultiplex unit ex308.

In order to decode the multiplexed data received via the antenna ex201, the multiplex/demultiplex unit ex308 demultiplexes the multiplexed data into a coded bit stream of picture data and a coded bit stream of voice data, and provides the coded picture data to the picture decoding unit ex309 and the voice data to the voice processing unit ex305 respectively via the synchronous bus ex313.

Next, the picture decoding unit ex309, including the picture decoding apparatus explained in the present invention, decodes the coded bit stream of the picture data by the decoding method paired with the coding method as shown in the above-mentioned embodiments, so as to generate reproduced moving picture data, and provides this data to the display unit ex202 via the LCD control unit ex302, and thus moving picture data included in a moving picture file linked to a Website, for instance, is displayed. At the same time, the voice processing unit ex305 converts the voice data into analog voice data, and provides this data to the voice output unit ex208, and thus voice data included in a moving picture file linked to a Website, for instance, is reproduced.

The present invention is not limited to the above-mentioned system. Ground-based or satellite digital broadcasting has been in the news lately, and at least either the picture coding apparatus or the picture decoding apparatus in the above-mentioned embodiments can be incorporated into such a digital broadcasting system as shown in FIG. 22. More specifically, a coded bit stream of video information is transmitted from a broadcast station ex409 to or communicated with a broadcast satellite ex410 via radio waves. Upon receipt of it, the broadcast satellite ex410 transmits radio waves for broadcasting, a home antenna ex406 with a satellite broadcast reception function receives the radio waves, and an apparatus such as a television (receiver) ex401 or a set top box (STB) ex407 decodes the coded bit stream for reproduction. The picture decoding apparatus as shown in the above-mentioned embodiments can be implemented in the reproduction device ex403 for reading a coded bit stream recorded on a storage medium ex402 such as a CD and DVD that is a recording medium and decoding it. In this case, the reproduced video signals are displayed on a monitor ex404. It is also conceived to implement the picture decoding apparatus in the set top box ex407 connected to a cable ex405 for a cable television or the antenna ex406 for satellite and/or ground-based broadcasting so as to reproduce them on a monitor ex408 of the television. The picture decoding apparatus may be incorporated into the television, not in the set top box. Or, a car ex412 having an antenna ex411 can receive signals from the satellite ex410, the base station ex107 or the like for reproducing moving pictures on a display apparatus such as a car navigation device ex413 or the like in the car ex412.

Furthermore, the picture coding apparatus as shown in the above-mentioned embodiments can code picture signals for recording them on a recording medium. As a concrete example, there is a recorder ex420 such as a DVD recorder for recording picture signals on a DVD disk ex421 and a disk recorder for recording them on a hard disk. They can also be recorded on an SD card ex422. If the recorder ex420 includes the picture decoding apparatus as shown in the above-mentioned embodiments, the picture signals recorded on the DVD disk ex421 or the SD card ex422 can be reproduced for display on the monitor ex408.

Note that as the structure of the car navigation device ex413, the structure without the camera unit ex203, the camera interface unit ex303 and the picture coding unit ex312, out of the units as shown in FIG. 21, is conceivable. The same applies to the computer ex111, the television (receiver) ex401 and others.

In addition, three types of implementations can be conceived for a terminal such as the above-mentioned mobile phone ex114; a sending/receiving terminal equipped with both an encoder and a decoder, a sending terminal equipped with an encoder only, and a receiving terminal equipped with a decoder only.

As described above, it is possible to use the motion vector coding method or the motion vector decoding method as shown in the above embodiments in any of above-mentioned devices and systems, and thus the effects explained in the above embodiments can be obtained.

Industrial Applicability

The motion vector coding method and the motion vector decoding method according to the present invention are suitable for use in a moving picture coding apparatus for coding moving pictures, a moving picture decoding apparatus for decoding coded moving pictures, and a system including these apparatuses, such as a content providing system for providing contents like digital works, for example, and a digital broadcasting system.

Kondo, Satoshi, Kadono, Shinya, Abe, Kiyofumi, Hagai, Makoto

Patent Priority Assignee Title
Patent Priority Assignee Title
5905535, Oct 10 1994 Thomson Licensing Differential coding of motion vectors using the median of candidate vectors
5991447, Mar 07 1997 Google Technology Holdings LLC Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
6097842, Sep 09 1996 Sony Corporation Picture encoding and/or decoding apparatus and method for providing scalability of a video object whose position changes with time and a recording medium having the same recorded thereon
6272179, Mar 05 1998 MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD Image coding apparatus, image decoding apparatus, image coding method, image decoding method, and data storage medium
6646578, Nov 22 2002 CISCO SYSTEMS CANADA CO Context adaptive variable length decoding system and method
6654420, Oct 29 1999 Koninklijke Philips Electronics N V Video encoding-method
6842483, Sep 11 2000 HONG KONG UNIVERSITY OF SCIENCE AND TECHNOLOGY, THE Device, method and digital video encoder for block-matching motion estimation
7020200, Aug 13 2002 AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED System and method for direct motion vector prediction in bi-predictive video frames and fields
8005145, Aug 11 2000 Nokia Technologies Oy Method and apparatus for transferring video frame in telecommunication system
20020176505,
20032006589,
20040013309,
20040101059,
20050123058,
CN1132983,
EP651574,
EP765087,
EP1335609,
JP11317961,
JP2000099864,
JP2000299864,
JP2001045498,
JP2001224036,
KR20020077630,
WO33581,
WO133864,
WO150770,
WO9422269,
//
Executed onAssignorAssigneeConveyanceFrameReelDoc
Jan 24 2014Panasonic CorporationDOLBY INTERNATIONAL ABASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0361410227 pdf
Jul 20 2015DOLBY INTERNATIONAL AB(assignment on the face of the patent)
Date Maintenance Fee Events
Aug 20 2020M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Aug 20 2024M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Jun 26 20214 years fee payment window open
Dec 26 20216 months grace period start (w surcharge)
Jun 26 2022patent expiry (for year 4)
Jun 26 20242 years to revive unintentionally abandoned end. (for year 4)
Jun 26 20258 years fee payment window open
Dec 26 20256 months grace period start (w surcharge)
Jun 26 2026patent expiry (for year 8)
Jun 26 20282 years to revive unintentionally abandoned end. (for year 8)
Jun 26 202912 years fee payment window open
Dec 26 20296 months grace period start (w surcharge)
Jun 26 2030patent expiry (for year 12)
Jun 26 20322 years to revive unintentionally abandoned end. (for year 12)