Speculative start point selection for motion estimation iterative search
First Claim
1. A method of refining an iterative search result for motion estimation using a computing device, the method comprising:
- a. determining a starting position comprising;
i. computing a distance value for each of a plurality of positions;
ii. comparing the distance value of each of the plurality of positions; and
iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions;
b. iteratively searching for a smallest distance position starting from the starting position;
c. adding a motion vector cost to a smallest distance value of the smallest distance position to form a total cost;
d. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and
e. selecting the smaller value of the total cost and the predictive motion vector distance value.
1 Assignment
0 Petitions
Accused Products
Abstract
A speculative start point selection for motion estimation iterative search improves the efficiency and quality of the integer-pel motion estimation iterative search by speculatively selecting the start position of the iteration. The start position is selected by comparing the Sum of Absolute Differences (SAD) value of a 0 motion vector, a predicted motion vector and a global motion vector (GMV) and selecting the position with the smallest SAD value. A refinement scheme with a threshold improves the efficiency and quality of the motion estimation iterative search by performing several comparisons to ensure the proper motion vector is selected. Applications of this improved motion estimation search include stabilizing an image as well as many other applications where motion vectors are used.
-
Citations
84 Claims
-
1. A method of refining an iterative search result for motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to a smallest distance value of the smallest distance position to form a total cost; d. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and e. selecting the smaller value of the total cost and the predictive motion vector distance value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system for refining an iterative search result for motion estimation, the system comprising:
-
a. a memory for storing an application, the application configured for; i. determining a starting position comprising; (1) computing a distance value for each of a plurality of positions; (2) comparing the distance value of each of the plurality of positions; and (3) selecting a smallest starting distance position from the distance value of each of the plurality of positions; ii. iteratively searching for a smallest distance position starting from the starting position; iii. adding a motion vector cost to a smallest distance value of the smallest distance position to form a total cost; iv. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and v. selecting the smaller value of the total cost and the predictive motion vector distance value; and b. a processor for processing the application. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. An application for refining an iterative search result for motion estimation processed by a processor, the application comprising:
-
a. a starting position component for determining a smallest starting position for starting an iterative search; b. an iterative search component for iteratively searching for a smallest distance position; and c. a comparison component for comparing a total cost with a predicted motion vector distance value, wherein the total cost includes a smallest distance value of the smallest distance position and a motion vector cost. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26)
-
-
27. A method of refining an iterative search result for motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to a smallest distance value of the smallest distance position to form a total cost; d. determining if a global motion vector is less than a threshold; e. if the global motion vector is less than the threshold, additional steps are taken, including; i. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and ii. selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; and f. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement. - View Dependent Claims (28, 29, 30, 31, 32, 33, 34)
-
-
35. A system for refining an iterative search result for motion estimation, the system comprising:
-
a. a memory for storing an application, the application configured for; i. determining a starting position comprising; (1) computing a distance value for each of a plurality of positions; (2) comparing the distance value of each of the plurality of positions; and (3) selecting a smallest starting distance position from the distance value of each of the plurality of positions; ii. iteratively searching for a smallest distance position starting from the starting position; iii. adding a motion vector cost to a smallest distance value of the smallest distance position to form a total cost; iv. determining if a global motion vector is less than a threshold; v. if the global motion vector is less than the threshold, additional steps are taken, including; (1) comparing the total cost with a predictive motion vector distance value to determine a smaller value; and (2) selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; and vi. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement; and b. a processor for processing the application. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42)
-
-
43. An application for refining an iterative search result for motion estimation processed by a processor, the application comprising:
-
a. a starting position component for determining a smallest starting position for starting an iterative search; b. an iterative search component for iteratively searching for a smallest distance position; c. a comparison component for comparing a total cost with a predicted motion vector distance value, wherein the total cost includes a smallest distance value of the smallest distance position and a motion vector cost; and d. a threshold component for comparing a global motion vector with a threshold to determine whether to execute the comparison component or to use a result from the iterative search component. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50)
-
-
51. A method of selecting a starting position for a motion estimation iterative search using a computing device, the method comprising:
-
a. computing a distance value for each of a plurality of positions; b. comparing the distance value of each of the plurality of positions; and c. selecting a smallest starting distance position from the distance value of each of the plurality of positions. - View Dependent Claims (52, 53, 54, 55, 56)
-
-
57. A method of estimating motion using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; and b. iteratively searching for a smallest distance position starting from the starting position. - View Dependent Claims (58, 59, 60, 61, 62, 63)
-
-
64. A system for estimating motion, the system comprising:
-
a. a memory for storing an application, the application configured for; i. determining a starting position comprising; (1) computing a distance value for each of a plurality of positions; (2) comparing the distance value of each of the plurality of positions; and (3) selecting a smallest starting distance position from the distance value of each of the plurality of positions; and ii. iteratively searching for a smallest distance position starting from the starting position; and b. a processor for processing the application. - View Dependent Claims (65, 66, 67, 68, 69, 70)
-
-
71. An application for estimating motion processed by a processor, the application comprising:
-
a. a starting position component for determining a best starting position for starting an iterative search; and b. an iterative search component for iteratively searching for a smallest distance position. - View Dependent Claims (72, 73, 74, 75, 76, 77)
-
-
78. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; and c. avoiding a local minimum comprising; i. determining a previous position; ii. determining a new position; iii. comparing the previous position and new position; and iv. based on the previous position and the new position comparison, selecting a new search center, wherein the new search center is based on the previous position if the new position is in an opposite direction from the previous position and the new search center is based on the new position if the new position is not in the opposite direction from the previous position.
-
-
79. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; and c. determining a center point of a next search area comprising; i. determining a position of a search area with a smallest distance search value; ii. determining an offset for a center point of a next search area based on the position with the smallest distance search value; and iii. selecting the center point of the next search area based on the offset.
-
-
80. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. determining a center point of a next search area comprising; i. determining a position of a search area with a smallest distance search value; ii. determining an offset for a center point of a next search area based on the position with the smallest distance search value; and iii. selecting the center point of the next search area based on the offset; and d. avoiding a local minimum comprising; i. determining a previous position; ii. determining a new position; iii. comparing the previous position and new position; and iv. based on the previous position and the new position comparison, selecting a new search center, wherein the new search center is based on the previous position if the new position is in an opposite direction from the previous position and the new search center is based on the new position if the new position is not in the opposite direction from the previous position.
-
-
81. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to the smallest distance value of the smallest distance position to form a total cost; d. determining if a global motion vector is less than a threshold; e. if the global motion vector is less than the threshold, additional steps are taken, including; i. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and ii. selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; f. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement; and g. determining a center point of a next search area comprising; i. determining a position of a search area with a smallest distance search value; ii. determining an offset for a center point of a next search area based on the position with the smallest distance search value; and iii. selecting the center point of the next search area based on the offset.
-
-
82. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to the smallest distance value of the smallest distance position to form a total cost; d. determining if a global motion vector is less than a threshold; e. if the global motion vector is less than the threshold, additional steps are taken, including; i. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and ii. selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; f. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement; and g. avoiding a local minimum comprising; i. determining a previous position; ii. determining a new position; iii. comparing the previous position and new position; and iv. based on the previous position and the new position comparison, selecting a new search center, wherein the new search center is based on the previous position if the new position is in an opposite direction from the previous position and the new search center is based on the new position if the new position is not in the opposite direction from the previous position.
-
-
83. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to the smallest distance value of the smallest distance position to form a total cost; d. determining if a global motion vector is less than a threshold; e. if the global motion vector is less than the threshold, additional steps are taken, including; i. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and ii. selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; and f. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement; and g. determining a center point of a next search area comprising; i. determining a position of a search area with the smallest distance search value; ii. determining an offset for a center point of a next search area based on the position with the smallest distance search value; and iii. selecting the center point of the next search area based on the offset; and h. avoiding a local minimum comprising; i. determining a previous position; ii. determining a new position; iii. comparing the previous position and new position; and iv. based on the previous position and the new position comparison, selecting a new search center, wherein the new search center is based on the previous position if the new position is in an opposite direction from the previous position and the new search center is based on the new position if the new position is not in the opposite direction from the previous position.
-
-
84. A method of improving motion estimation using a computing device, the method comprising:
-
a. determining a starting position comprising; i. computing a distance value for each of a plurality of positions; ii. comparing the distance value of each of the plurality of positions; and iii. selecting a smallest starting distance position from the distance value of each of the plurality of positions; b. iteratively searching for a smallest distance position starting from the starting position; c. adding a motion vector cost to the smallest distance value of the smallest distance position to form a total cost; d. determining if a global motion vector is less than a threshold; e. if the global motion vector is less than the threshold, additional steps are taken, including; i. comparing the total cost with a predictive motion vector distance value to determine a smaller value; and ii. selecting the smaller value of the total cost and the predictive motion vector distance value for refinement; f. if the global motion vector is greater than or equal to the threshold, the smallest distance value of the smallest distance position is selected for refinement; and g. determining a center point of a next search area comprising; i. determining a position of a search area with the smallest distance search value; ii. determining an offset for a center point of a next search area based on the position with the smallest distance search value; and iii. selecting the center point of the next search area based on the offset; h. avoiding a local minimum comprising; i. determining a previous position; ii. determining a new position; iii. comparing the previous position and new position; and iv. based on the previous position and the new position comparison, selecting a new search center, wherein the new search center is based on the previous position if the new position is in an opposite direction from the previous position and the new search center is based on the new position if the new position is not in the opposite direction from the previous position; and i. terminating iteratively searching early comprising; i. computing a sub-region distance value of a sub-region; ii. determining a minimum distance value of the sub-region; iii. comparing the minimum distance value with a threshold; iv. ending prematurely, if the minimum distance value is less than the threshold; and v. repeating i-iv until the count is zero, if the minimum distance value is greater than or equal to the threshold.
-
Specification