GB2494469A - Intra mode coding using probabilities of occurrence of different prediction modes - Google Patents

Intra mode coding using probabilities of occurrence of different prediction modes Download PDF

Info

Publication number
GB2494469A
GB2494469A GB1115740.1A GB201115740A GB2494469A GB 2494469 A GB2494469 A GB 2494469A GB 201115740 A GB201115740 A GB 201115740A GB 2494469 A GB2494469 A GB 2494469A
Authority
GB
United Kingdom
Prior art keywords
mode
encoding
value
probability
text
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB1115740.1A
Other versions
GB201115740D0 (en
GB2494469B (en
Inventor
Edouard Francois
Guillaume Laroche
Patrice Onno
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to GB1115740.1A priority Critical patent/GB2494469B/en
Publication of GB201115740D0 publication Critical patent/GB201115740D0/en
Publication of GB2494469A publication Critical patent/GB2494469A/en
Application granted granted Critical
Publication of GB2494469B publication Critical patent/GB2494469B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

A method of encoding mode information representing a prediction mode for encoding of a current coding unit (CU, e.g., pixel block) by intra mode coding, the prediction mode being one of plural prediction modes (e.g., most probable modes, MPM), comprises: storing for each of the plural prediction modes a probability value representing the occurrence probability of that prediction mode; updating the prediction mode probability value each time the prediction mode is encoded; and adjusting, at intervals based on encoding of a predetermined number of blocks (coding units), the probability values of at least a subset of the plural prediction modes. Probability values may be re-adjusted by applying a common predetermined factor. The predetermined number of coding units (blocks) may correspond to the number composing one or multiple Largest Coding Units (LCUs) being encoded, or depend on the fixed maximum count, representative of the probability value; value adjustment may be applied for each different LCU. The predetermined CU or block number may prevent maximum counts being reached. Probability values may be divided, e.g. by a factor of 2. Prediction modes may be ranked; VLC coding may be used.

Description

METHOD AND DEVICE FOR ENCODING OR DECODING INFORMATION
REPRESENTING PREDICTION MODES
Field of the invention
The invention relates to a method and a device for encoding or decoding mode values representing prediction modes. Particularly, but not exclusively the invention relates more specifically to intra mode coding in the High Efficiency Video Coding (HEVO) standard under development.
Description of the prior-ad
Video applications are continuously moving towards higher resolution. A large quantity of video material is already distributed in digital form over broadcast channels, digital networks and packaged media, with a continuous evolution towards higher quality and resolution (e.g. higher number of pixels per frame, higher frame rate, higher bit-depth or extended color gamut). This technology evolution brings higher pressure on the distribution networks that are already facing difficulties to carry HDTV resolution and data rates economically to the end user. Therefore, any further data rate increase will put additional pressure on the networks. To handle this challenge, ITU-T and ISO/MPEG decided to launch in January 2010 a new video coding standard project, named High Efficiency Video Coding (HEVC).
The HEVC codec design is similar to that of most previous so-called block-based hybrid transform codecs such as H.263, H.264, MPEG-i, MPEG-2, MPEG-4, SVC. Video compression algorithms such as those standardized by the standardization bodies ITU, ISO and SMPTE use the spatial and temporal redundancies of the images in order to generate data bit streams of reduced size compared with these video sequences. Such compressions make the transmission and/or storage of the video sequences more effective.
During video compression in the proposed HEVC encoder, each block of pixels (referred to as Coding Units (CU) in HEVC) of an image being processed is predicted spatially by an "Intra" predictor (so-called "Intra" coding mode), or temporally by an Inter" predictor (so-called "Inter" coding mode). Each predictor is a block of pixels issued from the same image or another image, from which a difference block (or "residual") is derived. In the Intra coding mode the predictor (Intra predictor) used for the current block is a block of pixels constructed from the information already encoded of the current image. By virtue of the identification of the predictor block and the coding of the residual, it is possible to reduce the quantity of information actually to be encoded.
The encoded frames are of two types: temporal predicted frames (either predicted from one reference frame called P-frames or predicted from two reference frames called B-frames) and non-temporal predicted frames (called Intra frames or I-frames). In I-frames, only Intra prediction is considered for coding blocks. In P4rames and B-frames, lntra and Inter prediction are considered for coding blocks.
If "Intra" coding is selected, an item of information for describing the "Intra" predictor used is coded before being inserted in the bit stream to be sent to a corresponding decoder In the current HEVC design, as well as in previous designs such as MPEG-4 AVCII-1.264, intra coding involves deriving an intra prediction block from reconstructed neighboring samples 101 of the block to be encoded (decoded), as illustrated schematically in Figure 1A. Multiple prediction modes are supported, either directional or non-directional. In HEVC the number of supported modes depends on the size of a CU. As at the filing date of the present application the HEVC specification is still subject to change but presently the following supported modes are contemplated: 4 modes for 64x64 CU, 18 modes for 4x4 Cu, 35 modes for CU of other sizes (8x8 to 32x32). As can be seen CU sizes may vary. It may be noted that in HEVC each CU is contained in a Largest Coding Unit (LCU). One characteristic of a LOU is to have a fixed size, generally of 64x64.
When a CU is intra coded, its related intra prediction mode has to be coded. Referring to Figure 1B, when coding a current CU 102, Intra mode coding makes use of two neighbouring CUs that have already been coded, namely the Top and Left CUs 103 and 104.
Figure 2A illustrates intra prediction modes considered in HEVC. The intra prediction modes include a planar prediction mode identified by a mode prediction value 0, a DC mode having a mode prediction value 3 and a number of directional prediction modes identified by mode prediction values 4 to 34 for predicting directional structures in an image a different angles. Also included are horizontal prediction mode 2 and verUcal prediction mode 1.
Figure 2B is a flowchart for use in explaining how Intra mode coding is performed in the current I-IEVC design. In a first step S201 the Intra prediction modes of the neighboring Top and Left GUs 103 and 104 are identified. The two GUs may share the same Intra prediction mode or may have different lntra prediction modes. Accordingly, in step S201 one or two different intra prediction modes can be identified. In step S202, two Most Probable Modes' (MPMs), are derived from the identified intra prediction modes. If the prediction modes of the Top and Left GUs 103 and 104 are different, then two MPMs, MPM and MPM2, are set to respectively the minimum and maximum value of the Top and Left CU prediction modes. If the prediction modes from the Top and Left GUs 103 and 104 are equal, and if they do not correspond to the Planar prediction mode, then MPM is set equal to Planar mode and MPM2 is set to the prediction mode of the Top or Left GUs prediction mode. If the prediction modes of the Top and Left CUs 103 and 104 both correspond to the Planar mode, then MPM is set equal to the Planar mode and MFM2 is set to the DC mode. MPM and MPM2 are thus ordered according to their prediction mode values, the prediction mode having the smaller mode value being referred to as MPM and the prediction mode having the greater mode value being referred to as MPM2. In step S203 the prediction mode of the current coding unit is then compared to the two MPMs. If the prediction mode of the current coding unit is equal to either MPM or MPM2 then in step S204 a first coding process (process 1) is applied.
This first coding process involves coding a flag signaling that the mode of the current block is equal to one of the MPMs, and then, coding the index of the MPM concerned (0 if MPM, 1 if MPM2).
If in step S203 it is determined that the prediction mode of the current block is not equal to one of the two MPMs, then in step S205 a second coding process (process 2)is applied.
Unlike the first coding process, the second coding process involves coding the mode value of the current block.
Two entropy coding methods are proposed for use in HEVC: syntax-based context-adaptive binary arithmetic coding (SBAC), proposed for use in high coding efficiency configurations, and context-adaptive variable-length coding (CAVLC), proposed for use in low complexity configurations. The first and second intra mode coding processes in S204 and S205 differ depending on these two coding methods, as explained below.
Figure 3 is a flowchart for use in explaining intra mode coding with SBAC. Steps S301, S302 and S303 are the same as steps S201, 5202 and S203, respectively, in Figure 2B and are not described again here.
In step S303, when the mode value is equal to one of the two MPMs, process 1 is applied and processing jumps to step 5306. First, a bit-value 1' is coded to signal that the mode is a MPM (step S306). In step S307 an additional flag is coded to indicate the index of the MPM that is equal to the mode.
In step S303, when the mode is not equal to either of the two MPMs, processing jumps to step 8309 and process 2 is applied. First, a bit-value 0' is coded to signal that the mode is not a MPM (step 5309). The mode value is then selectively decremented by 1 or 2 in step S310. In particular, if the mode value is greater than or equal to MPM (the lower of the two identified MPMs) and greater than or equal to MPM2 (the higher of the two identified MPMs) then the mode value is decremented by 2. If the mode value is less than MPM2 (the higher of the two identified MFMs) but greater than or equal to MPM (the lower of the two identified MPMs) then the mode value is decremented by 1.
Otherwise, the mode value of the current block is not decremented.
In step S311 the resulting mode value is then binarized. In step S312 each bin of the binarized value is finally coded by the SBAC entropy coder.
Figure 4 is a flowchart for use in explaining intra mode coding with CAVLC. Steps S401, S402 and S403 are the same as steps S201, 5202 and S203, respectively, in Figure 2B, and are not described further here.
In CAVLC, one VLC table is defined, with size N-2, where N is the number of possible intra modes. In addition, one index table is defined, with size N-2. These tables serve as ranking tables, related to the probabilities of the modes.
Each index table stores a list of ranks for N-2 index values. An example of an N-2 index table 504 for coding a 4x4 CU having 18 modes is shown in Figure 5. It has entries for index values 0 to 15, each entry storing the rank for the index value concerned. The ranks are adaptively modified, such that a made value that is coded more frequently will have a smaller rank (close to 0), whereas a mode value that is coded more rarely will have a higher rank.
Each VLC table stores a list of VLC codes for the N-2 rank values. An example of an N-2 VLC table 505 for coding a 4x4 CU having 18 modes is shown in Figure 5. It has entries for index values 0 to 15, each entry storing a VLC code for the index value concerned. The VLC table 505 is ordered based on the VLC code length. VLC code 0 is the shortest one, and VLC code 15 is the longest one. Hence a mode that is frequent will be ranked with a low value, and therefore use a short VLC code, which results in reduced coding cost.
When the mode is equal to one of the MPMs, process 1 is applied and works as follows. First, in step S406 a specific VLC codeword, e.g. VLC 0, is coded to signal that the mode is a MPM. In step 5407 a flag is coded to indicate the index of the MPM that is equal to the mode.
When the mode is not to one of the two MPMs, process 2 is applied and works as follows. The mode is selectively decremented by 1 or 2 in step S410.
This corresponds to step 5310 in Figure 3. The mode, decremented as necessary in step 5410, is used as an index into the relevant index table 504 of size N-2. Then, in step 5412 the rank dXmode of the index (i.e the mode decremented as necessary in S410) is obtained from the index table 504 of size N-2. This is illustrated schematically at 501 in Figure 5. This rank actually reflects the probability of the index value which, as noted above, may differ from the current mode value because of the selective decrementing in S410.
For example, as illustrated in Figure 5, suppose that the mode value is 14 and that MPM has mode value 2 and MPM2 has mode value 6. In this case, because the mode value is greater than or equal to the mode values of MPM and MPM2, the mode value is decremented by 2 and so the index value becomes 12. Index value 12 has rank 11 and this rank is retrieved from the
index table 504.
In step S414 the rank dXmode of the index value is then coded using the VLC table 505 of size N-2, as illustrated schematically at 502 in Figure 5.
Finally, in step 5416 the index table 504 of size N-2 is updated by a swapping process, as illustrated schematically at 503 in Figure 5. In the swapping process the rank immediately preceding the rank of the current index is incremented by 1 and the rank of the current index is decremented by 1. This makes the current index more probable than the index whose rank formerly immediately preceded the rank of the current index.
For example, in Figure 5, index value 12 has rank 11 and index value 2 has rank 10 immediately preceding the rank of the current index. Thus, in the swapping process, the indices for mode values 12 and 2 are swapped so that, after swapping, index value 12 has rank 10 and index value 2 has rank 11. The resulting index table is denoted by 506 in Figure 5.
The coding processes described above with reference to Figures 3 to 5 suffer from several problems.
Firstly, there is no link between the two coding processes invoked in intra mode coding. In particular, the modes probabilities used in process 2 do not benefit at all from what happens in process 1. This may result in a loss of coding efficiency.
Secondly, in the SBAC case, when process 1 is applied, the order of the modes is fixed (not adaptive) and does not take into account their probability.
SBAC encodes the different bins of the binarised index with a single coding engine (also usually named context). Because the binarisation is fixed and applies identically for all the possible values to be coded, the probabilities of bins 0 and 1 are generally rather similar. This affects the arithmetic coding which is more efficient when the bins are unequally distributed. If the binarisation generates a less balanced distribution of bins 0 and 1, this would result in a better efficiency of the arithmetic coding engine (less bitrate).
It is desirable to address one or more of the problems in the prior art described above.
It is also desirable to improve the coding efficiency in intra mode coding.
It is also desirable to take account of the outcome of process 1 when carrying out intra mode coding.
It is also desirable for the order of the modes to be adaptive in process 1, so as to take into account the probabilities of the modes.
Note that the probabilities associated to each mode are stored in tables.
These probabilities are implemented I the form of counters, each counter having a limited range in order to limit the required memory space. Each time a mode is coded the associated counter is updated (incremented by 1). This implementation risks to induce counters saturations which may result in incorrect probability values. Currently in order to avoid saturation, the counter value is checked each time a mode is coded. When the counter limit is met, all counters values are updated (i.e. divided by 2).
It is also and therefore desirable to provide a more efficient and less complex technique for updating probability tables used for intra mode coding.
It is further desirable to limit risks of saturation of counters, used for intra mode coding.
The present invention has been devised to address one or more of the foregoing concerns and desires.
According to a first aspect of the invention there is provided a method of encoding mode information representing a prediction mode for encoding of a current encoding unit by an intra mode coding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing for each of the plurality of prediction modes a probability value representative of the probability of occurrence of the prediction mode concerned, updating the probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit, and performing, from time to time, a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes: wherein, the value adjustment operation is performed regularly at predetermined intervals based on encoding of a predetermined number of encoding units,.
Since resetting of the probability tables is performed on a predefined regular basis the need for systematic checking after each updating of probability values is avoided. The number of reset operations performed can be reduced leading to reduced complexity.
the predetermined number of encoding units corresponds to the number of coding units composing one or multiple Largest Coding Units of an image being encoded.
In an embodiment the value adjustment operation is performed for each different Largest Coding Unit.
In an embodiment the predetermined number of encoding units depends on the fixed maximum count value of a counter storing a count value representative of the respective probability value.
In an embodiment the predetermined number of encoding units is determined to prevent the fixed maximum count value of each counter being reached.
In an embodiment the adjustment operation comprises dividing each said probability value of the at least subset of probability values by a common factor. For example the common factor may be 2.
In an embodiment for each prediction mode a first and a second probability value representative of the probability of occurrence of the prediction mode concerned are stored, the first and second probability value of the respective prediction mode being updated each time said prediction mode is encoded for an encoding unit, and wherein the value adjustment operation is performed on the at least subset of first probability values at predetermined intervals based on encoding of a predetermined number Ki of encoding units of a first size and the value adjustment operation is performed on the at least subset of second probability values at predetermined intervals based on encoding of a predetermined number K2 of encoding units of a second size, wherein the number K1 is different to the number K2, and the first size is different to the second size.
In an embodiment the method includes attributing, to each prediction mode, a ranking value based on the probability value of the respective prediction mode with respect to the probability values of the other prediction modes of the plurality of prediction modes.
In an embodiment the method includes updating the ranking values based on the readjustment of the probability values.
In an embodiment the mode information to be encoded comprises the ranking value of the prediction mode to be encoded.
In an embodiment the mode information is coded by VLC coding, the size of the VLC code word being based on the ranking value.
In an embodiment the method includes swapping the respective rankings of the mode information to be encoded and the mode information, if any, whose ranking immediately precedes the ranking of the mode information to be encoded.
In an embodiment said swapping is carried out after each encoding process.
In an embodiment the method includes binarising the mode information to generate bins and applying arithmetic coding to the bins.
In an embodiment the said encoding process for encoding the mode information is one of a plurality of selectable mode information coding processes, an other of the plurality of selectable mode information coding processes comprising encoding first information indicating a predetermined relationship between the mode information to be encoded and at least one predetermined value.
In an embodiment the said encoding process takes account of the outcome of at least one prior said other encoding process.
In an embodiment the other encoding process is selected when the mode information to be encoded is equal to the or one said predetermined value, and the said encoding process is selected when the mode information to be encoded differs from the or each said predetermined value, In an embodiment the mode information to be encoded relates to a current encoding unit to be encoded and the or each said predetermined value is a previously-encoded mode value relating to an encoding unit neighbouring the current encoding unit.
In an embodiment the respective previously-encoded mode values relating to two or more encoding units neighbouring the current encoding unit are compared and the number of predetermined values is one if the respective mode values of said two or more encoding units are the same, and is two or more if the respective mode values of said two or more encoding units are different.
In an embodiment the encoding process for encoding the mode information has at least first and second coding tables of different sizes, the first coding table being used when there is a first number of predetermined values and the second coding table being used when there is a second number of predetermined values different from said first number, and the mode information being used as index information for both said first and second coding tables, and wherein a common index table is used to derive the index information for both said first and second tables from the mode value to be encoded.
According to a second aspect of the invention there is provided a device for encoding mode information representing a prediction mode related to a current encoding unit, the prediction mode being one of a plurality of prediction modes, the device comprising: storage means for storing, for each of the plurality of prediction modes, a probability value representative of the probability of occurrence of the prediction mode concerned; updating means for updating the probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit; and adjustment means for performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein the adjustment means is operable to perform the value adjustment operation regularly at predetermined intervals based on encoding of a predetermined number of encoding units.
In an embodiment, the predetermined number of coding units corresponds to the number of encoding units composing one or multiple Largest Coding Units of an image being encoded.
In an embodiment, the readjustment means is operable to perform the adjustment operation for each different Largest Coding Unit.
In an embodiment, the predetermined number of encoding units depends on the fixed maximum count value of a counter of the storage means storing a count value representative of the respective probability value.
In an embodiment, the predetermined number of coding units is determined to prevent the fixed maximum count value of each counter being reached.
In an embodiment, the adjustment means is operable to perform the value adjustment operation by dividing the at least subset of probability values by a common factor. For example the common factor may be 2.
In an embodiment, the storage means is configured to store for each prediction mode a first and a second probability value representative of the probability of occurrence of the prediction mode concerned, the updating means is configured to update the first and second probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit, and wherein adjustment means is configured to perform the value adjustment operation on the at Feast subset of first probability values at predetermined intervals based on encoding of a predetermined number Ki of encoding units of a first size and on the at least subset of second probability values at predetermined intervals based on encoding of a predetermined number K2 of encoding units of a second size, wherein the number Ki is different to the number K2, and the first size is different to the second size.
In an embodiment, the device includes ranking means for attributing, to each prediction mode, a ranking value based on the probability value of the respective prediction mode with respect to the probability values of the other prediction modes of the plurality of prediction modes.
In an embodiment, the updating means is operable to update the ranking values based on the readjustment of the probability values.
In an embodiment, the mode information to be encoded comprises the ranking value of the prediction mode to be encoded.
In an embodiment, the device includes encoding moans for encoding the mode information is coded by VLC coding, the size of the VLC code word being based on the ranking value.
In an embodiment, the updating means is operable to swap the respective rankings of the mode information to be encoded and the mode information, if any, whose ranking immediately precedes the ranking of the mode information to be encoded.
In an embodiment, the updating means is operable to perform said swapping after each encoding process.
In an embodiment, the device includes binarising means for binarising the mode information to generate bins and applying arithmetic coding to the hins In an embodiment, the device includes first encoding means for encoding the mode information and second encoding means for encoding first information indicating a predetermined relationship between the mode information to be encoded and at least one predetermined value In an embodiment, the first encoding means is operable to take account of the outcome of at least one prior encoding process performed by the second encoding means.
In an embodiment, the second encoding means is operated when the mode information to be encoded is equal to the or one said predetermined value, and the first encoding means is operated when the mode information to be encoded differs from the or each said predetermined value.
In an embodiment, the mode information to be encoded relates to a current encoding unit to be encoded and the or each said predetermined value is a previously-encoded mode value relating to an encoding unit neighbouring the current encoding unit.
In an embodiment, comparing means are provided for comparing the respective previously-encoded mode values relating to two or more encoding units neighbouring the current encoding unit and wherein the number of predetermined values is one if the respective mode values of said two or more encoding units are the same, and is two or more if the respective mode values of said two or more encoding units are different In an embodiment, the device includes means for storing at least first and second coding tables of different sizes, the first coding table being used when there is a first number of predetermined values and the second coding table being used when there is a second number of predetermined values different from said first number, and the mode information being used as index information for both said first and second coding tables, and wherein a common index table is used to derive the index information for both said first and second tables from the mode value to be encoded.
According to a third aspect of the invention there is provided a method of decoding mode information representing a prediction mode for decoding of a current decoding unit by an intra mode decoding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing for each of the plurality of prediction modes a probability value representative of the probability of occurrence of the prediction mode concerned, updating the probability value of the respective prediction mode each time said prediction mode is decoded for a decoding unit, and performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein, the value adjustment operation is performed regularly at predetermined intervals based on decoding of a predetermined number of decoding units.
According to a fourth aspect of the invention there is provided a device for decoding mode information representing a prediction mode related to a current decoding unit, the prediction mode being one of a plurality of prediction modes, the device comprising: storage means for storing, for each of the plurality of prediction modes, a probability value representative of the probability of occurrence of the prediction mode concerned; updating means for updating the probability value of the respective prediction mode each time said prediction mode is decoded for a decoding unit; and adjustment means for performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein the adjustment means is operable to perform the value adjustment operation regularly at predetermined intervals based on decoding of a predetermined number of decoding units.
It will be appreciated that features of embodiments of the encoding method and encoding device may also be appropriately applied for the decoding method and decoding device.
According to a further aspect there is provided a method for encoding mode information representing a prediction mode for encoding of a current coding unit by an intra mode coding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing, for each of the plurality of prediction modes, a probability count value representative of the probability of occurrence of the prediction mode concerned; updating the probability count value of the respective prediction mode each time said prediction mode is encoded for a coding unit; and, performing from time to time a count value adjustment operation to adjust the respective probability count values of at least a subset of the prediction modes so as to prevent overflow of the probability count values; wherein the count value adjustment operation is not performed in response to the updating of the probability count value and is performed at predetermined intervals.
According to a yet further aspect there is provided a method for decoding mode information representing a prediction mode for decoding of a current decoding unit by an intra mode decoding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing, for each of the plurality of prediction modes, a probability count value representative of the probability of occurrence of the prediction mode concerned; updating the probability count value of the respective prediction mode each time said prediction mode is decoded for a decoding unit; and, performing from time to time a count value adjustment operation to adjust the respective probability count values of at least a subset of the prediction modes so as to prevent overflow of the probability count values; wherein the count value adjustment operation is not performed in response to the updating of the probability count value and is performed at predetermined intervals.
According to an even further aspect there is provided a device for encoding mode information representing a prediction mode for encoding of a current coding unit by an intra mode coding process, the prediction mode being one of a plurality of prediction modes, the device comprising: storing means for storing, for each of the plurality of prediction modes, a probability count value representative of the probability of occurrence of the prediction mode concerned; updating means for updating the probability count value of the respective prediction mode each time said prediction mode is encoded for a coding unit; and, count value adjustment means for performing from time to time a count value adjustment operation to adjust the respective probability count values of at least a subset of the prediction modes so as to prevent overflow of the probability count values; wherein the count value adjustment means is not operable to perform the count value adjustment operation in response to the updating of the probability count value and is operable to perform the count value adjustment operation at predetermined intervals. A corresponding device for decoding mode information in the same manner is also provided in a further aspect.
The count value adjustment operation may be performed after encoding or decoding a predetermined number of coding units or for each different Largest Coding Unit, for example.
The count value adjustment operation may comprise dividing each said probability count value by a common factor.
At least parts of the methods according to the invention may be computer implemented. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit", "module" or "system". Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
Since the present invention can be implemented in software, the present invention can be embodied as computer readable code for provision to a programmable apparatus on any suitable carrier medium. A tangible carrier medium may comprise a storage medium such as a floppy disk, a CD-ROM, a hard disk drive, a magnetic tape device or a solid state memory device and the like. A transient carrier medium may include a signal such as an electrical signal, an electronic signal, an optical signal, an acoustic signal, a magnetic signal or an electromagnetic signal, e.g. a microwave or RF signal.
Embodiments of the invention will now be described, by way of example only, and with reference to the following drawings in which:-Figures 1A and 1B, discussed hereinbefore, are schematic diagrams for use in explaining how an intra prediction block is derived in the current HEVC design; Figure 2A, also discussed hereinbefore, schematically illustrates intra prediction modes in the current HEVC design, Figure 2B, also discussed hereinbefore, is a flowchart for use in explaining intra mode coding in the current HEVC design; Figure 3, also discussed hereinbefore, is a flowchart for use in explaining intra mode coding using SBAC in the current HEVC design; Figure 4, also discussed hereinbefore, is a flowchart for use in explaining intra mode coding using CAVLG in the current HEVC design; Figure 5, also discussed hereinbefore, is a schematic diagram illustrating one example of the operation of the intra mode coding of Figure 4; Figure 6 is a flowchart for use in explaining a principle of intra mode coding according to at least one embodiment of the present invention; Figure 7 is a flowchart for use in explaining intra mode coding using SBAG according to a first embodiment of the present invention; and Figure 8 is a flowchart for use in explaining intra mode coding using GAVLC according to a second embodiment of the present invention.
Figure 9 is a schematic diagram illustrating one example of the operation of the second embodiment; Figure 10 shows a sequence of images; Figure 11 shows parts of apparatus suitable for implementing an encoder according to an embodiment of the present invention; Figure 12 shows a block diagram of parts of an encoder according to at least one embodiment of the present invention: and Figure 13 illustrates a block diagram of parts of a decoder.
Detailed Description of the Embodiments
Figure 6 is a flowchart for use in explaining a principle of an intra mode coding method embodying the present invention. The intra mode coding method according to this flowchart is applicable to SBAC, CAVLG and other entropy coding engines such as CABAC.
In Figure 6, steps S601, S602 and S603 are the same as steps S201, S202 and S203, respectively, in Figure 2B, and the description of these steps is not repeated here.
Process 1, which is carried out when the mode of the current block is equal to the one MPM or to one of the two MPMs, is implemented in step S604.
In some embodiments of the present invention, in particular embodiments intended to implement CAVLC, step S604 can be the same as step S204 in Figure 2B Process 2, which is carried out when the mode of the current block is different from the or each MPM, is implemented in step In particular, in certain images there is a dominant background mode over the picture as a whole but at certain positions foreground objects interrupt the dominant mode. After coding the CUs of foreground objects, background mode CUs reappear but, without a link between processes 1 and 2, these background mode GUs are coded without any priority. When there is frequent switching between a dominant mode and other modes, this may result in loss of coding efficiency. By making a link between the processes 1 and 2, it is possible to avoid forgetting the MPM when it is not used.
Figure 7 is a flowchart for use in explaining an intra coding method according to a first embodiment of the present invention. This embodiment is applied to an SBAC entropy coding engine.
Compared to the present HEVC design for SBAC, a first modification is the introduction of new tables, used to store and to update the probabilities of the coding modes. Two probability tables are added, one of 18 elements for the 4x4 blocks since 18 modes are authorized for 4x4 GUs, and another one of 35 elements for the 8x8 to 32x32 blocks since 35 modes are authorized for 8x8 to 32x32 GUs. Of course these numbers should be modified if the number of authorized modes is modified in future updates of the HEVC design.
Each probability table has an entry per mode value m (m 0, 1, ... N-I) which stores the value proba[m] of the probability of m. The probability value proba[m] is represented, in a counter, by a fixed number of bits, for example 8.
In this case, the range of the probability values proba[m] is from 0 to 255. These probability values are updated based on the outcomes of processes 1 and 2, as described below.
Optionally, two index (rank) tables can also be used, that are also adaptively updated based on the probability value of each mode. In these tables, the index (rank) of a mode indicates its order according to its probability.
The mode with the highest probability value has an index equal to 0, and the mode with the lowest probability has an index equal to N-i.
Steps S70i, 8702 and 3703 are the same as steps 5301, 5302 and 5303, respectively, and are not described further here.
When the current mode is equal to the one MPM or to one of the two MPMs, process 1 is carried out. Steps S706 and S707 are the same as steps S306 and S307, respectively, and are not described further here.
After process 1 has been carried out, processing jumps to step S717, which is described below.
When the mode is different from each MPM, process 2 is carried out.
Firstly, in step 8709 the bit-value 0' is coded to signal that the mode is not a MPM.
Then the index (rank) of the current mode, and of each MPM, is identified in step S7i 0 based on the probability value of the mode or MPM concerned, If an index table is used, this can be used to directly look up the rank. If no index table is used, the rank must be determined by comparing the probability values in the probability table As explained above, the mode with the highest probability has an index equal to 0, and the mode with the lowest probability has an index equal to N-1 Two related MAM indices are identified, as in step 3710.
In step S71 1 the index of the current mode is decremented by 1 for each related MPM index which is less than the current mode index. Thus, depending on the related MPM indices, the current mode index may stay the same or may be decremented by I or 2 in step 5711.
The resulting index value is then binarized in step 8712. The binarization is not applied to the decremented mode as in the current I-IEVC design (step S31 I in Figure 3), but on the decremented index (rank) of the mode. Compared to the previous design, the probabilities can be further exploited to improve the binarization process. Indeed a mode with a small rank is highly probable and could therefore be binarized using a shorter representation than more rare modes (similarly to how VLC works) In a preferred implementation, the binarization works as follows.
-Case of 4x4 block -18 modes are supported * If index is 0, the codeword 000' is coded * Else 4 or 5 bits are used to code the index -Case of 8x8 to 32x32 block -35 modes are supported * If index is 0, the codeword 0000 is coded * Else 5 or 6 bits are used to code the index Therefore the index 0 uses fewer bits, which finally results in an improved coding efficiency. In addition, this implementation of the binarization generates more bins 0 than bins 1 (since the most frequent codeword is 000'). Also small index values are coded more often (since they are more probable), and these small values, once binarized, tend to have more Os than is (1' binarized on 4 bins gives 0001', 15 gives 1111'). So the probability of 0 is higher than probability of 1, which makes the arithmetic coding performing better.
Finally, in step 5713 each bin of the binarized value is coded.
Once process 1 or process 2 has been applied, the probability table is updated in step 5714. Let m be the mode number, and proba[m] be the value of the probability of m. The updating process is performed as follows: -Increment the probability of m proba[m] = proba[mJ+1 II a rank table is used, it is also updated based on the updated probabilities. The rank of m is decremented if proba[mj -after being updated -is larger than its immediately preceding mode in the rank table.
Then for all the modes whose rank is greater than or equal to the new rank of m, the rank is incremented by 1.
In a simplified version, the ordering process is based on simple rank switching. The rank of the current mode m is switched with the rank of its preceding mode (having the immediately lower rank value) if the current mode m has a higher probability value. Similarly the following mode (having the immediately larger rank value) can also be checked and its rank switched with the rank of m if its probability is higher than the probability of the current mode m.
When process 2 is executed subsequently it can then use the updated probability table, or the updated rank table, to identify the mode rank (step S710).
At regular intervals in the coding process or in the image the probability table is reset to limit the risk of saturation of the counters storing the probability values. In the present example the entire probability table is reset at the start of encoding of each LCU of the image by readjusting each of the probability values by application of a common factor. In this example the common factor is a dividing factor of 2: For(n=OtoN-1) proba{n] = proba[n] I 2; This has the effect of halving each probability count value, whilst preserving the rankings and advantageously reduces the risk that one or more probability values reach the maximum authorized count value in the probability range (the authorised value is pre-defined; for example, as noted above it may be a value of 255, corresponding to a counter having 8 bits to represent the probability).
In alternative embodiments of the invention, the probability table may be readjusted at the start of encoding of a multiple k of LCUs, in accordance with a encoding order, where k is an integer.
In a further embodiment readjustment of the probability table may be performed at periodic intervals based on a predetermined number K of coded GUs. K can set equal to the maximum authorised value of the counters e.g. 255 or, at a value determined such that exceeding the maximum authorised value of the counters is limited.
In a further embodiment, a first probability table is associated with a CU of size 4x4, and a second probability table is associated with all other sized CUs In this particular embodiment, the two probability tables could be readjusted independently, the first probability table associated with 4x4 sized blocks being updated when a predetermined number KI of GUs have been coded, and the second probability table associated with the other sized blocks being updated when a predetermined number K2 of GUs have been coded.
As described above, the first embodiment introduces a new table of size N (N depending on the CU size), which is used as a probability table. This table is updated once process I or process 2 has been applied, according to the coded mode value. Process 2 is also modified in such a way that instead of coding the mode value, its rank according to the probability table is coded.
In the first embodiment, as described above, process I does not take into account the probabilities of the modes. However, a variant of the first embodiment is possible which enables process 1 to take account of the probabilities of the modes, too. In this variant, step S708 is modified to take into account the order of probabilities of the MPMs when MPM <> MPM2: -If the probability of MPM is greater than or equal to the probability of MPM2, flag 0 signifies mode=MPM, flag I signifies mode=MPM2 -Otherwise (i.e. if the probability of MPM2 is greater than the probability of MPM), flag 0 signifies modeMPM2, flag 1 signifies mode=MPM Thus, in process 1, instead of ordering the MPMs according to their mode values (MPM being the one with the smaller mode value and MFM2 being the one with the larger mode value), the ordering is done according to the MPM mode probability. The MPM which has the highest probability is ordered first. In case of equal probabilities, the first MPM is as before the one with the minimum mode value.
In this variant, in the SBAC case, the binarization can be improved by taking into account the mode probabilities. This will improve the coding efficiency.
Incidentally, in this variant step S702 is not modified, and initially the MPMs are ordered according to their mode values. However, in another variant of the first embodiment it would also be possible to directly modify step S702 to generate the same behavior without modifying step S708.
Figure 8 is a flowchart for use in explaining an intra coding method according to a second embodiment of the present invention. This embodiment is applied to a CAVLC entropy coding engine.
In the present embodiment, two index tables of N elements are needed, where N is the number of modes available for the block size. For example, it is currently contemplated to have one table of 18 elements for the 4x4 blocks case and one table of 35 elements for the 8x8 to 32x32 blocks case.
These new tables are directly related to the modes..
Figure 9 shows an example of an index table 904 for the 4x4 blocks case having a number 18 of available modes.
There is no change to the VLC tables described with reference to Figures 4 and 5. Thus, a VLC table of size N-2 is required for the 4x4 blocks case (one VLC table of 16 elements) and a second VLG table of size N-2 is required for the 8x8 to 32x32 blocks case (one VLC table of 33 elements) in the case where 35 modes are available.
Figure 9 also shows an example of the second VLC table 905 for a 4x4 blocks case in which 18 modes are available.
Steps S801, S802 and 5803 are the same as steps S401, S402 and S403, respectively, and are not described further here.
When the current mode is equal to one of the two MPMs, process 1 is carried out. Steps S806 and S807 are the same as steps S4O6and S407, respectively, and are not described further here.
After process 1 has been carried out, processing jumps to step 5816, which is described below.
When the mode is different from each MFM, process 2 is applied and In step S810 the rank of the current mode, and of each MPM, is identified using the index table of N elements. Two related MPM ranks are identified in step S810. In the example illustrated in Figure 9, the mode value of the current mode is 14. The mode values of MFM and MPM2 are 2 and 6 respectively.
Using the index table 904 the rank of the current mode is found to be 12, and the ranks of MAM and MPM2 are found to be 11 and 9 respectively.
An index into the VLC table is derived from the current mode rank in dependence upon each related MPM rank. Initially the index is set equal to the current mode rank. In step 5812 the index of the current mode is decremented by 1 for each related MPM rank which is less than the current mode rank. Thus, depending on the related MPM ranks, the current mode index may be equal to the original rank or may be 1 012 less than it as a result of step S812.
In the example of Figure 9, the both MPMs are lower in rank (11, 9) than the original rank of the current mode (12). Accordingly, the index of the current mode becomes 10, which is 2 less than the original rank.
Then the index, decremented as necessary in S812, is coded using VLC.
In step S814 the index is coded using the VLC having the same index, obtained from the relevant VLC table 905 of size N-2.
In the current HEVC design using CAVLC, the index table swapping process (S416 in Figure 4) is applied as the last step of process 2. In contrast, in the present embodiment, this swapping process is now outside process 2, in a new step S816. In addition, this swapping process is applied whether process 1 or process 2 is used. It directly takes as input the current mode value, rather than the index value derived there from, and the swapping applies to the input mode value and the mode value of rank immediately preceding the rank of the current mode value.
in the example of Figure 9, the current mode value is 14 which has rank 12. Mode value 2 has the immediately preceding rank 11. Thus, the ranks of mode values 14 and 2 are swapped and become 11 and 12 respectively1 as shown in the updated index table 906.
When process 2 is executed subsequently it can then use the updated index table 906 to identify the mode rank (step S81 0).
As described above, the second embodiment replaces the index table of size N-2 by a single index table of size N. This table is updated once process 1 or process 2 has been applied, according to the coded mode value. Process 2 is also modified in such a way that instead of coding the mode value, its rank according to the probability table is coded.
In the second embodiment, as described above, process I does not take into account the probabilities of the modes. However, a variant of the second embodiment is possible which enables process 1 to take account of the probabilities of the modes, too. In this variant, step S807 is modified to take into account the order of probabilities of the MPMs when MFM <> MPM2: -If the probability of MPM is greater than or equal to the probability of MPM2, flag 0 signifies mode=MFM, flag 1 signifies mode=MPM2 -Otherwise (i.e. if the probability of MPM2 is greater than the probability of MFM), flag 0 signifies mode=MPM2, flag 1 signifies mode=MPM Thus, in process 1, instead of ordering the two different MPMs according to their mode values (MPM being the one with the smaller mode value and MPM2 being the one with the larger mode value), the ordering is done according to the MAM mode probability. The MPM which has the highest probability is ordered first. In case of equal probabilities, the first MPM is as before the one with the minimum mode value.
In this variant, in the CAV[C case, the binarization of the MAM index can be improved by taking into account the mode probabilities. This will improve the coding efficiency.
Incidentally, in this variant step S802 is not modified, and initially the MAMs are ordered according to their mode values. However, in another variant of the first embodiment it would also be possible to directly modify step S802 to generate the same behavior without modifying step S807.
Figure 10 shows the image coding structure 100 used in HEVC.
According to HEVC and one of its previous predecessors, the original video sequence 1001 is a succession of digital images images i'. As is known per se, a digital image is represented by one or more matrices the coefficients of which represent pixels.
The images 1002 are divided into slices 1003. A slice is a part of the image or the entire image. In HEVC these slices are divided into non-overlapping Largest Coding Units (LCUs) 1004, generally blocks of size 64 pixels x 64 pixels. Each [CU may in its turn be iteratively divided into smaller variable size Coding Units (CUs) 1005 using a quadtree decomposition. Each CU can be further partitioned into a maximum of 2 symmetric rectangular Partition Units 1006.
Figure 11 illustrates a diagram of apparatus 1000 adapted to implement an encoder according to an embodiment of the present invention or to implement a decoder. The apparatus 1000 is for example a micro-computer, a workstation or a light portable device.
The apparatus 1000 comprises a communication bus 1113 to which there are preferably connected: -a central processing unit 1111, such as a microprocessor, denoted CPU; -a read only memory (ROM) 1107 which stores one or more computer programs for implementing the invention; -a random access memory (RAM) 1112 which stores executable code of the method of the invention and provides registers adapted to record variables and parameters necessary for implementing the method of encoding a sequence of digital images and/or the method of decoding a bitstream; and -a communication interface 1102 connected to a communication network 1103 over which digital data to be processed are transmitted.
Optionally, the apparatus 1000 may also have the following components: -a data storage means 1104 such as a hard disk, able to contain the programs implementing the invention and data used or produced during the implementation of the invention; -a disk drive 1105 for a disk 1106, the disk drive being adapted to read data from the disk 1106 or to write data onto said disk; -a screen 1109 for displaying data and/or serving as a graphical interface with the user, by means of a keyboard 1110 or any other pointing means.
The apparatus 1000 can be connected to various peripherals, such as for example a digital camera 1100 ora microphone 1108, each being connected to an input/output card (not shown) so as to supply multimedia data to the apparatus 1000.
The communication bus affords communication and interoperability between the various elements included in the apparatus 1000 or connected to it. The representation of the bus is not limiting and in particular the central processing unit is able to communicate instructions to any element of the apparatus 1000 directly or by means of another element of the apparatus 1000.
The disk 1106 can be replaced by any information medium such as for example a compact disk (CD-ROM), rewritable or not, a ZIP disk or a memory card and, in general terms, by an information storage means that can be read by a microcomputer or by a microprocessor, integrated or not into the apparatus, possibly removable and adapted to store one or more programs whose execution enables the method of encoding a sequence of digital images and/or the method of decoding a bitstream according to the invention to be implemented.
The executable code may be stored either in read only memory 1107, on the hard disk 1104 or on a removable digital medium such as for example a disk 1106 as described previously. According to a variant, the executable code of the programs can be received by means of the communication network 1103, via the interface 1102, in order to be stored in one of the storage means of the apparatus 1000 before being executed, such as the hard disk 1104.
The central processing unit 1111 is adapted to control and direct the execution of the instructions or portions of software code of the program or programs according to the invention, instructions that are stored in one of the aforementioned storage means. On powering up, the program or programs that are stored in a non-volatile memory, for example on the hard disk 1104 or in the read only memory 1107, are transferred into the random access memory 1112, which then contains the executable code of the program or programs, as well as registers for storing the variables and parameters necessary for implementing the invention.
In this embodiment, the apparatus is a programmable apparatus which uses software to implement the invention. However, alternatively, the present invention may be implemented in hardware (for example, in the form of an Application Specific Integrated Circuit or ASIC).
Figure 12 illustrates a block diagram of an encoder 1200 according to an embodiment of the invention. The encoder is represented by connected modules, each module being adapted to implement, for example in the form of programming instructions to be executed by the CPU 1111 of apparatus 1000, a corresponding step of a method implementing an embodiment of the invention.
An original sequence of digital images i0 to i 1001 is received as an input by the encoder 1200. Each digital image is represented by a set of samples, known as pixels.
A bitstream 1210 is output by the encoder 1200.
Note that, in the following description we sometimes use the term block" in place of the specific terminology CU and PU used in HEVC. A CU or PU is a block of pixels.
The input digital images i are divided into blocks by module 1202. These blocks are image portions and may be of variable sizes (e.g. 4x4, 8x8, 16x16, 32x32, 64x64).
During video compression, each block of an image being processed is predicted spatially by an "Intra" predictor module 1203, or temporally by an Inter" predictor module comprising a motion estimation module 1204 and a motion compensation module 1205. Each predictor is a block of pixels issued from the same image or another image, from which a difference block (or "residual") is derived. By virtue of the identification of the predictor block and the coding of the residual, it is possible to reduce the quantity of information actually to be encoded.
The encoded frames are of two types: temporal predicted frames (either predicted from one reference frame called P-frames or predicted from two reference frames called B-frames) and non-temporal predicted frames (called Intra frames or I-frames). In I-frames, only lntra prediction is considered for coding GUs/PUs. n P-frames and B-frames, Iritra and Inter prediction are considered for coding GUs/PUs.
In the "Intra" prediction module 1203, the current block is predicted by means of an "Intra" predictor, a block of pixels constructed from the information already encoded of the current image.
With regard to the "Inter" coding, two prediction types are possible.
Mono-prediction (P-type) consists of predicting the block by referring to one reference block from one reference picture. Biprediction (B-type) consists of predicting the block by referring to two reference blocks from one or two reference pictures. An estimation of motion is carried out by module 1204 between the current CU or PU and reference images 1216. This motion estimation is made in order to identify, in one or several of these reference images, one (P-type) or several (B-type) blocks of pixels to use them as predictors of this current block. In a case where several block predictors are used (Btype), they are merged to generate one single prediction block. The reference images used consist of images in the video sequence that have already been coded and then reconstructed (by decoding).
Generally, the motion estimation carried out by module 1204 is a block matching algorithm (BMA).
The predictor obtained by the algorithm is then subtracted from the current data block to be processed so as to obtain a difference block (block residual). This processing is called motion compensation" and is carried out by module 1205.
These two types of coding thus supply several texture residuals (the difference between the current block and the predictor block), which are compared in a module 1206 for selecting the best coding mode.
If "Intra" coding is selected, an item of information for describing the "Intra" predictor used is coded by an entropic encoding module 1209 before being inserted in the bit stream 1210. Embodiments of the present invention described hereinbefore with reference to Figures 6 to 9 are applicable to the entropic encoding module 1209 in Figure 12.
If the module 1206 for selecting the best coding mode chooses "Inter" coding, motion information is coded by the entropic encoding module 1209 and inserted in the bit stream 1210. This motion information is in particular composed of one or several motion vectors (indicating the position of the predictor block in the reference images relative to the position of the block to be predicted) and an image index among the reference images.
The residual obtained according to the coding mode selected by the module 1206 is then transformed by module 1207. The transform applies to a Transform Unit (TU), that is included into a CU. A TU can be further split into smaller TUs 1006 using a so-called Residual OuadTree (ROT) decomposition.
In HEVC, generally 2 or 3 levels of decompositions are used and authorized transform sizes are from 32x32, 16x16, 8x8 and 4x4. The transform basis is derived from a discrete cosine transform DCI.
The residual transformed coefficients are then quantized by a quantization module 1208. The coefficients of the quantized transformed residual are then coded by means of the entropic coding module 1209 and then inserted in the compressed bit stream 1210.
In order to calculate the "Intra" predictors or to make an estimation of the motion for the "Inter" predictors, the encoder performs a decoding of the blocks already encoded by means of a so-called "decoding" loop 1211-1215. This decoding loop makes it possible to reconstruct the blocks and images from the quantized transformed residuals.
The quantized transformed residual is dequantized in module 1211 by applying the reverse quantization to that provided by module 1208 and reconstructed in module 1212 by applying the reverse transform to that of the module 1207.
If the residual comes from an "Intra" coding, then in module 1213 the used "Intra" predictor is added to this residual in order to recover a reconstructed block corresponding to the original block modified by the losses resulting from a transformation with loss, here quantization operations.
If the residual on the other hand comes from an "Inter" coding, the blocks pointed to by the current motion vectors (these blocks belong to the reference images 1216 referred to by the current image indices) are merged then added to this decoded residual in module 1214. In this way the original block, modified by the losses resulting from the quantization operations, is obtained A final loop filter 1215 is applied to the reconstructed signal in order to reduce the effects created by heavy quantization of the residuals obtained and to improve the signal quality The loop filter comprises two steps, a deblocking" filter and a linear filtering. The deblocking filtering smoothes the borders between the blocks in order to visually attenuate these high frequencies created by the coding. The linear filtering further improves the signal using filter coefficients adaptively determined at the encoder. The filtering by module 1215 is thus applied to an image when all the blocks of pixels of this image have been decoded.
The filtered images, also called reconstructed images, are then stored as reference images 1216 in order to allow the subsequent "Inter" predictions taking place during the compression of the following images of the current video sequence.
In the context of F-IEVC, it is possible to use several reference images 1216 for the estimation and motion compensation of the current image. In other words, the motion estimation is carried out on N images. Thus the best "Inter" predictors of the current block, for the motion compensation, are selected in some of the multiple reference images. Consequently two adjoining blocks may have two predictor blocks that come from two distinct reference images. This is in particular the reason why, in the compressed bit stream, the index of the reference image (in addition to the motion vector) used for the predictor block is indicated.
The use of multiple reference images is both a tool for resisting errors and a tool for improving the compression efficacy. The VCEG group recommends limiting the number of reference images to four.
Figure 13 illustrates a block diagram of a decoder 1300 according to an embodiment of the invention. The decoder is represented by connected modules, each module being adapted to implement, for example in the form of programming instructions to be executed by the CPU 1111 of apparatus 1000, a corresponding step of a method implementing an embodiment of the invention.
The decoder 1300 receives as an input a bit stream 1301 corresponding to a video sequence 1210 compressed by an encoder of the HEVC type, such as the one shown in Figure 12.
During the decoding process, the bit stream 1301 is first of all decoded entropically by a module 1302.
The residual of the current block is then dequantized by a dequantization module 1303. This reverses the quantization carried out by the quantization module 1208 in the encoder 1200. The dequantized data is then reconstructed by a reverse transform module 1304 which performs a transformation the reverse of that carried out by the transform module 1207 in the encoder 1200.
The decoding of the data in the video sequence is then carried out image by image and, within an image, block by block.
The Inter' or "Intra" coding mode for the current block is extracted from the bit stream 1301 and decoded entropically.
If the coding of the current block is of the "Intra" type, the number of the predictor is extracted from the bit stream and decoded entropically in a similar manner to the encoding process. The Intra predictor block associated with this index is recovered from the data ajready decoded of the current image.
The residual associated with the current block is recovered from the bit stream 1301 and then decoded entropically. Finally, the Intra predictor block recovered is added to the residual thus dequantized and reconstructed in a reverse Intra prediction module 1305 in order to obtain the decoded block.
If the coding mode of the current block indicates that this block is of the "Inter" type, the motion information is extracted from the bit stream 1301 by the entropic decoding module 1302 and decoded.
This motion information is used in a reverse motion compensation module 206 in order to determine the "Inter" predictor block contained in the reference images 1308 of the decoder 1300. In a similar manner to the encoder, these reference images 1308 are composed of images that precede the image currently being decoded and that are reconstructed from the bit stream (and therefore decoded previously).
The residual associated with the current block is, here also, recovered from the bit stream 1301 and then decoded entropically by module 1302. The Inter predictor block determined is then added to the thus dequantized residual reconstructed in the reverse motion compensation module 1306 in order to obtain the decoded block.
At the end of the decoding of all the blocks of the current image, the same loop filter 1307 as the filter 1215 provided at the encoder is used to eliminate the block effects and improve the signal quality in order to obtain the reference images 1308.
The images thus decoded constitute the output video signal 1309 of the decoder, which can then be displayed and used.
The embodiments described above are based on block partitions of input images, but more generally, any type of image 5 portions to encode or decode can be considered, in particular rectangular portions or more generally geometrical portions.
More generally although the present invention has been described hereinabove with reference to specific embodiments, the present invention is not limited to the specific embodiments, and modifications will be apparent to a skilled person in the art which lie within the scope of the present invention.
While specific examples have been given for methods for encoding a prediction code value, it will be understood that the methods may be applied to corresponding decoding processes in which probability values are updated on the basis of decoding processes.
Many further modifications and variations will suggest themselves to those versed in the art upon making reference to the foregoing illustrative embodiments, which are given by way of example only and which are not intended to limit the scope of the invention, that being determined soleFy by the appended claims. In particular the different features from different embodiments may be inteichanged, where appropriate.
In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality. The mere fact that different features are recited in mutually different dependent claims does not indicate that a combination of these features cannot be advantageously used.

Claims (2)

  1. <claim-text>CLAIMS1. A method of encoding mode information representing a prediction mode for encoding of a current encoding unit by an intra mode coding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing for each of the plurality of prediction modes a probability value representative of the probability of occurrence of the prediction mode concerned, updating the probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit, and performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein, the value adjustment operation is performed regularly at predetermined intervals based on encoding of a predetermined number of encoding units,.</claim-text> <claim-text>2. A method according to claim 1, wherein the predetermined number of encoding units corresponds to the number of coding units composing one or multiple Largest Coding Units of an image being encoded.</claim-text> <claim-text>3. A method according to claim 2 wherein the value adjustment operation is performed for each different Largest Coding Unit.</claim-text> <claim-text>4. A method according to any preceding claim, wherein the predetermined number of encoding units depends on the fixed maximum count value of a counter storing a count value representative of the respective probability value.</claim-text> <claim-text>6. A method according to claim 4, wherein the predetermined number of encoding units is determined to prevent the fixed maximum count value of each counter being reached.</claim-text> <claim-text>6. A method according to any preceding claim, wherein the adjustment operation comprises dividing each said probability value of the at least subset of probability values by a common factor.</claim-text> <claim-text>7. A method according to claim 6 wherein the common factor is
  2. 2.</claim-text> <claim-text>8. A method according to any preceding claim, wherein for each prediction mode a first and a second probability value representative of the probability of occurrence of the prediction mode concerned are stored, the first and second probability value of the respective prediction mode being updated each time said prediction mode is encoded for an encoding unit, and wherein the value adjustment operation is performed on the at least subset of first probability values at predetermined intervals based on encoding of a predetermined number Ki of encoding units of a first size and the value adjustment operation is performed on the at least subset of second probability values at predetermined intervals based on encoding of a predetermined number K2 of encoding units of a second size, wherein the number Ki is different to the number K2, and the first size is different to the second size.</claim-text> <claim-text>9. A method according to any preceding claim, further comprising attributing, to each prediction mode, a ranking value based on the probability value of the respective prediction mode with respect to the probability values of the other prediction modes of the plurality of prediction modes.</claim-text> <claim-text>10. A method according to claim 9 further comprising updating the ranking values based on the readjustment of the probabUity values.</claim-text> <claim-text>11. A method according to any one of claims 9 to 10, wherein the mode information to be encoded comprises the ranking value of the prediction mode to be encoded.</claim-text> <claim-text>12. A method according to any one of claims 8 to 11, wherein the mode information is coded by VLC coding, the size of the VLC code word being based on the ranking value.</claim-text> <claim-text>13. A method according to any one of claims 8 to 12 further comprising swapping the respective rankings of the mode information to be encoded and the mode information, if any, whose ranking immediately precedes the ranking of the mode information to be encoded.</claim-text> <claim-text>14. A method according to claim 13 wherein said swapping is carried out after each encoding process.</claim-text> <claim-text>15. A method according to any preceding claim further comprising binarising the mode information to generate bins and applying arithmetic coding to the bins.</claim-text> <claim-text>16. A method according to any preceding claim wherein the said encoding process for encoding the mode information is one of a plurality of selectable mode information coding processes, an other of the plurality of selectable mode information coding processes comprising encoding first information indicating a predetermined relationship between the mode information to be encoded and at least one predetermined value.</claim-text> <claim-text>17. A method according to claim 16 wherein the said encoding process takes account of the outcome of at least one prior said other encoding process.</claim-text> <claim-text>18, A method according to claim 16 or 17 wherein the other encoding process is selected when the mode information to be encoded is equal to the or one said predetermined value, and the said encoding process is selected when the mode information to be encoded differs from the or each said predetermined value.</claim-text> <claim-text>19. A method according to any one of claims 16 to 18, wherein the mode information to be encoded relates to a current encoding unit to be encoded and the or each said predetermined value is a previously-encoded mode value relating to an encoding unit neighbouring the current encoding unit 20. A method according to claim 19 wherein the respective previously-encoded mode values relating to two or more encoding units neighbouring the current encoding unit are compared and the number of predetermined values is one if the respective mode values of said two or more encoding units are the same, and is two or more if the respective mode values of said two or more encoding units are different.21. A method according to any one of claims 16 to 20 wherein the encoding process for encoding the mode information has at least first and second coding tables of different sizes, the first coding table being used when there is a first number of predetermined values and the second coding table being used when there is a second number of predetermined values different from said first number, and the mode information being used as index information for both said first and second coding tables, and wherein a common index table is used to derive the index information for both said first and second tables from the mode value to be encoded.22. A device for encoding mode information representing a prediction mode related to a current encoding unit, the prediction mode being one of a plurality of prediction modes, the device comprising: storage means for storing, for each of the plurality of prediction modes, a probability value representative of the probability of occurrence of the prediction mode concerned; updating means for updating the probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit; and adjustment means for performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein the adjustment means is operable to perform the value adjustment operation regularly at predetermined intervals based on encoding of a predetermined number of encoding units.23. A device according to claim 22, wherein the predetermined number of coding units corresponds to the number of encoding units composing one or multiple Largest Coding Units of an image being encoded.24. A device according to claim 23 wherein the readjustment means is operable to perform the adjustment operation for each different Largest Coding Unit.25. A device according to any one of claims 22 to 24, wherein the predetermined number of encoding units depends on the fixed maximum count value of a counter of the storage means storing a count value representative of the respective probability value.26. A device according to claim 25, wherein the predetermined number of coding units is determined to prevent the fixed maximum count value of each counter being reached.27. A device according to any one of claims 22 to 26, wherein the adjustment means is operable to perform the value adjustment operation by dividing the at least subset of probabiFity values by a common factor.28. A device according to claim 27 wherein the common factor is 2.29 A device according to any one of claims 22 to 28, wherein the storage means is configured to store for each prediction mode a first and a second probability value representative of the probability of occurrence of the prediction mode concerned, the updating means is configured to update the first and second probability value of the respective prediction mode each time said prediction mode is encoded for an encoding unit, and wherein adjustment means is configured to perform the value adjustment operation on the at least subset of first probability values at predetermined intervals based on encoding of a predetermined number KI of encoding units of a first size and on the at least subset of second probability values at predetermined intervals based on encoding of a predetermined number K2 of encoding units of a second size, wherein the number Ki is different to the number K2, and the first size is different to the second size.30. A device according to any one of claims 22 to 29, further comprising ranking means for attributing, to each prediction mode, a ranking value based on the probability value of the respective prediction mode with respect to the probability values of the other prediction modes of the plurality of prediction modes.31. A device according to claim 29 or 30 wherein the updating means is operable to update the ranking values based on the readjustment of the probability values.32. A device according to any one of claims 29 to 31, wherein the mode information to be encoded comprises the ranking value of the prediction mode to be encoded.33. A device according to any one of claims 29 to 32, further comprising encoding means for encoding the mode information is coded by VLC coding, the size of the VLC code word being based on the ranking value.34. A device according to any one of claims 29 to 33, wherein the updating means is operable to swap the respective rankings of the mode information to be encoded and the mode information, if any, whose ranking immediately precedes the ranking of the mode information to be encoded.35. A device according to claim 34 wherein the updating means is operable to perform said swapping after each encoding process.36. A device according to any one of claims 22 to 35 further comprising binarising means for binarising the mode information to generate bins and applying arithmetic coding to the bins.37. A device according to any preceding claim further comprising first encoding means for encoding the mode information and second encoding means for encoding first information indicating a predetermined relationship between the mode information to be encoded and at least one predetermined value.38. A device according to claim 37 wherein the first encoding means is operable to take account of the outcome of at least one prior encoding process performed by the second encoding means.39. A device according to claim 37 or 38 wherein the second encoding means is operated when the mode information to be encoded is equal to the or one said predetermined value, and the first encoding means is operated when the mode information to be encoded differs from the or each said predetermined value.40. A device according to any one of cFaims 37 to 39, wherein the mode information to be encoded relates to a current encoding unit to be encoded and the or each said predetermined value is a previously-encoded mode value relating to an encoding unit neighbouring the current encoding unit.41. A device according to claim 40 further comprising comparing means for comparing the respective previously-encoded mode values relating to two or more encoding units neighbouring the current encoding unit and wherein the number of predetermined values is one if the respective mode values of said two or more encoding units are the same, and is two or more if the respective mode values of said two or more encoding units are different.42. A device according to any one of claims 37 to 41 further comprising means for storing at least first and second coding tables of different sizes, the first coding table being used when there is a first number of predetermined values and the second coding tabfe being used when there is a second number of predetermined values different from said first number, and the mode information being used as index information for both said first and second coding tables, and wherein a common index table is used to derive the index information for both said first and second tables from the mode value to be encoded.43. A method of decoding mode information representing a prediction mode for decoding of a current decoding unit by an intra mode decoding process, the prediction mode being one of a plurality of prediction modes, the method comprising: storing for each of the plurality of prediction modes a probability value representative of the probability of occurrence of the prediction mode concerned, updating the probability value of the respective prediction mode each time said prediction mode is decoded for a decoding unit, and performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein, the value adjustment operation is performed regularly at predetermined intervals based on decoding of a predetermined number of decoding units.44. A device for decoding mode information representing a prediction mode related to a current decoding unit. the prediction mode being one of a plurality of prediction modes, the device comprising: storage means for storing, for each of the plurality of prediction modes, a probability value representative of the probability of occurrence of the prediction mode concerned; updating means for updating the probability value of the respective prediction mode each time said prediction mode is decoded for a decoding unit; and adjustment means for performing from time to time a value adjustment operation to adjust the respective probability values of at least a subset of the prediction modes; wherein the adjustment means is operable to perform the value adjustment operation regularly at predetermined intervals based on decoding of a predetermined number of decoding units.45. A computer program product for a programmable apparatus, the computer program product comprising a sequence of instructions for implementing a method according to any one of claims 1 to 21 or 43 when loaded into and executed by the programmable apparatus.46. A computer-readable storage medium storing instructions of a computer program for implementing a method, according to any one of claims I to 21 or 43.47. A method or device for encoding or decoding mode information representing a prediction mode substantially as hereinbefore described with reference to, and as shown in Figures 6 and 7, or Figures 6, 8 and 9.</claim-text>
GB1115740.1A 2011-09-12 2011-09-12 Method and device for encoding or decoding information representing prediction modes Expired - Fee Related GB2494469B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB1115740.1A GB2494469B (en) 2011-09-12 2011-09-12 Method and device for encoding or decoding information representing prediction modes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1115740.1A GB2494469B (en) 2011-09-12 2011-09-12 Method and device for encoding or decoding information representing prediction modes

Publications (3)

Publication Number Publication Date
GB201115740D0 GB201115740D0 (en) 2011-10-26
GB2494469A true GB2494469A (en) 2013-03-13
GB2494469B GB2494469B (en) 2015-04-01

Family

ID=44908430

Family Applications (1)

Application Number Title Priority Date Filing Date
GB1115740.1A Expired - Fee Related GB2494469B (en) 2011-09-12 2011-09-12 Method and device for encoding or decoding information representing prediction modes

Country Status (1)

Country Link
GB (1) GB2494469B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013067334A3 (en) * 2011-11-04 2013-07-04 Qualcomm Incorporated Intra-mode video coding
WO2022141282A1 (en) * 2020-12-30 2022-07-07 深圳市大疆创新科技有限公司 Video processing method and encoding device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1938617A2 (en) * 2005-09-27 2008-07-02 Qualcomm Incorporated Mode selection techniques for multimedia coding
KR100924048B1 (en) * 2007-07-30 2009-10-27 한국과학기술원 A fast mode decision method of intra block prediction in video coding
EP2312856A1 (en) * 2008-07-10 2011-04-20 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, and image decoding method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1938617A2 (en) * 2005-09-27 2008-07-02 Qualcomm Incorporated Mode selection techniques for multimedia coding
KR100924048B1 (en) * 2007-07-30 2009-10-27 한국과학기술원 A fast mode decision method of intra block prediction in video coding
EP2312856A1 (en) * 2008-07-10 2011-04-20 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, and image decoding method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013067334A3 (en) * 2011-11-04 2013-07-04 Qualcomm Incorporated Intra-mode video coding
US9154796B2 (en) 2011-11-04 2015-10-06 Qualcomm Incorporated Intra-mode video coding
WO2022141282A1 (en) * 2020-12-30 2022-07-07 深圳市大疆创新科技有限公司 Video processing method and encoding device

Also Published As

Publication number Publication date
GB201115740D0 (en) 2011-10-26
GB2494469B (en) 2015-04-01

Similar Documents

Publication Publication Date Title
US10666938B2 (en) Deriving reference mode values and encoding and decoding information representing prediction modes
US20120327999A1 (en) Encoding mode values representing prediction modes
GB2494469A (en) Intra mode coding using probabilities of occurrence of different prediction modes

Legal Events

Date Code Title Description
PCNP Patent ceased through non-payment of renewal fee

Effective date: 20230912