EP3272122A1 - Encoding of images by vector quantization - Google Patents
Encoding of images by vector quantizationInfo
- Publication number
- EP3272122A1 EP3272122A1 EP16718390.4A EP16718390A EP3272122A1 EP 3272122 A1 EP3272122 A1 EP 3272122A1 EP 16718390 A EP16718390 A EP 16718390A EP 3272122 A1 EP3272122 A1 EP 3272122A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- data
- decoded
- quantization
- block
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- 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/94—Vector quantisation
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Definitions
- the present invention relates generally to the field of image processing, and more specifically to the encoding and decoding of digital images and digital image sequences.
- the invention can be applied in particular, but not exclusively, to the video coding implemented in the current AVC and HEVC video coders and their extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc.), as well as to the corresponding decoding.
- a pixel prediction of the block in question is implemented with respect to prediction pixels that belong to either the same image (Intra prediction) or to one or more preceding images.
- a sequence of images (Inter prediction) that have already been decoded.
- Such prior images are conventionally referred to as reference images and are stored in memory at both the encoder and the decoder.
- a set of data is calculated by subtracting the pixels of the considered block from the prediction pixels.
- the coefficients of the computed data set are then quantized after a possible mathematical transformation, for example of the discrete cosine transform (DCT) type, then coded by an entropy coder.
- the encoded data is written into a data signal to be transmitted to a decoder.
- DCT discrete cosine transform
- Said data signal comprises in particular: the type of prediction (Intra prediction, Inter prediction, prediction by default carrying out a prediction for which no information is transmitted to the decoder ("in English” skip ”));
- the prediction mode (prediction direction, reference image component, etc.);
- the decoding is done image by image, and for each image, block by block. For each block, the corresponding elements of the data signal are read. Inverse quantization and inverse transformation of block coefficients are performed to produce a decoded residual data block. Then, the prediction of the block is calculated and the block is reconstructed by adding the prediction to the decoded residual data block.
- the quantization of the coefficients of the residual data block calculated may be of scalar or vector type.
- Scalar quantization uses a quantization step that is determined at the encoding from a parameter called QP (abbreviation of "Quantization Parameter”).
- Vector quantization consists of coding:
- the coded index is then transmitted in the data signal to the decoder which contains the same dictionary or dictionaries as the coder and which applies inverse vector quantization by decoding said transmitted index, and then determining the quantization vector associated with said decoded index.
- the quantization vectors are part of a predetermined dictionary
- the coding of the current block by vector quantization may prove to be poorly adapted to the statistics of the video signal.
- One of the aims of the invention is to overcome disadvantages of the state of the art mentioned above.
- an object of the present invention relates to a method of coding at least one image cut into blocks, implementing, for a current block to code the image:
- the coding method according to the invention is remarkable in that it comprises:
- the prediction of the current block is thus both more accurate and more adapted to the current video context, which has the advantage of significantly improving the compression performance of the coded data signal to be transmitted to the decoder.
- the modification of one of the quantization vectors is implemented only if the data of the second calculated data set fulfills a predetermined criterion.
- the modification of one of the quantization vectors is implemented using a parameter whose value depends on the size of the image to be encoded.
- the quantization vectors are each initialized to predetermined values.
- the invention advantageously proposes to initialize the dictionary quantization vectors to respective predetermined values to make the coding of the Intra Image independent of any other image in the sequence.
- the invention relates to a device for coding at least one image divided into blocks, comprising, for a current block to be encoded in said image:
- a prediction module for predicting the current block according to a prediction mode selected from among a plurality of predetermined prediction modes, delivering a predictor block,
- a calculation module for calculating a first set of data representative of a difference between the obtained predictor block and the current block
- a comparison module for comparing the first set of calculated data with a plurality of quantization vectors
- a selection module for selecting one of the quantization vectors according to a predetermined coding performance criterion
- a first coding module for coding an index associated with the selected quantization vector.
- Such a coding device is remarkable in that:
- the calculation module is activated to calculate a second set of data representative of a difference between the first set of calculated data and the selected quantization vector, and in that it comprises a second coding module which is activated to code the second calculated data set, at least one of the quantization vectors being modified according to the data of the second calculated data set.
- the invention also relates to a method for decoding a data signal representative of at least one image divided into blocks, implementing, for a current block to be decoded:
- Such a decoding method is remarkable in that it comprises:
- the data relating to the current block to be decoded are typically the values of the pixels of this block making it possible to reconstruct this block or transformed coefficient values making it possible to reconstruct this block.
- the modification of one of the quantization vectors is implemented only if the decoded data fulfill a predetermined criterion.
- the modification of one of the quantization vectors is implemented using a parameter whose value depends on the size of the image to be decoded.
- the quantization vectors are each initialized to predetermined values.
- the invention relates to a device for decoding a data signal representative of at least one image divided into blocks, comprising, for a current block to be decoded:
- a first decoding module for decoding
- a calculation module for determining the quantization vector associated with the decoded index
- a prediction module for obtaining a predictor block from the decoded prediction data.
- Such a decoding device is remarkable in that it comprises:
- a second decoding module which is activated to decode data relating to the current block to be decoded determined in the data signal, at least one of the quantization vectors being modified as a function of the decoded data, a reconstruction module for reconstructing the current block from the decoded data, the determined quantization vector and the obtained predictor block.
- the invention also relates to a computer program comprising instructions for implementing the coding method and / or the decoding method according to the invention, when it is executed on a computer.
- Such a program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
- Another object of the invention is also a computer readable recording medium, and including computer program instructions as mentioned above.
- the recording medium may be any entity or device capable of storing the program.
- the medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means, or a digital recording means such as by example a USB key or a hard drive.
- such a recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means.
- the program according to the invention can be downloaded in particular on an Internet type network.
- such a recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to perform the coding and / or decoding method according to the invention or to be used in the execution of this and / or these.
- the circuit being adapted to perform the coding and / or decoding method according to the invention or to be used in the execution of this and / or these.
- FIG. 1 represents the steps of the coding method according to one embodiment of the invention
- FIG. 2 represents a coding device implementing the steps of the coding method of FIG. 1,
- FIG. 3 represents a decoding device according to one embodiment of the invention
- FIG. 4 represents the steps of the decoding method implemented in the decoding device of FIG. 3. Detailed description of the coding part
- the coding method according to the invention is used to code an image or a sequence of images according to a bit stream close to that obtained by a coding set.
- the coding method according to the invention is used to code an image or a sequence of images according to a bit stream close to that obtained by a coding set.
- the coding method according to the invention is for example implemented in a software or hardware way by modifications of such an encoder.
- the coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C15 as represented in FIG.
- the coding method according to the invention is implemented in a coding device CO represented in FIG.
- such a coding device comprises a memory MEM_CO comprising a buffer memory TAMP_CO, a processing unit UT_CO equipped for example with a microprocessor ⁇ and driven by a computer program PG_CO which implements the method of coding according to the invention.
- the code instructions of the computer program PG_CO are for example loaded into a RAM memory MR_CO before being executed by the processor of the processing unit UT_CO.
- the coding method represented in Figure 1 applies to any fixed current image IC j or part of a sequence of L IC-i images, IC j, ..., IC L (1 ⁇ j ⁇ L) to code.
- a current image IC j is subdivided into a plurality of blocks Bi, B 2 , B u , ..., B s (1 ⁇ u ⁇ S).
- Such a subdivision step is implemented by a partitioning software module MP_CO shown in FIG. 2, which module is driven by the microprocessor ⁇ of the processing unit UT_CO.
- the term "block” means coding unit (coding unit). This last terminology is notably used in the standard HEVC "ISO / IEC / 23008-2 Recommendation ITU-T H.265 High Efficiency Video Coding (HEVC)".
- such a coding unit groups together sets of pixels of rectangular or square shape, also called blocks, macroblocks, or sets of pixels having other geometrical shapes.
- Said blocks B ; B 2 , B u , ..., B s are intended to be coded according to a predetermined order of travel, which is for example of the lexicographic type. This means that the blocks are coded one after the other, from left to right.
- the blocks Bi, B 2 , B u , ..., B s have a square shape and all contain K pixels, with K> 1.
- said blocks are of size 4x4 or 8x8 pixels.
- the last blocks on the left and the last blocks on the bottom may not be square.
- the blocks may be for example of rectangular size and / or not aligned with each other.
- each block can also be divided into sub-blocks which are themselves subdividable.
- the coder CO selects as a current block a first block to be coded B u of the image IC j , such as for example the first block B-.
- the current block B u is predicted by known Intra and / or Inter prediction techniques.
- the block B u is predicted with respect to at least one predictor block according to a prediction mode selected from a plurality of predetermined prediction modes MP 0 , MP-i,. . . , MP V , ..., MP Q where 0 ⁇ v ⁇ Q.
- the block B u is predicted with respect to a plurality of candidate predictor blocks.
- Each of the candidate predictor blocks is a block of pixels that has already been encoded or encoded and decoded. Such predictor blocks are previously stored in the buffer memory TAMP_CO of the encoder CO as represented in FIG. 2.
- the prediction is of Intra type which is, in a manner known per se, associated with a plurality of prediction modes each defined by a predetermined direction.
- Intra prediction proposed for example in the HEVC standard, there are thirty-five possible prediction directions, which amounts to determining thirty-five candidate predictor blocks available for the prediction of the current block B u .
- an optimal predictor block BP opt is obtained following a putting into competition of said candidate predictor blocks, for example by minimizing a distortion flow criterion well known to those skilled in the art.
- the BP op t block is considered as an approximation of the current block B u .
- the information relating to this prediction is intended to be written in a signal or data stream F to be transmitted to a decoder which will be described in more detail later in the description.
- the step C3 is implemented by a processor or predictive coding software module PRED_CO shown in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- the data relating to the current block B u is conventionally compared with the data of the opt predictor block BP. More specifically, during this stage, he the difference between the current block B u and the predictor block BP op t obtained is calculated.
- a first set of data, called first residue block Br u is then obtained at the end of step C4.
- Step C4 is implemented by a processor or software module
- a comparison is made of the first residue block Br u with a plurality of quantization vectors.
- the quantization vectors belong to one or more vector quantization dictionaries available to the encoder, denoted CBK, CBK 2, ..., W CBK.
- Such dictionaries are previously stored in the buffer memory TAMP_CO of the coder CO, as represented in FIG. 2.
- step C5 consists in selecting one of the said quantization vector dictionaries from the available dictionaries.
- the step C5 is implemented by a processor or calculation software module CAL2_CO as represented in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- such a selection is implemented according to one and / or the other of the following elements:
- the characteristics of the prediction for example, the Intra mode selected from among the Intra modes of the HEVC standard which has been applied to the step C3,
- characteristics of the current image IC j such as its size or its energy.
- W 70, i.e.
- the selected dictionary therefore depends both on the size of the current block B u and the selected prediction mode.
- the dictionary selected at the end of step C5 is denoted CBK op t.
- a selection is made of one of the quantization vectors of the CBK dictionary op t that has been selected in step C5.
- An optimal quantization vector V opt is obtained following a competition of said quantization vectors of the CBK op t dictionary, for example:
- the optimal quantization vector V op t is considered as an approximation of the residual block Br u .
- the information relating to this prediction is intended to be written in the aforementioned data signal F.
- the step C6 is implemented by a processor or calculation software module CAL3_CO as represented in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- step C7 the quantization vector V op t selected at the end of step C6 is coded.
- Such a step consists in representing the index denoted IV op t of the quantization vector V opt in binary form. For example, if the CBK opt dictionary to which the quantization vector V opt belongs contains 256 quantization vectors, then the quantization vector V op t can be represented on 8 bits, which makes it possible to precisely identify this vector among all the others. Quantification vectors of the CBK dictionary opt .
- Step C7 is implemented by a binary coding processor or software module CB_CO as shown in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- a second set of data is then obtained at the end of step C8.
- Step C8 is implemented by the processor or software module
- the data of the secondary residue block BSr u are coded in accordance with the invention.
- step C9 during a substep C91, the secondary residue block BSr u is transformed according to a conventional direct transformation operation to produce a transformed block BSt u .
- Sub-step C91 is implemented by a processing processor or software module MT_CO shown in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- the MT_CO processor is able to implement a direct transformation such as, for example, a discrete cosine transformation of the DCT (abbreviation of "Discrete Cosine Transform”) type, a discrete sinus transformation of the DST (abbreviation of "Discrete Sine” type). Transform "), a discrete wavelet transform of the DWT type (abbreviation of” Discrete Wavelet Transform ").
- a direct transformation such as, for example, a discrete cosine transformation of the DCT (abbreviation of "Discrete Cosine Transform”) type, a discrete sinus transformation of the DST (abbreviation of "Discrete Sine” type).
- Transform " a discrete wavelet transform of the DWT type (abbreviation of” Discrete Wavelet Transform ").
- step C9 a quantization of the data of the transformed block BSt u is performed to produce a quantized block BSq u formed of coefficients quantified.
- a quantization step is for example of scalar or vector type.
- Sub-step C92 is performed by means of a quantization software processor or module MQ_CO as shown in FIG. 2, which module is driven by the microprocessor ⁇ of the processing unit UT_CO.
- the quantized coefficients of the block BSq u are coded.
- Such coding is, for example, entropic coding of CABAC type ("Context Adaptive Binary Arithmetic Coder" in English) or else an entropy coding of arithmetic type or Huffman type.
- Sub-step C93 is implemented by a processor or software coding module MC_CO shown in Figure 2, which module is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- the signal or data flow F which contains:
- Step C10 is implemented by a processor or software module MCF for building a data signal, as shown in FIG. 2.
- the data signal F is then transmitted by a communication network (not shown) to a remote terminal.
- the data signal F furthermore comprises certain information encoded by the coder CO, such as the type of prediction (Inter or Intra) applied to the step C3, and, if appropriate, the prediction mode selected. , the index of the obtained predictor block BP opt obtained at the end of step C3, denoted IBP op t, the partitioning type of the current block B u if the latter has been partitioned, the reference image index and the displacement vector used in the Inter prediction mode.
- the coder CO such as the type of prediction (Inter or Intra) applied to the step C3, and, if appropriate, the prediction mode selected.
- the decoding of the residual block BSr u is then carried out.
- a decoded residue block BSDr u is then obtained. It is then proceeded to the construction of the decoded block BD U by adding to the predicted block BP op t the decoded residue block BSDr u .
- the decoded block BD U is the same as the decoded block obtained at the end of the decoding process of the image IC j which will be described later in the description.
- the decoded block BD U is thus made available for use by the coder CO of FIG. 2.
- a test that consists in checking whether an update criterion CBK dictionaries, CBK 2, ..., CBK W is filled or not.
- such a criterion consists in comparing the number of non-zero coefficients in the residual block BSr u with a predetermined threshold. For example, the update criterion is considered to be filled if the number of nonzero coefficients is greater than 3.
- such a criterion consists in comparing the rate of coding of the residual block BSr u with a predetermined threshold. For example, the update criterion is considered to be fulfilled if the rate of the coding of the residual block BSr u is greater than 10 bits.
- the step C1 1 is implemented by a processor or calculation software module CAL5_CO as shown in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- the step C12 is implemented by a processor or calculation software module CAL6_CO as represented in FIG. 2, which is controlled by the microprocessor ⁇ of the processing unit UT_CO.
- step C12 consists in updating all the current dictionaries CBK- ⁇ , CBK 2 ,..., CBK W.
- the CBK op t dictionary is updated as follows.
- V opt -R The vector V opt -R, and its neighbors contained in the CBKopt dictionary, are first considered. Neighbors are denoted V opt -R, V opt -R + i, V opt -
- the parameter R which defines the number of next and preceding neighbors of the vector V op t is predetermined, for example at the value 5. According to this configuration, the neighboring vectors which follow and precede the vector V opt are considered.
- vectors Z op t + n , n belonging to ⁇ -R, + R>, are constructed for the purpose of updating, as follows:
- alpha is a predetermined parameter, for example equal to 0.1, and f (n) is a value which depends on the distance between the index n and the index opt.
- the update parameters may be different depending on the size of the image. Indeed, if the image is small, a quick learning of the statistics of the current image ICj is necessary.
- HD high-definition video
- a parameter equal to 0.1 is retained.
- the update instead of applying to the neighboring vectors of the quantization vector V opt in the CBK op t dictionary, applies to the vectors close to V op t + BSDr u in the direction of the distortion.
- the update applies to vectors close to V opt + BSDr u not only in the CBK dictionary opt , but in the set of current dictionaries CBK-, CBK 2 ,..., CBK W.
- step C12 Following the aforesaid step C12, during a step C13 shown in FIG. 1, the next block of the current image IC j is selected. Then the block coding steps described above are again implemented for this next block.
- step C1 If at the end of the aforementioned step C1 1, the update criterion is not fulfilled, it is proceeded, during the above-mentioned step C13, to the selection of the next block of the current image IC j . Then the block coding steps described above are again implemented for this next block.
- the coder CO of FIG. 2 tests whether the current block that has been coded in accordance with the coding method described above is the last block of the current image IC j .
- step C12 is implemented.
- the coder CO of FIG. 2 tests whether the following current image IC j + i is a picture of Intra type or not.
- the quantization vectors of the dictionary CBK0 pt are then each initialized to a respective predetermined value.
- the blocks of this image are coded directly in accordance with the coding method of FIG. 1.
- the coding steps C1 to C15 which have just been described above are then implemented for each of the blocks Bi, B 2 , B u ,..., B s to be encoded of the current image IC j considered, in a predetermined order which is for example the lexicographic order.
- the decoding method according to the invention is for example implemented in a software or hardware way by modifications of such a decoder.
- the decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D15 as represented in FIG. 4.
- the decoding method according to the invention is implemented in a decoding device or decoder DO represented in FIG.
- the decoder DO comprises a memory MEM_DO which itself comprises a buffer memory TAMP_DO, a processing unit UT_DO equipped for example with a microprocessor ⁇ and driven by a PG_DO computer program that implements the decoding method according to the invention.
- the code instructions of the computer program PG_DO are for example loaded into a RAM memory, denoted MR_DO, before being executed by the processor of the processing unit UT_DO.
- the decoding method shown in FIG. 4 applies to a signal or data flow F representative of a current image IC j to be decoded which is fixed or which belongs to a sequence of images to be decoded.
- information representative of the current image IC j to be decoded is identified in the data signal F received at the decoder DO and as delivered at the end of the coding method of FIG.
- the quantized residue blocks BSq-1, BSq 2 , ..., BSq u , BSqs (1 ⁇ u ⁇ ) are identified in the signal F. S) respectively associated with the blocks Bi, B 2 , B u ,..., B s encoded previously according to the aforementioned lexicographic order, during the coding step C9 of FIG. 1.
- Such an identification step is implemented by a processor or MI_DO identification software module for flow analysis, as shown in FIG. 3, said module being driven by the microprocessor ⁇ of the processing unit UT_DO.
- the blocks B ; B 2 , B u , ..., B s to decode have a square shape and all contain K pixels, with K> 1.
- said blocks to be decoded are of size 4x4 or 8x8 pixels.
- the first blocks at the top left of the image and the last blocks at the bottom right of the image can do not be square.
- the blocks may be for example of rectangular size and / or not aligned with each other.
- Each block to be decoded can also be divided into sub-blocks which are themselves subdividable.
- the decoder DO of FIG. 3 selects as the current block the first quantized block BSq u that contains quantized data that has been coded during the substep C93 of FIG. 1.
- the information relating to the prediction of the current block B u as implemented in the coding, during step C3 of FIG. 1, is decoded. and which have been written into the data signal F.
- Such reconstruction information includes the type of prediction (Inter or Intra) applied in step C3, and the if necessary, the prediction mode selected, the index IB op t of the predictor block obtained BP op t obtained at the end of step C3, the partitioning type of the current block B u if the latter has been partitioned, l reference image index and displacement vector used in the Inter prediction mode.
- Such a decoding step D3 is implemented by the binary decoding module DB_DO shown in FIG. 3.
- the predictive decoding of the current block to be decoded is carried out using the index IB opt of the predictor block BP op t which has been decoded during the step D3 above.
- it is proceeded, in association with the decoded index of the predictor block BP opt , to the selection, in the buffer memory TAMP_DO of the decoder DO of FIG. 3, of the corresponding opt BP predictor block , which is one of a plurality of candidate predictor blocks previously stored in the buffer buffer TAMP_DO.
- Each of the candidate predictor blocks is a block of pixels that has already been decoded.
- Step D4 is implemented by a processor or software module PRED "1 _DO inverse prediction, as shown in Figure 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D5 the index IV opt of the optimal quantization vector V opt which has been selected at the end of step C6 of FIG. 1 is decoded.
- Such a decoding step D5 is implemented by the decoding module DB_DO of FIG. 3.
- the optimal quantization vector V opt associated with the index IV opt decoded is determined.
- the step D6 is implemented by a processor or calculation software module CAL1_DO as represented in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D7 it is proceeded to the selection of a quantization vector dictionary, denoted CBK op t, which contains the quantization vector V opt selected in step D6.
- a dictionary belongs to a plurality of vector dictionaries of quantification available, denoted CBK- ⁇ , CBK 2 , ..., CBK W.
- Such dictionaries are previously stored in the buffer memory TAMP_DO of the decoder DO, as represented in FIG.
- Step D7 is implemented by a processor or calculation software module CAL2_DO as shown in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- such a selection is implemented according to one and / or the other of the following elements:
- the characteristics of the prediction for example, the Intra mode chosen from among the Intra modes of the HEVC standard, the indices of which were decoded in step D3,
- characteristics of the current image IC j to be decoded such as its size or its energy.
- W 70, i.e.
- the selected dictionary therefore depends both on the size of the current block B u to be decoded and on the prediction mode whose index has been decoded in step D3.
- step D8 shown in FIG. 4 the data of the quantized residual block BSq u are decoded in accordance with the invention.
- a decoding of the set of quantized coefficients BSq u current is carried out.
- Such a decoding is for example a CABAC type entropic decoding or else an entropy decoding of arithmetic type or Huffman type.
- Such a substep D81 decoding is implemented by an entropy decoding module MD_DO shown in Figure 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D8 during a substep D82 shown in FIG. 4, a dequantization of the digital information obtained as a result of the substep D81 is carried out, according to a conventional dequantization operation. which is the inverse operation of the quantization implemented during the quantization sub-step C92 of FIG. 1.
- a set of dequantized coefficients BSDt u current is then obtained at the end of the substep D82.
- Such dequantization sub-step is for example of scalar or vector type.
- Sub-step D82 is performed by means of a quantization software processor or module MQ "1 _DO shown in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D8 the procedure, in a substep D83 shown in FIG 4, a transformation of the set of coefficients dequantized BSDT u current, such a transformation being a direct inverse transformation.
- This transformation is the inverse operation of the transformation carried out in the substep C91 of FIG.
- a current decoded residue block BSDr u is obtained.
- the substep D83 is implemented by a processor or software module MT "1 _DO inverse transformation, as shown in Figure 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- the processor MT "1 _DO is able to implement a direct inverse transformation such as, for example, a discrete inverse transform of DCT 1 type, a discrete inverse transformation into discrete sines of the DST 1 type, an inverse transformation into discrete wavelets of the type DWT 1 .
- a direct inverse transformation such as, for example, a discrete inverse transform of DCT 1 type, a discrete inverse transformation into discrete sines of the DST 1 type, an inverse transformation into discrete wavelets of the type DWT 1 .
- step D9 a decoded current block BD U is obtained.
- the step D9 is implemented by a processor or calculation software module CAL3_DO shown in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- said decoded BD U block is written in a decoded picture ID j .
- Such a step is implemented by a processor or software module URI image reconstruction as shown in Figure 3, said module being controlled by the microprocessor ⁇ processing module UT_DO.
- a test is performed which consists of checking whether a criterion for updating the CBK-i, CBK 2 , ..., CBK W dictionaries is fulfilled or not. .
- such a criterion consists in comparing the number of non-zero coefficients in the decoded residue block BSDr u with a predetermined threshold. For example, the update criterion is considered to be filled if the number of nonzero coefficients is greater than 3.
- such a criterion consists in comparing the rate of coding of the decoded residue block BSDr u with a predetermined threshold. For example, the update criterion is considered completed if the block coding rate decoded residue BSDr u is greater than 10 bits.
- the step D1 1 is implemented by a processor or calculation software module CAL4_DO as represented in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D12 is implemented by a processor or calculation software module CAL5_DO as represented in FIG. 3, which is controlled by the microprocessor ⁇ of the processing unit UT_DO.
- step D12 is identical to step C12 for updating the dictionaries as implemented in the coding with reference to FIG. 1, this step will not be described further.
- step D12 Following the aforesaid step D12, during a step D13 shown in FIG. 4, the following quantized residual block of the current image IC j to be decoded is selected. Then the decoding steps of the next quantized residue block described above are again implemented.
- step D1 If at the end of the aforementioned step D1 1, the update criterion is not fulfilled, it is proceeded, during the aforementioned step D13, to the selection of the next quantized residue block of the image current IC j to decode. Then the decoding steps of the next quantized residue block described above are again implemented.
- the decoder DO of FIG. 3 tests whether the current block which has been decoded according to the decoding method described above is the last block of the current image IC j to decode.
- step D13 is implemented.
- the decoder DO of FIG. 3 tests whether the next current image IC j + i to be decoded is an Intra type image or not.
- step D12 for updating the dictionaries is implemented.
- the quantization vectors of the CBKopt dictionary are each initialized to a respective predetermined value.
- the blocks of this image are decoded directly according to the decoding method of FIG. 4.
- the decoding steps which have just been described above are implemented for all the blocks Bi, B 2 , B u ,..., B s to be decoded from the current image IC j considered, in a predetermined order which is for example the lexicographic order.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
The invention relates to encoding of at least one image (ICj). Said encoding implements, for a common block (Bu) to be coded for said image: - predicting (C3) the common block according to a prediction procedure selected from among a plurality of predetermined prediction procedures ; - obtaining a predictor block (BPopt) from the prediction; - calculating (C4) a first set of data representing a comparison between the predictor block obtained and the common block; - comparing (C5) said calculated first set with a plurality of quantization vectors; - selecting (C6) one of said vectors according to a predetermined encoding performance criterion; - encoding (C7) an index associated with the selected vector; - calculating (C8) a second set of data representing a comparison between the first calculated data set and the selected vector; and - encoding (C9) the second calculated data set. During said encoding, at least one of said quantization vectors is modified on the basis of the data from the second calculated data set.
Description
CODAGE D'IMAGES PAR QUANTIFICATION VECTORIELLE CODING IMAGES BY VECTORIAL QUANTIFICATION
Domaine de l'invention Field of the invention
La présente invention se rapporte de manière générale au domaine du traitement d'images, et plus précisément au codage et au décodage d'images numériques et de séquences d'images numériques. The present invention relates generally to the field of image processing, and more specifically to the encoding and decoding of digital images and digital image sequences.
L'invention peut s'appliquer notamment, mais non exclusivement, au codage vidéo mis en œuvre dans les codeurs vidéo actuels AVC et HEVC et leurs extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc), ainsi qu'au décodage correspondant. The invention can be applied in particular, but not exclusively, to the video coding implemented in the current AVC and HEVC video coders and their extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc.), as well as to the corresponding decoding.
Arrière-plan de l'invention Background of the invention
Les codeurs vidéo actuels (MPEG, H.264, HEVC, ...) utilisent une représentation par blocs des images à coder. Les images sont subdivisées en blocs de forme carrée ou rectangulaire, lesquels sont susceptibles d'être subdivisés à leur tour de façon récursive. Current video encoders (MPEG, H.264, HEVC, ...) use a block representation of the images to be encoded. The images are subdivided into blocks of square or rectangular shape, which can be subdivided in turn recursively.
Pour au moins un bloc considéré parmi les différents blocs obtenus, une prédiction de pixels du bloc considéré est mise en œuvre par rapport à des pixels de prédiction qui appartiennent soit à la même image (prédiction Intra), soit à une ou plusieurs images précédentes d'une séquence d'images (prédiction Inter) qui ont déjà été décodées. De telles images précédentes sont appelées classiquement images de référence et sont conservées en mémoire aussi bien au codeur qu'au décodeur. Au cours d'une telle prédiction, un ensemble de données est calculé par soustraction des pixels du bloc considéré, des pixels de prédiction. Les coefficients de l'ensemble de données calculé sont alors quantifiés après une éventuelle transformation mathématique, par exemple de type transformée en cosinus discrète (DCT), puis codés par un codeur entropique. Les données codées sont inscrites dans un signal de données destiné à être transmis à un décodeur. For at least one block considered among the different blocks obtained, a pixel prediction of the block in question is implemented with respect to prediction pixels that belong to either the same image (Intra prediction) or to one or more preceding images. a sequence of images (Inter prediction) that have already been decoded. Such prior images are conventionally referred to as reference images and are stored in memory at both the encoder and the decoder. During such a prediction, a set of data is calculated by subtracting the pixels of the considered block from the prediction pixels. The coefficients of the computed data set are then quantized after a possible mathematical transformation, for example of the discrete cosine transform (DCT) type, then coded by an entropy coder. The encoded data is written into a data signal to be transmitted to a decoder.
Ledit signal de données comprend notamment :
- le type de prédiction (prédiction Intra, prédiction Inter, prédiction par défaut réalisant une prédiction pour laquelle aucune information n'est transmise au décodeur (« en anglais « skip »)) ; Said data signal comprises in particular: the type of prediction (Intra prediction, Inter prediction, prediction by default carrying out a prediction for which no information is transmitted to the decoder ("in English" skip "));
- le mode de prédiction (direction de prédiction, composante d'image de référence, ...) ; the prediction mode (prediction direction, reference image component, etc.);
- le type de subdivision en sous-blocs ; - the type of subdivision into sub-blocks;
- le type de transformée, par exemple DCT 4x4, DCT 8x8, etc .. ; the type of transform, for example DCT 4x4, DCT 8x8, etc .;
- les valeurs de pixels, les valeurs de coefficients transformés, amplitudes, signes de coefficients quantifiés des pixels contenus dans le bloc ou le sous-bloc considéré. the pixel values, the transformed coefficient values, the amplitudes, the signs of the quantified coefficients of the pixels contained in the block or sub-block considered.
Une fois que le signal de données a été reçu par le décodeur, le décodage est fait image par image, et pour chaque image, bloc par bloc. Pour chaque bloc, les éléments correspondants du signal de données sont lus. La quantification inverse et la transformation inverse des coefficients des blocs sont effectuées pour produire un bloc de données résiduelles décodé. Puis, la prédiction du bloc est calculée et le bloc est reconstruit en ajoutant la prédiction au bloc de données résiduelles décodé. Once the data signal has been received by the decoder, the decoding is done image by image, and for each image, block by block. For each block, the corresponding elements of the data signal are read. Inverse quantization and inverse transformation of block coefficients are performed to produce a decoded residual data block. Then, the prediction of the block is calculated and the block is reconstructed by adding the prediction to the decoded residual data block.
De façon connue en soi, la quantification des coefficients du bloc de données résiduelles calculé peut être de type scalaire ou vectorielle. In a manner known per se, the quantization of the coefficients of the residual data block calculated may be of scalar or vector type.
La quantification scalaire utilise un pas de quantification qui est déterminé au codage à partir d'un paramètre appelé QP (abréviation anglaise de « Quantization Parameter »). Scalar quantization uses a quantization step that is determined at the encoding from a parameter called QP (abbreviation of "Quantization Parameter").
La quantification vectorielle consiste au codage : Vector quantization consists of coding:
- à comparer l'ensemble de données résiduelles calculé avec une pluralité de vecteurs de quantification regroupés dans au moins un dictionnaire, comparing the computed residual data set with a plurality of quantification vectors grouped in at least one dictionary,
- à sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé, tel que par exemple le compromis débit-distorsion bien connu de l'homme du métier, selecting one of the quantization vectors according to a predetermined coding performance criterion, such as, for example, the bitrate-distortion compromise well known to those skilled in the art,
- à coder un index associé audit vecteur de quantification sélectionné. to code an index associated with said selected quantization vector.
L'index codé est alors transmis dans le signal de données à destination du décodeur qui contient le ou les mêmes dictionnaires que le codeur et qui
applique la quantification vectorielle inverse en décodant ledit index transmis, puis en déterminant le vecteur de quantification associé audit index décodé. The coded index is then transmitted in the data signal to the decoder which contains the same dictionary or dictionaries as the coder and which applies inverse vector quantization by decoding said transmitted index, and then determining the quantization vector associated with said decoded index.
Compte tenu du fait que les vecteurs de quantification font partie d'un dictionnaire prédéterminé, le codage du bloc courant par quantification vectorielle peut s'avérer mal adapté à la statistique du signal vidéo. In view of the fact that the quantization vectors are part of a predetermined dictionary, the coding of the current block by vector quantization may prove to be poorly adapted to the statistics of the video signal.
Au final, il en résulte des performances de compression qui ne sont pas satisfaisantes. Ultimately, this results in compression performance that is not satisfactory.
Objet et résumé de l'invention Object and summary of the invention
Un des buts de l'invention est de remédier à des inconvénients de l'état de la technique précité. One of the aims of the invention is to overcome disadvantages of the state of the art mentioned above.
A cet effet, un objet de la présente invention concerne un procédé de codage d'au moins une image découpée en blocs, mettant en œuvre, pour un bloc courant à coder de l'image : For this purpose, an object of the present invention relates to a method of coding at least one image cut into blocks, implementing, for a current block to code the image:
- une prédiction du bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés, a prediction of the current block according to a prediction mode selected from among a plurality of predetermined prediction modes,
- une obtention d'un bloc prédicteur à l'issue de la prédiction, a obtaining of a predictor block at the end of the prediction,
- un calcul d'un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant, a calculation of a first set of data representative of a difference between the obtained predictor block and the current block,
- une comparaison du premier ensemble de données calculé avec une pluralité de vecteurs de quantification, a comparison of the first set of calculated data with a plurality of quantization vectors,
- une sélection d'un des vecteurs de quantification selon un critère de performance de codage prédéterminé, a selection of one of the quantization vectors according to a predetermined coding performance criterion,
- un codage d'un index associé au vecteur de quantification sélectionné. an encoding of an index associated with the selected quantization vector.
Le procédé de codage selon l'invention est remarquable en ce qu'il comprend: The coding method according to the invention is remarkable in that it comprises:
- un calcul d'un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné,
- un codage du deuxième ensemble de données calculé au cours duquel au moins un des vecteurs de quantification est modifié en fonction des données du deuxième ensemble de données calculé. a calculation of a second set of data representative of a difference between the first set of calculated data and the selected quantization vector, a coding of the second calculated data set in which at least one of the quantization vectors is modified according to the data of the second calculated data set.
Une telle disposition permet avantageusement de cumuler : Such a provision advantageously makes it possible to cumulate:
- le bénéfice tiré de l'exploitation des corrélations entre le premier ensemble de données résiduelles courant et des vecteurs de quantification d'un dictionnaire, the benefit derived from the exploitation of the correlations between the first set of current residual data and the quantization vectors of a dictionary,
- et le bénéfice tiré d'une mise à jour d'au moins un desdits vecteurs de quantification, ladite mise à jour permettant de s'adapter, au cours du temps, aux modifications du signal de données codées. and the benefit derived from an update of at least one of said quantization vectors, said update making it possible, over time, to adapt to the modifications of the coded data signal.
La prédiction du bloc courant est ainsi à la fois plus précise et plus adaptée au contexte vidéo courant, ce qui a pour avantage d'améliorer significativement les performances de compression du signal de données codées à transmettre au décodeur. The prediction of the current block is thus both more accurate and more adapted to the current video context, which has the advantage of significantly improving the compression performance of the coded data signal to be transmitted to the decoder.
Dans un mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre uniquement si les données du deuxième ensemble de données calculé remplissent un critère prédéterminé. In a particular embodiment, the modification of one of the quantization vectors is implemented only if the data of the second calculated data set fulfills a predetermined criterion.
Une telle disposition permet de n'effectuer la modification d'un des vecteurs de quantification que lorsque cette modification est substantielle, ce qui évite des calculs inutiles. Such an arrangement makes it possible to modify one of the quantization vectors only when this modification is substantial, which avoids unnecessary calculations.
Dans un autre mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à coder. In another particular embodiment, the modification of one of the quantization vectors is implemented using a parameter whose value depends on the size of the image to be encoded.
Une telle disposition permet de s'adapter à la taille des données dont le codeur dispose. Ainsi, si l'image est petite, les modifications du dictionnaire doivent être de grande amplitude, puisque le codeur dispose de peu de données pour capturer la statistique du signal vidéo. En revanche, si l'image est grande, il est possible de privilégier une mise à jour de faible amplitude, qui résiste mieux aux variations statistiques non pertinentes du signal vidéo, puisque le codeur dispose de beaucoup plus de données pour s'adapter à ces variations.
Dans encore un autre mode de réalisation particulier, si l'image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées. Such an arrangement makes it possible to adapt to the size of the data available to the encoder. Thus, if the image is small, the dictionary changes must be large, since the encoder has little data to capture the statistics of the video signal. On the other hand, if the image is large, it is possible to give priority to an update of small amplitude, which is more resistant to irrelevant statistical variations of the video signal, since the encoder has much more data to adapt to these changes. variations. In yet another particular embodiment, if the current image is of Intra type, the quantization vectors are each initialized to predetermined values.
Une telle disposition permet de conserver la caractéristique de codage indépendant des autres images qui est propre aux images Intra, même si l'invention propose une mise à jour du dictionnaire de vecteurs de quantification qui évolue au fur et à mesure du traitement des images d'une séquence d'images considérée. En effet, il est généralement souhaitable que les images de type Intra soient codées puis décodées indépendamment de toute autre image du flux vidéo, de façon à pouvoir décoder une vidéo en cours de transmission (par exemple, pour changer de chaîne sur un récepteur de télévision, dans le cas de la diffusion d'un flux audiovisuel). Ainsi, lorsqu'une image Intra de cette séquence doit être codée, elle ne peut pas l'être par rapport à un vecteur de quantification d'un dictionnaire qui a été mis à jour pour une image précédent cette image Intra. Par conséquent, l'invention propose avantageusement d'initialiser les vecteurs de quantification du dictionnaire à des valeurs respectives prédéterminées pour rendre le codage de l'Image Intra indépendant de toute autre image de la séquence. Such an arrangement makes it possible to retain the independent coding characteristic of the other images that is specific to the Intra images, even if the invention proposes an update of the quantization vector dictionary which evolves as the images of the images are processed. a sequence of images considered. Indeed, it is generally desirable that the Intra-type images are coded and then decoded independently of any other image of the video stream, so that a video can be decoded during transmission (for example, to change channels on a television receiver , in the case of broadcasting an audiovisual stream). Thus, when an Intra image of this sequence must be encoded, it can not be encoded with respect to a quantization vector of a dictionary that has been updated for an image preceding this Intra image. Therefore, the invention advantageously proposes to initialize the dictionary quantization vectors to respective predetermined values to make the coding of the Intra Image independent of any other image in the sequence.
Les différents modes ou caractéristiques de réalisation précités peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux opérations mises en œuvre au cours du procédé de codage tel que défini ci- dessus. The various embodiments or embodiments mentioned above may be added independently or in combination with each other, to the operations implemented during the coding method as defined above.
Corrélativement, l'invention concerne un dispositif de codage d'au moins une image découpée en blocs, comprenant, pour un bloc courant à coder de ladite image : Correlatively, the invention relates to a device for coding at least one image divided into blocks, comprising, for a current block to be encoded in said image:
- un module de prédiction pour prédire le bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés, délivrant un bloc prédicteur, a prediction module for predicting the current block according to a prediction mode selected from among a plurality of predetermined prediction modes, delivering a predictor block,
- un module de calcul pour calculer un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant, a calculation module for calculating a first set of data representative of a difference between the obtained predictor block and the current block,
- un module de comparaison pour comparer le premier ensemble de données calculé avec une pluralité de vecteurs de quantification,
- un module de sélection pour sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé, a comparison module for comparing the first set of calculated data with a plurality of quantization vectors, a selection module for selecting one of the quantization vectors according to a predetermined coding performance criterion,
- un premier module de codage pour coder un index associé au vecteur de quantification sélectionné. a first coding module for coding an index associated with the selected quantization vector.
Un tel dispositif de codage est remarquable en ce que : Such a coding device is remarkable in that:
- le module de calcul est activé pour calculer un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, et en ce qu'il comprend un deuxième module de codage qui est activé pour coder le deuxième ensemble de données calculé, au moins un des vecteurs de quantification étant modifié en fonction des données du deuxième ensemble de données calculé. the calculation module is activated to calculate a second set of data representative of a difference between the first set of calculated data and the selected quantization vector, and in that it comprises a second coding module which is activated to code the second calculated data set, at least one of the quantization vectors being modified according to the data of the second calculated data set.
De façon correspondante, l'invention concerne aussi un procédé de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, mettant en œuvre, pour un bloc courant à décoder : Correspondingly, the invention also relates to a method for decoding a data signal representative of at least one image divided into blocks, implementing, for a current block to be decoded:
- un décodage : - a decoding:
• d'un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification, An index associated with a quantization vector that belongs to a set of quantization vectors,
• et de données de prédiction du bloc courant à décoder, - un décodage de l'index, And prediction data of the current block to be decoded, a decoding of the index,
- une détermination du vecteur de quantification associé à l'index décodé, a determination of the quantization vector associated with the decoded index,
- une obtention d'un bloc prédicteur à partir des données de prédiction décodées. obtaining a predictor block from the decoded prediction data.
Un tel procédé de décodage est remarquable en ce qu'il comprend: Such a decoding method is remarkable in that it comprises:
- une détermination, dans le signal de données, de données relatives au bloc courant à décoder, a determination, in the data signal, of data relating to the current block to be decoded,
- un décodage des données relatives au bloc courant à décoder, au cours duquel au moins un des vecteurs de quantification est modifié en fonction des données décodées, a decoding of the data relating to the current block to be decoded, during which at least one of the quantization vectors is modified as a function of the decoded data,
- une reconstruction du bloc courant à partir des données décodées, du vecteur de quantification déterminé et du bloc prédicteur obtenu.
Les données relatives au bloc courant à décoder sont typiquement les valeurs des pixels de ce bloc permettant de reconstruire ce bloc ou des valeurs de coefficients transformés permettant de reconstruire ce bloc. a reconstruction of the current block from the decoded data, the determined quantization vector and the obtained predictor block. The data relating to the current block to be decoded are typically the values of the pixels of this block making it possible to reconstruct this block or transformed coefficient values making it possible to reconstruct this block.
Dans un mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre uniquement si les données décodées remplissent un critère prédéterminé. In a particular embodiment, the modification of one of the quantization vectors is implemented only if the decoded data fulfill a predetermined criterion.
Dans un autre mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à décoder. In another particular embodiment, the modification of one of the quantization vectors is implemented using a parameter whose value depends on the size of the image to be decoded.
Dans encore un autre mode de réalisation particulier, si l'image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées. In yet another particular embodiment, if the current image is of Intra type, the quantization vectors are each initialized to predetermined values.
Les différents modes ou caractéristiques de réalisation précités peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux étapes du procédé de décodage tel que défini ci-dessus. The various embodiments or aforementioned embodiments can be added independently or in combination with each other, to the steps of the decoding method as defined above.
Corrélativement, l'invention concerne un dispositif de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, comprenant, pour un bloc courant à décoder : Correlatively, the invention relates to a device for decoding a data signal representative of at least one image divided into blocks, comprising, for a current block to be decoded:
- un premier module de décodage pour décoder : a first decoding module for decoding:
· un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification, • et des données de prédiction du bloc courant à décoder, An index associated with a quantization vector which belongs to a set of quantization vectors, and prediction data of the current block to be decoded,
- un module de calcul pour déterminer le vecteur de quantification associé à l'index décodé, a calculation module for determining the quantization vector associated with the decoded index,
- un module de prédiction pour obtenir un bloc prédicteur à partir des données de prédiction décodées. a prediction module for obtaining a predictor block from the decoded prediction data.
Un tel dispositif de décodage est remarquable en ce qu'il comprend : Such a decoding device is remarkable in that it comprises:
- un deuxième module de décodage qui est activé pour décoder des données relatives au bloc courant à décoder déterminées dans le signal de données, au moins un des vecteurs de quantification étant modifié en fonction des données décodées,
- un module de reconstruction pour reconstruire le bloc courant à partir des données décodées, du vecteur de quantification déterminé et du bloc prédicteur obtenu. a second decoding module which is activated to decode data relating to the current block to be decoded determined in the data signal, at least one of the quantization vectors being modified as a function of the decoded data, a reconstruction module for reconstructing the current block from the decoded data, the determined quantization vector and the obtained predictor block.
L'invention concerne encore un programme d'ordinateur comportant des instructions pour mettre en œuvre le procédé de codage et/ou le procédé de décodage selon l'invention, lorsqu'il est exécuté sur un ordinateur. The invention also relates to a computer program comprising instructions for implementing the coding method and / or the decoding method according to the invention, when it is executed on a computer.
Un tel programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. Such a program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
Un autre objet de l'invention vise aussi un support d'enregistrement lisible par un ordinateur, et comportant des instructions de programme d'ordinateur tel que mentionné ci-dessus. Another object of the invention is also a computer readable recording medium, and including computer program instructions as mentioned above.
Le support d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, ou encore un moyen d'enregistrement numérique tel que par exemple une clé USB ou un disque dur. The recording medium may be any entity or device capable of storing the program. For example, the medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means, or a digital recording means such as by example a USB key or a hard drive.
D'autre part, un tel support d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. On the other hand, such a recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention can be downloaded in particular on an Internet type network.
Alternativement, un tel support d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter le procédé de codage et/ou de décodage selon l'invention ou pour être utilisé dans l'exécution de ce et/ou ces derniers. Brève description des dessins Alternatively, such a recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to perform the coding and / or decoding method according to the invention or to be used in the execution of this and / or these. Brief description of the drawings
D'autres caractéristiques et avantages apparaîtront à la lecture d'un mode de réalisation préféré décrit en référence aux figures dans lesquelles:
- la figure 1 représente les étapes du procédé de codage selon un mode de réalisation de l'invention, Other features and advantages will appear on reading a preferred embodiment described with reference to the figures in which: FIG. 1 represents the steps of the coding method according to one embodiment of the invention,
- la figure 2 représente un dispositif de codage mettant en œuvre les étapes du procédé de codage de la figure 1 , FIG. 2 represents a coding device implementing the steps of the coding method of FIG. 1,
- la figure 3 représente un dispositif de décodage selon un mode de réalisation de l'invention, FIG. 3 represents a decoding device according to one embodiment of the invention,
- la figure 4 représente les étapes du procédé de décodage mises en œuvre dans le dispositif de décodage de la figure 3. Description détaillée de la partie codage FIG. 4 represents the steps of the decoding method implemented in the decoding device of FIG. 3. Detailed description of the coding part
Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de codage selon l'invention est utilisé pour coder une image ou une séquence d'images selon un flux binaire proche de celui qu'on obtient par un codage mis en œuvre dans un codeur conforme à l'une quelconque des normes de codage vidéo actuelles ou à venir. One embodiment of the invention will now be described, in which the coding method according to the invention is used to code an image or a sequence of images according to a bit stream close to that obtained by a coding set. implemented in an encoder according to any current or future video coding standards.
Dans ce mode de réalisation, le procédé de codage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un tel codeur. Le procédé de codage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes C1 à C15 telles que représentées à la figure 1. In this embodiment, the coding method according to the invention is for example implemented in a software or hardware way by modifications of such an encoder. The coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C15 as represented in FIG.
Selon ce mode de réalisation, le procédé de codage selon l'invention est implémenté dans un dispositif de codage CO représenté à la figure 2. According to this embodiment, the coding method according to the invention is implemented in a coding device CO represented in FIG.
Comme illustré en figure 2, un tel dispositif de codage comprend une mémoire MEM_CO comprenant une mémoire tampon TAMP_CO, une unité de traitement UT_CO équipée par exemple d'un microprocesseur μΡ et pilotée par un programme d'ordinateur PG_CO qui met en œuvre le procédé de codage selon l'invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_CO sont par exemple chargées dans une mémoire RAM MR_CO avant d'être exécutées par le processeur de l'unité de traitement UT_CO. As illustrated in FIG. 2, such a coding device comprises a memory MEM_CO comprising a buffer memory TAMP_CO, a processing unit UT_CO equipped for example with a microprocessor μΡ and driven by a computer program PG_CO which implements the method of coding according to the invention. At initialization, the code instructions of the computer program PG_CO are for example loaded into a RAM memory MR_CO before being executed by the processor of the processing unit UT_CO.
Le procédé de codage représenté sur la figure 1 s'applique à toute image courante ICj fixe ou bien faisant partie d'une séquence de L images IC-i , ICj, ..., ICL (1≤j≤L) à coder.
Au cours d'une étape C1 représentée à la figure 1 , il est procédé, de façon connue en soi, à la subdivision d'une image courante ICj en une pluralité de blocs B-i , B2, Bu, ..., Bs (1 <u≤S). Une telle étape de subdivision est mise en œuvre par un module logiciel de partitionnement MP_CO représenté sur la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. Il convient de noter qu'au sens de l'invention, le terme « bloc » signifie unité de codage (de l'anglais « coding unit »). Cette dernière terminologie est notamment utilisée dans la norme HEVC « ISO/IEC/23008-2 Recommandation ITU-T H.265 High Efficiency Video Coding (HEVC) ». The coding method represented in Figure 1 applies to any fixed current image IC j or part of a sequence of L IC-i images, IC j, ..., IC L (1≤j≤L) to code. During a step C1 shown in FIG. 1, in a manner known per se, a current image IC j is subdivided into a plurality of blocks Bi, B 2 , B u , ..., B s (1 <u≤S). Such a subdivision step is implemented by a partitioning software module MP_CO shown in FIG. 2, which module is driven by the microprocessor μΡ of the processing unit UT_CO. It should be noted that for the purposes of the invention, the term "block" means coding unit (coding unit). This last terminology is notably used in the standard HEVC "ISO / IEC / 23008-2 Recommendation ITU-T H.265 High Efficiency Video Coding (HEVC)".
En particulier, une telle unité de codage regroupe des ensembles de pixels de forme rectangulaire ou carrée, encore appelés blocs, macroblocs, ou bien des ensembles de pixels présentant d'autres formes géométriques. In particular, such a coding unit groups together sets of pixels of rectangular or square shape, also called blocks, macroblocks, or sets of pixels having other geometrical shapes.
Lesdits blocs B ; B2, Bu, ..., Bs sont destinés à être codés selon un ordre de parcours prédéterminé, qui est par exemple du type lexicographique. Cela signifie que les blocs sont codés les uns après les autres, de la gauche vers la droite. Said blocks B ; B 2 , B u , ..., B s are intended to be coded according to a predetermined order of travel, which is for example of the lexicographic type. This means that the blocks are coded one after the other, from left to right.
D'autres types de parcours sont bien sûr possibles. Ainsi, il est possible de subdiviser l'image ICj en plusieurs sous-images appelées slices et d'appliquer indépendamment une subdivision de ce type sur chaque sous- image. Il est également possible de coder non pas une succession de lignes, comme expliqué ci-dessus, mais une succession de colonnes. Il est également possible de parcourir les lignes ou colonnes dans un sens ou dans l'autre. Other types of course are of course possible. Thus, it is possible to subdivide the image IC j into several subimages called slices and to independently apply a subdivision of this type on each subimage. It is also possible to code not a succession of lines, as explained above, but a succession of columns. It is also possible to browse the rows or columns in one direction or the other.
Selon un exemple, les blocs B-i , B2, Bu, ..., Bs ont une forme carrée et contiennent tous K pixels, avec K>1 . Selon un mode préféré de réalisation, lesdits blocs sont de taille 4x4 ou 8x8 pixels. According to one example, the blocks Bi, B 2 , B u , ..., B s have a square shape and all contain K pixels, with K> 1. According to a preferred embodiment, said blocks are of size 4x4 or 8x8 pixels.
En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les derniers blocs à gauche et les derniers blocs en bas peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres. Depending on the size of the image that is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks on the bottom may not be square. In an alternative embodiment, the blocks may be for example of rectangular size and / or not aligned with each other.
Chaque bloc peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles.
Au cours d'une étape C2 représentée à la figure 1 , le codeur CO sélectionne comme bloc courant un premier bloc à coder Bu de l'image ICj, tel que par exemple le premier bloc B-,. Each block can also be divided into sub-blocks which are themselves subdividable. During a step C2 shown in FIG. 1, the coder CO selects as a current block a first block to be coded B u of the image IC j , such as for example the first block B-.
Au cours d'une étape C3 représentée à la figure 1 , il est procédé à la prédiction du bloc courant Bu par des techniques connues de prédiction Intra et/ou Inter. A cet effet, le bloc Bu est prédit par rapport à au moins un bloc prédicteur conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés MP0, MP-i , . . . , MPV, ..., MPQ où 0<v≤Q. De façon connue en soi, le bloc Bu est prédit par rapport à une pluralité de blocs prédicteurs candidats. Chacun des blocs prédicteurs candidats est un bloc de pixels qui a été déjà codé ou bien codé puis décodé. De tels blocs prédicteurs sont préalablement stockés dans la mémoire tampon TAMP_CO du codeur CO telle que représentée à la figure 2. During a step C3 shown in FIG. 1, the current block B u is predicted by known Intra and / or Inter prediction techniques. For this purpose, the block B u is predicted with respect to at least one predictor block according to a prediction mode selected from a plurality of predetermined prediction modes MP 0 , MP-i,. . . , MP V , ..., MP Q where 0 <v≤Q. In a manner known per se, the block B u is predicted with respect to a plurality of candidate predictor blocks. Each of the candidate predictor blocks is a block of pixels that has already been encoded or encoded and decoded. Such predictor blocks are previously stored in the buffer memory TAMP_CO of the encoder CO as represented in FIG. 2.
Selon un exemple de réalisation, la prédiction est de type Intra qui est, de façon connue en soi, associée à une pluralité de modes de prédiction définis chacun par une direction prédéterminée. Dans le cas de la prédiction Intra proposée par exemple dans le standard HEVC, il existe trente-cinq directions de prédiction possibles, ce qui revient à déterminer trente-cinq blocs prédicteurs candidats disponibles pour la prédiction du bloc courant Bu. According to an exemplary embodiment, the prediction is of Intra type which is, in a manner known per se, associated with a plurality of prediction modes each defined by a predetermined direction. In the case of the Intra prediction proposed for example in the HEVC standard, there are thirty-five possible prediction directions, which amounts to determining thirty-five candidate predictor blocks available for the prediction of the current block B u .
A l'issue de l'étape C3 de prédiction, un bloc prédicteur optimal BPopt est obtenu suite à une mise en compétition desdits blocs prédicteurs candidats, par exemple par minimisation d'un critère débit distorsion bien connu de l'homme du métier. Le bloc BPopt est considéré comme une approximation du bloc courant Bu. Les informations relatives à cette prédiction sont destinées à être inscrites dans un signal ou flux de données F à transmettre à un décodeur qui sera décrit plus en détail dans la suite de la description. At the end of the prediction step C3, an optimal predictor block BP opt is obtained following a putting into competition of said candidate predictor blocks, for example by minimizing a distortion flow criterion well known to those skilled in the art. The BP op t block is considered as an approximation of the current block B u . The information relating to this prediction is intended to be written in a signal or data stream F to be transmitted to a decoder which will be described in more detail later in the description.
L'étape C3 est mise en œuvre par un processeur ou module logiciel de codage prédictif PRED_CO représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. The step C3 is implemented by a processor or predictive coding software module PRED_CO shown in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Au cours d'une étape C4 représentée à la figure 1 , il est procédé classiquement à la comparaison des données relatives au bloc courant Bu aux données du bloc prédicteur BPopt. Plus précisément, au cours de cette étape, il
est procédé au calcul de la différence entre le bloc courant Bu et le bloc prédicteur BPopt obtenu. During a step C4 shown in FIG. 1, the data relating to the current block B u is conventionally compared with the data of the opt predictor block BP. More specifically, during this stage, he the difference between the current block B u and the predictor block BP op t obtained is calculated.
Un premier ensemble de données, appelé premier bloc résidu Bru est alors obtenu à l'issue de l'étape C4. A first set of data, called first residue block Br u is then obtained at the end of step C4.
L'étape C4 est mise en œuvre par un processeur ou module logiciel Step C4 is implemented by a processor or software module
CAL1_CO de calcul tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. CAL1_CO calculation as shown in Figure 2, which is controlled by the microprocessor μΡ UT_CO processing unit.
Au cours d'une étape C5 représentée à la figure 1 , il est procédé à une comparaison du premier bloc résidu Bru avec une pluralité de de vecteurs de quantification. De façon connue en soi, ces vecteurs de quantification appartiennent à un ou plusieurs dictionnaires de vecteurs de quantification disponibles au codeur, notés CBK-,, CBK2, ..., CBKW. De tels dictionnaires sont préalablement stockés dans la mémoire tampon TAMP_CO du codeur CO, telle que représentée à la figure 2. During a step C5 shown in FIG. 1, a comparison is made of the first residue block Br u with a plurality of quantization vectors. In conventional manner, the quantization vectors belong to one or more vector quantization dictionaries available to the encoder, denoted CBK, CBK 2, ..., W CBK. Such dictionaries are previously stored in the buffer memory TAMP_CO of the coder CO, as represented in FIG. 2.
Plus précisément, l'étape C5 consiste à sélectionner l'un desdits dictionnaires de vecteurs de quantification parmi les dictionnaires disponibles
More precisely, step C5 consists in selecting one of the said quantization vector dictionaries from the available dictionaries.
L'étape C5 est mise en œuvre par un processeur ou module logiciel de calcul CAL2_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. The step C5 is implemented by a processor or calculation software module CAL2_CO as represented in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Conformément à l'invention, une telle sélection est mise en œuvre en fonction de l'un et/ou de l'autre des éléments suivants: According to the invention, such a selection is implemented according to one and / or the other of the following elements:
-les caractéristiques de la prédiction (par exemple, le mode Intra choisi parmi les 35 modes Intra du standard HEVC) qui a été appliquée à l'étape C3, the characteristics of the prediction (for example, the Intra mode selected from among the Intra modes of the HEVC standard) which has been applied to the step C3,
- les caractéristiques fréquentielles du bloc prédicteur BPopt, -la taille du bloc courant Bu, the frequency characteristics of the BP predictor block op t, the size of the current block B u ,
-des caractéristiques de l'image courante ICj, comme sa taille ou son énergie. characteristics of the current image IC j , such as its size or its energy.
Dans le mode préféré de réalisation, W=70, c'est-à-dire que : In the preferred embodiment, W = 70, i.e.
- dans le cas d'un bloc courant Bu de taille 4x4, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC,
- dans le cas d'un bloc courant Bu de taille 8x8, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC. in the case of a current block B u of size 4x4, there is a different dictionary for each of the 35 Intra modes considered in the HEVC standard, in the case of a current block B u of size 8x8, there is a different dictionary for each of the 35 Intra modes considered in the HEVC standard.
Conformément à ce mode préféré de réalisation, le dictionnaire sélectionné dépend donc à la fois de la taille du bloc courant Bu et du mode de prédiction sélectionné. According to this preferred embodiment, the selected dictionary therefore depends both on the size of the current block B u and the selected prediction mode.
Le dictionnaire sélectionné à l'issue de l'étape C5 est noté CBKopt. The dictionary selected at the end of step C5 is denoted CBK op t.
Au cours d'une étape C6 représentée à la figure 1 , il est procédé à une sélection d'un des vecteurs de quantification du dictionnaire CBKopt qui a été sélectionné à l'étape C5. During a step C6 shown in FIG. 1, a selection is made of one of the quantization vectors of the CBK dictionary op t that has been selected in step C5.
Un vecteur de quantification optimal Vopt est obtenu suite à une mise en compétition desdits vecteurs de quantification du dictionnaire CBKopt, par exemple : An optimal quantization vector V opt is obtained following a competition of said quantization vectors of the CBK op t dictionary, for example:
- soit par minimisation d'un critère débit distorsion bien connu de l'homme du métier, or by minimizing a distortion flow criterion well known to those skilled in the art,
- soit par minimisation de l'erreur quadratique moyenne calculée entre les données du bloc résidu Bru et les données correspondantes de chacun des vecteurs de quantification du dictionnaire CBKopt. or by minimizing the mean squared error calculated between the data of the residual block Br u and the corresponding data of each of the quantification vectors of the dictionary CBK op t.
Le vecteur de quantification optimal Vopt est considéré comme une approximation du bloc résidu Bru. Les informations relatives à cette prédiction sont destinées à être inscrites dans le signal de données F précité. The optimal quantization vector V op t is considered as an approximation of the residual block Br u . The information relating to this prediction is intended to be written in the aforementioned data signal F.
L'étape C6 est mise en œuvre par un processeur ou module logiciel de calcul CAL3_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. The step C6 is implemented by a processor or calculation software module CAL3_CO as represented in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Au cours d'une étape C7 représentée à la figure 1 , il est procédé à un codage du vecteur de quantification Vopt sélectionné à l'issue de l'étape C6. During a step C7 shown in FIG. 1, the quantization vector V op t selected at the end of step C6 is coded.
Une telle étape consiste à représenter l'index noté IVopt du vecteur de quantification Vopt sous forme binaire. Par exemple, si le dictionnaire CBKopt auquel appartient le vecteur de quantification Vopt contient 256 vecteurs de quantification, alors le vecteur de quantification Vopt peut être représenté sur 8 bits, ce qui permet d'identifier précisément ce vecteur parmi tous les autres vecteurs de quantification du dictionnaire CBKopt.
L'étape C7 est mise en œuvre par un processeur ou module logiciel de codage binaire CB_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. Such a step consists in representing the index denoted IV op t of the quantization vector V opt in binary form. For example, if the CBK opt dictionary to which the quantization vector V opt belongs contains 256 quantization vectors, then the quantization vector V op t can be represented on 8 bits, which makes it possible to precisely identify this vector among all the others. Quantification vectors of the CBK dictionary opt . Step C7 is implemented by a binary coding processor or software module CB_CO as shown in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Au cours d'une étape C8 représentée à la figure 1 , il est procédé à la comparaison des données relatives au bloc résidu Bru aux données du vecteur V0pt. Plus précisément, au cours de cette étape, il est procédé au calcul de la différence entre le bloc résidu Bru et le vecteur Vopt. During a C8 step shown in Figure 1, requires the comparison of data relating to the residue block Br u to the vector data V 0 pt. More precisely, during this step, the difference between the residue block Br u and the vector V opt is calculated.
Un deuxième ensemble de données, appelé bloc résidu secondaire BSru, est alors obtenu à l'issue de l'étape C8. A second set of data, called secondary residue block BSr u , is then obtained at the end of step C8.
L'étape C8 est mise en œuvre par le processeur ou module logiciel Step C8 is implemented by the processor or software module
CAL4_CO représenté sur la figure 2. CAL4_CO shown in Figure 2.
Au cours d'une étape C9 représentée à la figure 1 , il est procédé, conformément à l'invention, à un codage des données du bloc résidu secondaire BSru. During a step C9 shown in FIG. 1, the data of the secondary residue block BSr u are coded in accordance with the invention.
Au cours de l'étape C9, il est procédé, au cours d'une sous-étape C91 , à une transformation du bloc résidu secondaire BSru selon une opération classique de transformation directe, pour produire un bloc transformé BStu. During step C9, during a substep C91, the secondary residue block BSr u is transformed according to a conventional direct transformation operation to produce a transformed block BSt u .
La sous-étape C91 est mise en œuvre par un processeur ou module logiciel MT_CO de transformation représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. Sub-step C91 is implemented by a processing processor or software module MT_CO shown in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Le processeur MT_CO est apte à mettre en œuvre une transformation directe telle que par exemple une transformation en cosinus discrètes de type DCT (abréviation anglaise de « Discrète Cosine Transform »), une transformation en sinus discrètes de type DST (abréviation anglaise de « Discrète Sine Transform »), une transformation en ondelettes discrètes de type DWT (abréviation anglaise de « Discrète Wavelet Transform »). The MT_CO processor is able to implement a direct transformation such as, for example, a discrete cosine transformation of the DCT (abbreviation of "Discrete Cosine Transform") type, a discrete sinus transformation of the DST (abbreviation of "Discrete Sine" type). Transform "), a discrete wavelet transform of the DWT type (abbreviation of" Discrete Wavelet Transform ").
Au cours de l'étape C9, il est procédé en outre, au cours d'une sous- étape C92 représentée à la figure 1 , à une quantification des données du bloc transformé BStu, pour produire un bloc quantifié BSqu formé de coefficients quantifiés. Une telle étape de quantification est par exemple de type scalaire ou vectoriel.
La sous-étape C92 est effectuée au moyen d'un processeur ou module logiciel de quantification MQ_CO tel que représenté à la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. In the course of step C9, during a sub-step C92 shown in FIG. 1, a quantization of the data of the transformed block BSt u is performed to produce a quantized block BSq u formed of coefficients quantified. Such a quantization step is for example of scalar or vector type. Sub-step C92 is performed by means of a quantization software processor or module MQ_CO as shown in FIG. 2, which module is driven by the microprocessor μΡ of the processing unit UT_CO.
De façon connue en soi, au cours de l'étape C9, il est procédé en outre, au cours d'une sous-étape C93 représentée à la figure 1 , au codage des coefficients quantifiés du bloc BSqu. Un tel codage est par exemple un codage entropique de type CABAC ("Context Adaptive Binary Arithmetic Coder" en anglais) ou bien encore un codage entropique de type arithmétique ou de Huffman. In a manner known per se, during step C9, in addition, during a substep C93 shown in FIG. 1, the quantized coefficients of the block BSq u are coded. Such coding is, for example, entropic coding of CABAC type ("Context Adaptive Binary Arithmetic Coder" in English) or else an entropy coding of arithmetic type or Huffman type.
La sous-étape C93 est mise en œuvre par un processeur ou module logiciel de codage MC_CO représenté sur la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. Sub-step C93 is implemented by a processor or software coding module MC_CO shown in Figure 2, which module is controlled by the microprocessor μΡ of the processing unit UT_CO.
Au cours d'une étape C10 représentée à la figure 1 , il est procédé à la construction du signal ou flux de données F qui contient : During a step C10 shown in FIG. 1, the signal or data flow F which contains:
- les données codées à l'issue de l'étape C9 précitée, the data coded at the end of the aforementioned step C9,
- l'index IVopt du vecteur de quantification optimal Vopt. L'étape C10 est mise en œuvre par un processeur ou module logiciel MCF de construction de signal de données, tel que représenté sur la figure 2. the index IV opt of the optimal quantization vector V opt . Step C10 is implemented by a processor or software module MCF for building a data signal, as shown in FIG. 2.
Le signal de données F est ensuite transmis par un réseau de communication (non représenté) à un terminal distant. Celui-ci comporte le décodeur DO représenté à la figure 3. The data signal F is then transmitted by a communication network (not shown) to a remote terminal. This includes the decoder DO shown in FIG.
De façon connue en soi, le signal de données F comprend en outre certaines informations encodées par le codeur CO, telles que le type de prédiction (Inter ou Intra) appliqué à l'étape C3, et le cas échéant, le mode de prédiction sélectionné, l'indice du bloc prédicteur obtenu BPopt obtenu à l'issue de l'étape C3, noté IBPopt, le type de partitionnement du bloc courant Bu si ce dernier a été partitionné, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction Inter. In a manner known per se, the data signal F furthermore comprises certain information encoded by the coder CO, such as the type of prediction (Inter or Intra) applied to the step C3, and, if appropriate, the prediction mode selected. , the index of the obtained predictor block BP opt obtained at the end of step C3, denoted IBP op t, the partitioning type of the current block B u if the latter has been partitioned, the reference image index and the displacement vector used in the Inter prediction mode.
De façon connue en soi, il est ensuite procédé au décodage du bloc résidu BSru. Un bloc résidu décodé BSDru est alors obtenu. Il est alors procédé à la construction du bloc décodé BDU en ajoutant au bloc prédit BPopt le bloc résidu décodé BSDru.
Il est à noter que le bloc décodé BDU est le même que le bloc décodé obtenu à l'issue du procédé de décodage de l'image ICj qui sera décrit plus loin dans la description. Le bloc décodé BDU est ainsi rendu disponible pour être utilisé par le codeur CO de la figure 2. In a manner known per se, the decoding of the residual block BSr u is then carried out. A decoded residue block BSDr u is then obtained. It is then proceeded to the construction of the decoded block BD U by adding to the predicted block BP op t the decoded residue block BSDr u . It should be noted that the decoded block BD U is the same as the decoded block obtained at the end of the decoding process of the image IC j which will be described later in the description. The decoded block BD U is thus made available for use by the coder CO of FIG. 2.
Au cours d'une étape C1 1 représentée à la figure 1 , conformément à l'invention, il est procédé à un test qui consiste à vérifier si un critère de mise à jour des dictionnaires CBK-,, CBK2, ..., CBKW est rempli ou non. In a step C1 1 shown in FIG 1 in accordance with the invention there is carried out a test that consists in checking whether an update criterion CBK dictionaries, CBK 2, ..., CBK W is filled or not.
Selon une première variante, un tel critère consiste à comparer le nombre de coefficients non nuls dans le bloc résidu BSru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le nombre de coefficients non nuls est supérieur à 3. According to a first variant, such a criterion consists in comparing the number of non-zero coefficients in the residual block BSr u with a predetermined threshold. For example, the update criterion is considered to be filled if the number of nonzero coefficients is greater than 3.
Selon une deuxième variante, un tel critère consiste à comparer le débit du codage du bloc résidu BSru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le débit du codage du bloc résidu BSru est supérieur à 10 bits. According to a second variant, such a criterion consists in comparing the rate of coding of the residual block BSr u with a predetermined threshold. For example, the update criterion is considered to be fulfilled if the rate of the coding of the residual block BSr u is greater than 10 bits.
L'étape C1 1 est mise en œuvre par un processeur ou module logiciel de calcul CAL5_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. The step C1 1 is implemented by a processor or calculation software module CAL5_CO as shown in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Si le critère de mise à jour est rempli, au cours d'une étape C12 représentée à la figure 1 , il est procédé à une mise à jour d'au moins un des dictionnaires CBK^ CBK2, ..., CBKW. If the update criterion is fulfilled, during a step C12 shown in FIG. 1, at least one of the CBK ^ CBK 2 , ..., CBK W dictionaries is updated.
L'étape C12 est mise en œuvre par un processeur ou module logiciel de calcul CAL6_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. The step C12 is implemented by a processor or calculation software module CAL6_CO as represented in FIG. 2, which is controlled by the microprocessor μΡ of the processing unit UT_CO.
Selon une première variante, l'étape C12 consiste à remettre à jour l'ensemble des dictionnaires courants CBK-ι , CBK2,..., CBKW. According to a first variant, step C12 consists in updating all the current dictionaries CBK-ι, CBK 2 ,..., CBK W.
Selon une deuxième variante préférée, il est procédé uniquement à une mise à jour du dictionnaire CBKopt. According to a second preferred variant, only the CBK op t dictionary is updated.
Dans le mode préféré de réalisation, le dictionnaire CBKopt est mis à jour de la façon suivante. In the preferred embodiment, the CBK op t dictionary is updated as follows.
Le vecteur Vopt, ainsi que ses voisins contenus dans le dictionnaire CBKopt, sont tout d'abord considérés. Les voisins sont notés Vopt-R, Vopt-R+i , Vopt-The vector V op t, and its neighbors contained in the CBKopt dictionary, are first considered. Neighbors are denoted V opt -R, V opt -R + i, V opt -
R+2, . . . , Vopt-1 , Vopt, Vopt+1 , . . . , Vopt+R-2j Vopt+R-1 , Vopt+R.
Le paramètre R qui définit le nombre de voisins suivants et précédents du vecteur Vopt est prédéterminé, par exemple à la valeur 5. Selon cette configuration, les 5 vecteurs voisins qui suivent et précédent le vecteur Vopt sont considérés. R + 2,. . . , V op t-1, V op t, Vopt + 1,. . . , V op t + R-2j Vopt + R-1, V op t + R. The parameter R which defines the number of next and preceding neighbors of the vector V op t is predetermined, for example at the value 5. According to this configuration, the neighboring vectors which follow and precede the vector V opt are considered.
Puis des vecteurs Zopt+n, n appartenant à <-R,+R>, sont construits en vue de la mise à jour, de la façon suivante : Then vectors Z op t + n , n belonging to <-R, + R>, are constructed for the purpose of updating, as follows:
^-opt+n= Vop,+n+alpha*f(n)*((Vop,+BSru)-Vop,+n) -opt ^ + n = Vop + n + alpha * f (n) * ((Vop, BSr + u) -vop, + n)
où : or :
- alpha est un paramètre prédéterminé, par exemple égal à 0.1 , - et f (n) est une valeur qui dépend de la distance entre l'index n et l'index opt. alpha is a predetermined parameter, for example equal to 0.1, and f (n) is a value which depends on the distance between the index n and the index opt.
Par exemple, dans le mode préféré de réalisation : For example, in the preferred embodiment:
f(n)=0.2* (5-n)/5 f (n) = 0.2 * (5-n) / 5
Les vecteurs Zopt+n avec n allant de -5 à +5 sont donc calculés, et viennent remplacer respectivement les vecteurs Vopt+n dans le dictionnaire CBKopt-The vectors Z op t + n with n ranging from -5 to +5 are thus calculated, and replace respectively the vectors V op t + n in the CBKopt-
L'ensemble des dictionnaires courants CBK-ι, CBK2, ..., CBKW est donc ainsi remis à jour. All current CBK-ι, CBK 2 , ..., CBK W dictionaries are thus updated.
Dans un mode alternatif de réalisation, les paramètres de la mise à jour peuvent être différents suivant la taille de l'image. En effet, si l'image est petite, un apprentissage rapide de la statistique de l'image courante ICj est nécessaire. In an alternative embodiment, the update parameters may be different depending on the size of the image. Indeed, if the image is small, a quick learning of the statistics of the current image ICj is necessary.
Par exemple : For example :
- pour une taille d'image appartenant à une vidéo simple définition SD (abréviation anglaise de « Standard Définition »), soit moins de 720 pixels de haut et moins de 1280 pixels de large, un paramètre alpha égal à 0.3 est retenu ; - for an image size belonging to a simple definition video SD (abbreviation of "Standard Definition"), less than 720 pixels high and less than 1280 pixels wide, an alpha parameter equal to 0.3 is retained;
- pour une taille d'image appartenant à une vidéo haute définition HD (Abréviation anglaise de « High Définition »), soit entre 720 et 1080 pixels de haut et entre 1280 et 1920 pixels de large, ou bien supérieure à 1280x1920 pixels, un paramètre alpha égal à 0.2 est retenu ; - for an image size belonging to a high-definition video (HD), ie between 720 and 1080 pixels high and between 1280 and 1920 pixels wide, or greater than 1280x1920 pixels, a parameter alpha equal to 0.2 is retained;
- pour une taille d'image supérieure à la taille d'une image HD, un paramètre égal à 0.1 est retenu.
Il est bien sûr possible de remettre à jour les dictionnaires d'autres façons. Par exemple, il est possible d'appliquer le même type de mise à jour de vecteur de quantification que dans le mode préféré. Toutefois, la mise à jour, au lieu de s'appliquer aux vecteurs voisins du vecteur de quantification Vopt dans le dictionnaire CBKopt, s'applique aux vecteurs proches de Vopt+BSDru au sens de la distorsion. En variante, la mise à jour s'applique à des vecteurs proches de Vopt+BSDru non seulement dans le dictionnaire CBKopt, mais dans l'ensemble des dictionnaires courants CBK-,, CBK2, ..., CBKW. for an image size greater than the size of an HD image, a parameter equal to 0.1 is retained. It is of course possible to update the dictionaries in other ways. For example, it is possible to apply the same type of quantization vector update as in the preferred mode. However, the update, instead of applying to the neighboring vectors of the quantization vector V opt in the CBK op t dictionary, applies to the vectors close to V op t + BSDr u in the direction of the distortion. In a variant, the update applies to vectors close to V opt + BSDr u not only in the CBK dictionary opt , but in the set of current dictionaries CBK-, CBK 2 ,..., CBK W.
A la suite de l'étape C12 précitée, il est procédé, au cours d'une étape C13 représentée sur la figure 1 , à la sélection du bloc suivant de l'image courante ICj. Puis les étapes de codage de bloc décrites ci-dessus sont à nouveau mises en œuvre pour ce bloc suivant. Following the aforesaid step C12, during a step C13 shown in FIG. 1, the next block of the current image IC j is selected. Then the block coding steps described above are again implemented for this next block.
Si à l'issue de l'étape C1 1 précitée, le critère de mise à jour n'est pas rempli, il est procédé, au cours de l'étape C13 précitée, à la sélection du bloc suivant de l'image courante ICj. Puis les étapes de codage de bloc décrites ci- dessus sont à nouveau mises en œuvre pour ce bloc suivant. If at the end of the aforementioned step C1 1, the update criterion is not fulfilled, it is proceeded, during the above-mentioned step C13, to the selection of the next block of the current image IC j . Then the block coding steps described above are again implemented for this next block.
Au cours d'une étape C14 représentée à la figure 1 , le codeur CO de la figure 2 teste si le bloc courant qui a été codé conformément au procédé de codage décrit ci-dessus est le dernier bloc de l'image courante ICj. During a step C14 shown in FIG. 1, the coder CO of FIG. 2 tests whether the current block that has been coded in accordance with the coding method described above is the last block of the current image IC j .
Si tel n'est pas le cas, l'étape C12 précitée est mise en œuvre. If this is not the case, the above-mentioned step C12 is implemented.
Si le bloc courant est le dernier bloc de l'image courante ICj, au cours d'une étape C15 représentée à la figure 1 , le codeur CO de la figure 2 teste si l'image courante suivante ICj+i est une image de type Intra ou non. If the current block is the last block of the current image IC j , during a step C15 represented in FIG. 1, the coder CO of FIG. 2 tests whether the following current image IC j + i is a picture of Intra type or not.
Dans le cas où l'image courante suivante ICj+i est de type Intra, avant de procéder au codage des blocs de cette image conformément au procédé de codage de la figure 1 , l'étape C12 de mise à jour des dictionnaires est mise en œuvre. In the case where the following current image IC j + i is of Intra type, before proceeding to the coding of the blocks of this image according to the coding method of FIG. 1, the step C12 for updating the dictionaries is implemented. artwork.
Dans l'exemple représenté, les vecteurs de quantification du dictionnaire CBKopt sont alors chacun initialisés à une valeur respective prédéterminée. In the example shown, the quantization vectors of the dictionary CBK0 pt are then each initialized to a respective predetermined value.
Dans le cas où l'image courante suivante ICj+i n'est pas de type Intra, il est procédé directement au codage des blocs de cette image conformément au procédé de codage de la figure 1.
Les étapes de codage C1 à C15 qui viennent d'être décrites ci-dessus sont ensuite mises en œuvre pour chacun des blocs B-i , B2, Bu,..., Bs à coder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique. In the case where the next current image IC j + i is not of Intra type, the blocks of this image are coded directly in accordance with the coding method of FIG. 1. The coding steps C1 to C15 which have just been described above are then implemented for each of the blocks Bi, B 2 , B u ,..., B s to be encoded of the current image IC j considered, in a predetermined order which is for example the lexicographic order.
Description détaillée de la partie décodage Detailed description of the decoding part
Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de décodage selon l'invention est utilisé pour décoder un signal ou flux de données représentatif d'une image ou d'une séquence d'images qui est apte à être décodé par un décodeur conforme à l'une quelconque des normes de décodage vidéo actuelles ou à venir. An embodiment of the invention will now be described, in which the decoding method according to the invention is used to decode a signal or data stream representative of an image or a sequence of images which is suitable for be decoded by a decoder according to any of the current or future video decoding standards.
Dans ce mode de réalisation, le procédé de décodage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un tel décodeur. In this embodiment, the decoding method according to the invention is for example implemented in a software or hardware way by modifications of such a decoder.
Le procédé de décodage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes D1 à D15 telles que représentées à la figure 4. The decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D15 as represented in FIG. 4.
Selon ce mode de réalisation, le procédé de décodage selon l'invention est implémenté dans un dispositif de décodage ou décodeur DO représenté à la figure 3. According to this embodiment, the decoding method according to the invention is implemented in a decoding device or decoder DO represented in FIG.
Comme illustré en figure 3, selon ce mode de réalisation de l'invention, le décodeur DO comprend une mémoire MEM_DO qui comprend elle-même une mémoire tampon TAMP_DO, une unité de traitement UT_DO équipée par exemple d'un microprocesseur μΡ et pilotée par un programme d'ordinateur PG_DO qui met en œuvre le procédé de décodage selon l'invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_DO sont par exemple chargées dans une mémoire RAM, notée MR_DO, avant d'être exécutées par le processeur de l'unité de traitement UT_DO. As illustrated in FIG. 3, according to this embodiment of the invention, the decoder DO comprises a memory MEM_DO which itself comprises a buffer memory TAMP_DO, a processing unit UT_DO equipped for example with a microprocessor μΡ and driven by a PG_DO computer program that implements the decoding method according to the invention. At initialization, the code instructions of the computer program PG_DO are for example loaded into a RAM memory, denoted MR_DO, before being executed by the processor of the processing unit UT_DO.
Le procédé de décodage représenté sur la figure 4 s'applique à un signal ou flux de données F représentatif d'une image courante ICj à décoder qui est fixe ou qui appartient à une séquence d'images à décoder.
A cet effet, des informations représentatives de l'image courante ICj à décoder sont identifiées dans le signal de données F reçu au décodeur DO et tel que délivré à l'issue du procédé de codage de la figure 1. The decoding method shown in FIG. 4 applies to a signal or data flow F representative of a current image IC j to be decoded which is fixed or which belongs to a sequence of images to be decoded. For this purpose, information representative of the current image IC j to be decoded is identified in the data signal F received at the decoder DO and as delivered at the end of the coding method of FIG.
En référence à la figure 4, au cours d'une étape D1 , il est procédé à l'identification dans le signal F des blocs résidus quantifiés BSq-ι , BSq2, ..., BSqu, BSqs (1≤u≤S) associés respectivement aux blocs B-i , B2, Bu, ..., Bs codés précédemment conformément à l'ordre lexicographique précité, au cours de l'étape de codage C9 de la figure 1. With reference to FIG. 4, during a step D1, the quantized residue blocks BSq-1, BSq 2 , ..., BSq u , BSqs (1≤u≤) are identified in the signal F. S) respectively associated with the blocks Bi, B 2 , B u ,..., B s encoded previously according to the aforementioned lexicographic order, during the coding step C9 of FIG. 1.
Une telle étape d'identification est mise en œuvre par un processeur ou module logiciel d'identification MI_DO d'analyse de flux, tel que représenté à la figure 3, ledit module étant piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. Such an identification step is implemented by a processor or MI_DO identification software module for flow analysis, as shown in FIG. 3, said module being driven by the microprocessor μΡ of the processing unit UT_DO.
D'autres types de parcours que celui qui vient d'être décrit ci-dessus sont bien sûr possibles et dépendent de l'ordre de parcours choisi au codage. Other types of course than the one just described above are of course possible and depend on the order of course chosen coding.
Dans l'exemple représenté, les blocs B ; B2, Bu, ..., Bs à décoder ont une forme carrée et contiennent tous K pixels, avec K>1 . Selon un mode préféré de réalisation, lesdits blocs à décoder sont de taille 4x4 ou 8x8 pixels. In the example shown, the blocks B ; B 2 , B u , ..., B s to decode have a square shape and all contain K pixels, with K> 1. According to a preferred embodiment, said blocks to be decoded are of size 4x4 or 8x8 pixels.
En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les premiers blocs en haut, à gauche de l'image, et les derniers blocs en bas, à droite de l'image peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres. Depending on the size of the image that is not necessarily a multiple of the size of the blocks, the first blocks at the top left of the image and the last blocks at the bottom right of the image can do not be square. In an alternative embodiment, the blocks may be for example of rectangular size and / or not aligned with each other.
Chaque bloc à décoder peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles. Each block to be decoded can also be divided into sub-blocks which are themselves subdividable.
Au cours d'une étape D2 représentée à la figure 4, le décodeur DO de la figure 3 sélectionne comme bloc courant le premier bloc quantifié BSqu qui contient des données quantifiées qui ont été codées au cours de la sous-étape C93 de la figure 1 . During a step D2 shown in FIG. 4, the decoder DO of FIG. 3 selects as the current block the first quantized block BSq u that contains quantized data that has been coded during the substep C93 of FIG. 1.
Au cours d'une étape D3 représentée à la figure 4, il est procédé à un décodage des informations relatives à la prédiction du bloc courant Bu telle que mise en œuvre au codage, au cours de l'étape C3 de la figure 1 , et qui ont été inscrites dans le signal de données F. De telles informations de reconstruction comprennent le type de prédiction (Inter ou Intra) appliqué à l'étape C3, et le
cas échéant, le mode de prédiction sélectionné, l'indice IBopt du bloc prédicteur obtenu BPopt obtenu à l'issue de l'étape C3, le type de partitionnement du bloc courant Bu si ce dernier a été partitionné, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction Inter. During a step D3 shown in FIG. 4, the information relating to the prediction of the current block B u as implemented in the coding, during step C3 of FIG. 1, is decoded. and which have been written into the data signal F. Such reconstruction information includes the type of prediction (Inter or Intra) applied in step C3, and the if necessary, the prediction mode selected, the index IB op t of the predictor block obtained BP op t obtained at the end of step C3, the partitioning type of the current block B u if the latter has been partitioned, l reference image index and displacement vector used in the Inter prediction mode.
Une telle étape D3 de décodage est mise en œuvre par le module de décodage binaire DB_DO représenté sur la figure 3. Such a decoding step D3 is implemented by the binary decoding module DB_DO shown in FIG. 3.
Au cours d'une étape D4 représentée à la figure 4, il est procédé au décodage prédictif du bloc courant à décoder à l'aide de l'indice IBopt du bloc prédicteur BPopt qui a été décodé au cours de l'étape D3 précitée. A cet effet, de façon connue en soi, il est procédé, en association avec l'indice décodé du bloc prédicteur BPopt, à la sélection, dans la mémoire tampon TAMP_DO du décodeur DO de la figure 3, du bloc prédicteur BPopt correspondant, lequel figure parmi une pluralité de blocs prédicteurs candidats préalablement stockés dans la mémoire tampon TAMP_DO. Chacun des blocs prédicteurs candidats est un bloc de pixels qui a déjà été décodé. During a step D4 shown in FIG. 4, the predictive decoding of the current block to be decoded is carried out using the index IB opt of the predictor block BP op t which has been decoded during the step D3 above. For this purpose, in a manner known per se, it is proceeded, in association with the decoded index of the predictor block BP opt , to the selection, in the buffer memory TAMP_DO of the decoder DO of FIG. 3, of the corresponding opt BP predictor block , which is one of a plurality of candidate predictor blocks previously stored in the buffer buffer TAMP_DO. Each of the candidate predictor blocks is a block of pixels that has already been decoded.
L'étape D4 est mise en œuvre par un processeur ou module logiciel PRED"1_DO de prédiction inverse, tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. Step D4 is implemented by a processor or software module PRED "1 _DO inverse prediction, as shown in Figure 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Au cours d'une étape D5 représentée à la figure 4, il est procédé à un décodage de l'indice IVopt du vecteur de quantification optimal Vopt qui a été sélectionné à l'issue de l'étape C6 de la figure 1. During a step D5 shown in FIG. 4, the index IV opt of the optimal quantization vector V opt which has been selected at the end of step C6 of FIG. 1 is decoded.
Une telle étape D5 de décodage est mise en œuvre par le module de décodage DB_DO de la figure 3. Such a decoding step D5 is implemented by the decoding module DB_DO of FIG. 3.
Au cours d'une étape D6 représentée à la figure 4, il est procédé à la détermination du vecteur de quantification optimal Vopt associé à l'indice IVopt décodé. During a step D6 shown in FIG. 4, the optimal quantization vector V opt associated with the index IV opt decoded is determined.
L'étape D6 est mise en œuvre par un processeur ou module logiciel de calcul CAL1_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. The step D6 is implemented by a processor or calculation software module CAL1_DO as represented in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Au cours d'une étape D7 représentée à la figure 4, il est procédé à la sélection d'un dictionnaire de vecteurs de quantification, noté CBKopt, qui contient le vecteur de quantification Vopt sélectionné à l'étape D6. Un tel dictionnaire appartient à une pluralité de dictionnaires de vecteurs de
quantification disponibles, notés CBK-ι , CBK2, ..., CBKW. De tels dictionnaires sont préalablement stockés dans la mémoire tampon TAMP_DO du décodeur DO, telle que représentée à la figure 3. During a step D7 shown in Figure 4, it is proceeded to the selection of a quantization vector dictionary, denoted CBK op t, which contains the quantization vector V opt selected in step D6. Such a dictionary belongs to a plurality of vector dictionaries of quantification available, denoted CBK-ι, CBK 2 , ..., CBK W. Such dictionaries are previously stored in the buffer memory TAMP_DO of the decoder DO, as represented in FIG.
L'étape D7 est mise en œuvre par un processeur ou module logiciel de calcul CAL2_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. Step D7 is implemented by a processor or calculation software module CAL2_DO as shown in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Conformément à l'invention, de façon correspondante au codage, une telle sélection est mise en œuvre en fonction de l'un et/ou de l'autre des éléments suivants: According to the invention, correspondingly to the coding, such a selection is implemented according to one and / or the other of the following elements:
- les caractéristiques de la prédiction (par exemple, le mode Intra choisi parmi les 35 modes Intra du standard HEVC), dont les indices ont été décodés à l'étape D3, the characteristics of the prediction (for example, the Intra mode chosen from among the Intra modes of the HEVC standard), the indices of which were decoded in step D3,
- les caractéristiques fréquentielles du bloc prédicteur BPopt dont l'indice IBopt a été décodé à l'étape D3, - BP predictor block frequency characteristics op t whose index IB op t was decoded in step D3,
- la taille du bloc courant Bu à décoder, the size of the current block B u to be decoded,
- des caractéristiques de l'image courante ICj à décoder, comme sa taille ou son énergie. characteristics of the current image IC j to be decoded, such as its size or its energy.
Dans le mode préféré de réalisation, W=70, c'est-à-dire que : In the preferred embodiment, W = 70, i.e.
- dans le cas d'un bloc courant Bu de taille 4x4, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC, in the case of a current block B u of size 4x4, there is a different dictionary for each of the 35 Intra modes considered in the HEVC standard,
- dans le cas d'un bloc courant Bu de taille 8x8, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC. - in the case of a current block B u 8x8 size, there is a different dictionary for each of the 35 Intra modes considered in HEVC standard.
Conformément à ce mode préféré de réalisation, le dictionnaire sélectionné dépend donc à la fois de la taille du bloc courant Bu à décoder et du mode de prédiction dont l'indice a été décodé à l'étape D3. According to this preferred embodiment, the selected dictionary therefore depends both on the size of the current block B u to be decoded and on the prediction mode whose index has been decoded in step D3.
Au cours d'une étape D8 représentée à la figure 4, il est procédé, conformément à l'invention, à un décodage des données du bloc résidu quantifié BSqu. During a step D8 shown in FIG. 4, the data of the quantized residual block BSq u are decoded in accordance with the invention.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D81 représentée à la figure 4, à un décodage de l'ensemble de coefficients quantifiés BSqu courant.
Un tel décodage est par exemple un décodage entropique de type CABAC ou bien encore un décodage entropique de type arithmétique ou de Huffman. During step D8, during a substep D81 shown in FIG. 4, a decoding of the set of quantized coefficients BSq u current is carried out. Such a decoding is for example a CABAC type entropic decoding or else an entropy decoding of arithmetic type or Huffman type.
A l'issue de la sous-étape D81 précitée, est obtenu un ensemble BSDqu d'informations numériques associées à l'ensemble de coefficients quantifiés BSqu courant. At the end of the aforementioned sub-step D81, a set BSDq u of digital information associated with the set of quantized coefficients BSq u current is obtained.
Une telle sous-étape D81 de décodage est mise en œuvre par un module de décodage entropique MD_DO représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. Such a substep D81 decoding is implemented by an entropy decoding module MD_DO shown in Figure 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D82 représentée à la figure 4, à une déquantification des informations numériques obtenues à la suite de la sous-étape D81 , selon une opération classique de déquantification qui est l'opération inverse de la quantification mise en œuvre lors de la sous-étape de quantification C92 de la figure 1. Un ensemble de coefficients déquantifiés BSDtu courant est alors obtenu à l'issue de la sous- étape D82. Une telle sous-étape de déquantification est par exemple de type scalaire ou vectoriel. During step D8, during a substep D82 shown in FIG. 4, a dequantization of the digital information obtained as a result of the substep D81 is carried out, according to a conventional dequantization operation. which is the inverse operation of the quantization implemented during the quantization sub-step C92 of FIG. 1. A set of dequantized coefficients BSDt u current is then obtained at the end of the substep D82. Such dequantization sub-step is for example of scalar or vector type.
La sous-étape D82 est effectuée au moyen d'un processeur ou module logiciel de quantification MQ"1_DO représenté à la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. Sub-step D82 is performed by means of a quantization software processor or module MQ "1 _DO shown in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D83 représentée à la figure 4, à une transformation de l'ensemble de coefficients déquantifiés BSDtu courant, une telle transformation étant une transformation directe inverse. Cette transformation est l'opération inverse de la transformation effectuée à la sous-étape C91 de la figure 1 . A l'issue de la sous-étape D83, est obtenu un bloc résidu décodé courant BSDru. In step D8, the procedure, in a substep D83 shown in FIG 4, a transformation of the set of coefficients dequantized BSDT u current, such a transformation being a direct inverse transformation. This transformation is the inverse operation of the transformation carried out in the substep C91 of FIG. At the end of the substep D83, a current decoded residue block BSDr u is obtained.
La sous-étape D83 est mise en œuvre par un processeur ou module logiciel MT"1_DO de transformation inverse, tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. The substep D83 is implemented by a processor or software module MT "1 _DO inverse transformation, as shown in Figure 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Le processeur MT"1_DO est apte à mettre en œuvre une transformation directe inverse telle que par exemple une transformation inverse en cosinus discrètes de type DCT1 , une transformation inverse en sinus discrètes de type DST1 , une transformation inverse en ondelettes discrètes de type DWT1.
Au cours d'une étape D9 représentée à la figure 4, il est procédé, conformément à l'invention, à la reconstruction du bloc courant Bu en ajoutant au bloc résidu décodé BSDru, obtenu à l'issue de la sous-étape D83 : The processor MT "1 _DO is able to implement a direct inverse transformation such as, for example, a discrete inverse transform of DCT 1 type, a discrete inverse transformation into discrete sines of the DST 1 type, an inverse transformation into discrete wavelets of the type DWT 1 . During a step D9 represented in FIG. 4, according to the invention, the current block B u is reconstructed by adding to the decoded residue block BSDr u , obtained at the end of the substep D83:
- le bloc prédicteur optimal BPopt qui a été obtenu à l'issue de l'étape D4 précitée, the optimal predictor block BP opt which was obtained at the end of the aforementioned step D4,
- et le vecteur de quantification optimal Vopt qui a été obtenu à l'issue de l'étape D6 précitée. and the optimal quantization vector V op t which was obtained at the end of the aforementioned step D6.
A l'issue de l'étape D9, un bloc décodé courant BDU est obtenu. At the end of step D9, a decoded current block BD U is obtained.
L'étape D9 est mise en œuvre par un processeur ou module logiciel de calcul CAL3_DO représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. The step D9 is implemented by a processor or calculation software module CAL3_DO shown in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Au cours d'une étape D10 représentée à la figure 4, ledit bloc décodé BDU est écrit dans une image décodée IDj. During a step D10 shown in FIG. 4, said decoded BD U block is written in a decoded picture ID j .
Une telle étape est mise en œuvre par un processeur ou module logiciel URI de reconstruction d'image tel que représenté sur la figure 3, ledit module étant piloté par le microprocesseur μΡ du module de traitement UT_DO. Such a step is implemented by a processor or software module URI image reconstruction as shown in Figure 3, said module being controlled by the microprocessor μΡ processing module UT_DO.
Au cours d'une étape D1 1 représentée à la figure 4, il est procédé à un test qui consiste à vérifier si un critère de mise à jour des dictionnaires CBK-i , CBK2, ..., CBKW est rempli ou non. During a step D1 1 shown in FIG. 4, a test is performed which consists of checking whether a criterion for updating the CBK-i, CBK 2 , ..., CBK W dictionaries is fulfilled or not. .
Selon une première variante, un tel critère consiste à comparer le nombre de coefficients non nuls dans le bloc résidu décodé BSDru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le nombre de coefficients non nuls est supérieur à 3. According to a first variant, such a criterion consists in comparing the number of non-zero coefficients in the decoded residue block BSDr u with a predetermined threshold. For example, the update criterion is considered to be filled if the number of nonzero coefficients is greater than 3.
Selon une deuxième variante, un tel critère consiste à comparer le débit du codage du bloc résidu décodé BSDru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le débit du codage du bloc résidu décodé BSDru est supérieur à 10 bits. According to a second variant, such a criterion consists in comparing the rate of coding of the decoded residue block BSDr u with a predetermined threshold. For example, the update criterion is considered completed if the block coding rate decoded residue BSDr u is greater than 10 bits.
L'étape D1 1 est mise en œuvre par un processeur ou module logiciel de calcul CAL4_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. The step D1 1 is implemented by a processor or calculation software module CAL4_DO as represented in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
Si le critère de mise à jour est rempli, au cours d'une étape D12 représentée à la figure 4, il est procédé à une mise à jour d'au moins un des dictionnaires CBK^ CBK2, ..., CBKW.
L'étape D12 est mise en œuvre par un processeur ou module logiciel de calcul CAL5_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO. If the update criterion is fulfilled, during a step D12 shown in FIG. 4, at least one of the CBK ^ CBK 2 , ..., CBK W dictionaries is updated. The step D12 is implemented by a processor or calculation software module CAL5_DO as represented in FIG. 3, which is controlled by the microprocessor μΡ of the processing unit UT_DO.
L'étape D12 étant identique à l'étape C12 de mise à jour des dictionnaires telle que mise en œuvre au codage en référence à la figure 1 , cette étape ne sera pas décrite plus longuement. Since step D12 is identical to step C12 for updating the dictionaries as implemented in the coding with reference to FIG. 1, this step will not be described further.
A la suite de l'étape D12 précitée, il est procédé, au cours d'une étape D13 représentée sur la figure 4, à la sélection du bloc résidu quantifié suivant de l'image courante ICj à décoder. Puis les étapes de décodage du bloc résidu quantifié suivant décrites ci-dessus sont à nouveau mises en œuvre. Following the aforesaid step D12, during a step D13 shown in FIG. 4, the following quantized residual block of the current image IC j to be decoded is selected. Then the decoding steps of the next quantized residue block described above are again implemented.
Si à l'issue de l'étape D1 1 précitée, le critère de mise à jour n'est pas rempli, il est procédé, au cours de l'étape D13 précitée, à la sélection du bloc résidu quantifié suivant de l'image courante ICj à décoder. Puis les étapes de décodage du bloc résidu quantifié suivant décrites ci-dessus sont à nouveau mises en œuvre. If at the end of the aforementioned step D1 1, the update criterion is not fulfilled, it is proceeded, during the aforementioned step D13, to the selection of the next quantized residue block of the image current IC j to decode. Then the decoding steps of the next quantized residue block described above are again implemented.
Au cours d'une étape D14 représentée à la figure 4, le décodeur DO de la figure 3 teste si le bloc courant qui a été décodé conformément au procédé de décodage décrit ci-dessus est le dernier bloc de l'image courante ICj à décoder. During a step D14 shown in FIG. 4, the decoder DO of FIG. 3 tests whether the current block which has been decoded according to the decoding method described above is the last block of the current image IC j to decode.
Si tel n'est pas le cas, l'étape D13 précitée est mise en œuvre. If this is not the case, the aforementioned step D13 is implemented.
Si le bloc courant est le dernier bloc de l'image courante ICj à décoder, au cours d'une étape D15 représentée à la figure 4, le décodeur DO de la figure 3 teste si l'image courante suivante ICj+i à décoder est une image de type Intra ou non. If the current block is the last block of the current image IC j to be decoded, during a step D15 shown in FIG. 4, the decoder DO of FIG. 3 tests whether the next current image IC j + i to be decoded is an Intra type image or not.
Dans le cas où l'image courante suivante ICj+i à décoder est de typeIn the case where the following current image IC j + i to be decoded is of type
Intra, avant de procéder au décodage des blocs de cette image conformément au procédé de décodage de la figure 4, l'étape D12 de mise à jour des dictionnaires est mise en œuvre. Intra, before decoding the blocks of this image in accordance with the decoding method of FIG. 4, the step D12 for updating the dictionaries is implemented.
Dans l'exemple représenté, les vecteurs de quantification du dictionnaire CBKopt sont chacun initialisés à une valeur respective prédéterminée. In the example shown, the quantization vectors of the CBKopt dictionary are each initialized to a respective predetermined value.
Dans le cas où l'image courante suivante ICj+i à décoder n'est pas de type Intra, il est procédé directement au décodage des blocs de cette image conformément au procédé de décodage de la figure 4.
Les étapes de décodage qui viennent d'être décrites ci-dessus sont mises en œuvre pour tous les blocs B-i , B2, Bu,..., Bs à décoder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique. In the case where the following current image IC j + i to be decoded is not Intra type, the blocks of this image are decoded directly according to the decoding method of FIG. 4. The decoding steps which have just been described above are implemented for all the blocks Bi, B 2 , B u ,..., B s to be decoded from the current image IC j considered, in a predetermined order which is for example the lexicographic order.
II va de soi que les modes de réalisation qui ont été décrits ci-dessus ont été donnés à titre purement indicatif et nullement limitatif, et que de nombreuses modifications peuvent être facilement apportées par l'homme de l'art sans pour autant sortir du cadre de l'invention.
It goes without saying that the embodiments which have been described above have been given for purely indicative and non-limiting purposes, and that many modifications can easily be made by those skilled in the art without departing from the scope. of the invention.
Claims
1 . Procédé de codage d'au moins une image (ICj) découpée en blocs, mettant en œuvre, pour un bloc courant (Bu) à coder de ladite image : 1. Method for encoding at least one image (IC j ) cut into blocks, implementing, for a current block (B u ) to be encoded of said image:
- une prédiction (C3) du bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés, a prediction (C3) of the current block according to a prediction mode selected from among a plurality of predetermined prediction modes,
- une obtention d'un bloc prédicteur (BPopt) à l'issue de ladite prédiction, - un calcul (C4) d'un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant, a obtaining of a predictor block (BP op t) at the end of said prediction, a computation (C4) of a first set of data representative of a difference between the obtained predictor block and the current block,
- une comparaison (C5) dudit premier ensemble de données calculé avec une pluralité de vecteurs de quantification, a comparison (C5) of said first set of calculated data with a plurality of quantization vectors,
- une sélection (C6) d'un des vecteurs de quantification selon un critère de performance de codage prédéterminé, a selection (C6) of one of the quantization vectors according to a predetermined coding performance criterion,
- un codage (C7) d'un index associé audit vecteur de quantification sélectionné, an encoding (C7) of an index associated with said selected quantization vector,
ledit procédé étant caractérisé en ce qu'il comprend: said method being characterized in that it comprises:
- un calcul (C8) d'un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, a calculation (C8) of a second set of data representative of a difference between the first calculated data set and the selected quantization vector,
- un codage (C9) du deuxième ensemble de données calculé au cours duquel au moins un desdits vecteurs de quantification est modifié (C12) en fonction des données du deuxième ensemble de données calculé. an encoding (C9) of the second calculated data set in which at least one of said quantization vectors is modified (C12) as a function of the data of the second calculated data set.
2. Procédé de codage selon la revendication 1 , dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre uniquement si les données du deuxième ensemble de données calculé remplissent un critère prédéterminé. The coding method according to claim 1, wherein the modification of one of said quantization vectors is implemented only if the data of the second computed data set fulfills a predetermined criterion.
3. Procédé de codage selon la revendication 1 ou 2, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à coder.
3. coding method according to claim 1 or 2, wherein the modification of one of said quantization vectors is implemented using a parameter whose value depends on the size of the image to be encoded.
4. Procédé de codage selon l'une quelconque des revendications 1 à 3, dans lequel si ladite image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées. 4. Coding method according to any one of claims 1 to 3, wherein if said current image is Intra type, the quantization vectors are each initialized to predetermined values.
5. Dispositif de codage (CO) d'au moins une image (ICj) découpée en blocs, comprenant, pour un bloc courant (Bu) à coder de ladite image : 5. Coding device (CO) of at least one image (IC j ) cut into blocks, comprising, for a current block (B u ) to be coded with said image:
- des moyens (PRED_CO) de prédiction pour prédire le bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés (MP0, MP-i , . . . , MPV,..., MPQ), délivrant un bloc prédicteur (BPopt), prediction means (PRED_CO) for predicting the current block according to a prediction mode selected from among a plurality of predetermined prediction modes (MP 0 , MP-1, MP V , ..., MP Q ); , delivering a predictor block (BP opt ),
- des moyens (CAL1_CO) de calcul pour calculer un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant, calculation means (CAL1_CO) for calculating a first set of data representative of a difference between the obtained predictor block and the current block,
- des moyens (CAL2_CO) de comparaison pour comparer ledit premier ensemble de données calculé avec une pluralité de vecteurs de quantification, comparison means (CAL2_CO) for comparing said first set of calculated data with a plurality of quantization vectors,
- des moyens (CAL3_CO) de sélection pour sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé, selection means (CAL3_CO) for selecting one of the quantization vectors according to a predetermined coding performance criterion,
- des premiers moyens (CB_CO) de codage pour coder un index associé audit vecteur de quantification sélectionné, first encoding means (CB_CO) for encoding an index associated with said selected quantization vector,
ledit dispositif de codage étant caractérisé en ce que: said coding device being characterized in that:
- lesdits moyens de calcul sont activés pour calculer un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, et en ce qu'il comprend des deuxièmes moyens de codage (MC_CO) qui sont activés pour coder le deuxième ensemble de données calculé, au moins un desdits vecteurs de quantification étant modifié en fonction des données du deuxième ensemble de données calculé. said calculating means are activated to calculate a second set of data representative of a difference between the first calculated data set and the selected quantization vector, and in that it comprises second coding means (MC_CO) which are activated to encode the second calculated data set, wherein at least one of said quantization vectors is changed based on the data of the second calculated data set.
6. Programme d'ordinateur comportant des instructions de code de programme pour l'exécution des étapes du procédé de codage selon l'une
quelconque des revendications 1 à 4, lorsque ledit programme est exécuté sur un ordinateur. A computer program having program code instructions for performing the steps of the encoding method according to one of the any of claims 1 to 4, when said program is run on a computer.
7. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de codage selon l'une quelconque des revendications 1 à 4, lorsque ledit programme est exécuté par un ordinateur. A computer-readable recording medium on which a computer program is recorded comprising program code instructions for performing the steps of the encoding method according to any one of claims 1 to 4, when said program is executed by a computer.
8. Procédé de décodage d'un signal de données (F) représentatif d'au moins une image (ICj) découpée en blocs, mettant en œuvre, pour un bloc courant (Bu) à décoder : 8. A method for decoding a data signal (F) representative of at least one image (ICj) cut into blocks, implementing, for a current block (B u ) to be decoded:
- un décodage (D3, D5) : a decoding (D3, D5):
• d'un index (IVopt) associé à un vecteur de quantification (Vopt) qui appartient à un ensemble de vecteurs de quantification, An index (IV opt ) associated with a quantization vector (V op t) which belongs to a set of quantization vectors,
• et de données de prédiction du bloc courant à décoder, And prediction data of the current block to be decoded,
- une détermination (D6) dudit vecteur de quantification associé audit index décodé, a determination (D6) of said quantization vector associated with said decoded index,
- une obtention (D4) d'un bloc prédicteur (BPopt) à partir des données de prédiction décodées, obtaining (D4) a predictor block (BP op t) from the decoded prediction data,
ledit procédé étant caractérisé en ce qu'il comprend: said method being characterized in that it comprises:
- une détermination (D1 ), dans ledit signal de données, de données relatives au bloc courant à décoder, a determination (D1) in said data signal of data relating to the current block to be decoded,
- un décodage (D8) des données relatives au bloc courant à décoder, au cours duquel au moins un desdits vecteurs de quantification est modifié (D1 2) en fonction des données décodées, a decoding (D8) of the data relating to the current block to be decoded, during which at least one of said quantization vectors is modified (D1 2) as a function of the decoded data,
- une reconstruction (D9) du bloc courant à partir des données décodées, dudit vecteur de quantification et du bloc prédicteur obtenu. - a reconstruction (D9) of the current block from the decoded data, said quantization vector and the predictor block obtained.
9. Procédé de décodage selon la revendication 8, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre uniquement si les données décodées remplissent un critère prédéterminé.
The decoding method according to claim 8, wherein the modification of one of said quantization vectors is implemented only if the decoded data fulfills a predetermined criterion.
10. Procédé de décodage selon la revendication 8 ou 9, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à décoder. 10. decoding method according to claim 8 or 9, wherein the modification of one of said quantization vectors is implemented using a parameter whose value depends on the size of the image to be decoded.
1 1 . Procédé de décodage selon l'une quelconque des revendications 8 à 10, dans lequel si ladite image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées. 1 1. A decoding method according to any one of claims 8 to 10, wherein if said current image is of Intra type, the quantization vectors are each initialized to predetermined values.
12. Dispositif de décodage d'un signal de données (F) représentatif d'au moins une image (ICj) découpée en blocs, comprenant, pour un bloc courant (Bu) à décoder : 12. Device for decoding a data signal (F) representative of at least one image (IC j ) cut into blocks, comprising, for a current block (B u ) to be decoded:
- des premiers moyens de décodage (DB_DO) pour décoder : first decoding means (DB_DO) for decoding:
• un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification,An index associated with a quantization vector that belongs to a set of quantization vectors,
• et des données de prédiction du bloc courant à décoder,And prediction data of the current block to be decoded,
- des moyens de calcul (CAL1_DO) pour déterminer ledit vecteur de quantification associé audit index décodé, calculating means (CAL1_DO) for determining said quantization vector associated with said decoded index,
- des moyens de prédiction (PRED"1_DO) pour obtenir un bloc prédicteur (BPopt) à partir des données de prédiction décodées, prediction means (PRED "1 _DO) for obtaining a predictor block (BP op t) from the decoded prediction data,
ledit dispositif de décodage étant caractérisé en ce qu'il comprend: said decoding device being characterized in that it comprises:
- des deuxièmes moyens de décodage (MD_DO) qui sont activés pour décoder des données relatives au bloc courant à décoder déterminées dans le signal de données, au moins un desdits vecteurs de quantification étant modifié en fonction des données décodées, second decoding means (MD_DO) which are activated to decode data relating to the current block to be decoded determined in the data signal, at least one of said quantization vectors being modified as a function of the decoded data,
- des moyens de reconstruction (CAL3_DO) pour reconstruire le bloc courant à partir des données décodées, dudit vecteur de quantification déterminé et du bloc prédicteur obtenu. - reconstruction means (CAL3_DO) for reconstructing the current block from the decoded data, said determined quantization vector and the predictor block obtained.
13. Programme d'ordinateur comportant des instructions de code de programme pour l'exécution des étapes du procédé de décodage selon l'une quelconque des revendications 8 à 1 1 , lorsque ledit programme est exécuté sur un ordinateur.
Computer program comprising program code instructions for performing the steps of the decoding method according to any one of claims 8 to 11, when said program is executed on a computer.
14. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de décodage selon l'une quelconque des revendications 8 à 1 1 , lorsque ledit programme est exécuté par un ordinateur.
A computer-readable recording medium on which a computer program is recorded comprising program code instructions for performing the steps of the decoding method according to any one of claims 8 to 11, when said program is run by a computer.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1551420A FR3033114A1 (en) | 2015-02-19 | 2015-02-19 | METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS |
PCT/FR2016/050373 WO2016132074A1 (en) | 2015-02-19 | 2016-02-18 | Encoding of images by vector quantization |
Publications (1)
Publication Number | Publication Date |
---|---|
EP3272122A1 true EP3272122A1 (en) | 2018-01-24 |
Family
ID=52829174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP16718390.4A Withdrawn EP3272122A1 (en) | 2015-02-19 | 2016-02-18 | Encoding of images by vector quantization |
Country Status (6)
Country | Link |
---|---|
US (1) | US20180070109A1 (en) |
EP (1) | EP3272122A1 (en) |
KR (1) | KR20170120634A (en) |
CN (1) | CN107343391A (en) |
FR (1) | FR3033114A1 (en) |
WO (1) | WO2016132074A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11012714B1 (en) * | 2020-06-23 | 2021-05-18 | Google Llc | Image coding using lexicographic coding order with floating block-partitioning |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4851906A (en) * | 1986-11-04 | 1989-07-25 | Nec Corporation | Data compression using orthogonal transform and vector quantization |
EP0285902A3 (en) * | 1987-04-07 | 1990-10-10 | Siemens Aktiengesellschaft | Method for the data reduction of digital picture sequences |
US5872864A (en) * | 1992-09-25 | 1999-02-16 | Olympus Optical Co., Ltd. | Image processing apparatus for performing adaptive data processing in accordance with kind of image |
JP3013698B2 (en) * | 1994-04-20 | 2000-02-28 | 松下電器産業株式会社 | Vector quantization encoding device and decoding device |
US5457495A (en) * | 1994-05-25 | 1995-10-10 | At&T Ipm Corp. | Adaptive video coder with dynamic bit allocation |
US5821986A (en) * | 1994-11-03 | 1998-10-13 | Picturetel Corporation | Method and apparatus for visual communications in a scalable network environment |
US5978514A (en) * | 1994-11-10 | 1999-11-02 | Kabushiki Kaisha Toshiba | Image data coding and decoding system for efficiently compressing information using the shape and position of the image content |
JPH1080187A (en) * | 1996-09-06 | 1998-03-24 | Aichi Electric Co Ltd | Motor driving circuit |
US6278385B1 (en) * | 1999-02-01 | 2001-08-21 | Yamaha Corporation | Vector quantizer and vector quantization method |
JP3519673B2 (en) * | 2000-07-07 | 2004-04-19 | 松下電器産業株式会社 | Video data creation device and video encoding device |
US7463684B2 (en) * | 2002-05-03 | 2008-12-09 | Microsoft Corporation | Fading estimation/compensation |
KR100987765B1 (en) * | 2003-09-30 | 2010-10-13 | 삼성전자주식회사 | Prediction method and apparatus in video encoder |
KR100654436B1 (en) * | 2004-07-07 | 2006-12-06 | 삼성전자주식회사 | Method for video encoding and decoding, and video encoder and decoder |
US7649549B2 (en) * | 2004-09-27 | 2010-01-19 | Texas Instruments Incorporated | Motion stabilization in video frames using motion vectors and reliability blocks |
EP1679902A3 (en) * | 2005-01-06 | 2012-04-25 | Qualcomm Incorporated | Residual coding in compliance with a video standard using non-standardized vector quantization coder |
US20070286277A1 (en) * | 2006-06-13 | 2007-12-13 | Chen Xuemin Sherman | Method and system for video compression using an iterative encoding algorithm |
EP2227020B1 (en) * | 2007-09-28 | 2014-08-13 | Dolby Laboratories Licensing Corporation | Video compression and transmission techniques |
US8611423B2 (en) * | 2008-02-11 | 2013-12-17 | Csr Technology Inc. | Determination of optimal frame types in video encoding |
US20090207915A1 (en) * | 2008-02-15 | 2009-08-20 | Freescale Semiconductor, Inc. | Scalable motion search ranges in multiple resolution motion estimation for video compression |
US8130277B2 (en) * | 2008-02-20 | 2012-03-06 | Aricent Group | Method and system for intelligent and efficient camera motion estimation for video stabilization |
EP2437499A4 (en) * | 2009-05-29 | 2013-01-23 | Mitsubishi Electric Corp | Video encoder, video decoder, video encoding method, and video decoding method |
US20120201475A1 (en) * | 2009-10-05 | 2012-08-09 | I.C.V.T. Ltd. | Method and system for processing an image |
US20110170608A1 (en) * | 2010-01-08 | 2011-07-14 | Xun Shi | Method and device for video transcoding using quad-tree based mode selection |
GB2483294B (en) * | 2010-09-03 | 2013-01-02 | Canon Kk | Method and device for motion estimation of video data coded according to a scalable coding structure |
KR20120098499A (en) * | 2011-02-25 | 2012-09-05 | 삼성전자주식회사 | Method and apparatus for transforming image, and method and apparatus for inverse-transforming image |
CN104396261B (en) * | 2012-04-16 | 2018-01-23 | 三星电子株式会社 | Use the method for video coding and device and associated video coding/decoding method and device of high speed rim detection |
JP2017034531A (en) * | 2015-08-04 | 2017-02-09 | 富士通株式会社 | Moving image encoder and moving image encoding method |
US10187655B2 (en) * | 2015-09-30 | 2019-01-22 | Apple Inc. | Memory-to-memory low resolution motion estimation systems and methods |
US10609383B2 (en) * | 2017-04-07 | 2020-03-31 | Hulu, LLC | Video compression using down-sampling patterns in two phases |
-
2015
- 2015-02-19 FR FR1551420A patent/FR3033114A1/en not_active Withdrawn
-
2016
- 2016-02-18 KR KR1020177026321A patent/KR20170120634A/en unknown
- 2016-02-18 EP EP16718390.4A patent/EP3272122A1/en not_active Withdrawn
- 2016-02-18 US US15/551,804 patent/US20180070109A1/en not_active Abandoned
- 2016-02-18 WO PCT/FR2016/050373 patent/WO2016132074A1/en active Application Filing
- 2016-02-18 CN CN201680010673.2A patent/CN107343391A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2016132074A1 (en) | 2016-08-25 |
CN107343391A (en) | 2017-11-10 |
KR20170120634A (en) | 2017-10-31 |
FR3033114A1 (en) | 2016-08-26 |
US20180070109A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2991351B1 (en) | Procedure for decoding of images | |
EP3209021B1 (en) | Recording medium storing coded image data | |
WO2015197945A1 (en) | Method for encoding a digital image, and associated decoding method, devices and computer programmes | |
EP3061246A1 (en) | Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs | |
EP3058737A1 (en) | Method for encoding and decoding images, device for encoding and decoding images, and corresponding computer programmes | |
EP3075155B1 (en) | Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs | |
WO2017037368A2 (en) | Method of coding and decoding images, device for coding and decoding images and computer programmes corresponding thereto | |
WO2016024067A1 (en) | Image encoding and decoding method, image encoding and decoding device, and corresponding computer programs | |
EP3632103B1 (en) | Methods and devices for coding and decoding a data stream representative of at least one image | |
WO2012160313A1 (en) | Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs | |
EP3272122A1 (en) | Encoding of images by vector quantization | |
EP3259909B1 (en) | Image encoding and decoding method, encoding and decoding device, and corresponding computer programs | |
WO2017129880A1 (en) | Method for encoding and decoding data, device for encoding and decoding data, and corresponding computer programs | |
WO2020058593A1 (en) | Methods and devices for encoding and decoding a data stream representing at least one image |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20170919 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAV | Request for validation of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) | ||
17Q | First examination report despatched |
Effective date: 20180829 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20190312 |