Method and apparatus for parallel decoding of digital data
The method addresses computational inefficiencies in parallel decoding by organizing wavelet coefficients into spatially related groups for independent reconstruction, enhancing performance and resource utilization in image decoding.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-09-17
- Publication Date
- 2026-03-26
AI Technical Summary
Existing image and video compression algorithms face challenges in computational efficiency, particularly in resource-constrained environments, due to high computational complexity and synchronization dependencies between processing channels during parallel decoding, leading to performance losses.
A method for parallel decoding of encoded images using a wavelet-type transformation applied in a vertical direction, where wavelet coefficients are organized into spatially related groups and distributed to processing channels with overlapping extended groups, allowing independent reconstruction of image strips without synchronization points and reduced cache misses.
The method enhances decoding efficiency by reducing dependencies and cache misses, improving performance and resource utilization in parallel decoding processes.
Smart Images

Figure EP2025076462_26032026_PF_FP_ABST
Abstract
Description
Method and apparatus for parallel decoding of digital dataTechnical field
[0001] The present invention relates to the field of digital image and video compression. More precisely, the present invention relates to computer-implemented methods, apparatuses, and computer programs for encoding and / or decoding digital images.Background
[0002] Digital images and videos are increasingly prevalent in modern communication, entertainment, surveillance, and scientific applications. As the demand for high-resolution and / or high-framerate content continues to grow, so does the need for efficient image and video compression techniques to reduce storage requirements and transmission bandwidth. Numerous algorithms and standards have been developed to address these challenges, including both lossy and lossless compression methods.
[0003] Herein, the term “computational complexity” generally refers to the resources needed to run a computation, in terms of the number of operations required and / or in terms of the number of memory accesses (read / write) required. A computation requiring a higher computational complexity is one that requires more operations and / or more memory accesses. A computation requiring a lower computational complexity is one that requires less operations and / or less memory accesses. Unless otherwise specified, the term “computational complexity” is used herein to designate the number of operations required for a computation, and / or the number of memory accesses required forthat computation. In addition, the quantity of data retrieved from a memory is related to the size of the data bus of the memory, i.e. the quantity of data retrieved in each memory access, so that a larger number of memory accesses generally results in a larger quantity of data retrieved from the memory. Therefore, a higher computational complexity may also correspond to a larger quantity of data retrieved from a memory. In the particular case of a processor with a cache memory, the processor may read a whole cache line from the cache memory and then extract data from this cache line. In this case, the computational complexity may be measured in terms of the number of cache lines accessed by the processor for performing a given computation.
[0004] The software implementation of image and video compression algorithms often involves substantial computational complexity, which can limit their applicability in resource- constrained environments such as mobile devices, embedded systems, or real-timeprocessing scenarios. Therefore, there is a need for improving the computational efficiency of encoding and / or decoding of digital images and videos.Disclosure of the invention
[0005] To this end, two innovative improvements over the prior art are disclosed herein. These innovative improvements may work independently or be combined. The present invention as defined in the claims relates primarily to the first innovative improvement. However, the invention may advantageously be combined with the second innovative improvement described herein.First innovative improvement
[0006] In this section, the “method for decoding” relates to the method for decoding according to the first innovative improvement, unless otherwise specified.Technical field
[0007] The first innovative improvement relates to a method, apparatus, and computer program for parallel decoding of an encoded image obtainable by applying at least one decorrelative transform running over a plurality of image lines, whereby the parallel decoding is performed using a plurality of processing channels.Background
[0008] An image processing algorithm such as an encoding of an image may apply a decorrelative transform running over a plurality of image lines. A decorrelative transform allows the entropy of a set of image samples to be reduced by concentrating probabilities of occurrence on a subset of values. A decorrelative transform may be for example a color transform (CT), such as a reversible color transform (RCT), a temporal decorrelative transform based on interframe predictions, a discrete cosine transform (DCT), or a wavelet transform, such as a discrete wavelet transform (DWT). Image samples on which a decorrelative transform has been applied are referred to herein as image coefficients. In the particular case of a wavelet transform, image coefficients may be referred to herein as “wavelet coefficients”. The decorrelative transforms described above are “forward” decorrelative transforms, i.e. transforming image samples into image coefficients. For each of said forward decorrelative transforms, there exists a corresponding “inverse” decorrelative transform that reconstructs image samples from image coefficients. Such an inverse decorrelative transform may beapplied in the decoding of an encoded image, wherein said encoded image has been obtained or produced using a forward decorrelative transform.
[0009] Document EP 2 773 122 A1 describes a method and device for lossless data compression wherein one groups data into groups of n words of m bits; one detects for each group the value of the Greatest Coded Line Index (GCLI), the GCLI being the index of the highest weight non-zero bit among the bits of the words in a group; one produces for each group an output data set comprising the GCLI bits of lowest weight of the words of the group, and meta-data comprising the value of the GCLI. The values of the GCLIs are comprised between zero, when all words of a group are zero, and m, when at least one word in the group has a bit of weight m equal to 1. Therefore, binary coding of the GCLIs requires ceil(log2(m)) bits, ceil(x) being a function returning the smallest integer greater than x. This document also proposes an improvement wherein one replaces the GCLI in the output data set by the difference between the GCLI value and a predicted value of the GCLI. In doing so, the values to be coded may be smaller, and a unary coding may require less space than binary coding of the GCLIs.
[0010] The JPEG XS standard, formally known as ISO / IEC 21122, is an interoperable, visually lossless, low-latency, and lightweight image and video coding system. The JPEG XS standard is divided into several parts, each part specifying specific aspects of the standard. JPEG XS Part 1, formally known in its second edition as ISO / IEC 21122-1:2022, normatively defines how a compressed JPEG XS codestream can be transformed into a decoded image, a “codestream” being defined in the JPEG XS standard as a compressed image data representation that includes all necessary data to allow a (full or approximate) reconstruction of the sample values of a digital image. Moreover, JPEG XS Part 1 provides some key algorithms enabling an encoder to generate a JPEG XS codestream. In particular, JPEG XS Part 1 (ISO / IEC 21122-1 :2022) specifies some types of entropy decoding and related encoding in its subclause C.6. Herein the expression “JPEG XS standard” generally designates the JPEG XS specification according to documents published under reference ISO / IEC 21122, including any part of said specification and any edition of said parts.
[0011] Due to the ever increasing image sizes and frame rates, there is a need for more efficient, or faster, implementations of image processing algorithms, for example for processing large images with a smaller amount of resources or in a shorter amount of time, or for processing a sequence of images with a higher frame rate. A known technique to implement such an image processing algorithm in a more efficient way is to rely on parallel computing, i.e. distribute computation tasks, or “jobs”, among a plurality of “processing channels”, or“workers”, such that said processing channels work in parallel to encode or decode an image. However, it may be challenging to design a parallel implementation of an image processing algorithm comprising a decorrelative transform running over an entire image, in particular because of dependencies between processing channels working in parallel.
[0012] Computing the same data several times is generally thought to decrease the overall performance of a system comprising a plurality of processing channels working together in parallel to perform some computational task such as an encoding or a decoding of an image. Therefore, a known solution for a more efficient parallel implementation of an image processing algorithm is to distribute computation tasks among a plurality of processing channels in such a way as to minimize the so-called “overhead”, i.e. data that is computed more than once.
[0013] However, distributing computation tasks among a plurality of processing channels generally requires to synchronize said channels and thus introduces dependencies between said channels, for instance so-called “synchronization points”, i.e. time points where several processing channels need to wait for each other until all of them have completed their respective computations. In turn, said synchronization points, or more generally said dependencies between processing channels, may decrease the overall performance of a system comprising said plurality of processing channels. Indeed, when a processing channel is waiting, it is idle and therefore does not process data, which may lead to a loss of performance.
[0014] Moreover, a plurality of processing channels may be implemented as a plurality of processing units, each one of said units having its own memory, called a “cache memory” or simply a “cache”. In such a case, said dependencies between processing channels may lead to what is known as a “data cache miss”, or simply a “cache miss”, which may also decrease the overall performance of a system comprising said plurality of processing channels.
[0015] The following prior art document is referred to herein as document D1 : Richter et al., "Parallelization and multi-threaded latency constrained parallel coding of JPEG XS", Proc. SPIE 11137, Applications of Digital Image Processing XLII, 6 September 2019, pages IOS- 111, DOI: 10.1117 / 12.2526917.
[0016] Document D1 discloses a parallel decoding of an encoded image wherein a plurality of processing channels, or “threads”, process a plurality of slice groups in parallel, a slice group comprising one or more slices of the image. D1 further discloses that since a wavelet transformation runs across slices, and since the wavelet filter has a certain size larger than a line of image, the work regions of the threads have to slightly overlap and a couple oflines near the slice boundaries need to be processed by two threads. D1 discloses that a thread decoding a given slice group needs to work on data from both adjacent slice groups, as illustrated in Figure 2 of D1. However, this may involve a relatively high computational complexity, which can be disadvantageous in terms of processing efficiency and resource consumption.
[0017] Therefore, there is a need for a more efficient parallel decoding of an encoded image obtained by applying at least one decorrelative transform running over a plurality of image lines, wherein the parallel decoding is performed using a plurality of processing channels.Disclosure of the first innovative improvement
[0018] In view of the abovementioned deficiencies of the prior art, it is an object of the first innovative improvement to provide a method, apparatus, and computer program for a more efficient parallel decoding of an encoded image obtainable by applying at least one decorrelative transform running over a plurality of image lines, whereby the parallel decoding is performed using a plurality of processing channels. The method, apparatus, and computer program according to the first innovative improvement may be computer-implemented.
[0019] According to a first aspect of the first innovative improvement, there is provided a method for decoding an encoded image, wherein the encoded image is obtained (or produced) by the steps of: applying a wavelet-type transformation to a rectangular array of spatial image samples representing the image, the wavelet-type transformation comprising applying a cascade of wavelet-type filter operations at least one of which is applied in a vertical direction, the wavelettype transformation producing wavelet coefficients that are spatially related to the spatial image samples in the rectangular array; organizing the wavelet coefficients to obtain respective groups of wavelet coefficients that are spatially related to respective slices of the rectangular array of spatial image samples; and entropy encoding the respective groups of wavelet coefficients independently of each other; wherein the method for decoding comprises: providing respective processing channels that reconstruct (or decode) respective strips of spatial image samples from the wavelet coefficients of the encoded image, each of the respective processing channels reconstructing a strip of spatial image samples independentlyof the other processing channels, the respective strips of spatial image samples corresponding at least in size to the respective slices of the rectangular array of spatial image samples, each of the respective processing channels applying a cascade of inverse wavelet-type filter operations independently of the other processing channels for reconstructing a strip of spatial image samples; and supplying respective extended groups of wavelet coefficients to the respective processing channels, whereby the extended groups of wavelet coefficients mutually overlap to an extent that each extended group of wavelet coefficients comprises all the wavelet coefficients required for the processing channel receiving the extended group of wavelet coefficients to independently reconstruct a strip of spatial image samples.
[0020] Herein, when a decorrelative transform such as a wavelet-type transformation is applied in a vertical direction, this means that said transform runs across lines of images, or runs over a plurality of image lines.
[0021] The encoded image comprises respective groups of wavelet coefficients that are entropy encoded independently of each other. Said respective groups of wavelet coefficients are spatially related to respective slices of a rectangular array of spatial image samples. More precisely, the wavelet coefficients are derived from spatial image samples. In other words, the wavelet coefficients are derived from image samples in spatial domain, namely through the application of a cascade of wavelet-type filter operations. The groups of wavelet coefficients are formed so as to group together wavelet coefficients derived from a same (rectangular) array of spatial image samples, or a same portion of said array of spatial image samples. Said portion is also referred to herein as a “slice”.
[0022] Generally, in the context of image processing and wavelet transforms, the term “spatially related to” refers to a correspondence or mapping between positions in two domains, typically between the spatial domain (e.g. image pixels or samples) and the transform domain (e.g. wavelet coefficients). More precisely, the term “spatially related to” means that each element (e.g. a wavelet coefficient) corresponds to or is associated with a specific location or region in the spatial domain (e.g. an image sample or group of samples), such that the coefficient reflects information derived from that location or region.
[0023] Herein, when a group of wavelet coefficients is said to be “spatially related to” a slice of a rectangular array of spatial image samples, this means that there exists a spatial correspondence between said wavelet coefficients and the spatial image samples comprised in said slice. In other words, this means that said wavelet coefficients are derived from the spatial image samples comprised in said slice, namely through the application of a cascade ofwavelet-type filter operations. Due to the length of the wavelet-type filter being generally larger than one, a wavelet coefficient spatially related to an image sample is derived from that image sample and also from adjacent image samples. In other words, when a wavelet coefficient is said herein to be “spatially related to” an image sample, it means that said wavelet coefficient is derived from said image sample through the application of a wavelet-type filter, or a cascade of wavelet-type filters, centered on said image sample.
[0024] In the context of the first innovative improvement, the encoded image on which the method for decoding is applied may be characterized as follows. The encoded image comprises respective groups of wavelet coefficients that are entropy encoded independently of each other. Said respective groups of wavelet coefficients are spatially related to respective slices of a rectangular array of spatial image samples representing the image. The wavelet coefficients comprised in said groups are produced by applying a wavelet-type transformation to the rectangular array of spatial image samples representing the image, the wavelet-type transformation comprising applying a cascade of wavelet-type filter operations at least one of which is applied in a vertical direction. More precisely, said wavelet-type transformation produces wavelet coefficients that are spatially related to the spatial image samples in said rectangular array.
[0025] The method for decoding allows an encoded image obtained (or produced) by applying at least one wavelet-type filter operation in a vertical direction to be decoded in a more efficient manner.
[0026] The method for decoding allows each processing channel to reconstruct a strip of spatial image samples independently of other processing channels, which may reduce or even remove the need for synchronization points between processing channels and, more generally, may reduce or even remove dependencies between said channels, thus also potentially reducing data cache misses, thereby increasing the performance of the decoding of the encoded image.
[0027] In order to allow each processing channel to reconstruct a strip of spatial image samples independently of other processing channels, each one of said channels is supplied with a respective extended group of wavelet coefficients, such an extended group of wavelet coefficients comprising all the wavelet coefficients needed for reconstructing a strip of spatial image samples. Therefore, the extended groups of wavelet coefficients may mutually overlap, which may introduce some overhead, i.e. some computations may be performed more than once in the respective processing channels, which may in turn decrease the performance of the decoding of the encoded image. However, the reduction of dependencies between therespective processing channels enabled by the method for decoding more than compensates for said decrease of performance due to said overhead, and the net effect of the method for decoding on the performance of the decoding of the encoded image is therefore positive, i.e. the method for decoding allows an image obtainable by applying at least one wavelet-type filter operation in a vertical direction to be decoded in a more efficient manner.
[0028] The method for decoding may allow existing coding techniques to be implemented in a more efficient manner. The JPEG XS standard is an example of an existing coding technique which may be implemented in a more efficient manner according to the method for decoding. The JPEG XS standard, formally known as ISO / IEC 21122, is an interoperable, visually lossless, low-latency, and lightweight image and video coding system. The JPEG XS standard is divided into several parts, each part specifying specific aspects of the standard. JPEG XS Part 1 , formally known in its second edition as ISO / IEC 21122-1 :2022, normatively defines how a compressed JPEG XS codestream can be transformed into a decoded image in a bit exact manner, a “codestream” being defined in the JPEG XS standard as a compressed image data representation that includes all necessary data to allow a (full or approximate) reconstruction of the sample values of a digital image. Moreover, JPEG XS Part 1 provides some key algorithms enabling an encoder to generate a JPEG XS codestream. Herein the expression “JPEG XS standard” generally designates the JPEG XS specification according to documents published under reference ISO / IEC 21122, including any part of said specification and any edition of said parts.
[0029] An “image” as used herein generally designates an array of image samples comprising “rows” or “lines” of image samples, and “columns” of image samples. The “horizontal direction” runs along the lines of an image, and the “vertical direction” runs along the columns of an image, i.e. across the lines of the image. An image may be encoded such as to form an “encoded image”. Encoding an image refers to the process of converting an array of image samples into a different format or representation, for instance for an easier storage, transmission, or processing. An encoded image may be decoded such as to form a “decoded image”. Decoding an encoded image refers to the process of reconstructing an array of image samples corresponding to the array of image samples of the image before encoding. The JPEG XS standard specifies coding tools for performing image encoding and decoding. An encoded image may be a codestream as defined in the JPEG XS standard.
[0030] A two-dimensional image may be represented by a two-dimensional or “rectangular” array of spatial image samples. A “slice” as used herein designates a compact subset of such a rectangular array of spatial image samples, preferably a subset of said arraycomprising a plurality of adjacent image lines. Different slices may have different sizes, i.e. different slices may contain different numbers of image lines, for instance. Slices are defined herein in relation with a rectangular array of spatial image samples representing the original image, i.e. the image before encoding.
[0031] A “strip” of spatial image samples as used herein comprises decoded or reconstructed spatial image samples corresponding to a slice of a rectangular array of spatial image samples. Different strips may have different sizes, i.e. different strips may contain different numbers of spatial image samples. The expression “a strip corresponding in size to a slice” as used herein means that a strip comprises the same number of spatial image samples as the slice to which it corresponds. Strips are defined herein in relation with a decoded or reconstructed image.
[0032] According to the first innovative improvement, the respective strips of spatial image samples are spatially offset from the respective slices of the rectangular array of spatial image samples. In other words, a strip is spatially offset from the slice to which it corresponds. This means that a strip is shifted upwards or downwards by a number of image lines relative to the slice to which it corresponds.
[0033] According to the first innovative improvement, the extended groups of wavelet coefficients each comprise wavelet coefficients from only two adjacent groups of wavelet coefficients spatially related to two adjacent slices of the rectangular array of spatial image samples, whereby said extended groups of wavelet coefficients each comprise one of the two groups of wavelet coefficients in its entirety and only a portion of the other one of the two groups of wavelet coefficients, the portion being adjacent to the one of the two groups of wavelet coefficients that is entirely comprised in the extended group of wavelet coefficients. This has the advantage that wavelet coefficients spatially related to only two slices need to be processed in a processing channel reconstructing a strip of spatial image samples, which may be less computationally expensive than processing wavelet coefficients from more than two slices, for example three slices, as disclosed in prior art document D1.
[0034] The method for decoding according to the first innovative improvement differs from the disclosure of the prior art document D1 in that the respective strips of spatial image samples are spatially offset from the respective slices of the rectangular array of spatial image samples, and in that the extended groups of wavelet coefficients each comprise wavelet coefficients from only two adjacent groups of wavelet coefficients spatially related to two adjacent slices of the rectangular array of spatial image samples, whereby said extended groups of wavelet coefficients each comprise one of the two groups of wavelet coefficients inits entirety and only a portion of the other one of the two groups of wavelet coefficients, the portion being adjacent to the one of the two groups of wavelet coefficients that is entirely comprised in the extended group of wavelet coefficients. This has the effect of improving the efficiency of the parallel decoding of the encoded image by allowing each processing channel to require data from only two adjacent groups of wavelet coefficients instead of three adjacent groups of wavelet coefficients as disclosed in the prior art document D1.
[0035] A “wavelet-type filter operation” as used herein is a filtering operation using at least one wavelet filter. A wavelet filter is used in a wavelet transform and may be a low-pass filter or high-pass filter, for instance. Wavelet filters and wavelet transforms are known to a person skilled in the art. An example of a wavelet transform is a Discrete Wavelet Transform (DWT), which is a mathematical transform that decomposes a signal into different frequency components, each with a resolution matched to its scale. A wavelet filter may be applied in a “forward” way, in which case it may be applied on image samples to produce “wavelet coefficients”. Such a forward wavelet-type filter operation may also be applied on wavelet coefficients from a previous filter operation in case there are more than one wavelet filter applied. Herein, a “cascade of wavelet-type filter operations” refers to one or several wavelettype filter operations applied one after the other. Besides, a wavelet filter may also be applied in an “inverse” way, so as to reverse a wavelet-type filter operation applied in a forward way, in which case it may be applied on wavelet coefficients to reconstruct image samples. Such an inverse wavelet-type filter operation may also be applied on wavelet coefficients to reconstruct wavelet coefficients for a subsequent filter operation in case there are more than one inverse wavelet filter applied. Herein, a “cascade of inverse wavelet-type filter operations” refers to one or several inverse wavelet-type filter operations applied one after the other. Finally, a forward wavelet-type filter operation or an inverse wavelet-type filter operation may be applied in a horizontal direction, i.e. along the lines of an image, or in a vertical direction, i.e. along the columns of an image and thus across the lines of the image. Wavelet-type filter operations applied in a horizontal direction and in a vertical direction may be combined in a cascade of wavelet-type filter operations.
[0036] In the steps for obtaining (or producing) the encoded image, the wavelet coefficients produced by the wavelet-type transformation are organized in such a way as to obtain respective groups of wavelet coefficients that are spatially related to respective slices of the rectangular array of spatial image samples. This means that each one of said groups of wavelet coefficients corresponds to a slice, and vice versa.
[0037] In the steps for obtaining (or producing) the encoded image, the respective groups of wavelet coefficients spatially related to the respective slices are entropy encoded independently of each other. This means that there is no dependency between adjacent slices for entropy encoding the respective groups of wavelet coefficients. In other words, any prediction for entropy encoding wavelet coefficients, such as a vertical prediction, stops at slice boundaries. This allows slices to be entropy decoded independently of each other. More precisely, the respective groups of wavelet coefficients spatially related to the respective slices may be entropy decoded independently of each other.
[0038] There exist several ways of entropy encoding wavelet coefficients. Wavelet coefficients may be entropy encoded by replacing, in a so-called “code group” of wavelet coefficients, most significant bits having a zero value with a so-called “GCLI value”, as described hereinabove in relation with document EP 2 773 122 A1. In turn, GCLI values themselves may be entropy encoded, for example by using the so-called “vertical prediction mode for bitplane count coding”, normatively defined in subclause C.6.5 of JPEG XS Part 1 (I SO / I EC 21122-1:2022), a bitplane count according to JPEG XS corresponding to a GCLI value as described herein. Other types of entropy encoding of wavelet coefficients are possible within the scope of the first innovative improvement. The particular types of entropy encoding described herein are provided for illustrative purposes only and cannot be construed as limiting the scope of the first innovative improvement.
[0039] Herein, a “processor” generally designates a device able to execute computer instructions, such as for example a (micro)processor for a computer, which is also known as a central processing unit (CPU), or a graphics processing unit (GPU). A register of a processor, also referred to herein as a “processor register”, is a high-speed memory built into a processor for storing data on which processor instructions are executed and for storing data resulting from an execution of a processor instruction. Between processor registers and the main memory, there may exist one or more so-called “cache memory”, which is a high-speed memory for quick data access. Processor registers and cache memories are known to a person skilled in the art.
[0040] Modern processors have the ability to execute instructions in parallel, i.e. executing several instructions during the same period of time, as opposed to a sequential execution of instructions, where only one instruction can be executed by a processor at any instant. Herein, a “processing unit” generally designates a part of a processor able to execute instructions in parallel to other processing units. In the case of a CPU or a GPU, such a processing unit may execute a so-called “thread of execution”, or simply a “thread”, as knownto a person skilled in the art. Finally, a “processing channel” as used herein generally designates a means for executing instructions in parallel to other processing channels. A thread is a particular example of a processing channel in the context of a processor. A thread may be executed or run on a processing unit.
[0041] The inventors propose several possible embodiments comprising optional features, where some of them can be combined.
[0042] In an embodiment, a strip of spatial image samples is spatially offset relative to the slice to which said strip corresponds such that the extended group of wavelet coefficients enabling a processing channel to reconstruct said strip does not comprise wavelet coefficients from a previous slice, i.e. a slice above the slice to which the strip corresponds. In other words, according to this embodiment, a strip is spatially offset, or shifted, downwards by a number of image lines relative to the slice to which it corresponds such that the extended group of wavelet coefficients enabling a processing channel to reconstruct said strip comprises wavelet coefficients from only two adjacent groups of wavelet coefficients spatially related to two adjacent slices of the rectangular array of spatial image samples, whereby said extended groups of wavelet coefficients each comprise one of the two groups of wavelet coefficients in its entirety and only a portion of the other one of the two groups of wavelet coefficients, the portion being adjacent to the one of the two groups of wavelet coefficients that is entirely comprised in the extended group of wavelet coefficients.
[0043] Indeed, it may be computationally expensive to compute wavelet coefficients from said previous slice, in particular because of the entropy encoding applied to said coefficients when producing the encoded image. For instance when entropy encoding bitplane counts in the vertical prediction mode for bitplane count coding as specified in the JPEG XS standard, the entropy encoding of wavelet coefficients of a slice depends on previous wavelet coefficients in the slice, therefore requiring to decode an entire slice to compute the value of wavelet coefficients at the bottom of the slice. By spatially offsetting, or shifting, the strip downwards, this embodiments has the advantage of avoiding wavelet coefficients corresponding to said previous slice to be decoded, thereby further increasing the efficiency of the decoding of the encoded image.
[0044] In an embodiment, the cascade of inverse wavelet-type filter operations comprises at least one inverse wavelet-type filter operation of the LeGall 5 / 3 type in the vertical direction. A wavelet-type filter operation of the LeGall 5 / 3 type is a known type of Discrete Wavelet Transform (DWT) comprising a low-pass filter with a support of 5 coefficients and a high-pass filter with a support of 3 coefficients. A wavelet-type filter operation of the LeGall 5 / 3 type isalso herein referred to as a “DWT 5 / 3 transform”. The DWT 5 / 3 transform is used as a decorrelative transform in the JPEG XS standard, see e.g. subclause E.7 of JPEG XS Part 1 (I SO / I EC 21122-1:2022). Compared to other wavelet transforms, such as for example the DWT 9 / 7 transform used in JPEG 2000 (formally known as ISO / IEC 15444), the DWT 5 / 3 transform offers the following advantages. First, it is reversible because it uses only integer coefficients, so its output does not require rounding (quantization) and so it does not introduce any quantization noise. In addition, the low-pass and high-pass filters of the DWT 5 / 3 transform have a reduced support of only 5 and 3 coefficients, respectively. Finally, the DWT 5 / 3 transform may be implemented “in-place” through the so-called “lifting scheme” technique, thereby allowing it to be implemented with a reduced computational complexity and a reduced memory footprint.
[0045] In an embodiment, the decoding of the encoded image conforms with a JPEG XS standard.
[0046] In an embodiment, the method for decoding is further characterized in that: at least some of the respective strips of spatial image samples are spatially offset by one precinct from the respective slices of the rectangular array of spatial image samples; and at least some of the extended groups of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice of the rectangular array of spatial image samples; and at least two precincts from an adjacent group of wavelet coefficients spatially related to an adjacent slice of the rectangular array of spatial image samples, the at least two precincts being adjacent to the entire group of wavelet coefficients comprised in the extended group of wavelet coefficients.
[0047] Herein, the term “precinct” is to be interpreted according to the JPEG XS standard, i.e. as a collection of wavelet coefficients contributing to a given spatial region of an image, wherein said wavelet coefficients may optionally be quantized. In addition, in an embodiment wherein the decoding of the encoded image conforms with the JPEG XS standard, a slice may be interpreted according to the JPEG XS standard, i.e. as an integral number of precincts whose wavelet coefficients can be entropy-decoded independently. However, a slice as defined herein may generally comprise a plurality of slices according to the JPEG XS standard. In addition, a slice as defined herein may correspond to a slice group as defined in prior art document D1.
[0048] In an embodiment, the method for decoding is further characterized in that:the cascade of inverse wavelet-type filter operations comprises one inverse wavelettype filter operation of the LeGall 5 / 3 type in the vertical direction; and at least some of the extended groups of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice of the rectangular array of spatial image samples; and two precincts from an adjacent group of wavelet coefficients spatially related to an adjacent slice of the rectangular array of spatial image samples, the two precincts being adjacent to the entire group of wavelet coefficients comprised in the extended group of wavelet coefficients.
[0049] In an embodiment, the method for decoding is further characterized in that: the cascade of inverse wavelet-type filter operations comprises two inverse wavelet-type filter operations of the LeGall 5 / 3 type in the vertical direction; and at least some of the extended groups of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice of the rectangular array of spatial image samples; and two precincts from an adjacent group of wavelet coefficients spatially related to an adjacent slice of the rectangular array of spatial image samples, the two precincts being adjacent to the entire group of wavelet coefficients comprised in the extended group of wavelet coefficients.
[0050] According to a second aspect of the first innovative improvement, there is provided a computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method for decoding.
[0051] According to a third aspect of the first innovative improvement, there is provided a decoder comprising a processor and a memory, and configured to perform the method for decoding.
[0052] A decoder according to the third aspect may be a data processing device comprising the following means for carrying out the method for decoding: a processor able to execute computer instructions, such as for example a CPU, or a GPU, or another type of processor; and at least one memory, such as for example a non-transitory computer-readable memory, a processor register, a cache memory, a random-access memory (RAM), a nonvolatile memory, or another type of memory.
[0053] All the possible embodiments and advantages of the first aspect of the first innovative improvement apply mutatis mutandis to other aspects of the first innovative improvement.Second innovative improvement
[0054] In this section, the “method for encoding” relates to the method for encoding according to the second innovative improvement, unless otherwise specified. Similarly, in this section, the “method for decoding” relates to the method for decoding according to the second innovative improvement, unless otherwise specified.Technical field
[0055] The second innovative improvement pertains to the field of image processing using decorrelative transforms, and in particular wavelet-type filter operations.Background
[0056] An image processing algorithm such as an encoding of an image, or a decoding of an encoded image may apply a decorrelative transform running over a plurality of image lines. A decorrelative transform allows the entropy of a set of coefficients or image samples (terms known by one skilled in the art) to be reduced by concentrating probabilities of occurrence on a subset of coefficient values. A decorrelative transform may be for example a color transform, such as a reversible color transform (RCT), a temporal decorrelative transform based on interframe predictions, a discrete cosine transform (DCT), or a discrete wavelet transform (DWT).
[0057] An encoder or a decoder for processing image samples or coefficients using a decorrelative transform, and in particular using a wavelet-type filter operation, may require a memory for performing said processing. The memory may need to store a large amount of data, especially when the wavelet-type filter operation is applied in a vertical direction on respective lines of image samples. However, it may be difficult to store a large amount of data on a memory comprised in a device for encoding or decoding image data. Indeed, the size of said memory may be limited and / or said memory may be fragmented, such that a large contiguous portion of free memory is not available. Herein, “free memory” designates memory that does not contain data or that contains data that is no longer in use. Free memory may also be referred to as “available memory”.
[0058] Therefore, there is a need for reducing the amount of memory required for a computer-implemented encoding or decoding of image samples, wherein the encoding or decoding comprises a wavelet-type filter operation applied in a vertical direction on respective lines of image samples.Disclosure of the second innovative improvement
[0059] It is an object of the second innovative improvement to address this need. To this end, there is provided a method, apparatus, and computer program for encoding an image comprising image samples using a wavelet-type filter operation applied in a vertical direction on respective lines of image samples, wherein said encoding may be performed with a reduced amount of memory. In addition, there is provided a method, apparatus, and computer program for decoding an encoded image obtainable by the method for encoding, wherein said decoding may be performed with a reduced amount of memory.
[0060] According to a first aspect of the second innovative improvement, there is provided a computer-implemented method for encoding an image comprising image samples, the method for encoding comprising the steps of: providing an encoding module comprising an input line buffer, a number of intermediate line buffers and an output line buffer; grouping the image samples into respective lines of image samples, the respective lines forming a sequence of lines; providing the respective lines in the input line buffer; processing with the encoding module the respective lines for producing intermediate results and final results according to a lifting scheme of a wavelet-type filter operation applied in a vertical direction; storing the intermediate results in the intermediate line buffers; providing the final results in the output line buffer as respective sets of coefficients spatially related to the respective lines, the respective sets forming a sequence of sets; wherein the number of intermediate line buffers is equal to the minimum number of intermediate line buffers required for producing the respective sets of coefficients according to the lifting scheme.
[0061] According to the method for encoding, one set of coefficients corresponds to one line of image samples.
[0062] Herein, when a set of coefficients is said to be “spatially related to” a line of image samples, it is to be understood that there exists a spatial correspondence or mapping between positions of the image samples (in spatial domain) and the coefficients (in frequency domain resulting from wavelet transform). More precisely, the term “spatially related to” means that each element (e.g. a wavelet coefficient) corresponds to or is associated with a specific location or region in the spatial domain (e.g. an image sample or group of samples), such that the coefficient reflects information derived from that location or region.
[0063] The “latency of a lifting scheme” as used herein refers to the difference expressed as a number of image samples or coefficients (when the lifting scheme is applied in a horizontal direction) or as a number of lines of image samples or sets of coefficients (when the lifting scheme is applied in a vertical direction) between the input and the output of the lifting scheme, wherein a set of coefficients is spatially related to (or corresponds to) a line of image samples.
[0064] Preferably, the number of intermediate line buffers is equal to the number of lines of image samples (or the number of sets of coefficients) needed to produce a first output according to the lifting scheme (applied in the vertical direction) minus one. In other words, the number of intermediate line buffers is preferably equal to the latency of the lifting scheme (applied in the vertical direction) expressed as a number of lines of image samples (or the number of sets of coefficients) between the input of the lifting scheme and the output of the lifting scheme. Indeed, according to the second innovative improvement, the intermediate line buffers store a number of lines of image samples (or a number of sets of coefficients) corresponding to the latency of the lifting scheme before the output of the lifting scheme may be produced. For example, the latency of a lifting scheme of a wavelet-type filter operation of the LeGall 5 / 3 type applied in a vertical direction is equal to two lines of image samples, or two sets of coefficients, wherein a set of coefficients is spatially related to (or corresponds to) a line of image samples.
[0065] In an embodiment of the method for encoding or the method for decoding, the wavelet-type filter operation is a filter operation of the LeGall 5 / 3 type and the number of intermediate line buffers is smaller than five, preferably smaller than four, preferably smaller than three, preferably equal to two line buffers. This allows the image to be encoded or decoded with a reduced amount of memory and / or with a reduced number of memory accesses. Preferably, at least some of the line buffers may be comprised in a cache memory, thereby increasing the efficiency of the encoding or decoding of the image.
[0066] Herein, the “length” of a filter, in particular a wavelet-type filter, refers to the number of coefficients or “taps” in the filter kernel. In the context of wavelet transforms, this typically applies to the low-pass (or low-frequency) and high-pass (or high-frequency) filters that define the wavelet basis.
[0067] Preferably, the total number of line buffers, i.e. the input line buffer, the intermediate line buffers, and the output line buffer, is smaller than the length of the wavelettype filter operation applied in the vertical direction.
[0068] Several wavelet-type filters known to a person skilled in the art are described below, namely a wavelet-type filter of the Haar type, a wavelet-type filter of the LeGall 5 / 3 type,and a wavelet-type filter of the Cohen-Daubechies-Feauveau 9 / 7 type. The second innovative improvement is applicable to, but is not limited to, each of the wavelet-type filters described below.
[0069] Haar (DWT 2 / 2)For example, a wavelet-type filter of the Haar type has a filter length equal to 2.A wavelet-type filter of the Haar type may also be referred to herein as a “Forward Discrete Wavelet Transform of the Haar type” or simply a “FDWT Haar transform”. The FDWT Haar transform decomposes a signal into its average (low-pass filter, or low-frequency (LF) filter) and difference (high-pass filter, or high-frequency (HF) filter). The LF and HF filters of the FDWT Haar transform are computed according to the following equations: s1i = (s°i + s°i+i) / 2 (LF) d1, = s0, - soi+i(HF)The FDWT Haar low-pass and high-pass filters each have two taps, so the filter length is 2. This short length makes the Haar transform computationally efficient, though it provides limited frequency resolution compared to longer wavelet filters.An inverse wavelet-type filter of the Haar type may also be referred to herein as an “Inverse Discrete Wavelet Transform of the Haar type” or simply a “I DWT Haar transform”. The I DWT Haar transform reverses the HF and LF equations of the FDWT Haar transform according to the following equations: s°j = (2s1j + d1j) / 2 (EVEN) d°j = (2s1j - d1j) / 2 (ODD)Therefore, the inverse wavelet-type filter of the Haar type also has a filter length equal to 2.
[0070] LeGall (DWT 5 / 3)For example, a wavelet-type filter of the LeGall 5 / 3 type has a filter length equal to 5.A wavelet-type filter of the LeGall 5 / 3 type may also be referred to herein as a “Forward Discrete Wavelet Transform of the LeGall 5 / 3 type” or simply a “FDWT 5 / 3 transform”. The LF and HF filters of the FDWT 5 / 3 transform are computed according to the following equations:The FDWT 5 / 3 transform has a low-pass filter length equal to 5 and a high-pass filter length equal to 3. Therefore, the FDWT 5 / 3 has an overall filter length equal to 5.An inverse wavelet-type filter of the LeGall 5 / 3 type may also be referred to herein as an “Inverse Discrete Wavelet Transform of the LeGall 5 / 3 type” or simply a “I DWT 5 / 3 transform”.The I DWT 5 / 3 transform reverses the HF and LF equations of the FDWT 5 / 3 transform according to the following equations:Therefore, the inverse wavelet-type filter of the LeGall 5 / 3 type also has a filter length equal to 5.
[0071] Cohen-Daubechies-Feauveau (DWT 9 / 7)For example, a wavelet-type filter of the Cohen-Daubechies-Feauveau 9 / 7 type has a filter length equal to 9.A wavelet-type filter of the Cohen-Daubechies-Feauveau 9 / 7 type may also be referred to herein as a “CDF 9 / 7 transform”.To perform the CDF 9 / 7 transform, a total of four lifting steps are required: two predict and two update steps. The lifting factorization leads to the following sequence of filtering steps: di = di + a(si + si+i) si = si + b(di + di-i) di = di + c(si + si+i) Si = Si + d(di + di-i) di = kidi Si = k2SiThe JPEG 2000 compression standard uses the FDWT 5 / 3 transform for lossless compression and the CDF 9 / 7 transform for lossy compression.
[0072] The method for encoding allows image samples to be encoded with a reduced amount of memory in an encoding process comprising a wavelet-type filter operation applied in a vertical direction on respective lines of image samples.
[0073] Indeed, a memory comprising the line buffers of the encoding module may be reduced because the number of intermediate line buffers is equal to the minimum number of intermediate line buffers required for producing the respective sets of coefficients according to the lifting scheme. For example, said memory does not have to store all the lines of an image to be processed. Instead, said memory may only store a reduced number of image lines corresponding to the minimum number of image lines required for producing the respective sets of coefficients according to the lifting scheme.
[0074] An image before encoding may also be referred to herein as an “original image”. An image after encoding may also be referred to herein as an “encoded image”. An imagereconstructed after decoding of an encoded image may also be referred to herein as a “decoded image”.
[0075] Herein, a buffer is comprised in a memory. A buffer is therefore a subset of a memory. Herein, a memory may also designate a physical device able to store information, in particular binary information. Herein, the size of a buffer, or the size of a memory, is the total number of elements that can be stored in the buffer or the memory, respectively.
[0076] Advantageously, the performance of an encoder may be improved thanks to the method for encoding. Indeed, with a reduced amount of memory, there is a reduced risk of so- called “cache misses”. As is commonly known, a cache miss occurs when a data requested by a system is not found in a cache memory. Instead, the system needs to retrieve the data from a slower memory, such as a main memory or a hard disk drive. A cache miss may reduce the performance of the system because accessing data from the slower memory takes more time compared to retrieving the data from the cache memory. In modern computer systems, there are several cache memories organized in several “levels”, a lower-level cache memory being faster, but smaller, than a higher-level cache memory. When a data is not found in a lower-level cache memory, a cache miss occurs and the data needs to be retrieved from a higher-level, and therefore slower, cache memory. According to the second innovative improvement, the amount of memory required to store the buffers of the encoding module may be reduced. This allows said buffers to be stored in a lower-level, and therefore faster, cache memory, thereby reducing the cache misses and thus increasing the performance of an encoder comprising the encoding module.
[0077] Furthermore, the method for encoding may allow existing coding techniques to be implemented in a more efficient manner. The JPEG XS standard is an example of an existing coding technique which may be implemented in a more efficient manner according to the method for encoding. The JPEG XS standard, formally known as ISO / IEC 21122, is an interoperable, visually lossless, low-latency, and lightweight image and video coding system. The JPEG XS standard is divided into several parts, each part specifying specific aspects of the standard. JPEG XS Part 1, formally known in its second edition as ISO / IEC 21122-1:2022, normatively defines how a compressed JPEG XS codestream can be transformed into a decoded image in a bit exact manner, a “codestream” being defined in the JPEG XS standard as a compressed image data representation that includes all necessary data to allow a (full or approximate) reconstruction of the sample values of a digital image. Moreover, JPEG XS Part 1 provides some key algorithms enabling an encoder to generate a JPEG XS codestream. Herein the expression “JPEG XS standard” generally designates the JPEG XS specificationaccording to documents published under reference ISO / IEC 21122, including any part of said specification and any edition of said parts.
[0078] Preferably, a line buffer of the encoding module is able to store at least one line of image samples, more preferably exactly one line of image samples.
[0079] Preferably, the encoding module according to the second innovative improvement is configured for processing the image line-by-line, i.e. processing one line at a time, in particular in a case where the input line buffer and / or the output line buffer has a size of one line of image samples.
[0080] The inventors propose several possible embodiments comprising optional features, where some of them can be combined.
[0081] In an embodiment, at least some of the respective lines provided in the input line buffer result from one or more prior operations, said one or more prior operations being performed before each of said respective lines is provided in the input line buffer. In other words, said one or more prior operations are performed before each of the at least some of the respective lines resulting from the one or more prior operations is provided in the input line buffer. Said prior operations may be performed in a pre-processing module able to provide data to the encoding module. An advantage of this embodiment is that data provided to the encoding module are likely to be located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of an encoder comprising the preprocessing module and the encoding module.
[0082] Preferably, all of the respective lines provided in the input line buffer result from one or more prior operations, said one or more prior operations being performed before each line of image samples in the sequence of lines is provided in the input line buffer.
[0083] Examples of said prior operations include, but are not limited to: decorrelative transforms, such as a reversible color transform (RCT), or a wavelet-type filter operation applied in a horizontal or vertical direction; conversion from user format to input line buffer format, such as a conversion from a user precision (e.g. 8 bits, 16 bits) to an input line buffer precision (e.g. 32 bits), an unpacking of bits from a user format to an input line buffer format, etc.
[0084] In an embodiment, at least some of the respective sets of coefficients are further processed in one or more subsequent operations, said one or more subsequent operations being performed after each of said respective sets of coefficients is provided in the output line buffer. In other words, said one or more subsequent operations are performed after each of the at least some of the respective sets further processed in the one or more subsequentoperations is provided in the output line buffer. Said subsequent operations may be performed in a post-processing module able to receive data from the encoding module. An advantage of this embodiment is that said subsequent operations are performed on data that are likely to be located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of an encoder comprising the encoding module and the postprocessing module.
[0085] Preferably, all of the respective sets of coefficients are further processed in one or more subsequent operations, said one or more subsequent operations being performed after each set of coefficients in the sequence of sets is provided in the output line buffer.
[0086] Examples of said subsequent operations include, but are not limited to: decorrelative transforms, such as a wavelet-type filter operation applied in a horizontal or vertical direction; operations for preparing an entropy encoding of a set of coefficients, such as a computation of bitplane counts of the set of coefficients as specified in a JPEG XS standard; operations for preparing a packing of a set of coefficients in packets.
[0087] Preferably, said prior and / or subsequent operations are interlaced with the processing of the data by the encoding module, i.e. the processing of the respective lines to produce the respective sets, such as to increase the probability that the processed data are located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of an encoder comprising the encoding module.
[0088] The pre-processing module, the encoding module and the post-processing module as used herein are software modules. Said modules should be interpreted as a way of distinguishing between different types of operations. Namely, the encoding module applies a wavelet-type filter operation on respective lines of image samples; the pre-processing module applies one or more prior operations as defined hereinbefore; and the post-processing module applies one or more subsequent operations as defined hereinbefore. Said modules may be comprised in a single system, i.e. the operations performed by said modules may be executed by a single processor. Said modules may also be comprised a distributed system, i.e. the operations performed by said modules may be executed by a plurality of processors.
[0089] In an embodiment, at least one of said prior or subsequent operations is an additional wavelet-type filter operation. Said additional wavelet-type filter operation may be applied in a horizontal or vertical direction. A wavelet-type filter operation applied in a horizontal direction is applied along a line of image samples or coefficients and may also be referred to herein as a “horizontal wavelet-type filter operation”. A wavelet-type filter operation applied in a vertical direction is applied across lines of image samples or coefficients and may also bereferred to herein as a “vertical wavelet-type filter operation”. Said additional wavelet-type filter operation is preferably applied according to the lifting scheme.
[0090] In an embodiment, at least one of said subsequent operations is an operation for entropy encoding a set of coefficients. Entropy encoding generally designates techniques for reducing the size of a set of data, i.e. compressing a set of data. Known examples of entropy encoding techniques include Huffman coding, arithmetic coding, and Golomb codes, such as unary coding or Rice coding. Besides, JPEG XS Part 1 (ISO / IEC 21122-1 :2022) specifies some types of entropy decoding and related encoding in its subclause C.6.
[0091] In an embodiment, after all data comprised in a buffer have been processed, said buffer is reused to store processed data. A buffer of this embodiment may be for instance a line buffer of the encoding module, such as an input line buffer, an intermediate line buffer, or an output line buffer. A buffer of this embodiment may also be a buffer of the pre-processing module or a buffer of the post-processing module. An advantage of this embodiment is to allow a more efficient use of available memory, by reusing already allocated memory rather than having to allocate additional memory. This embodiment allows limiting the size of a memory comprising the buffers. In addition, limiting the size of the memory comprising the buffers may reduce the risk of cache misses and may therefore improve the performance of an encoder comprising the encoding module. A particular case of this embodiment is the so-called “in- place” processing, wherein output data produced by a process are stored in the place of input data of the process, i.e. replace the input data in a buffer. In addition, this embodiment, its variants, and its advantages may apply mutatis mutandis to the method for decoding.
[0092] In an embodiment, the wavelet-type filter operation is a filter operation of the LeGall 5 / 3 type, and the number of intermediate line buffers is equal to two line buffers. A wavelet-type filter operation of the LeGall 5 / 3 type is a known type of Discrete Wavelet Transform (DWT) comprising a low-pass filter with a support of 5 coefficients and a high-pass filter with a support of 3 coefficients. A wavelet-type filter operation of the LeGall 5 / 3 type is also herein referred to as a “DWT 5 / 3 transform”. The DWT 5 / 3 transform is used as a decorrelative transform in the JPEG XS standard, see e.g. subclause E.7 of JPEG XS Part 1 (ISO / IEC 21122-1 :2022). Compared to other wavelet transforms, such as for example the DWT 9 / 7 transform used in JPEG 2000 (formally known as ISO / IEC 15444), the DWT 5 / 3 transform offers the following advantages. First, it is reversible because it uses only integer coefficients, so its output does not require rounding (quantization) and so it does not introduce any quantization noise. In addition, the low-pass and high-pass filters of the DWT 5 / 3 transform have a reduced support of only 5 and 3 coefficients, respectively. Finally, the DWT 5 / 3transform may be implemented “in-place” according to a lifting scheme, thereby allowing it to be implemented with a reduced computational complexity and a reduced memory footprint. Namely, in the case of the DWT 5 / 3 transform applied in a vertical direction, the minimum number of buffered lines, or in other words the minimum number of intermediate lines of image samples, required for producing the respective sets of coefficients according to the lifting scheme is equal to two lines. This embodiment and its advantages may be applied mutatis mutandis to the method for decoding.
[0093] In an embodiment, the encoding of the image conforms with a JPEG XS standard.
[0094] According to a second aspect of the second innovative improvement, there is provided a computer-implemented method for decoding an encoded image, wherein the encoded image comprises respective sets of coefficients forming a sequence of sets, the respective sets of coefficients being obtainable by a method for encoding comprising the step of: applying a wavelet-type filter operation in a vertical direction on respective lines of image samples for producing respective sets of coefficients spatially related to the respective lines of image samples; wherein the method for decoding comprises the steps of: providing a decoding module comprising an input line buffer, a number of intermediate line buffers and an output line buffer; providing the respective sets of coefficients of the encoded image in the input line buffer; processing with the decoding module the respective sets of coefficients for producing intermediate results and final results according to a lifting scheme of an inverse wavelet-type filter operation applied in a vertical direction; storing the intermediate results in the intermediate line buffers; providing the final results in the output line buffer as respective decoded lines of image samples spatially related to the respective sets of coefficients, the respective decoded lines forming a sequence of decoded lines; wherein the number of intermediate line buffers is equal to the minimum number of intermediate line buffers required for producing the respective decoded lines of image samples according to the lifting scheme.
[0095] Preferably, the encoded image is obtained according to the method for encoding.
[0096] The method for decoding allows respective sets of coefficients comprised in an encoded image to be decoded with a reduced amount of memory in a decoding processcomprising an inverse wavelet-type filter operation applied in a vertical direction on said respective sets of coefficients.
[0097] Indeed, a memory comprising the line buffers of the decoding module may be reduced because the number of intermediate line buffers is equal to the minimum number of intermediate line buffers required for producing the respective decoded lines of image samples according to the lifting scheme. For example, said memory does not have to store all the respective sets of coefficients to be processed. Instead, said memory may only store a reduced number of sets of coefficients corresponding to the minimum number of sets of coefficients required for producing the respective decoded lines of image samples according to the lifting scheme.
[0098] Advantageously, the performance of a decoder may be improved thanks to the method for decoding. Indeed, with a reduced amount of memory, there is a reduced risk of so- called “cache misses”. According to the second innovative improvement, the amount of memory required to store the buffers of the decoding module may be reduced. This allows said buffers to be stored in a lower-level, and therefore faster, cache memory, thereby reducing the cache misses and thus increasing the performance of a decoder comprising the decoding module.
[0099] Preferably, a line buffer of the decoding module is able to store at least one set of coefficients, more preferably exactly one set of coefficients.
[0100] Preferably, the decoding module according to the second innovative improvement is configured for processing the encoded image set-by-set, i.e. processing one set of coefficients at a time, in particular in a case where the input line buffer and / or the output line buffer has a size of one set of coefficients.
[0101] The method for encoding and the method for decoding are two aspects of the same innovative improvement, forming a single general inventive concept. Indeed, the steps of the method for decoding mirror the steps of the method for encoding in the reverse order. Therefore, all the possible embodiments and advantages of the method for encoding apply mutatis mutandis to the method for decoding.
[0102] In an embodiment, at least some of the respective sets of coefficients provided in the input line buffer result from one or more prior operations, said one or more prior operations being performed before each of said respective sets of coefficients is provided in the input line buffer. In other words, said one or more prior operations are performed before each of the at least some of the respective sets of coefficients resulting from the one or more prior operations is provided in the input line buffer. Said prior operations may be performed in a pre-processingmodule able to provide data to the decoding module. An advantage of this embodiment is that data provided to the decoding module are likely to be located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of a decoder comprising the pre-processing module and the decoding module.
[0103] Preferably, all of the respective sets of coefficients provided in the input line buffer result from one or more prior operations, said one or more prior operations being performed before each set of coefficients in the sequence of sets is provided in the input line buffer.
[0104] Examples of said prior operations include, but are not limited to: inverse decorrelative transforms, such as an inverse wavelet-type filter operation applied in a horizontal or vertical direction; operations for entropy decoding a set of coefficients, such as decoding a set of coefficients based on bitplane count and data subpackets as specified in a JPEG XS standard; operations for unpacking a set of coefficients from a packet.
[0105] In an embodiment, at least some of the respective decoded lines of image samples are further processed in one or more subsequent operations, said one or more subsequent operations being performed after each of said respective decoded lines is provided in the output line buffer. In other words, said one or more subsequent operations are performed after each of the at least some of the respective decoded lines further processed in the one or more subsequent operations is provided in the output line buffer. Said subsequent operations may be performed in a post-processing module able to receive data from the decoding module. An advantage of this embodiment is that said subsequent operations are performed on data that are likely to be located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of a decoder comprising the decoding module and the post-processing module.
[0106] Preferably, all of the respective decoded lines of image samples are further processed in one or more subsequent operations, said one or more subsequent operations being performed after each decoded line in the sequence of decoded lines is provided in the output line buffer.
[0107] Examples of said subsequent operations include, but are not limited to: inverse decorrelative transforms, such as an inverse reversible color transform (IRCT), or an inverse wavelet-type filter operation applied in a horizontal or vertical direction; conversion from output line buffer format to user format, such as a conversion from an output line buffer precision (e.g. 32 bits) to a user precision (e.g. 8 bits, 16 bits), a packing of bits from an output line buffer format to a user format, etc.
[0108] Preferably, said prior and / or subsequent operations are interlaced with the processing of the data by the decoding module, i.e. the processing of the respective sets to produce the respective decoded lines, such as to increase the probability that the processed data are located in a lower-level cache memory, thereby reducing the risk of cache miss and therefore increasing the performance of a decoder comprising the decoding module.
[0109] The pre-processing module, the decoding module and the post-processing module as used herein are software modules. Said modules should be interpreted as a way of distinguishing between different types of operations. Namely, the decoding module applies an inverse wavelet-type filter operation on respective sets of coefficients; the pre-processing module applies one or more prior operations as defined hereinbefore; and the post-processing module applies one or more subsequent operations as defined hereinbefore. Said modules may be comprised in a single system, i.e. the operations performed by said modules may be executed by a single processor. Said modules may also be comprised a distributed system, i.e. the operations performed by said modules may be executed by a plurality of processors.
[0110] In an embodiment, at least one of said prior or subsequent operations is an additional inverse wavelet-type filter operation. Said additional inverse wavelet-type filter operation may be applied in a horizontal or vertical direction. An inverse wavelet-type filter operation applied in a horizontal direction is applied along a line of coefficients and may also be referred to herein as a “horizontal inverse wavelet-type filter operation”. An inverse wavelettype filter operation applied in a vertical direction is applied across lines of coefficients and may also be referred to herein as a “vertical inverse wavelet-type filter operation”. Said additional inverse wavelet-type filter operation is preferably applied according to the lifting scheme.
[0111] In an embodiment, at least one of said prior operations is an operation for entropy decoding a set of coefficients. Preferably, said entropy decoding is an entropy decoding specified in a JPEG XS standard, such as a decoding of a set of coefficients based on bitplane count and data subpackets.
[0112] In an embodiment, after all data comprised in a buffer have been processed, said buffer is reused to store processed data. A buffer of this embodiment may be for instance a line buffer of the decoding module, such as an input line buffer, an intermediate line buffer, or an output line buffer. A buffer of this embodiment may also be a buffer of the pre-processing module or a buffer of the post-processing module.
[0113] In an embodiment, the inverse wavelet-type filter operation is an inverse filter operation of the LeGall 5 / 3 type, and the number of intermediate line buffers is equal to two line buffers.
[0114] In an embodiment, the decoding of the encoded image conforms with a JPEG XS standard.
[0115] According to a third aspect of the second innovative improvement, there is provided a computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out a method for encoding or for decoding according to the second innovative improvement.
[0116] In an embodiment, there is provided a non-transitory recording medium having recorded therein an encoding program that causes a processor to execute a method for encoding according to the second innovative improvement.
[0117] In an embodiment, there is provided a non-transitory recording medium having recorded therein a decoding program that causes a processor to execute a method for decoding according to the second innovative improvement.
[0118] According to a fourth aspect of the second innovative improvement, there is provided an encoder comprising an encoding module, the encoding module comprising an input line buffer, a number of intermediate line buffers and an output line buffer, the encoder being configured for performing a method for encoding according to the second innovative improvement.
[0119] Preferably, the encoder further comprises a processor for processing data and a memory, said line buffers being comprised, or in other words stored, in said memory, i.e. said memory being configured for storing said line buffers.
[0120] According to a fifth aspect of the second innovative improvement, there is provided a decoder comprising a decoding module, the decoding module comprising an input line buffer, a number of intermediate line buffers and an output line buffer, the decoder being configured for performing a method for decoding according to the second innovative improvement.
[0121] Preferably, the decoder further comprises a processor for processing data and a memory, said line buffers being comprised, or in other words stored, in said memory, i.e. said memory being configured for storing said line buffers.
[0122] Processing an image according to the method for encoding does not necessarily imply a compression of said image, i.e. a reduction of the number of bits required to store said image or a representation of said image. Similarly, processing an encoded image according to the method for decoding does not necessarily imply a decompression of said encoded image.
[0123] All the possible embodiments and advantages of the first aspect of the second innovative improvement apply mutatis mutandis to other aspects of the second innovative improvement.Brief description of the figures
[0124] For a better understanding of the present invention, reference will now be made, by way of example, to the accompanying drawings.Figures 1 to 10 relate to the first innovative improvement:Fig. 1 schematically represents a segmentation of an image into slices and precincts;Fig. 2 illustrates a decoding of an encoded image according to the prior art;Fig. 3 illustrates a decoding of an encoded image according to an embodiment;Fig. 4 illustrates a decoding of an encoded image according to an embodiment;Fig. 5 schematically represents an encoder for encoding an image;Fig. 6 schematically represents a decoder for decoding an encoded image;Fig. 7 is a schematic representation of a lifting scheme implementation of a wavelettype filter operation of the LeGall 5 / 3 type in a forward way;Fig. 8 is a schematic representation of a lifting scheme implementation of a wavelettype filter operation of the LeGall 5 / 3 type in an inverse way;Fig. 9 illustrates a decoding of an encoded image according to the prior art;Fig. 10 illustrates a decoding of an encoded image according to an embodiment.Figures 11 to 15 relate to the second innovative improvement:Fig. 11 schematically represents an encoder for encoding an image;Fig. 12 schematically represents a decoder for decoding an encoded image;Fig. 13 is a schematic representation of a lifting scheme implementation of a wavelettype filter operation of the LeGall 5 / 3 type in a forward way;Fig. 14 is a schematic representation of a lifting scheme implementation of a wavelettype filter operation of the LeGall 5 / 3 type in an inverse way;Fig. 15 schematically represents a decomposition of an image into subbands in a cascade of wavelet-type filter operations.Figures 16 to 30 relate to preferred use cases or embodiments of the invention:Fig. 16 schematically represents an encoder according to an embodiment;Fig. 17 schematically represents a decoder according to an embodiment;Figures 18 to 21 display the number of samples comprised in an image for different image formats and images sizes;Figures 22 to 25 display the number of samples per second for different image formats and sizes in a sequence of images;Fig. 26 displays the size in bytes of a line of an uncompressed image for different image formats;Fig. 27 displays test results of an encoder and a decoder according to an embodiment of the invention vs. an encoder and a decoder of the prior art;Figures 28 and 29 respectively display test results of an encoder and a decoder according to an embodiment of the invention for different image sizes and formats;Fig. 30 displays test results illustrating the scaling of encoding and decoding performance with the number of execution threads.
[0125] The figures are not drawn to scale. Generally, identical or analogous elements are denoted by the same reference numerals or letters in the figures.Detailed description of some embodiments
[0126] The present invention will be described with respect to particular embodiments and with reference to certain drawings but the invention is not limited thereto. The described functions are not limited by the described structures. The described drawings are only schematic and are non-limiting. In the drawings, the size of some of the elements may be exaggerated and not drawn to scale for illustrative purposes.
[0127] Use of the verb “to comprise”, as well as the respective variants and conjugations, does not exclude the presence of elements other than those stated. Use of the article “a”, “an” or “the” preceding an element does not exclude the presence of a plurality of such elements.
[0128] The terms “first”, “second”, “third” and the like, in the description and in the claims, are used for distinguishing between similar elements and not necessarily for describing a sequential or chronological order. The terms are interchangeable under appropriate circumstances and the embodiments described herein can operate in other sequences than those described or illustrated herein.
[0129] Furthermore, embodiments referred to as “preferred” are to be construed as exemplary manners in which the invention may be implemented rather than as limiting the scope of the invention.
[0130] Herein, the term “computational complexity” generally refers to the resources needed to run a computation, in terms of the number of operations required and / or in terms of the number of memory accesses (read / write) required. A computation requiring a higher computational complexity is one that requires more operations and / or more memory accesses.A computation requiring a lower computational complexity is one that requires less operations and / or less memory accesses. Unless otherwise specified, the term “computational complexity” is used herein to designate the number of operations required for a computation, and / or the number of memory accesses required forthat computation. In addition, the quantity of data retrieved from a memory is related to the size of the data bus of the memory, i.e. the quantity of data retrieved in each memory access, so that a larger number of memory accesses generally results in a larger quantity of data retrieved from the memory. Therefore, a higher computational complexity may also correspond to a larger quantity of data retrieved from a memory. In the particular case of a processor with a cache memory, the processor may read a whole cache line from the cache memory and then extract data from this cache line. In this case, the computational complexity may be measured in terms of the number of cache lines accessed by the processor for performing a given computation.First innovative improvement
[0131] In this section, the “method for decoding” relates to the method for decoding according to the first innovative improvement, unless otherwise specified.
[0132] Fig. 1 schematically represents a segmentation of an image into slices and precincts. More precisely, Fig. 1 illustrates a rectangular array 100 of spatial image samples representing the image. Said array 100 is segmented into a plurality of slices 10-13 represented by rectangles with thick borders. Each slice comprises a plurality of precincts 20- 23 represented by rectangles with thin borders. In the particular example of Fig. 1 , the rectangular array 100 of spatial image samples representing the image is segmented into four slices 10-13, and each one of said slices 10-13 comprises four precincts.
[0133] The representation of slices and precincts used in Fig. 1 is also used in Figures 2 to 4. This is reminded on Figures 2 to 4 by the use of rectangles with thick borders for representing the slices 10-13 and by the use of rectangles with thin borders for representing the respective precincts comprised in the respective slices 10-13.
[0134] Fig. 2 illustrates a decoding of an encoded image according to the prior art. More precisely, Fig. 2 illustrates a decoding of an encoded image as disclosed in prior art document D1 , in particular as illustrated in Fig. 2 of said document D1. Said encoded image has been obtained by applying at least one wavelet-type filter operation in a vertical direction, i.e. running over a plurality of image lines. The encoded image is decoded into the decoded image 200. A strip 30 of spatial image samples is reconstructed in a processing channel from wavelet coefficients of the encoded image. The strip 30 corresponds to the slice 11 in the originalimage, i.e. in the image before encoding. The strip 30 has the same size, i.e. comprises the same number of spatial image samples, as the corresponding slice 11.
[0135] Fig. 2 schematically represents an extended group of wavelet coefficients 33 supplied to the processing channel for reconstructing the strip 30. It should be noted that said wavelet coefficients are not represented as such in Fig. 2, but only via the slices, precincts, and strips they are spatially related to. The extended group 33 comprises wavelet coefficients spatially related to the strip 30 and the slice 11 , as represented in dark grey. The extended group 33 further comprises additional wavelet coefficients spatially related to the adjacent slice 10 above the slice 11, and more precisely spatially related to the last precinct 31 of the slice 10. The extended group 33 further comprises additional wavelet coefficients spatially related to the adjacent slice 12 below the slice 11 , and more precisely to the first precinct 32 of the slice 12. The additional wavelet coefficients are represented in light grey. The additional wavelet coefficients are required for enabling the processing channel to reconstruct the strip 30 because the wavelet-type filter applied in the vertical direction has a size larger than one line.
[0136] The decoding according to the prior art as illustrated in Fig. 2 has the disadvantage that the processing channel reconstructing the strip 30 needs data from three adjacent groups of wavelet coefficients, the three adjacent groups being spatially related to the slices 10, 11 and 12, respectively. This may involve a relatively high computational complexity, which can be disadvantageous in terms of processing efficiency and resource consumption by increasing the need for synchronization between processing channels. In addition, in a case where wavelet coefficients spatially related to the precinct 31 are entropy encoded with a vertical prediction scheme as described hereinabove, decoding said wavelet coefficients may require decoding the entire slice 10, thereby further increasing the computational complexity of the decoding of the image.
[0137] Fig. 3 illustrates a decoding of an encoded image according to an embodiment of the first innovative improvement. Said encoded image has been obtained by applying at least one wavelet-type filter operation in a vertical direction, i.e. running over a plurality of image lines. The encoded image is decoded into the decoded image 300. A strip 40 of spatial image samples is reconstructed in a processing channel from wavelet coefficients of the encoded image. The strip 40 corresponds to the slice 11 in the original image, i.e. in the image before encoding. The strip 40 has the same size, i.e. comprises the same number of spatial image samples, as the corresponding slice 11. The strip 40 is spatially offset, or shifted, upwards with respect to the corresponding slice 11.
[0138] Fig. 3 schematically represents an extended group of wavelet coefficients 43 supplied to the processing channel for reconstructing the strip 40. It should be noted that said wavelet coefficients are not represented as such in Fig. 3, but only via the slices, precincts, and strips they are spatially related to. The extended group 43 comprises wavelet coefficients spatially related to the strip 40, as represented in dark grey. In the same way as in Fig. 2, the extended group 43 further comprises additional wavelet coefficients due to the size of the wavelet filter that is larger than one line. These additional wavelet coefficients are schematically represented in light grey and they are respectively spatially related to precinct 41 in slice 10 and precinct 42 in slice 11. As represented in Fig. 3, the extended group 43 comprises wavelet coefficients spatially related to only two slices, namely slices 10 and 11. This enables the processing channel reconstructing the strip 40 to require wavelet coefficients spatially related to only two slices instead of three slices in the prior art situation of Fig. 2. This improves the computational efficiency of the parallel decoding of the encoded image by allowing the processing channel reconstructing the strip 40 to require data from only two adjacent groups of wavelet coefficients instead of three adjacent groups of wavelet coefficients as disclosed in the prior art, in particular in document D1.
[0139] Fig. 4 illustrates a decoding of an encoded image according to an embodiment of the first innovative improvement. Said encoded image has been obtained by applying at least one wavelet-type filter operation in a vertical direction, i.e. running over a plurality of image lines. The encoded image is decoded into the decoded image 400. A strip 50 of spatial image samples is reconstructed in a processing channel from wavelet coefficients of the encoded image. The strip 50 corresponds to the slice 11 in the original image, i.e. in the image before encoding. The strip 50 has the same size, i.e. comprises the same number of spatial image samples, as the corresponding slice 11. The strip 50 is spatially offset, or shifted, downwards with respect to the corresponding slice 11.
[0140] Fig. 4 schematically represents an extended group of wavelet coefficients 53 supplied to the processing channel for reconstructing the strip 50. It should be noted that said wavelet coefficients are not represented as such in Fig. 4, but only via the slices, precincts, and strips they are spatially related to. The extended group 53 comprises wavelet coefficients spatially related to the strip 50, as represented in dark grey. In the same way as in Figures 2 and 3, the extended group 53 further comprises additional wavelet coefficients due to the size of the wavelet filter that is larger than one line. These additional wavelet coefficients are schematically represented in light grey and they are respectively spatially related to precinct 51 in slice 11 and precinct 52 in slice 12. As represented in Fig. 4, the extended group 53comprises wavelet coefficients spatially related to only two slices, namely slices 11 and 12. This enables the processing channel reconstructing the strip 50 to require wavelet coefficients spatially related to only two slices instead of three slices in the prior art situation of Fig. 2. This improves the computational efficiency of the parallel decoding of the encoded image by allowing the processing channel reconstructing the strip 50 to require data from only two adjacent groups of wavelet coefficients instead of three adjacent groups of wavelet coefficients as disclosed in the prior art, in particular in document D1. In addition, even in a case where wavelet coefficients spatially related to the precinct 51 are entropy encoded with a vertical prediction scheme as described hereinabove, decoding said wavelet coefficients does not require decoding the slice 10 above slice 11, thereby further improving the computational efficiency of the parallel decoding of the encoded image.
[0141] Figures 3 and 4 illustrate particular embodiments of the method for decoding according to the first innovative improvement. Other embodiments are possible within the scope of the first innovative improvement. Moreover, the additional wavelet coefficients depicted in light gray in Figures 3 and 4 are only schematically represented in said Figures. These additional wavelet coefficients do not necessarily span the entire precincts 41 , 42, 51, 52 to which they are respectively spatially related.
[0142] Fig. 5 schematically represents an encoder 1100 for encoding an image 1101. Fig. 5 provides a block diagram of the encoder 1100. The encoder 1100 may be configured for performing the steps for obtaining (or producing) an encoded image according to the first innovative improvement. The encoder 1100 comprises a decorrelative transform module 1102 and an entropy coding module 1103. The encoder 1100 operates as follows. The encoder 1100 receives an image 1101 and applies at least one decorrelative transform on image samples from said image 1101 in order to reduce the correlation of said image samples. Such a decorrelative transform may be for instance a reversible color transform (RCT), a temporal decorrelative transform based on interframe predictions, a discrete cosine transform (DCT), or a discrete wavelet transform (DWT). The entropy coding module 1103 then receives decorrelated image samples from the decorrelative transform module 1102 and performs rate allocation and entropy coding of said decorrelated image samples. Finally, the entropy coding module 1103 packs the entropy-coded samples so as to produce an encoded image 1104.
[0143] Fig. 6 schematically represents a decoder 1200 for decoding an encoded image 1201. Fig. 6 provides a block diagram of the decoder 1200. The decoder 1200 may be configured for performing the method for decoding. The decoder 1200 comprises an entropy decoding module 1202 and an inverse decorrelative transform module 1203. The decoder1200 operates as follows. The decoder 1200 receives an encoded image 1201 and performs entropy decoding of said encoded image 1201. The inverse decorrelative transform module 1203 then receives entropy decoded coefficients from the entropy decoding module 1202 and applies at least one inverse decorrelative transform on said entropy decoded coefficients for reconstructing a decoded image 1204. The encoded image 1201 of Fig. 6 may correspond to the encoded image 1104 of Fig. 5. The decoded image 1204 may correspond to the image 1101 of Fig. 5 after an encoding and a decoding.
[0144] Fig. 7 is a schematic representation of a lifting scheme implementation 1300 of a wavelet-type filter operation of the LeGall 5 / 3 type in a forward way. For the sake of conciseness, the wavelet-type filter operation of the LeGall 5 / 3 type in a forward way is hereinafter referred to as “FDWT 5 / 3 filtering”. Said FDWT 5 / 3 filtering comprises a so-called “prediction step” producing high-frequency (HF) outputs and a so-called “update step” producing low-frequency (LF) outputs. Said steps are computed according to the following equations:The FDWT 5 / 3 filtering operation is applied to a series of even and odd input samples, which are represented as an upper row of circles in Fig. 7, said row being denoted as “IN”. Black circles in the IN row of Fig. 7 represent odd input samples, for which a high-frequency output is computed according to the HF equation above and as represented in a middle row of circles in Fig. 7, said row being denoted as “HF”. White circles in the IN row of Fig. 7 represent even input samples, for which a low-frequency output is computed according to the LF equation above and as represented in a lower row of circles in Fig. 7, said row being denoted as “LF”. Numbers next to arrows in Fig. 7 represent weighting factors according to the HF and LF equations above. Dashed arrows in Fig. 7 indicate that the series of input and output samples may comprise additional samples not represented in Fig. 7. Horizontal dashed lines highlight the respective upper, middle, and lower rows of Fig. 7.
[0145] Fig. 8 is a schematic representation of a lifting scheme implementation 1400 of a wavelet-type filter operation of the LeGall 5 / 3 type in an inverse way. For the sake of conciseness, the wavelet-type filter operation of the LeGall 5 / 3 type in an inverse way is hereinafter referred to as “IDWT 5 / 3 filtering”. Said IDWT 5 / 3 filtering reverses the HF and LF equations of the FDWT 5 / 3 filtering according to the following equations:The IDWT 5 / 3 filtering is applied on high-frequency and low-frequency output samples produced by a FDWT 5 / 3 filtering, which are represented as an upper row of circles in Fig. 8, said row being denoted as “IN”. White circles in the IN row of Fig. 8 represent low-frequency samples, for which an even output is computed according to the EVEN equation above and as represented in a middle row of circles in Fig. 8, said row being denoted as “EVEN”. Black circles in the IN row of Fig. 8 represent high-frequency samples, for which an odd output is computed according to the ODD equation above and as represented in a lower row of circles in Fig. 8, said row being denoted as “ODD”. Numbers next to arrows in Fig. 8 represent weighting factors according to the EVEN and ODD equations above. Dashed arrows in Fig. 8 indicate that the series of input and output samples may comprise additional samples not represented in Fig. 8. Horizontal dashed lines highlight the respective upper, middle, and lower rows of Fig. 8.
[0146] Fig. 9 illustrates a decoding of an encoded image according to the prior art, i.e. in several stages. Fig. 9 illustrates said decoding in a case where slices contain 4 precincts of 4 lines each, so that each slice contains 16 lines, and where a cascade of inverse wavelet-type filter operations is applied, said cascade comprising two inverse wavelet-type filter operations of the LeGall 5 / 3 type in the vertical direction. The decoding performed in said case is compatible with a decoding performed according to the JPEG XS standard.
[0147] Each large rectangle in Fig. 9 such as rectangles 1501-1506 represents a precinct. Precincts are represented in rows indicating their progressive decoding from left to right in Fig. 9, each row corresponding to a precinct represented at different stages of its decoding, the precincts represented furthest to the right in Fig. 9 being completely decoded, or reconstructed, precincts. Said precincts are comprised in slices 1510, 1511 , and 1512. The decoding represented in Fig. 9 reconstructs spatial image samples comprised in slice 1511 in several stages 1520, 1521 , and 1522. Vertical dashed lines 1530 and 1531 represent synchronization points between said stages. Fig. 9 particularly illustrates the decoding, or reconstruction, of the first two lines 1566, 1567 and the last two lines 1576, 1577 of the slice 1511.
[0148] Stage 1520 may reverse previous wavelet-type filter operations, such as wavelettype filter operations applied in the horizontal direction (not represented in Fig. 9). Said stage 1520 may also perform other operations.
[0149] Stage 1521 reverses a first wavelet-type filter operation of the LeGall 5 / 3 type in the vertical direction according to the lifting scheme 1400 of Fig. 8. First, half a line of even samples 1546 is reconstructed based on samples comprised in half-lines 1541-1543. Then,half a line of odd samples 1547 is reconstructed based on samples comprised in half-lines 1541-1545. Indeed, as shown in Fig. 8, an even sample is reconstructed from 3 samples; for example, even sample s°j in Fig. 8 is reconstructed from samples d1M, s1j, and d\ In addition, as also shown in Fig. 8, an odd sample is reconstructed from 5 samples; for example, odd sample d°j is reconstructed from samples d1M, s1j, d1j, s1j+i, and d1j+i.
[0150] Samples s1in Fig. 8 correspond to low-frequency samples, denoted as “LF” in Fig. 9, and samples d1in Fig. 8 correspond to high-frequency samples, denoted as “HF” in Fig. 9. In the same way, samples s° in Fig. 8 correspond to even samples, denoted as “Even” in Fig. 9, and samples d° in Fig. 8 correspond to odd samples, denoted as “Odd” in Fig. 9.
[0151] In the same way as described hereinabove regarding half-lines 1546 and 1547, half a line of even samples 1556 is reconstructed based on samples comprised in half-lines 1551-1553, and half a line of odd samples 1557 is reconstructed based on samples comprised in half-lines 1551-1555.
[0152] It can therefore be seen that stage 1521 works based on samples produced by stage 1520 and comprised in precincts from slice 1511 but also from slices 1510 and 1512 adjacent to slice 1511. Thus, the decoding of half-line 1546 requires samples from slice 1510, and the decoding of half-line 1557 requires samples from slice 1512. Assuming that the respective slices are decoded in respective processing channels, i.e. each slice is decoded in a dedicated processing channel, a synchronization point 1530 is therefore required between stages 1520 and 1521 in order to ensure that samples included in said adjacent slices 1510 and 1512 are available when decoding samples from slice 1511.
[0153] Finally, stage 1521 reverses wavelet-type filter operations applied in the horizontal direction (not represented in Fig. 9), such that half-line 1546 corresponds to line 1562, and half-line 1547 corresponds to line 1564. Similarly, half-line 1557 corresponds to line 1572.
[0154] Stage 1522 works in the same way as stage 1521 and reverses a second wavelettype filter operation of the LeGall 5 / 3 type in the vertical direction according to the lifting scheme 1400 of Fig. 8. First, a line of even samples 1566 is reconstructed based on samples comprised in lines 1561-1563. Then, a line of odd samples 1567 is reconstructed based on samples comprised in lines 1561-1565. Similarly, a line of even samples 1576 is reconstructed based on samples comprised in lines 1571-1573, and a line of odd samples 1577 is reconstructed based on samples comprised in lines 1571-1575.
[0155] I n the same way as a synchronization point 1530 is required between stages 1520 and 1521 because samples from adjacent slices 1510 and 1512 are needed to reconstruct some samples of slice 1511 , a synchronization point 1531 is required between stages 1521and 1522 because samples from adjacent slices 1510 and 1512 are needed to reconstruct some samples of slice 1511 , namely samples from line 1561 to reconstruct line 1566 and samples from lines 1574 and 1575 to reconstruct line 1577.
[0156] As expressed hereinabove, these synchronization points 1530 and 1531 may have a negative impact on sample decoding performance, due to the waiting times they may cause, during which processing channels are idle and therefore do not compute, as well as the cache misses they may cause, said cache misses stemming from the fact that not all the data needed to reconstruct the samples of a slice are processed in the same processing channel, so that these data may have to be retrieved from the memory of one or more other processing channels in order to be processed in a current processing channel.
[0157] Fig. 10 illustrates a decoding of an encoded image according to an embodiment of the first innovative improvement, i.e. in a single stage. Fig. 10 uses the same representations as Fig. 9. So, each large rectangle in Fig. 10 such as large rectangles 1601-1606 represents a precinct comprising 4 lines. Precincts are represented in rows indicating their progressive decoding from left to right in Fig. 10, each row corresponding to a precinct represented at different stages of its decoding, the precincts represented furthest to the right in Fig. 10 being completely decoded, or reconstructed, precincts. Said precincts are comprised in slices 1610, 1611, and 1612, each slice comprising 4 precincts, i.e. 16 lines.
[0158] Fig. 10 illustrates the decoding of a strip 1620 of spatial image samples according to an embodiment of the first innovative improvement, i.e. in a single stage. The strip 1620 is represented by a dashed-line frame in Fig. 10. The strip 1620 is offset by one precinct, i.e. 4 lines, from the slice 1611 to which it corresponds. Fig. 10 illustrates said decoding in a case where slices contain 4 precincts of 4 lines each, so that each slice contains 16 lines, and where a cascade of inverse wavelet-type filter operations is applied, said cascade comprising two inverse wavelet-type filter operations of the LeGall 5 / 3 type in the vertical direction. The decoding performed in said case is compatible with a decoding performed according to the JPEG XS standard.
[0159] The decoding illustrated in Fig. 10 being performed in a single stage, it may therefore be performed by a single processing channel, unlike the case illustrated in Fig. 9, where the decoding is performed according to the prior art, i.e. in several stages 1520-1522 and with dependencies between several processing channels. In the same way as in Fig. 9, Fig. 10 particularly illustrates the decoding, or reconstruction of the first two lines 1656, 1657 and the last two lines 1666, 1667 of the strip 1620.
[0160] The decoding illustrated in Fig. 10 is performed from an extended group of wavelet coefficients comprised in precincts 1601-1606. An advantage of the offset of strip 1620 relative to the slice 1611 to which it corresponds is that said offset allows the decoding to be performed based on samples from two slices only, i.e. slices 1611 and 1612, and in particular that said decoding may be performed without decoding samples located at the bottom of slice 1610. Indeed, in order to decode samples located at the bottom of slice 1610, it might be necessary to decode the entire slice 1610, in a case where the entropy coding of said samples is performed based on samples from preceding lines, for instance in the case of an entropy encoding such as the vertical prediction mode for bitplane count coding as specified in the JPEG XS standard.
[0161] In the same way as in Fig. 9, a first and a second wavelet-type filter operations of the LeGall 5 / 3 type in the vertical direction are reversed in Fig. 10 for decoding the strip 1620 of spatial image samples.
[0162] The first inverse wavelet-type filter operation of the LeGall 5 / 3 type in the vertical direction is applied according to the lifting scheme 1400 of Fig. 8 in the following way. First, half a line of even samples 1636 is reconstructed based on samples comprised in half-lines 1631-1633. Then, half a line of odd samples 1637 is reconstructed based on samples comprised in half-lines 1631-1635. Similarly, half a line of even samples 1644 is reconstructed based on samples comprised in half-lines 1641-1643.
[0163] Then, inverse wavelet-type filter operations are applied in the horizontal direction (not represented in Fig. 10), such that half-line 1636 corresponds to line 1652, and half-line 1637 corresponds to line 1654. Similarly, half-line 1644 corresponds to line 1664.
[0164] The second inverse wavelet-type filter operation of the LeGall 5 / 3 type in the vertical direction is applied according to the lifting scheme 1400 of Fig. 8 in the following way. First, a line of even samples 1656 is reconstructed based on samples comprised in lines 1651- 1653. Then, a line of odd samples 1657 is reconstructed based on samples comprised in lines 1651-1655. Similarly, a line of even samples 1666 is reconstructed based on samples comprised in lines 1661-1663, and a line of odd samples 1667 is reconstructed based on samples comprised in lines 1661-1665.
[0165] An advantage of the method for decoding is to allow the decoding to be performed in a single stage, so as to reduce or even remove the dependencies between processing channels. Indeed, in the single-stage decoding as illustrated in Fig. 10, there is no need for synchronization points between processing channels because all data, i.e. all the wavelet coefficients, required for a processing channel to independently reconstruct a strip of spatialimage samples, such as the strip 1620, are comprised in the extended group of wavelet coefficients provided to said processing channel. In addition, a loss of performance that could arise if said data or part thereof would have to be retrieved from memories of other processing channels is avoided thanks to the method for decoding. Therefore, the method for decoding improves the efficiency of the decoding by reducing or even removing dependencies between respective processing channels decoding in parallel respective strips of spatial image samples.
[0166] A further advantage of the method for decoding is to allow a strip of spatial image samples to be reconstructed based on wavelet coefficients spatially related to only two slices instead of more than two slices, for example three slices. In other words, a further advantage of the method for decoding is to allow each processing channel to require data from only two adjacent groups of wavelet coefficients instead of three adjacent groups of wavelet coefficients. This is an improvement over the prior art, in particular over the disclosure of prior art document D1.
[0167] Fig. 10 illustrates an embodiment of the method for decoding according to the first innovative improvement, in the particular case of an inverse wavelet-type filter operation of the LeGall 5 / 3 type. Other embodiments are possible within the scope of the first innovative improvement. In particular, other types of wavelet-type filters may be used for decoding the encoded image. The embodiment described in relation with Fig. 10 cannot be construed as limiting the scope of the method for decoding according to the first innovative improvement.
[0168] Alternatively, the method for decoding according to the first innovative improvement may be expressed as follows: a method for decoding an encoded image 1201 , wherein the method for decoding comprises: providing respective processing channels that reconstruct respective strips 40, 50 of spatial image samples from wavelet coefficients of the encoded image 1201, each of the respective processing channels reconstructing a strip 40, 50 of spatial image samples independently of the other processing channels, the respective strips 40, 50 of spatial image samples corresponding at least in size to respective slices 10-13 of a rectangular array 100 of spatial image samples representing the image, each of the respective processing channels applying a cascade of inverse wavelet-type filter operations independently of the other processing channels for reconstructing a strip 40, 50 of spatial image samples, wherein the wavelet coefficients are obtained by applying a wavelet-type transformation to the rectangular array 100 of spatial image samples representing the image, the wavelet-type transformation comprising applying a cascade of wavelet-type filter operations at least one ofwhich is applied in a vertical direction, the wavelet-type transformation producing wavelet coefficients that are spatially related to the spatial image samples in the rectangular array 100, wherein the wavelet coefficients are organized so as to obtain respective groups of wavelet coefficients that are spatially related to the respective slices 10-13 of the rectangular array 100 of spatial image samples, and wherein the respective groups of wavelet coefficients are entropy encoded independently of each other; and supplying respective extended groups 43, 53 of wavelet coefficients to the respective processing channels, whereby the extended groups 43, 53 of wavelet coefficients mutually overlap to an extent that each extended group 43, 53 of wavelet coefficients comprises all the wavelet coefficients required for the processing channel receiving the extended group 43, 53 of wavelet coefficients to independently reconstruct a strip 40, 50 of spatial image samples; wherein the respective strips 40, 50 of spatial image samples are spatially offset from the respective slices 10-13 of the rectangular array 100 of spatial image samples, and wherein the extended groups 43, 53 of wavelet coefficients each comprise wavelet coefficients from only two adjacent groups of wavelet coefficients spatially related to two adjacent slices 10-13 of the rectangular array 100 of spatial image samples, whereby said extended groups 43, 53 of wavelet coefficients each comprise one of the two groups of wavelet coefficients in its entirety and only a portion of the other one of the two groups of wavelet coefficients, the portion being adjacent to the one of the two groups of wavelet coefficients that is entirely comprised in the extended group 43, 53 of wavelet coefficients.
[0169] In summary, the first innovative improvement relates to a method for decoding an encoded image 1201 obtained by applying at least one wavelet-type filter operation in a vertical direction, wherein respective processing channels decode in parallel respective strips 40, 50 of spatial image samples, wherein each processing channel reconstructs a strip 40, 50 of spatial image samples independently of the other processing channels from an extended group 43, 53 of wavelet coefficients, whereby extended groups 43, 53 of wavelet coefficients mutually overlap to an extent that each extended group 43, 53 of wavelet coefficients comprises all the wavelet coefficients required for the processing channel receiving said extended group 43, 53 to independently reconstruct a strip 40, 50 of spatial image samples, and wherein the respective strips 40, 50 are spatially offset from respective slices 10-13 of the image. The first innovative improvement also relates to an apparatus and a computer program for performing the method for decoding.Second innovative improvement
[0170] In this section, the “method for encoding” relates to the method for encoding according to the second innovative improvement, unless otherwise specified. Similarly, in this section, the “method for decoding” relates to the method for decoding according to the second innovative improvement, unless otherwise specified.
[0171] Herein, a “processor” generally designates a device able to execute computer instructions, such as for example a (micro)processor for a computer, which is also known as a central processing unit (CPU), or a graphics processing unit (GPU). A register of a processor, also referred to herein as a “processor register”, is a high-speed memory built into a processor for storing data on which processor instructions are executed and for storing data resulting from an execution of a processor instruction. Between processor registers and the main memory, there may exist one or more so-called “cache memory”, which is a high-speed memory for quick data access. Processor registers and cache memories are known to a person skilled in the art.
[0172] Cache memories may be organized in several levels, a lower-level cache memory being faster, but smaller, than a higher-level cache memory. When a data is not found in a lower-level cache memory, a cache miss occurs and the data needs to be retrieved from a higher-level, and therefore slower, cache memory. The level of a cache memory may be designated by a number, a lower number designated a lower level. As an example, a modern processor may comprise three levels of cache memories, respectively denoted as “Level 1”, “Level 2”, and “Level 3” cache memories, or L1, L2, and L3 caches for short. Table 1 provides examples of sizes of such cache memories for a modern processor, along with the number of lines of image samples that may be stored in each of said cache memories. The sizes of caches memories provided in Table 1 are given in KiB and MiB, which respectively designate “kibibytes”, i.e.1024 bytes, and “mebibytes”, i.e. 1024 kibibytes, with a byte comprising 8 bits. In order to compute the number of lines of image samples stored in each cache memory of Table 1, the case of an image with a resolution of 3840 x 2160 pixels is considered, with each pixel comprising 3 color components. Said resolution is also commonly known as a “4K UHD resolution”. In a case where the 3 color components of each pixel are provided together at the input of an encoding module and / or at the output of a decoding module, said components are preferably processed together so as to remain contiguous in memory. This is the case considered in Table 1. In this case, a line of image samples provided to an encoding module has a size of 3 components * 3840 samples / component * 32 bits / sample = 45 KiB. Similarly, a set of coefficients provided to a decoding module has a size of 3 components * 3840coefficients / component * 32 bits / coefficient = 45 KiB, since a set of coefficients is spatially related to a line of image samples.Table 1 - Capacity of L1 , L2, and L3 cache memories on a modern multicore processorAccording to the second innovative improvement, the lines of image samples or the sets of coefficients may be stored in a lower-level cache memory, such as a L2 cache or even a L1 cache, thereby improving the performance of an encoding module or a decoding module by reducing cache misses. Indeed, as shown in Table 1, it may not be possible to store a whole image such as a 4K UHD image in a cache memory. However, the line buffers of the encoding module or the decoding module may fit in a cache memory, thereby improving the performance of said modules by reducing cache misses, and thus improving the overall performance of an encoder or a decoder.
[0173] Fig. 11 schematically represents an encoder 2100 for encoding an image 2110 into an encoded image 2150 according to an embodiment. The image 2110 comprises a plurality of image samples 2111 grouped into respective lines 2112 of image samples 2111. The encoded image 2150 comprises respective sets of coefficients spatially related to the respective lines 2112. Fig. 11 provides a block diagram of the encoder 2100. The encoder 2100 may be configured for performing the method for encoding. The encoder 2100 may comprise a pre-processing module 2120. The pre-processing module 2120 may comprise a pre-processing buffer 2121. The pre-processing module 2120 may perform one or more prior operations. The encoder 2100 may comprise an encoding module 2130. The encoding module 2130 may comprise an input line buffer 2131. The encoding module 2130 may comprise a plurality of intermediate line buffers 2132, 2133. The encoding module 2130 may comprise an output line buffer 2134. The encoding module 2130 may process the respective lines 2112 of image samples 2111 for producing the respective sets of coefficients spatially related to the respective lines 2112. The encoder 2100 may comprise a post-processing module 2140. The post-processing module 2140 may comprise a post-processing buffer 2141. The postprocessing module 2140 may perform one or more subsequent operations.
[0174] The encoder 2100 operates as follows. The encoder 2100 receives an image 2110 comprising respective lines 2112 of image samples 2111. One or more prior operations may be applied on at least some of the respective lines 2112 in the pre-processing module 2120. Said respective lines 2112 may be stored in the pre-processing buffer 2121 before or after said prior operations. The encoding module 2130 then receives the respective lines 2112. The respective lines 2112 provided to the encoding module 2130 are stored in the input line buffer 2131. The encoding module 2130 processes the respective lines 2112 for producing intermediate results and final results according to a lifting scheme of a wavelet-type filter operation. The encoding module 2130 may apply said wavelet-type filter operation in a vertical direction. The intermediate results are stored in the intermediate line buffers 2132, 2133. The final results are provided in the output line buffer 2134 as respective sets of coefficients spatially related to the respective lines 2112. One or more subsequent operations may be applied on at least some of the respective sets of coefficients in the post-processing module 2140. Said respective sets of coefficients may be stored in the post-processing buffer 2141 before or after said subsequent operations. Said respective sets of coefficients may be further processed in the encoder 2100 by being provided back to the pre-processing module 2120, as indicated by the dashed arrow in Fig. 11. An example of said further processing is when a cascade of wavelet-type filter operations is performed in the encoder 2100, wherein at least some of the respective sets of coefficients are further processed in one or more additional wavelet-type filter operations. Finally, an encoded image 2150 is produced, which comprises the respective sets of coefficients.
[0175] The encoder 2100 may be comprised in a data processing device able to process image or video data, such as a computer. The encoder 2100 may compress the encoded image 2150, i.e. reduce the size of the encoded image 2150 compared to the original image 2110. Said compression may enable the data processing device to store the encoded image 2150 in a memory in a more efficient manner. In addition, said compression may enable the data processing device to transfer the encoded image 2150 to another data processing device in a more efficient manner, for example via a communication channel that may be provided by a network.
[0176] Fig. 12 schematically represents a decoder 2200 for decoding an encoded image 2210 into a decoded image 2250 according to an embodiment. The encoded image 2210 comprises a plurality of coefficients grouped into respective sets of coefficients. The encoded image 2210 of Fig. 12 may be for instance the encoded image 2150 of Fig. 11. The decoded image 2250 comprises a plurality of image samples 2251 grouped into respective decodedlines 2252 of image samples 2251. The respective decoded lines 2252 are spatially related to the respective sets of coefficients of the encoded image 2210. Fig. 12 provides a block diagram of the decoder 2200. The decoder 2200 may be configured for performing the method for decoding. The decoder 2200 may comprise a pre-processing module 2220. The preprocessing module 2220 may comprise a pre-processing buffer 2221. The pre-processing module 2220 may perform one or more prior operations. The decoder 2200 may comprise a decoding module 2230. The decoding module 2230 may comprise an input line buffer 2231. The decoding module 2230 may comprise a plurality of intermediate line buffers 2232, 2233. The decoding module 2230 may comprise an output line buffer 2234. The decoding module 2230 may process the respective sets of coefficients for producing the respective decoded lines 2252 of image samples 2251. The decoder 2200 may comprise a post-processing module 2240. The post-processing module 2240 may comprise a post-processing buffer 2241. The post-processing module 2240 may perform one or more subsequent operations.
[0177] The decoder 2200 operates as follows. The decoder 2200 receives an encoded image 2210 comprising respective sets of coefficients. One or more prior operations may be applied on at least some of the respective sets of coefficients in the pre-processing module 2220. Said respective sets of coefficients may be stored in the pre-processing buffer 2221 before or after said prior operations. The decoding module 2230 then receives the respective sets of coefficients. The respective sets of coefficients provided to the decoding module 2230 are stored in the input line buffer 2231. The decoding module 2230 processes the respective sets of coefficients for producing intermediate results and final results according to a lifting scheme of an inverse wavelet-type filter operation. The decoding module 2230 may apply said inverse wavelet-type filter operation in a vertical direction. The intermediate results are stored in the intermediate line buffers 2232, 2233. The final results are provided in the output line buffer 2234 as respective decoded lines 2252 of image samples 2251 spatially related to the respective sets of coefficients. One or more subsequent operations may be applied on at least some of the respective decoded lines 2252 in the post-processing module 2240. Said respective decoded lines 2252 may be stored in the post-processing buffer 2241 before or after said subsequent operations. Said respective decoded lines 2252 may be further processed in the decoder 2200 by being provided back to the pre-processing module 2220, as indicated by the dashed arrow in Fig. 12. An example of said further processing is when a cascade of inverse wavelet-type filter operations is performed in the decoder 2200, wherein at least some of the respective decoded lines 2252 are further processed in one or moreadditional inverse wavelet-type filter operations. Finally, a decoded image 2250 is produced, which comprises the respective decoded lines 2252 of image samples 2251.
[0178] The decoder 2200 may be comprised in a data processing device able to process image or video data, such as a computer. The encoded image 2210 may be compressed, i.e. having its size reduced compared to an original image. In this case, the decoder 2200 may enable the encoded image 2210 to be decompressed into a decoded image 2250 similar to the original image. Compressing the encoded image 2210 may enable the data processing device to retrieve the encoded image 2210 from a memory in a more efficient manner. In addition, compressing the encoded image 2210 may enable the data processing device to receive the encoded image 2210 from another data processing device in a more efficient manner, for example via a communication channel that may be provided by a network.
[0179] Fig. 13 is a schematic representation of a lifting scheme implementation 2300 of a wavelet-type filter operation of the LeGall 5 / 3 type in a forward way. The lifting scheme 2300 of Fig. 13 is an example of the lifting scheme of the wavelet-type filter operation applied in the encoding module 2130. For the sake of conciseness, the wavelet-type filter operation of the LeGall 5 / 3 type in a forward way is hereinafter referred to as “FDWT 5 / 3 filtering”. Said FDWT 5 / 3 filtering comprises a so-called “prediction step” producing high-frequency (HF) outputs and a so-called “update step” producing low-frequency (LF) outputs. Said steps are computed according to the following equations:The FDWT 5 / 3 filtering operation is applied to a series of even and odd input samples, which are represented as an upper row of circles in Fig. 13, said row being denoted as “IN”. Black circles in the IN row of Fig. 13 represent odd input samples, for which a high-frequency output is computed according to the HF equation above and as represented in a middle row of circles in Fig. 13, said row being denoted as “HF”. White circles in the IN row of Fig. 13 represent even input samples, for which a low-frequency output is computed according to the LF equation above and as represented in a lower row of circles in Fig. 13, said row being denoted as “LF”. Numbers next to arrows in Fig. 13 represent weighting factors according to the HF and LF equations above. Dashed arrows in Fig. 13 indicate that the series of input and output samples may comprise additional samples not represented in Fig. 13. Horizontal dashed lines highlight the respective upper, middle, and lower rows of Fig. 13.
[0180] Fig. 14 is a schematic representation of a lifting scheme implementation 2400 of a wavelet-type filter operation of the LeGall 5 / 3 type in an inverse way. The lifting scheme 2400of Fig. 14 is an example of the lifting scheme of the inverse wavelet-type filter operation applied in the decoding module 2230. For the sake of conciseness, the wavelet-type filter operation of the LeGall 5 / 3 type in an inverse way is hereinafter referred to as “IDWT 5 / 3 filtering”. Said IDWT 5 / 3 filtering reverses the HF and LF equations of the FDWT 5 / 3 filtering according to the following equations:The IDWT 5 / 3 filtering is applied on high-frequency and low-frequency output samples produced by a FDWT 5 / 3 filtering, which are represented as an upper row of circles in Fig. 14, said row being denoted as “IN”. White circles in the IN row of Fig. 14 represent low-frequency samples, for which an even output is computed according to the EVEN equation above and as represented in a middle row of circles in Fig. 14, said row being denoted as “EVEN”. Black circles in the IN row of Fig. 14 represent high-frequency samples, for which an odd output is computed according to the ODD equation above and as represented in a lower row of circles in Fig. 14, said row being denoted as “ODD”. Numbers next to arrows in Fig. 14 represent weighting factors according to the EVEN and ODD equations above. Dashed arrows in Fig. 14 indicate that the series of input and output samples may comprise additional samples not represented in Fig. 14. Horizontal dashed lines highlight the respective upper, middle, and lower rows of Fig. 14.
[0181] Table 2 illustrates a FDWT 5 / 3 filtering operation applied according to the lifting scheme 2300 of Fig. 13. Said filtering operation may generally be applied in a horizontal or vertical direction. However, Table 2 particularly illustrates the case of a FDWT 5 / 3 filtering operation applied in a vertical direction. Said case is an example of the wavelet-type filter operation applied in the encoding module 2130 for producing intermediate results and final results.
[0182] Table 3 illustrates an IDWT 5 / 3 filtering operation applied according to the lifting scheme 2400 of Fig. 14. Said filtering operation may generally be applied in a horizontal or vertical direction. However, Table 3 particularly illustrates the case of an IDWT 5 / 3 filtering operation applied in a vertical direction. Said case is an example of the inverse wavelet-type filter operation applied in the decoding module 2230 for producing intermediate results and final results.
[0183] Tables 2 and 3 share a similar structure. The leftmost column (“Row”) is present for indicative purposes only and is used to reference rows of Tables 2 and 3. The “Phase” column indicates the different phases of the encoding or decoding, which are described below.The remaining columns indicate the content of the input line buffer, the intermediate line buffers, and the output line buffer, respectively. Since Tables 2 and 3 illustrate a wavelet-type filter operation of the LeGall 5 / 3 type, the number of intermediate line buffers is equal to two line buffers, which corresponds to the minimum number of intermediate line buffers required for producing the respective sets of coefficients or the respective decoded lines 2252 according to the lifting schemes 2300 or 2400, respectively.
[0184] The encoding or decoding of an image according to the lifting scheme 2300 or 2400, respectively, will now be described. First, an initialization phase is executed once for starting the encoding or decoding of the image. This initialization phase corresponds to rows 1 to 3 of Tables 2 and 3. Then, a regime phase takes place, which corresponds to rows 4 and 5 of Tables 2 and 3. The regime phase is executed a number n of times. This number n is linked to the number L of lines in the image to be encoded or decoded by the following relationship: n = floor((L - 4) 12), wherein the “floor(x)” function takes as input a number x and gives as output the greatest integer less than or equal to x. Then, a closing phase is executed once, during which the input line buffer and the intermediate line buffers are flushed. Depending on the parity of the number L of lines in the image to be encoded or decoded, either a first closing phase or a second closing phase is executed. The first closing phase is executed when L is even. This first closing phase corresponds to rows 6 to 8 of Tables 2 and 3. The second closing phase is executed when L is odd. This second closing phase corresponds to rows 9 to 12 of Tables 2 and 3.
[0185] Each row of the Tables 2 and 3 corresponds to the processing of one line 2112 of image samples 2111 by the encoding module 2130 or of one set of coefficients by the decoding module 2230, respectively. As shown in Tables 2 and 3, data shift from one buffer to another during the processing of the respective lines 2112 of image samples 2111 or the respective sets of coefficients. More precisely, new data (respective lines or respective sets) are first stored in the input line buffer. Then, data shift from the input line buffer to the first intermediate line buffer, then from the first intermediate line buffer to the second intermediate line buffer, and finally from the second intermediate line buffer to the output buffer. This allows processing the respective lines 2112 or the respective sets with a reduced amount of memory according to the lifting schemes 2300 or 2400, respectively.
[0186] Table 2 - FDWT 5 / 3 filtering applied according to the lifting scheme 2300 of Fig. 13
[0187] Table 3 - IDWT 5 / 3 filtering applied according to the lifting scheme 2400 of Fig. 14
[0188] Fig. 15 schematically represents a decomposition of an image into subbands in a cascade of wavelet-type filter operations. The image may be for instance the image 2110 of Fig. 11. The decomposed image 2500 comprises so-called subbands 2510-2560. Generally, the wavelet-type filter operations may comprise any wavelet-type filter. In the particular case illustrated in Fig. 15, the image has been decomposed using two vertical and five horizontal FDWT 5 / 3 decomposition levels. In other words, the cascade of wavelet-type filter operations applied on the image for obtaining the decomposed image 2500 comprises two wavelet-type filter operations of the LeGall 5 / 3 type applied in a vertical direction and five wavelet-type filter operations of the LeGall 5 / 3 type applied in a horizontal direction. In said cascade of wavelettype filter operations, a wavelet-type filter operation applied in a vertical direction is followed by a wavelet-type filter operation applied in a horizontal direction. Similarly, a wavelet-type filter operation applied in a horizontal direction is followed by a wavelet-type filter operation applied in a vertical direction, unless there are no more such vertical operation to be performed, in which case the wavelet-type filter operation applied in a horizontal direction is followed by another wavelet-type filter operation applied in a horizontal direction.
[0189] On Fig. 15, the coefficients resulting from the cascade of wavelet-type filter operations have been grouped together based on the type of the subband they belong to. Other ways of grouping the coefficients are possible. The types of the subbands are listed in Table 4.Table 4 - Types of the subbands in Fig. 15
[0190] Finally, the decomposed image 2500 may be recomposed by applying a cascade of inverse wavelet-type filter operations in the reverse order as the cascade of (forward) wavelet-type filter operations applied for obtaining the decomposed image 2500.
[0191] In summary, the second innovative improvement relates to a method for encoding an image 2110 comprising image samples 2111 , the method for encoding comprising processing with an encoding module 2130 respective lines 2112 of image samples 2111 for producing intermediate results and final results according to a lifting scheme 2300 of a wavelettype filter operation applied in a vertical direction, so as to reduce the amount of memory needed for encoding the image 2110. The second innovative improvement also relates to an apparatus and a computer program for encoding the image 2110, and to a method, apparatus and computer program for decoding an encoded image 2210 obtainable by the method for encoding into a decoded image 2250, wherein the decoding may be performed with a reduced amount of memory.Combinations of innovative improvements
[0192] Two innovative improvements have been described herein. These innovative improvements may work independently or be combined. The innovative improvements described herein may advantageously be implemented, independently or in combination, in a computer system comprising a processor and a memory. In other words, the innovative improvements described herein may advantageously be computer-implemented, independently or in combination.
[0193] The present invention as defined in the claims relates primarily to the first innovative improvement. However, the invention may advantageously be combined with the second innovative improvement described herein, including particular embodiments thereof. The invention may comprise further combinations of innovative improvements than those explicitly stated in the claims. Particular embodiments and related advantages of an innovative improvement as disclosed herein may be applied mutatis mutandis when said innovative improvement is combined with another innovative improvement.
[0194] It is detailed hereinbelow in relation with Fig. 16 and / or Fig. 17 how the innovative improvements described herein may be combined. On said figures, the innovative improvements described herein are respectively referred to by the following letters:“A” for the first innovative improvement;“B” for the second innovative improvement.Said letters are associated with dashed arrows on Fig. 16 and Fig. 17 to indicate where the respective innovative improvements may advantageously be implemented in a block diagram of an encoder 4100 and a decoder 4200 for encoding or decoding an image.
[0195] Fig. 16 schematically represents an encoder 4100 for encoding an image according to an embodiment. Fig. 16 provides a block diagram of the encoder 4100. The encoder 4100 may be, for example, comprised in a communication device that can capture an image, or that can store an image, or both, such as, for example, a smartphone. The encoder 4100 may enable the communication device to efficiently transfer an image to another communication device via a communication channel that may be provided by a network.
[0196] The encoder 4100 may be configured for encoding at least one portion of an original image 4130 into a corresponding portion of an encoded image 4140 according to a method for encoding as described hereinabove. The encoder 4100 comprises a (forward) decorrelative transform module 4101 and an encoding module 4102. The decorrelative transform module 4101 comprises an optional (forward) color transform (CT) module 4110, and a (forward) discrete wavelet transform (DWT) module 4111 for producing image coefficients based on input image samples from the original image 4130. Image coefficients may also be referred to herein as wavelet coefficients. The CT module 4110 and the DWT module 4111 are optional and may be bypassed; if they are not present, then the image coefficients may simply be equal to the input image samples. The encoding module 4102 comprises a GCLI extraction module 4112, a rate allocation (RA) module 4113, a quantization and encoding (Q) module 4114, and a packing (P) module 4115. The quantization and encoding module 4114 is also simply referred to herein as the “Q module” 4114.
[0197] Modules 4101-4115 are software modules. Said modules should be interpreted as a way of distinguishing between different types of operations. Said modules may be comprised in a single system, i.e. the operations performed by said modules may be executed by a single processor. Said modules may also be comprised a distributed system, i.e. the operations performed by said modules may be executed by a plurality of processors.
[0198] The encoder 4100 basically operates as follows. The encoder 4100 receives an original image 4130, which comprises image samples. In response, the encoder 4100 outputs an encoded image 4140, which may be compressed, i.e. have a lower size, than the original image 4130.
[0199] An original image 4130 may be regarded as a matrix (or an array) of pixels, which comprises lines of pixels and columns of pixels. A pixel may comprise a plurality of color components, for example three color components, which, in combination, convey brightnessinformation and color information pertaining to the pixel. The plurality of color components are expressed in accordance with a color coordinate system, such as, for example, the color coordinate system referred to as RGB, or the color coordinate system referred to as YCbCr. The color transform (CT) module 4110 converts color components of a pixel into another color coordinate system. Such a transform may reduce entropy. Accordingly, the CT module 4110 provides a color transformed image, which may have less entropy than the original image 4130. This may contribute to image compression.
[0200] The discrete wavelet transform (DWT) module 4111 applies a wavelet transform to the color transformed image. The wavelet transform may involve applying a cascade of wavelet-type filter operations for the image. Accordingly, the DWT module 4111 produces wavelet coefficients spatially related to samples of the original image 4130. Said wavelet coefficients may be grouped into subbands (also referred to herein as bands). The wavelet transform that the DWT module 4111 carries out may be similar to that in an existing waveletbased image coding system, such as, for example, the image coding system known as JPEG XS. In particular, the wavelet transform may comprise a wavelet-type filter operation of the LeGall 5 / 3 type as described hereinabove.
[0201] The encoding module 4102 encodes the image coefficients produced by the decorrelative transform module 4101 and produces an encoded image 4140. To this end, the encoder 4100 may perform lossy compression, i.e. selectively removing information from the coefficients of the original image for producing the encoded image 4140. The encoded image 4140 contains all information enabling a decoder to reconstruct a decoded image similar to the original image 4130 before encoding, the difference between the original image 4130 and the decoded image being the loss of information due to the lossy compression. The encoding is performed with the best effort to minimize this loss of information under a target budget constraint.
[0202] The GOLI module 4112 computes GOLI values from the wavelet coefficients produced by the DWT module 4111 , or more generally from the image coefficients produced by the decorrelative transform module 4101. GOLI values may also be referred to herein as bitplane count values. Herein, the terms “GOLI” and “bitplane count” are intended to describe the same concept and should therefore be construed as equivalent. These terms may be used interchangeably in the description and in the claims.
[0203] The RA module 4113 determines a suitable quantization level value 4120 so that the size of the encoded image 4140 remains below a target budget. The quantization level value 4120 is provided by the RA module 4113 to the Q module 4114. The Q module thenquantizes the image coefficients based on the quantization level value 4120 provided by the rate allocation module 4113. Accordingly, the Q module 4114 provides quantized image coefficients. The Q module 4114 then applies entropy coding operations to the quantized image coefficients. In other words, the Q module 4114 entropy encodes the quantized image coefficients. The entropy coding operations may comprise, for example, operations described in document EP 2 773 122 A1 already mentioned hereinbefore. In that case, the Q module 4114 receives GCLI (or bitplane count) values from the GCLI module 4112. The GOLI values indicate zero-bitplanes in the (quantized) image coefficients. The Q module 4114 may then remove these zero-bitplanes. In effect, the zero-bitplanes may be replaced by the GCLI values indicating where these bitplanes lie in the quantized image coefficients. The Q module 4114 may also apply entropy coding operations to the GCLI values so that these values are expressed (or coded) with a lower number of bits. Document EP 2773 122 A1 describes some entropy encoding techniques that may be used to that effect. In addition to removing zerobitplanes, the Q module 4114 may also truncate bits or bitplanes in the quantized image coefficients. Such truncation may involve removing one or more least significant bits or bitplanes. Accordingly, the Q module 4114 provides encoded quantized image coefficients. Encoded quantized image coefficients are also simply referred to herein as “encoded coefficients”.
[0204] The packing module 4115 then packages (or packs) several types of data into the encoded image 4140. This includes the encoded coefficients provided by the Q module 4114. This may further include, for example, GCLI values, or entropy coded GCLI values, as well as the quantization level value 4120, or any other information enabling a decoder to decode the encoded image 4140. The encoded image 4140 may also be referred to as a “codestream” or a ’’bitstream”. In particular, the encoded image 4140 may be a codestream compliant with a version of the JPEG XS standard, more particularly with a profile of the JPEG XS standard.
[0205] The second innovative improvement may advantageously be implemented in the discrete wavelet transform (DWT) module 4111 of the encoder 4100 when computing (or producing) wavelet coefficients, as indicated by the letter “B” and the associated dashed arrow in Fig. 16, thereby improving the computational efficiency of the encoding of at least one portion of an original image 4130 into a corresponding portion of an encoded image 4140 in the encoder 4100.
[0206] Fig. 17 schematically represents a decoder 4200 for decoding an encoded image according to an embodiment. Fig. 17 provides a block diagram of the decoder 4200. The decoder 4200 may be, for example, comprised in a communication device that can display animage, such as, for example, a smartphone. The decoder 4200 may enable the communication device to efficiently receive an encoded image from another communication device via a communication channel that may be provided by a network. More precisely, the decoder 4200 may enable the communication device to receive the encoded image and decode it into a decoded image for displaying said decoded image.
[0207] The decoder 4200 may be configured for decoding at least one portion of an encoded image 4230 into a corresponding portion of a decoded image 4240 according to a method for decoding as described hereinabove. The encoded image 4230 in Fig. 17 may correspond to the encoded image 4140 in Fig. 16. The decoder 4200 comprises a decoding module 4201 and an inverse decorrelative transform module 4202. The decoding module 4201 comprises an encoded image receiving module 4210, a GCLI unpacking module 4211 , a data unpacking module 4212, and a decoding and dequantization module 4213. The inverse decorrelative transform module 4202 comprises and inverse discrete wavelet transform (IDWT) module 4214 and an inverse color transform (ICT) module 4215.
[0208] Modules 4201-4215 are software modules. Said modules should be interpreted as a way of distinguishing between different types of operations. Said modules may be comprised in a single system, i.e. the operations performed by said modules may be executed by a single processor. Said modules may also be comprised a distributed system, i.e. the operations performed by said modules may be executed by a plurality of processors.
[0209] The encoded image receiving module 4210 (or simply the “R module” 4210) receives and parses the encoded image 4230. Accordingly, the R module 4210 retrieves various types of data from the encoded image 4230, such as packed encoded coefficients, packed GCLI values, as well as a quantization level value 4220. The quantization level value 4220 may correspond to the quantization level value 4120 in Fig. 16. The R module 4210 provides packed GCLI values to the GCLI unpacking module 4211. The R module 4210 provides packed encoded coefficients to the data unpacking module 4212. The R module 4210 provides quantization level value 4220 to the decoding and dequantization module 4213.
[0210] The GCLI unpacking module 4211 retrieves GCLI values from the packed GCLI values received from the R module 4210. The GCLI unpacking module 4211 may also entropy decode GCLI values if said values have been entropy encoded in the encoded image 4230. In other words, the GCLI unpacking module 4211 may apply entropy decoding operations to the packed GCLI values for producing GCLI values. The GCLI unpacking module 4211 then provides said GCLI values to the data unpacking module 4212 and to the decoding and dequantization module 4213.
[0211] The data unpacking module 4212 carries out operations inverse to the packing module 4115 in Fig. 16. More precisely, the data unpacking module 4212 unpacks packed encoded coefficients received from the R module 4210 for producing encoded quantized image coefficients (or simply “encoded coefficients”). To this end, the data unpacking module 4212 receives GCLI (or bitplane count) values from the GCLI unpacking module 4211. The data unpacking module 4212 then provides the encoded coefficients to the decoding and dequantization module 4213.
[0212] The decoding and dequantization module 4213 carries out operations inverse to the quantization and encoding module 4114 in Fig. 16. For example, the decoding and dequantization module 4213 may restore removed zero-bitplanes on the basis of the GCLI values received from the GCLI unpacking module 4211. The decoding and dequantization module 4213 may further add dummy bits to replace least significant bits that have been removed as a result of truncation. Accordingly, quantized image coefficients are re-created, which then undergo a dequantization operation. The dequantization operation may be carried out on the basis of the quantization level value 4220 received from the R module 4210. Accordingly, the decoding and dequantization module 4213 provides image coefficients to the inverse decorrelative transform module 4202, and more precisely to the IDWT module 4214.
[0213] The IDWT module 4214 applies an inverse wavelet transform to the image coefficients. The inverse wavelet transform applied in the IDWT module 4214 may revert the (forward) wavelet transform applied in the DWT module 4111 in Fig. 16. The inverse wavelet transform may involve applying a cascade of inverse wavelet-type filter operations to the image coefficients. Accordingly, the IDWT module 4214 produces color transformed image samples. The inverse wavelet transform that the IDWT module 4214 carries out may be similar to that in an existing wavelet-based image coding system, such as, for example, the image coding system known as JPEG XS. In particular, the inverse wavelet transform may comprise an inverse wavelet-type filter operation of the LeGall 5 / 3 type as described hereinabove.
[0214] The ICT module 4215 applies an inverse color transform to the color transformed image samples. In a similar way as in the encoder 4200 in Fig. 16, the inverse color transform is optional and the ICT module 4215 may be bypassed. The inverse color transform applied in the ICT module 4215 may revert the (forward) color transform applied in the CT module 4110 in Fig. 16. Accordingly, the ICT module 4215 produces decoded image samples. A decoded image 4240 is then obtained.
[0215] The first innovative improvement may advantageously be implemented in the decoder 4200 by executing operations performed in the decoding module 4201 and theinverse decorrelative transform module 4202 in parallel on multiple threads (or processing channels), as indicated by the letter “A” and the large horizontal curly bracket in Fig. 17.
[0216] The second innovative improvement may advantageously be implemented in the inverse discrete wavelet transform (IDWT) module 4214 of the decoder 4200 when processing wavelet coefficients, as indicated by the letter “B” and the associated dashed arrow in Fig. 17, thereby improving the computational efficiency of the decoding of at least one portion of an encoded image 4230 into a corresponding portion of a decoded image 4240.
[0217] The first and second innovative improvements may advantageously be combined in a decoder such as the decoder 4200 for improving the computational efficiency of the decoding of at least one portion of an encoded image 4230 into a corresponding portion of a decoded image 4240.Use cases
[0218] Preferred embodiments and use cases of the invention are described hereinbelow. These preferred embodiments and use cases are to be construed as examples and do not limit the scope of the invention.
[0219] Herein, SIMD instructions denote a category of processor instructions configured to execute a single operation concurrently across multiple data elements. These instructions facilitate parallel data processing by operating on vectorized data representations. More precisely, SIMD instructions allow a same arithmetic or logical operation to be performed on multiple data elements in a single processor instruction. This enables a more efficient implementation of algorithms involving performing the same computation over several data elements.
[0220] SIMD instructions allow operations to be performed on packed data types comprised in registers of various widths such as 32 bit, 64 bits, 128 bits, 256 bits, 512 bits, 1024 bits, 2048 bits, or even beyond. Said registers are referred to herein as “SIMD registers”. Similarly, operations performed in a single processor instruction on data elements comprised in said registers are referred to herein as “SIMD operations”. More precisely, a SIMD operation is an operation applied in a single processor instruction on several data elements comprised in a register, possibly in a dedicated SIMD register. Said operation is therefore said to be applied simultaneously, or in parallel, on said data elements. A SIMD operation may be implemented using a SIMD instruction. A SIMD instruction is a type of processor instruction that enables the simultaneous execution of the same operation on multiple data elements. This parallel processing capability is achieved by applying a single instruction to at least a vector ofdata values, wherein said vector may be stored in a single register, thereby improving computational efficiency in data-parallel workloads. Operands of a SIMD instruction or operation may be located in several (SIMD) registers or in a single (SIMD) register.
[0221] SIMD instructions are supported by instruction set extensions such as the Intel SSE family, the Intel AVX family, the ARM NEON family and the ARM SVE family, which allow a single instruction to perform the same operation on multiple operands, wherein said operands may be packed into a single register. The various SIMD instruction set extensions enable efficient implementation of algorithms involving repetitive computations by allowing vectorized workloads, i.e. simultaneous, or parallel processing of multiple data elements in a single processor instruction.
[0222] The Intel Streaming SIMD Extensions (SSE) family refers to a series of instruction set extensions to the x86 architecture, introduced by Intel to enhance performance of applications involving data processing by enabling Single Instruction, Multiple Data (SIMD) operations. The SSE family includes several generations, each expanding the capabilities of the previous:SSE (SSE1) - Introduced with the Pentium III, added 128-bit SIMD floating-point operations.SSE2 - Added support for 128-bit SIMD integer operations and double-precision floating-point.SSE3 and SSSE3 - Introduced additional instructions for horizontal operations and data rearrangement.SSE4.1 and SSE4.2 - Added more complex operations, including string and text processing enhancements.The Intel SSE family allows instructions to be executed on registers of 128 bits (the so-called XMM registers). For example, these registers can be used to store: four 32-bit single-precision floating-point numbers (or “floats”); two 64-bit double-precision floating-point numbers (or “floats”); sixteen 8-bit integers; eight 16-bit integers; four 32-bit integers; two 64-bit integers.The XMM register set was introduced with SSE and was expanded in later instruction sets, such as Intel AVX and Intel AVX-512. Intel AVX introduced 256-bit YMM registers, and Intel AVX-512 introduced 512-bit ZMM registers.
[0223] The Intel Advanced Vector Extensions (A X) is a 256-bit SIMD instruction set extension to the x86 architecture, introduced with the Sandy Bridge microarchitecture. It expands upon the earlier Intel SSE instruction sets by doubling the register width as well as the number of registers as compared to the XMM register. In addition, Intel AVX introduced new instructions for floating-point and integer operations as well as 3-operand instructions. Intel AVX uses so-called YMM registers, which are 256 bits wide, and that can be used, for example, to store: eight 32-bit single-precision floats; four 64-bit double-precision floats; thirty-two 8-bit integers; sixteen 16-bit integers; eight 32-bit integers; four 64-bit integers; two 128-bit integers.
[0224] The Intel AVX2 is an expansion of the Intel AVX instruction set introduced in Intel's Haswell microarchitecture. Intel AVX2 makes the following additions among others: expansion of most vector integer Intel SSE and Intel AVX instructions to 256 bits;Gather support, enabling vector elements to be loaded from non-contiguous memory locations;32-bit and 64-bit data elements any-to-any permutes; vector shifts.
[0225] Intel AVX-512 is a further extension of Intel AVX and Intel AVX2, introduced with Intel’s Knights Landing (Xeon Phi) and Skylake-SP processors. It features 512-bit ZMM registers, enabling even greater parallelism.
[0226] Various SIMD instruction set extensions are available on ARM platforms, such as for example ARM NEON, ARM SVE, and ARM SVE2.
[0227] ARM Advanced SIMD, also named NEON, was introduced in ARMv7-A and continued in ARMv8-A. ARM NEON operates on 128-bit SIMD registers, known as Q registers. These registers can also be accessed as two 64-bit D registers, allowing flexibility in data handling. For example, ARM NEON supports the following data types: 8-, 16-, 32-, and 64-bit integers; 32-bit (single-precision) floats, 64-bit (double-precision) floats (on some platforms), with up to 16 parallel operations on 8-bit data elements.
[0228] Following the development of the ARM NEON architecture extension, which has a fixed 128-bit vector length for the instruction set, the ARM Scalable Vector Extension (SVE)was introduced in ARMv8.2-A as a SIMD extension of the ARM AArch64 architecture. The vector length of ARM SVE can vary from a minimum of 128 bits up to a maximum of 2048 bits, but must be a power of two. Valid vector length implementations are therefore 128, 256, 512, 1024, and 2048 bits. ARM SVE allows flexible vector length implementations with a range of possible values in CPU implementations.
[0229] The ARM SVE was later expanded by the ARM SVE2 instruction set extension, which was introduced in the ARMv9-A platform. ARM SVE2 uses the same scalable model as SVE regarding the width of the registers. ARM SVE2 extends ARM SVE with enhanced support for digital signal processing (DSP), machine learning, and general-purpose vector processing. ARM SVE2 adds various operations such as for example fixed-point, saturating arithmetic, and bitwise operations.
[0230] There also exist other SIMD instruction set extensions for ARM platforms, such as ARM Vector Floating Point (VFP) with 64-bit or 128-bit registers depending on implementation, and ARM Helium with 128-bit registers.
[0231] Moreover, there exists a technique known as SIMD Within A Register (SWAR). SWAR refers to the practice of packing multiple smaller data elements into a single larger general-purpose register (e.g. packing four 8-bit integers into a 32-bit register) and performing parallel operations on these elements using standard scalar instructions (as opposed to dedicated SIMD instructions). In other words, SWAR is a technique for performing parallel operations on data contained in a single processor register, typically a general-purpose register (as opposed to a dedicated SIMD register). This enables SIMD-style behavior without requiring SIMD-specific hardware support. When such a register is treated as a vector of smaller elements, operations like bitwise AND, OR, XOR, and NOT naturally act in parallel on each element without interference. However, other operations, such as shifts or additions, may cause bits to spill across element boundaries unless additional masking or correction is applied. For example, a logical left shift by four bits on a 64-bit register affects all bits uniformly, but if the register is interpreted as eight 8-bit elements, this can result in undesired cross-byte effects not present in native SIMD operations that support byte granularity.
[0232] Furthermore, there also exist specialized instructions for improving the speed of bit manipulation. Such instructions are available for example in the so-called “Bit manipulation instruction sets” or “BMI sets”. BMI sets are extensions to the x86 instruction set architecture for microprocessors from Intel and AMD. The purpose of these instruction sets is to improve the speed of bit manipulation. All the instructions in these sets operate on general-purpose registers (as opposed to dedicated SIMD registers). There are two sets published by Intel: BMI(now referred to as BMI1) and BMI2. They were both introduced with the Haswell microarchitecture with BMI1 matching features offered by AMD's ABM instruction set and BMI2 extending them. Another two sets were published by AMD: ABM (Advanced Bit Manipulation, which is also a subset of SSE4a implemented by Intel as part of SSE4.2 and BMI1), and TBM (Trailing Bit Manipulation), an extension introduced with Piledriver-based processors as an extension to BMI1. Specialized instructions for improving the speed of bit manipulation as described hereinabove are also referred to herein as “specialized bit manipulation instructions”.
[0233] Specialized bit manipulation instructions also include, but are not limited to, the following instructions operating on general-purpose processor registers:PDEP (Parallel bit deposit) and PEXT (Parallel bit extract): these are generalized bitlevel compress and expand instructions. They take two inputs; one is a source, and the other is a selector. The selector is a bitmap selecting the bits that are to be packed or unpacked. PEXT copies selected bits from the source to contiguous low-order bits of the destination; higher-order destination bits are cleared. PDEP does the opposite for the selected bits: contiguous low-order bits are copied to selected bits of the destination; other destination bits are cleared. These instructions can be used to extract any bitfield of the input, and perform bit-level shuffling operations.BFI (Bit Field Insert): Inserts a bit field from one register into another at a specified position.SBFX / UBFX (Signed / Unsigned Bit Field Extract): Extracts a bit field and optionally sign or zero extends it.BFC (Bit Field Clear): Clears a range of bits within a register.RBIT (Reverse Bit): Reverses the order of bits in a register.
[0234] The invention may advantageously be implemented in a computer system comprising a processor such as a central processing unit (CPU), a graphical processing unit (GPU), a neural processing unit (NPU), an accelerated processing unit (APU).
[0235] The invention may advantageously be implemented as a computer program configured to be executed (or run) on a computer system comprising an operating system (OS) such as Microsoft Windows, Apple MacOS, Android, Linux, or Unix. The invention may also be implemented as a computer program configured to be executed on a computer system without an OS. The computer system may be a physical machine or a virtual machine.
[0236] The invention may advantageously be implemented in a computer system comprising a processor configured to execute instructions from the following instruction set architectures: x86, x86-64, IA-64, ARM, RISC-V.
[0237] The invention may advantageously be implemented as a computer program configured to be executed (or run) on a computer system, said program comprising instructions such as a SIMD instruction, a specialized bit manipulation instruction, or a standard scalar instruction applied using the SWAR technique.
[0238] The invention may advantageously be implemented as a computer program comprising instructions which, when the program is executed by a computer (or a computer system), cause the computer to carry out a method for encoding and / or for decoding according to the invention. In an embodiment, there is provided a non-transitory recording (or digital storage) medium having recorded therein (or stored thereon) such a computer program.
[0239] The invention may advantageously be implemented in a computer system comprising a processor configured to execute a plurality of execution threads in parallel.
[0240] The invention may advantageously be implemented in a computer system comprising a processor and a memory, wherein said memory comprises a cache memory.
[0241] The invention may advantageously be implemented so as to encode and / or decode a codestream (or in other words a bit stream, or data set) compliant with a JPEG XS standard, i.e. compliant with a version of the JPEG XS standard, including past, withdrawn, canceled or deprecated versions of the JPEG XS standard. More precisely, said codestream may be compliant with a profile as listed in the third edition of the Part 2 of the JPEG XS standard (document ISO / IEC 21122-2:2024), such as: a JPEG XS Main profile; a JPEG XS Light profile (including JPEG XS Light-Subline profiles); a JPEG XS High profile (including JPEG XS Additional High, or CHigh, profiles);- a JPEG XS TDC profile (including JPEG XS TDC MLS profiles);- a JPEG XS MLS profile; a JPEG XS Bayer profile.
[0242] The invention may advantageously be implemented so as to decode a codestream (including a JPEG XS compliant codestream), or more generally an encoded image or a sequence of encoded images, with a reduced precision.
[0243] The invention may advantageously be implemented so as to encode a sequence of images and / or decode a sequence of encoded images with intraframe coding, or interframe coding, or a combination of both intraframe and interframe coding.
[0244] Furthermore, the invention may be applied to the use cases described hereinbelow in relation with Tables 5 to 14 and Figures 16 to 30.
[0245] Tables 5 to 11 describe specifications of several processors suitable for implementing the invention. The invention may be implemented on platforms or systems comprising the processors described in Tables 5 to 11, but the invention is not limited thereto.In Tables 5 to 11 , “ISA” stands for “Instruction Set Architecture”. An ISA is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. Besides, “Hyper-Threading” refers to a technology that allows a single physical processor core to handle multiple threads simultaneously, effectively acting like multiple logical cores.Table 5 - Specifications of processor Intel Core i9-13900KTable 6 - Specifications of processor Intel Core i7-8705GTable 7 - Specifications of processor Intel Xeon W-2133Table 8 - Specifications of processor Apple M1Table 9 - Specifications of processor Rockchip RK3588Table 10 - Specifications of processor Jetson AGX XavierTable 11 - Specifications of processor Qualcomm Snapdragon 865
[0246] Many processors mix high-performance cores (P-cores) and high-efficiency cores (E-cores). P-cores provide the highest performance but consume more energy (more electric power). E-cores consume less energy (less electric power) than P-cores, but have generally less computing power.
[0247] Regarding cache memories and cache levels (L1 , L2, L3): - for the processors described in Tables 5 to 11 , an L1 cache is separated into an instruction cache (L1i) and a data cache (L1d). In addition, for said processors, an L1 cache is not sharedbetween cores, so the size of the L1 caches is specified for a single core, in kibibytes (KiB) or mebibytes (MiB) per core;- an L2 cache may be shared between multiple cores. For the processors described in Tables 5 to 11 , the L2 caches are not shared between P-cores and E-cores. Tables 5 to 11 specify how the cache is shared in the Value column and the size of the cache is given for a single, possibly shared, cache;- an L3 caches is generally shared across all cores, unless specified. Tables 5 to 11 specify the size of that single L3 cache.- The cache line size is the granularity of cache updates.
[0248] Figures 18 to 21 display the number of samples (expressed in millions of samples, also referred to herein as “megasamples” or “M samples”) comprised in an image for different image formats and images sizes. The image sizes are expressed as image width (number of pixels in a line of an image) and image height (number of pixels in a column of an image).Fig. 18 relates to the case of YCbCr image components with 4:4:4 chroma subsampling. Fig. 18 is also applicable to the case of RGB image components. In these cases, there are three image samples per image pixel. Therefore, the number of samples displayed in Fig. 18 may be obtained by the following formula: #samples = width * height * 3.Fig. 19 relates to the case of YCbCr image components with 4:2:2 chroma subsampling. In this case, there are four image samples per pair of image pixels, i.e. two image samples per image pixel on average. Therefore, the number of samples displayed in Fig. 19 may be obtained by the following formula:#samples = width * height * 2.Fig. 20 relates to the case of YCbCr image components with 4:2:0 chroma subsampling. In this case, there are three image samples per pair of image pixels, i.e. one and a half image samples per image pixel on average. Therefore, the number of samples displayed in Fig. 20 may be obtained by the following formula: #samples = width * height * 1.5.Fig. 21 relates to the case of grayscale or monochrome (also simply referred to herein as “mono”) image format, in which there is only a single image sample per image pixel, usually interpreted as a luminance value. Therefore, the number of samples displayed in Fig. 21 may be obtained by the following formula:#samples = width * height * 1.In addition, the following particular image sizes are highlighted in Figures 18 to 21 using different shades of gray as indicated by a legend on top of the tables on these figures:“width > height”: for image widths larger than the corresponding image height;“1:1 aspect ratio”: when an image width is equal to the corresponding image height;“4:3 aspect ratio”: when the ratio of an image width over the corresponding image height is equal to 4 / 3;“16:9 aspect ratio”: when the ratio of an image width over the corresponding image height is equal to 16 / 9.Some common image sizes (or resolutions) are listed below for further reference herein: Full HD (FHD): image width = 1920 pixels, image height = 1080 pixels;4K: image width = 3840 pixels, image height = 2160 pixels;8K: image width = 7680 pixels, image height = 4320 pixels.
[0249] The invention may advantageously be applied for encoding and / or decoding images or videos having the formats and sizes described in Figures 18 to 21, but the invention is not limited thereto. In particular, the invention may be applied for encoding and / or decoding an image with a smaller width and / or height than those described in Figures 18 to 21. The invention may also be applied for encoding and / or decoding an image with a larger width and / or height than those described in Figures 18 to 21. The invention may also be applied to other image or video formats.
[0250] Figures 22 to 25 display the number of samples per second (expressed in millions of samples per second) for different image formats and sizes in a sequence of images (or a video). Image sizes are expressed as “image width” x “image height”. The framerate is expressed as a number of frames per second (or “fps”). The number of samples displayed in Figures 22 to 25 may be obtained by the following respective formulas for similar reasons as those described hereinabove in relation with Figures 18 to 21, where “fps” denotes the framerate expressed in frames per second:Fig. 22 (YCbCr 4:4:4 or RGB): #samples / s = width * height * fps * 3;Fig. 23 (YCbCr 4:2:2): #samples / s = width * height * fps * 2;Fig. 24 (YCbCr 4:2:0): #samples / s = width * height * fps * 1.5;Fig. 25 (Grayscale or Mono): #samples / s = width * height * fps * 1.
[0251] The invention may advantageously be applied for encoding and / or decoding image sequences or videos having the formats, sizes and framerates described in Figures 22 to 25, but the invention is not limited thereto. In particular, the invention may be applied for encoding and / or decoding an image sequence or a video with a smaller or larger width and / orheight than those described in Figures 22 to 25. The invention may also be applied to an image sequence or a video with a lower or higher framerate than those described in Figures 22 to 25. The invention may also be applied to other image sequence or video formats.
[0252] Fig. 26 displays the line size expressed as a number of bytes, i.e. the size in bytes of a line of an uncompressed image, for different image formats. Said image formats are listed on top of Fig. 26. In addition, particular line sizes are highlighted in Fig. 26 using different shades of gray as indicated in the legend below the table. The highlighting corresponds to possible sizes of a cache memory and therefore allows determining whether a line of image for a particular image width and image format may fit within a cache memory of a given size.
[0253] Table 12 provides test results of an encoder and a decoder according to an embodiment of the invention vs. an encoder and a decoder of the prior art on three different platforms. These test results are also represented in Fig. 27. Reference signs are indicated in parentheses in Fig. 27 and in the corresponding Table 12 to avoid confusing them with numerical results. Numerical test results in Table 12 and in Fig. 27 are expressed in megasamples processed by the encoder or decoder per thread and per second (i.e. in Msamples / thread / s). Therefore, a higher value denotes a higher encoding or decoding performance.Table 12 - Performance of an encoder and a decoder according to an embodiment of the invention vs. an encoder and a decoder of the prior art on three different platforms.
[0254] Tests were run on a single P-core (performance core) of the platforms 4310-4312. The encoder 4320 and the decoder 4330 of the prior art refer to the Intel JPEG-XS Library executable programs for encoding and decoding. The Intel JPEG-XS Library is part of the Scalable Video Technology (SVT) project from Intel Corporation. The source code is hosted in a git repository available at https: / / github.com / OpenVisualCloud / SVT-JPEG-XS.git as of the 15th of July 2025. The encoder and decoder executable programs were compiled from theversion of the source code referenced by the git commit hash "6af6d7935fbd73c5d4793cb63c544c84f1f6ad26" authored on the 9th of June 2025. The encoder 4321 and the decoder 4331 are embodiments of the invention. They comprise the respective innovative improvements described herein.
[0255] The encoders 4320, 4321 and the decoders 4330, 4331 were configured to respectively encode or decode an image into or from a JPEG XS compliant codestream. Said image has the following properties:FHD resolution, i.e. image size equal to 1920x1080 pixels;Uncompressed component bit depth of 8 bits;- YCbCr image components with 4:2:2 chroma subsampling.In addition, said codestream was compliant with the JPEG XS High profile as specified in Table A.3 of the Part 2 of the JPEG XS standard (ISO / IEC 21122-2:2024), using the following parameters:2 vertical and 5 horizontal wavelet decompositions;Uniform quantization;Sign packing enabled;One column;Unrestricted buffer model;Codestream size of 2bpp.Herein, “bpp” stands for “bit per pixel”, i.e. the number of bits comprised in an encoded (or compressed) image divided by the total number of pixels comprised in the image. In other words, the bpp indicates the average number of bits coding each pixel of an encoded (or compressed) image. Therefore, the bpp may be used as a measure of the size of a codestream comprising an encoded image.
[0256] Test results displayed in Table 12 and in Fig. 27 show that the encoder and decoder according to embodiments of the invention perform better than a respective encoder and decoder from the prior art.
[0257] The test results presented in the remainder of this section (corresponding to Tables 13 and 14 and Figures 28 to 30) were run on encoders and / or decoders that are embodiments of the invention. Said encoder and decoders comprise the respective innovative improvements described herein.
[0258] Table 13 provides test results of an encoder and a decoder according to an embodiment of the invention for two compression settings (codestream of 1.5bpp and 3bpp) on different platforms. Said platforms are the platforms described in Tables 5 to 11. Numericaltest results in Table 13 are expressed in megasamples processed by the encoder or decoder per thread and per second (i.e. in Msamples / thread / s). Therefore, a higher value denotes a higher encoding or decoding performance.Table 13 - Performance of an encoder and a decoder according to an embodiment of the invention for two compression settings on different platforms.In these tests, a FHD (1920x1080) image with YCbCr 4:2:2 10-bit V210 format was encoded into (respectively decoded from) a codestream compliant with the JPEG XS High profile using the following parameters:2 vertical and 5 horizontal wavelet decompositions;Uniform quantization;Sign packing enabled;One column;Unrestricted buffer model;Codestream size of 1.5bpp and 3bpp.Said tests were run on a single thread on each platform. Therefore, said tests were run on a P-core (performance core) on the test platforms comprising such a core.
[0259] Figures 28 and 29 respectively display test results of an encoder and a decoder according to an embodiment of the invention. In these tests, images with the sizes and formats indicated in the Figures 28 and 29 were encoded into (respectively decoded from) a codestream compliant with the JPEG XS High profile using the following parameters (i.e. same parameters as for the tests results displayed in Table 13):2 vertical and 5 horizontal wavelet decompositions;Uniform quantization;Sign packing enabled;One column;Unrestricted buffer model;Codestream size of 1.5bpp and 3bpp.Tests were run on a Qualcomm Snapdragon 865 processor with 8 execution threads. Test results are provided as the number of megasamples encoded (respectively decoded) per second (expressed in Msamples / s) and as the number of frames encoded (respectively decoded) per seconds (expressed in fps).
[0260] As can be seen on the Figures 28 and 29, the actual results of an encoding and a decoding using multiple threads is slower than what may be extrapolated from the results run with a single thread displayed on Table 13. This may be explained to some extent by the fact that results from Table 13 were obtained for a single thread running on a P-core. However, when running an encoder or a decoder an 8 threads, some threads will run on E-cores (efficiency cores), which have a smaller computational power, hence an expected lower performance.
[0261] Table 14 provides test results illustrating the scaling of encoding and decoding performance with the number of execution threads. Tests were run on an Intel Core i9-13900K for a 4K (3840x2160) image with YCbCr 4:2:2 10-bit v210 format and for encoding said image into (respectively decoding from) a JPEG XS High compliant codestream with a size of 1 ,5bpp, as described hereinabove. Tests were run for several number of threads, ranging from 1 to 8, where 8 is the maximum number of physical P-cores available on an Intel Core i9-13900K.Table 14 - Scaling of encoding and decoding performance with the number of threads
[0262] Test results from Table 14 are also represented in Fig. 30. Reference signs are indicated in parentheses in Fig. 30 and in the corresponding Table 14 to avoid confusing them with numerical results.
[0263] Fig. 30 shows that the performance of encoding and decoding scales with the number of execution threads. The scaling is approximately linear and close to, but lower than, a 1 :1 relationship.
[0264] In summary, the present invention may advantageously be applied to, but is not limited to, the encoding or decoding of an image with the image sizes and formats disclosed herein. In addition, the present invention may advantageously be applied to, but is not limited to, the encoding of said image into (or the decoding of said image from) a codestream (or in other words an encoded image) as described herein, particularly a codestream compliant with a version of the JPEG XS standard (including past, withdrawn, canceled or deprecated versions of the JPEG XS standard), more particularly a codestream compliant with a profile of the JPEG XS standard. Furthermore, the present invention may advantageously be implemented on, but is not limited to, a computer system comprising a processor and a memory, wherein said processor is a processor as described herein, or a similar processor, and wherein said memory may comprise a cache memory.
[0265] Although the present invention has been described herein with respect to particular embodiments, it will readily be appreciated by a person skilled in the art that the present invention is not limited by what has been particularly shown and / or described herein.
Claims
1. Claims1. Method for decoding an encoded image (1201), wherein the encoded image (1201) is obtained by the steps of: applying a wavelet-type transformation to a rectangular array (100) of spatial image samples representing the image, the wavelet-type transformation comprising applying a cascade of wavelet-type filter operations at least one of which is applied in a vertical direction, the wavelet-type transformation producing wavelet coefficients that are spatially related to the spatial image samples in the rectangular array (100); organizing the wavelet coefficients to obtain respective groups of wavelet coefficients that are spatially related to respective slices (10-13) of the rectangular array (100) of spatial image samples; and entropy encoding the respective groups of wavelet coefficients independently of each other; wherein the method for decoding comprises: providing respective processing channels that reconstruct respective strips (40, 50) of spatial image samples from the wavelet coefficients of the encoded image (1201), each of the respective processing channels reconstructing a strip (40, 50) of spatial image samples independently of the other processing channels, the respective strips (40, 50) of spatial image samples corresponding at least in size to the respective slices (10-13) of the rectangular array (100) of spatial image samples, each of the respective processing channels applying a cascade of inverse wavelet-type filter operations independently of the other processing channels for reconstructing a strip (40, 50) of spatial image samples; and supplying respective extended groups (43, 53) of wavelet coefficients to the respective processing channels, whereby the extended groups (43, 53) of wavelet coefficients mutually overlap to an extent that each extended group (43, 53) of wavelet coefficients comprises all the wavelet coefficients required for the processing channel receiving the extended group (43, 53) of wavelet coefficients to independently reconstruct a strip (40, 50) of spatial image samples; wherein the respective strips (40, 50) of spatial image samples are spatially offset from the respective slices (10-13) of the rectangular array (100) of spatial image samples, and wherein the extended groups (43, 53) of wavelet coefficients each comprise wavelet coefficients from only two adjacent groups of wavelet coefficients spatially related to two adjacent slices (10-13) of the rectangular array (100) of spatial image samples, whereby saidextended groups (43, 53) of wavelet coefficients each comprise one of the two groups of wavelet coefficients in its entirety and only a portion of the other one of the two groups of wavelet coefficients, the portion being adjacent to the one of the two groups of wavelet coefficients that is entirely comprised in the extended group (43, 53) of wavelet coefficients.
2. Method for decoding an encoded image (1201) according to claim 1, wherein the cascade of inverse wavelet-type filter operations comprises at least one inverse wavelet-type filter operation of the LeGall 5 / 3 type in the vertical direction.
3. Method for decoding an encoded image (1201) according to claim 1 or 2, wherein the decoding conforms with a JPEG XS standard.
4. Method for decoding an encoded image (1201) according to claim 3, wherein: at least some of the respective strips (40, 50) of spatial image samples are spatially offset by one precinct (20-23) from the respective slices (10-13) of the rectangular array (100) of spatial image samples; and at least some of the extended groups (43, 53) of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice (10-13) of the rectangular array (100) of spatial image samples; and at least two precincts (20-23) from an adjacent group of wavelet coefficients spatially related to an adjacent slice (10-13) of the rectangular array (100) of spatial image samples, the at least two precincts (20-23) being adjacent to the entire group of wavelet coefficients comprised in the extended group (43, 53) of wavelet coefficients.
5. Method for decoding an encoded image (1201) according to claim 4, wherein: the cascade of inverse wavelet-type filter operations comprises one inverse wavelettype filter operation of the LeGall 5 / 3 type in the vertical direction; and at least some of the extended groups (43, 53) of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice (10-13) of the rectangular array (100) of spatial image samples; and two precincts (20-23) from an adjacent group of wavelet coefficients spatially related to an adjacent slice (10-13) of the rectangular array (100) of spatial image samples, the two precincts (20-23) being adjacent to the entire group of wavelet coefficients comprised in the extended group (43, 53) of wavelet coefficients.
6. Method for decoding an encoded image (1201) according to claim 4, wherein: the cascade of inverse wavelet-type filter operations comprises two inverse wavelet-type filter operations of the LeGall 5 / 3 type in the vertical direction; and at least some of the extended groups (43, 53) of wavelet coefficients each comprise: an entire group of wavelet coefficients spatially related to a slice (10-13) of the rectangular array (100) of spatial image samples; and two precincts (20-23) from an adjacent group of wavelet coefficients spatially related to an adjacent slice (10-13) of the rectangular array (100) of spatial image samples, the two precincts (20-23) being adjacent to the entire group of wavelet coefficients comprised in the extended group (43, 53) of wavelet coefficients.
7. Method for decoding an encoded image (2210) according to any of the preceding claims, wherein said method further comprises the following steps for reconstructing a strip (40, 50) of spatial image samples from an extended group (43, 53) of wavelet coefficients in a processing channel, said strip (40, 50) of spatial image samples comprising respective decoded lines (2252) of image samples (2251): grouping the wavelet coefficients of said extended group (43, 53) of wavelet coefficients into respective sets of coefficients spatially related to said respective decoded lines (2252) of image samples (2251); providing a decoding module (2230) comprising an input line buffer (2231), a number of intermediate line buffers (2232, 2233) and an output line buffer (2234); providing the respective sets of coefficients in the input line buffer (2231); processing with the decoding module (2230) the respective sets of coefficients for producing intermediate results and final results according to a lifting scheme (2400) of an inverse wavelet-type filter operation applied in a vertical direction; storing the intermediate results in the intermediate line buffers (2232, 2233); providing the final results in the output line buffer (2234) as the respective decoded lines (2252) of image samples (2251) spatially related to the respective sets of coefficients, the respective decoded lines (2252) forming a sequence of decoded lines; wherein the inverse wavelet-type filter operation is an inverse filter operation of the LeGall 5 / 3 type, and wherein the number of intermediate line buffers (2232, 2233) is smaller than five line buffers, preferably smaller than four line buffers, preferably smaller than three line buffers, preferably equal to two line buffers.
8. Computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method according to any of claims 1 to 7.
9. Decoder (1200) comprising a processor and a memory, and configured to perform the method according to any of claims 1 to 7.
Citation Information
Patent Citations
Method and device for display stream compression
EP2773122A1