WO2010001020A2 - Codage/decodage par plans de bits, perfectionne - Google Patents
Codage/decodage par plans de bits, perfectionne Download PDFInfo
- Publication number
- WO2010001020A2 WO2010001020A2 PCT/FR2009/051064 FR2009051064W WO2010001020A2 WO 2010001020 A2 WO2010001020 A2 WO 2010001020A2 FR 2009051064 W FR2009051064 W FR 2009051064W WO 2010001020 A2 WO2010001020 A2 WO 2010001020A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bits
- plane
- significant
- bit
- coding
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000000354 decomposition reaction Methods 0.000 claims description 20
- 238000000605 extraction Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013139 quantization Methods 0.000 description 21
- 238000007906 compression Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 8
- 230000005236 sound signal Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- DWKNOLCXIFYNFV-HSZRJFAPSA-N 2-[[(2r)-1-[1-[(4-chloro-3-methylphenyl)methyl]piperidin-4-yl]-5-oxopyrrolidine-2-carbonyl]amino]-n,n,6-trimethylpyridine-4-carboxamide Chemical compound CN(C)C(=O)C1=CC(C)=NC(NC(=O)[C@@H]2N(C(=O)CC2)C2CCN(CC=3C=C(C)C(Cl)=CC=3)CC2)=C1 DWKNOLCXIFYNFV-HSZRJFAPSA-N 0.000 description 1
- 101000591286 Homo sapiens Myocardin-related transcription factor A Proteins 0.000 description 1
- 102100034099 Myocardin-related transcription factor A Human genes 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/34—Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/93—Run-length coding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/24—Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
Definitions
- the present invention relates to the coding / decoding of digital signals such as speech, audio, images and video signals, as well as their application for the transmission and / or storage of such multimedia signals.
- the present invention deals with a type of hierarchical coding / decoding, representing the signals by successive bit planes to efficiently code the resulting sequences of bits having values 0 or 1.
- This coding / decoding of digital signals is particularly very useful for the transform coding of speech and / or audio signals.
- lossless compression methods such as Huffman coding and arithmetic coding (these methods are also called entropic coding because they aim to approach the lower theoretical limit.
- debit given by the entropy of the source to be encoded
- lossy compression methods based on scalar or vector quantization and exploitation of a production model and / or signal perception, but these methods (such as CELP speech coding or audio coding perceptual by MPEG type transform) introduce a quantization noise which makes it impossible to accurately restore the original signal.
- An encoder typically comprises: an analysis module 100 of the source signal Se, a quantization module 101 and - a coding module proper 102.
- a decoder typically comprises: a decoding module proper 103, an inverse quantization module 104 and a synthesis module 105.
- the analysis can take various forms depending on the type of signal, for example for a speech signal or an audio signal: calculation of the parameters of a model (linear prediction and pitch or
- pitch or - time / frequency transformation, such as the discrete modified cosine transform (or MDCT).
- the quantizer (module 101) is of scalar or vector type. It may be for example to assign by default a given index to a value of the signal which is close to this index. It will be understood that the signal can lose its precision (in particular its fineness) during the quantization step, which is necessarily "lossy".
- the coding, then without loss, that the module 102 realizes is sometimes omitted in practice in order to simplify the implementation. It aims for example to eliminate statistical redundancy after quantification.
- the lossless decoder (module 103) reconstructs the information as it was provided at the output of the quantizer. This information is decoded by the "inverse" quantizer (module 104).
- the synthesis (module 105) can be performed in the form of an excitation generator followed by filtering, inverse transformation, or other. In what follows, the steps of analysis and synthesis are not discussed. Only the quantization block followed by lossless coding is considered. FIG.
- FIG. 2 shows the principle of scalar quantization, followed by a lossless coding, by bit planes, of the indices resulting from the quantization.
- This type of compression method is used in several existing encoders (MPEG-4, JPEG2000 for image coding, or others).
- the module 201 performs a quantization of the source Se (which may be here for example the coefficients of a frequency transform of an audio signal), to obtain a sequence of integer quantization indices.
- the module 202 performs a decomposition in binary form of this sequence of indices into successive "bit planes". This decomposition produces: sequences, by planes, of 0 and 1 according to the successive weights of power of 2, going from the most significant bits in a first bit plane called "MSB" (for "Most Significant Bits") until the least significant bits in a last bit plane called “LSB” (for "Least Significant Bits”), as well as bits of signs.
- the module 203 codes the sequences of 0 and 1 associated with each plane as well as the sign bits. In general one uses a Huffman coding or a coding by range, or a contextual arithmetic coding, to do this.
- bit plane coding (module 203)
- binary decomposition should reveal structures (long sequences of the same symbols) and correlations exploitable by "entropic" coding (without loss).
- the coding of the planes is often contextual, the bits to be encoded being divided into blocks of symbols in which the symbols are similar or, at least, have similar statistics. For example, one can change the coding tables of 0 and 1 in a given plane according to the values of the bits already decoded around (in the upper bit planes and the level of adjacent bits).
- bitmap coding The main interest of bitmap coding is that it leads naturally to a hierarchical (or progressive) coding of the signal: successive approximations of the Signal more and more accurate can be reconstructed as we receive the set of coded bit planes.
- Scalar quantization followed by bit plane encoding, can be described as follows.
- the decomposition by bit planes (carried out by the module 202) is first of all to separate the integers y ⁇ into signs and absolute values, ie:
- the absolute values y t are decomposed in binary form, ie: where bit k (y t ) is the k th bit of the binary decomposition of y t and K is the number of bit planes to predict to decompose the complete sequence Y.
- This decomposition is illustrated in FIG. 3.
- the vector Y is written (-2, +7, +3, 0, +1, -3, -6, +5).
- P 0 [0,1,1,0,1,1,0,1] (LSB plane)
- P 1 [1,1,1,0,0,1,1,0]
- P 2 [ 0,1,0,0,0,0,1,1] (MSB plane)
- S [1,0,0,0,0,1,1,0].
- the vector P k then defines the plane of bits of weight k.
- the upper bitplane P i + 1 is a most significant bit plane, while the lower P ⁇ 1 bit plane is a least significant bit plane.
- the plane P ⁇ _ ⁇ is the plane of the most significant bits MSB.
- the plane P 0 is the plane of the least significant bits LSB.
- the plane P ⁇ ⁇ is called the MSB plane below
- the plane P ⁇ 2 is called plane MSB-I
- the plane P ⁇ 3 is called plane MSB-2, and so on.
- the module 203 encodes the bit planes one by one starting from the upper planes (MSB) to the lower planes (LSB).
- the sign bit sign (y t ) is transmitted only if one of the decoded bits ⁇ t> it l ⁇ (y ⁇ ) ⁇ k _ 0 ⁇ ⁇ is 1.
- a simple processing that can be performed by the module 203 (and which occurs after scalar quantization), for bitmap coding can be described as follows.
- each bit bit k (y t ) is coded and if this bit n is not zero, we seek to know the sign of y t to code this sign noted sign (y t ) if this sign has not already been coded in a plane of more significant bits.
- the coding steps 404 and 405 of FIG. 4) then amounts to successively coding each of the planes, going from the plane MSB to the plane LSB.
- the output rate of the encoder output is variable, in general. We do not describe here how to manage the variation of this flow. It is simply indicated that the regulation of the bit rate can be ensured by the modules 200 and 204.
- the bit stream generated by the module 203 is transmitted on the channel 205. This channel can truncate the bit stream (by exploiting the hierarchical nature of the bit stream) or introduce binary errors.
- the demultiplexer and decoder 206 reconstructs the bit planes P k one by one and demultiplexes the S-bit bits that have been transmitted. This decoded information makes it possible to reconstruct (module 207) the sequence of integers Y. In the absence of bit errors and without truncation of bitstream we have: - P - P
- FIG. 5A shows the simplest format according to which the number of planes K is first written, then successively a code (of variable length) associated with each plane P k of absolute value, and at the end we add the sign bits S associated with the significant coefficients.
- This format has the advantage of being very easy to use but it does not allow hierarchical decoding because, since the decoding bit rate is lower than the coding bit rate, the decoder will only have access to a part of the train. binary from the beginning to a location that can be located before the end of the transmission format. So we first lose the bits of signs, which makes the decoded signal unclear.
- FIG. 5B To allow partial decoding of the bitstream (truncated from the end), a more sophisticated bitstream structure shown in FIG. 5B can be envisaged.
- sign k (y t ) the sign bit on the k th plane for the i th coefficient
- the sign bits are only defined for non-zero integers (hence significant integer values) and, moreover, they are associated only with the most significant value bits "1" for each integer y t .
- the sign vector S 4 associated with each bit plane k is defined regardless of 0 ⁇ k ⁇ K as follows:
- the vector S 4 has a variable dimension since, by definition, sign k (y t ) can correspond to 0.
- bitmap coding generally has lower performance than low-rate non-hierarchical coding. This penalty is due in large part to the difficulty of exploiting all the correlations between successive bit planes.
- coding of the sign bits and the absolute values is generally separated. This separate coding is suboptimal because each sign is coded alone, since a bit of value "1" appears in the binary decomposition of an integer. It would then be preferable to combine the coding of this bit "1" (most significant bit of the non-zero integer) and the associated sign.
- the range encoding applied to a bit plane decomposition is relatively efficient in representing the higher bit planes (MSB, MSB-I, etc.) when they have unbalanced probabilities (for example, few "bits”). 1 "and many” 0 "), which is also often the case for speech and audio signals in frequency representations.
- the coding of tracks becomes much less interesting for the lower bit planes (generally from the MSB-2 plane), because there are no longer in such plans long sequences of identical symbols.
- the problem of the separate coding of signs and absolute values arises, in much the same way as in the case of conventional bitmap coding.
- the present invention improves the situation.
- bitmap coding method in which the integer components of a vector to be encoded are decomposed into a binary representation in a succession of bitplanes, from the plane of the most significant bits. (MSB) in the least significant bit plane (LSB).
- MSB most significant bits
- LSB least significant bit plane
- the coding of the plane of the most significant bits is carried out, by affecting: a first type of coding symbol comprising at least two possible symbol values for representing a number of successive zeros in a bit, and two other values for coding the sign of a significant bit, and the coding of the bit planes following to the least significant bits plane is performed according to the following steps:
- the invention very advantageously, fully exploits the specific bit nature of the bit planes. Moreover, it makes it possible to optimize the coding of the signs by combining it effectively with the coding of "1" in the bit planes. With the implementation in the sense of the invention, the penalty in terms of performance at low bit rate is greatly reduced, which makes the bitmap coding very interesting.
- the coding of signals by scalar quantization followed by bit plane coding leads to hierarchical coding, but usually its low-rate performance is generally much lower than that of non-hierarchical coding. This penalty in terms of performance is mainly due to the difficulty of exploiting the correlations between successive bit planes as well as the separate encoding of the absolute values of the bits and their sign.
- the invention then improves the performance of the coding by bit planes, in particular at low bit rates, and simply by providing two types of symbol for coding each of the bit planes:
- each bit worth "1" is replaced by a symbol dedicated to the sign of the vector component of which this bit is the most significant
- bits are identified as a sequence of null bits and the number of bits consequently is represented for example in binary coding by a second type of symbol (for example "+" and "-")
- Another symbol can advantageously identify a end (or a beginning) of a plane, that is to say that from (or up to) a certain position, all the bits are zero, which then avoids code the number of null bits at the end (or beginning) of the plane.
- the coding in the sense of the invention offers an optimized combination of the coding of signs and absolute values, as well as sequences of "0" by coding the lengths of sequences of null bits.
- the present invention also aims at a method for decoding by bit planes, for reconstructing the entire components of a vector which have been coded by binary decomposition, according to a succession of bit planes, of the plane of the most significant bits ( MSB) in the least significant bit (LSB) plane.
- the planes are decoded in order of the plane of the most significant bits (MSB) in terms of least significant bits (LSB), and to reconstruct the plane of the most significant bits: a first type of coding symbol comprising the minus two possible symbol values to indicate a number of successive zeroes in the binary of the plane to be reconstructed, and two other values to indicate, in binary, the sign of the most significant bit of a component to be reconstructed, is used to insert zeros in the plane to be reconstructed and to identify the sign of the most significant bit of a component to be reconstructed; and to reconstruct the following bit planes up to the plane of the least significant bits, the method comprises the following steps: identification of the null bits in the already decoded planes and extraction of the bits of the same positions in a current plan to be decoded to form a non-significant part,
- the present invention also aims at a device for coding by bit planes, comprising an encoder module capable of coding the integral components of a vector by decomposing them into a binary representation in a succession of bit planes, of the plane of the most significant bits ( MSB) in the least significant bit (LSB) plane.
- the aforementioned module is further arranged to code the plane of the most significant bits, by affecting:
- a first type of coding symbol comprising at least two possible symbol values for representing a number of successive zeros in a bit, and two other values for coding the sign of a significant bit, and for coding the bit planes next to the least significant bit plane by performing the following steps:
- the present invention also aims at a device for decoding by bit planes, comprising a decoding module for reconstructing a vector whose integer components have been coded by binary decomposition, according to a succession of bit planes, of the plane of the most significant bits ( MSB) in the least significant bit (LSB) plane.
- a decoding module for reconstructing a vector whose integer components have been coded by binary decomposition, according to a succession of bit planes, of the plane of the most significant bits ( MSB) in the least significant bit (LSB) plane.
- the decoding module is then further arranged to decode the planes in order of the plane of the most significant bits (MSB) in terms of least significant bits (LSB), said module being arranged to reconstruct the plane of the most significant bits. from: a first type of coding symbol comprising at least two possible symbol values to indicate a number of successive zeroes in the binary of the plane to be reconstructed, and two other values to indicate, in binary, the sign of the most significant of a component to be reconstructed, to insert zeros in the plane to be reconstructed and to identify the sign of the most significant bit of a component to be reconstructed; and to reconstruct the following bit planes up to the plane of the least significant bits, said module is arranged to: identify the null bits in the already decoded planes and extract the bits of the same positions in a current plane to be decoded to form a non-significant part,
- a decoding device according to an exemplary embodiment of the invention will be described in detail with reference to FIG. 7 below.
- the present invention also relates to a computer program intended to be stored in memory of a coding device, and comprising instructions for implementing the above coding method, when they are executed by such a coding device.
- a computer program intended to be stored in memory of a coding device, and comprising instructions for implementing the above coding method, when they are executed by such a coding device.
- the invention also relates to a computer program intended to be stored in memory of a decoding device and comprising instructions for implementing the decoding method above, when they are executed by such a decoding device.
- a flowchart of such a decoding program, according to an exemplary embodiment, will be described in detail with reference to Figure 9 below.
- the invention is advantageously applied to the coding of the speech and audio signals, to perform hierarchical coding. It also applies to the hierarchical coding of other signals such as image and video signals. In addition, it can also be applied to lossless coding, as in the case of the future ITU-T G.711-lossless standard.
- FIG. 1 shows a general compression system
- FIG. 2 schematically shows the general steps of scalar quantization followed by bit plane coding
- FIG. 3 shows an example of bit plane decomposition
- FIG. 4 presents the general steps of bitmap and multiplexing coding
- FIGS. 5A and 5B show possible divisions of the bit planes Pk in sub-vectors
- FIG. 6 shows the transform encoding with optimized coding in the sense of the invention, per bit planes, for each plane P k ;
- FIG. 7 shows the transform decoding with optimized decoding in the sense of FIG. invention, by bit planes and for each plane P 4 ,
- FIG. 8 shows the optimized coding steps according to one embodiment of the invention, in bit planes for the P k planes and in two passes,
- FIG. 9 shows the optimized decoding steps according to one embodiment of the invention, in bit planes for the P k planes and in two passes, and
- FIG. 10 shows an example of passage in a quinary representation in the coding in bit planes and in two passes, optimized according to one embodiment of the invention.
- FIG. 6 showing the diagram of a transform coder according to one embodiment of the invention.
- the input signal is filtered by high-pass filtering (module 601) in order to remove frequencies below 50 Hz.
- perceptual shaping filtering is applied to the signal (module 602). ).
- An LPC analysis is applied to the signal (module 603).
- An MDCT analysis for "modified discrete cosine transform" (module 604) is applied to the signal after filtering and a frequency shaping is applied.
- the shape factor ⁇ on the MDCT coefficients is estimated by a generalized Gaussian model (module 605). Once the estimate of the form factor is made, the quantization step q (module 606) is calculated.
- a uniform scalar quantization of the signal is carried out according to this quantization step (module 607).
- a sequence of vectors Y whose components are decomposed by bit planes (module 608) is thus recovered, with a particular coding of each plane within the meaning of the invention which will be described in detail below.
- knowledge of the generalized Gaussian model can be used to initialize probability tables of "0" and "1" of an arithmetic encoder in each bit plane.
- the coding by bit planes (module 608), including the initialization of the probability tables, is therefore according to the model defined by the module 605, for example a Gaussian model.
- An estimate of the noise level can then be made (module 609).
- the encoder parameters are then transmitted to the decoder via a multiplexer (module 610).
- the object of the invention is in particular here at the level of this module 608.
- FIG. 7 shows an exemplary transform decoder with optimized bit plane decoding in the sense of the invention.
- the modules of this FIG. 7 perform the inverse operations of those of the encoder modules of FIG. 6.
- the module of this FIG. 7 perform the inverse operations of those of the encoder modules of FIG. 6.
- the 701 demultiplexes the received signals.
- the module 705 finds the quantization step q.
- the module 704 decodes the noise and the module 706 reconstructs the noise from the quantization step.
- the module 703 reconstructs the coded planes and hence the Y vectors from the reconstructed quantization step.
- the object of the invention is then also at the level of the module 703, in particular.
- EoP symbol for "End of Plane" which indicates the end of a current bit plane.
- the advantage of using the EoP symbol is found especially for higher planes (such as the MSB plane), in the presence of a long sequence of zeros at the end of the plane: instead of coding a whole series of bits of values null, this sequence is simply replaced by an EoP symbol to make coding more efficient.
- FIG. 8 schematically represents steps of optimized coding by bit planes, in one embodiment.
- the arithmetic coder operates according to two contexts, called “context 0" and “context 1".
- the arithmetic coder is first initialized (step 802, after a start step 800).
- the context 0 includes a probability model for five symbols (+, -, 1, 0, EoP) and the context 1 comprises a probability model for two symbols (0, 1).
- the encoding first verifies whether the entire sequence is non-zero (step 801). For a null sequence, only a number of planes equal to 0 are transmitted.
- the coding is then carried out from the MSB plane to the LSB plane globally in two series of steps:
- steps 803 to 805 for a coding of the MSB plane (sequentially from the beginning to the end of the plane),
- steps 806 to 814 for the coding of the MSB-I plane immediately following the MSB plane to the LSB plane in two passes: the steps 809 and 810 on the one hand, and the steps 811 to 813 on the other hand ).
- step 804 the MSB plane is converted into a five-symbol sequence (+, -, 0, 1, EoP). This sequence is then encoded into a bit stream by coding. In one embodiment, both steps 804 and 805 are performed in a single operation described below.
- the binary sequence is first converted (implicitly) into a sequence consisting of an alphabet of five symbols: "+”, “-”, “1", "0” and "EoP".
- the conversion rules into a quinary sequence are defined as follows: if the bit sequence ends with at least one "0”, the final sequence of "0" is replaced by the symbol EoP: it can not there is only one occurrence of the symbol "EoP" in a given plane and if this symbol appears, it ends the sequence,
- the binary symbol "1” is replaced by a symbol “0” or “1” depending on whether the relative integer value associated with the position of the value bit “1” is respectively positive or strictly negative: a bit “1” at the position i in the binary sequence is replaced by its sign sign (y t ) symbolized by "0" or "1".
- step 805 we code the sequence of bits stopping at this position: i ⁇ b 2 ... b pos eop ].
- the coding context 0 is applied in a quinary representation, according to the rules defined above and as described for the coding example of a plane [0 0 0 1 0 0 0 0 0 0 1 0 0], by retaining the signs of the components of the original vector to retranscribe them in the quinary representation.
- the first pass begins with a search for the significant positions that would be associated with the plane being coded (step 808) and to code the bits associated with these positions in this plane (step 810) in binary, so in context 1.
- the second pass consists in coding more finely the plan by a sequence now quinaire, therefore in context 0, in steps 811 to 813.
- these planes are not coded in a sequential manner (from the first bit to the last bit), but in two passes, advantageously in according to previously coded plans.
- the coding is then performed in two passes as follows.
- step 809 a sequence P k s is extracted which comprises the bits of the current plane located at the positions where significant k (y ⁇ ) ⁇ 0. It is therefore the set of bits which occupy, in a current plane P k , bit positions which, in previous more significant planes (MSB, MSB-I, ...), had "1" as value.
- this sequence is encoded on only two symbols (0, 1), in binary form.
- Context C I
- the position of the last bit of non-zero value is sought in the bit sequence P TM ' s, and the next position is defined as having to carry the symbol EoP, as previously described for the MSB in step 804.
- FIG. 10 shows an example of converting an entire sequence into a sequence of five symbols (+, -, 0, 1, EoP) in context 0, or in a sequence of two symbols (0, 1) in context 1, according to the instruction given to the arithmetic encoder.
- the example sequence is: [0, 0, 0, +35, +4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -H].
- the binary decomposition taking into account the highest component value +35, imposes a coding on six represented planes of the MSB plane in the LSB plane of FIG. 10. It will be noted that the information on the sign of the components (for example - 11) does not appear in the bit planes but will be reserved, as will be seen, for the quinary representation.
- the MSB-I plan and subsequent plans are coded in two passes.
- FIG. 9 shows an embodiment of the steps of decoding by bit planes, optimized according to the invention. These steps are "inverse" to the coding shown in FIG. 8.
- the decoding begins with the MSB plane.
- the sequence of five associated symbols is decoded by arithmetic decoding (step 906).
- the decoded MSB plane step 906
- the signs associated with the components whose most significant bit could be represented by a "1" in the MSB plane step 907.
- the EoP symbol shall be interpreted in consideration of: the number of zeros in the plane indicated by the symbols "+” or "-”, the number of symbols "0" or "1” indicating a most significant bit in that plane, and the number N of components y, in a vector Y.
- the MSB plane is then written [0001000000000000] by storing that the sign of the component y 4 is positive.
- the components y i being decoded are then updated (step 908) with simply y ⁇ ⁇ - y ⁇ + 2 K ⁇ 1 P K ⁇ , assuming, of course, that the information on the number K of plans is well received.
- each bit plan is decoded in two passes as in the case of the coding described above.
- the significant vector k (i) is computed (step 911) as with the coding by means of the already decoded planes and according to an expression of the type:
- the partially decoded values y i are used, as updated at the end of the decoding of each plane at steps 908 and 918. These values are positive because the signs are preferentially applied only at the end. decoding (step 921).
- the first pass then consists in using the significant information k (i) to determine the positions of the bits given by the decoding of the sequence P k s ⁇ s (steps 912 and 913).
- the second decoding pass is to first determine the length of the sequence p nonstg (£ te p 914) as q ue complement to N of the length of the sequence P £ 'g. This information is useful for determining, in the plane P ⁇ , the number of zeros to interpret in the presence of the EoP symbol.
- step 917 the full expression of P ⁇ current plan is obtained in step 917.
- the components are finally decoded t updated in step 918.
- step 920 At the end of the decoding of the bit planes (step 920), the decoded and stored signs are applied to each component of the vector Y (step 921), which is finally completely decoded (with, of course, an inverse MDCT transformation and the others steps implemented in a decoder as shown in the example of Figure 7.
- bitmap coding A main interest of bitmap coding is that it leads naturally to a hierarchical (or progressive) coding of the signal. Thus, increasingly successive approximations of the signal can be reconstructed as we receive all the coded bit planes.
- the decoder is advantageously adapted to decode the bitstream even if it has been received only partially. It will be noted that the decoder described above advantageously has this important property of possibility of partial decoding.
- the arithmetic decoder receives in addition to the bitstream an indication of the number of bits received and stops decoding if it reaches the bit budget imposed on the decoding.
- steps 910 to 919 can be completed and passed directly to the step 921 of applying the signs of the representative components of the vector Y, since the most significant bits of these representative components have already been decoded in priority, as well as their sign of course.
- the two coding (and / or decoding) passes of the bit planes of the MSB-I in the LSB plane can be inverted with respect to the above description with reference to the steps 809 to 813 of FIG. 8, with no impact on the treatment.
- the prob values (bit 0) and prob (bit 1) in each plane P k can be estimated from a generalized Gaussian model as described in the document: "EMBEDDED TRANSFORM CODING OF AUDIO SIGNALS BY MODEL-BASED BIN PLANE CODING ", Thi Minh Nguyet Hoang, Marie Oger, Stephane Ragot, Marc Antonini, ICASSP 2008, p.4013-4016.
- an additional symbol EoF (for "End of File") is introduced in the 0 context of the coding / decoding.
- the decoder deduces the number of actually transmitted planes only when the EoF symbol is decoded. This assumes that the complete bitstream has been received by the decoder.
- the decoder can receive only part of the plans to be decoded without knowing how many plans should have been transmitted. Additional mechanisms can then be provided to handle the cases of the missing bit planes.
- An interesting variant is to provide then a maximum amplitude of component of the vector Y and to fix the same number K of planes for all the frames (thus for all the successive vectors Y), without having to transmit the number K.
- the invention can thus exploit the knowledge a priori of the fixed number K of bit planes.
- the first most significant planes (P 6 P 5 ... P k ) which are null are first identified and these plans are simply not coded.
- the symbol "EoP” can finally be applied in context 0.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
La présente invention concerne une technique de codage/décodage par plans de bits, dans lequel les composantes entières d'un vecteur à coder sont décomposées en représentation binaire dans une succession de plans de bits, du plan des bits les plus significatifs au plan des bits les moins significatifs. Au sens de l'invention, le codage du plan des bits les plus significatifs est effectué, en affectant un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles ("+", "-") pour représenter un nombre de zéros successifs en binaire dans un plan, et deux autres valeurs (« 0 », « 1 ») pour coder le signe d'un bit significatif, et le codage des plans de bits suivants jusqu'au plan des bits les moins significatifs s'effectue selon les étapes d'identification des bits nuls dans les plans déjà codés et extraction des bits de mêmes positions dans un plan courant à coder pour former une partie non significative( Pk
nonsig ), d'identification des bits non nuls dans les plans déjà codés et extraction des bits de mêmes positions dans le plan courant à coder pour former une partie significative (Pk
sig ), de codage des bits de la partie non significative en utilisant le premier type de symbole, et de codage des bits de la partie significative en utilisant un deuxième type de symbole pour coder la valeur des bits dans la partie significative.
Description
Codage/décodage par plans de bits, perfectionné
La présente invention concerne le codage/décodage de signaux numériques tels que les signaux de parole, audio, images et vidéo, ainsi que leur application pour la transmission et/ou le stockage de tels signaux multimédias.
Plus particulièrement, la présente invention traite d'un type de codage/décodage hiérarchique, représentant les signaux par plans de bits successifs pour coder efficacement les séquences résultantes de bits ayant des valeurs 0 ou 1. Ce codage/décodage de signaux numériques est en particulier très utile pour le codage par transformée des signaux de parole et/ou audio.
On connaît deux familles de techniques de compression de signaux numériques : les méthodes de compression sans perte, telles que le codage de Huffman et le codage arithmétique (on qualifie également de codage entropique ces méthodes car elles visent à s'approcher de la limite théorique inférieure de débit, donnée par l'entropie de la source à coder) : ces méthodes reposent en général sur la connaissance des probabilités des symboles à coder ; et les méthodes de compression avec perte, fondée sur la quantification scalaire ou vectorielle et l'exploitation d'un modèle de production et/ou de perception du signal, mais ces méthodes (comme par exemple le codage CELP de la parole ou le codage audio perceptuel par transformée de type MPEG) introduisent un bruit de quantification qui rend impossible la restitution exacte du signal original.
On s'intéresse par la suite à la deuxième famille des méthodes de compression avec perte des signaux, notamment de parole et audio, qui atteignent des taux de compression adaptés aux applications de communications multimédia (téléphonie, audio/vidéo-conférence, ou autres applications).
Ces méthodes de compression avec perte peuvent être décrites, de façon générale, en référence à la figure 1, comme suit. Un codeur comporte typiquement : un module d'analyse 100 du signal source Se, un module de quantification 101 et - un module de codage proprement dit 102. Un décodeur comporte typiquement : un module de décodage proprement dit 103, un module de quantification inverse 104 et un module de synthèse 105.
L'analyse (module 100) peut prendre diverses formes suivant le type de signal, par exemple pour un signal de parole ou un signal audio : calcul des paramètres d'un modèle (prédiction linéaire et de hauteur tonale ou
"pitch"), ou - transformation temps/fréquence, telle que la transformation discrète en cosinus modifiée (ou MDCT).
Le quantificateur (module 101) est de type scalaire ou vectoriel. Il peut s'agir par exemple d'assigner par défaut un indice donné à une valeur du signal qui est proche de cet indice. On comprendra alors que le signal peut perdre de sa précision (en particulier de sa finesse) lors de l'étape de quantification, laquelle s'effectue forcément « avec perte ».
Le codage, ensuite sans perte, que réalise le module 102 est parfois omis en pratique pour simplifier la mise en œuvre. Il vise par exemple à éliminer la redondance statistique après quantification. En l'absence d'erreurs binaires sur le canal, le décodeur sans perte (module 103) reconstruit l'information telle qu'elle était fournie en sortie du quantificateur. Cette information est décodée par le quantificateur "inverse" (module 104). La synthèse (module 105) peut être réalisée sous la forme d'un générateur d'excitation suivi par un filtrage, d'une transformation inverse, ou autre. Dans ce qui suit, les étapes d'analyse et de synthèse ne sont pas discutées. On ne considère que le bloc de quantification suivie par un codage sans perte.
On a représenté sur la figure 2 le principe de la quantification scalaire, suivie par un codage sans perte, par plans de bits, des indices issus de la quantification. Ce type de méthode de compression est utilisé dans plusieurs codeurs existants (MPEG-4, JPEG2000 pour du codage d'images, ou autres).
Le module 201 réalise une quantification de la source Se (qui peut être ici par exemple les coefficients d'une transformée fréquentielle d'un signal audio), pour obtenir une séquence d'indices entiers de quantification. Le module 202 réalise une décomposition sous forme binaire de cette séquence d'indices en "plans de bits" successifs. Cette décomposition produit : des séquences, par plans, de 0 et de 1 suivant les poids successifs de puissance de 2, en allant des bits les plus significatifs dans un premier plan de bits dit « MSB » (pour « Most Significant Bits ») jusqu'aux bits les moins significatifs dans un dernier plan de bits dit « LSB » (pour « Least Significant Bits »), ainsi que des bits de signes.
Le module 203 code les séquences de 0 et de 1 associées à chaque plan ainsi que les bits de signes. En général on utilise un codage de Huffman ou un codage par plage, ou encore un codage arithmétique contextuel, pour ce faire.
II apparaît aussi que, pour que le codage par plan de bits (module 203) soit efficace, la décomposition binaire devrait faire apparaître des structures (de longues séquences de mêmes symboles) et des corrélations exploitables par un codage « entropique » (sans perte) de 0 et de 1. Ainsi, le codage des plans est souvent contextuel, les bits à coder étant découpés en blocs de symboles dans lesquels les symboles sont semblables ou, tout au moins, ont des statistiques similaires. Par exemple, on peut changer les tables de codage de 0 et de 1 dans un plan donné suivant les valeurs des bits déjà décodés aux alentours (dans les plans de bits supérieurs et au niveau des bits adjacents).
L'intérêt principal du codage par plans de bits est qu'il conduit naturellement à un codage hiérarchique (ou progressif) du signal : des approximations successives du
signal de plus en plus précises peuvent être reconstruites à mesure que l'on reçoit l'ensemble des plans de bits codés.
On décrit en détail dans la suite ce principe de codage. On donne en particulier un exemple de décomposition par plans de bits, en décrivant les formats possibles de trains binaires associés.
La quantification scalaire, suivie par un codage par plans de bits, peut se décrire comme suit. Le signal à coder (adapté par le bloc 200, par exemple par une transformée) peut être représenté par un vecteur X = [ Jc1 • • • xN ] de dimension N ≥ 1. La quantification scalaire menée par le module 201 produit un vecteur Y correspondant à une séquence de valeurs entières Y = [^1 - - - yN] . La décomposition par plans de bits (menée par le module 202) revient tout d'abord à séparer les entiers yι en signes et valeurs absolues, soit :
où la notation sign(yt ) désigne le bit de signe associé à l'entier yt , avec la convention
[I si ^ < 0 [0 si yt > 0
Le signe de zéro étant indéfini, la convention ci-dessus sign(yt) = 0 si yt = 0 peut être modifiée, en variante, en sign(yt) = 1 si yt = 0 .
Ensuite, les valeurs absolues yt sont décomposées sous forme binaire, soit :
où bitk (yt) est le k eme bit de la décomposition binaire de yt et K est le nombre de plans de bits à prévoir pour décomposer la séquence complète Y .
On a illustré cette décomposition en figure 3. Ici, le vecteur Y s'écrit (-2, +7, +3, 0, +1, -3, -6, +5). Par exemple, le nombre +7 s'écrit 7 = 4+2+1, soit 7 = 22 + 21 + 2°, et fait intervenir les trois plans de la figure 3 (de MSB à LSB). Le nombre -6 nécessite la déclaration du signe par le bit 1 dans le plan des bits de signe noté SGN et 6 s'écrit 6 = 22 + 21, faisant intervenir la valeur de bit 1 dans le plan MSB.
Ainsi, dans l'exemple de la figure 3 illustrant une décomposition en plan de bits pour N = S et Y = [-2, +7, +3,0, +1,-3, -6, +5] , on a dans ce cas K = 3 ,
P0 = [0,1,1,0,1,1,0,1] (plan LSB), P1 = [1,1,1,0,0,1,1,0] , P2 = [0,1,0,0,0,0,1,1] (plan MSB) et S = [1,0,0,0,0,1,1,0] .
Les valeurs {yt }ι=ι N non nulles sont dites significatives.
Le nombre K de plans de bits (excepté le plan de signes) est donné par :
où désigne l'arrondi à l'entier supérieur de x, et Iog2(θ) = -∞ .
On obtient par cette décomposition les vecteurs :
- Pk (Y) = [bitk (yι) bitk (y2) ... bitk (yN)] avec k = 0,-, K -I , et
- S(Y) = [sign(yι) sign(y2) • • • sign(yN)] .
Le vecteur Pk définit alors le plan de bits de poids k . Le plan de bits supérieur Pi+1 est un plan de bits plus significatifs, tandis que le plan de bits inférieur P^1 est un plan de bits moins significatifs. Ainsi, le plan Pκ_γ est le plan des bits les plus significatifs MSB. Le plan P0 est le plan des bits les moins significatifs LSB. Par souci de concision, le plan Pκ γ est appelé plan MSB ci-après, le plan Pκ 2 est appelé plan MSB-I, le plan Pκ 3 est appelé plan MSB-2, etc.
Le module 203 code les plans de bits un par un en commençant par les plans supérieurs (MSB) jusqu'aux plans inférieurs (LSB). Pour ne pas transmettre de bits de signe inutiles, les bits de signe sign{ yt ) , i = !,- • -, N , ne sont transmis que si la valeur absolue correspondante yt est non nulle. On comprendra ici que, par exemple pour un signal de parole voisé comportant peu d'énergie en hautes fréquences (donc des amplitudes décroissantes avec la fréquence), un grand nombre de plans de bits comporte uniformément des 0. Ainsi, il n'est pas rare que les plans de bits comportent uniformément des zéros.
De plus, pour permettre un décodage partiel (ou hiérarchique) des plans de bits, le bit de signe sign(yt) n'est transmis que si l'un des bits décodé {t>itlζ (yι)}k_0 κ ι vaut 1.
En référence à la figure 4, un traitement simple que peut effectuer le module 203 (et qui intervient après quantification scalaire), pour le codage par plan de bits, peut être décrit comme suit. Après la transmission du nombre total K de plans de bits (étape 401) qui fait suite à une étape de début 400, pour tous les plans de bits, du plan MSB au plan LSB (donc pour l'indice k allant k = K -I à fc = 0 à l'étape 402) et pour n = 1 à N dans chaque plan (N étant, pour rappel, la dimension du vecteur Y), chaque bit bitk (yt) est codé et si ce bit n'est pas nul, on cherche à connaître le signe de yt pour coder ce signe noté sign(yt) si ce signe n'a pas déjà été codé dans un plan de bits plus significatifs. Le codage (étapes 404 et 405 de la figure 4) revient alors à coder successivement chacun des plans, en allant du plan MSB au plan LSB.
Le débit produit en sortie du codeur est variable, en général. On ne décrit pas ici la façon de gérer la variation de ce débit. On indique simplement que la régulation du débit peut être assurée par les modules 200 et 204. Le train binaire que génère le module 203 est transmis sur le canal 205. Ce canal peut tronquer le train binaire (en exploitant la nature hiérarchique du train binaire) ou encore introduire des erreurs binaires.
Le démultiplexeur et décodeur 206 reconstruit les plans de bits Pk un par un et démultiplexe les bits de signes S qui ont été transmis. Ces informations décodées permettent de reconstruire (module 207) la séquence d'entiers Y . En l'absence d'erreurs binaires et sans troncature de train binaire on a : - P - P
- S = S et
- Y=Y .
Dans la suite, pour simplifier la description, on suppose que la transmission par le canal 205 ne génère pas d'erreurs binaires car cette question ne concerne pas directement l'invention.
On décrit ci-après plusieurs formats possibles de trains binaires. Le codage s'effectue ainsi sur des plans de bits Pk successifs. Il est alors possible de fractionner les plans Pk en sous-vecteurs pour permettre un décodage progressif. Les figures 5A et 5B présentent plusieurs formats de trains binaires associés.
En particulier, la figure 5A montre le format le plus simple selon lequel on écrit d'abord le nombre de plans K, puis successivement un code (de longueur variable) associé à chaque plan Pk de valeur absolue, et à la fin on rajoute les bits de signes S associés aux coefficients significatifs. Ce format a l'avantage d'être très facile à utiliser mais il ne permet pas un décodage hiérarchique car, dès lors que le débit de décodage est inférieur au débit de codage, le décodeur n'aura accès qu'à une partie du train binaire allant du début jusqu'à un endroit qui peut être situé avant la fin du format de transmission. On perd donc en premier les bits de signes, ce qui rend peu intelligible le signal décodé.
Pour permettre un décodage partiel du train binaire (tronqué à partir de la fin), on peut envisager une structure plus sophistiquée de train binaire représentée à la figure 5B. En notant signk (yt) le bit de signe sur le k eme plan pour le ieme coefficient, signk (yt) est défini comme :
fsign(v ) si bit (y )=l et bit (y ) = 0 pour j>k
SIgHJy1 ) = ] k = 0,- - -, K -l et i = l,- - - , N
0 autrement
où 0 représente l'ensemble vide.
Autrement dit, les bits de signes ne sont définis que pour les entiers non nuls (donc les valeurs entières significatives) et, de plus, ils sont associés uniquement aux bits de valeur " 1 " la plus significative pour chaque entier yt .
On définit le vecteur de signes S4 associé à chaque plan de bit k quelque soit 0 < k<K comme suit :
Le vecteur S4 a une dimension variable puisque, par définition, signk (yt) peut correspondre à 0.
Dans la structure de la figure 5B, les bits de signes associés aux coefficients devenus significatifs dans le plan Pk sont transmis immédiatement après chaque plan Pk . La seule différence entre les figures 5A et 5B est donc que le code du plan de signe a été fractionné en sous-codes et chaque sous-code a été intercalé entre les codes des plans P4. . Il reste malgré tout que les codes associés à chaque plan représentent en général des plans entiers ce qui n'est pas souhaitable.
Ces techniques de l'état de l'art antérieur ne sont pas optimales ou ne sont pas adaptées pour le codage par plans de bits.
En effet, le codage par plans de bits classique présente, en général, des performances inférieures au codage non hiérarchique, à bas débit. Cette pénalité est due en grande partie à la difficulté d'exploiter toutes les corrélations entre plans de bits successifs. De plus, on sépare en général le codage des bits de signes et celui des valeurs absolues. Ce codage séparé est sous-optimal car chaque signe est codé seul, dès lors qu'un bit de valeur "1" apparaît dans la décomposition binaire d'un entier. Il serait alors préférable de combiner le codage de ce bit " 1 " (bit le plus significatif de l'entier non nul) et du signe associé.
Par ailleurs, le codage par plages appliqué à une décomposition par plans de bits est relativement efficace pour représenter les plans de bits supérieurs (MSB, MSB-I, etc.) quand ceux-ci ont des probabilités non équilibrées (par exemple peu de "1" et beaucoup de "0"), ce qui est d'ailleurs souvent le cas pour des signaux de parole et audio dans des représentations fréquentielles. Néanmoins, le codage de plages devient beaucoup moins intéressant pour les plans de bits inférieurs (en général à partir du plan MSB-2), car on ne retrouve plus dans de tels plans de longues séquences de symboles identiques. Par ailleurs, le problème du codage séparé des signes et des valeurs absolues se pose, sensiblement de la même manière que dans le cas du codage par plans de bits classique.
La présente invention vient améliorer la situation.
A cet effet, elle propose tout d'abord un procédé de codage par plans de bits, dans lequel les composantes entières d'un vecteur à coder sont décomposées en représentation binaire dans une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB). En particulier, le codage du plan des bits les plus significatifs est effectué, en affectant :
- un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles pour représenter un nombre de zéros successifs en binaire dans un plan, et deux autres valeurs pour coder le signe d'un bit significatif, et le codage des plans de bits suivants jusqu'au plan des bits les moins significatifs s'effectue selon les étapes suivantes:
- identification des bits nuls dans les plans déjà codés et extraction des bits de mêmes positions dans un plan courant à coder pour former une partie non significative,
- identification des bits non nuls dans les plans déjà codés et extraction des bits de mêmes positions dans le plan courant à coder pour former une partie significative, codage des bits de la partie non significative en utilisant le premier type de symbole, et codage des bits de la partie significative en utilisant un deuxième type de symbole pour coder la valeur des bits dans la partie significative.
Ainsi, l'invention, de façon très avantageuse, exploite complètement la nature binaire spécifique des plans de bits. De plus, elle permet d'optimiser le codage des signes en le combinant efficacement avec le codage de "1" dans les plans de bits. Avec la mise en œuvre au sens de l'invention, la pénalité en termes de performances à bas débit est fortement réduite, ce qui rend le codage par plans de bits très intéressant.
Le codage des signaux par quantification scalaire suivie par codage par plans de bits, même s'il est déjà largement utilisé en codage audio (norme MPEG-4 BSAC), en codage d'images (norme JPEG200) ou en codage vidéo (norme MPEG-4 FGS), conduit bien à un codage hiérarchique mais, habituellement, ses performances à bas débit sont en général très inférieures à celles du codage non hiérarchique. Cette pénalité en termes de performances est principalement due : à la difficulté d'exploiter les corrélations entre plans de bits successifs ainsi qu'au codage séparé des valeurs absolues des bits et de leur signe.
L'invention améliore alors les performances du codage par plans de bits, en particulier à bas débit, et ce simplement en prévoyant deux types de symbole pour coder chacun des plans de bits :
- chaque bit valant " 1" est remplacé par un symbole dédié au signe de la composante vectorielle dont ce bit est le plus significatif, et
- les autres bits (nuls) sont identifiés en tant que suite de bits nuls et le nombre de bits par suite est représenté par exemple en codage binaire par un deuxième type de symbole (par exemple "+" et "-")
- un autre symbole peut avantageusement identifier une fin (ou un début) de plan, c'est-à-dire qu'à partir de (ou jusqu'à) une certaine position, tous les bits sont nuls, ce qui évite alors de coder le nombre de bits nuls en fin (ou en début) de plan.
On comprendra alors que le codage au sens de l'invention offre une combinaison optimisée du codage des signes et des valeurs absolues, ainsi que des séquences de "0" par codage des longueurs de suites de bits nuls.
Le codage des plans de bits suivants s'effectuant en deux passes permet avantageusement d'exploiter les corrélations entre plans de bits successifs.
Bien entendu, la présente invention vise aussi un procédé de décodage par plans de bits, pour reconstruire les composantes entières d'un vecteur qui ont été codées par décomposition binaire, selon une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB). En particulier, les plans sont décodés par ordre du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), et pour reconstruire le plan des bits les plus significatifs: un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles pour indiquer un nombre de zéros successifs en binaire du plan à reconstruire, et deux autres valeurs pour indiquer, en binaire, le signe du bit le plus significatif d'une composante à reconstruire, est utilisé pour insérer des
zéros dans le plan à reconstruire et pour identifier le signe du bit le plus significatif d'une composante à reconstruire; et pour reconstruire les plans de bits suivants jusqu'au plan des bits les moins significatifs, le procédé comporte les étapes suivantes: - identification des bits nuls dans les plans déjà décodés et extraction des bits de mêmes positions dans un plan courant à décoder pour former une partie non significative,
- identification des bits non nuls dans les plans déjà décodés et extraction des bits de mêmes positions dans le plan courant à décoder pour former une partie significative, décodage des bits de la partie non significative en utilisant le premier type de symbole, et décodage des bits de la partie significative en utilisant un deuxième type de symbole pour décoder la valeur des bits dans la partie significative.
La présente invention vise aussi un dispositif de codage par plans de bits, comportant un module encodeur apte à coder les composantes entières d'un vecteur en les décomposant en représentation binaire dans une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB). En particulier, le module précité est agencé en outre pour coder le plan des bits les plus significatifs, en affectant :
- un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles pour représenter un nombre de zéros successifs en binaire dans un plan, et deux autres valeurs pour coder le signe d'un bit significatif, et pour coder les plans de bits suivants jusqu'au plan des bits les moins significatifs en exécutant les étapes suivantes:
- identification des bits nuls dans les plans déjà codés et extraction des bits de mêmes positions dans un plan courant à coder pour former une partie non significative, - identification des bits non nuls dans les plans déjà codés et extraction des bits de mêmes positions dans le plan courant à coder pour former une partie significative,
- codage des bits de la partie non significative en utilisant le premier type de symbole, et
- codage des bits de la partie significative en utilisant un deuxième type de symbole pour coder la valeur des bits dans la partie significative. Un dispositif de codage selon un exemple de réalisation de l'invention sera décrit en détail en référence à la figure 6 plus loin.
La présente invention vise aussi un dispositif de décodage par plans de bits, comportant un module de décodage pour reconstruire un vecteur dont les composantes entières ont été codées par décomposition binaire, selon une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB).
Le module de décodage est alors agencé en outre pour décoder les plans par ordre du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), le dit module étant agencé pour reconstruire le plan des bits les plus significatifs à partir: d'un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles pour indiquer un nombre de zéros successifs en binaire du plan à reconstruire, et deux autres valeurs pour indiquer, en binaire, le signe du bit le plus significatif d'une composante à reconstruire, pour insérer des zéros dans le plan à reconstruire et pour identifier le signe du bit le plus significatif d'une composante à reconstruire; et pour reconstruire les plans de bits suivants jusqu'au plan des bits les moins significatifs, ledit module est agencé pour: - identifier les bits nuls dans les plans déjà décodés et extraire les bits de mêmes positions dans un plan courant à décoder pour former une partie non significative,
- identifier les bits non nuls dans les plans déjà décodés et extraire les bits de mêmes positions dans le plan courant à décoder pour former une partie significative, décoder les bits de la partie non significative en utilisant le premier type de symbole, et
- décoder les bits de la partie significative en utilisant un deuxième type de symbole pour décoder la valeur des bits dans la partie significative.
Un dispositif de décodage selon un exemple de réalisation de l'invention sera décrit en détail en référence à la figure 7 plus loin.
La présente invention vise aussi un programme informatique destiné à être stocké en mémoire d'un dispositif de codage, et comportant des instructions pour la mise en œuvre du procédé de codage ci-avant, lorsqu'elles sont exécutées par un tel dispositif de codage. Un organigramme d'un tel programme de codage, selon un exemple de réalisation, sera décrit en détail en référence à la figure 8 plus loin.
L'invention vise aussi un programme informatique destiné à être stocké en mémoire d'un dispositif de décodage et comportant des instructions pour la mise en œuvre du procédé de décodage ci-avant, lorsqu'elles sont exécutées par un tel dispositif de décodage. Un organigramme d'un tel programme de décodage, selon un exemple de réalisation, sera décrit en détail en référence à la figure 9 plus loin.
L'invention s'applique avantageusement au codage des signaux de parole et audio, pour réaliser un codage hiérarchique. Elle s'applique aussi au codage hiérarchique d'autres signaux tels que les signaux d'images et vidéo. De plus, elle peut être également appliquée au codage sans perte de signaux, comme dans le cas de la future norme UIT-T G.711-« lossless ».
D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description détaillée ci-après, et des dessins annexés sur lesquels : la figure 1 présente un système de compression général,
- la figure 2 présente schématiquement les étapes générales d'une quantification scalaire suivie par un codage par plans de bits,
- la figure 3 montre un exemple de décomposition en plan de bits, - la figure 4 présente les étapes générales d'un codage par plans de bits et multiplexage,
- les figures 5A et 5B présentent des découpages possibles des plans de bits Pk en sous-vecteurs,
- la figure 6 présente l'encodage par transformée avec un codage optimisé au sens de l'invention, par plans de bits, pour chaque plan Pk , - la figure 7 présente le décodage par transformée avec un décodage optimisé au sens de l'invention, par plans de bits et pour chaque plan P4 ,
- la figure 8 présente les étapes de codage optimisé selon une réalisation de l'invention, par plans de bits pour les plans Pk et en deux passes,
- la figure 9 présente les étapes du décodage optimisé selon une réalisation de l'invention, par plans de bits pour les plans Pk et en deux passes, et
- la figure 10 présente un exemple de passage en représentation quinaire dans le codage par plans de bits et en deux passes, optimisé selon une réalisation de l'invention.
On se réfère tout d'abord à la figure 6 présentant le schéma d'un codeur par transformée selon un mode de réalisation de l'invention. Dans l'exemple représenté, le signal d'entrée est filtré par un filtrage passe-haut (module 601) afin de retirer les fréquences inférieures à 50 Hz. Puis, on applique un filtrage perceptuel de mise en forme sur le signal (module 602). Une analyse LPC est appliquée sur le signal (module 603). Une analyse MDCT pour "modified discrète cosine transform" (module 604) est appliquée sur le signal après filtrage et une mise en forme fréquentielle est appliquée. On estime le facteur de forme α sur les coefficients de la MDCT par un modèle gaussien généralisé (module 605). Une fois l'estimation du facteur de forme effectuée, on calcule le pas de quantification q (module 606). Puis, on effectue une quantification scalaire uniforme du signal suivant ce pas de quantification (module 607). On récupère ainsi une suite de vecteurs Y dont les composantes sont décomposées par plans de bits (module 608), avec un codage particulier de chaque plan au sens de l'invention qui sera décrit en détail plus loin.
Dans une réalisation avantageuse, on peut se servir de la connaissance du modèle gaussien généralisé pour initialiser des tables de probabilités de "0" et de " 1" d'un codeur arithmétique dans chaque plan de bits. Le codage par plans de bits (module 608), dont l'initialisation des tables de probabilités, se fait donc suivant le modèle défini par le module 605, par exemple un modèle gaussien.
On peut effectuer ensuite une estimation du niveau de bruit (module 609). Les paramètres du codeur sont ensuite transmis au décodeur en passant par un multiplexeur (module 610).
L'objet de l'invention se situe en particulier ici au niveau de ce module 608.
La figure 7 présente un exemple de décodeur par transformée avec un décodage par plan de bits optimisé au sens de l'invention. Les modules de cette figure 7 réalisent les opérations inverses de celles des modules du codeur de la figure 6. Ainsi, le module
701 démultiplexe les signaux reçus. Le module 705 retrouve le pas de quantification q.
Le module 704 décode le bruit et le module 706 reconstruit le bruit à partir du pas de quantification. Le module 703 reconstruit les plans codés et, de là, les vecteurs Y à partir du pas de quantification reconstruit.
L'objet de l'invention se situe alors aussi au niveau du module 703, en particulier.
Dans ce mode de réalisation, on utilise préférentiellement un codage arithmétique contextuel. On définit ici deux contextes de codage arithmétique (donc avec deux modèles de probabilité) et dans le premier contexte (noté C=O), on définit cinq symboles comme suit : les symboles "+" et "-", associés aux séquences de "0" dans un plan de bit courant, - les symboles "0" et " 1" représentant un bit présentant nouvellement une valeur de
"1" dans le plan de bit courant et le signe associé, - le symbole EoP (pour « End of Plane ») qui indique la fin d'un plan de bit courant.
L'intérêt d'utiliser le symbole EoP s'avère surtout pour les plans supérieurs (tel le plan MSB), en présence d'une longue séquence de zéros à la fin du plan : au lieu de coder toute une suite de bits de valeurs nulles, cette suite est remplacée simplement par un symbole EoP pour rendre le codage plus efficace.
Dans le second contexte (noté C=I), on définit deux symboles ("0" et " 1") associés aux bits "0" et " 1" dans un plan courant de bits, comme on le verra plus loin.
La figure 8 représente schématiquement des étapes du codage optimisé par plans de bits, dans un mode de réalisation. Le codeur arithmétique opère selon deux contextes, appelés "contexte 0" et "contexte 1". Le codeur arithmétique est d'abord initialisé (étape 802, après une étape de début 800).
Le contexte 0 comporte un modèle de probabilité pour cinq symboles (+, -, 1, 0, EoP) et le contexte 1 comprend un modèle de probabilité pour deux symboles (0, 1).
On suppose que le nombre de plans K est transmis. On ne décrit donc ici que le codage par plans de bits optimisé en supposant le nombre de plans déjà transmis. Le codage commence par vérifier si la séquence entière est non nulle (étape 801). Pour une séquence nulle, on ne transmet qu'un nombre de plans égal à 0.
Le codage est ensuite effectué du plan MSB au plan LSB globalement en deux séries d'étapes :
- les étapes 803 à 805 pour un codage du plan MSB (de façon séquentielle du début à la fin de plan),
- les étapes 806 à 814 pour le codage du plan MSB-I qui suit immédiatement le plan MSB jusqu'au plan LSB (en deux passes : les étapes 809 et 810 d'une part, et les étapes 811 à 813 d'autre part).
Tout d'abord, à l'étape 804, le plan MSB est converti en une séquence à cinq symboles (+, -, 0, 1, EoP). Cette séquence est ensuite codée en un train binaire par codage
arithmétique adaptatif à l'étape 805, dans ce contexte 0. Dans un mode de réalisation, les deux étapes 804 et 805 sont réalisées en une seule opération décrite ci-après.
La séquence binaire est d'abord convertie (implicitement) en une séquence constituée à partir d'un alphabet des cinq symboles : « + », « - », « 1 », « 0 » et « EoP ». Les règles de conversion en une séquence quinaire (à 5 symboles) sont définies comme suit : si la séquence binaire se termine par au moins un "0", la séquence finale de "0" est remplacée par le symbole EoP : il ne peut donc y avoir qu'une occurrence du symbole "EoP" dans un plan donné et si ce symbole apparaît, il termine la séquence,
- les suites consécutives de "0" qui ne terminent pas la séquence binaire sont converties en "+" et "-" : pour chacune de ces suites, le nombre de "0" consécutifs est calculé et écrit en binaire (en commençant par la fin de la suite) et un symbole 0 est remplacé par "-" tandis qu'un symbole 1 est remplacé par "+" ; par ailleurs, si le nombre de zéros consécutifs n'est pas de la forme 2n-l (n entier), le premier bit de cette décomposition binaire (correspondant forcément à un "+" en fin de décomposition quinaire) n'est pas pris en compte,
- le symbole binaire "1" est remplacé par un symbole "0" ou "1" suivant que la valeur entière relative associée à la position du bit de valeur " 1" est respectivement positive ou strictement négative : un bit " 1 " à la position i dans la séquence binaire est remplacée par son signe sign(yt) symbolisé par « 0 » ou « 1 ».
A titre d'exemple, pour une séquence Y = [0 0 0 +10 -7 0 0 +1 -6 -11 0 0], avec N= 12, on cherche à extraire dans l'exemple K=A plans de valeurs absolues, étant entendu que le signe des composantes du vecteur Y est retenu pour être retranscrit en représentation quinaire. Le plan MSB est donné alors par [ 0 0 0 1 0 0 0 0 0 1 0 0 ]. Ce plan est converti en la séquence quinaire suivante : [ + + 0 + - 1 EoP ], avec :
« ++ » pour les trois premiers zéros du plan (en retenant que 3 vérifie 3 = 22-l), « 0 » pour représenter la valeur à 1 du bit de poids fort de la composante +10, laquelle est positive, ce qui justifie la représentation quinaire « 0 »,
« +- » pour représenter le nombre 5 qui s'écrit 5 = Ix20+0x21+lx22, donc « +-+ » en séquence quinaire et avantageusement « +- » car 5 ne vérifie pas une expression du type 2n-l,
« 1 » pour représenter la valeur à 1 du bit de poids fort de la composante -11, laquelle est négative, ce qui justifie la représentation quinaire « 1 », et
- EoP pour représenter la série de zéros en fin de plan.
On présente ici un exemple détaillé de mise en œuvre combinée des étapes 804 et 805 en particulier pour le plan MSB. On cherche à coder une séquence binaire \by b2... bnb] de nb bits, correspondant à un plan de bit de la séquence entière [J1 y2... ynb] . On peut écrire alors, pour le plan MSB, que nb=N et, en particulier, [b{ b2... bnh\ =Pκ_γ .
On cherche tout d'abord (étape 804) la position pos _eop du symbole EoP dans le plan MSB. Elle peut être donnée par une expression mathématique du type : pos _ eop <— { V/ e [i, nb] bk = 0}
Ensuite (étape 805), on code la suite de bits s'arrêtant à cette position : i\ b2... bpos eop] .
Pour ce faire, on applique le contexte de codage 0 en représentation quinaire, selon les règles définies ci-avant et comme décrit pour l'exemple de codage d'un plan [ 0 0 0 1 0 0 0 0 0 1 0 0 ], en retenant les signes des composantes du vecteur d'origine pour les retranscrire dans la représentation quinaire.
Le codage des plans suivants MSB-I à LSB s'effectue préférentiellement en deux passes.
La première passe commence par une recherche des positions significatives qui serait associée au plan en cours de codage (étape 808) et à coder les bits associés à ces positions dans ce plan (étape 810) en binaire, donc dans le contexte 1. La deuxième passe consiste à coder plus finement le plan par une séquence maintenant quinaire,
donc en contexte 0, dans les étapes 811 à 813. En effet, pour exploiter la corrélation entre plans de bits successifs, ces plans ne sont pas codés de façon séquentielle (du premier bit au dernier bit), mais en deux passes, avantageusement en fonction des plans précédemment codés.
Ainsi, pour un plan quelconque Pk (du MSB-I au LSB), on calcule une valeur notée significantk (i) par la fonction suivante (étape 808) : y κ-[ significatif (i) = .-μ+i = ∑ bitm(y,)2], i = l,-, N m=k+l où [.J correspond à l'arrondi à l'entier inférieur (ou « partie entière »).
La valeur de significantk (i) calculée pour un plan Pk est utilisée pour séparer ce plan
Pk en deux parties :
- une première partie ne comprenant que les bits aux positions vérifiant significantk (i) ≠ 0 , - une deuxième partie comprenant les bits aux positions vérifiant significantk (i) = 0 .
On définit donc la partie "significative" d'un plan Pk par :
Pr = {bitk (y, ), i = l,- , N \ significatif, (i) ≠ θ} et la partie "non significative" du plan Pk par : Pras = {bitk (y,), i = l,-, N significatif, (i) = OJ
Le codage est alors réalisé suivant deux passes comme suit.
A l'étape 809, on extrait une suite Pk s qui comprend les bits du plan courant situés aux positions où significantk (yι) ≠ 0 . Il s'agit donc de l'ensemble des bits qui occupent, dans un plan courant Pk , des positions de bits qui, dans des plans précédents plus significatifs (MSB, MSB-I, ...), avaient « 1 » comme valeur. On comprendra
dans une autre formulation possible qu'il s'agit de l'ensemble des bits des composantes yt dont le signe a déjà été codé. Dans la première passe, on code donc à l'étape 810 cette suite sur deux symboles (0, 1) seulement, en binaire. On utilise donc le second contexte (contexte C=I) d'un codeur arithmétique, pour ce faire.
La deuxième passe consiste en le codage quinaire de la suite de bits restants P™'s qui comprend les bits du plan courant situés aux positions où significantk (yι) = 0 (extraits à l'étape 811). On recherche dans la suite de bits P™'s la position du dernier bit de valeur non nulle et on définit la position suivante comme devant porter le symbole EoP, comme décrit précédemment pour le plan MSB à l'étape 804. La suite de bits P™'s dont on a ôté les valeurs nulles de fin à partir de la position EoP est convertie ensuite (étape 812) en symboles (+, -, 1 et EoP), selon le premier contexte de codage arithmétique (C=O) en représentation quinaire, comme décrit ci-avant pour le plan MSB à l'étape 805.
La figure 10 présente un exemple de conversion d'une séquence entière en une séquence de cinq symboles (+, -, 0, 1, EoP) en contexte 0, ou en une séquence de deux symboles (0, 1) en contexte 1, selon la consigne donnée au codeur arithmétique. La séquence prise en exemple est : [0, 0, 0, +35, +4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -H].
La décomposition binaire, compte tenu de la valeur de composante la plus élevée +35, impose un codage sur six plans représentés du plan MSB au plan LSB de la figure 10. On relèvera que l'information sur le signe des composantes (par exemple -11) n'apparaît pas dans les plans de bits mais sera réservée, comme on le verra, pour la représentation quinaire.
Le codage de ces six plans se fait alors comme suit.
Le premier plan MSB des bits les plus significatifs (donnés en valeurs absolues) s'exprime par la suite de bits P5 = [000100000000000] . Ce plan est converti avec les règles définies précédemment en une séquence "++ 0 EoP" qui est codée dans le contexte O (avec « ++ » pour 3 zéros successifs en début de plan, le nombre 3 vérifiant 3 = 22-l ; « O » pour le bit de valeur 1 et dont la composante (+35) correspondante est positive ; et EoP pour clore la succession de zéros qui terminent le plan).
Le plan MSB-I et les plans suivants se codent en deux passes.
Dans la première passe, on cherche d'abord la position du ou des bits dont la valeur était de « 1 » dans le plan précédent (donc, ici, dans le plan MSB). Dans l'exemple, il s'agit du seul quatrième bit du plan (en partant de la gauche vers la droite tel qu'illustré sur la figure 10). Sa valeur dans le plan MSB-I est « 0 », donc P*ιg = [0] et on code un seul symbole "0" dans le contexte C=I (partie de gauche de la figure 10). On sort ensuite ce quatrième bit de la série de bits constituant le plan MSB-I et on a pour les bits restants P4"0""* = [000000000000000] , ce qui devient en représentation quinaire le symbole "EoP". On code donc le symbole "EoP" dans le contexte C=O (partie de droite de la figure 10).
Pour le plan MSB-2, on a encore le quatrième bit (bit de même position à « 1 » dans le plan MSB) à comptabiliser pour la première passe et sa valeur est « 0 », soit donc P3"* = [0] et on code un seul bit "0" dans le contexte C=I.
Dans la deuxième passe, on a les bits restants P3"0"5'* = [00000000000001] , ce qui correspond à 14 zéros, puis au bit "1" qui correspond au bit le plus significatif de la composante ^ = -11. Le nombre 14 s'écrit 14 = 0x20+lx21+lx22+lx23, soit « -+++ » en représentation quinaire. Toutefois, le dernier symbole "+" de la représentation "-+++" n'a pas besoin d'être codé et il reste finalement « -++ ».
De plus le bit de valeur 1 est remplacé par le bit de signe (négatif) correspondant sign(yι) = l . Donc Pk nomιg s'écrit "-++ 1". On notera ici l'absence du symbole "EoP" car le plan P3 se termine par un " 1". Cette séquence est codée dans le contexte C=O.
Pour le plan suivant MSB-3, on doit maintenant comptabiliser le quatrième bit, mais aussi le dernier bit (bits à « 1 » respectivement dans le plan MSB et dans le plan MSB- 2) pour la première passe et leurs valeurs respectives sont « 0 » et « 0 ». On a alors P4 S« = [00] et on code deux bits à "0" dans le contexte C=I.
Dans la deuxième passe, on a les bits restants P4"0""* = [00010000000000] , ce qui correspond :
- « ++ »,
- « 0 » (pour le bit de poids fort de la composante positive +4), et
- EoP pour les bits à « 0 » restants, soit donc « ++ 0 EoP » codé en contexte C=O.
Pour le plan suivant MSB-4, on doit comptabiliser le quatrième bit, le dernier bit mais aussi le cinquième bit (bits à « 1 » dans les plans précédents) pour la première passe et leurs valeurs respectives sont « 1 », « 0 », puis « 1 ». On a alors Pf* = [101] et on code trois bits « 1 », « 0 », « 1 » dans le contexte C=I. Dans la deuxième passe, tous les bits restants sont nuls, ce qui se représente par le symbole unique EoP.
Il en va de même pour le dernier plan LSB. Dans la première passe, on a PJS B = [101] et on code trois symboles " 101" dans le contexte 1. Dans la deuxième passe, on a P^« = [0000000000000] qui s'écrit "EoP" et on code un seul symbole "EoP" dans le contexte C=O.
Ce simple exemple de réalisation montre à quel point il est avantageux d'utiliser un symbole « EoP » (qui code pratiquement à lui seul le contenu du plan MSB-I, du plan LSB+ 1 et du plan LSB), compte tenu : du grand nombre de zéros dans un plan de bits habituel, - et du fait que l'on extrait les bits aux positions de bits qui ont eu une valeur à « 1 » dans des plans plus significatifs.
La figure 9 présente un mode de réalisation des étapes d'un décodage par plans de bits, optimisé selon l'invention. Ces étapes sont "inverses" du codage représenté sur la figure 8. Il conviendra en particulier de noter par la suite que le décodage commence par le plan MSB. Les deux contextes (C=O et C=I) du décodeur arithmétique sont d'abord initialisés (étape 904) après une étape de début 900 qui peut être initiée sur réception des symboles codés (étapes 901 et 902).
Le traitement de décodage commence par le plan MSB, codé initialement avec un codeur arithmétique utilisant cinq symboles (+, -, 1, 0 et EoP) définis dans le contexte C=O. La séquence de cinq symboles associée est décodée par décodage arithmétique (étape 906). Après conversion, on retrouve : - le plan MSB décodé (étape 906), et - les signes associés aux composantes dont le bit de poids fort pouvait être représenté par un « 1 » dans le plan MSB (étape 907). Le symbole EoP sera interprété en considération : du nombre de zéros dans le plan indiqué par les symboles « + » ou « - », du nombre de symboles « 0 » ou « 1 » indiquant un bit de poids fort dans ce plan, et du nombre N de composantes y, dans un vecteur Y.
Ainsi, en reprenant l'exemple de la figure 10, pour le plan MSB codé en représentation quinaire, « ++ 0 EoP » signifie que :
« ++ » doit s'interpréter comme étant 2°+21=3 puisqu'il n'y a pas de symbole « - » dans cette séquence et que l'on a bien 3 = 22-l,
« 0 » correspond au bit, positif, de valeur 1 en position 3+1 = 4, et
- le reste du plan ne comporte que des bits nuls, de la position 5 à la position N-5. Le plan MSB s'écrit alors [0001000000000000] en mémorisant que le signe de la composante y4 est positif. Les composantes yι en cours de décodage sont ensuite mises à jour (étape 908) avec simplement yι <— yι + 2K~1PKΛ , en supposant, bien entendu, que l'information sur le nombre K de plans est bien reçue.
Pour les plans du MSB-I à LSB, on décode chaque plan de bits en deux passes comme dans le cas du codage exposé ci-avant. Pour chaque plan, on calcule (étape 911) le vecteur significantk (i) comme au codage en s'aidant des plans déjà décodés et selon une expression du type :
K-I significatif \ (i) = y, jk+l = J] MtJy1)V, i = l,-,N m=k+l
On notera qu'ici, on utilise les valeurs yι partiellement décodées et telles que mises à jour à la fin du décodage de chaque plan aux étapes 908 et 918. Ces valeurs sont positives car les signes ne sont préférentiellement appliqués qu'à la fin du décodage (étape 921).
La première passe consiste alors à utiliser l'information significantk (i) pour connaître les positions des bits donnés par le décodage de la suite Pk sιs (étapes 912 et 913). En particulier, à l'étape 912, on relève la longueur de la suite P"g et, à l'étape 913, on place les bits de la suite P£'g aux positions du plan en cours de décodage en fonction de l'information significantk (i) , en contexte C=I d'un décodeur arithmétique.
La deuxième passe de décodage consiste d'abord à déterminer la longueur de la suite pnonstg (£tape 914) en tant que complément à N de la longueur de la suite P£'g . Cette information est utile pour déterminer, dans le plan P^, le nombre de zéros à interpréter
en présence du symbole EoP. Le décodage proprement dit de la séquence quinaire associée à la suite P™'8 s'effectue aux étapes 915 et 916, conformément à la description du décodage du plan MSB décrite ci-avant en référence aux étapes 906 et 907, en notant en particulier que : - l'expression de la suite P™'8 en symboles binaires (« 0 » et « 1 ») est obtenue à l'étape 915 (décodage en contexte C=O),
- les signes des composantes représentées par les bits non nuls (symboles binaires à « 1 ») sont mémorisés (étape 916), et
- l'expression complète du plan courant P^ est obtenue à l'étape 917. Les composantes yt décodées sont finalement mises à jour à l'étape 918.
A la fin du décodage des plans de bits (étape 920), les signes décodés et mémorisés sont appliqués à chaque composante du vecteur Y (étape 921), lequel est finalement complètement décodé (moyennant, bien entendu, une transformation MDCT inverse et les autres étapes mises en œuvre dans un décodeur comme représenté sur l'exemple de la figure 7.
Un intérêt principal du codage par plans de bits est qu'il conduit naturellement à un codage hiérarchique (ou progressif) du signal. Ainsi, des approximations successives du signal de plus en plus précises peuvent être reconstruites à mesure que l'on reçoit l'ensemble des plans de bits codés.
De manière à mettre en œuvre ce principe de codage/décodage hiérarchique, le décodeur est avantageusement adapté pour décoder le train binaire même si celui-ci n'a été reçu que partiellement. On relèvera que le décodeur décrit précédemment possède avantageusement cette propriété importante de possibilité d'un décodage partiel. Préférentiellement, le décodeur arithmétique reçoit en plus du train binaire une indication du nombre de bits reçus et s'arrête de décoder s'il atteint le budget de bits imposé au décodage. Si le décodeur arithmétique détecte qu'il ne peut plus lire de bits supplémentaires, le traitement des étapes 910 à 919 peut s'achever et passer
directement à l'étape 921 d'application des signes des composantes représentatives du vecteur Y, puisque les bits de poids les plus forts de ces composantes représentatives ont déjà été décodés en priorité, ainsi que leur signe bien entendu.
Bien entendu, la présente invention ne se limite pas à la forme de réalisation décrite ci- avant à titre d'exemple ; elle s'étend à d'autres variantes.
On a décrit ci-avant un nouveau symbole « EoP » indiquant que les bits d'un plan sont tous nuls à partir d'une certaine position. En variante, un symbole de type « SoP » pour « Start of Plane » peut être prévu et indiquer alors que tous les bits de début de plan sont nuls jusqu'à une certaine position. Toutefois, la réalisation utilisant le symbole « EoP » est préférée car, souvent et notamment pour un signal audio, l'énergie est répartie dans les basses fréquences (premières composantes MDCT d'un vecteur Y). Donc, les premiers bits d'un plan ont plus de chance de ne pas être nuls que les derniers bits de ce plan. On peut toutefois prévoir aussi l'utilisation combinée des deux symboles « EoP » et « SoP » à condition de coder aussi la position du premier ou du dernier bit non nul du plan de manière à positionner correctement les zéros de début et de fin de plan au décodage.
Par ailleurs, on notera que les deux passes de codage (et/ou de décodage) des plans de bits du MSB-I au plan LSB peuvent être inversées par rapport à la description ci-avant en référence aux étapes 809 à 813 de la figure 8, et ce, sans aucune incidence sur le traitement. On code/décode d'abord la suite P4"0"^ avant de coder/décoder la suite P^'s .
On peut considérer en outre un schéma de codage/décodage en une seule passe selon laquelle chaque plan (du plan MSB au plan LSB) est codé/décodé directement en représentation quinaire, sans être séparé en deux parties P™'8 et P"g . Toutefois, là encore, la réalisation présentée ci-avant en référence à la figure 10 montre bien que lorsque les bits des composantes représentatives ont été isolés dans la suite P"g , la suite complémentaire P™'s à coder en représentation quinaire peut s'exprimer très
succinctement avec l'apparition rapide du symbole « EoP », ce qui est avantageux en termes d'efficacité de codage.
Par ailleurs, pour améliorer encore les performances du codage, il est possible aussi d'incorporer une estimation des probabilités des symboles (+, -, 1, 0 et EoP) dans chaque plan de bits. Cette technique permet d'optimiser le codage entropique en apportant une connaissance a priori des tables de probabilités. Ici, les probabilités des symboles dans chaque plan sont estimées au codage/décodage de chaque plan. Le codage/décodage est inchangé mis à part qu'une pré-estimation des probabilités est réalisée. Par exemple, cette estimation peut être réalisée dans le contexte 0 du codeur arithmétique comme suit, avec une initialisation :
- probabilité identique pour "+" et "-" donnée par 1/2 . prob (bit 0) . (N-l)/N,
- probabilité identique pour "1" et "0" donnée par 1/2 . prob (bit 1) . (N-l)/N, et
- probabiltié pour « EoP » donnée par 1/N, puis les valeurs prob (bit 0) et prob (bit 1) dans chaque plan Pk peuvent être estimées à partir d'un modèle gaussien généralisé comme décrit dans le document : "EMBEDDED TRANSFORM CODING OF AUDIO SIGNALS BY MODEL-BASED BIT PLANE CODING", Thi Minh Nguyet Hoang, Marie Oger, Stéphane Ragot, Marc Antonini, ICASSP 2008, p.4013-4016.
Enfin, dans une variante encore, il est possible de ne pas transmettre le nombre de plans K. On introduit à cet effet un symbole supplémentaire EoF (pour « End of File »), dans le contexte 0 du codage/décodage. Le décodeur déduit le nombre de plans effectivement transmis qu'au moment où le symbole EoF est décodé. Cela suppose que le train binaire complet a été reçu par le décodeur. En cas de troncature du train binaire transmis par le codeur, le décodeur peut ne recevoir qu'une partie des plans à décoder sans savoir combien de plans auront dû être transmis. Des mécanismes supplémentaires peuvent alors être prévus pour traiter les cas des plans de bits manquants. Une variante intéressante consiste à prévoir alors une amplitude maximale
de composante du vecteur Y et fixer un même nombre K de plans pour toutes les trames (donc pour tous les vecteurs Y successifs), sans avoir à transmettre le nombre K.
Tel est le cas par exemple du codage selon la norme G.711 qui associe à chaque échantillon du signal de parole un indice scalaire de huit bits incluant un bit de signe et K=I bits représentant une amplitude. Le train binaire du codage G.711 d'une trame de N échantillons donne donc implicitement une décomposition en K=I plans de bits avec un plan supplémentaire de bits de signe. Dans l'exemple du codage G.711, en général, les premiers plans les plus significatifs P6 P5 ... P4 (0 ≤ k ≤ 6) de beaucoup de trames sont tous nuls. Cette particularité s'observe notamment pour des trames "inactives" (sans parole, avec uniquement du silence ou du bruit ambiant), mais aussi pour certaines trames de signaux de parole de niveau "nominal" (-26 dBov) ou "faible" (-36 dBov).
L'invention peut ainsi exploiter la connaissance a priori du nombre fixe K de plans de bits. Selon cette variante et toujours dans l'exemple du codage G.711, les premiers plans les plus significatifs (P6 P5 ... Pk ) qui sont nuls sont d'abord identifiés et ces plans ne sont tout simplement pas codés. Seuls les plans inférieurs P4^ ... P0 sont codés, comme décrit précédemment, mais sans transmettre le nombre K, et avant de terminer le codage arithmétique, le symbole « EoP » peut être finalement appliqué dans le contexte 0. Au décodeur, la réception du symbole « EoP » permet de conclure que les plans P4-1 ... P0 décodés jusqu'ici sont en fait les seuls plans codés car les K-k = 1-k plans manquants ne sont que des plans nuls qui correspondent aux premiers plans les plus significatifs P6 P5 ... P4 , 0 ≤ k ≤ 6.
Cette réalisation suppose alors que le nombre de plans K est fixe. Elle est particulièrement avantageuse si suffisamment de premiers plans les plus significatifs ( P6 P5 ... P4 , 0 ≤ k ≤ 6) sont nuls. Cette réalisation pourrait faire l'objet d'une protection séparée.
Claims
1. Procédé de codage d'un signal numérique par plans de bits, dans lequel les composantes entières d'un vecteur à coder et représentant le signal numérique sont décomposées en représentation binaire dans une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), caractérisé en ce que le codage du plan des bits les plus significatifs (MSB) est effectué, en affectant :
- un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles ("+", "-") pour représenter un nombre de zéros successifs en binaire dans un plan, et deux autres valeurs (« 0 », « 1 ») pour coder le signe d'un bit significatif, et en ce que le codage des plans de bits suivants jusqu'au plan des bits les moins significatifs (LSB) s'effectue selon les étapes suivantes: - identification des bits nuls dans les plans déjà codés et extraction des bits de mêmes positions dans un plan courant à coder pour former une partie non significative^"0"^ ),
- identification des bits non nuls dans les plans déjà codés et extraction des bits de mêmes positions dans le plan courant à coder pour former une partie significative (P^ ),
- codage des bits de la partie non significative en utilisant le premier type de symbole, et
- codage des bits de la partie significative en utilisant un deuxième type de symbole (« 0 », « 1 ») pour coder la valeur des bits dans la partie significative.
2. Procédé selon la revendication 1, caractérisé en ce que le premier type de symbole comporte en outre au moins une valeur supplémentaire possible de symbole (« EoP ») pour indiquer qu'une suite de zéros commence ou termine un plan à coder.
3. Procédé selon la revendication 1, caractérisé en ce que les bits extraits formant la partie significative sont transmis tels quels à un décodeur par ordre de position dans ledit plan courant.
4. Procédé de décodage par plans de bits, pour reconstruire les composantes entières d'un vecteur qui ont été codées par décomposition binaire, selon une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), caractérisé en ce que les plans sont décodés par ordre du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), et en ce que pour reconstruire le plan des bits les plus significatifs: un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles ("+", "-") pour indiquer un nombre de zéros successifs en binaire du plan à reconstruire, et deux autres valeurs (« 0 », « 1 ») pour indiquer, en binaire, le signe du bit le plus significatif d'une composante à reconstruire, est utilisé pour insérer des zéros dans le plan à reconstruire et pour identifier le signe du bit le plus significatif d'une composante à reconstruire; et pour reconstruire les plans de bits suivants jusqu'au plan des bits les moins significatifs, le procédé comporte les étapes suivantes: - identification des bits nuls dans les plans déjà décodés et extraction des bits de mêmes positions dans un plan courant à décoder pour former une partie non significative^"0"^ ),
- identification des bits non nuls dans les plans déjà décodés et extraction des bits de mêmes positions dans le plan courant à décoder pour former une partie significative (P*w ), décodage des bits de la partie non significative en utilisant le premier type de symbole, et décodage des bits de la partie significative en utilisant un deuxième type de symbole (« 0 », « 1 ») pour décoder la valeur des bits dans la partie significative.
5. Procédé selon la revendication 4, caractérisé en ce que le premier type de symbole comporte en outre au moins une valeur supplémentaire possible de symbole (« EoP ») pour indiquer qu'une suite de zéros commence ou termine un plan à reconstruire.
6. Dispositif de codage d'un signal numérique par plans de bits, comportant un module encodeur apte à coder les composantes entières d'un vecteur représentant le signal numérique en les décomposant en représentation binaire dans une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), caractérisé en ce que ledit module (608) est agencé en outre pour coder le plan des bits les plus significatifs, en affectant :
- un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles ("+", "-") pour représenter un nombre de zéros successifs en binaire dans un plan, et deux autres valeurs (« 0 », « 1 ») pour coder le signe d'un bit significatif, et pour coder les plans de bits suivants jusqu'au plan des bits les moins significatifs en exécutant les étapes suivantes:
- identification des bits nuls dans les plans déjà codés et extraction des bits de mêmes positions dans un plan courant à coder pour former une partie non significative^"0"^ ),
- identification des bits non nuls dans les plans déjà codés et extraction des bits de mêmes positions dans le plan courant à coder pour former une partie significative
- codage des bits de la partie non significative en utilisant le premier type de symbole, et
- codage des bits de la partie significative en utilisant un deuxième type de symbole (« 0 », « 1 ») pour coder la valeur des bits dans la partie significative.
7. Dispositif de décodage par plans de bits, comportant un module de décodage pour reconstruire un vecteur dont les composantes entières ont été codées par décomposition binaire, selon une succession de plans de bits, du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), caractérisé en ce que ledit module (703) est agencé en outre pour décoder les plans par ordre du plan des bits les plus significatifs (MSB) au plan des bits les moins significatifs (LSB), le dit module étant agencé pour reconstruire le plan des bits les plus significatifs à partir: - d'un premier type de symbole de codage comportant au moins deux valeurs possibles de symboles ("+", "-") pour indiquer un nombre de zéros successifs en binaire du plan à reconstruire, et deux autres valeurs(« 0 », « 1 ») pour indiquer, en binaire, le signe du bit le plus significatif d'une composante à reconstruire, pour insérer des zéros dans le plan à reconstruire et pour identifier le signe du bit le plus significatif d'une composante à reconstruire; et pour reconstruire les plans de bits suivants jusqu'au plan des bits les moins significatifs, ledit module est agencé pour:
- identifier les bits nuls dans les plans déjà décodés et extraire les bits de mêmes positions dans un plan courant à décoder pour former une partie non significative (Pt B0MW ),
- identifier les bits non nuls dans les plans déjà décodés et extraire les bits de mêmes positions dans le plan courant à décoder pour former une partie significative (P^ ), décoder les bits de la partie non significative en utilisant le premier type de symbole, et - décoder les bits de la partie significative en utilisant un deuxième type de symbole (« 0 », « 1 ») pour décoder la valeur des bits dans la partie significative.
8. Programme informatique destiné à être stocké en mémoire d'un dispositif de codage, caractérisé en ce qu'il comporte des instructions pour la mise en œuvre du procédé selon l'une des revendications 1 à 3 lorsqu'elles sont exécutées par un tel dispositif de codage.
9. Programme informatique destiné à être stocké en mémoire d'un dispositif de i décodage, caractérisé en ce qu'il comporte des instructions pour la mise en œuvre du procédé selon l'une des revendications 4 à 5 lorsqu'elles sont exécutées par un tel dispositif de décodage.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0853792 | 2008-06-06 | ||
FR0853792 | 2008-06-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2010001020A2 true WO2010001020A2 (fr) | 2010-01-07 |
WO2010001020A3 WO2010001020A3 (fr) | 2010-02-25 |
Family
ID=40329095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/FR2009/051064 WO2010001020A2 (fr) | 2008-06-06 | 2009-06-05 | Codage/decodage par plans de bits, perfectionne |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2010001020A2 (fr) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8660187B2 (en) | 2008-06-02 | 2014-02-25 | Centre National De La Recherche Scientifique (Cnrs) | Method for treating digital data |
US8745110B2 (en) | 2008-06-02 | 2014-06-03 | Centre National De La Recherche Scientifique (Cnrs) | Method for counting vectors in regular point networks |
US20160027448A1 (en) * | 2013-01-29 | 2016-01-28 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Low-complexity tonality-adaptive audio signal quantization |
-
2009
- 2009-06-05 WO PCT/FR2009/051064 patent/WO2010001020A2/fr active Application Filing
Non-Patent Citations (5)
Title |
---|
FOWLER J E ET AL: "Wavelet-based coding of three-dimensional oceanographic images around land masses" IMAGE PROCESSING, 2000. PROCEEDINGS. 2000 INTERNATIONAL CONFERENCE ON SEPTEMBER 10-13, 2000, PISCATAWAY, NJ, USA,IEEE, vol. 2, 10 septembre 2000 (2000-09-10), pages 431-434, XP010530015 ISBN: 978-0-7803-6297-0 * |
MIN-JEN TSAI: "Stack-run-end compression for low bit rate color image communication" ACOUSTICS, SPEECH AND SIGNAL PROCESSING, 1998. PROCEEDINGS OF THE 1998 IEEE INTERNATIONAL CONFERENCE ON SEATTLE, WA, USA 12-15 MAY 1998, NEW YORK, NY, USA,IEEE, US, vol. 5, 12 mai 1998 (1998-05-12), pages 2553-2556, XP010279421 ISBN: 978-0-7803-4428-0 * |
THI MINH NGUYET HOANG ET AL: "Embedded transform coding of audio signals by model-based bit plane coding" ACOUSTICS, SPEECH AND SIGNAL PROCESSING, 2008. ICASSP 2008. IEEE INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 31 mars 2008 (2008-03-31), pages 4013-4016, XP031251476 ISBN: 978-1-4244-1483-3 cité dans la demande * |
TSAI M J ET AL: "Stack-Run Image Coding" IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 6, no. 5, 1 octobre 1996 (1996-10-01) , XP011014327 ISSN: 1051-8215 * |
ZHENG WU ET AL: "Wavelet image coding by dilation-run algorithm" IMAGE PROCESSING, 2004. ICIP '04. 2004 INTERNATIONAL CONFERENCE ON SINGAPORE 24-27 OCT. 2004, PISCATAWAY, NJ, USA,IEEE, vol. 5, 24 octobre 2004 (2004-10-24), pages 3165-3168, XP010786469 ISBN: 978-0-7803-8554-2 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8660187B2 (en) | 2008-06-02 | 2014-02-25 | Centre National De La Recherche Scientifique (Cnrs) | Method for treating digital data |
US8745110B2 (en) | 2008-06-02 | 2014-06-03 | Centre National De La Recherche Scientifique (Cnrs) | Method for counting vectors in regular point networks |
US20160027448A1 (en) * | 2013-01-29 | 2016-01-28 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Low-complexity tonality-adaptive audio signal quantization |
US10468043B2 (en) * | 2013-01-29 | 2019-11-05 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Low-complexity tonality-adaptive audio signal quantization |
US11094332B2 (en) | 2013-01-29 | 2021-08-17 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Low-complexity tonality-adaptive audio signal quantization |
Also Published As
Publication number | Publication date |
---|---|
WO2010001020A3 (fr) | 2010-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2277172B1 (fr) | Dissimulation d'erreur de transmission dans un signal audionumerique dans une structure de decodage hierarchique | |
JP5384780B2 (ja) | 無損失オーディオ符号化方法、無損失オーディオ符号化装置、無損失オーディオ復号化方法、無損失オーディオ復号化装置及び記録媒体 | |
EP1581930B1 (fr) | Procede de codage et de decodage audio a debit variable | |
EP2176861B1 (fr) | Codage hierarchique de signaux audionumeriques | |
EP2183851A1 (fr) | Codage/decodage par plans de symboles, avec calcul dynamique de tables de probabilites | |
EP1692689B1 (fr) | Procede de codage multiple optimise | |
EP2769378B1 (fr) | Codage hierarchique perfectionne | |
EP1037196B1 (fr) | Procédé de codage, de décodage et de transcodage audio | |
EP1692687B1 (fr) | Transcodage entre indices de dictionnaires multi-impulsionnels utilises en codage en compression de signaux numeriques | |
EP3175443B1 (fr) | Détermination d'un budget de codage d'une trame de transition lpd/fd | |
WO2010001020A2 (fr) | Codage/decodage par plans de bits, perfectionne | |
CN101615911A (zh) | 一种编解码方法和装置 | |
EP2652735B1 (fr) | Codage perfectionne d'un etage d'amelioration dans un codeur hierarchique | |
EP1836699A1 (fr) | Procede et dispositif de codage optimise entre deux modeles de prediction a long terme | |
EP2203915B1 (fr) | Dissimulation d'erreur de transmission dans un signal numerique avec repartition de la complexite | |
WO2009080982A2 (fr) | Traitement d'erreurs binaires dans une trame binaire audionumerique | |
FR2791166A1 (fr) | Procedes de codage, de decodage et de transcodage | |
KR100221186B1 (ko) | 음성 부호화 및 복호화 장치와 그 방법 | |
WO2007040328A1 (fr) | Procede et dispositif de decodage arithmetique de donnees audio bsac echelonnables | |
FR2842670A1 (fr) | Perfectionnement a la compression de donnees numeriques | |
FR2830970A1 (fr) | Procede et dispositif de synthese de trames de substitution, dans une succession de trames representant un signal de parole | |
FR2872650A1 (fr) | Procede et dispositif de compression/decompression sans perte de signaux numeriques d'entites multimedia |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09772702 Country of ref document: EP Kind code of ref document: A2 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09772702 Country of ref document: EP Kind code of ref document: A2 |