IP Library Granted Patent US 9,307,122
Granted Patent B2
US 9,307,122 · App. 11/535,647 · Granted Apr 5, 2016

Method, apparatus, and computer program product for providing motion estimation for video encoding

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 9,307,122
App. No.
11/535,647
Granted
Apr 5, 2016
Kind
B2
Abstract

An apparatus for providing motion estimation for video encoding includes a selection element and a processing element. The selection element is configured to select a subset including less than all of candidate pixel locations from among a plurality of candidate pixel locations used for motion vector determination based on a relationship between a best candidate pixel location of a first level of accuracy and a best candidate pixel location of a second level of accuracy. The processing element is configured to process an input video sequence to determine a motion vector at the first level of accuracy, to refine the motion vector at the second level of accuracy, and to determine the motion vector at a third level of accuracy using only the subset of candidate pixel locations.

Claims (41)

1. A method comprising:

processing an input video sequence to determine a motion vector at a first level of accuracy;

refining the motion vector at a second level of accuracy;

selecting, with a selection element, a subset including less than all of candidate pixel locations at least partially based on whether a best candidate pixel location of the second level of accuracy is the same as a best candidate pixel location of the first level of accuracy; and

determining the motion vector at a third level of accuracy based on the subset of candidate pixel locations,

wherein when the best candidate pixel location of the second level of accuracy is the same as the best candidate pixel location of the first level of accuracy and a second best candidate pixel location of the second level of accuracy is known, selecting the subset of candidate pixel locations comprises selecting candidate pixel locations proximate to the best candidate pixel location of the first level of accuracy that are between the best candidate pixel location of the first level of accuracy and the second best candidate pixel location of the second level of accuracy.

2. The method according to claim 1 , wherein when the best candidate pixel location of the second level of accuracy is not the same as the best candidate pixel location of the first level of accuracy, selecting the subset of candidate pixel locations comprises selecting candidate pixel locations proximate to the best candidate pixel location of the second level of accuracy that are between the best candidate pixel location of the second level of accuracy and the best candidate pixel location of the first level of accuracy.

3. The method according to claim 1 , wherein processing the input video sequence to determine the motion vector at the first level of accuracy comprises determining the best candidate pixel location of the first level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the first level of accuracy.

4. The method according to claim 1 , wherein refining the motion vector at the second level of accuracy comprises determining the best candidate pixel location of the second level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the second level of accuracy.

5. The method according to claim 1 , wherein determining the motion vector at the third level of accuracy comprises determining the best candidate pixel location of the third level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the third level of accuracy.

6. The method according to claim 1 , wherein selecting the subset of candidate pixel locations comprises selecting less than half of a total number of candidate pixel locations.

7. A computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:

a first executable portion for processing an input video sequence to determine a motion vector at a first level of accuracy;

a second executable portion for refining the motion vector at a second level of accuracy;

a third executable portion for selecting a subset including less than all of candidate pixel locations at least partially based on whether a best candidate pixel location of the second level of accuracy is the same as a best candidate pixel location of the first level of accuracy; and

a fourth executable portion for determining the motion vector at a third level of accuracy based on the subset of candidate pixel locations,

wherein when the best candidate pixel location of the second level of accuracy is the same as the best candidate pixel location of the first level of accuracy and a second best candidate pixel location of the second level of accuracy is known, selecting the subset of candidate pixel locations comprises selecting candidate pixel locations proximate to the best candidate pixel location of the first level of accuracy that are between the best candidate pixel location of the first level of accuracy and the second best candidate pixel location of the second level of accuracy.

8. The computer program product according to claim 7 , wherein when the best candidate pixel location of the second level of accuracy is not the same as the best candidate pixel location of the first level of accuracy, the third executable portion includes instructions for selecting candidate pixel locations proximate to the best candidate pixel location of the second level of accuracy that are between the best candidate pixel location of the second level of accuracy and the best candidate pixel location of the first level of accuracy.

9. The computer program product according to claim 7 , wherein the first executable portion includes instructions for determining the best candidate pixel location of the first level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the second level of accuracy.

10. The computer Program product according to claim 7 , wherein the second executable portion includes instructions for determining the best candidate pixel location of the second level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the second level of accuracy.

11. The computer program product according to claim 7 , wherein the fourth executable portion includes instructions for determining the best candidate pixel location of the second level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the second level of accuracy.

12. The computer program product according to claim 7 , wherein the third executable portion includes instructions for selecting less than half of a total number of candidate pixel locations.

13. An apparatus comprising:

a selection element configured to select a subset including less than all of candidate pixel locations from among a plurality of candidate pixel locations used for motion vector determination at least partially based on whether a best candidate pixel location of a first level of accuracy is the same as a best candidate pixel location of a second level of accuracy; and

a processing element configured to:

process an input video sequence to determine a motion vector at the first level of accuracy,

refine the motion vector at the second level of accuracy, and

determine the motion vector at a third level of accuracy based on the subset of candidate pixel locations,

wherein when the best candidate pixel location of the second level of accuracy is the same as the best candidate pixel location of the first level of accuracy and a second best candidate pixel location of the second level of accuracy is known, selecting the subset of candidate pixel locations comprises selecting candidate pixel locations proximate to the best candidate pixel location of the first level of accuracy that are between the best candidate pixel location of the first level of accuracy and the second best candidate pixel location of the second level of accuracy.

14. The apparatus according to claim 13 , wherein when the best candidate pixel location of the second level of accuracy is not the same as the best candidate pixel location of the first level of accuracy, the selection element is configured to select the subset of candidate pixel locations by selecting candidate pixel locations proximate to the best candidate pixel location of the second level of accuracy that are between the best candidate pixel location of the second level of accuracy and the best candidate pixel location of the first level of accuracy.

15. The apparatus according to claim 13 , wherein the processing element is configured to determine the best candidate pixel location of the first level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the first level of accuracy.

16. The apparatus according to claim 15 , wherein the processing element is configured to determine the best candidate pixel location of the second level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block at the second level of accuracy.

17. The apparatus according to claim 16 , wherein the processing element is configured to determine the best candidate pixel location of the third level of accuracy corresponding to a candidate block in a reference frame that most closely matches an original block in a reference frame at the third level of accuracy.

18. The apparatus according to claim 17 , wherein the first level of accuracy corresponds to an integer pixel level, the second level of accuracy corresponds to a half pixel level and the third level of accuracy corresponds to a quarter pixel level.

19. The apparatus according to claim 13 , wherein the selection element is configured to select less than half of a total number of candidate pixel locations.

20. The apparatus according to claim 13 , wherein the apparatus is embodied in a mobile terminal.

21. An encoder that utilizes motion estimation, the encoder comprising:

a motion estimator configured to process an input video sequence to determine a motion vector at a first level of accuracy, refine the motion vector at a second level of accuracy, select a subset including less than all of candidate pixel locations at least partially based on whether a best candidate pixel location of the second level of accuracy is the same as a best candidate pixel location of the first level of accuracy, and determine the motion vector at a third level of accuracy using only the subset of candidate pixel locations; and

a motion compensated prediction block configured to apply the motion vector determined at the third level of accuracy to a reference frame in order to generate a prediction macroblock that is motion compensated,

wherein when the best candidate pixel location of the second level of accuracy is the same as the best candidate pixel location of the first level of accuracy and a second best candidate pixel location of the second level of accuracy is known, selecting the subset of candidate pixel locations comprises selecting candidate pixel locations proximate to the best candidate pixel location of the first level of accuracy that are between the best candidate pixel location of the first level of accuracy and the second best candidate pixel location of the second level of accuracy.

22. The method according to claim 1 , wherein the method is carried out within an image processing chain and responsive to one of predetermined settings and user selection.

Assignments (10)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2023
From: CONVERSANT WIRELESS LICENSING S.A R.L.
To: CONVERSANT WIRELESS LICENSING LTD.
Reel/Frame 063493/0522 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: CPPIB CREDIT INVESTMENTS INC.
To: CONVERSANT WIRELESS LICENSING S.A R.L.
Reel/Frame 057204/0857 →
AMENDED AND RESTATED U.S. PATENT SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Aug 22, 2018
From: CONVERSANT WIRELESS LICENSING S.A R.L.
To: CPPIB CREDIT INVESTMENTS, INC.
Reel/Frame 046897/0001 →
CHANGE OF NAME Recorded Oct 20, 2017
From: CORE WIRELESS LICENSING S.A.R.L.
To: CONVERSANT WIRELESS LICENSING S.A R.L.
Reel/Frame 044516/0772 →
UCC FINANCING STATEMENT AMENDMENT - DELETION OF SECURED PARTY Recorded Aug 30, 2016
From: NOKIA CORPORATION
To: MICROSOFT CORPORATION
Reel/Frame 039872/0112 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2011
From: 2011 INTELLECTUAL PROPERTY ASSET TRUST
To: CORE WIRELESS LICENSING S.A.R.L
Reel/Frame 027441/0819 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2011
From: NOKIA CORPORATION
To: NOKIA 2011 PATENT TRUST
Reel/Frame 027120/0608 →
CHANGE OF NAME Recorded Oct 26, 2011
From: NOKIA 2011 PATENT TRUST
To: 2011 INTELLECTUAL PROPERTY ASSET TRUST
Reel/Frame 027121/0353 →
SHORT FORM PATENT SECURITY AGREEMENT Recorded Sep 13, 2011
From: CORE WIRELESS LICENSING S.A.R.L.
To: NOKIA CORPORATION; MICROSOFT CORPORATION
Reel/Frame 026894/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2006
From: LAINEMA, JANI; HALLAPURO, ANTTI; UGUR, KEMAL
To: NOKIA CORPORATION
Reel/Frame 018312/0572 →