IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE, AND CORRESPONDING COMPUTER PROGRAMS
20170230688 · 2017-08-10
Inventors
Cpc classification
H04N19/132
ELECTRICITY
H04N19/12
ELECTRICITY
H04N19/119
ELECTRICITY
H04N19/154
ELECTRICITY
International classification
H04N19/597
ELECTRICITY
H04N19/154
ELECTRICITY
Abstract
A method is provided for encoding at least one image cut into blocks. The method includes, for a current block having K pixels to be encoded, wherein K>1, acts including: predicting the current block using at least one predictive block having K pixels; then determining a residual block having K pixels and representing the difference between the predictive block and the common block. A set of Mi data is determined from a pixel block group containing a number Mi of blocks having K pixels and each representing a predetermined texture, wherein 1<Mi<K, by calculating the pixel-by-pixel product of the residual block determined by each of the Mi blocks of K pixels representing a predetermined texture, and encoding the Mi data from the determined data set.
Claims
1. A coding method comprising: coding by a coding device at least one image cut into blocks, comprising the coding device performing the following acts for a current block having K pixels to be coded, where K≧1: predicting the current block using at least one predictor block having K pixels, determining a residue block having K pixels and representing the difference between the predictor block and the current block, taking a group of pixel blocks containing a number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, as a basis for determining a set of M.sub.i data by calculating the pixel-by-pixel product of the residue block determined by each of the M.sub.i blocks of K pixels representing a predetermined texture, coding the M.sub.i data of the determined data set.
2. The coding method as claimed in claim 1, in which the group of pixel blocks containing a number M.sub.i of blocks having K pixels and each representing a predetermined texture belongs to L groups of pixel blocks respectively containing a number M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L of blocks having K pixels and each representing a predetermined texture, where 1≦i≦L, said coding method comprising, prior to the act of coding the M.sub.i data of the determined data set, acts comprising: taking the L groups of pixel blocks respectively containing a number M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L of blocks having K pixels and each representing a predetermined texture as a basis for respectively determining L sets of M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L data by calculating the pixel-by-pixel product of the residue block determined by each of the M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L blocks of K pixels representing a predetermined texture, selecting said set of M.sub.i data from among the L sets of M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L data, according to a predetermined coding performance criterion.
3. The coding method as claimed in claim 1, in which the set of M.sub.i data, determined or even selected according to a predetermined coding performance criterion, contains a single datum.
4. The coding method as claimed in claim 2, in which the predetermined coding performance criterion is the minimization of the rate-distortion cost of the current block to be coded.
5. The coding method as claimed in claim 1, further comprising an act of preparation of a data signal containing: a piece of identification information for the predictor block, the coded data from the set of M.sub.i data that has been obtained by calculating the pixel-by-pixel product of the residue block determined by each of the M.sub.i blocks of K pixels representing a predetermined texture, a piece of identification information for the group containing the blocks of K pixels from which the selected set of M.sub.i data has been determined.
6. A coding device comprising: a non-transitory computer-readable medium comprising instructions stored thereon; and a processor configured by the instructions to perform acts comprising: coding at least one image cut into blocks, comprising, for a current block having K pixels to be coded, where K≧1, prediction means for predicting the current block using at least one predictor block having K pixels and for determining a residue block having K pixels and representing the difference between the predictor block and the current block, wherein the coding comprises: taking a group of pixel blocks containing a number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, as a basis for determining a set of M.sub.i data by calculating a pixel-by-pixel product of the residue block determined by each of the M.sub.i blocks of K pixels representing a predetermined texture, and coding the M.sub.i data from the determined data set.
7. A non-transitory computer-readable medium comprising a computer program stored thereon with program code instructions for executing a coding method when said program is executed on a processor of a coding device, wherein the instructions configure the coding device to perform acts comprising: coding at least one image cut into blocks, comprising, for a current block having K pixels to be coded, where K≧1, prediction means for predicting the current block using at least one predictor block having K pixels and for determining a residue block having K pixels and representing the difference between the predictor block and the current block, wherein the coding comprises: taking a group of pixel blocks containing a number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, as a basis for determining a set of M.sub.i data by calculating a pixel-by-pixel product of the residue block determined by each of the M.sub.i blocks of K pixels representing a predetermined texture, and coding the M.sub.i data from the determined data set.
8. A decoding method comprising: decoding with a decoding device a data signal representing at least one image cut into blocks, comprising the decoding device performing the following acts for a current block having K pixels to be reconstructed, where K≧1: determining at least one predictor block for the current block to be reconstructed, said predictor block containing K pixels, reading, from said data signal, a set of M.sub.i<K data, identifying a group of pixel blocks containing a given number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, determining M.sub.i blocks having K pixels by calculating the product of each of the M.sub.i blocks of K pixels of the group identified by, respectively, each of the M.sub.i data from said read set of M.sub.i data, calculating the sum of the M.sub.i determined blocks of K pixels, determining a decoded current residue block having K pixels from the calculated sum, reconstructing the current block from the calculated decoded current residue block and the determined predictor block.
9. The decoding method as claimed in claim 8, in which the read set of M.sub.i data contains a single datum.
10. The decoding method as claimed in claim 8, in which the group of pixel blocks containing a given number M.sub.i of blocks having K pixels and each representing a predetermined texture belongs to L groups of pixel blocks respectively containing a number M.sub.1, M.sub.2, . . . , M.sub.i, . . . , M.sub.L of blocks having K pixels and each representing a predetermined texture, where 1≦i≦L.
11. The decoding method as claimed in claim 10, in which: a group from among the L groups of pixel blocks contains K blocks having a predetermined texture, the L−1 remaining groups of pixel blocks each contain a unique block having a predetermined texture.
12. The decoding method as claimed in claim 10, further comprising: reading from the data signal a value of a polarity of a sign of at least one datum from said read set of M.sub.i data, taking the read value of the polarity of the sign and taking the piece of pixel block group identification information read from the signal as a basis for identifying the block of K pixels representing a predetermined texture either in a first set that contains a portion of the L groups of blocks of K pixels each representing a predetermined texture or in a second set that contains the other portion of the L groups of blocks of K pixels each representing a predetermined texture.
13. A decoding device comprising: a non-transitory computer-readable medium comprising instructions stored thereon; and a processor configured by the instructions to perform acts comprising: decoding a data signal representing at least one image cut into blocks, comprising: determining, for a current block of K pixels to be reconstructed, where K≧1, at least one predictor block for the current block to be reconstructed, said predictor block containing K pixels, reading, from said data signal, a set of M.sub.i<K data, identifying a group of pixel blocks containing a given number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, determining M.sub.i blocks having K pixels by calculating the product of each of the M.sub.i blocks of K pixels for the group identified by, respectively, each of the M.sub.i data from said read set of M.sub.i data, calculating the sum of the M.sub.i determined blocks of K pixels, determining a decoded current residue block having K pixels from the calculated sum, reconstructing the current block from the determined decoded current residue block and the determined predictor block.
14. A non-transitory computer-readable medium comprising a computer program stored thereon with instructions for implementing a decoding method when said instructions are executed on a processor of a decoding device, wherein the instructions configure the decoding device to perform acts comprising: decoding with a decoding device a data signal representing at least one image cut into blocks, comprising the decoding device performing the following acts for a current block having K pixels to be reconstructed, where K≧1: determining at least one predictor block for the current block to be reconstructed, said predictor block containing K pixels, reading, from said data signal, a set of M.sub.i<K data, identifying a group of pixel blocks containing a given number M.sub.i of blocks having K pixels and each representing a predetermined texture, where i≧1 and 1≦M.sub.i<K, determining M.sub.i blocks having K pixels by calculating the product of each of the M.sub.i blocks of K pixels of the group identified by, respectively, each of the M.sub.i data from said read set of M.sub.i data, calculating the sum of the M.sub.i determined blocks of K pixels, determining a decoded current residue block having K pixels from the calculated sum, reconstructing the current block from the calculated decoded current residue block and the determined predictor block.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0113] Other features and advantages will emerge on reading a preferred embodiment described referring to the figures, in which:
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
DETAILED DESCRIPTION OF THE CODING PART
[0121] A first embodiment of the invention will now be described, in which the coding method according to the invention is used to code an image or a sequence of images according to a binary stream close to that obtained by coding conforming to the HEVC standard, for example.
[0122] In this embodiment, the coding method according to the invention is implemented in a software or hardware manner, for example, by modifications to a coder initially conforming to the HEVC standard. The coding method according to the invention is represented in the form of an algorithm having steps C1 to C11 as represented in
[0123] According to the embodiment of the invention, the coding method according to the invention is implemented in a coding device CO represented in
[0124] As illustrated in
[0125] The coding method represented in
[0126] During a step C1 represented in
[0127] In particular, such a coding unit groups together sets of pixels of rectangular or square shape, also called blocks, macroblocks, or sets of pixels having other geometric shapes.
[0128] Said blocks B.sub.1, B.sub.2, . . . , B.sub.u, . . . , B.sub.S are intended to be coded according to a predetermined order of scanning, which is of raster scan type, for example. This means that the blocks are coded one after the other, from left to right.
[0129] Other types of scanning are of course possible. Thus, it is possible to cut the image IC.sub.j into multiple subimages called slices and to independently apply a cut of this type to each subimage. It is also possible to code not a succession of rows, as explained above, but a succession of columns. It is also possible to scan the rows or columns in one direction or in the other.
[0130] According to one example, the blocks B.sub.1, B.sub.2, . . . , B.sub.u, . . . , B.sub.S have a square shape and contain all K pixels, where K≧1. Depending on the size of the image, which is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks at the bottom may not be square. In an alternative embodiment, the blocks may be of rectangular size and/or not aligned with one another, for example.
[0131] Each block may furthermore itself be divided into subblocks that are themselves subdivisible.
[0132] During a step C2 represented in
[0133] During a step C3 represented in
[0134] Such a predictor block is a block of K pixels that has already been coded or even coded and then decoded, or not. Such a predictor block is previously stored in the buffer memory TAMP_CO of the coder CO as represented in
[0135] At the end of prediction step C3, an optimum predictor block BP.sub.opt is obtained following entry of said predetermined prediction modes into competition, for example by minimization of a rate-distortion criterion well known to a person skilled in the art. The block BP.sub.opt is considered to be an approximation of the current block B.sub.u. The pieces of information relating to this prediction are intended to be written to a data signal or stream to be transmitted to a decoder. Such pieces of information particularly comprise the type of prediction (inter or intra) and, if need be, the selected prediction mode, the type of partitioning of the current block if the latter has been subdivided, the reference image index and the displacement vector used in the case where an inter-prediction mode has been selected. These pieces of information are compressed by the coder CO.
[0136] During a step C4 represented in
[0137] A set of residual data, called residue block Br.sub.u, is then obtained at the end of step C4. The residue block Br.sub.u contains K residual pixels x.sub.1, x.sub.2, . . . , x.sub.g, . . . x.sub.K, where 1≦g≦K.
[0138] Steps C3 and C4 are implemented by a predictive coding software module PRED_CO represented in
[0139] During a step C5 represented in
[0140] A block BT.sub.v having a predetermined texture and considered in the group G.sub.i contains K pixels t.sub.v,1, t.sub.v,2, . . . , t.sub.v,g, . . . , t.sub.v,K. The predefined group G.sub.i of blocks BT.sub.1, BT.sub.2, . . . BT.sub.v, . . . , BT.sub.Mi is previously stored in the memory MEM_CO of the coder CO of
[0141] More precisely, in accordance with step C5, M.sub.i data X.sub.u,1, X.sub.u,2, . . . , X.sub.u,Mi are calculated, which are scalar values obtained using the following relationship:
[0142] Such a step C5 is implemented by a calculation software module CAL1_CO represented in
[0143] Referring to
[0144] During a step C6 represented in
[0145] During a step C7 represented in
[0148] In another embodiment, the M.sub.i quantized data are coded in a similar manner to that used by HEVC. To this end, the M.sub.i quantized data are subjected to entropy coding (for example of arithmetic coding or Huffman coding type) as follows: [0149] a piece of information is subjected to entropy coding in order to indicate the location of the last nonzero quantized datum, [0150] for each quantized datum situated before the last nonzero quantized datum, a piece of information is subjected to entropy coding in order to indicate whether or not the quantized datum is zero, [0151] for each previously indicated nonzero quantized datum, a piece of information is subjected to entropy coding in order to indicate whether or not the quantized datum is equal to one, [0152] for each nonzero and non-one quantized datum situated before the last nonzero quantized datum, a piece of amplitude information is subjected to entropy coding, [0153] for each nonzero quantized datum, the sign assigned thereto is coded by a ‘0’ (for the + sign) or a ‘1’ (for the − sign).
[0154] Such an entropy coding step is implemented by an entropy coding software module MCE represented in
[0155] At the end of the aforementioned coding step C7, a data signal or stream F that contains the set of the coded data of the block Bq.sub.u of quantized data is then delivered. Such a stream is then transmitted by a communication network (not represented) to a remote terminal. The latter has the decoder DO represented in
[0156] During a step C8 represented in
[0157] Such a dequantization step is performed by an inverse quantization software module MQ.sup.−1_CO, as represented in
[0158] During a step C9 represented in
[0159] At the end of step C9, M.sub.i decoded residue blocks BDr.sub.u,1, BDr.sub.u,2, . . . , BDr.sub.u,Mi are obtained.
[0160] During a step C10 represented in
[0161] In the particular case in which M.sub.i=1, that is to say that a single decoded residue block BDr.sub.u,v has been calculated, the decoded residue block BDr.sub.u is equal to the decoded residue block BDr.sub.u,v.
[0162] When M.sub.i≠1, more precisely, the decoded residue block BDr.sub.u is obtained by adding the M.sub.i decoded residue blocks BDr.sub.u,1, BDr.sub.u,2, . . . , BDr.sub.u,Mi using the following relationship:
[0163] The set of the aforementioned steps C9 to C10 are carried out by a calculation software module CAL2_CO as represented in
[0164] During a step C11 represented in
[0165] Such a step is implemented by an inverse predictive coding software module PRED.sup.−1_CO represented in
[0166] Coding steps C2 to C11 that have just been described above are then implemented for each of the blocks B.sub.1, B.sub.2, . . . , B.sub.u, . . . , B.sub.S to be coded from the current image IC.sub.j under consideration.
[0167] The coding method that has just been described above requires fewer calculation operations than in the aforementioned prior art, given that in calculation step C5, the residue block Br.sub.u is multiplied pixel by pixel by a predefined number M.sub.i of blocks having K pixels BT.sub.1, BT.sub.2, . . . BT.sub.v, . . . , BT.sub.Mi that is smaller than the number K of pixels of the current block B.sub.u.
[0168] The result of this is that the data coded following entropy coding step C7 are fewer than in the prior art, which makes it possible to improve the transmission rate gain for such data to the decoder DO of
[0169] The four exemplary embodiments mentioned below indicate the number of operations in order to obtain the M.sub.i data X.sub.u,1, X.sub.u,2, . . . , X.sub.u,Mi following the implementation of calculation step C5: [0170] if M.sub.i=1 and K=256, only 256 multiplications need to be performed in comparison with the 2592 additions and 1056 multiplications performed when a fast transform of DCT or DST type is applied conventionally to a current block of 256 pixels, [0171] if M.sub.i=1 and K=16, only 16 multiplications need to be performed in comparison with the 72 additions and 40 multiplications performed when a fast transform of DCT or DST type is applied conventionally to a current block of 16 pixels, [0172] if M.sub.i=2 and K=256, only 256 additions and 512 multiplications need to be performed in comparison with the 2592 additions and 1056 multiplications performed when a fast transform of DCT or DST type is applied conventionally to a current block of 256 pixels, [0173] if M.sub.i=2 and K=16, only 16 additions and 32 multiplications need to be performed in comparison with the 72 additions and 40 multiplications performed when a fast transform of DCT or DST type is applied conventionally to a current block of 16 pixels.
[0174] In the case of HEVC coding, it is further possible to reduce the bit rate in the course of entropy coding step C7. As has already been explained earlier on in the introduction to the description, in accordance with HEVC coding, the quantized data are transmitted by indicating the position of the last nonzero quantized datum. Such a position is represented by two indicators called posX and posY that indicate, in the block Bq.sub.u of M.sub.i quantized data Xq.sub.u,1, Xq.sub.u,2, . . . , Xq.sub.u,Mi, the coordinates of the last nonzero quantized datum.
[0175] By virtue of the invention, the values of posX and/or posY can be prevented from being transmitted in the stream F.
[0176] According to a first example, in an embodiment in which M.sub.i=1, there is just a single quantized datum to be transmitted. The position of this single quantized datum is therefore known since it is necessarily the first quantized datum of the block Bq.sub.u. Thus, neither of the values of posX and/or posY is signaled in the stream F.
[0177] According to a second example, in an embodiment in which M.sub.i=2, there are just two quantized data Xq.sub.u,1, Xq.sub.u,2 to be transmitted. To this end, only the value of posX or of posY needs to be signaled, a single signaling being sufficient to cover the alternatives Xq.sub.u,1, or Xq.sub.u,2. Such a value of posX or posY may even be coded on a single bit, for example a bit set to 0 to indicate that the last nonzero quantized datum is Xq.sub.u,1 and a bit set to 1 to indicate that the last nonzero quantized datum is Xq.sub.u,2.
[0178] It is worth noting, however, that the distortion of the current image IC.sub.j may be increased taking account of the reduction in coded data that is obtained by virtue of the aforementioned coding method.
[0179] To limit this effect, according to another exemplary embodiment, the memory MEM_CO of the coder CO of
[0180] Referring to
[0181] The first group G.sub.1 contains a number M.sub.1 of blocks having a predetermined texture that is, by way of example, equal to the number of pixels of the current block, or K=16. Therefore, M.sub.1=16. Thus, as illustrated in
[0182] The second group G.sub.2 contains a number M.sub.2 of blocks having a predetermined texture, such that M.sub.2=1. Thus, as illustrated in
[0183] The third group G.sub.3 contains a number M.sub.3 of blocks having a predetermined texture, such that M.sub.3=2. Thus, as illustrated in
[0184] In accordance with the embodiment of
[0185] During step C51 represented in
[0186] More precisely, during step C51, for a considered group G.sub.i of blocks having a predetermined texture BT.sub.i,1, BT.sub.i,2 . . . BT.sub.i,v, . . . , BT.sub.i,Mi, for which a block BT.sub.i,v having a predetermined texture and considered in the group G.sub.i contains K pixels t.sub.i,v,1, t.sub.i,v,2, . . . , t.sub.i,v,g, . . . , t.sub.i,v,K, M.sub.i data X.sub.u,i,1, X.sub.u,i,2, . . . , X.sub.u,i,Mi are calculated, which are scalar values obtained using the following relationship:
[0187] At the end of step C51, L sets each having M.sub.1, M.sub.2, . . . , M.sub.i, . . . M.sub.L data are obtained.
[0188] During a step C610 represented in
[0189] During a step C611 represented in
[0190] At the end of step C611, L blocks of coded data BC.sub.u,1, BC.sub.u,2, . . . , BC.sub.u,i, . . . , BC.sub.u,L are obtained.
[0191] During a step C612 represented in
[0192] During a step C613 represented in
[0193] During a step C614 represented in
[0194] Such a calculation step is performed by an information coding software module MCI_CO, as represented in
[0195] Identical steps to each of steps C8 to C11 of
[0196] The coding method that has just been described in connection with
[0197] According to an embodiment of the coding method of
[0200] According to a preferred embodiment: [0201] a group from among the L groups G.sub.1, G.sub.2, . . . , G.sub.i, . . . , G.sub.L of pixel blocks contains K blocks having a predetermined texture, [0202] the remaining L−1 groups of pixel blocks each contain a single block having a predetermined texture.
[0203] In a particular case in which M.sub.i=K, the operation allowing: [0204] either calculation, during the aforementioned step C5, of the K data X.sub.u,1, X.sub.u,2, . . . , X.sub.u,K, [0205] or calculation, during the aforementioned step C51, of the K data X.sub.u,i,1, X.sub.u,i,2, . . . , X.sub.u,i,K,
is a transform of DST or DCT type as used in the HEVC standard, for example.
[0206] Thus, the obtainment of the K data X.sub.u,1, X.sub.u,2, . . . , X.sub.u,K or of the K data X.sub.u,i,1, X.sub.u,i,2, . . . , X.sub.u,i,K is advantageously implemented using a fast algorithm well known to a person skilled in the art.
[0207] Advantageously, the number L−1 is chosen as a power of 2. In this way, the index of the group associated with the block BC.sub.u,o of coded data that is selected following step C613 of
[0210] In the case of a flag set to 1, the index i of the group G.sub.i associated with the block BC.sub.u,o of coded data that is selected following step C613 and that forms part of the L−1 remaining groups of pixel blocks that each contain a single block having a predetermined texture is coded during the aforementioned step C614. Such an index may be represented by a code having a fixed or variable length (of Huffman or arithmetic code type).
[0211] In accordance with the preferred embodiment described above, it has been observed that with L=5, L=9, L=17 or L=33, the coder CO of
[0212] More precisely, the best coding performance levels are obtained: [0213] for a current block B.sub.u of 16 pixels, with a group containing 16 blocks having a predetermined texture and 32 other groups each containing a single block having a predetermined texture, [0214] for a current block B.sub.u of 64 pixels, with a group containing 16 blocks having a predetermined texture and 32 other groups each containing a single block having a predetermined texture.
[0215] According to a variant embodiment represented in
[0218] Whether the coding method according to the invention is implemented according to the embodiment represented in
[0219] Such a method involves generating one or more groups of blocks having a predetermined texture by learning.
[0220] To this end, prior to the coding method according to the invention, a large number of blocks of residue data is collected.
[0221] Learning is carried out in two main steps.
[0222] According to a first step, one or more different groups GP.sub.1, GP.sub.2, . . . , GP.sub.w, . . . , GP.sub.L of blocks of residual data, where 1≦w≦L, are gathered together.
[0223] This gathering step is performed by comparing a distortion criterion obtained after coding/decoding residual data by each group of texture blocks of a set of L groups of texture blocks G.sub.1, G.sub.2, . . . , G.sub.w, . . . , G.sub.L that each comprise M.sub.1, M.sub.2, . . . , M.sub.w, . . . , M.sub.L texture blocks. A considered block of residual data is assigned to a considered group GP.sub.w if the lowest distortion is obtained by the coding of this considered block of residual data with the corresponding group G.sub.w of texture blocks.
[0224] A group GP.sub.w containing a given number N.sub.w of blocks BR.sub.w,1, BR.sub.w,2, . . . , BR.sub.w,z, . . . , BR.sub.w,Nw of residual data is then considered from among the groups GP.sub.1, GP.sub.2, . . . , GP.sub.w, . . . , GP.sub.L.
[0225] According to a second step, for said considered group GP.sub.w, the group of texture blocks for this group is updated.
[0226] To this end: [0227] N.sub.w current quantized residual blocks Bq.sub.u,w,1, Bq.sub.u,w,2, . . . , Bq.sub.u,w,z, . . . , Bq.sub.u,w,Nw, are constructed, [0228] the N.sub.w current quantized residual blocks Bq.sub.u,w,1, Bq.sub.u,w,2, . . . , Bq.sub.u,w,z, . . . , Bq.sub.u,w,Nw are decoded in order to obtain N.sub.w decoded residual blocks BDr.sub.u,w,1, BDr.sub.u,w,2, . . . , BDr.sub.u,w,z, . . . , BDr.sub.u,w,Nw, respectively using conventional dequantization techniques.
[0229] The texture blocks of the group Gw are then updated in order to make them more suited to the coding of the residual data blocks. This update is performed by an identification method between the set of residual data of the considered group GP.sub.w and the quantized residual data with the group G.sub.w of texture blocks. This identification of the optimum group of texture blocks can be performed conventionally by singular value decomposition (SVD) or by analysis of main components in order to update the set of texture blocks BT.sub.w,1, BT.sub.w,2, . . . BT.sub.w,v, . . . , BT.sub.w,Mw allowing the group of texture blocks minimizing a distortion criterion to be found.
[0230] The above process is reiterated, namely the blocks of residual data of the group GP.sub.w are again coded by the set of updated texture blocks BT.sub.w,1, BT.sub.w,2, . . . BT.sub.w,v, . . . , BT.sub.w,Mw, and then said texture blocks are updated until convergence of the distortion criterion is obtained.
[0231] The operations performed during this step are reiterated for each of the groups GP.sub.1 to GP.sub.L of blocks of residual data in order to obtain G.sub.1 to G.sub.L groups, respectively, of corresponding texture blocks.
[0232] The first and second steps are then reiterated until convergence of the sum of the distortions obtained for each of the groups GP.sub.1, GP.sub.2, . . . , GP.sub.w, . . . , GP.sub.L of blocks of residual data is obtained. The aforementioned first and second steps may also include a metric taking into account the number of quantized data transmitted, particularly using an estimation of the bit rate for a given quantization.
Detailed Description of the Decoding Part
[0233] An embodiment of the decoding method according to the invention will now be described, in which the decoding method is implemented in a software or hardware manner by modifications to a decoder initially conforming to the HEVC standard. The decoding method according to the invention is represented in the form of an algorithm having steps D1 to D9 as represented in
[0234] As illustrated in
[0235] The decoding method represented in
[0236] To this end, information representing the current image IC.sub.j to be decoded is identified in the data signal or stream F received on the decoder, as delivered following the coding method of
[0237] Referring to
[0238] Such an identification step is implemented by a stream analysis identification module MI_DO, as represented in
[0239] The quantized blocks Bq.sub.1, Bq.sub.2, . . . , Bq.sub.u, . . . Bq.sub.S are intended to be decoded in a predetermined scanning order, which is sequential, for example, that is to say that said blocks are intended to be decoded one after the other in accordance with the raster scan order in which they have been coded.
[0240] Types of handling other than that which has just been described above are of course possible and depend on the handling order chosen on coding, examples of which have been mentioned above.
[0241] In the preferred embodiment, the blocks to be decoded have a square shape and all have the same size. Depending on the size of the image, which is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks at the bottom may not be square. In an alternative embodiment, the blocks may be of rectangular size and/or not aligned with one another, for example.
[0242] Each block may moreover be itself divided into subblocks that are themselves subdivisible.
[0243] During a step D2 represented in
[0244] During a step D3 represented in
[0248] Only when the coding method of
[0249] Such a piece of identification information consists of the index i of the group G.sub.i, for example.
[0250] This reading step D3 is of no use when the coding method of
[0251] The reading step D3 is performed by a reading software module ML_DO, as represented in
[0252] More precisely, the reading step D3 comprises a substep D31 of decoding the amplitude and sign information associated with each of the M.sub.i coded quantized data of the block Bq.sub.u of quantized data. In the preferred embodiment, the data decoding is entropy decoding of arithmetic or Huffman type. The substep D31 then involves: [0253] reading the symbol(s) from the predetermined set of symbols that are associated with said block Bq.sub.u of quantized data, [0254] associating digital information, such as bits, with the read symbol(s).
[0255] At the end of the aforementioned substep D31, a number M.sub.i of pieces of digital information each associated with the M.sub.i quantized data Xq.sub.u,1, Xq.sub.u,2, . . . , Xq.sub.u,Mi that have been coded during the aforementioned step C7 is obtained.
[0256] As is known per se, during the aforementioned substep D31, the index opt of the optimum predictor block BP.sub.opt that has been used to predict the current block in step C3 of
[0257] Such an entropy decoding substep D31 is implemented by an entropy decoding software module MDE represented in
[0258] During a step D4 represented in
[0259] Such a dequantization step is performed by an inverse quantization software module MQ.sup.−1_DO, as represented in
[0260] During a step D5 represented in
[0261] The abovementioned identification step D5 is performed by a processing software module TR_DO, as represented in
[0262] In the example represented in
[0263] When it is the coding method of
[0264] When it is the coding method of
[0265] In a manner similar to decoding method according to the invention, a block BT.sub.v having a predetermined texture and considered in the group G.sub.i contains K pixels t.sub.v,1, t.sub.v,2, . . . , t.sub.v,g, . . . , t.sub.v,K.
[0266] During a step D6 represented in
[0267] At the end of step D6, M.sub.i decoded blocks Br.sub.u,1, Br.sub.u,2, . . . , Br.sub.u,Mi of residual data are obtained.
[0268] During a step D7 represented in
[0269] In the particular case in which M.sub.i=1 and K=16, that is to say that a single decoded residual block Br.sub.u,v has been calculated, the decoded residual block Br.sub.u is equal to the decoded residual block Br.sub.u,v.
[0270] Such a provision is particularly advantageous on decoding because the number of data to be decoded is far smaller than in the prior art for which M.sub.i=K. The result of this is less complex and faster decoding.
[0271] When M.sub.i≠1, the decoded residual block Br.sub.u is obtained by adding the M.sub.i decoded residual blocks Br.sub.u,1, Br.sub.u,2, . . . , Br.sub.u,Mi.
[0272] More generally, step D7 is expressed according to the following relationship:
[0274] At the end of step D7, a decoded residual block Br.sub.u having K pixels xq.sub.1, xq.sub.2, . . . , xq.sub.K is obtained.
[0275] The set of the aforementioned steps D6 to D7 is carried out by a calculation software module CAL_DO as represented in
[0276] During a step D8 represented in
[0277] Such a step is implemented by an inverse predictive decoding software module PRED.sup.−1_DO represented in
[0278] At the end of step D8, the decoded block B.sub.u obtained is stored in the buffer memory TAMP_DO of
[0279] During a step D9 represented in
[0280] Such a step is implemented by an image reconstruction software module URI as represented in
[0281] Decoding steps D2 to D9 that have just been described above are then implemented for each of the blocks B.sub.1, B.sub.2, . . . , B.sub.u, . . . , B.sub.S to be decoded for the current image IC.sub.j under consideration.
[0282] In a variant embodiment of the decoding method as represented in
[0283] Such a step is implemented by the reading module ML_DO of
[0284] Still referring to
[0287] It goes without saying that the embodiments that have been described above have been provided purely by way of indication and without applying any limitation, and that numerous modifications can easily be made by a person skilled in the art without, however, departing from the scope of the invention.