WO2017093653A1 - Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants - Google Patents
Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants Download PDFInfo
- Publication number
- WO2017093653A1 WO2017093653A1 PCT/FR2016/053136 FR2016053136W WO2017093653A1 WO 2017093653 A1 WO2017093653 A1 WO 2017093653A1 FR 2016053136 W FR2016053136 W FR 2016053136W WO 2017093653 A1 WO2017093653 A1 WO 2017093653A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- block
- data
- weighted sum
- coding
- decoding
- Prior art date
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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- 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/117—Filters, e.g. for pre-processing or post-processing
-
- 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
-
- 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/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
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 encoding / decoding of digital images applies in particular to images from at least one video sequence comprising:
- the present invention applies similarly to the coding / decoding of 2D or 3D type images.
- the invention may especially, but not exclusively, apply to video coding implemented in current AVC and HEVC video encoders and their extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc.), and to corresponding decoding.
- MVC Motion Picture Codon Coding
- 3D-AVC 3D-AVC
- MV-HEVC 3D-HEVC
- 3D-HEVC 3D-HEVC
- residue block also called residue of prediction, corresponding to the original block minus a prediction.
- the residue blocks are transformed using a transform mathematical operation and then quantized using a mathematical quantization operation, for example of the scalar type.
- a mathematical quantization operation for example of the scalar type.
- the mathematical operation of transform will be called later 'transformed' and the mathematical operation of quantification will be called later 'quantification'.
- a one-dimensional list of coefficients is obtained after the quantization.
- the coefficients of this list are then encoded in bits by an entropy coding whose purpose is to code the coefficients without loss.
- bits obtained after entropy coding are written in a signal or data stream which is intended to be transmitted to the decoder.
- such a signal comprises:
- the decoding is done image by image, and for each image, block by block. For each block, the corresponding elements of the stream are read. The inverse quantization, the reverse course operation, and the inverse transform of the block coefficients are performed to produce the decoded prediction residue. Then, the prediction of the block is calculated and the block is reconstructed by adding the prediction to the decoded prediction residue.
- the conventional coding / decoding technique that has just been described certainly allows improvements in coding performance. Depending on the video context, it allows:
- DCT discrete Cosine Transform
- DST discrete sinus transforms
- the aforementioned DCT or DST transforms are of the separable type.
- a separable transform can be applied in two different cases.
- a first transform A1 to a residue block x of K pixels which are organized in the form of an MxN matrix, where Al is a data matrix of size MxM and M, N are natural numbers greater than or equal to 1.
- a first transformed block Al.x At the end of the application of this first transform is obtained a first transformed block Al.x.
- a transposition operation t is then applied to the transformed block Al.x.
- a transposed block (Al.x) f is obtained.
- the transformed block X obtained according to this second case is similar to the transformed block X obtained according to the first case, to a close transposition.
- the corresponding inverse transform makes it possible to obtain the residue block x using the following calculation:
- AI "1 and Ac " 1 represent the respective inverse transforms of the Al and Ac transforms. They make it possible to obtain the values of the residue block x from the values of the transformed block X.
- the matrices AI "1 and Ac " 1 are commonly called inverse matrices of Al and Ac respectively. In the case where the matrices are chosen orthogonal they correspond to the matrices transposed of Al and Ac respectively.
- non-separable type transforms such as, for example, the Karhunen-Loeve transform (KLT) which is considered to provide an optimal decorrelation of the data of a block considered.
- KLT Karhunen-Loeve transform
- Non-separable transforms have the advantage of being able to exploit correlations between any pair (or more) of data within a given block, unlike separable type transforms that can only exploit the correlations between data sharing either the same row or the same column of a block considered across Al and Ac transforms that act independently. Such a difference makes the non-separable type transforms more efficient than the separable transforms, in particular from the point of view of energy compression and coding performance.
- non-separable transforms are very complex, which makes them difficult to implement in current video encoders. This is the reason why the DCT or DST transforms are currently preferred, especially since they may in certain cases be a good approximation of the KLT transform.
- a non-separable type transform is mathematically written to the encoding as the multiplication of the residue block x, put in the form of a vector of dimension 1 xK, by a matrix A of size KxK.
- the transformed block X obtained after the application of this transform is then written as follows:
- the inverse transform consists in multiplying the transformed block X by the inverse matrix A "1 of A which can be the transpose of A, when A is orthogonal. This inverse transform makes it possible to obtain the following residue block x:
- an object of the present invention relates to a method of coding at least one image cut into blocks.
- Such a coding method is remarkable in that, for a current block to be coded with the image, it implements the following:
- Such an arrangement makes it possible to obtain, by means of a separable transform as conventionally used in current and future coding / decoding standards, an improved coding gain approaching that obtained by directly applying to the data of the block an operation of KLT transform, which is non-separable and therefore requires a high number of calculations on the block data.
- the improved gain according to the invention is obtained with a low computational complexity, thanks to the fact that the operation of linear combinations only applies to certain data of the block, prior to the application of the separable transform operation. .
- Such a modification advantageously makes it possible to adapt the data of the block in the spatial domain, so that when a separable type transform operation is applied to the data of the modified block, the coding gain of the data of the block is improved.
- Such a separable transform may be of the trigonometric type, such as for example a DCT, DST or non-trigonometric type transform, such as, for example, a transform of the RDOT (Rate-Distortion Optimized Transform) type, of Hadamard, etc. .
- a transform of the RDOT (Rate-Distortion Optimized Transform) type of Hadamard, etc. .
- the linear combination operation comprises calculating a first weighted sum and a second weighted sum of the two data of the block, the two weighting data used in the first weighted sum being equal in value. absolute to the two weighting data used in the second weighted sum.
- the two data of the block on which the first weighted sum and the second weighted sum apply are not located on the same line or on the same column of the block.
- the invention also relates to a device for coding at least one image cut into blocks.
- the coding device is remarkable in that it comprises a processing circuit which is arranged for:
- Such a coding device is particularly suitable for implementing the aforementioned coding method.
- 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, the following:
- Such a decoding method is remarkable in that it implements a reconstruction of the current block by means of at least one modification of two data of the transformed data block, by an operation of linear combinations operating on the two data.
- the linear combination operation comprises calculating a first weighted sum and a second weighted sum of the two data of the transformed data block, the two weighting data used in the first weighted sum being equal in absolute value to the two weighting data used in the second weighted sum.
- the two data of the transformed data block to which the first weighted sum and the second weighted sum apply are not located on the same line or on the same column of the block.
- the invention also relates to a device for decoding a data signal representative of at least one image divided into blocks, comprising a processing circuit which, for a current block to be decoded, is arranged for:
- the decoding device is remarkable in that the processing circuit is arranged to reconstruct the current block by means of at least one modification of two data of the transformed data block, by an operation of linear combinations operating on the two data.
- Such a decoding device is particularly suitable for implementing the aforementioned decoding method.
- the invention also relates to a computer program comprising instructions for implementing one of the coding and decoding methods according to the invention, when it is executed on a computer.
- This 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 other form desirable shape.
- the invention also relates to a computer-readable recording medium on which a computer program is recorded, this program comprising instructions adapted to the implementation of one of the coding or decoding methods according to the invention. as described above.
- the invention also relates to a computer-readable recording medium on which a computer program is recorded, this program comprising instructions adapted to the implementation of the coding or decoding method according to the invention, as described. 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, a USB key, or a magnetic recording means, for example a hard disk.
- the 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.
- the recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the aforementioned coding or decoding method.
- FIG. 1 represents the steps of the coding method according to the invention
- FIG. 2 represents an embodiment of a coding device according to the invention
- FIG. 3 represents an example of a current block to be coded
- FIG. 4A represents a first type of data arrangement to be modified in the block of FIG. 3,
- FIG. 4B represents a second type of data arrangement to be modified in the block of FIG. 3,
- FIG. 4C represents a third type of data arrangement to be modified in the block of FIG. 3,
- FIG. 5 represents an embodiment of a decoding device according to the invention
- FIG. 6 represents the main steps of the decoding method according to the invention. Detailed description of the coding part
- the coding method according to the invention is for example implemented in a software or hardware way by modifications of an encoder initially conforming to the HEVC standard.
- the coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C7 as represented in FIG.
- the coding method according to the invention is implemented in a coding device CO represented in FIG.
- such an encoder device comprises: an input ENT_C to receive a current image to be encoded,
- processing circuit CT_C for implementing the coding method according to the invention, the processing circuit CT_C containing:
- an output SOR_C for delivering a signal or coded stream containing the data obtained at the end of the coding of the current image.
- PG_C are for example loaded in a RAM memory, MR_C, before being executed by the processing circuit CT_C.
- the coding method represented in FIG. 1 applies to any current image ICj which is fixed or part of a sequence of L images Id, ICj,..., I CL (1 ⁇ j ⁇ L) to be encoded.
- a current image ICj is partitioned into a plurality of blocks Bi, B 2 , B ,, ..., B F (1 ⁇ i ⁇ F), for example of size 4x4 pixels.
- Such a partitioning step is implemented by a partitioning device MP_C shown in FIG. 2, which device is controlled by the processor PROC_C.
- block means coding unit (coding unit). This latter terminology is used in the HEVC standard "ISO / I EC / 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 or macroblocks.
- Such a coding unit could, in a future standard, also group together sets of pixels having other geometric shapes.
- Said blocks B ; B 2 , B ,, ..., B F 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, then from top to bottom. Other types of course are of course possible. Thus, it is possible to cut the image ICj into several subimages called slices and to independently apply a division of this type on each sub-image. 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.
- Each block can also be divided into sub-blocks which are themselves subdividable.
- the coder CO selects as current block a first block to be coded B, of the image ICj, such as for example the first block B-.
- FIG. 3 An example of such a block is shown in Figure 3. It contains a number P pixels pi, p 2 , ..., pp, with P> 1.
- At least one modification of two data of the block B is carried out by an operation of linear combinations operating on said two data.
- the linear combination operation comprises calculating a first weighted sum and a second weighted sum each applied to said two data of the block B 1.
- Step C3 is implemented by a computing device CAL1 _C represented in FIG. 2, which device is controlled by the processor PROC_C.
- data means the pixels of the current block B 1.
- data are also understood to mean the pixels of a predicted block obtained by means of a prediction of the current block B, with respect to a predictor block which is selected following a call for competition.
- different prediction modes inter, intra or other predetermined, for example by minimizing a distortion rate criterion well known to those skilled in the art.
- the two data of block B on which the first weighted sum and the second weighted sum apply are, for example, the pixels p 7 and p 9 surrounded by a solid line circle.
- the two data of the current block B on which the first weighted sum and the second weighted sum apply are located on the same line of the current block B 1. These two data can be located next to each other or not.
- the two data of block B on which the first weighted sum and the second weighted sum apply are, for example, the pixels p 2 and p 4 surrounded by a solid circle.
- the two data of the current block B on which the first weighted sum and the second weighted sum apply are located on the same column of the current block B 1. These two data can be located next to each other or not.
- the two data of block B on which the first weighted sum and the second weighted sum apply are, for example, the pixels p 5 and pi 3 surrounded by a solid circle.
- the two weighting data used in the first weighted sum are equal in absolute value to the two weighting data used in the second weighted sum.
- the calculation of the first and second weighted sums uses a rotation matrix G z belonging to a set E M R comprising W rotation matrices Go, Gi,..., G z ,..., Gw-i where 0 ⁇ z ⁇ W-1 previously stored in the buffer MT_C of Figure 2.
- a rotation matrix G z considered in this set comprises M rows and N columns, with M> 1 and N> 1.
- a such rotation matrix is still called elementary rotation matrix or Givens matrix. It is expressed as follows:
- C and -S which are located on the same line m (1 ⁇ mi ⁇ M) of the matrix G z , represent the values of the weighting data of the first weighted sum
- This matrix differs from the identity matrix only for the following four values:
- the matrix G z can also be expressed in the form:
- C and S are scaled values of cosB and sinB and approximated to a near integer.
- the calculation of the first and second weighted sums uses the first rotation matrix G 0 of the aforementioned set E M R and applies the matrix G 0 to block B
- the current block B is vectorized.
- the matrix of pixels formed by the block B, as represented in FIG. 3 is vectorized so as to
- the calculation of the first and second weighted sums amounts to applying the aforementioned first rotation matrix G 0 to the current vector Bv, as below, which amounts to applying a rotation affecting the indices mi and m 2 of this vector:
- Such a calculation thus makes it possible to adapt the data of the current block B in the spatial domain before the following step C4 of application of a transform of separable type, as represented in FIG.
- the use of such a rotation matrix G 0 does not make the calculations too complex since they are actually implemented on only two pixels of the current block B ,, as shown in FIGS. 4A to 4C and induce two Linear combinations as expressed on the previous calculation.
- the calculation of the first and second weighted sums during this second modification uses the second rotation matrix G of the aforementioned set E M R and successively applies the matrix G 0. and Gi to the vectorized block BV Î so as to obtain a modified block
- the calculation of the first and second weighted sums during this z'e modification uses the z + 1 th rotation matrix G z of the set E M R supra and successively applies the matrix Go, Gi, ..., G z to the vectorized block Bv, so as to obtain a modified block GI * G 0 * BV Î.
- the computation of the first and second weighted sums during this W-1 th modification uses the W th rotation matrix Gw-i of the set E M R above and successively applies the matrix G 0 , Gi, ..., G z , ..., G W -i to the vectorized block Bv, so as to obtain a modified block - - * G z * ... * GI * G 0 * BV Î.
- the predetermined number W of rotation matrices to be used for modifying a current block B can be function, according to three possible options:
- each matrix is assigned to particular values of C and S (a particular angle value ⁇ in the preferred embodiment) and to a pair of data indices of vectorized block Bv ,.
- Some pairs of C and S values and / or some pairs of data indices of the vectorized block Bv, may be common to two or more rotation matrices.
- the number W of rotation matrices is determined before coding by a learning algorithm implemented on a plurality of vectorized blocks, so that the successive application of rotation matrices Gw-i * - - * Gz * G z -i * ... * G 2 * Gi * GB to the Bv blocks, to obtain a compromise - gain of coding GC W " VW rotation matrices G 0 to G W -i - which is optimal with respect to gain obtained with a KLT transform directly applied to the current block B ,.
- the coding gain GC w "1 i can be assimilated to the following quantity:
- K is the number of pixels of the autocorrelation matrix
- a separable transform is applied to the modified block B 2 .
- a separable transform is for example a DCT type transform, DST, DWT (abbreviation of "Discrete Wavelet Transform”) or type LT (abbreviation for "Lapped Transform”).
- a transformed data block BT 2 is obtained.
- a transform calculation device MTR_C as represented in FIG. 2, which device is controlled by the processor PROC_C.
- the data of the transformed block ⁇ ⁇ are quantized according to a conventional quantization operation, such as, for example, a scalar or vector quantization.
- a block B z q of quantized coefficients is then obtained.
- Step C5 is implemented by a quantization device MQ_C as represented in FIG. 2, which device is controlled by the processor PROC_C.
- step C6 the data of the block B z q, is 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.
- CABAC Context Adaptive Binary Arithmetic Coder
- Huffman type an entropy coding of arithmetic type or Huffman type.
- Step C6 is implemented by a coding device MC_C shown in FIG. 2, which device is controlled by the processor PROC_C.
- a signal or data stream ⁇ is constructed which contains the coded data of the current block B, obtained at the end of the aforementioned step C6.
- Step C7 is implemented by a data signal construction device MCF, as shown in FIG. 2, which device is controlled by the processor PROC_C.
- the data signal ⁇ is then delivered via the output SOR_C of the encoder
- Such a signal is either stored in the buffer MT_C of the coder CO of FIG. 2, or transmitted by a communication network
- the data signal ⁇ furthermore comprises certain information encoded by the coder CO, such as the type of prediction (Inter or Intra) that has possibly been applied, and if appropriate, the prediction mode selected. the index of the predictor block selected, the reference image index and the motion vector used in the mode Inter prediction, an ITR index associated with the separable transform applied during the aforementioned step C4.
- the type of prediction Inter or Intra
- the prediction mode selected.
- Class B is then decoded conventionally.
- a decoded block BDi is then obtained. It should be noted that the decoded block BD is the same as the decoded block obtained at the end of the image decoding process ICj which will be described later in the description.
- the decoded block BD is thus made available for use by the coder CO of FIG. 2.
- the current block B, to be coded, obtained at the end of partitioning step C1 of FIG. 1 and selected by the coder in step C2, is a 4x4 block such as that represented in FIG. figure 3.
- a prediction step it is conventionally carried out the selection of an Intra prediction mode among several available Intra prediction modes which, in a manner known per se, are each defined by a predetermined prediction direction.
- Intra prediction proposed in the HEVC standard there are thirty-five possible prediction modes DPI 0 , DPI- ⁇ , ..., DPI 34 , which amounts to determining thirty-five candidate predictor blocks available for the prediction of the current block B ,.
- the prediction step consists in selecting, from the candidate candidate predictor blocks, the candidate predictor block that minimizes a coding performance criterion performed in accordance with the method of FIG.
- a criterion is for example:
- This particular candidate block is called the optimal predictor block BP op t, which is therefore associated with an optimal Intra prediction direction, for example the direction DPI 0 .
- the difference between the current block B and the predictor block BP op t obtained is calculated so as to obtain a residual block Bn.
- the current residue block Bn comprises sixteen pixels.
- step C3 of FIG. 1 at least one modification of two data of the residual block Bn is carried out by a linear combination operation operating on said two data.
- the linear combination operation includes calculating a first weighted sum and a second weighted sum each applied to said two data of the residue block.
- the gain GC was calculated conventionally taking into account only the residue block Br ,.
- This gain is compared to the gain GC, calculated when a KLT type transform is applied to the residue block ⁇ .
- the gain GC is increased.
- the gain GC is optimized, according to a compromise satisfactory coding gain / number of rotation matrices used. To obtain this gain, thirty-six rotation matrices G 0 to G35 were applied to the vectorized residue block: first the matrix G 0 directly on the vectorized residue block Bn / j, then the matrix G1 on the modified residue block ⁇ ° ⁇ , ..., and finally the matrix G35 on the modified residual block B 34 n.
- the rotation matrices were applied only to pixels sharing the same row or column of the modified residue / residue block considered.
- the set E M R of rotation matrices stored in buffer memory MT_C of the coder CO of FIG. 2 is provisioned prior to coding by these thirty-six rotation matrices.
- G 0 to G 3 5- The latter are stored in association with the DST transform and / or with the Intra DP Io prediction direction, in the MT_C buffer of the CO encoder of FIG. 2.
- the rotation matrices G 0 to G 35 are also stored respectively in association with the indices m1, m2 of each of the two data of the modified residue / residue block that they affect.
- step C3 a modified residual block B 35 n, such that ⁇ 35 ⁇ is then obtained, where Brv, corresponds to the vecorated residue block in the form of a column matrix.
- step C4 of FIG. 1 application is made to the modified residual block Br 35 of the separable transform, examples of which have been given above. It is assumed in this example that the separable transform to be applied in step C4 is of type DST for its row and column matrices A1 and Ac.
- step C4 At the end of step C4 is obtained a transformed data block BT 35 ,.
- step C5 of FIG. 1 the data of the transformed block BT 35 is quantized.
- a block B 35 qi of quantized coefficients is then obtained.
- step C6 of FIG. 1 the data of block ⁇ 3 3 ⁇ 4 is encoded.
- step C7 of FIG. 1 the signal or data stream ⁇ which contains the coded data at the end of the aforementioned coding step C6 is constructed.
- the optimal predictor block BP opt is associated with an optimal Intra prediction direction which is for example the Intra DPI direction of prediction 34 .
- step C3 of FIG. 1 at least one modification of two data of the residue block ⁇ is carried out by a linear combination operation operating on said two data.
- the linear combination operation includes calculating a first weighted sum and a second weighted sum each applied to said two data of the residue block.
- the gain GC was calculated conventionally taking into account only the residue block ⁇ .
- This gain is compared to the gain GC, calculated when a KLT type transform is applied to the residue block Br.
- the gain GC is increased.
- the gain GC is optimized according to a satisfactory compromise coding gain / rotation number of dies used.
- one hundred and twenty-one rotation matrices G 0 to G-120 were applied to the vectorized residue block: first the matrix G 0 directly on the vectorized residue block Brv , then the matrix G 1 on the modified residue block ⁇ ° ⁇ , ..., and finally the matrix G 2 o on the modified residue block ⁇ 119 ⁇ .
- the set E M R of rotation matrices stored in buffer memory MT_C of the coder CO of FIG. 2 is provisioned before coding by these one hundred and twenty-two and a rotation matrix G 0 to Gi 2 0- These latter are stored in association with the DST transform and / or with the Intra DPI 34 prediction direction, in the MT_C buffer memory of the CO encoder of FIG. 2.
- the rotation matrices G 0 to G-120 are also stored respectively in association with indices m1, m2 of each of the two data of the modified residue / residue block that they affect.
- step C3 a modified residual block B 120 n, such that ⁇ 120 ⁇ i9 * Gi i 8 * ... * G 0 * BrVi is then obtained, where Brv, corresponds to the vecorated residue block in the form of a column matrix.
- step C4 of FIG. 1 application is made to the modified residue block Br 12 ° of the separable transform, examples of which have been given above. It is again assumed, in this example, that the separable transform to be applied in step C4 is of the DST type for its row and column matrices A1 and Ac.
- step C4 At the end of step C4 is obtained a transformed data block BT 12 °.
- step C5 of FIG. 1 the data of the transformed block BT 12 ° is quantized.
- a block B 120 qi of quantized coefficients is then obtained.
- step C6 of FIG. 1 the data of the block ⁇ 12 3 ⁇ 4 is encoded.
- step C7 of FIG. 1 the signal or data stream ⁇ which contains the coded data at the end of the aforementioned coding step C6 is constructed.
- the coding steps C1 to C7 of FIG. 1 are then implemented for each of the blocks Bi, B 2 , B ,,..., B F to be coded 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 D7 as represented in FIG. 6.
- the decoding method according to the invention is implemented in a decoding device or decoder DO represented in FIG.
- such a decoder device comprises: an input ENT_D for receiving the data signal or current flow ⁇ to be decoded,
- CT_D processing circuit for implementing the decoding method according to the invention, the CT_D processing circuit containing:
- an output SOR_D for delivering a reconstructed current image containing the data obtained at the end of the decoding according to the method of the invention.
- PG_D are for example loaded in a RAM memory, MR_D, before being executed by the processing circuit CT_D.
- the decoding method shown in FIG. 6 applies to a signal or data stream ⁇ 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 ⁇ received at the input ENT_D of the decoder DO and as delivered at the end of the coding method of FIG.
- the coded blocks associated with each of the blocks Bi, B 2 , B are determined in a manner known per se, in the signal ⁇ . ., B F previously coded according to the aforementioned lexicographic order.
- Such a determination step D1 is implemented by a flow analysis software identification module MI_D, as shown in FIG. 5, which module is controlled by the processor PROC_D.
- the blocks B ; B 2 , B ,, ..., B F to be decoded have a square shape and are, for example, 4x4 pixels in size.
- the decoder DO of FIG. 5 selects, as current block B, to be decoded, the first block which has been coded at the end of the coding method of FIG.
- step D3 a determination, for example by decoding, of the data associated with the current block B, to be decoded, which have been coded during the first step, is carried out in a manner known per se.
- step C6 of FIG. At the end of such a determination, a set of digital information associated with the quantized coefficient block B z q is obtained, which was obtained at the end of the quantization step C5 of FIG.
- step D3 information can be determined which is related to the prediction type of the current block B ,, if the latter has been predicted at the coding, and which has been written in the data signal ⁇ .
- Such prediction information is in particular the prediction mode selected at the coding and the index of the selected predictor block.
- step D3 the ITR index of the separable transform applied to step C4 of FIG. 1 is also determined in a manner known per se.
- Such a decoding step D3 is implemented by a decoding device MD_D shown in FIG. 5, which device is controlled by the processor PROC_D.
- step D4 the quantized coefficient block B z q i5 is dequantized according to a conventional dequantization operation which is the inverse operation of the quantization implemented during quantization step C5 of FIG.
- a set of current dequantized coefficients BD z q, is then obtained at the end of step D4.
- Such a dequantization step is for example of scalar or vector type.
- the step D4 is implemented by means of a device MQ "1 _D of inverse quantization, as represented in FIG. 5, which device is controlled by the processor PROC_D.
- a separable transform is applied to the current dequantized coefficient set BD z q, as obtained in the aforementioned step D4.
- a transform is an inverse transform from that applied to the coding at the end of step C4 of FIG. 1, such as, for example, a DCT, DST, DWT, LT or other transform.
- these separable transforms form part of a list of separable transforms LTS- 1 which is previously stored in the buffer MT_D of the decoder DO of FIG. 5.
- the type of separable transform to be applied is determined at the decoder by reading, in the data signal ⁇ , the index I T R of the separable transform applied to the coding during the aforementioned step C4 (FIG. 1).
- step D5 a decoded BD 2 modified block is obtained.
- Such an operation is performed by a device MTR "1 _D transform calculation, as shown in Figure 5, which device is controlled by the processor PROC_D.
- step D6 in accordance with the invention, at least one modification of two data of the decoded modified block BD 2 is performed by a linear combination operation operating on said two data of the block. modified decoded BD 2 .
- the linear combination operation comprises calculating a first weighted sum and a second weighted sum each applied to said two data of the decoded modified block BD 2 .
- a reconstructed BD block is obtained.
- Step D6 is implemented by a computing device CAL1 _D shown in FIG. 5, which device is controlled by the processor PROC_D.
- data are understood to mean the pixels of the decoded modified block BD 2 .
- data are also understood to mean the pixels of a modified decoded residue block in the case where a prediction of the current block B has been implemented at the coding.
- both modified block data decoded BD 2 on which apply the first weighted sum and the second sum are not located on the same line or column of the decoded BD 2 modified block.
- the two data of the decoded modified block BD 2 on which the first weighted sum and the second weighted sum apply are located on the same line of the decoded modified block BD 2 . These two data can be located next to each other or not.
- the two data of the decoded modified block BD 2 to which the first weighted sum and the second weighted sum apply are located on the same column of the decoded modified block BD 2 . These two data can be located next to each other or not.
- the two weighting data used in the first weighted sum are equal in absolute value to the two weighting data used in the second weighted sum.
- the computation of the first and second weighted sums uses a transpose of a rotation matrix G z belonging to a set E M R comprising W rotation matrices Go, Gi,. , G z , ... , Gw-i where 0 ⁇ z ⁇ W-1 previously stored in the buffer MT_D of Figure 5.
- a rotation matrix G z considered in this set comprises M rows and N columns, with M> 1 and N> 1.
- Such a transpose is expressed as follows:
- the transpose of the matrix G z can also be expressed in the form:
- the predetermined number W of rotation matrices to be used for modifying a current decoded modified block BD Z may be function, according to three possible options:
- each matrix is assigned to particular values of C and S (a particular angle value ⁇ in the preferred embodiment) and to a pair of data indices of the modified decoded vector block BD z v ,.
- Certain pairs of C and S values and / or certain pairs of data indices of the decoded vector block BD z v may be common to two or more rotation matrices.
- Such a step is implemented by an image reconstruction URI device as shown in FIG. 5, said device being controlled by the PROC_D processor.
- decoding steps D1 to D7 which have been described above are implemented for all blocks B; B 2 , B ,, ..., B F to decode the current image ICj considered, in a predetermined order which is for example the lexicographic order.
- the current block B to be decoded which is selected in step D2 of FIG. 6 is a 4x4 block.
- Block B, to be decoded has also been the subject of a prediction with respect to one of the thirty-five Intra predictions proposed in the HEVC standard, such as, for example, the direction of prediction DPI 0 .
- the decoding device MD_D decodes the residual data associated with the current block B, to be decoded, said residual data representing the difference between the block B and the predictor block BP op t selected at coding among the candidate predictor blocks.
- a set of digital information associated with a block ⁇ 3 3 ⁇ 4 of quantized coefficients is obtained.
- step D3 information is obtained relating to the prediction type of the current block B, as implemented in the coding, and which have been written in the data signal ⁇ .
- step D3 are determined:
- the prediction mode which has been selected at the coding for example the direction of prediction Intra DPI 0 ,
- step D4 of FIG. 6 the inverse quantization device MQ "1 _D of FIG. 5 performs a dequantization of the quantized coefficient block ⁇ 3 3 ⁇ 4 A set of current dequantized coefficients BD 35 qi is then obtained at the end of step D4.
- step D5 of FIG. 6 the transform calculation MTR device "1 _D of FIG. 5 applies the DST transform " 1 to the set of dequantized coefficients current ⁇ 3 3 ⁇ 4. which is the inverse transform of the DST transform associated with the index I T R decoded in step D3 for the columns and the lines.
- step D5 a decoded modified residue block BD 35 n is obtained.
- step D6 of FIG. 6 thirty-six modifications of two data of the modified residue block are made. decoded BD 35 n, each of these modifications being like calculating a first weighted sum and a second weighted sum of two corresponding data of the decoded modified residual block BD 35 n.
- the computing device CAL1_D searches, in the buffer MT_D of the decoder DO of FIG. 5, the thirty-six rotation matrices Go, Gi,..., G35 of the set E M R which have been previously stored in the MT_D buffer of FIG. 5, in association with the DS 1 transform and / or the intra DPI 0 prediction direction, and then directly applies to the decoded modified residue block BD 35 n the transpose of each of the thirty-six matrices in the following order Gss'-. -Gi f Go 1 .
- step D6 a decoded residue block BDn is then obtained.
- the rotation matrices G 0 to G 35 are all applied only to pixels sharing the same row or the same column of the decoded residue block BD n.
- the predictive decoding of the current block to be decoded is conventionally carried out using the index IBP op t of the predictor block that has been decoded during step D3. supra.
- the predictor block BP op associated with the index IBP op t is selected in the buffer memory MT_D of the decoder DO of FIG. 5.
- the current block B is reconstructed by adding to the decoded residue block BDn, obtained at the end of the above-mentioned step D6, the predictor block BP op. t that was obtained at the end of the previous step.
- a reconstructed current block BD is then obtained.
- step D7 of FIG. 6 the image reconstruction URI device of FIG. 5 writes the current reconstructed block BD in a decoded image ID j .
- decoding steps D1 to D7 of FIG. 6 are implemented for all the blocks B ; B 2 , B ,, ..., B F to decode the current image IC j considered, in a predetermined order which is for example the lexicographic order.
- the latter is distinguished from the first example by the fact that the block B, to be decoded has also been a prediction with respect to another direction of prediction as prediction direction 0 DPI. In this second example, it is the direction of prediction DPI 34 .
- the decoding device MD_D decodes the residual data associated with the current block B, to be decoded, said residual data representing the difference between the block B and the selected BP opt prediction block at the coding among the candidate predictor blocks.
- a set of digital information associated with a block ⁇ 12 3 ⁇ 4 of quantized coefficients is obtained.
- step D3 information is obtained relating to the prediction type of the current block B, as implemented in the coding, and which have been written in the data signal ⁇ .
- step D3 are determined:
- the prediction mode which has been selected for the coding for example the direction of prediction Intra DPI 34 ,
- IBP opt the index of the BP opt predictor block
- step D4 of FIG. 6 the inverse quantization device MQ "1- D of FIG. 5 performs a dequantization of the quantized coefficient block ⁇ 12 3 ⁇ 4 A set of dequantized coefficients current BD 120 qi is then obtained at the end of step D4.
- step D5 of FIG. 6 the transform calculation MTR device " 1_D of FIG. 5 applies the dequantized current set BD 120 qi of the transform DST " 1 to the dequantized current set BD 120 qi. which is the inverse transform of the DST transform associated with the ITR index decoded at step D3 for the columns and the rows.
- a decoded modified residue block ⁇ 120 ⁇ is obtained.
- step D6 of FIG. 6 there are proceeded to one hundred and twenty-one modifications of two data of the decoded modified residual block BD 120 n, each of these modifications being equivalent to calculating a first weighted sum and a second weighted sum of two corresponding data of the decoded modified residual block BD 120 n.
- the computing device CAL1_D searches, in the buffer memory MT_D of the decoder DO of FIG. 5, the one hundred and twenty-one rotation matrices Go, Gi, ..., G 120 of the set E M R which have previously been stored in the MT_D buffer of FIG. 5, in association with the DST transform 1 and / or the intra-DPI prediction direction 34 , and then apply directly to the decoded modified residue block BD 120 n the transpose of each of the one hundred and twenty-one matrices in the following order G ⁇ o'-. -Gi f Go 1 .
- step D6 a decoded residue block BDn is then obtained.
- the predictive decoding of the current block to be decoded is conventionally carried out using the IBP index opt of the predictor block that has been decoded during the aforementioned step D3.
- the BP opt predictor block associated with the IBP index opt is selected in the buffer MT_D of the decoder DO of FIG. 5.
- the current block B is reconstructed by adding to the decoded residue block BDn, obtained at the end of the aforementioned step D6, the BP predictor block opt. which was obtained at the end of the previous step.
- a reconstructed current block BD is then obtained.
- step D7 of FIG. 6 the image reconstruction URI device of FIG. 5 writes the current reconstructed block BD in a decoded image I Dj.
- decoding steps D1 to D7 of FIG. 6 are implemented for all the blocks B ; B 2 , B ,, ..., B F to decode 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)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
L'invention concerne un procédé de codage d'au moins une image (ICj) découpée en blocs, caractérisé en ce que, pour un bloc courant (Bi) à coder de ladite image, le procédé met en œuvre ce qui suit : - au moins une modification (C3) de deux données du bloc par une opération de combinaisons linéaires opérant sur lesdites deux données, à l'issue de laquelle est obtenu un bloc modifié, - application (C4) aux données du bloc modifié d'une opération de transformée séparable, - codage (C6) des données obtenues à la suite de l'application de ladite opération de transformée séparable.
Description
PROCÉDÉ DE CODAGE ET DE DÉCODAGE D'IMAGES, DISPOSITIF DE CODAGE ET DE DECODAGE D'IMAGES ET PROGRAMMES
D'ORDINATEUR CORRESPONDANTS Domaine de l'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.
Le codage/décodage d'images numériques s'applique notamment à des images issues d'au moins une séquence vidéo comprenant :
- des images issues d'une même caméra et se succédant temporellement (codage/décodage de type 2D),
- des images issues de différentes caméras orientées selon des vues différentes (codage/décodage de type 3D),
- des composantes de texture et de profondeur correspondantes
(codage/décodage de type 3D),
- etc ..
La présente invention s'applique de manière similaire au codage/décodage d'images de type 2D ou 3D.
L'invention peut notamment, mais non exclusivement, s'appliquer 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), et au décodage correspondant. Art antérieur
Les codeurs vidéo actuels (MPEG, H.264, HEVC, ...) utilisent une représentation par blocs de la séquence vidéo. Les images sont découpées en blocs, lesquels sont susceptibles d'être redécoupés de façon récursive. Puis chaque bloc est codé par prédiction intra-images ou inter-images. Ainsi, certaines images sont codées par prédiction spatiale (prédiction Intra), d'autres images sont également codées par prédiction temporelle (prédiction Inter) par rapport à une ou plusieurs images de référence codées-décodées, à l'aide d'une compensation en mouvement connue par l'homme de l'art.
Pour chaque bloc est codé un bloc résidu, encore appelé résidu de
prédiction, correspondant au bloc original diminué d'une prédiction. Les blocs résidus sont transformés à l'aide d'une opération mathématique de transformée, puis quantifiés à l'aide d'une opération mathématique de quantification par exemple de type scalaire. Dans un souci de simplification, l'opération mathématique de transformée sera appelée par la suite 'transformée' et l'opération mathématique de quantification sera appelée par la suite 'quantification'. Une liste monodimensionnelle de coefficients est obtenue à l'issue de la quantification.
Les coefficients de cette liste sont alors codés sous forme de bits par un codage entropique dont le but est de coder les coefficients sans perte.
Les bits obtenus après codage entropique sont inscrits dans un signal ou flux de données qui est destiné à être transmis au décodeur.
De façon connue en soi, un tel signal comprend :
- les coefficients quantifiés contenus dans la liste précitée,
- des informations représentatives du mode de codage utilisé, en particulier:
• le mode 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 »)) ;
• des informations précisant le type de prédiction (orientation, image de référence, ...) ;
• le type de découpage du bloc ;
• les informations de mouvement si nécessaire ;
· etc.
Une fois que le flux 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 flux sont lus. La quantification inverse, l'opération de parcours inverse, et la transformée inverse des coefficients des blocs sont effectuées pour produire le résidu de prédiction décodé. Puis, la prédiction du bloc est calculée et le bloc est reconstruit en ajoutant la prédiction au résidu de prédiction décodé.
La technique de codage/décodage classique qui vient d'être décrite permet certes des améliorations des performances de codage. Selon le contexte vidéo, elle permet notamment :
- une amélioration de la qualité des images pour un débit donné du réseau utilisé pour transmettre les images,
- un réduction du débit de transmission des images pour un critère de qualité d'images préalablement fixé.
Dans le domaine du codage vidéo, les transformées en cosinus discrète, DCT (abréviation anglaise de « Discrète Cosine Transform »), ou les transformées en sinus discrète, DST (abréviation anglaise de « Discrète Sine Transform »), sont généralement privilégiées, notamment pour les raisons suivantes :
- ce sont des transformées bloc et il est ainsi facile de manipuler les blocs indépendamment les uns des autres,
- elles sont efficaces pour compacter l'information dans le domaine fréquentiel, là où l'opération de réduction de débit opère,
- elles disposent de méthodes d'implémentation rapides qui requièrent de l'ordre de M*log2(M) opérations.
Les transformées DCT ou DST précitées sont de type séparables.
Une transformée séparable peut s'appliquer selon deux cas différents.
Selon un premier cas, il est procédé à l'application d'une première transformée Al à un bloc résidu x de K pixels qui sont organisés sous forme d'une matrice MxN, où Al est une matrice de données de taille MxM et M, N sont des entiers naturels supérieurs ou égaux à 1 . A l'issue de l'application de cette première transformée est obtenu un premier bloc transformé Al.x.
Une opération de transposition t est ensuite appliquée sur le bloc transformé Al.x. A l'issue de cette transposition est obtenu un bloc transposé (Al.x)f.
Enfin, une deuxième transformée Ac est appliquée sur le bloc transposé (Al.x)f, où Ac est une matrice de données de taille NxN. A l'issue de l'application de cette deuxième transformée est obtenu un deuxième bloc transformé X de K=NxM pixels, tel que :
X = Ac - (Al - xY
Selon un deuxième cas, l'ordre d'application des transformées Al et Ac est inversé. Le deuxième bloc transformé X de K=NxM pixels s'écrit alors de la façon suivante :
X = Al - {Ac - xt)t
Le bloc transformé X obtenu selon ce deuxième cas est similaire au bloc transformé X obtenu selon le premier cas, à une transposition près.
Dans le cas particulier où le bloc résidu x est carré, c'est-à-dire M=N, les matrices Al et Ac ont la même taille.
Au décodage, de façon connue en soi, sont appliquées des transformées inverses de celles mentionnées ci-dessus.
Ainsi, si la transformée a été appliquée selon le premier cas, la transformée inverse correspondante permet d'obtenir le bloc résidu x à l'aide du calcul suivant :
Ainsi, si la transformée a été appliquée selon le deuxième cas, la transformée inverse correspondante permet d'obtenir le bloc résidu x à l'aide du calcul suivant : x = (Ac-1 ■ (Ai^ - xyy
AI"1 et Ac"1 représentent les transformées inverses respectives des transformées Al et Ac. Elles permettent d'obtenir les valeurs du bloc résidu x à partir des valeurs du bloc transformé X. Les matrices AI"1 et Ac"1 sont appelées communément matrices inverses de Al et Ac respectivement. Dans le cas où les matrices sont choisies orthogonales elles correspondent aux matrices transposées de Al et Ac respectivement.
Outre les transformées de type séparable, il existe également des transformées de type non séparable, telles que par exemple la transformée de Karhunen-Loeve (KLT) qui est considérée comme fournissant une décorrélation optimale des données d'un bloc considéré. Les transformées non séparables ont pour avantage de pouvoir exploiter des corrélations entre n'importe quelle
paire (ou plus) de données à l'intérieur d'un bloc considéré, à la différence des transformées de type séparable qui peuvent seulement exploiter les corrélations entre données partageant soit la même ligne, soit la même colonne d'un bloc considéré au travers des transformées Al et Ac qui agissent de façon indépendante. Une telle différence rend les transformées de type non séparable plus performantes que les transformées séparables, en particulier du point de vue de la compression de l'énergie et des performances de codage. En revanche, les transformées non séparables sont très complexes, ce qui les rend difficiles à implémenter dans les codeurs vidéo actuels. C'est la raison pour laquelle les transformées de type DCT ou DST restent actuellement privilégiées, d'autant plus qu'elles peuvent dans certains cas particuliers constituer une bonne approximation de la transformée KLT.
Une transformée de type non séparable s'écrit mathématiquement au codage comme la multiplication du bloc résidu x, mis sous la forme d'un vecteur de dimension 1 xK, par une matrice A de taille KxK. Le bloc transformé X obtenu à l'issue de l'application de cette transformée s'écrit alors de la façon suivante :
X = A - x
Au décodage, la transformée inverse consiste à multiplier le bloc transformé X par la matrice inverse A"1 de A qui peut être la transposée de A, lorsque A est orthogonale. Une telle transformée inverse permet d'obtenir le bloc résidu x suivant :
x = A~1 - X
Malgré l'utilisation courante des transformées de type DCT et DST dans les codeurs du marché, il est considéré que les performances de codage ne sont actuellement pas optimisées et ont vocation à encore être améliorées, en particulier du point de vue de la minimisation du coût débit/distorsion qui est un critère bien connu de l'homme du métier.
Objet et résumé de l'invention
Un des buts de l'invention est de remédier à des inconvénients de l'état de la technique précité.
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.
Un tel procédé de codage est remarquable en ce que, pour un bloc courant à coder de l'image, il met en œuvre ce qui suit :
- au moins une modification de deux données du bloc par une opération de combinaisons linéaires opérant sur les deux données, à l'issue de laquelle est obtenu un bloc modifié,
- application aux données du bloc modifié d'une opération de transformée séparable,
- codage des données obtenues à la suite de l'application de l'opération de transformée séparable.
Une telle disposition permet d'obtenir, moyennant une transformée séparable telle qu'utilisée classiquement dans les normes de codage/décodage actuelles et à venir, un gain en codage amélioré s'approchant de celui obtenu en appliquant directement aux données du bloc une opération de transformée de type KLT, qui est quant à elle non séparable et nécessite de ce fait un nombre de calculs élevé sur les données du bloc.
En outre, le gain amélioré selon l'invention est obtenu moyennant une faible complexité calculatoire, grâce au fait que l'opération de combinaisons linéaires s'applique seulement sur certaines données du bloc, préalablement à l'application de l'opération de transformée séparable. Une telle modification permet avantageusement d'adapter les données du bloc dans le domaine spatial, de telle façon que lors de l'application d'une opération de transformée de type séparable aux données du bloc modifié, le gain en codage des données du bloc soit amélioré.
Une telle transformée séparable peut être du type trigonométrique, telle que par exemple une transformée DCT, DST ou bien du type non trigonométrique, telle que par exemple une transformée du type RDOT (Rate- Distorsion Optimized Transform), de Hadamard, etc....
Selon un mode de réalisation particulier, l'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée des deux données du bloc, les deux données de pondération utilisées dans la première somme pondérée étant égales en valeur
absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
Une telle disposition permet avantageusement de conserver, une fois la modification des données du bloc effectuée, l'énergie du bloc qui a été obtenue avant cette modification.
Selon un autre mode de réalisation particulier, les deux données du bloc sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée, ne sont situées ni sur la même ligne, ni sur la même colonne du bloc.
Une telle disposition permet d'obtenir le meilleur compromis entre une amélioration significative du gain en codage et une faible complexité de calculs sur les données du bloc.
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 codage tel que défini ci-dessus.
L'invention concerne également un dispositif de codage d'au moins une image découpée en blocs.
Le dispositif de codage selon l'invention est remarquable en ce qu'il comprend un circuit de traitement qui est agencé pour :
- modifier au moins une fois deux données du bloc par une opération de combinaisons linéaires opérant sur les deux données, à l'issue de laquelle est obtenu un bloc modifié,
- appliquer aux données du bloc modifié une opération de transformée séparable,
- coder les données obtenues à la suite de l'application de l'opération de transformée séparable.
Un tel dispositif de codage est notamment apte à mettre en œuvre le procédé de codage précité.
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, ce qui suit :
- détermination, dans le signal de données, d'un bloc de données codées associé au bloc courant à décoder,
- application d'une opération de transformée séparable aux données codées du bloc déterminé, à l'issue de laquelle est obtenu un bloc de données transformé.
Un tel procédé de décodage est remarquable en ce qu'il met en œuvre une reconstruction du bloc courant au moyen d'au moins une modification de deux données du bloc de données transformé, par une opération de combinaisons linéaires opérant sur les deux données.
Selon un mode de réalisation particulier, l'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée des deux données du bloc de données transformé, les deux données de pondération utilisées dans la première somme pondérée étant égales en valeur absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
Selon un autre mode de réalisation particulier, les deux données du bloc de données transformé sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée, ne sont situées ni sur la même ligne, ni sur la même colonne du bloc.
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.
L'invention concerne également un dispositif de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, comprenant un circuit de traitement qui, pour un bloc courant à décoder, est agencé pour :
- déterminer, dans le signal de données, un bloc de données codées associé au bloc courant à décoder,
- appliquer une opération de transformée séparable aux données codées du bloc déterminé, à l'issue de laquelle est obtenu un bloc de données transformé.
Le dispositif de décodage selon l'invention est remarquable en ce que le circuit de traitement est agencé pour reconstruire le bloc courant au moyen d'au moins une modification de deux données du bloc de données transformé, par une opération de combinaisons linéaires opérant sur les deux données.
Un tel dispositif de décodage est notamment apte à mettre en œuvre le procédé de décodage précité.
L'invention concerne encore un programme d'ordinateur comportant des instructions pour mettre en œuvre l'un des procédés de codage et de décodage selon l'invention, lorsqu'il est exécuté sur un ordinateur.
Ce 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.
L'invention vise également un support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre de l'un des procédés de codage ou de décodage selon l'invention, tels que décrits ci-dessus.
L'invention vise également un support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre du procédé de codage ou de décodage selon l'invention, tels que décrits ci-dessus.
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, une clé USB, ou un moyen d'enregistrement magnétique, par exemple un disque dur.
D'autre part, le 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.
Alternativement, le support d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé de codage ou de décodage précité.
Brève description des dessins
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 l'invention,
- la figure 2 représente un mode de réalisation d'un dispositif de codage selon l'invention,
- la figure 3 représente un exemple de bloc courant à coder,
- la figure 4A représente un premier type d'agencement de données à modifier dans le bloc de la figure 3,
- la figure 4B représente un deuxième type d'agencement de données à modifier dans le bloc de la figure 3,
- la figure 4C représente un troisième type d'agencement de données à modifier dans le bloc de la figure 3,
- la figure 5 représente un mode de réalisation d'un dispositif de décodage selon l'invention,
- la figure 6 représente les principales étapes du procédé de décodage selon l'invention. Description détaillée de la partie codage
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 conforme par exemple à la norme HEVC.
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 codeur initialement conforme à la norme HEVC. Le procédé de codage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes C1 à C7 telles que représentées à la figure 1 .
Selon le mode de réalisation de l'invention, le procédé de codage selon l'invention est implémenté dans un dispositif de codage CO représenté à la figure 2.
Comme illustré en figure 2, un tel dispositif codeur comprend :
- une entrée ENT_C pour recevoir une image courante à coder,
- un circuit de traitement CT_C pour mettre en œuvre le procédé de codage selon l'invention, le circuit de traitement CT_C contenant :
• une mémoire MEM_C comprenant une mémoire tampon MT_C,
• un processeur PROC_C piloté par un programme d'ordinateur PG_C,
- une sortie SOR_C pour délivrer un signal ou flux codé contenant les données obtenues à l'issue du codage de l'image courante.
A l'initialisation, les instructions de code du programme d'ordinateur
PG_C sont par exemple chargées dans une mémoire RAM, MR_C, avant d'être exécutées par le circuit de traitement CT_C.
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 ld , ICj, ... , I CL (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, au partitionnement d'une image courante ICj en une pluralité de blocs B-i , B2, B,, ..., BF (1 <i≤F), par exemple de taille 4x4 pixels. Une telle étape de partitionnement est mise en œuvre par un dispositif de partitionnement MP_C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.
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/I EC/23008-2 Recommandation 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 ou macroblocs.
Une telle unité de codage pourrait, dans une norme future, regrouper également des ensembles de pixels présentant d'autres formes géométriques.
Lesdits blocs B ; B2, B,, ... , BF 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, puis du haut vers le bas.
D'autres types de parcours sont bien sûr possibles. Ainsi, il est possible de découper l'image ICj en plusieurs sous-images appelées slices et d'appliquer indépendamment un découpage 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.
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 B, de l'image ICj, tel que par exemple le premier bloc B-, .
Un exemple d'un tel bloc est représenté sur la figure 3. Il contient un nombre P de pixels pi , p2, ... , pp, avec P>1 .
Dans l'exemple représenté sur la figure 3, P=1 6.
Conformément à l'invention, au cours d'une étape C3 représentée à la figure 1 , il est procédé à au moins une modification de deux données du bloc B, par une opération de combinaisons linéaires opérant sur lesdites deux données. L'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée appliquées chacune sur lesdites deux données du bloc B,.
A l'issue de l'étape C3, est obtenu un bloc modifié B L'étape C3 est mise en œuvre par un dispositif de calcul CAL1 _C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.
Dans l'exemple décrit ici, on entend par données, les pixels du bloc courant B,.
Il convient toutefois de noter qu'on entend également par données, les pixels d'un bloc prédit obtenu à l'aide d'une prédiction du bloc courant B, par rapport à un bloc prédicteur qui est sélectionné suite à une mise en compétition de différents modes de prédiction inter, intra ou autres prédéterminés, par exemple par minimisation d'un critère débit distorsion bien connu de l'homme du métier.
Selon un premier exemple préférentiel tel que représenté sur la figure 4A, les au moins deux données du bloc B, sur lesquelles s'appliquent la
première somme pondérée et la deuxième somme pondérée ne sont situées ni sur la même ligne, ni sur la même colonne du bloc courant B,.
Dans l'exemple représenté sur la figure 4A, les deux données du bloc B, sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont par exemple les pixels p7 et p9 entourés par un cercle en trait plein.
Selon un deuxième exemple tel que représenté sur la figure 4B, les deux données du bloc courant B, sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont situées sur une même ligne du bloc courant B,. Ces deux données peuvent être situées l'une à côté de l'autre ou non.
Dans l'exemple représenté sur la figure 4B, les deux données du bloc B, sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont par exemple les pixels p2 et p4 entourés par un cercle en trait plein.
Selon un troisième exemple tel que représenté sur la figure 4C, les deux données du bloc courant B, sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont situées sur une même colonne du bloc courant B,. Ces deux données peuvent être situées l'une à côté de l'autre ou non.
Dans l'exemple représenté sur la figure 4C, les deux données du bloc B, sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont par exemple les pixels p5 et pi3 entourés par un cercle en trait plein.
Conformément à l'invention, les deux données de pondération utilisées dans la première somme pondérée sont égales en valeur absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
Le calcul des première et deuxième sommes pondérées utilise une matrice de rotation Gz appartenant à un ensemble EMR comprenant W matrices de rotation Go, G-i, ..., Gz, ..., Gw-i où 0<z<W-1 préalablement stockées dans la mémoire tampon MT_C de la figure 2. Une matrice de rotation Gz considérée dans cet ensemble comprend M lignes et N colonnes, avec M>1 et N>1 . Une
telle matrice de rotation est encore appelée matrice de rotation élémentaire ou matrice Givens. Elle s'exprime de la façon suivante :
où :
- C et -S, qui sont situées sur une même ligne m (1 <m-i≤M) de la matrice Gz, représentent les valeurs des données de pondération de la première somme pondérée, et
- S et C qui sont situées également sur une même ligne m2 (1 <m2≤M) de la matrice Gz, représentent les valeurs des données de pondération de la deuxième somme pondérée.
Cette matrice ne diffère de la matrice identité que pour les quatre valeurs suivantes:
- les deux valeurs C situées sur la diagonale en ligne m et m2,
- et les deux valeurs égales en valeur absolue à S situées aux coordonnées respectives (m-i ,m2) et (m2,m-i ) dans la matrice Gz.
La matrice Gz peut également s'exprimer sous la forme :
Dans un mode de réalisation préféré de l'invention, C=cos9 et S=sin9, où Θ est l'angle des cosinus et sinus de la matrice de rotation Gz, avec Θ une valeur angulaire à nombre réel.
Dans un autre mode de réalisation, C et S sont des valeurs mises à échelles de cosB et sinB et approximées à un entier proche. Dans ce cas, C*C+S*S sera compris entre SC*(SC-sqrt(2)) et SC*(SC+sqrt(2)), avec C et S valant approximativement C=SC*cos9 et S=SC*sin9.
Si une seule modification de deux données du bloc B, est mise en œuvre, le calcul des première et deuxième sommes pondérées utilise la première matrice de rotation G0 de l'ensemble EMR précité et applique la matrice G0 au
bloc B|. Afin de mettre en œuvre le calcul des première et deuxième sommes pondérées, le bloc courant B, est vectorisé. A cet effet la matrice de pixels formée par le bloc B, tel que représenté sur la figure 3 est vectorisé de façon à
obtenir un vecteur
Le calcul des première et deuxième sommes pondérées revient à appliquer la première matrice de rotation G0 précitée au vecteur courant Bv, comme ci-dessous, ce qui revient à appliquer une rotation affectant les indices mi et m2 de ce vecteur :
Le bloc modifié B° est alors obtenu sous la forme suivante:
Un tel calcul permet ainsi d'adapter les données du bloc courant B, dans le domaine spatial avant l'étape suivante C4 d'application d'une transformée de type séparable, telle que représentée sur la figure 1 .
L'utilisation d'une telle matrice de rotation G0 ne rend pas les calculs trop complexes puisqu'ils ne sont réellement mis en œuvre que sur seulement deux pixels du bloc courant B,, comme représenté sur les figures 4A à 4C et induisent deux combinaisons linéaires comme exprimé sur le calcul précédent.
Si une deuxième modification de deux données du bloc B, est mise en œuvre, le calcul des première et deuxième sommes pondérées durant cette deuxième modification utilise la deuxième matrice de rotation G de l'ensemble EMR précité et applique successivement les matrice G0 et Gi au bloc vectorisé BVÎ de façon à obtenir un bloc modifié
Si une z'eme modification de deux données du bloc Bj est mise en œuvre, le calcul des première et deuxième sommes pondérées durant cette z'eme modification utilise la z+1 eme matrice de rotation Gz de l'ensemble EMR précité et applique successivement les matrice Go, Gi, ...,Gz au bloc vectorisé Bv, de façon à obtenir un bloc modifié
GI *G0*BVÎ.
Si une W-1 eme modification de deux données du bloc B, est mise en œuvre, le calcul des première et deuxième sommes pondérées durant cette W- 1 eme modification utilise la Weme matrice de rotation Gw-i de l'ensemble EMR précité et applique successivement les matrice G0, Gi, ...,Gz,..., GW-i au bloc vectorisé Bv, de façon à obtenir un bloc modifié
- -*Gz *...* GI*G0*BVÎ.
Le nombre prédéterminé W de matrices de rotation à utiliser pour modifier un bloc courant B, peut être fonction, selon trois options possibles :
- soit du type de transformée séparable à appliquer à l'étape suivante C4,
- soit du mode de prédiction sélectionné dans le cas où le bloc courant B, est prédit,
- soit à la fois du type de transformée séparable et du mode de prédiction sélectionné.
Dans l'ensemble EMR de W matrices de rotation, chaque matrice est affectée à des valeurs de C et S particulières (une valeur d'angle Θ particulière dans le mode de réalisation préféré) et à une paire d'indices de données du bloc vectorisé Bv,. Certaines paires de valeurs C et S et/ou certaines paires
d'indices de données du bloc vectorisé Bv, peuvent être communes à deux matrices de rotation ou plus.
Le nombre W de matrices de rotation est déterminé préalablement au codage par un algorithme d'apprentissage mis en œuvre sur une pluralité de blocs vectorisés, de telle façon que l'application successive de matrices de rotation Gw-i*-- -*Gz*Gz-i*...*G2 *Gi*Go aux blocs Bv, permette d'obtenir un compromis - gain de codage GCW"V W matrices de rotation G0 à GW-i - qui soit optimal par rapport au gain obtenu avec une transformée KLT directement appliquée sur le bloc courant B,.
Le gain de codage GCw"1i peut s'assimiler à la quantité suivante :
ou :
- Λ(Ϊ, 0 =
Z ... GiG0Bv )t représente la matrice d'autocorrélation du nombre F de blocs modifiés Bw"1 ; DW-1 DW-1 DW-1
D 2, . . . , D j,..., D FJ
- ((GW GZ ... GiGoBvif est la transposée de ÇGW→ ... GZ ... G1 G0BV ),
- K est le nombre de pixels de la matrice d'autocorrélation
R(U).
Au cours de l'étape C4 de la figure 1 , pour un bloc modifié B2 considéré, il est procédé à l'application d'une transformée séparable au bloc modifié B2,. De façon connue en soi, en fonction du contexte ou de la norme de codage utilisée, une telle transformée séparable est par exemple une transformée de type DCT, DST, de type DWT (abréviation anglaise de « Discrète Wavelet Transform ») ou encore de type LT (abréviation anglaise de « Lapped Transform »). Ces transformées font partie d'une liste de transformées séparables LTS qui est stockée préalablement dans la mémoire tampon MT_C du codeur CO de la figure 2.
A l'issue de l'étape C4 est obtenu un bloc de données transformé BT2. Une telle opération est effectuée par un dispositif MTR_C de calcul de transformée, tel que représenté figure 2, lequel dispositif est piloté par le processeur PROC_C.
Au cours d'une étape C5 représentée à la figure 1 , il est procédé à la quantification des données du bloc transformé ΒΤΖ, selon une opération classique de quantification, telle que par exemple une quantification scalaire ou vectorielle. Un bloc Bzq, de coefficients quantifiés est alors obtenu.
L'étape C5 est mise en œuvre par un dispositif de quantification MQ_C tel que représenté à la figure 2, lequel dispositif est piloté par le processeur PROC_C.
De façon connue en soi, au cours d'une étape C6 représentée sur la figure 1 , il est procédé au codage des données du bloc Bzq,. 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. A l'issue de l'étape C6 sont obtenues des données codées associées au bloc courant B,.
L'étape C6 est mise en œuvre par un dispositif de codage MC_C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.
Au cours d'une étape C7 représentée à la figure 1 , il est procédé à la construction d'un signal ou flux de données φ qui contient les données codées du bloc courant B, obtenues à l'issue de l'étape C6 précitée.
L'étape C7 est mise en œuvre par un dispositif MCF de construction de signal de données, tel que représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.
Le signal de données φ est ensuite délivré via la sortie SOR_C du codeur
CO de la figure 2. Un tel signal est soit stocké dans la mémoire tampon MT_C du codeur CO de la figure 2, soit transmis par un réseau de communication
(non représenté) à un terminal distant. Celui-ci comporte le décodeur DO représenté à la figure 5.
De façon connue en soi, le signal de données φ comprend en outre certaines informations encodées par le codeur CO, telles que le type de prédiction (Inter ou Intra) qui a été éventuellement appliqué, et le cas échéant, le mode de prédiction sélectionné, l'index du bloc prédicteur sélectionné, l'indice d'image de référence et le vecteur de mouvement utilisés dans le mode
de prédiction Inter, un index ITR associé à la transformée séparable appliquée au cours de l'étape C4 précitée.
Il est ensuite procédé classiquement au décodage du bloc B,. Un bloc décodé BDi est alors obtenu. Il est à noter que le bloc décodé BD, 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é BD, est ainsi rendu disponible pour être utilisé par le codeur CO de la figure 2.
Les étapes de codage C1 à C7 qui viennent d'être décrites ci-dessus sont ensuite mises en œuvre pour chacun des blocs B-i , B2, B,, ..., BF à coder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
On va maintenant décrire ci-dessous deux exemples de réalisation de l'invention dans le cas d'un codage HEVC mettant en œuvre une prédiction de type Intra.
Conformément au premier exemple, le bloc courant B, à coder, obtenu à l'issue de l'étape de partitionnement C1 de la figure 1 et sélectionné par le codeur à l'étape C2, est un bloc 4x4 tel que celui représenté à la figure 3.
Au cours d'une étape de prédiction non représentée, il est procédé classiquement à la sélection d'un mode de prédiction Intra parmi plusieurs modes de prédiction Intra disponibles qui, de façon connue en soi, sont définis chacun par une direction de prédiction prédéterminée. Dans le cas de la prédiction Intra proposée dans le standard HEVC, il existe trente-cinq modes de prédiction possibles DPI0, DPI-ι , ... , DPI34, ce qui revient à déterminer trente-cinq blocs prédicteurs candidats disponibles pour la prédiction du bloc courant B,. L'étape de prédiction consiste à sélectionner, parmi les blocs prédicteurs candidats disponibles, le bloc prédicteur candidat qui minimise un critère de performance de codage réalisé conformément au procédé de la figure 1 . Un tel critère est par exemple:
- le compromis débit-distorsion calculé entre le bloc courant B, et chacun desdits blocs prédicteurs candidats disponibles,
- ou la somme des valeurs absolues des différences entre le bloc courant Bi et chacun desdits blocs prédicteurs candidats disponibles.
Ce bloc candidat particulier est appelé bloc prédicteur optimal BPopt, lequel est donc associé à une direction de prédiction Intra optimale, par exemple la direction DPI0.
Au cours d'une étape suivante non représentée, il est procédé au calcul de la différence entre le bloc courant B, et le bloc prédicteur BPopt obtenu de manière à obtenir un bloc résidu Bn. Le bloc résidu courant Bn comprend seize pixels.
Au cours de l'étape C3 de la figure 1 , il est procédé à au moins une modification de deux données du bloc résidu Bn par une opération de combinaisons linéaires opérant sur lesdites deux données. L'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée appliquées chacune sur lesdites deux données du bloc résidu.
Dans cet exemple, il a été évalué au préalable que l'application successive de matrices de rotation Gw-i *- - -*Gz*Gz-i *...*G2 *G-i *Go aux blocs Bv, permet d'obtenir un compromis - gain de codage GC35 36 matrices de rotation Go à G35 - qui est optimal par rapport au gain obtenu avec une transformée KLT directement appliquée sur le bloc courant B,.
Les résultats d'une telle évaluation préalable sont présentés ci-dessous dans le tableau T1 :
D'après le tableau T1 , à l'itération 0, le gain GC, a été calculé classiquement en prenant en compte uniquement le bloc résidu Br,. Le gain GC, obtenu est tel que GCi= 4,916 dB. Ce gain est comparé au gain GC, calculé lorsqu'une transformée de type KLT est appliquée au bloc résidu Βη. Le gain GC'i obtenu est tel que GC'i=5,141 dB et est donc bien supérieur au gain GC,.
On note qu'à chaque itération suivante, représentée dans le tableau T1 , le gain GC, est augmenté. Au bout de la 35eme itération mise en œuvre par l'algorithme d'apprentissage, le gain GC, est optimisé, selon un compromis satisfaisant gain de codage/nombre de matrices de rotation utilisées. Pour obtenir ce gain, trente-six matrices de rotation G0 à G35 ont été appliquées sur le bloc résidu vectorisé: d'abord la matrice G0 directement sur le bloc résidu vectorisé Bn/j, puis la matrice G1 sur le bloc résidu modifié Β°η, ... , et enfin la matrice G35 sur le bloc résidu modifié B34n.
Dans ce mode de réalisation, les matrices de rotation ont été appliquées uniquement sur des pixels partageant la même ligne ou la même colonne du bloc résidu /résidu modifié considéré.
Compte tenu des résultats de l'évaluation présentés dans le tableau T1 , l'ensemble EMR de matrices de rotation stocké dans la mémoire tampon MT_C du codeur CO de la figure 2 est provisionné préalablement au codage par ces trente-six matrices de rotation G0 à G35- Ces dernières sont stockées en association avec la transformée DST et/ou avec la direction de prédiction Intra D P Io, dans la mémoire tampon MT_C du codeur CO de la figure 2. Les matrices de rotation G0 à G35 sont également stockées respectivement en association avec les indices m1 , m2 de chacune des deux données du bloc résidu /résidu modifié qu'elles affectent.
Il s'ensuit qu'à l'issue de l'étape C3, un bloc résidu modifié B35n, tel que Β35η
est alors obtenu, où Brv, correspond au bloc résidu véctorisé sous la forme d'une matrice colonne.
Au cours de l'étape C4 de la figure 1 , il est procédé à l'application au bloc résidu modifié Br35, de la transformée séparable dont des exemples ont été donnés ci-dessus. Il est supposé, dans cet exemple, que la transformée séparable à appliquer à l'étape C4 est de type DST pour ses matrices lignes et colonne Al et Ac.
A l'issue de l'étape C4 est obtenu un bloc de données transformé BT35,.
Au cours de l'étape C5 de la figure 1 , il est procédé à la quantification des données du bloc transformé BT35,.
Un bloc B35qi de coefficients quantifiés est alors obtenu.
Au cours de l'étape C6 de la figure 1 , il est procédé au codage des données du bloc Β3¾.
Au cours de l'étape C7 de la figure 1 , il est procédé à la construction du signal ou flux de données φ qui contient les données codées à l'issue de l'étape de codage C6 précitée.
Les étapes de codage C1 à C7 de la figure 1 sont ensuite mises en œuvre pour chacun des blocs B ; B2, B,, ..., BF à coder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
Conformément au deuxième exemple qui va être décrit ci-dessous, ce dernier se distingue du premier exemple par le fait que le bloc prédicteur optimal BPopt est associé à une direction de prédiction Intra optimale qui est par exemple la direction de prédiction Intra DPI34.
Au cours de l'étape C3 de la figure 1 , il est procédé à au moins une modification de deux données du bloc résidu Βη par une opération de combinaisons linéaires opérant sur lesdites deux données. L'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée appliquées chacune sur lesdites deux données du bloc résidu.
Dans cet exemple, il a été évalué au préalable que l'application successive de matrices de rotation Gw-i*-- -*Gz*Gz-i*...*G2 *Gi*Go aux blocs Bv, permet d'obtenir un compromis - gain de codage GC12°/ 121 matrices de rotation G0 à G-120 - qui est optimal par rapport au gain obtenu avec une transformée KLT directement appliquée sur le bloc courant B,.
Les résultats d'une telle évaluation préalable sont présentés ci-dessous dans deux tableaux T2 et T3. Le tableau T2 correspond à une première variante dans laquelle les matrices de rotation ont été appliquées uniquement sur des pixels partageant la même ligne ou la même colonne du bloc résidu /résidu modifié considéré. Le tableau T3 correspond à une deuxième variante dans laquelle les matrices de rotation ont été appliquées :
- à une itération donnée, sur des pixels partageant la même ligne ou la même colonne du bloc résidu /résidu modifié considéré,
- à une autre itération donnée, sur des pixels ne partageant ni la même ligne, ni la même colonne du bloc résidu/résidu modifié considéré.
Dans le tableau T3, les itérations pour lesquelles une matrice de rotation est appliquée sur des pixels ne partageant ni la même ligne et ni la même colonne du bloc résidu/résidu modifié sont représentées en gras.
De façon correspondante au premier exemple décrit en référence au tableau T1 , à l'itération 0, le gain GC, a été calculé classiquement en prenant en compte uniquement le bloc résidu Βη. Le gain GC, obtenu est tel que GCi=
4,4806 dB. Ce gain est comparé au gain GC, calculé lorsqu'une transformée de type KLT est appliquée au bloc résidu Br,. Le gain GC, obtenu est tel que GC'i=5,152 dB et est donc bien supérieur au gain GC,.
On note qu'à chaque itération suivante représentée dans le tableau T2 ou T3, le gain GC, est augmenté. Au bout de la 120eme itération mise en œuvre par l'algorithme d'apprentissage, le gain GC, est optimisé, selon un compromis satisfaisant gain de codage/nombre de matrices de rotation utilisées. Pour obtenir ce gain, cent-vingt et une matrices de rotation G0 à G-120 ont été appliquées sur le bloc résidu vectorisé: d'abord la matrice G0 directement sur le bloc résidu vectorisé Brv,, puis la matrice G 1 sur le bloc résidu modifié Β°η, ..., et enfin la matrice G 2o sur le bloc résidu modifié Β119η.
Il convient de noter que le gain GC, obtenu à l'issue des 120 itérations est plus élevé dans le cas où certaines matrices de rotation sont appliquées sur des pixels ne partageant ni la même ligne, ni la même colonne du bloc résidu/résidu modifié (tableau T3) que dans le cas où les matrices de rotation sont systématiquement appliquées sur des pixels partageant la même ligne ou la même colonne du bloc résidu /résidu modifié considéré (tableau T2).
Compte tenu des résultats de l'évaluation présentés dans les tableaux T2 et T3, l'ensemble EMR de matrices de rotation stocké dans la mémoire tampon MT_C du codeur CO de la figure 2 est provisionné préalablement au codage par ces cent-vingt et une matrices de rotation G0 à G-i2o- Ces dernières sont stockées en association avec la transformée DST et/ou avec la direction de prédiction Intra DPI34, dans la mémoire tampon MT_C du codeur CO de la figure 2. Les matrices de rotation G0 à G-120 sont également stockées respectivement en association avec les indices m1 , m2 de chacune des deux données du bloc résidu/résidu modifié qu'elles affectent.
Il s'ensuit qu'à l'issue de l'étape C3, un bloc résidu modifié B120n, tel que Β120η i9*Gi i 8*...*G0*BrVi est alors obtenu, où Brv, correspond au bloc résidu véctorisé sous la forme d'une matrice colonne.
Au cours de l'étape C4 de la figure 1 , il est procédé à l'application au bloc résidu modifié Br12° de la transformée séparable dont des exemples ont été donnés ci-dessus. Il est à nouveau supposé, dans cet exemple, que la
transformée séparable à appliquer à l'étape C4 est de type DST pour ses matrices lignes et colonne Al et Ac.
A l'issue de l'étape C4 est obtenu un bloc de données transformé BT12° .
Au cours de l'étape C5 de la figure 1 , il est procédé à la quantification des données du bloc transformé BT12° .
Un bloc B120qi de coefficients quantifiés est alors obtenu.
Au cours de l'étape C6 de la figure 1 , il est procédé au codage des données du bloc Β12¾.
Au cours de l'étape C7 de la figure 1 , il est procédé à la construction du signal ou flux de données φ qui contient les données codées à l'issue de l'étape de codage C6 précitée.
Les étapes de codage C1 à C7 de la figure 1 sont ensuite mises en œuvre pour chacun des blocs B-i , B2, B,, ..., BF à coder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
Description détaillée de la partie décodage
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.
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.
Le procédé de décodage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes D1 à D7 telles que représentées à la figure 6.
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 5.
Comme illustré en figure 5, un tel dispositif décodeur comprend :
- une entrée ENT_D pour recevoir le signal de données ou flux courant φ à décoder,
- un circuit de traitement CT_D pour mettre en œuvre le procédé de décodage selon l'invention, le circuit de traitement CT_D contenant :
· une mémoire MEM_D comprenant une mémoire tampon
MT_D,
• un processeur PROC_D piloté par un programme d'ordinateur PG_D,
- une sortie SOR_D pour délivrer une image courante reconstruite contenant les données obtenues à l'issue du décodage selon le procédé de l'invention.
A l'initialisation, les instructions de code du programme d'ordinateur
PG_D sont par exemple chargées dans une mémoire RAM, MR_D, avant d'être exécutées par le circuit de traitement CT_D.
Le procédé de décodage représenté sur la figure 6 s'applique à un signal ou flux de données φ 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 φ reçu à l'entrée ENT_D du décodeur DO et tel que délivré à l'issue du procédé de codage de la figure 1 .
En référence à la figure 6, au cours d'une étape D1 , il est procédé, de façon connue en soi, à la détermination dans le signal φ des blocs codés associés à chacun des blocs B-i , B2, B,, ..., BF codés précédemment conformément à l'ordre lexicographique précité.
Une telle étape de détermination D1 est mise en œuvre par un module logiciel d'identification MI_D d'analyse de flux, tel que représenté à la figure 5, lequel module est piloté par le processeur PROC_D.
D'autres types de parcours que celui mentionné ci-dessus sont bien sûr possibles et dépendent de l'ordre de parcours choisi au codage.
Dans l'exemple représenté, les blocs B ; B2, B,, ..., BF à décoder ont une forme carrée et sont par exemple de taille 4x4 pixels.
Au cours d'une étape D2 représentée à la figure 6, le décodeur DO de la figure 5 sélectionne, comme bloc courant B, à décoder, le premier bloc qui a été codé à l'issue du procédé de codage de la figure 1 .
Au cours d'une étape D3 représentée à la figure 6, il est procédé, de façon connue en soi, à une détermination, par exemple par décodage, des données associées au bloc courant B, à décoder qui ont été codées au cours de l'étape C6 de la figure 1 . A l'issue d'une telle détermination, est obtenu un ensemble d'informations numériques associées au bloc de coefficients quantifiés Bzq, qui a été obtenu à l'issue de l'étape de quantification C5 de la figure 1 .
Egalement au cours de l'étape D3, peuvent être déterminées des informations qui sont relatives au type de prédiction du bloc courant B,, si ce dernier a été prédit au codage, et qui ont été inscrites dans le signal de données φ. De telles informations de prédiction sont notamment le mode de prédiction sélectionné au codage et l'index du bloc prédicteur sélectionné.
Au cours de l'étape D3, est également déterminé, de façon connue en soi, l'index ITR de la transformée séparable appliquée à l'étape C4 de la figure 1 .
Une telle étape D3 de décodage est mise en œuvre par un dispositif de décodage MD_D représenté sur la figure 5, lequel dispositif est piloté par le processeur PROC_D.
Au cours d'une étape D4 représentée à la figure 6, il est procédé à une déquantification du bloc de coefficients quantifiés Bzqi5 selon une opération classique de déquantification qui est l'opération inverse de la quantification mise en œuvre lors de l'étape de quantification C5 de la figure 1 . Un ensemble de coefficients déquantifiés courant BDzq, est alors obtenu à l'issue de l'étape D4. Une telle étape de déquantification est par exemple de type scalaire ou vectorielle.
L'étape D4 est mise en œuvre au moyen d'un dispositif MQ"1_D de quantification inverse, tel que représenté à la figure 5, lequel dispositif est piloté par le processeur PROC_D.
Au cours d'une étape D5 représentée à la figure 6, il est procédé à l'application d'une transformée séparable à l'ensemble de coefficients déquantifiés courant BDzq, tel qu'obtenu à l'étape D4 précitée. De façon connue
en soi, une telle transformée est une transformée inverse de celle appliquée au codage à l'issue de l'étape C4 de la figure 1 , telle que par exemple une transformée DCT, DST, DWT, LT ou autres. De façon correspondante au codeur CO de la figure 2, ces transformées séparables font partie d'une liste de transformées séparables LTS"1 qui est stockée préalablement dans la mémoire tampon MT_D du décodeur DO de la figure 5. Le type de transformée séparable à appliquer est déterminé au décodeur par lecture, dans le signal de données φ, de l'index ITR de la transformée séparable appliquée au codage au cours de l'étape C4 précitée (figure 1 ).
A l'issue de l'étape D5, est obtenu un bloc modifié décodé BD2 .
Une telle opération est effectuée par un dispositif MTR"1_D de calcul de transformée, tel que représenté à la figure 5, lequel dispositif est piloté par le processeur PROC_D.
Au cours d'une étape D6 représentée à la figure 6, il est procédé, conformément à l'invention, à au moins une modification de deux données du bloc modifié décodé BD2 par une opération de combinaisons linéaires opérant sur lesdites deux données du bloc modifié décodé BD2 . L'opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée appliquées chacune sur lesdites deux données du bloc modifié décodé BD2 . A l'issue de l'étape D6, est obtenu un bloc reconstruit BD,.
L'étape D6 est mise en œuvre par un dispositif de calcul CAL1 _D représenté sur la figure 5, lequel dispositif est piloté par le processeur PROC_D.
Dans l'exemple décrit ici, on entend par données, les pixels du bloc modifié décodé BD2 .
Il convient toutefois de noter qu'on entend également par données, les pixels d'un bloc modifié résidu décodé dans le cas où une prédiction du bloc courant B, a été mise en œuvre au codage.
Selon un premier exemple préférentiel correspondant à celui qui est représenté sur la figure 4A, les deux données du bloc modifié décodé BD2 sur lesquelles s'appliquent la première somme pondérée et la deuxième somme
pondérée ne sont situées ni sur la même ligne, ni sur la même colonne du bloc modifié décodé BD2.
Selon un deuxième exemple correspondant à celui qui est représenté sur la figure 4B, les deux données du bloc modifié décodé BD2 sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont situées sur une même ligne du bloc modifié décodé BD2. Ces deux données peuvent être situées l'une à côté de l'autre ou non.
Selon un troisième exemple correspondant à celui qui est représenté sur la figure 4C, les deux données du bloc modifié décodé BD2 sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée sont situées sur une même colonne du bloc modifié décodé BD2. Ces deux données peuvent être situées l'une à côté de l'autre ou non.
Conformément à l'invention, les deux données de pondération utilisées dans la première somme pondérée sont égales en valeur absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
De façon correspondante au codeur CO décrit précédemment, le calcul des première et deuxième sommes pondérées utilise une transposée d'une matrice de rotation Gz appartenant à un ensemble EMR comprenant W matrices de rotation Go, G-i , .. . , Gz, .. . , Gw-i où 0<z<W-1 préalablement stockées dans la mémoire tampon MT_D de la figure 5. Une matrice de rotation Gz considérée dans cet ensemble comprend M lignes et N colonnes, avec M>1 et N>1 . Une telle transposée s'exprime de la façon suivante :
La transposée de la matrice Gz peut également s'exprimer sous la forme :
Pour un bloc modifié décodé considéré BDZ , z+1 modifications sont mises en œuvre successivement. Le calcul des première et deuxième sommes pondérées utilise alors la transposée de chacune des matrices de rotation G0, Gi , ... ,Gz contenues dans l'ensemble EMR, telle que (G0*Gi*...*Gz)t, et applique ces transposées dans l'ordre suivant {Gz) (Gz-i )', ... , (Go)1 au bloc modifié décodé vectorisé BDzvi; de façon à obtenir un bloc reconstruit BD,.
De façon correspondante au codeur CO précité, le nombre prédéterminé W de matrices de rotation à utiliser pour modifier un bloc modifié décodé courant BDZ peut être fonction, selon trois options possibles :
- soit du type de transformée séparable inverse appliquée à l'étape précédente D5,
- soit du mode de prédiction sélectionné dans le cas où le bloc courant B, a été prédit,
- soit à la fois du type de transformée séparable inverse et du mode de prédiction sélectionné.
Egalement de façon correspondante au codeur CO précité, dans l'ensemble EMR de W matrices de rotation, chaque matrice est affectée à des valeurs de C et S particulières (une valeur d'angle Θ particulière dans le mode de réalisation préféré) et à une paire d'indices de données du bloc modifié décodé vectorisé BDzv,. Certaines paires de valeurs C et S et/ou certaines paires d'indices de données du bloc décodé vectorisé BDzv, peuvent être communes à deux matrices de rotation ou plus.
Au cours d'une étape D7 représentée à la figure 6, ledit bloc reconstruit courant BD, est écrit dans une image décodée I Dj.
Une telle étape est mise en œuvre par un dispositif URI de reconstruction d'image tel que représenté sur la figure 5, ledit dispositif étant piloté par le processeur PROC_D.
Les étapes de décodage D1 à D7 qui viennent d'être décrites ci-dessus sont mises en œuvre pour tous les blocs B ; B2, B,, ... , BF à décoder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
On va maintenant décrire ci-dessous un premier exemple de réalisation de l'invention dans le cas d'un décodage HEVC de type Intra.
Dans cet exemple, le bloc courant B, à décoder qui est sélectionné à l'étape D2 de la figure 6 est un bloc 4x4. Le bloc B, à décoder a par ailleurs fait l'objet d'une prédiction par rapport à l'une des trente-cinq prédictions Intra proposées dans le standard HEVC, telle que par exemple la direction de prédiction DPI0.
Au cours de l'étape D3 de la figure 6, le dispositif de décodage MD_D décode les données résiduelles associées au bloc courant B, à décoder, lesdites données résiduelles représentant la différence entre le bloc B, et le bloc prédicteur BPopt sélectionné au codage parmi les blocs prédicteurs candidats. A l'issue de ce décodage, est obtenu un ensemble d'informations numériques associées à un bloc Β3¾ de coefficients quantifiés.
Egalement au cours de l'étape D3, sont déterminées des informations relatives au type de prédiction du bloc courant B, tel que mis en œuvre au codage, et qui ont été inscrites dans le signal de données φ.
A cet effet, au cours de l'étape D3, sont déterminés :
- le mode de prédiction qui a été sélectionné au codage, par exemple la direction de prédiction Intra DPI0,
- l'index du bloc prédicteur BPopt, noté IBPopt,
- l'index ITR de la transformée séparable appliquée au cours de l'étape C4 de la figure 1 , ladite transformée séparable étant, dans cet exemple, de type DST.
Au cours de l'étape D4 de la figure 6, le dispositif de quantification inverse MQ"1_D de la figure 5 procède à une déquantification du bloc de coefficients quantifiés Β3¾. Un ensemble de coefficients déquantifiés courant BD35qi est alors obtenu à l'issue de l'étape D4.
Au cours de l'étape D5 de la figure 6, le dispositif MTR"1_D de calcul de transformée de la figure 5 procède à l'application, à l'ensemble de coefficients déquantifiés courant Βϋ3¾, de la transformée DST"1 qui est la transformée inverse de la transformée DST associée à l'index ITR décodé à l'étape D3 pour les colonnes et les lignes. A l'issue de l'étape D5, est obtenu un bloc résidu modifié décodé BD35n.
Conformément à l'invention, au cours de l'étape D6 de la figure 6, il est procédé à trente-six modifications de deux données du bloc résidu modifié
décodé BD35n, chacune de ces modifications revenant à calculer une première somme pondérée et une deuxième somme pondérée de deux données correspondantes du bloc résidu modifié décodé BD35n.
A cet effet, le dispositif de calcul CAL1_D recherche, dans la mémoire tampon MT_D du décodeur DO de la figure 5, les trente-six matrices de rotation Go, G-i , ..., G35 de l'ensemble EMR qui ont été préalablement stockées, dans la mémoire tampon MT_D de la figure 5, en association avec la transformée DS 1 et/ou la direction de prédiction intra DPI0, puis applique directement au bloc résidu modifié décodé BD35n la transposée de chacune des trente-six matrices dans l'ordre suivant Gss'- . -Gi f Go 1.
A l'issue de l'étape D6, est alors obtenu un bloc résidu décodé BDn.
Dans cet exemple de réalisation, les matrices de rotation G0 à G35 sont toutes appliquées uniquement sur des pixels partageant la même ligne ou la même colonne du bloc résidu décodé BDn.
Au cours d'une étape non représentée sur la figure 6, il est procédé classiquement au décodage prédictif du bloc courant à décoder à l'aide de l'index IBPopt du bloc prédicteur qui a été décodé au cours de l'étape D3 précitée. A cet effet, le bloc prédicteur BPopt associé à l'index IBPopt est sélectionné dans la mémoire tampon MT_D du décodeur DO de la figure 5.
Au cours d'une étape suivante non représentée sur la figure 6, il est procédé à la reconstruction du bloc courant B, en ajoutant au bloc résidu décodé BDn, obtenu à l'issue de l'étape D6 précitée, le bloc prédicteur BPopt qui a été obtenu à l'issue de l'étape précédente.
Un bloc reconstruit courant BD, est alors obtenu.
Au cours de l'étape D7 de la figure 6, le dispositif URI de reconstruction d'image de la figure 5 écrit le bloc reconstruit courant BD, dans une image décodée IDj.
Les étapes de décodage D1 à D7 de la figure 6 sont mises en œuvre pour tous les blocs B ; B2, B,, ..., BF à décoder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
Conformément à un deuxième exemple qui va être décrit ci-dessous, ce dernier se distingue du premier exemple par le fait que le bloc B, à décoder a
par ailleurs fait l'objet d'une prédiction par rapport à une autre direction de prédiction que la direction de prédiction DPI0. Dans ce deuxième exemple, il s'agit de la direction de prédiction DPI34.
Au cours de l'étape D3 de la figure 6, le dispositif de décodage MD_D décode les données résiduelles associées au bloc courant B, à décoder, lesdites données résiduelles représentant la différence entre le bloc B, et le bloc prédicteur BPopt sélectionné au codage parmi les blocs prédicteurs candidats. A l'issue de ce décodage, est obtenu un ensemble d'informations numériques associées à un bloc Β12¾ de coefficients quantifiés.
Egalement au cours de l'étape D3, sont déterminées des informations relatives au type de prédiction du bloc courant B, tel que mis en œuvre au codage, et qui ont été inscrites dans le signal de données φ.
A cet effet, au cours de l'étape D3, sont déterminés :
- le mode de prédiction qui a été sélectionné au codage, par exemple la direction de prédiction Intra DPI34,
- l'index du bloc prédicteur BPopt, noté IBPopt,
- l'index ITR de la transformée séparable appliquée au cours de l'étape C4 de la figure 1 , ladite transformée séparable étant, dans cet exemple, de type DST.
Au cours de l'étape D4 de la figure 6, le dispositif de quantification inverse MQ"1_D de la figure 5 procède à une déquantification du bloc de coefficients quantifiés Β12¾. Un ensemble de coefficients déquantifiés courant BD120qi est alors obtenu à l'issue de l'étape D4.
Au cours de l'étape D5 de la figure 6, le dispositif MTR"1_D de calcul de transformée de la figure 5 procède à l'application, à l'ensemble de coefficients déquantifiés courant BD120qi, de la transformée DST"1 qui est la transformée inverse de la transformée DST associée à l'index ITR décodé à l'étape D3 pour les colonnes et les lignes. A l'issue de l'étape D5, est obtenu un bloc résidu modifié décodé Βϋ120η.
Conformément à l'invention, au cours de l'étape D6 de la figure 6, il est procédé à cent-vingt et une modifications de deux données du bloc résidu modifié décodé BD120n, chacune de ces modifications revenant à calculer une
première somme pondérée et une deuxième somme pondérée de deux données correspondantes du bloc résidu modifié décodé BD120n.
A cet effet, le dispositif de calcul CAL1_D recherche, dans la mémoire tampon MT_D du décodeur DO de la figure 5, les cent-vingt et une matrices de rotation Go, G-i , ... , G120 de l'ensemble EMR qui ont été préalablement stockées, dans la mémoire tampon MT_D de la figure 5, en association avec la transformée DST1 et/ou la direction de prédiction intra DPI34, puis applique directement au bloc résidu modifié décodé BD120n la transposée de chacune des cent-vingt et une matrices dans l'ordre suivant G^o'- . -Gi f Go 1.
A l'issue de l'étape D6, est alors obtenu un bloc résidu décodé BDn.
Dans cet exemple de réalisation :
- certaines des matrices de rotation de l'ensemble EMR sont appliquées sur des pixels partageant la même ligne ou la même colonne du bloc résidu décodé BDn,
- certaines autres matrices de rotation de l'ensemble EMR sont appliquées sur des pixels qui ne partagent ni la même ligne, ni la même colonne du bloc résidu décodé BDn.
Au cours d'une étape non représentée sur la figure 6, il est procédé classiquement au décodage prédictif du bloc courant à décoder à l'aide de l'index IBPopt du bloc prédicteur qui a été décodé au cours de l'étape D3 précitée. A cet effet, le bloc prédicteur BPopt associé à l'index IBPopt est sélectionné dans la mémoire tampon MT_D du décodeur DO de la figure 5.
Au cours d'une étape suivante non représentée sur la figure 6, il est procédé à la reconstruction du bloc courant B, en ajoutant au bloc résidu décodé BDn, obtenu à l'issue de l'étape D6 précitée, le bloc prédicteur BPopt qui a été obtenu à l'issue de l'étape précédente.
Un bloc reconstruit courant BD, est alors obtenu.
Au cours de l'étape D7 de la figure 6, le dispositif URI de reconstruction d'image de la figure 5 écrit le bloc reconstruit courant BD, dans une image décodée I Dj.
Les étapes de décodage D1 à D7 de la figure 6 sont mises en œuvre pour tous les blocs B ; B2, B,, ..., BF à décoder de l'image courante ICj
considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
Il 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.
Claims
1 . Procédé de codage d'au moins une image (ICj) découpée en blocs, caractérisé en ce que, pour un bloc courant (B,) à coder de ladite image, le procédé met en œuvre ce qui suit :
- au moins une modification (C3) de deux données du bloc par une opération de combinaisons linéaires opérant sur lesdites deux données, à l'issue de laquelle est obtenu un bloc modifié,
- application (C4) aux données du bloc modifié d'une opération de transformée séparable,
- codage (C6) des données obtenues à la suite de l'application de ladite opération de transformée séparable.
2. Procédé de codage selon la revendication 1 , dans lequel ladite opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée desdites deux données du bloc, les deux données de pondération utilisées dans la première somme pondérée étant égales en valeur absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
3. Procédé de codage selon la revendication 1 ou la revendication 2, dans lequel les deux données du bloc sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée, ne sont situées ni sur la même ligne, ni sur la même colonne dudit bloc.
4. Dispositif (CO) de codage d'au moins une image (ICj) découpée en blocs, caractérisé en ce qu'il comprend un circuit de traitement (CT_C) qui, pour un bloc courant (B,) à coder de ladite image, est agencé pour :
- modifier au moins une fois deux données du bloc par une opération de combinaisons linéaires opérant sur lesdites deux données, à l'issue de laquelle est obtenu un bloc modifié,
- appliquer aux données du bloc modifié une opération de transformée séparable,
- coder les données obtenues à la suite de l'application de ladite opération de transformée séparable.
5. 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 à 3, lorsque ledit programme est exécuté sur un ordinateur.
6. 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 à 3, lorsque ledit programme est exécuté par un ordinateur.
7. Procédé de décodage d'un signal de données (φ) représentatif d'au moins une image (ICj) découpée en blocs, mettant en œuvre, pour un bloc courant (B,) à décoder, ce qui suit :
- détermination (D3), dans ledit signal de données, d'un bloc de données codées associé au bloc courant à décoder,
- application (D5) d'une opération de transformée séparable aux données codées du bloc déterminé, à l'issue de laquelle est obtenu un bloc de données transformé (BD2 ),
ledit procédé de décodage étant caractérisé en ce qu'il met en œuvre une reconstruction du bloc courant au moyen d'au moins une modification (D6) de deux données dudit bloc de données transformé, par une opération de combinaisons linéaires opérant sur lesdites deux données.
8. Procédé de décodage selon la revendication 7, dans lequel ladite opération de combinaisons linéaires comprend le calcul d'une première somme pondérée et d'une deuxième somme pondérée desdites deux données du bloc de données transformé, les deux données de pondération utilisées dans la première somme pondérée étant égales en valeur absolue aux deux données de pondération utilisées dans la deuxième somme pondérée.
9. Procédé de décodage selon la revendication 7 ou la revendication 8, dans lequel les deux données du bloc de données transformé sur lesquelles s'appliquent la première somme pondérée et la deuxième somme pondérée, ne sont situées ni sur la même ligne, ni sur la même colonne dudit bloc.
10. Dispositif (DO) de décodage d'un signal de données (φ) représentatif d'au moins une image (ICj) découpée en blocs, comprenant un circuit de traitement (CT_C) qui, pour un bloc courant (B,) à décoder, est agencé pour :
- déterminer, dans ledit signal de données, un bloc de données codées associé au bloc courant à décoder,
- appliquer une opération de transformée séparable aux données codées du bloc déterminé, à l'issue de laquelle est obtenu un bloc de données transformé,
ledit dispositif de décodage étant caractérisé en ce que le circuit de traitement est agencé pour reconstruire le bloc courant au moyen d'au moins une modification de deux données du bloc de données transformé, par une opération de combinaisons linéaires opérant sur lesdites deux données.
1 1 . 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 7 à 9, lorsque ledit programme est exécuté sur un ordinateur.
12. 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 7 à 9, lorsque ledit programme est exécuté par un ordinateur.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/780,032 US10750206B2 (en) | 2015-11-30 | 2016-11-29 | Method for encoding and decoding images, device for encoding and decoding images, and corresponding computer programs |
EP16819340.7A EP3384672A1 (fr) | 2015-11-30 | 2016-11-29 | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants |
CN201680069601.5A CN108432254B (zh) | 2015-11-30 | 2016-11-29 | 图像编码和解码方法、装置以及计算机存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1561573 | 2015-11-30 | ||
FR1561573A FR3044507A1 (fr) | 2015-11-30 | 2015-11-30 | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017093653A1 true WO2017093653A1 (fr) | 2017-06-08 |
Family
ID=55236699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/FR2016/053136 WO2017093653A1 (fr) | 2015-11-30 | 2016-11-29 | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants |
Country Status (5)
Country | Link |
---|---|
US (1) | US10750206B2 (fr) |
EP (1) | EP3384672A1 (fr) |
CN (1) | CN108432254B (fr) |
FR (1) | FR3044507A1 (fr) |
WO (1) | WO2017093653A1 (fr) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3044507A1 (fr) * | 2015-11-30 | 2017-06-02 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6281942B1 (en) * | 1997-08-11 | 2001-08-28 | Microsoft Corporation | Spatial and temporal filtering mechanism for digital motion video signals |
US7487193B2 (en) * | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5621468A (en) * | 1994-10-07 | 1997-04-15 | Daewoo Electronics Co., Ltd. | Motion adaptive spatio-temporal filtering of video signals |
US6470052B1 (en) * | 1998-06-29 | 2002-10-22 | Xerox Corporation | HVQ compression combined with orthogonal rotation |
JP2006050358A (ja) * | 2004-08-06 | 2006-02-16 | Pioneer Electronic Corp | 映像信号処理装置 |
US8971655B2 (en) * | 2009-07-23 | 2015-03-03 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for encoding and decoding of images |
JP5700970B2 (ja) * | 2009-07-30 | 2015-04-15 | トムソン ライセンシングThomson Licensing | 画像シーケンスを表す符号化データストリームの復号方法と画像シーケンスの符号化方法 |
KR20110017303A (ko) * | 2009-08-13 | 2011-02-21 | 삼성전자주식회사 | 회전변환을 이용한 영상 부호화, 복호화 방법 및 장치 |
US9258573B2 (en) * | 2010-12-07 | 2016-02-09 | Panasonic Intellectual Property Corporation Of America | Pixel adaptive intra smoothing |
US9824066B2 (en) * | 2011-01-10 | 2017-11-21 | Qualcomm Incorporated | 32-point transform for media data coding |
WO2012177027A2 (fr) * | 2011-06-18 | 2012-12-27 | 삼성전자 주식회사 | Procédé et dispositif pour la transformation, et procédé et dispositif pour la transformation inverse d'images |
CN102186086B (zh) * | 2011-06-22 | 2013-06-19 | 武汉大学 | 一种基于avs的帧内预测方法 |
EA201492099A1 (ru) * | 2012-05-14 | 2015-04-30 | Лука Россато | Разложение остаточных данных при кодировании, декодировании и реконструкции сигнала в многоуровневой иерархии |
US20140212046A1 (en) * | 2013-01-31 | 2014-07-31 | Sony Corporation | Bit depth reduction techniques for low complexity image patch matching |
US9438827B2 (en) * | 2013-08-27 | 2016-09-06 | Semiconductor Components Industries, Llc | Imaging systems and methods for generating binned high-dynamic-range images |
FR3012004A1 (fr) * | 2013-10-15 | 2015-04-17 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
GB2520002B (en) * | 2013-11-04 | 2018-04-25 | British Broadcasting Corp | An improved compression algorithm for video compression codecs |
FR3014278A1 (fr) * | 2013-11-29 | 2015-06-05 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
FR3024933A1 (fr) * | 2014-08-12 | 2016-02-19 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
FR3032583B1 (fr) * | 2015-02-06 | 2018-03-02 | Orange | Procede de codage d'une image numerique, procede de decodage, dispositifs, et programmes d'ordinateurs associes |
FR3040578A1 (fr) * | 2015-08-31 | 2017-03-03 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
FR3044507A1 (fr) * | 2015-11-30 | 2017-06-02 | Orange | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants |
FR3050598B1 (fr) * | 2016-04-26 | 2020-11-06 | Bcom | Procede de decodage d'une image numerique, procede de codage, dispositifs, et programmes d'ordinateurs associes |
US10880570B2 (en) * | 2016-10-05 | 2020-12-29 | Qualcomm Incorporated | Systems and methods of adaptively determining template size for illumination compensation |
TWI635742B (zh) * | 2017-01-09 | 2018-09-11 | 晨星半導體股份有限公司 | 動態影像編碼裝置及動態影像編碼方法 |
-
2015
- 2015-11-30 FR FR1561573A patent/FR3044507A1/fr not_active Withdrawn
-
2016
- 2016-11-29 CN CN201680069601.5A patent/CN108432254B/zh active Active
- 2016-11-29 EP EP16819340.7A patent/EP3384672A1/fr active Pending
- 2016-11-29 US US15/780,032 patent/US10750206B2/en active Active
- 2016-11-29 WO PCT/FR2016/053136 patent/WO2017093653A1/fr active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6281942B1 (en) * | 1997-08-11 | 2001-08-28 | Microsoft Corporation | Spatial and temporal filtering mechanism for digital motion video signals |
US7487193B2 (en) * | 2004-05-14 | 2009-02-03 | Microsoft Corporation | Fast video codec transform implementations |
Non-Patent Citations (4)
Title |
---|
ANONYMOUS: "Rotation matrix - Wikipedia", 10 November 2015 (2015-11-10), pages 1 - 18, XP055346298, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Rotation_matrix&oldid=689980099> [retrieved on 20170215] * |
LIST P ET AL: "Adaptive deblocking filter", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 13, no. 7, 1 July 2003 (2003-07-01), pages 614 - 619, XP011221094, ISSN: 1051-8215, DOI: 10.1109/TCSVT.2003.815175 * |
MURCHING A M ET AL: "LINEAR PRE/POST FILTERS FOR DCT-BASED IMAGE CODING SYSTEMS", JOURNAL OF ELECTRONIC IMAGING, SPIE / IS & T, 1000 20TH ST. BELLINGHAM WA 98225-6705 USA, vol. 7, no. 3, 1 July 1998 (1998-07-01), pages 605 - 615, XP000771767, ISSN: 1017-9909, DOI: 10.1117/1.482614 * |
SUTHAHARAN S ET AL: "A NEW LINEAR POST-FILTERING TECHNIQUE TO REDUCE TRANSFORM CODING BLOCK-EDGE ARTIFACT AT LOW BIT RATES", AUSTRALIAN JOURNAL OF INTELLIGENT INFORMATION PROCESSING SYSTEMS, CENTRE OF INTELLIGENT INFORMATION PROCESSING SYSTEMS, NEDLANDS, AU, vol. 5, no. 2, 1 January 1998 (1998-01-01), pages 120 - 128, XP001006047, ISSN: 1321-2133 * |
Also Published As
Publication number | Publication date |
---|---|
FR3044507A1 (fr) | 2017-06-02 |
US10750206B2 (en) | 2020-08-18 |
CN108432254A (zh) | 2018-08-21 |
CN108432254B (zh) | 2021-01-15 |
EP3384672A1 (fr) | 2018-10-10 |
US20180359492A1 (en) | 2018-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3061246B1 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
EP3058737A1 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
EP3075155B1 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
EP3345391A2 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
EP3449631B1 (fr) | Procede de decodage d'une image numerique, procede de codage, dispositifs, et programmes d'ordinateurs associes | |
EP3180914B1 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
FR3029333A1 (fr) | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants | |
EP3198876B1 (fr) | Génération et codage d'images intégrales résiduelles | |
WO2017093653A1 (fr) | Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants | |
EP2901698B1 (fr) | Procédé de codage et décodage d'images, dispositif de codage et décodage et programmes d'ordinateur correspondants | |
EP3529987A1 (fr) | Procédé de codage et de décodage de paramètres d'image, dispositif de codage et de décodage de paramètres d'image et programmes d'ordinateur correspondants | |
WO2017129880A1 (fr) | Procédé de codage et décodage de données, dispositif de codage et décodage de données et programmes d'ordinateur correspondants | |
FR3057130B1 (fr) | Procede de codage d'une image, procede de decodage, dispositifs, equipement terminal et programmes d'ordinateurs associes | |
FR2907989A1 (fr) | Procede et dispositif d'optimisation de la compression d'un flux video | |
EP3259909B1 (fr) | Procédé de codage et décodage d'images, dispositif de codage et décodage et programmes d'ordinateur correspondants | |
FR3035761A1 (fr) | Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants | |
FR3050858A1 (fr) | Procede de codage et de decodage d’images, dispositif de codage et de decodage d’images et programmes d’ordinateur correspondants | |
WO2016132074A1 (fr) | Codage d'images par quantification vectorielle | |
WO2013156718A1 (fr) | Procédé de codage et de décodage d'images intégrales, dispositif de codage et de décodage d'images intégrales et programmes d'ordinateur correspondants | |
WO2014131975A2 (fr) | Dérivation de vecteur de mouvement de disparité, codage et décodage vidéo 3d utilisant une telle dérivation | |
FR2966679A1 (fr) | Procedes et dispositifs de codage et de decodage d'au moins une image a partir d'un epitome, signal et programme d'ordinateur correspondants |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16819340 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2016819340 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2016819340 Country of ref document: EP Effective date: 20180702 |