IP Library Granted Patent US 10,027,982
Granted Patent B2
US 10,027,982 · App. 13/277,186 · Granted Jul 17, 2018

Segmented-block coding

Inventor: Dinei Florencio (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/649H04N19/119H04N19/14H04N19/17H04N19/176H04N19/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,027,982
App. No.
13/277,186
Granted
Jul 17, 2018
Kind
B2
Abstract

The current application is directed to flexible methods for motion-vector-based encoding of macroblocks within video frames. The flexible methods for encoding video-frame macroblocks provide for segmentation of a video-frame block and encoding the segmented video-frame block by a segmented-block motion vector that includes a reference to a segmentation-defining region of a segmentation map and that also includes references to sources of intensity-and-color data for each segment. Segmented-block motion vectors provide for flexible segmentation-based encoding of video-frame blocks without sacrificing the coding efficiencies attendant with conventional motion-vector-based video encoding.

Claims (53)

1. A video-processing device comprising:

a processor;

a memory device; and

computer instructions stored within the memory device that control the processor to:

determine a motion vector for a macroblock of a frame of video based on a function of the macroblock and reference macroblocks of the frame;

determine, based on information available to an encoder of the video and a decoder of the video, a segmentation map that partitions the macroblock into a plurality of segments along one or more q-pel resolution boundaries of the segments, wherein each of the segments represents an object in the frame of video;

determine a plurality of segmented-block motion vectors for the macroblock based on the segmentation map; and

encode the macroblock using the segmented-block motion vectors.

2. The video-processing device of claim 1 , wherein the function comprises a mean squared difference between the macroblock and the reference macroblocks.

3. The video-processing device of claim 1 , the segmentation map comprising macroblock regions having a consistent trajectory, the consistent trajectory being consistent with a trajectory of the macroblock.

4. The video-processing device of claim 3 , wherein the segmented-block motion vectors are determined by instructions that control the processor to:

identify a lowest depth region of the frame, the lowest depth region comprising neighboring pixels of a similar depth;

identify macroblocks of the macroblock regions that have possible trajectories consistent with the consistent trajectory;

identify a segmentation macroblock of the identified macroblocks; and

generate the segmented-block motion vectors to comprise a plurality of motion vectors for the segmentation macroblock.

5. The video-processing device of claim 4 , wherein the segmented-block motion vectors are determined by instructions that control the processor to generate the segmented-block motion vectors to comprise a motion vector for a suitable macroblock of each of the segments.

6. The video-processing device of claim 1 , wherein the instructions control the processor to:

determine a storage size of the macroblock encoded based on the segmented-block motion vectors; and

determine the storage size of the macroblock encoded based on the motion vector.

7. The video-processing device of claim 6 , wherein the instructions control the processor to encode the macroblock using the motion vector if the storage size of the macroblock encoded based on the segmented-block motion vectors is greater than the storage size of the macroblock encoded based on the motion vector.

8. A method for encoding a macroblock of a frame of video, the method comprising:

determining a motion vector for a macroblock of the frame of video based on a function of the macroblock and reference macroblocks of the frame, wherein the function comprises a mean squared difference between the macroblock and the reference macroblocks;

determining, based on information available to an encoder of the video and a decoder of the video, a segmentation map that partitions the macroblock into a plurality of segments along one or more q-pel resolution boundaries of the segments, wherein each of the segments represents an object in the frame of video;

determining a plurality of segmented-block motion vectors for the macroblock based on the segmentation map; and

encoding the macroblock using the segmented-block motion vectors.

9. The method of claim 8 , the segmentation map comprising macroblock regions having a consistent trajectory, the consistent trajectory being consistent with a trajectory of the macroblock.

10. The method of claim 9 , wherein the segmented-block motion vectors are determined by:

identifying a lowest depth region of the frame, the lowest depth region comprising neighboring pixels of a similar depth;

identifying macroblocks of the macroblock regions that have possible trajectories consistent with the consistent trajectory;

identifying a segmentation macroblock of the identified macroblocks; and

generating the segmented-block motion vectors to comprise a motion vector for the segmentation macroblock.

11. The method of claim 10 , wherein the segmented-block motion vectors are determined by generating the segmented-block motion vectors to comprise a motion vector for a suitable macroblock of each of the segments.

12. The method of claim 8 , comprising generating a segmentation map of the frame, the segmentation map comprising segmented macroblock regions.

13. The method of claim 8 , comprising:

determining a storage size of the macroblock encoded based on the segmented-block motion vectors; and

determining a storage size of the macroblock encoded based on the motion vector.

14. The method of claim 13 , comprising encoding the macroblock using the motion vector if the storage size of the macroblock encoded based on the segmented-block motion vector is greater than the storage size of the macroblock encoded based on the motion vector.

15. A computer-readable storage memory device for storing computer-readable instructions, the computer-readable instructions providing a macroblock encoding system when executed by one or more processing devices, the computer-readable instructions comprising code configured to:

determine a motion vector for a macroblock of a frame of video based on a function of the macroblock and reference macroblocks of the frame, wherein the function comprises a mean squared difference between the macroblock and the reference macroblocks;

determine, based on information available to an encoder of the video and a decoder of the video, a segmentation map that partitions the macroblock into a plurality of segments along one or more q-pel resolution boundaries of the segments, wherein each of the segments represents an object in the frame of video;

determine a plurality of segmented-block motion vectors for the macroblock based on the segmentation map; and

encode the macroblock using the segmented-block motion vectors.

16. The computer-readable storage memory device of claim 15 , comprising instructions to determine the segmented-block motion vectors by:

identifying a lowest depth region of the frame, the lowest depth region comprising neighboring pixels of a similar depth;

identifying macroblocks of the segmented macroblock regions that have possible trajectories consistent with the consistent trajectory;

identifying a segmentation macroblock of the identified macroblocks; and

generating the segmented-block motion vectors to comprise a motion vector for the segmentation macroblock.

17. The computer-readable storage memory device of claim 16 , wherein the segmented-block motion vectors are determined by generating the segmented-block motion vectors to comprise a motion vector for a suitable macroblock of each of the segments.

18. The computer-readable storage memory device of claim 17 , comprising instructions to:

determine a storage size of the macroblock encoded based on the segmented-block motion vector; and

determine a storage size of the macroblock encoded based on the motion vector.

19. The computer-readable storage memory device of claim 18 , comprising instructions to encode the macroblock using the motion vector if the storage size of the macroblock encoded based on the segmented-block motion vector is greater than the storage size of the macroblock encoded based on the motion vector.

20. The computer-readable storage memory device of claim 18 , comprising instructions to include an indicator in the segmented-block motion vector to indicate that intrablock encoding is used for a specific segment.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2011
From: FLORENCIO, DINEI
To: MICROSOFT CORPORATION
Reel/Frame 027089/0854 →
Continuity (1)
Related Publication 20130101039A1 · Apr 25, 2013