EP0576765A1 - Method for coding digital data using vector quantizing techniques and device for implementing said method - Google Patents

Method for coding digital data using vector quantizing techniques and device for implementing said method Download PDF

Info

Publication number
EP0576765A1
EP0576765A1 EP92480097A EP92480097A EP0576765A1 EP 0576765 A1 EP0576765 A1 EP 0576765A1 EP 92480097 A EP92480097 A EP 92480097A EP 92480097 A EP92480097 A EP 92480097A EP 0576765 A1 EP0576765 A1 EP 0576765A1
Authority
EP
European Patent Office
Prior art keywords
vectors
vector
codebook
lbg
hash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP92480097A
Other languages
German (de)
French (fr)
Inventor
Eric Goubault
Emmanuel Résidence Clairefontaine Lancon
Jean Menez
Catherine Raimondo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to EP92480097A priority Critical patent/EP0576765A1/en
Priority to US08/077,009 priority patent/US5444488A/en
Publication of EP0576765A1 publication Critical patent/EP0576765A1/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/008Vector quantisation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Definitions

  • This invention relates to a method for efficiently coding digital data and more particularly to an improved method for performing data compression over image or video data using Vector Quantizing (VQ) techniques.
  • VQ Vector Quantizing
  • One of the basic problems in processing data, particularly when these data are derived through digital encoding of image or video signals lies with the volume of data to be processed.
  • VQ Vector Quantizing
  • the signal samples to be encoded are grouped into input vectors, each made of N samples, and then each input vector is represented by the address of a prestored vector (codeword) selected within a predefined dictionary (codebook) for best matching or closeness
  • codeword a prestored vector
  • codebook a predefined dictionary
  • closeness is related to the Euclidian distance between vectors. The larger the distance the higher the quantization or the mean square error, the lower the SNR and the objective quality. The obvious method for selecting the best matching codeword should require full search throughout the whole codebook.
  • the present invention provides a vector quantization encoder which comprises a codebook built with the so-called Linde-Buzo-Gray (LBG) algorithm, an intermediary codebook built from the initial codebook (LBG) and a Hash-table containing subsets of the initial codebook (LBG).
  • LBG Linde-Buzo-Gray
  • LBG initial codebook
  • LBG Hash-table containing subsets of the initial codebook
  • the coder is designed such that the overall complexity of the prequantization process and the full seach process applied to a reduced number of vectors of the intial codebook (LBG) is fairly reduced while guarantying the same level of quality.
  • Fig. 1 is a block diagram of a vector quantization encoder and decoder according to an embodiment of the present invention.
  • Fig. 2 is a block diagram illustrating the Hash-table Vector Quantization method of the present invention.
  • Fig. 3 is a block diagram representing the building of the intermediary codebook.
  • Fig. 4 A-C are flow diagrams representing different steps or the building of the intermediary codebook.
  • Fig. 5 is a block diagram representing the building of the Hash-table.
  • Fig. 6 represents the different steps of the building of the Hash-table.
  • Fig. 7 A-D are flow diagrams representing different steps of the building of the Hash-table.
  • Fig. 8 is a block diagram representing the coding process.
  • Fig. 9 A-B are flow diagrams the coding process.
  • Fig. 10 A-C are flow diagrams of different functions used in Figs. 4A-C, 7A-D and 9A-B.
  • FIG. 1 there is shown a vector quantization encoder according to the invention.
  • a series of input digital images I n 1 is applied to subtractor 2.
  • Each digital image I n ( x,y ) is an array of pixels where x is the number of columns and y is the number of rows.
  • the output of a frame memory or buffer 3 is applied to subtractor 2, which generates a signal E n representative of a temporal prediction error.
  • Vector quantizer 4 receives the output of subtractor 2 and quantizes said prediction error signal, formed of the difference between the new input digital image and its prediction based on past coded outputs.
  • the output of said vector quantizer is send to a receiver and simultaneously applied to inverse vector quantizer 5.
  • the output of inverse vector quantizer is applied to an adder 6 which combines the output of buffer 3 and applies its output to buffer 3.
  • Buffer 3 introduces a one frame delay to the input signal and supplies its output to the subtractor 2 as the prediction of a new input digital image, thereby providing the prediction error signal E n .
  • the encoded signals are applied to an inverse vector quantizer 7.
  • the output of inverse quantizer 7 is applied to adder 8 and the output of adder 8 is applied to buffer 9 and simultaneously provides the series of decoded output digital images 10.
  • the vector quantization encoder of the invention comprises an initial codebook 11 built with the so-called Linde-Buzo-Gray (LBG) algorithm, an intermediary codebook 12 built from the initial codebook and a Hash-table 13 containing subsets of the initial codebook.
  • LBG Linde-Buzo-Gray
  • VQ Vector Quantization
  • the construction of the different codebooks used in the present invention will now be described.
  • the initial codebook IC lbg is designed based on an algorithm proposed by Y. Linde, A. Buzo and R.M. Gray in an article entitled: "An Algorithm for Vector Quantizer Design", IEEE Transactions on Communications, Vol. COM-28, No.1, January 1980, pages 84-95.
  • the Linde-Buzo-Gray algorithm defines the construction of a codebook adapted to the signal to be encoded and the quantization process.
  • Figure 3 is a block diagram illustrating the building of the intermediary codebook.
  • IC lbg From the IC lbg , a codebook of 2 vectors C 1, and C 2 equal to C 1, plus a perturbation, is built, using the LBG algorithm or a gradient method. IC lbg is therefore partitioned into two subsets P 1, and P 2 , C1 and C 2, being the average vectors of P 1 and P 2, respectively.
  • a new training sequence is then constructed by subtracting from each vector of each subset its representative vector and the two new subsets are put together to form the new training sequence: ( P 1 - C 1) ⁇ ( P 2 - C 2) .
  • STEP 2: (M 2)
  • STEP 1 is repeated with the new training sequence.
  • P 3 and P 4 are represented by C 3 and C 4.
  • the new training sequence is: ( P 3 - C 3) ⁇ ( P 4 - C 4) .
  • STEP K: (M K)
  • the 2 new partitions are ( P 2 K -1 - C 2 K -1 ) and ( P 2 j -C 2 K ) and the representative vectors C 2 K -1 and C 2 K .
  • IC ms contains 2 K vectors built from linear combinations of the vectors C 1, C 2, ...C 2 K -1 , C 2 K .
  • Figures 4 A-C are flow diagrams representing the detailed operations used to build the interemdiary codebook IC ms . Given these flow diagrams a man skilled in the art will have no trouble implementing these operations into a program or microcode without undue effort.
  • the average vector corresponding to the initial class is computed.
  • a small perturbation is added to the average vector (42).
  • a value of 2 which is small with respect to the dynamics of the signal is choosen.
  • the vectors of the first partition are split into two new partitions, OLD_CLASS 1 and OLD_CLASS2, according to their distance (see Fig. 10A) to the average or perturbed average vectors (43).
  • M1 and M2 are counters of the number of vectors in each partition which are used later for normalization purpose.
  • a new average vector is computed for each new partition (44) and the successive vectors saved to build the IC ms (45).
  • the process is repeated, by building a new training sequence for the next iteration (46).
  • a set of 16 C vectors is obtained to build the IC ms (47).
  • the number of iterations or simulated annealings used to build the codebook is preferably of 40.
  • All possible linear combinations of the C vectors that correspond to a coded representation of an input vector by the multi-step coder are stored in the codebook IC ms .
  • Each combination corresponds to a path in a tree representing all possible choices at each step of the multi-step pre-quantization coding process.
  • Fig. 4C shows the building of the linear combinations and the processing of their corresponding index (location) in the codebook in such a way that the coding process described below in Fig. 9A, when travelling along the tree, ends up with the right index representing the right coded representation of the input vector.
  • the IC ms containing 256 vectors is obtained (48).
  • Pre-quantization thus gives a vector or index which points to a subset of the initial codebook IC lbg in the Hash-table.
  • IC lbg must now be divided in as much subsets as the size of the intermediate codebook IC ms , i.e. 2 K .
  • the Hash-table will thus have 2 K rows.
  • the intersection of the 2 K subsets can be non-empty.
  • Hash-table The construction of the Hash-table will now be described with reference to Figure 6.
  • Multi-step quantization is used to fill the Hash table.
  • IC ms (hash-entry) be the coded representation of a vector X by multi-step quantization.
  • Hash_entry points to a subset of vectors of IC lbg and the result of the whole quantization process will be to determine the closest vector to X in that subset using the full search method. Therefore, building the Hash table consists in finding the vectors of IC lbg that belong to the subsets pointed by the vectors IC ms (hash_entry) and this for each vector of IC ms .
  • the vectors of IC lbg that belong to a subset pointed by a vector IC ms (hash_entry) are the closest in distance to that vector.
  • Hash-Table The building of the Hash-Table is performed in four steps:
  • Step 3 and 4 are applied several times to further improve the Hash table. 40 runs brought satisfactory results.
  • the number of vectors in each subset can be limited.
  • the average complexity corresponds to the average number of vectors in the subsets.
  • Figures 7 A-D are flow diagrams of the different steps of the building of the Hash-table.
  • Hash-table consists in filling subsets of vectors of IC lbg referenced by the vectors of IC ms .
  • the vectors of IC ms are represented by their index in this codebook and the vectors of IC lbg filling the subsets are represented by their index in that codebook.
  • Each vector of the initial codebook IC lbg is coded by the multi-step coder (71 and Figure 10B).
  • hash_entry is the index in IC ms of the coded representation of the input vector.
  • I is the index of the input vector in IC lbg .
  • IC ms (hash_entry) is the coded representation of the vector IC lbg ( I ). Therefore the index I is added in the list of indexes pointed by the index hash_entry, i.e. the vector IC lbg ( I ) is added as a member of the subset represented by the vector IC ms (hash_entry) (72). adding an index is preceded by checking whether it has already been added previously or not.
  • hlen(hash_entry) is the size of the subset pointed by IC ms (hash_entry) and is incremented each time a new vector is added.
  • Each vector of the intermediate codebook IC ms is encoded by the initial codebook IC lbg according to the LBG full search algorithm (73 and Figure 10C).
  • FS_entry is the index in IC lbg of the coded representation of the input vector.
  • I is the index of the input vector in IC ms .
  • IC lbg (FS_entry) is the coded representation of the vector IC ms ( I ). Therefore the index FS_entry is added to the list of indexes pointed by the index I, i.e. IC lbg (FS_entry) is added as a member of the subset represented by the vector IC ms ( I ) (74). Adding an index is preceded by checking whether it has already been added previously or not.
  • hlen(I) is the size of the subset pointed by IC ms ( I ) and is incremented each time a new vector is added.
  • a random perturbation is applied to each vector of IC lbg prior to encoding (75).
  • the vector is coded by both multi-step and full search methods (76) to obtain the two following indexes: hash_entry and FS_entry for multi-step and lbg full search respectively.
  • the input vector has therefore the two following coded representations according to the two coding methods: IC_ms(hash_entry) and IC lbg (FS_entry). Therefore the index FS_entry is added to the list of indexes pointed by the index hash_entry, i.e.
  • the vector IC lbg (FS_entry) is added as a member of the subset represented by the vector IC ms (hash_entry) (77). Adding an index is preceded by checking whether it has already been added previously or not. hlen(hash_entry) is the size of the subset pointed by IC ms (hash_entry) and is incremented each time a new vector is added.
  • Figure 8 is a block diagram illustrating the coding process of the invention.
  • a prequantization of the input vectors is performed using a multi-step vector quantization technique.
  • the vectors C 1, ... C 2 K are used to find the closest (in terms of quantization error) vector to be coded by a vector of IC ms , to an input vector in a multi-step way.
  • An input vector X is compared in distance to 2 vectors C 2 M and C 2 M -1 to find the closest one. Let dist ( X , C 2 M ) and dist ( X , C 2 M- 1 ) be those distances to be compared respectively (91 and Figure 10D).
  • the index of the closest vector points to a subset of vectors of the initial codebook IC lbg and one finds the closest vector to X in that subset using the full search method (fig. 9B).
  • full search is performed to encode the input vector X by the subset of vectors selected by the pre-quantization step. For each vector of the subset, one computes its distance from X (94). The index of the closest vector is retained by saving the minimum distance. The output vector is finally built (95) and obtained in (96).
  • the tree search technique used in the multi-step VQ is sub-optimal.
  • the output vector is not always the one leading to the lowest quantization error.
  • the input vector is a vector of the codebook ( IC lbg ) , it is not always coded by itself, but this occurs seldom enough for the quality not to be affected.
  • the number of comparisons for a full search LBG VQ is 256, for the HVQ it is reduced to 30 in average, 8 comparisons for the multi-step pre-quantization and about 20 for the full search in the subset pointed.
  • the parameters can be modified, leading to different results in quality and complexity. If the initial IC_lbg is smaller (than 256), the average number of vectors in the subsets will increase and the complexity as well. If IC lbg is larger, the influence of the multistep pre-quantizer becomes more important and the quality tends to be degraded. The influence of the multi-step pre-quantizer should be limited since such a technique is sub-optimal.
  • the HVQ is a new technique to perform low complexity vector quantization with the same quality as for the optimal reference method, full search LBG algorithm.
  • the coding is performed in two steps, the input vectors are first pre-quantized using a multi-step vector quantization technique.
  • the selected vector is a pointer in a Hash-table, each vector pointing to a subset of vectors from the optimal codebook (LBG).
  • simulation results show comparable subjective quality provided by the HVQ, with respect to the full search LBG, with a complexity reduced by a factor ranging from 3 to 5.

Abstract

The present invention provides a vector quantization encoder which comprises a codebook built with the so-called Linde-Buzo-Gray (LBG) algorithm, an intermediary codebook built from the initial codebook (LBG) and a Hash-table containing subsets of the initial codebook (LBG). Vector quantization is then performed in two steps. First, a multistep prequantization of an input vector gives an index in the Hash-table which points to a subset of vectors of the initial codebook (LBG). Then a full search is performed within the pointed subset of vectors of the initial codebook (LBG).

Description

    Technical Background
  • This invention relates to a method for efficiently coding digital data and more particularly to an improved method for performing data compression over image or video data using Vector Quantizing (VQ) techniques.
  • One of the basic problems in processing data, particularly when these data are derived through digital encoding of image or video signals lies with the volume of data to be processed.
  • A number of techniques, including so-called Vector Quantizing (VQ) techniques have been proposed to optimize the flow of data to be processed, by performing a data compression operation over the original data.
  • Said VQ techniques are particularly efficient in terms of compression due to the very principles involved. The signal samples to be encoded, for example, pixels, when dealing with images, are grouped into input vectors, each made of N samples, and then each input vector is represented by the address of a prestored vector (codeword) selected within a predefined dictionary (codebook) for best matching or closeness The notion of closeness is related to the Euclidian distance between vectors. The larger the distance the higher the quantization or the mean square error, the lower the SNR and the objective quality. The obvious method for selecting the best matching codeword should require full search throughout the whole codebook.
  • Now, if one considers that not only to determine how a considered input vector matches with any given codeword, already requires a large computing power, but also that efficient coding is also directly related to the codebook size, one may then understand the importance of simplifying codebook searches without impairing on the encoding/quantizing quality.
  • A number of techniques have already been proposed to optimize codebook searches efficiency. For reference to these methods one may refer to an article entitled "Image Coding Using Vector Quantization: A review", by N. Nasrabadi and R.A. King, IEEE Trans. Communications, Vol. 36, No. 8, Aug. 19, 1986.
  • These methods might be sub-optimal for certain applications, e.g. for moving pictures.
  • It is therefore a principal object of the invention to provide an improved method and a device for coding digital data using Vector Quantization wherein the number of comparisons is reduced while guarantying the same quality as a full search in the codebook.
  • Summary of the Invention
  • Specifically, the present invention provides a vector quantization encoder which comprises a codebook built with the so-called Linde-Buzo-Gray (LBG) algorithm, an intermediary codebook built from the initial codebook (LBG) and a Hash-table containing subsets of the initial codebook (LBG). Vector quantization is then performed in two steps. First, a multistep prequantization of an input vector gives an index in the Hash-table which points to a subset of vectors of the initial codebook (LBG). Then a full search is performed within the pointed subset of vectors of the initial codebook (LBG).
  • The coder is designed such that the overall complexity of the prequantization process and the full seach process applied to a reduced number of vectors of the intial codebook (LBG) is fairly reduced while guarantying the same level of quality.
  • This and other objects, characteristics and advantages of the invention will be more readily described with reference to the attached figures of a preferred embodiment.
  • Brief Description of the Figures
  • Fig. 1 is a block diagram of a vector quantization encoder and decoder according to an embodiment of the present invention.
  • Fig. 2 is a block diagram illustrating the Hash-table Vector Quantization method of the present invention.
  • Fig. 3 is a block diagram representing the building of the intermediary codebook.
  • Fig. 4 A-C are flow diagrams representing different steps or the building of the intermediary codebook.
  • Fig. 5 is a block diagram representing the building of the Hash-table.
  • Fig. 6 represents the different steps of the building of the Hash-table.
  • Fig. 7 A-D are flow diagrams representing different steps of the building of the Hash-table.
  • Fig. 8 is a block diagram representing the coding process.
  • Fig. 9 A-B are flow diagrams the coding process.
  • Fig. 10 A-C are flow diagrams of different functions used in Figs. 4A-C, 7A-D and 9A-B.
  • Detailed Description of Preferred Embodiment
  • Referring now to Figure 1, there is shown a vector quantization encoder according to the invention. A series of input digital images I n 1 is applied to subtractor 2. Each digital image I n (x,y) is an array of pixels where x is the number of columns and y is the number of rows. As will be explained later, the output
    Figure imgb0001

    of a frame memory or buffer 3 is applied to subtractor 2, which generates a signal E n representative of a temporal prediction error. Vector quantizer 4 receives the output of subtractor 2 and quantizes said prediction error signal, formed of the difference between the new input digital image and its prediction based on past coded outputs. The output of said vector quantizer is send to a receiver and simultaneously applied to inverse vector quantizer 5. The output of inverse vector quantizer is applied to an adder 6 which combines the output of buffer 3 and applies its output to buffer 3. Buffer 3 introduces a one frame delay to the input signal and supplies its output to the subtractor 2 as the prediction
    Figure imgb0002
    of a new input digital image, thereby providing the prediction error signal E n . At the receiver the encoded signals are applied to an inverse vector quantizer 7. The output of inverse quantizer 7 is applied to adder 8 and the output of adder 8 is applied to buffer 9 and simultaneously provides the series of decoded output digital images 10.
  • As shown in Figure 2, the vector quantization encoder of the invention comprises an initial codebook 11 built with the so-called Linde-Buzo-Gray (LBG) algorithm, an intermediary codebook 12 built from the initial codebook and a Hash-table 13 containing subsets of the initial codebook.
  • The Vector Quantization (VQ) is performed in two steps:
    • 1. Each prediction error image is divided into 4x4 vectors. A prequantization of each input vector provides an index to the Hash-table which points to a subset of the initial codebook. The pre-quantization is performed using a multi-step VQ technique. The input vector is encoded by means of a vector of the intermediary codebook the index of which points to the Hash-table. The vector in the intermediary codebook is a representative of the subset in the initial codebook.
    • 2. A full search within the pointed subset of vectors of the initial codebook provides the encoded vector. The number of vectors in each subset is small enough that the total number of "searches" leading to the coded vector is significantly reduced.
  • To achieve steps 1 and 2 it is necessary to :
    • 1. build the Pre-Quantizer or intermediary codebook (multi-step VQ)
    • 2. and build the Hash-table.
  • These two steps (like the elaboration of the original codebook) require a lot of processing which is not taken into account when encoding.
  • The construction of the different codebooks used in the present invention will now be described. The initial codebook IC lbg is designed based on an algorithm proposed by Y. Linde, A. Buzo and R.M. Gray in an article entitled: "An Algorithm for Vector Quantizer Design", IEEE Transactions on Communications, Vol. COM-28, No.1, January 1980, pages 84-95. The Linde-Buzo-Gray algorithm defines the construction of a codebook adapted to the signal to be encoded and the quantization process.
  • Figure 3 is a block diagram illustrating the building of the intermediary codebook.
  • The intermediary codebook IC ms is built from the initial codebook IC lbg , using Multi Step VQ and IC lbg as a training sequence. First a set C (Fig. 3) containing the vectors used in the prequantization is built. Then IC ms is built from said set of vectors.

    STEP 1 :    (M = 1)
    Figure imgb0003

  • From the IC lbg , a codebook of 2 vectors C₁, and C₂ equal to C₁, plus a perturbation, is built, using the LBG algorithm or a gradient method. IC lbg is therefore partitioned into two subsets P₁, and P₂ , C₁ and C₂, being the average vectors of P₁ and P₂, respectively.
  • A new training sequence is then constructed by subtracting from each vector of each subset its representative vector and the two new subsets are put together to form the new training sequence: ( P ₁ - C ₁) ( P ₂ - C ₂)
    Figure imgb0004
    .

    STEP 2:    (M=2)
    Figure imgb0005

  • STEP 1 is repeated with the new training sequence. P₃ and P₄ are represented by C₃ and C₄. The new training sequence is: ( P ₃ - C ₃)∪( P ₄ - C ₄)
    Figure imgb0006
    .

    STEP K:    (M=K)
    Figure imgb0007

  • At this point, the 2 new partitions are (P 2K-1-C 2K-1) and (P 2j -C 2K ) and the representative vectors C 2K-1and C 2K .
  • At step K, IC ms contains 2 K vectors built from linear combinations of the vectors C1,C2,...C2K-1, C2K .
  • Figures 4 A-C are flow diagrams representing the detailed operations used to build the interemdiary codebook IC ms . Given these flow diagrams a man skilled in the art will have no trouble implementing these operations into a program or microcode without undue effort.
  • First, starting from a copy of the codebook IC lbg , the average vector corresponding to the initial class is computed. After normalization (41), a small perturbation is added to the average vector (42). A value of 2, which is small with respect to the dynamics of the signal is choosen. The vectors of the first partition are split into two new partitions, OLD_CLASS 1 and OLD_CLASS2, according to their distance (see Fig. 10A) to the average or perturbed average vectors (43). Note that M1 and M2 are counters of the number of vectors in each partition which are used later for normalization purpose. A new average vector is computed for each new partition (44) and the successive vectors saved to build the IC ms (45). The process is repeated, by building a new training sequence for the next iteration (46). At the end of the process, a set of 16 C vectors is obtained to build the IC ms (47).
  • The number of iterations or simulated annealings used to build the codebook is preferably of 40.
  • All possible linear combinations of the C vectors that correspond to a coded representation of an input vector by the multi-step coder are stored in the codebook IC ms . Each combination corresponds to a path in a tree representing all possible choices at each step of the multi-step pre-quantization coding process. Fig. 4C shows the building of the linear combinations and the processing of their corresponding index (location) in the codebook in such a way that the coding process described below in Fig. 9A, when travelling along the tree, ends up with the right index representing the right coded representation of the input vector. Finally, the IC ms containing 256 vectors is obtained (48).
  • Pre-quantization thus gives a vector or index which points to a subset of the initial codebook IC lbg in the Hash-table.
  • As shown in Figure 5, to build the Hash-table, IC lbg must now be divided in as much subsets as the size of the intermediate codebook IC ms , i.e. 2 K . The Hash-table will thus have 2 K rows. The intersection of the 2 K subsets can be non-empty. One needs to ensure that :
    • · all the vectors of IC lbg are used,
    • · and that each row of the Hash-table contains at least one vector of IC lbg .
  • The construction of the Hash-table will now be described with reference to Figure 6.
  • Once the codedbook IC ms of the Multi-step quantizer has been built, Multi-step quantization is used to fill the Hash table. Let IC ms (hash-entry) be the coded representation of a vector X by multi-step quantization. Hash_entry points to a subset of vectors of IC lbg and the result of the whole quantization process will be to determine the closest vector to X in that subset using the full search method. Therefore, building the Hash table consists in finding the vectors of IC lbg that belong to the subsets pointed by the vectors IC ms (hash_entry) and this for each vector of IC ms . The vectors of IC lbg that belong to a subset pointed by a vector IC ms (hash_entry) are the closest in distance to that vector.
  • In fact, for efficiency, all the vectors in the Hash-Table that belong to the different subsets are represented by their index or position in their respective codebook.
  • The building of the Hash-Table is performed in four steps:
    • 1. Make sure all vectors of IC lbg will be present in the Hash-table (Fig. 6, step 1).
      This is achieved by coding all the vectors of IC lbg by the multi-step quantizer. Let IC ms (hash_entry) be the coded representation of a vector of IC lbg , IC lbg (I), the latter thus belongs to the subset pointed by hash_entry. All vectors of IC lbg are encoded, some of them may belong to the same subset (they have been encoded by the same IC ms (hash-entry)), some subsets may therefore be empty.
    • 2. Make sure no entry in the Hash table is empty (Fig. 6, step 2).
      This is achieved by coding all the vectors of IC ms by the vectors of IC lbg using full search quantization. In doing so, each vector IC ms (hash-entry) will be given its closest representation in IC lbg , IC lbg (FS_entry) the index of which, FS_entry, will be put in the subset it is pointing to.
      At this point, all vectors of IC lbg have been used and each vector of IC ms has a non empty subset. Still, some subsets might contain only one vector and some vectors of IC lbg might appear only once in the Hash table. To enrich it, one repeat the same two steps after having applied a random perturbation to all the vectors. The value of said random perturbation is comprised between 0 and 1 (0 being excluded) with an average of 0.5.
    • 3. The modified version of a vector of IC lbg , IC lbg (I) + p , is coded by both MS and FS methods. Let IC ms (hash-entry) and IC lbg (FS entry) be the coded representations of IC lbg (IC) + p, respectively. Therefore, IC lbg (FS entry) is put in the subset pointed by IC ms (hash-entry).
    • 4. Repeat step 3, but now a random perturbation is applied to each vector of IC ms . Let IC ms (hash-entry) and IC lbg (FS-entry) be the coded representations of IC ms (I) + p, respectively. Therefore, IC lbg (FS entry) is put in the subset pointed by IC ms (hash-entry).
  • Step 3 and 4 are applied several times to further improve the Hash table. 40 runs brought satisfactory results. The larger the number of vector in each subset, the better the quality, the higher the computational complexity. The number of vectors in each subset can be limited. The average complexity corresponds to the average number of vectors in the subsets.
  • Figures 7 A-D are flow diagrams of the different steps of the building of the Hash-table.
  • Building the Hash-table consists in filling subsets of vectors of IC lbg referenced by the vectors of IC ms . For computational efficiency, the vectors of IC ms are represented by their index in this codebook and the vectors of IC lbg filling the subsets are represented by their index in that codebook.
  • Each vector of the initial codebook IC lbg is coded by the multi-step coder (71 and Figure 10B). hash_entry is the index in IC ms of the coded representation of the input vector. I is the index of the input vector in IC lbg . IC ms (hash_entry) is the coded representation of the vector IC lbg (I). Therefore the index I is added in the list of indexes pointed by the index hash_entry, i.e. the vector IC lbg (I) is added as a member of the subset represented by the vector IC ms (hash_entry) (72). adding an index is preceded by checking whether it has already been added previously or not. hlen(hash_entry) is the size of the subset pointed by IC ms (hash_entry) and is incremented each time a new vector is added.
  • Each vector of the intermediate codebook IC ms is encoded by the initial codebook IC lbg according to the LBG full search algorithm (73 and Figure 10C). FS_entry is the index in IC lbg of the coded representation of the input vector. I is the index of the input vector in IC ms . IC lbg (FS_entry) is the coded representation of the vector IC ms (I). Therefore the index FS_entry is added to the list of indexes pointed by the index I, i.e. IC lbg (FS_entry) is added as a member of the subset represented by the vector IC ms (I) (74). Adding an index is preceded by checking whether it has already been added previously or not. hlen(I) is the size of the subset pointed by IC ms (I) and is incremented each time a new vector is added.
  • Now, a random perturbation is applied to each vector of IC lbg prior to encoding (75). The vector is coded by both multi-step and full search methods (76) to obtain the two following indexes: hash_entry and FS_entry for multi-step and lbg full search respectively. The input vector has therefore the two following coded representations according to the two coding methods: IC_ms(hash_entry) and IC lbg (FS_entry). Therefore the index FS_entry is added to the list of indexes pointed by the index hash_entry, i.e. the vector IC lbg (FS_entry) is added as a member of the subset represented by the vector IC ms (hash_entry) (77). Adding an index is preceded by checking whether it has already been added previously or not. hlen(hash_entry) is the size of the subset pointed by IC ms (hash_entry) and is incremented each time a new vector is added.
  • The perturbation of the vectors of the codebook IC lbg is used to add new members to the subsets in creating new relationships (in terms of closeness/distance) between the vectors of IC ms and of IC lbg . This process is repeated ITER = 40 times.
  • Figure 8 is a block diagram illustrating the coding process of the invention.
  • As previously stated Vector Quantization is performed in two steps which will now be described.
  • Referring to Figure 9A, a prequantization of the input vectors is performed using a multi-step vector quantization technique.
  • The vectors C 1,... C 2K are used to find the closest (in terms of quantization error) vector to be coded by a vector of IC ms , to an input vector in a multi-step way.
  • An input vector X is compared in distance to 2 vectors C 2M and C 2M-1 to find the closest one. Let dist(X, C 2M ) and dist(X, C 2M-1) be those distances to be compared respectively (91 and Figure 10D).
  • If dist ( X , C 2 M ) ≧ dist ( X , C 2 M -1 )
    Figure imgb0008
    then C 2M-1 is selected (92), If dist ( X , C 2 M ) < dist ( X , C 2 M -1 )
    Figure imgb0009
    then C 2M is selected (93).
  • The output vector being a sum of the C 2M or the C 2M-1, and its index (location) in IC ms depending on the result of the previous comparison, is constructed step by step by substracting it from X. Its index (location) in IC ms is also computed step by step, depending on the progression in the tree. This process is repeated at each step, from M = 1 to 8, leading to find the closest vector to X among the 256 vectors of IC ms . The index of the closest vector points to a subset of vectors of the initial codebook IC lbg and one finds the closest vector to X in that subset using the full search method (fig. 9B).
  • Referring to fig. 9B, full search is performed to encode the input vector X by the subset of vectors selected by the pre-quantization step. For each vector of the subset, one computes its distance from X (94). The index of the closest vector is retained by saving the minimum distance. The output vector is finally built (95) and obtained in (96).
  • One can notice that the output vector is nothing but IC lbg (hash_ind).
  • Figure 10A is a flow diagram of the function S = DIST_lbg(I,vect)
    Figure imgb0010
    , computing the Euclidian distance between the Ith vector of IC lbg and Vect, of Fig. 4A.
  • Figure 10B is a flow diagram of the Multi-Step-Re-Quantization function ind, Q = MULTI_STEP(X)
    Figure imgb0011
    of Figures 7A and 7C.
  • Figure 10C is a flow diagram of the function ind = FULL_SEARCH(X)
    Figure imgb0012
    of Figures 7B and 7C.
  • Figure 10D is a flow diagram of the function S = DIST_c (I, Vect)
    Figure imgb0013
    , computing the Euclidian distance between the Ith vector of the set C and Vect, of Figure 9A.
  • The tree search technique used in the multi-step VQ is sub-optimal. The output vector is not always the one leading to the lowest quantization error. Moreover, if the input vector is a vector of the codebook (IC lbg ) , it is not always coded by itself, but this occurs seldom enough for the quality not to be affected.
  • The number of comparisons for a full search LBG VQ is 256, for the HVQ it is reduced to 30 in average, 8 comparisons for the multi-step pre-quantization and about 20 for the full search in the subset pointed.
  • The parameters can be modified, leading to different results in quality and complexity. If the initial IC_lbg is smaller (than 256), the average number of vectors in the subsets will increase and the complexity as well. If IC lbg is larger, the influence of the multistep pre-quantizer becomes more important and the quality tends to be degraded. The influence of the multi-step pre-quantizer should be limited since such a technique is sub-optimal.
  • The HVQ is a new technique to perform low complexity vector quantization with the same quality as for the optimal reference method, full search LBG algorithm.
  • The coding is performed in two steps, the input vectors are first pre-quantized using a multi-step vector quantization technique. The selected vector is a pointer in a Hash-table, each vector pointing to a subset of vectors from the optimal codebook (LBG).
  • It is necessary to built the codebook of the pointers as a first step and the subsets of vectors of the Hash-table secondly.
  • Finally, simulation results show comparable subjective quality provided by the HVQ, with respect to the full search LBG, with a complexity reduced by a factor ranging from 3 to 5.

Claims (9)

  1. A method for encoding digital signals using vector quantization wherein the input digital signals are grouped in vectors of N components that are compared to a limited number of vectors of a codebook, representative of the signal to be coded, method characterized in that the quantization comprises the following steps:
    prequantization by multi-step vector quantization (VQ) of the input vectors to generate an index in a Hash-table which points to a subset of vectors of said initial codebook;
    full seach within said pointed subset of vectors of said initial codebook to obtain the coded vector.
  2. A method according to claim 1 wherein pre-quantization of the input vectors is performed by encoding each input vector by a vector of an intermediary codebook the index of which is the pointer in said Hash-table.
  3. A method according to claim 2 wherein said intermediary codebook is built from the initial codebook using multi-step vector quantization (VQ).
  4. A method according to anyone of claims 1-3 wherein the building of the Hash-table comprises the following steps:
    coding all the vectors of said initial codebook using multi-step quantization;
    coding all the vectors of said intermediary codebook by the vectors of said initial codebook using full-search quantization;
    coding all the vectors of said initial codebook to which a small perturbation is applied using multi-step and full search quantization;
    coding all the vectors of said intermediary codebook to which a random perturbation is applied using multi-step and full-search quantization.
  5. A method according to claim 4 wherein steps 3 and 4 are repeated several times.
  6. A method according to anyone of claims 1-5 wherein the digital signals are video signals.
  7. A method according to claim 6 wherein said encoding is performed on the error prediction image.
  8. A vector quantizer for encoding digital signals with high efficiency characterized in that it comprises an initial codebook (11), containing a limited number of vectors representative of the signal to be coded, an intermediary codebook (12) and a Hash-table (13), comprising subsets of the initial codebook.
  9. A vector quantizer according to claim 8 characterized in that said digital signals are video signals.
EP92480097A 1992-06-30 1992-06-30 Method for coding digital data using vector quantizing techniques and device for implementing said method Withdrawn EP0576765A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP92480097A EP0576765A1 (en) 1992-06-30 1992-06-30 Method for coding digital data using vector quantizing techniques and device for implementing said method
US08/077,009 US5444488A (en) 1992-06-30 1993-06-15 Method and apparatus for coding digital data using vector quantizing techniques

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP92480097A EP0576765A1 (en) 1992-06-30 1992-06-30 Method for coding digital data using vector quantizing techniques and device for implementing said method

Publications (1)

Publication Number Publication Date
EP0576765A1 true EP0576765A1 (en) 1994-01-05

Family

ID=8211792

Family Applications (1)

Application Number Title Priority Date Filing Date
EP92480097A Withdrawn EP0576765A1 (en) 1992-06-30 1992-06-30 Method for coding digital data using vector quantizing techniques and device for implementing said method

Country Status (2)

Country Link
US (1) US5444488A (en)
EP (1) EP0576765A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825722A1 (en) * 1996-08-23 1998-02-25 Rockwell International Corporation Signal compression using index mapping technique for the sharing of quantization tables
GB2375673A (en) * 2001-05-14 2002-11-20 Salgen Systems Ltd Image compression method using a table of hash values corresponding to motion vectors

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07177502A (en) * 1993-12-17 1995-07-14 Sutajio Gen:Kk Method for compressing picture information, compressed picture information recording medium, and compressed picture information reproducing device
JP3496220B2 (en) * 1994-06-27 2004-02-09 エイストリーム・テクノロジーズ・インコーポレーテッド Lossless compression and decompression of data representing images
US5832131A (en) * 1995-05-03 1998-11-03 National Semiconductor Corporation Hashing-based vector quantization
US5828413A (en) * 1995-09-21 1998-10-27 Lucent Technologies Inc. Method and apparatus for image processing using model-based localized quantization
US5699121A (en) * 1995-09-21 1997-12-16 Regents Of The University Of California Method and apparatus for compression of low bit rate video signals
US6266375B1 (en) * 1997-11-13 2001-07-24 Sony Corporation Method and apparatus for selecting a quantization table for encoding a digital image
US6285994B1 (en) 1999-05-25 2001-09-04 International Business Machines Corporation Method and system for efficiently searching an encoded vector index
US6725223B2 (en) * 2000-12-22 2004-04-20 International Business Machines Corporation Storage format for encoded vector indexes
US7003039B2 (en) * 2001-07-18 2006-02-21 Avideh Zakhor Dictionary generation method for video and image compression
US9054876B1 (en) * 2011-11-04 2015-06-09 Google Inc. Fast efficient vocabulary computation with hashed vocabularies applying hash functions to cluster centroids that determines most frequently used cluster centroid IDs
US9858922B2 (en) 2014-06-23 2018-01-02 Google Inc. Caching speech recognition scores
US9299347B1 (en) 2014-10-22 2016-03-29 Google Inc. Speech recognition using associative mapping
CN104867164A (en) * 2015-04-29 2015-08-26 中国科学院上海微系统与信息技术研究所 Vector quantization codebook designing method based on genetic algorithm
US9786270B2 (en) 2015-07-09 2017-10-10 Google Inc. Generating acoustic models
US10229672B1 (en) 2015-12-31 2019-03-12 Google Llc Training acoustic models using connectionist temporal classification
US20180018973A1 (en) 2016-07-15 2018-01-18 Google Inc. Speaker verification
US10706840B2 (en) 2017-08-18 2020-07-07 Google Llc Encoder-decoder models for sequence to sequence mapping

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0138061A1 (en) * 1983-09-29 1985-04-24 Siemens Aktiengesellschaft Method of determining speech spectra with an application to automatic speech recognition and speech coding
WO1990009079A1 (en) * 1989-01-30 1990-08-09 Information Technologies Research, Inc. Method and apparatus for vector quantization
EP0446968A2 (en) * 1983-09-06 1991-09-18 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
WO1991014342A1 (en) * 1990-03-16 1991-09-19 Information Technologies Research, Inc. Method and apparatus for vector quantization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4670851A (en) * 1984-01-09 1987-06-02 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
US5031037A (en) * 1989-04-06 1991-07-09 Utah State University Foundation Method and apparatus for vector quantizer parallel processing
US5113516A (en) * 1989-07-31 1992-05-12 North American Philips Corporation Data repacker having controlled feedback shifters and registers for changing data format
US5194864A (en) * 1990-10-03 1993-03-16 Olympus Optical Co., Ltd. Vector quantization method and apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0446968A2 (en) * 1983-09-06 1991-09-18 Mitsubishi Denki Kabushiki Kaisha Vector quantizer
EP0138061A1 (en) * 1983-09-29 1985-04-24 Siemens Aktiengesellschaft Method of determining speech spectra with an application to automatic speech recognition and speech coding
WO1990009079A1 (en) * 1989-01-30 1990-08-09 Information Technologies Research, Inc. Method and apparatus for vector quantization
WO1991014342A1 (en) * 1990-03-16 1991-09-19 Information Technologies Research, Inc. Method and apparatus for vector quantization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825722A1 (en) * 1996-08-23 1998-02-25 Rockwell International Corporation Signal compression using index mapping technique for the sharing of quantization tables
GB2375673A (en) * 2001-05-14 2002-11-20 Salgen Systems Ltd Image compression method using a table of hash values corresponding to motion vectors

Also Published As

Publication number Publication date
US5444488A (en) 1995-08-22

Similar Documents

Publication Publication Date Title
US5444488A (en) Method and apparatus for coding digital data using vector quantizing techniques
Nasrabadi et al. Image coding using vector quantization: A review
US5398069A (en) Adaptive multi-stage vector quantization
US5903676A (en) Context-based, adaptive, lossless image codec
EP0555017A2 (en) Geometric vector quantization
Kuroki et al. Lossless image compression by two-dimensional linear prediction with variable coefficients
EP0457362B1 (en) Vector quantizer
Sitaram et al. Efficient codebooks for vector quantization image compression with an adaptive tree search algorithm
Slyz et al. A nonlinear VQ-based predictive lossless image coder
Chaddha et al. Constrained and recursive hierarchical table-lookup vector quantization
JP2626492B2 (en) Vector quantizer
Asif et al. Image codec by noncausal prediction, residual mean removal, and cascaded VQ
Gimeno et al. A new approach to texture coding using stochastic vector quantization
Bage Interframe predictive coding of images using hybrid vector quantization
KR100709376B1 (en) Searching apparatus for fast vector quantization encoding and method thereof
Rizvi et al. Finite-state residual vector quantization using a tree-structured competitive neural network
Lee et al. Dynamic finite state VQ of colour images using stochastic learning
Panchanathan et al. Algorithms and architecture for image adaptive vector quantization
Kossentini et al. Residual VQ (vector quantizaton) with state prediction: a new method for image coding
Markas et al. Image compression methods with distortion controlled capabilities
Ryu et al. A fast full search equivalent encoding algorithm for image vector quantization based on the WHT and a LUT
Farkash et al. Transform trellis coding of images at low bit rates
JPH08279757A (en) Hierarchical vector quantizer
Chen et al. An adaptive high-speed lossy data compression
Weber Adaptive search residual vector quantization with no side information

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): DE FR GB

17P Request for examination filed

Effective date: 19940429

17Q First examination report despatched

Effective date: 19960416

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 19960827