System and method for cross correlation with application to video motion vector estimator
First Claim
1. A data compression method for compressing first image data representing a first image signal and having a plurality of data blocks stored in a memory, each data block representing a portion of said first image data, the steps of the method comprising:
- (a) selecting first and second input data blocks from said plurality of data blocks in said first image;
(b) converting the input data blocks to a complex data block by making the first data block a real part and the second data block an imaginary part of said complex data block;
(c) transforming said complex data block to a complex frequency domain data block;
(d) converting said complex frequency domain data block into a first frequency domain data block representing said first input data block and a second frequency domain data block representing said second input data block;
(e) providing data representing a second image having a plurality of search blocks, and selecting first and second input search blocks from said data representing said second image, the input search blocks corresponding to a portion of said second image most likely to contain a best match to the input data blocks;
(f) converting the input search blocks to a complex search block having real and imaginary pads by making the first search block the real pad and the second search block the imaginary pad of said complex search block;
(g) transforming said complex search block to a complex first frequency domain search block;
(h) converting said complex frequency domain search block to a first frequency domain search block representing said first input search block and a second frequency domain search block representing said second input search block;
(i) multiplying the first frequency domain blocks to form a first resultant block and multiplying the second frequency domain blocks to form a second resultant block;
(j) converting said resultant blocks into a complex resultant block;
(k) inverse transforming the complex resultant block to a resultant spatial block having real and imaginary pads;
(l) determining first and second cross-correlations between said input data blocks and said input search blocks by separating the real and imaginary pads of said resultant spatial block wherein said real part is the first cross-correlation between the first input data and search blocks and said imaginary pad is the second cross-correlation between the second input data and search blocks;
(m) finding said best match for said first and second input data blocks from the cross-correlations calculated in step (l) based on predetermined criteria;
(n) repeating steps (a) through (m) for other of said plurality of data blocks so as to generate a plurality of best matches;
(o) generating a stream of compressed second image data representing a second image signal and corresponding to at least a portion of said first image signal and having substantially the same visual information content as said first image signal but representing said first image signal with less data than said first image data, said representation in accordance with said plurality of best matches; and
(p) transmitting said generated stream of compressed second image data to a receiver.
4 Assignments
0 Petitions
Accused Products
Abstract
Method and apparatus for computing cross-correlations with application to image processing and video motion estimation, particularly in video compression applications, are described. Two-dimensional Fourier transform convolution techniques form a basis for novel techniques for performing two simultaneous two-dimensional cross correlations. The size of the input data blocks for the transformations are arbitrary. Apparatus for efficiently performing real-time cross correlations, including cross-correlations using Short Length Transforms (SLTs), using cascaded stages, multi-port memories, and multiple arithmetic units are also described. In video motion vector estimator application, data blocks within a current video frame are selected and converted to form a two-dimensional matrix of complex data. The complex matrix is transformed to the frequency domain to form the frequency domain representations of the selected data blocks. A set of search blocks within the previous video frame having a one-to-one correspondence with the selected data blocks, is then selected, converted into a complex data matrix, and transformed to the frequency domain to form the frequency domain representations of the selected search blocks. Once in the frequency domain, the sets of data corresponding to the data blocks and the search blocks are multiplied together and the product is inverse transformed to return to the spatial domain. The data then passes through an adjustment process to form the cross-correlations between the pairs of data blocks and search blocks.
101 Citations
16 Claims
-
1. A data compression method for compressing first image data representing a first image signal and having a plurality of data blocks stored in a memory, each data block representing a portion of said first image data, the steps of the method comprising:
-
(a) selecting first and second input data blocks from said plurality of data blocks in said first image; (b) converting the input data blocks to a complex data block by making the first data block a real part and the second data block an imaginary part of said complex data block; (c) transforming said complex data block to a complex frequency domain data block; (d) converting said complex frequency domain data block into a first frequency domain data block representing said first input data block and a second frequency domain data block representing said second input data block; (e) providing data representing a second image having a plurality of search blocks, and selecting first and second input search blocks from said data representing said second image, the input search blocks corresponding to a portion of said second image most likely to contain a best match to the input data blocks; (f) converting the input search blocks to a complex search block having real and imaginary pads by making the first search block the real pad and the second search block the imaginary pad of said complex search block; (g) transforming said complex search block to a complex first frequency domain search block; (h) converting said complex frequency domain search block to a first frequency domain search block representing said first input search block and a second frequency domain search block representing said second input search block; (i) multiplying the first frequency domain blocks to form a first resultant block and multiplying the second frequency domain blocks to form a second resultant block; (j) converting said resultant blocks into a complex resultant block; (k) inverse transforming the complex resultant block to a resultant spatial block having real and imaginary pads; (l) determining first and second cross-correlations between said input data blocks and said input search blocks by separating the real and imaginary pads of said resultant spatial block wherein said real part is the first cross-correlation between the first input data and search blocks and said imaginary pad is the second cross-correlation between the second input data and search blocks; (m) finding said best match for said first and second input data blocks from the cross-correlations calculated in step (l) based on predetermined criteria; (n) repeating steps (a) through (m) for other of said plurality of data blocks so as to generate a plurality of best matches; (o) generating a stream of compressed second image data representing a second image signal and corresponding to at least a portion of said first image signal and having substantially the same visual information content as said first image signal but representing said first image signal with less data than said first image data, said representation in accordance with said plurality of best matches; and (p) transmitting said generated stream of compressed second image data to a receiver. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A data compression method for compressing first image data representing a first image signal having at least one data block representing a position of said first image data in a memory, the steps of the method comprising:
-
(a) selecting an input data block from said at least one data block in said first image; (b) conveding the said input data block to a complex data block by making half of the said input data block a real part and the other half of the said input data block an imaginary part of said complex data block; (c) transforming said complex data block to a frequency domain data block representing said input data block; (d) providing data representing a second image having a plurality of search blocks, and selecting an input search block from said data representing said second image, the input search block corresponding to a portion of said second image most likely to contain the best match to the input data block; (e) converting the input search block to a complex search block having real and imaginary parts by making half of the input search block the real part and the other half of the input search block the imaginary part of said complex data block; (f) transforming said complex search block to a frequency domain search block representing input search block; (g) multiplying the frequency domain blocks to form a resultant block; (h) inverse transforming said resultant block to a resultant spatial block; (i) determining cross-correlations between said input data block and said input search block from said resultant spatial block; and (j) repeating steps (a) through (i) for others of said at least one data block so as to generate a plurality of cross-correlations; (k) generating a stream of compressed second image data representing a second image signal and corresponding to at least a portion of said first image .signal and having substantially the same visual information content as said first image signal but representing said first image signal with less data than said first image data, said representation in accordance with said plurality of cross-correlations; and (l) transmitting said generated stream Of compressed second image data to a receiver. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A device for compressing data representing data frames of an image having a plurality of data blocks, each data block being made of a portion of a first data frame, said device comprising:
-
a frame memory for storing at least portions of a second data frame; a motion estimator, including; a data controller for selecting first and second input data blocks from said plurality of data blocks in said first data frame, and for selecting from said frame memory, first and second input search blocks from said second data frame, said input search blocks corresponding to a portion of said second data frame most likely to contain the best cross-correlation to said input data blocks; a plurality of data processor means operable in parallel to perform data processing operations including operations on said data and search blocks under program control, said plurality of processors including; processor means for converting the input data blocks to a complex data block having real and imaginary parts by making the first data block the real part and the second data block the imaginary part of said complex data block; processor means for transforming said complex data block to a first frequency domain data block representing said first input data block and a second frequency domain data block representing said second input data block; processor means for converting the input search blocks to a complex search block having real and imaginary parts by making the first search block the real part and the second search block the imaginary part of said complex search block; processor means for transforming said complex search block to a first frequency domain search block representing said first input search block and a second frequency domain search block representing said second input search block; processor means for multiplying the first frequency domain blocks to form a first resultant block and multiplying the second frequency domain blocks to form a second resultant block; processor means for inverse transforming the result blocks to a resultant spatial block having real and imaginary parts; and processor means for determining first and second cross-correlations between said input data blocks and said input search blocks by separating the real and imaginary parts of said resultant spatial block wherein said real part is the first cross-correlation between the first input data and search blocks and said imaginary part is the second cross-correlation between the second cross-correlation between the second input data and search blocks; means, coupled to said motion estimator, for generating a stream of compressed data representing at least a portion of said first data frame based on said first and second cross-correlations; and a transmitter that transmits said stream of compressed data.
-
-
12. A device for compressing data representing a data frame having at least one data block, said device comprising:
-
a frame memory for storing at least portions of said first data frame and said second data frame; a motion vector estimator, including; a data controller for selecting at least one input data block from said at least one data block in said first data frame and for selecting from said frame memory at least one input search block from said second data frame, the input search blocks corresponding to a portion of a second data frame most likely to contain the best cross-correlation to the input data blocks; a plurality of data processor means operable in parallel to perform data processing operations including Operations on said data and search blocks under program control, said plurality of processors including; processor means for converting the input data blocks to a complex data block; processor means for transforming said complex data block to a frequency domain data block representing said input data blocks; processor means for converting the input search blocks to a complex search block; processor means for transforming said complex search block to a frequency domain search block representing said input search blocks; processor means for multiplying the frequency domain blocks to form a resultant block; processor means for inverse transforming said resultant block to a resultant spatial block; and processor means for determining cross-correlations between said input data block and said input search block from said resultant spatial block; means, coupled to said motion vector estimator, for generating a stream of compressed data representing at least a portion of said first data frame based on said cross-correlations; and a transmitter that transmits said stream of compressed data. - View Dependent Claims (13, 14)
-
-
15. A device for compressing data representing a data frame having at least one data block, comprising:
-
a frame memory for storing at least portions of said first data frame and said second data frame; a motion vector estimator, including; a data controller for selecting at least one input data block from said at least one data block in said first data frame and for selecting from said frame memory at least one input search block from said second data frame, the input search blocks corresponding to a portion of a second data frame most likely to contain the best cross-correlation to the input data blocks; first data processing apparatus that under program control perform data processing operations, said first data processing apparatus including; processor means for converting the input data blocks to a complex data block; processor means for transforming said complex data block to a frequency domain data block representing said input data blocks; processor means .for converting the input search blocks to a complex search block; processor means for transforming said complex search block to a frequency domain search block representing said input search blocks; processor means for multiplying the frequency domain blocks to form a resultant block; processor means for inverse transforming said resultant block to a resultant spatial block; and processor means for determining cross-correlations between said input data block and said input search block from said resultant spatial block; and second data processing apparatus, coupled to said motion vector estimator, for generating a stream of compressed data representing at least a portion of said first data frame based on said cross-correlations; and a transmitter that transmits said stream of compressed data.
-
-
16. A device for compressing data representing a data frame having at least one data block, comprising:
-
a frame memory for storing at least portions of said first data frame and said second data frame; data processing apparatus coupled to said frame memory and programmed to perform data processing operations; a motion vector estimator, including; a data controller for selecting at least one input data block from said at least one data block in said first data frame and for selecting from said frame memory at least one input search block from said second data frame, the input search blocks corresponding to a portion of a second data frame most likely to contain the best cross-correlation to the input data blocks; said data processing apparatus including; processor means for converting the input data blocks to a complex data block; processor means for transforming said complex data block to a frequency domain data block representing said input data blocks; processor means for converting the input search blocks to a complex search block; processor means for transforming said complex search block to a frequency domain search block representing said input search blocks; processor means for multiplying the frequency domain blocks to form a resultant block; processor means for inverse transforming said resultant block to a resultant spatial block; and processor means for determining cross-correlations between said input data block and said input search block from said resultant spatial block; said data processing apparatus being coupled to said motion vector estimator and programmed to generate a stream of compressed data representing at least a portion of said first data frame based on said cross-correlations; and a transmitter that transmits said stream of compressed data.
-
Specification