IP Library Granted Patent US 7,480,334
Granted Patent B2
US 7,480,334 · App. 10/833,198 · Granted Jan 20, 2009

Temporal motion vector filtering

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 7,480,334
App. No.
10/833,198
Granted
Jan 20, 2009
Kind
B2
Abstract

Methods and apparatus, including computer program products, implementing and using techniques for performing temporal motion vector filtering in digital video are disclosed. A recursive hierarchical process is used to determine a motion vector. In the recursive hierarchical process, a neighborhood of old motion vectors is filtered to generate a first estimated motion vector for an image patch in a pair of two image frames. The filtering process uses multiple vectors in a neighborhood around the old motion vector to improve the prediction of the first estimated motion vector. The temporal vector partitioning process separates motion vectors associated with an object from motion vectors associated with a background before selecting a best motion vector, which improves the selection process. The process also works well in the absence of object/background boundaries, as in this case the outlier (incorrect) vector or vectors will be separated out from the good vectors.

Claims (56)

1. A method for performing temporal motion vector filtering in a digital video sequence, comprising:

receiving a plurality of vectors, the vectors representing potential motion vectors for an image patch including one or more of an object and a background;

partitioning the plurality of vectors into two or more vector clusters, including:

determining a first seed vector for a first cluster and a second seed vector for a second cluster by identifying two vectors among the plurality of vectors that are furthest apart from each other; and

for each other vector in the plurality of vectors:

placing the vector into the first cluster if the vector is closest to the first seed vector; and

placing the vector into the second cluster if the vector is closest to the second seed vector;

determining a representative vector for each vector cluster;

testing each representative vector to determine which representative vector most accurately reflects a displacement of the image patch between a first frame and a second frame of the digital video; and

selecting as a motion vector the representative vector that most accurately reflects the displacement of the image patch.

2. The method of claim 1 , wherein determining a representative vector includes:

for each cluster, determining which vector in the cluster has a minimum total distance from all the other vectors in the cluster.

3. The method of claim 1 , wherein each cluster represents an object or a background in the digital video.

4. The method of claim 1 , wherein each image patch includes a plurality of pixels.

5. The method of claim 1 , wherein one vector in the plurality of vectors represents an old motion vector originating at a first pixel and ending at a second pixel, and the other vectors in the plurality of vectors originate at the first pixel and end at pixels different from the second pixel in a horizontal direction or a vertical direction.

6. The method of claim 1 , wherein the size of each image patch is 8 by 8 pixels.

7. A method for performing temporal motion vector filtering in a digital video sequence, comprising:

receiving a plurality of vectors, the vectors representing potential motion vectors for an image patch including one or more of an object and a background;

partitioning the plurality of vectors into two or more vector clusters;

determining a representative vector for each vector cluster;

testing each representative vector to determine which representative vector most accurately reflects a displacement of the image patch between a first frame and a second frame of the digital video, including:

for each representative vector:

centering a first window on a pixel that forms an origin of the representative vector;

centering a second window on a pixel that forms an end point of the representative vector;

determining a sum of absolute differences of luma values for the pixels in the first window and pixels at corresponding positions in the second window; and

selecting as the representative vector most accurately reflects a displacement of the image patch the representative vector that has a minimum sum of absolute differences; and

selecting as a motion vector the representative vector that most accurately reflects the displacement of the image patch.

8. The method of claim 7 , wherein the dimensions of the first and second windows are identical to the dimensions of the image patch.

9. A computer program product for performing temporal motion vector filtering in a digital video sequence, comprising at least one computer-readable medium having a plurality of computer program instructions stored therein, which are configured to cause at least one computing device to:

receive a plurality of vectors, the vectors representing potential motion vectors for an image patch including one or more of an object and a background;

partition the plurality of vectors into two or more vector clusters, including;

determine a first seed vector for a first cluster and a second seed vector for a second cluster by identifying two vectors among the plurality of vectors that are furthest apart from each other; and

for each other vector in the plurality of vectors:

place the vector into the first cluster if the vector is closest to the first seed vector; and

place the vector into the second cluster if the vector is closest to the second seed vector;

determine a representative vector for each vector cluster;

test each representative vector to determine which representative vector most accurately reflects a displacement of the image patch between a first frame and a second frame of the digital video; and

select as a motion vector the representative vector that most accurately reflects the displacement of the image patch.

10. The computer program product of claim 9 , wherein the instructions to determine a representative vector include instructions to:

for each cluster, determine which vector in the cluster has a minimum total distance from all the other vectors in the cluster.

11. The computer program product of claim 9 , wherein each cluster represents an object or a background in the digital video.

12. The computer program product of claim 9 , wherein each image patch includes a plurality of pixels.

13. The computer program product of claim 9 , wherein one vector in the plurality of vectors represents an old motion vector originating at a first pixel and ending at a second pixel, and the other vectors in the plurality of vectors originate at the first pixel and end at pixels different from the second pixel in a horizontal direction or a vertical direction.

14. The computer program product of claim 9 , wherein the size of each image patch is 8 by 8 pixels.

15. A computer program product for performing temporal motion vector filtering in a digital video sequence, comprising at least one computer-readable medium having a plurality of computer program instructions stored therein, which are configured to cause at least one computing device to:

receive a plurality of vectors, the vectors representing potential motion vectors for an image patch including one or more of an object and a background;

partition the plurality of vectors into two or more vector clusters, including;

determine a representative vector for each vector cluster;

test each representative vector to determine which representative vector most accurately reflects a displacement of the image patch between a first frame and a second frame of the digital video, including:

for each representative vector:

center a first window on a pixel that forms an origin of the representative vector;

center a second window on a pixel that forms an end point of the representative vector;

determine a sum of absolute differences of luma values for the pixels in the first window and pixels at corresponding positions in the second window; and

select as the representative vector most accurately reflects a displacement of the image patch the representative vector that has a minimum sum of absolute differences; and

select as a motion vector the representative vector that most accurately reflects the displacement of the image patch.

16. The computer program product of claim 15 , wherein the dimensions of the first and second windows are identical to the dimensions of the image patch.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2009
From: GENESIS MICROCHIP INC.
To: TAMIRAS PER PTE. LTD., LLC
Reel/Frame 022915/0929 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2004
From: NAIR, HARI N.
To: GENESIS MICROCHIP INC.
Reel/Frame 015276/0226 →