Adaptive step-size motion estimation based on statistical sum of absolute differences
First Claim
1. In a digital video system compression format where a video sequence is represented in series of frames, including a previous frame followed by a current frame, all separated by a predetermined time interval, the frames being divided into a plurality of blocks with predetermined positions, with each block having a size to include a predetermined matrix of luma pixels, a method for efficiently estimating the change in position of an image represented by a matrix of luma pixel data in a series of blocks in the current frame, from corresponding block-sized matrices of luma pixel data in the previous frame, the method comprising the steps of:
- a) selecting a first block in the current frame;
b) selecting a block-sized matrix of luma pixels in the previous frame as an initial candidate matrix corresponding to the first block in the current frame;
c) providing a short term average comparison of luma pixel data between frames, derived from previous block position change estimates;
d) calculating a search window size, centered about the candidate matrix, in response to the short term average comparison of luma pixel data provided in Step c);
e) where a minimum spacing between block-sized matrices in the search window is provided, comparing the luma pixel data from a plurality of block-sized matrices of luma pixels uniformly distributed inside the search window, to the luma pixel data of first block in the current frame to select a new candidate matrix having luma pixel data most similar to the luma pixel data of the first block in the current frame, whereby the size of the search window varies with the history of motion between frames;
f) reducing the spacing between the plurality of block-sized matrices located inside the search window after each iteration of Step e);
g) iterating the search as follows;
1) when the spacing between the plurality of block-sized matrices is greater than, or equal to the minimum spacing, then return to step e); and
2) when the spacing between the plurality of block-sized matrices is less than the minimum spacing, then continue; and
h) comparing luma pixel data of the final candidate matrix selected in the final iteration of Step e) to the luma pixel data of the first block in the current frame, to calculate a final comparison of luma pixel data, whereby the difference in block position between the final candidate matrix and the first block provides a vector describing motion between frames.
3 Assignments
0 Petitions
Accused Products
Abstract
A novel motion estimation algorithm, AMESSAD (adaptive motion estimation based on statistical sum of absolute difference) is provided. The algorithm adaptively determines motion search step size based on statistical distribution of SAD (sum of absolute difference). That is, search step sizes to estimate motion in one portion of a frame are calculated using SAD values from neighboring portions of the frame. The efficient search procedure improves the implementation of motion compensation and transform based hybrid video coders, such as the H.26P and MPEG-X standard video compression. Compared with fixed step-size motion estimation, the adaptive algorithm improves motion estimation and hence overall video encoding speed. In addition, improved visual quality can be achieved in many cases because the algorithm differentiates regions with motion activity and allocates more motion estimation resources to local areas or local frames with higher motion content.
-
Citations
33 Claims
-
1. In a digital video system compression format where a video sequence is represented in series of frames, including a previous frame followed by a current frame, all separated by a predetermined time interval, the frames being divided into a plurality of blocks with predetermined positions, with each block having a size to include a predetermined matrix of luma pixels, a method for efficiently estimating the change in position of an image represented by a matrix of luma pixel data in a series of blocks in the current frame, from corresponding block-sized matrices of luma pixel data in the previous frame, the method comprising the steps of:
-
a) selecting a first block in the current frame; b) selecting a block-sized matrix of luma pixels in the previous frame as an initial candidate matrix corresponding to the first block in the current frame; c) providing a short term average comparison of luma pixel data between frames, derived from previous block position change estimates; d) calculating a search window size, centered about the candidate matrix, in response to the short term average comparison of luma pixel data provided in Step c); e) where a minimum spacing between block-sized matrices in the search window is provided, comparing the luma pixel data from a plurality of block-sized matrices of luma pixels uniformly distributed inside the search window, to the luma pixel data of first block in the current frame to select a new candidate matrix having luma pixel data most similar to the luma pixel data of the first block in the current frame, whereby the size of the search window varies with the history of motion between frames; f) reducing the spacing between the plurality of block-sized matrices located inside the search window after each iteration of Step e); g) iterating the search as follows; 1) when the spacing between the plurality of block-sized matrices is greater than, or equal to the minimum spacing, then return to step e); and 2) when the spacing between the plurality of block-sized matrices is less than the minimum spacing, then continue; and h) comparing luma pixel data of the final candidate matrix selected in the final iteration of Step e) to the luma pixel data of the first block in the current frame, to calculate a final comparison of luma pixel data, whereby the difference in block position between the final candidate matrix and the first block provides a vector describing motion between frames. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. In a digital video system compression format where a video sequence is represented in series of frames, including a previous frame followed by a current frame, all separated by a predetermined time interval, the frames being divided into a plurality of blocks with predetermined positions, with each block having a size to include a predetermined matrix of luma pixels, a method for efficiently estimating the change in position of an image represented by a matrix of luma pixel data in a series of blocks in the current frame, from corresponding block-sized matrices of luma pixel data in the previous frame, the method comprising the steps of:
-
a) selecting a first block in the current frame; b) selecting a block-sized matrix of luma pixels in the previous frame as an initial candidate matrix corresponding to the first block in the current frame; c) providing a short term average comparison of luma pixel data between frames, derived from previous block position change estimates; d) with the use of the short term average provided in Step c) to define the search pattern, searching in the area of luma pixels surrounding the candidate matrix to find a final candidate block-sized matrix that most closely compares with the luma pixel data of the first block, whereby a history of position changes defines the search pattern; and e) updating the short term average comparison of luma pixel data, with the comparison of luma pixel data of the first block and the final candidate matrix calculated in Step d), whereby the short term average is modified for provision in Step c) of the next block position change estimate. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. In a digital video system compression format where a video sequence is represented in series of frames, including a previous frame followed by a current frame, all separated by a predetermined time interval, the frames being divided into a plurality of macroblocks with predetermined positions, with each macroblock having a size to include a 16×
- 16 matrix of luma pixels, a method for efficiently estimating the change in position of an image represented by a matrix of luma pixel data in a series of macroblocks in the current frame, from corresponding macroblock-sized matrices of luma pixel data in the previous frame, the method comprising the steps of;
a) selecting the next macroblock in the series of macroblocks in the current frame; b) selecting a macroblock-sized matrix of luma pixels in the previous frame as an initial candidate matrix corresponding to the macroblock selected in Step a), in response to position changes previously estimated for neighboring blocks, whereby an intra prediction is used to start the estimation process; c) calculating the SAD (SAD-- init) between the macroblock selected in Step a) and the initial candidate matrix selected in Step b); d) providing a short term average SAD (SAD-- ave) of luma pixel data between frames, derived from previous position change estimates; e) providing a long term average of ME-- step (ME-- stepAVE), made in a plurality of macroblock position change estimates; f) providing a variance in SAD (SAD-- var) derived from previous position change estimates; g) calculating the number of iterations (ME-- step) of searching required until the spacing between block-sized matrices is the minimum spacing, the ME-- step calculation being responsive to the values of SAD-- init, SAD-- ave, ME-- step AVE, and SAD-- var; h) calculating the initial spacing (s) between potential candidate matrices in response to the value of ME-- step calculated in Step g); i) calculating the SAD between the macroblock selected in Step a) and at least 8 uniformly distributed macroblock-sized matrices, with a spacing between the centers of neighboring matrices equal to s, to locate a new candidate matrix with the minimum SAD (SAD-- min); j) iterating the search process as follows; 1) when s is greater than, or equal to the minimum spacing, then divide s by 2, creating a new value of s, and go to Step i); and 2) when s is less than the minimum spacing, then continue; k) selecting the final candidate matrix in the final iteration of Step i) and comparing to the block selected in Step a) to calculate SAD-- min; l) with the SAD-- min, updating SAD-- ave, ME-- stepAVE, and SAD-- var for use in calculating ME-- step in Step g) of the position change estimate of the next macroblock; and m) going to Step a) and repeating the position change estimate process for the next macroblock in the series subsequent to the macroblock selected in Step a), whereby the number of search iterations required for a position change estimate varies in response to the history of SAD of previously estimated macroblocks.
- 16 matrix of luma pixels, a method for efficiently estimating the change in position of an image represented by a matrix of luma pixel data in a series of macroblocks in the current frame, from corresponding macroblock-sized matrices of luma pixel data in the previous frame, the method comprising the steps of;
Specification