Motion estimation/compensation for screen capture video
First Claim
1. A screen capture encoder comprising:
- a screen capture module for recording plural images of a computer desktop environment in operation as plural screen capture frames, the plural screen capture frames including a current screen capture frame;
a frame buffer for storing a reference screen capture frame; and
a motion estimation module adapted to screen capture video, the motion estimation module for estimating motion from the reference screen capture frame for one or more regions of pixel values in the current screen capture frame, wherein the estimating comprises for a current region of pixel values among the one or more regions of pixel values in the current screen capture frame;
searching for a candidate motion vector for the current region of pixel values in the current screen capture frame according to a motion vector search pattern, wherein the current region of pixel values is at a location (x, y) in the current screen capture frame, and wherein the motion vector search pattern prioritizes motion vectors characteristic of motion in screen capture video such that the motion vectors characteristic of motion in screen capture video are evaluated before other motion vectors;
evaluating the candidate motion vector for the current region of pixel values, wherein the candidate motion vector indicates a displacement location (Δ
x+x, Δ
y+y) of a reference frame region of pixel values in the reference screen capture frame, wherein the evaluating the candidate motion vector comprises;
comparing the current region at the location (x, y) in the current screen capture frame with the reference frame region at the displacement location (Δ
x+x, Δ
y+y) in the reference screen capture frame; and
computing a distortion measure based at least in part upon the comparing, wherein the distortion measure measures a difference between the current region and the reference frame region using identical pixel value matching criteria; and
selecting a final motion vector for the current region of pixel values based at least in part on the evaluating.
3 Assignments
0 Petitions
Accused Products
Abstract
The present invention relates to motion estimation and compensation. For example, a screen capture encoder performs motion estimation that is adapted to screen capture video in various respects. For example, the motion estimation uses a distortion measure based upon the count of equal/unequal pixels in two regions, sub-samples the distortion measure to speed up motion estimation, and/or uses a search pattern that prioritizes types of motion common in screen capture video. Or, a screen capture decoder performs motion compensation that is adapted to screen capture video in various respects. For example, the decoder performs the motion compensation for pixels with different values at corresponding locations in a current frame and a reference frame, but not for all pixels of the current frame. Alternatively, an encoder/decoder performs the motion estimation/compensation to compress/decompress other kinds of content.
-
Citations
34 Claims
-
1. A screen capture encoder comprising:
-
a screen capture module for recording plural images of a computer desktop environment in operation as plural screen capture frames, the plural screen capture frames including a current screen capture frame; a frame buffer for storing a reference screen capture frame; and a motion estimation module adapted to screen capture video, the motion estimation module for estimating motion from the reference screen capture frame for one or more regions of pixel values in the current screen capture frame, wherein the estimating comprises for a current region of pixel values among the one or more regions of pixel values in the current screen capture frame; searching for a candidate motion vector for the current region of pixel values in the current screen capture frame according to a motion vector search pattern, wherein the current region of pixel values is at a location (x, y) in the current screen capture frame, and wherein the motion vector search pattern prioritizes motion vectors characteristic of motion in screen capture video such that the motion vectors characteristic of motion in screen capture video are evaluated before other motion vectors; evaluating the candidate motion vector for the current region of pixel values, wherein the candidate motion vector indicates a displacement location (Δ
x+x, Δ
y+y) of a reference frame region of pixel values in the reference screen capture frame, wherein the evaluating the candidate motion vector comprises;comparing the current region at the location (x, y) in the current screen capture frame with the reference frame region at the displacement location (Δ
x+x, Δ
y+y) in the reference screen capture frame; andcomputing a distortion measure based at least in part upon the comparing, wherein the distortion measure measures a difference between the current region and the reference frame region using identical pixel value matching criteria; and selecting a final motion vector for the current region of pixel values based at least in part on the evaluating. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A screen capture decoder comprising:
-
a buffer for storing a reference screen capture frame; and a motion compensation module adapted to screen capture video, the motion compensation module for compensating for motion from the reference screen capture frame for one or more regions of pixel values in a current screen capture frame, wherein the compensating comprises for a current region of pixel values a location (x, y) among the one or more regions of pixel values in the current screen capture frame; receiving and processing a final motion vector that specifies a displacement for the current region of pixel values, the final motion vector calculated at a screen capture encoder based on an evaluation of one or more candidate motion vectors for the current region of pixels, wherein the evaluation comprises, for a given one of the one or more candidate motion vectors; comparing the current region at the location (x, y) in the current screen capture frame with a reference frame region at a displacement location (Δ
x+x, Δ
y+y) in the reference screen capture frame; andcomputing a distortion measure based at least in part upon the comparing, wherein the distortion measure measures a difference between the current region and the reference frame region using identical pixel value matching criteria; wherein the one or more candidate motion vectors are evaluated according to a motion vector search pattern, and wherein the motion vector search pattern prioritizes motion vectors characteristic of motion in screen capture video such that the motion vectors characteristic of motion in screen capture video are evaluated before other motion vectors; wherein each of the reference and the current screen capture frames is an image recorded from at least part of a computer desktop environment in operation. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
-
searching for a candidate motion vector for a current frame region of pixel values in a current screen capture frame according to a motion vector search pattern, wherein the current screen capture frame is recorded from a computer desktop environment in operation, wherein the current frame region is at a location (x, y) in the current screen capture frame, and wherein the motion vector search pattern prioritizes motion vectors characteristic of motion in screen capture video such that the motion vectors characteristic of motion in screen capture video are evaluated before other motion vectors; evaluating the candidate motion vector for the current frame region, wherein the candidate motion vector indicates a displacement location (Δ
x+x, Δ
y+y) of a reference frame region of pixel values in a reference screen capture frame wherein the evaluating the candidate motion vector comprises;comparing the current frame region at the location (x, y) in the current screen capture frame with the reference frame region at the displacement location (Δ
x+, Δ
y+y) in the reference screen capture frame; andcomputing a distortion measure based at least in part upon the comparing, wherein the distortion measure measures a difference between the current frame region and the reference frame region using identical pixel value matching criteria; selecting a final motion vector for the current frame region; and encoding the current frame region with the final motion vector. - View Dependent Claims (17, 18, 19, 20, 21)
-
-
22. In a computer system, a method of motion estimation comprising:
-
in a motion estimation module adapted to screen capture video, for each of one or more motion vectors for a current frame region in screen capture video, computing a count of differing pixel values, each of the one or more motion vectors specifying a different reference frame region in the screen capture video, wherein the screen capture video comprises plural images recorded from a computer desktop environment in operation as plural screen capture frames, the plural screen capture frames including the current frame region, and wherein the computing the count of differing pixel values for each of the one or more motion vectors includes, comparing multiple-bit pixel values at each of one or more corresponding locations in the current frame region and the different reference frame region specified by the motion vector; and for each of the one or more corresponding locations, incrementing the count of differing pixel values based upon whether the compared multiple-bit pixel values are equal or not equal; selecting a final motion vector for the current frame region, wherein the selecting is based at least in part upon the computing the differing pixel value count; and encoding the current frame region with the final motion vector. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method of motion estimation from a reference frame to a current frame, the method comprising:
-
in a motion estimation module adapted to screen capture video, for each of one or more candidate motion vectors for a current frame region, selecting the candidate motion vector according to a prioritized motion vector search pattern adapted to screen capture video that prioritizes plural pure horizontal motion vectors and plural pure vertical motion vectors above all other motion vectors; and computing a distortion measure for the selected candidate motion vector; selecting a final motion vector for the current frame region; and encoding the current frame region with the final motion vector. - View Dependent Claims (28)
-
-
29. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
-
in a motion estimation module adapted to screen capture video, evaluating a candidate motion vector for a current frame region of pixel values in a current screen capture frame, wherein the current screen capture frame is an image recorded from a computer desktop environment in operation, wherein the current frame region is at a location (x, y) in the current screen capture frame, wherein the candidate motion vector indicates a displacement location (Δ
x+x, Δ
y+y) for a reference frame region of pixel values in a reference screen capture frame, and wherein the evaluating includes computing a sub-sampled pixel value distortion measure for the candidate motion vector;selecting a final motion vector for the current frame region; and encoding the current frame region with the final motion vector. - View Dependent Claims (30)
-
-
31. A computer-readable medium storing computer-executable instructions for causing a computer system programmed thereby to perform a method comprising:
-
using segmentation data to identify one or more unchanged pixels between a current screen capture frame and a reference screen capture frame, wherein the current screen capture frame is an image recorded from a computer desktop environment in operation; performing motion compensation for one or more regions of the current screen capture frame, wherein the motion compensation comprises, for each of the one or more motion compensated regions; receiving one or more motion vectors; and calculating motion compensated pixel values; and assembling the current screen capture frame based at least in part upon the one or more identified unchanged pixels and the one or more motion compensated regions. - View Dependent Claims (32)
-
-
33. A method comprising:
-
comparing pixel values at corresponding locations in a current screen capture frame and a reference screen capture frame to identify pixels in the current screen capture frame with changed values; creating a bounding box around a group of the pixels in the current screen capture frame with changed values; performing motion estimation for the bounding box, thereby determining motion data for the bounding box relative to the reference screen capture frame; comparing the bounding box with a predicted bounding box to identify intra pixels within the bounding box not predicted by the motion estimation; and encoding the intra pixels using intra compression. - View Dependent Claims (34)
-
Specification