IP Library Granted Patent US 10,506,248
Granted Patent B2
US 10,506,248 · App. 15/395,983 · Granted Dec 10, 2019

Foreground detection for video stabilization

Inventors: Melanie Sclar (Menlo Park, CA); Amit Puntambekar (Fremont, CA); Michael Hamilton Coward (Solano Beach, CA); Wurzel David Parsons-Keir (Woodinville, WA)
Assignee: Facebook, Inc.
H04N19/513G06K9/00677G06K9/6269G06K9/6274G06T9/002H04N5/23264H04N5/23267H04N19/102H04N19/139H04N19/167H04N19/172H04N19/176H04N19/40H04N19/46
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,506,248
App. No.
15/395,983
Granted
Dec 10, 2019
Kind
B2
Abstract

Video foreground and background detection is performed on a received video sequence on a macroblock by macroblock basis using motion vector encoding information associated with each macroblock. Some of the macroblocks in each frame, for example, edge or corner macroblocks, may be exempt from the foreground and background detection. The detection information, along with the video data, is passed to an image stabilization algorithm that prepares the video for subsequent video compression.

Claims (46)

1. A computer-implemented method of processing video, comprising:

receiving a video sequence comprising a plurality of encoded video frames,

wherein each encoded video frame includes a number of macroblocks and motion vector information associated with the number of macroblocks;

classifying the number of macroblocks as being one of a background macroblock, a foreground macroblock, and an exempt macroblock,

wherein, from a perspective of a viewer of the video, the background macroblock appears as being in background and the foreground macroblock appears as being in front of a visual rendering of the video, and

wherein the classifying operation includes classifying an edge macroblock that is positioned on a peripheral border of a video frame as being an exempt macroblock for which no stabilization is to be performed by a video stabilization stage; and

providing results of the classifying, along with the video sequence, to the video stabilization stage in which video is stabilized based on the results of the classifying.

2. The method of claim 1 , further comprising:

operating the video stabilization stage only on background macroblocks, while refraining from altering foreground macroblocks and exempt macroblocks.

3. The method of claim 1 , further comprising:

operating the video stabilization stage on background macroblocks, and at least some of foreground macroblocks.

4. The method of claim 1 , further including:

receiving gyro information from a device that captured the video sequence along with the video sequence; and

wherein the classifying is responsive to the gyro information.

5. The method of claim 4 , wherein a given macroblock is more likely classified as a foreground macroblock when the gyro information indicates a higher speed of movement of the device when the foreground macroblock was captured.

6. The method of claim 4 , wherein a given macroblock is more likely classified as a background macroblock when the gyro information indicates a lower speed of movement of the device when the foreground macroblock was captured.

7. The method of claim 1 , wherein, for a macroblock in the video frame not having an associated motion vector, deciding stabilization based on nearest neighbor macroblock decisions.

8. The method of claim 1 , further including:

receiving geographic location information from a device that captured the video sequence along with the video sequence; and

wherein the classifying is responsive to the geographic location information.

9. A computer program product comprising a non-transitory computer-readable medium computer-readable medium that stores processor-executable code, the code comprising instructions for implementing a method of analyzing a video sequence, the instructions comprising:

receiving a video sequence comprising a plurality of encoded video frames, wherein each encoded video frame includes a number of macroblocks and motion vector information associated with the number of macroblocks;

identifying at least a directionality of relative movement between consecutive ones of the plurality of video frames;

associating, using the directionality, a priority of a subsequent video stabilization with at least some of the number of macroblocks, wherein the instructions for associating includes classifying an edge macroblock that is positioned on a peripheral border of a video frame as being an exempt macroblock for which no stabilization is to be performed by the video stabilization stage; and

providing results of the classifying, along with the video sequence, to a video stabilization stage in which video is stabilized based on the results of the classifying.

10. The computer program product of claim 9 , wherein the instructions further comprising:

operating the video stabilization stage only on a subset of macroblocks having a specific associated priority.

11. The computer program product of claim 9 , wherein the instructions further including:

receiving gyro information from a device that captured the video sequence along with the video sequence; and

wherein the associating is responsive to the gyro information.

12. An apparatus comprising a memory, a processor for analyzing a video sequence, comprising:

module for receiving a video sequence comprising a plurality of encoded video frames,

wherein each encoded video frame includes a number of macroblocks and motion vector information associated with the number of macroblocks;

module for classifying the number of macroblocks as being one of a background macroblock, a foreground macroblock, and an exempt macroblock,

wherein, from a perspective of a viewer of the video, the background macroblock appears as being in background and the foreground macroblock appears as being in front of a visual rendering of the video, and

wherein the classifying module includes classifying an edge macroblock that is positioned on a peripheral border of a video frame as being an exempt macroblock for which no stabilization is to be performed by a video stabilization stage; and

module for providing results of the classifying, along with the video sequence, to a video stabilization stage in which video is stabilized based on the results of the classifying.

13. The apparatus of claim 12 , further comprising:

module for operating the video stabilization stage only on background macroblocks, while refraining from altering background macroblocks and exempt macroblocks.

14. The apparatus of claim 12 , further comprising:

module for operating the video stabilization stage on background macroblocks, and at least some foreground macroblocks.

15. The apparatus of claim 12 , further including:

module for receiving gyro information from a device that captured the video sequence along with the video sequence; and

wherein the classifying is responsive to the gyro information.

16. The apparatus of claim 15 , wherein a given macroblock is more likely classified as a foreground macroblock when the gyro information indicates a higher speed of movement of the device when the foreground macroblock was captured.

17. The apparatus of claim 15 , wherein a given macroblock is more likely classified as a background macroblock when the gyro information indicates a lower speed of movement of the device when the foreground macroblock was captured.

Assignments (2)
CHANGE OF NAME Recorded Dec 1, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058294/0215 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2017
From: SCLAR, MELANIE; PUNTAMBEKAR, AMIT; COWARD, MICHAEL HAMILTON; PARSONS-KEIR, WURZEL DAVID
To: FACEBOOK, INC.
Reel/Frame 041278/0225 →
Continuity (2)
Provisional Application 62357168 · Jun 30, 2016
Related Publication 20180007381A1 · Jan 4, 2018