Single chip design for fast image compression
First Claim
1. An apparatus for compressing data in the form of a plurality of input vectors into a set of identification indices associated with a set of codebook vectors, said apparatus comprising:
- a. means for receiving the plurality of input vectors;
b. search means connected to the means for receiving the plurality of input vectors, wherein said search means consist of;
(1) means for selecting a set of training vectors;
(2) means for defining an n-dimensional box containing all training vectors, wherein n represents codebook vector dimension;
(3) means for recursively splitting the n-dimensional box using a constant value hyperplane into two subboxes, wherein each subbox contains an equal number of training vectors, until a predetermined number of subboxes is obtained;
(4) means for determining a centroid of each subbox; and
(5) means for assigning a codevector to each centroid;
c. means for storing the set of codebook vectors and the set of constant value hyperplanes;
d. means for searching the set of codebook vectors and matching the plurality of input vectors to the set of codebook vectors using the constant value hyperplanes and assigning an identification index to each input vector based on the closest codebook vector; and
e. means for transmitting the set of identification indices and the set of codebook vectors.
2 Assignments
0 Petitions
Accused Products
Abstract
Video data compression techniques reduce necessary storage size and communication channel bandwidth while maintaining acceptable fidelity. Vector quantization provides better overall data compression performance by coding vectors instead of scalars. The search algorithm and VLSI architecture for implementing it is herein disclosed, and such a search algorithm is useful for real-time image processing. The architecture employs a single processing element and external memory for storing the N constant value hyperplanes used in the search, where N is the number of codevectors. The design does not perform any multiplication operation using the constant value hyperplane tree search, since the tree search method is independent of any Lq metric for q between one and infinity. Memory used by the design is significantly less than memory employed in existing architecture.
24 Citations
20 Claims
-
1. An apparatus for compressing data in the form of a plurality of input vectors into a set of identification indices associated with a set of codebook vectors, said apparatus comprising:
-
a. means for receiving the plurality of input vectors; b. search means connected to the means for receiving the plurality of input vectors, wherein said search means consist of; (1) means for selecting a set of training vectors; (2) means for defining an n-dimensional box containing all training vectors, wherein n represents codebook vector dimension; (3) means for recursively splitting the n-dimensional box using a constant value hyperplane into two subboxes, wherein each subbox contains an equal number of training vectors, until a predetermined number of subboxes is obtained; (4) means for determining a centroid of each subbox; and (5) means for assigning a codevector to each centroid; c. means for storing the set of codebook vectors and the set of constant value hyperplanes; d. means for searching the set of codebook vectors and matching the plurality of input vectors to the set of codebook vectors using the constant value hyperplanes and assigning an identification index to each input vector based on the closest codebook vector; and e. means for transmitting the set of identification indices and the set of codebook vectors. - View Dependent Claims (2)
-
-
3. An apparatus for compressing data in the form of a plurality of input vectors into a set of identification indices associated with a set of codebook vectors, said apparatus comprising:
-
(a) means for calculating the set of codebook vectors and a set of constant value hyperplanes using a set of training vectors comprising; (1) means for defining an n-dimensional box containing a set of training vectors; (2) means for repeatedly dividing the n-dimensional box into a set of n-dimensional subboxes containing an equal number of training vectors by using constant value hyperplanes; and 3) means for selecting a center point of each subbox and assigning a codebook vector to said center point; (b) means for storing the set of codebook vectors and the set of constant value hyperplanes; (c) means for receiving the plurality of input vectors; (d) means for searching the set of codebook vectors and matching the plurality of input vectors to the set of codebook vectors using the constant value hyperplanes and assigning an identification index to each input vector based on a closest codebook vector; and (e) means for transmitting the set of identification indices. - View Dependent Claims (4, 5, 6, 7)
-
-
8. An apparatus for compressing data in the form of an input vector into an identification code of one of a set of codebook vectors, said apparatus comprising:
-
(a) means for receiving the input vector and the set of codebook vectors; (b) means for storing the input vector and set of codebook vectors; (c) means for selecting a set of codebook vectors by altering a set of training vectors, wherein said means for selecting the set of codebook vectors consist of using a set of constant value hyperplanes to divide the set of training vectors into n-dimensional boxes containing equal numbers of training vectors, comprising;
.(1) means for defining an n-dimensional box containing a set of training vectors; (2) means for repeatedly dividing the n-dimensional box into a set of n dimensional subboxes containing an equal number of training vectors by using constant value hyperplanes; and (3) means for selecting a center point of each subbox and assigning a codebook vector to said center point; (d) means for assigning an identification code to each of the set of codebook vectors; and (e) means for generating an output signal, said output signal representative of the identification code of the closely matching codebook vector. - View Dependent Claims (9)
-
-
10. A circuit for performing a fast search of a codebook of codevectors, the circuit comprising:
-
(a) a processing element which utilizes a tree search to form a search tree which determines the codebook of codevectors and a plurality of constant value hyperplanes, comprising; (1) a plurality of input data channels; (2) an index output channel; (3) an internal comparator; (4) a plurality of internal storage registers for storing the input vector, data from the hyperplane constant input channel, the hyperplane index data channel, and the index output channel; (5) an internal data buffer; (6) a plurality of internal storage registers; and (7) internal multiplexer; (b) an external memory module which contains information about the plurality of hyperplanes used in the search; and (c) a memory index register which stores the address of the location to be accessed in the external memory module using a comparison in the processing element of a hyperplane constant associated with each constant value hyperplane and an input vector corresponding .to a hyperplane index. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A circuit for performing a fast search of a codebook of codevectors, the circuit comprising;
-
(a) a processing element which utilizes a tree search to form a search tree which determines the codebook of codevectors and a plurality of constant value hyperplanes, comprising means for compressing data in the form of a plurality of input vectors into a set of identification indices associated with the codebook of codevectors, said data compression means comprising; (1) means for receiving the plurality of input vectors; (2) means for defining an n-dimensional box containing the set of training vectors; (3) means for repeatedly dividing the n-dimensional box into a set of n-dimensional subboxes containing an equal number of training vectors by using constant value hyperplanes; (4) means for selecting a center point of each subbox and assigning a codebook vector to said center point; (5) means for storing the codebook of codevectors and the set of constant value hyperplanes; (6) means for searching the codebook of codevectors and matching the plurality of input vectors to the codebook of codevectors using the constant value hyperplanes and assigning an identification index to each input vector based on a closest codebook vector; and (7) means for transmitting the set of identification indices and the codebook of codevectors; (b) an external memory module which contains information about the plurality of hyperplanes used in the search; and (c) a memory index register which stores the address of the location to be accessed in the external memory module using a comparison in the processing element of a hyperplane constant associated with each constant value hyperplane and an input vector corresponding to a hyperplane index. - View Dependent Claims (19)
-
-
20. A method for searching a set of vectors to determine a vector closest to an input vector, the method comprising:
-
(a) selecting a set of training vectors; (b) partitioning an n-dimensional space into a box b containing the set of training vectors wherein n represents vector dimension; (c) dividing the box b into two subboxes b1 and b2 containing an equal number of training vectors using a hyperplane defined by a constant perpendicular to a longest dimension of box b; (d) recursively finding a pair of training vectors contained in all remaining boxes whose distance is maximum among all pairs of vectors and subsplitting the box containing the pair of training vectors using a hyperplane defined by a constant into two subboxes containing an equal number of training vectors until a predetermined number of subboxes is obtained; (e) selecting a center point of each subbox and assigning a codevector to the center point; and (f) determining the closest codevector to an input vector by comparing the input vector to the hyperplanes and determining the subbox which contains the input vector.
-
Specification