This is the submitted version of the article: de Cea Dominguez, Carlos; Moure, Juan C.; Bartrina Rapesta, Joan; [et al.]. «Complexity scalable bitplane image coding with parallel coefficient process- ing». IEEE Signal Processing Letters, Vol. 27 (June 2020), p. 840-844. DOI 10.1109/LSP.2020.2990307 This version is available at https://ddd.uab.cat/record/234856 under the terms of the license 1 Complexity Scalable Bitplane Image Coding with Parallel Coefficient Processing Carlos de Cea-Dominguez, Juan C. Moure, Joan Bartrina-Rapesta, and Francesc Aulı́-Llinàs Abstract—Very fast image and video codecs are a pursued a single-thread perspective, resulting in a causal relationship goal both in the academia and the industry. This paper presents among samples that makes parallel processing difficult. a complexity scalable and parallel bitplane coding engine for This drawback was inconsequential while highly parallel wavelet-based image codecs. The proposed method processes the coefficients in parallel, suiting hardware architectures based computing was not widely available. This changed in the on vector instructions. Our previous work is extended with a last years, when CPUs began including vector instructions to mechanism that provides complexity scalability to the system. exploit fine-grain parallelism and, more importantly, when par- Such a feature allows the coder to regulate the throughput allel architectures and platforms like CUDA were introduced achieved at the expense of slightly penalizing compression effi- allowing massive parallelism in commodity Graphics Process- ciency. Experimental results suggests that, when using the fastest speed, the method almost doubles the throughput of our previous ing Units (GPUs). Algorithms of other fields that were well engine while penalizing compression efficiency by about 10%. suited to fine-grain parallelism were rapidly adapted in GPUs, achieving 20× speedups or more [17]. When implemented in Index Terms—High-throughput image coding, JPEG2000. GPUs, image and video coding systems did not achieve such I. I NTRODUCTION speedups due to the sequential techniques employed. Aware of this fact, the Joint Photographics Experts Group T HE pursuit of faster image and video coding systems began shortly after the development of the first codecs and compression standards. Traditional image coding systems, launched a call for proposals in 2017 [18] to introduce a new part to the JPEG2000 standard that defines a new tier- such as SPIHT [1] or EBCOT [2], have been revisited many 2 coding variant that offers high throughput [19]. This part is times introducing modifications that accelerate their coding called HTJ2K (ISO/IEC 15444-15). It is devised to benefit process and/or alleviate computational resources [3]–[8]. Also, from the modern instruction sets like AVX2, NEON, and many hardware architectures of such systems are optimized to BMI2 included in new CPUs, and also from the GPU’s highly reduce execution time and meet the real-time requirements parallel architecture [20]. It is about 10× faster than the of some environments [9]–[12]. These works focus on the im- standard when executed in a CPU, though it penalizes coding provement, or efficient implementation, of the most demanding performance in approximately 10%. Also, it sacrifices quality tasks of the codec, without modifying the techniques of the scalability, which is a valued feature of the standard that allows original system. In general, such techniques code the data via transmitting the image progressively by quality. a single-thread procedure. This strategy together with the soar- In a similar line, in 2014 we started a research whose goal ing of the processor’s clock speed for more than three decades, is a JPEG2000-like codec that provides opportunities for fine- enhanced the codecs’ throughput significantly. Since 2005 the grain parallelism in all the stages of the coding process [21]– increase in the clock’s speed slowed and processors began [25]. The proposed codec was recently evaluated using a com- augmenting their processing power via parallel architectures. modity GPU. Experimental results suggest that it achieves 10× The transition from single- to multi-thread algorithms in the speedups compared to an implementation of JPEG2000 that is image coding field began with the advent of multi-core Central executed in a workstation with 4 CPUs [26]. The adaptation Processing Units (CPUs) in the 2000s [13]–[16]. The first of the bitplane coding engine was the most demanding task multi-thread codecs partitioned the image in multiple pieces since it requires the modification of the original techniques of (referred to as codeblocks onward) that can be processed JPEG2000, losing compliance. The proposed bitplane coding independently. In international standards such as JPEG2000 engine with parallel coefficient processing (BPC-PaCo) uses (ISO/IEC 15444) or HEVC (ISO/IEC 23008-2), for instance, vector instructions of 32 lanes (or, equivalently, 32 CUDA the coding system provides multiple opportunities for such threads) to process 32 coefficients within a codeblock in coarse-grain parallelism. However, the core algorithms do not parallel. BPC-PaCo sacrifices coding efficiency as compared allow fine-grain parallelism since they are envisaged from to JPEG2000 by about 2% but maintains all its features. This paper introduces a mechanism that provides a new Carlos de Cea-Dominguez, Joan Bartrina-Rapesta and Francesc Aulı́-Llinàs feature to BPC-PaCo: complexity scalability. The proposed are with the Dep. of Information and Communications Engineering and Juan C. Moure is with the Dep. of Computer Architecture and Operating Systems, mechanism allows trading computational complexity for com- Universitat Autònoma de Barcelona, Spain (phone: +34 935811861; fax: pression efficiency. The underlying motivation is that some +34 935813443; e-mail: carlos.decea@uab.cat). This work has been partially environments may be willing to sacrifice coding performance supported by the Spanish Ministry of Economy and Competitiveness and the European Regional Development Fund under Grants TIN2017-84553-C2-1- in exchange of throughput. Complexity scalable BPC-PaCo R and RTI2018-095287-B-I00 (MINECO/FEDER, UE), and by the Catalan (CS BPC-PaCo) allows tuning the codec to accelerate more or Government under Grants 2017SGR-463 and 2017SGR-313. Copyright (c) less the coding process. Evidently, the higher the throughput 2020 IEEE. Personal use of this material is permitted. However, permis- sion to use this material for any other purposes must be obtained from achieved, the more affected are the compression efficiency and the IEEE by sending a request to pubs-permissions@ieee.org. quality scalability of the system. Experimental results indicates 2 that speedups of almost 2× are achieved compared to BPC- where Fu (v | φsig (υ, j)) is the probability mass function (pmf) PaCo while penalizing performance by about 10%. of the quantization indices at bitplane j given their context. The rest of the paper is structured as follows. Section II Its support is [0, ..., 2j+1 − 1] since it contains quantization reviews BPC-PaCo and Section III describes the proposed indices that were not significant in bitplanes greater than complexity scalable mechanism. Experimental results are pre- j. Probabilities for sign and refinement coding are derived sented in Section IV. The last section summarizes this work. similarly. Their respective LUTs are denoted by Pu′ and Pu′′ . II. R EVIEW OF BPC-PAC O Entropy coding is carried out through multiple arithmetic BPC-PaCo utilizes a traditional bitplane coding strategy coders that produce fixed-length codewords [22] as data are that codes the wavelet coefficients from the most significant coded. Each thread employs one such a coder. The dispatching bitplane M − 1 to the least, with M being a sufficient number of the codewords in the quality embedded bitstream generated of bits to represent all coefficients within a codeblock. A for the codeblock requires cooperation among threads. It is bitplane is the collection of bits bj from all coefficients, optimally constructed so that the bitstream can be truncated with [bM −1 , bM −2 , ..., b1 , b0 ], bi ∈ {0, 1} denoting the binary at the end of coding passes yielding minimum distortion (see representation of an integer υ that represents the magnitude of Section III.C and III.D in [24]). the index obtained by quantizing wavelet coefficient ω. The first non-zero bit of the binary representation of υ is denoted III. C OMPLEXITY SCALABLE BPC-PAC O by bs and is referred to as the significant bit. The sign of the A distinct feature of bitplane coding engines, including coefficient is denoted by d ∈ {+, −} and is coded immediately BPC-PaCo, is that they code the coefficients in multiple passes after bs , so that the decoder can begin approximating ω as per bitplane. This strategy is aimed to code first those data soon as possible. The bits br , r < s are referred to as that mostly decrease the image distortion. At the decoder, the refinement bits. Although two or three coding passes may be wavelet coefficients are progressively reconstructed, allowing employed [24], [25], the two coding pass version is employed a fine refinement of the estimates of the incoming data. These herein as baseline since it achieves higher throughput. The estimates are key to achieve compression. They are commonly first is called significance coding. It processes the bits of non- embodied in the context formation and probability model. significant coefficients, i.e., those coefficients whose s ≤ j Another advantage of using multiple passes per bitplane is or, more precisely, whose significance state Φ(υ, j) = 0. The that the bitstream contains multiple truncation points, one at second pass is called refinement coding and processes the bits the end of each coding pass. They are key to achieve quality of the remaining coefficients (i.e., those whose Φ(υ, j) = 1). scalability since they are employed by the rate-distortion opti- The main difference between BPC-PaCo and other bitplane mization method to minimize the distortion at a target rate(s). coding engines is that BPC-PaCo codes multiple coefficients Unfortunately, more coding passes entail more computational in parallel. The scanning order is organized in stripes of two complexity. Each pass scans all coefficients of the codeblock columns. The stripes are processed by threads that advance despite coding the bits for only some of them. This is repeated their execution synchronously, all coding the coefficient in in each coding pass, so a coefficient is accessed as many times the same position of their corresponding stripe. This is the as coding passes are executed. key to achieve fine-grain parallelism, since a single vector The main idea behind Complexity Scalable BPC-PaCo instruction is executed to code T coefficients of the codeblock (CS BPC-PaCo) is to reduce the computational complexity of at the same clock cycle. In general, the codeblock contains the coding engine by reducing the number of times that each 64×64 coefficients, so T = 32. Evidently, this strategy must coefficient is visited. To do so while minimizing the impact be accompanied with parallel techniques for context formation, on compression efficiency and quality scalability, bitplanes probability estimation, and entropy coding. [M − 1, N ] are coded as defined in BPC-PaCo. From bitplane For significance coding, the context of υ at bitplane j is N − 1 to the lowest, each coefficient is coded with a fast determined considering itsPeight adjacent neighbors, denoted mode that uses a single pass. Differently from conventional by υ k , via φsig (υ, j) = k k Φ(υ , j). The context for sign bitplane coding strategies, this single pass carries out inter- coding, denoted by φsign (ω, j), employs a similar strategy, bitplane coding since it transmits the information of multiple whereas the refinement pass employs a single context since bitplanes at once. Through N , the granularity of the quality little gain is achieved with more complex models [27], so scalability, the compression efficiency, and the computational φref (υ, j) = 0. Through the context, the probability estimate complexity of the algorithm are controlled. When N is low, of the encoded bit is extracted from a lookup table (LUT) more bitplanes are coded with two coding passes, producing known by encoder and decoder [21]. The LUT for significance many truncation points that can be employed by rate-distortion coding is accessed as Pu [j][φsig (·)], with u denoting the optimization procedures. Also, coefficients are reconstructed wavelet subband. This LUT contains the probability that bj progressively, allowing fine estimates. Evidently, low N s do is 0, which is determined according to not reduce computational complexity significantly. When N j 2X −1 is high, more bitplanes are coded in fast mode, reducing Fu (υ | φsig (υ, j)) computational complexity though producing fewer truncation υ=0 points and penalizing compression efficiency due to rougher Psig (bj = 0 | φsig (υ, j)) = , (1) estimates. This mechanism provides complexity scalability to 2j+1 X−1 Fu (υ | φsig (υ, j)) the codec, since it can be employed to favor the application’s υ=0 throughput or the compression efficiency/quality scalability. 3 The same coding techniques of [24], with the modifications Algorithm 1 Complexity Scalable BPC-PaCo (encoder) described below, are valid in the fast mode to remove the data Parameters: u subband, t stripe, M bitplanes to code, N dependency when coding coefficients in parallel. bitplanes in fast mode Algorithm 1 describes the proposed coding engine from a 1: for j ∈ [M − 1, N ] do thread (or a single lane of a vector instruction) perspective. 2: for y ∈ [0, numRows − 1] do From line 1 to 14, it employs the same procedure as that of 3: for x ∈ [t · 2, t · 2 + 1] do 4: if Φ(υy,x , j + 1) = 0 then BPC-PaCo (see Section III.D in [24]). The only difference is 5: ACencode(bj , Pu [j][φsig (υy,x , j)], t) that the loop in line 1 codes bitplanes [M − 1, N ] instead of 6: if bj = 1 then [M −1, 0]. The position of the coefficient within the codeblock 7: ACencode(d, Pu′ [j][φsign (ωy,x , j)], t) is denoted by y and x for the row and column, respectively. 8: end if The fast mode is embodied in lines 15 to 29. It encodes bits 9: else 10: ACencode(bj , Pu′′ [j][0], t) [N −1, 0] at once for each coefficient. The significance context 11: end if is computed in line 17 before start coding and it is employed 12: end for until bs is found. This context does not change from bitplane 13: end for N −1 to 0 since no more information of the adjacent neighbors 14: end for is available once the fast mode begins. This also needs to be 15: for y ∈ [0, numRows − 1] do 16: for x ∈ [t · 2, t · 2 + 1] do considered in the probability model, so the LUT employed 17: c ← φsig (υy,x , N − 1) in the fast mode for significance coding in bitplanes j ′ = 18: for j ∈ [N − 1, 0] do [N − 1, 0] is populated according to 19: if Φ(υy,x , j + 1) = 0 then 20: ACencode(bj , Pu [j][c], t) j′ 2X −1 21: if bj = 1 then Fu (υ | φsig (υ, N − 1)) 22: ACencode(d, Pu′ [j][φsign (ωy,x , N − 1)], t) υ=0 23: end if Psig (bj ′ = 0 | φsig (υ, N −1)) = j ′ +1 .24: else 2 X−1 25: ACencode(bj , Pu′′ [j][0], t) Fu (υ | φsig (υ, N − 1)) 26: end if υ=0 27: end for (2) 28: end for 29: end for Probabilities for sign coding are determined accordingly. The LUT for refinement is unchanged due to the use of a single context. The selection of N is key to control the computational    complexity of the engine. A straightforward approach is to K N = min M, M · . (3) apply the same N to all codeblocks. Our experience indicates Lu that this may penalize quality scalability significantly because K is the input parameter of our implementation that controls at the lowest N bitplanes there is only one truncation point the computational complexity of the codec. Larger Ks achieve available for each codeblock. When the bitstreams segments larger N s, so more bitplanes are coded in fast mode, rising the of higher bitplanes are already selected, the rate-distortion codec’s throughput. Lu is the L2 norm of the synthesis basis optimization method can only include the whole segment of vectors of the subband’s filter-bank (it is assumed equal energy some codeblocks, completely discarding some others. At low gain factor in all subbands). The higher the decomposition rates, this may cause that none information is transmitted for level, the more decreases the K, resulting in lower N s in some areas of the image, producing an image with blank the smallest resolution levels. Through this strategy, the fast areas or with no color information. The quality scalability mode is applied at different bitplanes depending on the data of the system is less affected when N is chosen depending and subband of the codeblock, providing more variability to on the codeblock’s data and the wavelet subband. Let us the rate-distortion optimization method. explain further. As indicated in [28], the highest bitplanes of a codeblock contain the information that mostly decreases the IV. E XPERIMENTAL RESULTS distortion. In terms of rate-distortion optimization, this means The ISO 12640-1 corpus is employed (8 color images, that is more valuable the data coded in bitplane j = 4 for 2560×2048, and 8 bits per sample (bps)). The results report a codeblock with M = 5 than for another with M = 6, for the performance achieved by JPEG2000, BPC-PaCo, and the example. Therefore, our strategy selects N depending on M . proposed CS BPC-PaCo. The same Java framework BOI [29] The wavelet subband is also considered. The first decompo- is used for all codecs, using the same rate-distortion optimiza- sition levels (i.e., the largest wavelet subbands) contain most tion method. Results for throughput are computed when the codeblocks, whereas the latest contain much fewer, so the use coding engine is executed with a single thread. This gives of the fast mode in the codeblocks of the smallest resolution an approximation of the computational complexity of the al- subbands barely affects the throughput achieved. However, gorithm. 5 levels of wavelet decomposition and codeblocks of these codeblocks contain the rougher details of the image, 64×64 are employed. These coding parameters are selected as important for its reconstruction. Our strategy selects N in each the most commonly used. A smaller codeblock size alleviates codeblock according to the penalization in coding efficiency of the proposed method, 4 TABLE I: Evaluation of the proposed method for lossless and lossy compression. All results are reported in bps except for the speedup, which is the percentage of CS BPC-PaCo with respect to BPC-PaCo (on average for the encoder and decoder). LOSSLESS COMPRESSION LOSSY COMPRESSION BPC- CS BPC-PaCo BPC- CS BPC-PaCo JP2 PaCo K = 0.5 K = 1.5 K=∞ JP2 PaCo K=1 K=2 K=∞ Portrait 3.80 +0.21 +0.22 7% +0.39 56% +0.43 76% 2.60 +0.10 +0.16 21% +0.27 51% +0.31 68% Cafe. 4.68 +0.13 +0.16 10% +0.47 59% +0.52 74% 3.61 +0.08 +0.23 40% +0.43 63% +0.50 81% Fruit 3.96 +0.20 +0.22 5% +0.40 52% +0.43 70% 2.73 +0.11 +0.18 24% +0.28 48% +0.32 62% Wine 3.94 +0.20 +0.21 8% +0.37 55% +0.41 72% 2.71 +0.08 +0.14 27% +0.22 50% +0.27 70% Bicycle 3.90 +0.20 +0.22 7% +0.41 54% +0.46 69% 2.67 +0.11 +0.20 29% +0.32 55% +0.36 70% Orchid 3.44 +0.26 +0.27 7% +0.39 48% +0.43 71% 2.15 +0.12 +0.17 20% +0.25 46% +0.28 62% Music. 5.34 +0.20 +0.29 8% +0.78 56% +0.84 68% 4.40 +0.11 +0.36 42% +0.61 67% +0.66 79% Candle 4.74 +0.15 +0.20 11% +0.53 56% +0.60 73% 3.69 +0.08 +0.26 40% +0.47 66% +0.52 76% average 4.22 +0.20 +0.22 8% +0.47 54% +0.51 72% 3.07 +0.09 +0.21 30% +0.36 56% +0.40 71% 1 60 3 7 3 5 9 .9 .4 .5 .3 .9 .5 .6 .8 .1 37 39 40 41 42 44 45 46 48 PSNR difference (in dB) 0 50 throughput increase (in %) −1 encoder 40 −2 decoder 30 −3 20 −4 BPC−PaCo K=1 K=0.5 K=1.5 K=0.75 K=2 10 −5 0 0.5 1 1.5 2 0 0.5 0.75 1 1.5 2 rate (in bps) K (a) (b) Fig. 1: Evaluation of (a) lossy coding performance and (b) throughput achieved for the “Orchid” image when using different Ks. In (a), the horizontal straight plot depicts the performance achieved by JPEG2000, whereas the other plots depict the performance achieved by the proposed method with different Ks, or by BPC-PaCo. whereas fewer wavelet levels degrades coding performance For K ∈ (0, 1) the losses in coding performance are below 2 significantly at low rates. dB for the whole rate range. Larger Ks result in higher losses, Table I (left) reports the results for lossless compression. especially for low rates. This penalization in compression effi- They use K = {0.5, 1.5, ∞}. K = ∞ achieves the fastest ciency is caused by both the lack of enough truncation points speed since all bitplanes are coded with the fast mode. The and the poorer efficiency of the arithmetic coder due to rougher results of this table suggest that CS BPC-PaCo can accelerate estimates of the coefficients. Fig. 1(b) reports the throughput’s the coding process of the original engine by 72% whereas increase when using the same Ks as before. When K = 1 the penalization in coding performance is, with the fastest the throughput is increased in 20% while slightly affecting speed, 13% and 10% as compared to JPEG2000 and BPC- the coding efficiency (see Fig. 1(a)). Although larger Ks PaCo, respectively. penalize more the image quality, the throughput’s enhancement Table I (right) reports lossy compression results when is significant, achieving more than 40% when K = 2. K = {1, 2, ∞}. This test evaluates the rate and throughput V. C ONCLUSIONS increase achieved when all bitplanes are coded, achieving a Many efforts have been done to increase the throughput quality above 50 dB. The results suggest that when K = 1 the of image and video codecs. Common approaches are to engine’s throughput is increased by 30% whereas the rate by implement them in hardware or to simplify their algorithms, 4% with respect to BPC-PaCo. For K = 2 (K = ∞), through- which sometimes sacrifices some features. This paper presents put and rate are respectively increased by 56% (71%) and 9% a fast bitplane coding engine that, in addition to the features (10%). Note that, in terms of percentage, the throughput is of the JPEG2000 standard, provides complexity scalability. To more increased than the decrease in compression efficiency. do so, it uses a coding engine that processes the coefficients in Fig. 1(a) evaluates the quality scalability achieved by the parallel and, when indicated, changes the conventional coding proposed method, for the “Orchid” image. Results hold for of bitplanes to a fast mode that codes all bits of the coeffi- the others. The figure reports the coding performance achieved cients at once. Experimental results indicate that the proposed at 200 rates equivalently distributed between 0.01 and 2 bps, method can effectively regulate the codec’s throughput. When in terms of Peak Signal to Noise Ratio (PSNR) difference using the minimum complexity, the throughput and rate are between JPEG2000 and BPC-PaCo or CS BPC-PaCo when increased by about 70% and 13%, respectively, whereas the using different Ks. The results are obtained when all bitplanes maximum complexity increases throughput and rate by about are coded and then the rate-distortion optimization method 10% and 2%, respectively, on average for the employed corpus constructs the final file, or quality layers, at the target rates. and for lossy and lossless compression. 5 R EFERENCES [15] K. Sarawadekar and S. Banerjee, “An efficient pass-parallel architecture for embedded block coder in JPEG 2000,” IEEE Trans. Circuits Syst. [1] A. Said and W. A. Pearlman, “A new, fast, and efficient image codec Video Technol., vol. 21, no. 6, pp. 825–836, Jun. 2011. based on set partitioning in hierarchical trees,” IEEE Trans. Circuits Syst. Video Technol., vol. 6, no. 3, pp. 243–250, Jun. 1996. [16] Y. Jin and H.-J. Lee, “A block-based pass-parallel SPIHT algorithm,” [2] D. Taubman, “High performance scalable image compression with vol. 22, no. 7, pp. 1064–1075, Jul. 2012. EBCOT,” IEEE Trans. Image Process., vol. 9, no. 7, pp. 1158–1170, [17] M. S. Nobile, P. Cazzaniga, A. Tangherloni, and D. Besozzi, “Graphics Jul. 2000. processing units in bioinformatics, computational biology and systems [3] W. A. Pearlman, A. Islam, N. Nagaraj, and A. Said, “Efficient, low- biology,” Briefings in Bioinformatics, vol. 18, no. 5, pp. 870–885, Sep. complexity image coding with a set-partitioning embedded block coder,” 2017. IEEE Trans. Circuits Syst. Video Technol., vol. 14, no. 11, pp. 1219– [18] High Throughput JPEG 2000 (HTJ2K): Call for Proposals, ISO/IEC 1235, Nov. 2004. Std., 2017, document ISO/IEC JTC 1/SC29/WG1 N76037. [4] G. Xie and H. Shen, “Highly scalable, low-complexity image coding [19] D. Taubman, A. Naman, and R. Mathew, “High throughput block using zeroblocks of wavelet coefficients,” IEEE Trans. Image Process., coding in the HTJ2K compression standard,” in Proc. IEEE International vol. 15, no. 6, pp. 762–770, Jun. 2005. Conference on Image Processing, Sep. 2019, pp. 1079–1083. [5] M. Dyer, D. Taubman, S. Nooshabadi, and A. K. Gupta, “Concurrency [20] A. Naman and D. Taubman, “Decoding high-throughput JPEG2000 techniques for arithmetic coding in JPEG2000,” IEEE Trans. Circuits (HTJ2K) on a GPU,” in Proc. IEEE International Conference on Image Syst. I, vol. 53, no. 6, pp. 1203–1212, Jun. 2006. Processing, Sep. 2019, pp. 1084–1088. [6] M. Rhu and I.-C. Park, “Optimization of arithmetic coding for JPEG2000,” IEEE Trans. Circuits Syst. Video Technol., vol. 20, no. 3, [21] F. Auli-Llinas and M. W. Marcellin, “Stationary probability model for pp. 446–451, Mar. 2010. microscopic parallelism in JPEG2000,” IEEE Trans. Multimedia, vol. 16, [7] F. Auli-Llinas and M. W. Marcellin, “Scanning order strategies for no. 4, pp. 960–970, Jun. 2014. bitplane image coding,” IEEE Trans. Image Process., vol. 21, no. 4, [22] F. Auli-Llinas, “Context-adaptive binary arithmetic coding with fixed- pp. 1920–1933, Apr. 2012. length codewords,” IEEE Trans. Multimedia, vol. 17, no. 8, pp. 1385– [8] X. Song, Q. Huang, S. Chang, J. He, and H. Wang, “Three-dimensional 1390, Aug. 2015. separate descendant-based SPIHT algorithm for fast compression of [23] P. Enfedaque, F. Auli-Llinas, and J. C. Moure, “Implementation of the high-resolution medical image sequences,” vol. 11, no. 1, pp. 80–87, DWT in a GPU through a register-based strategy,” IEEE Trans. Parallel Jan. 2017. Distrib. Syst., vol. 26, no. 12, pp. 3394–3406, Dec. 2015. [9] A. K. Gupta, S. Nooshabadi, D. Taubman, and M. Dyer, “Realizing [24] F. Auli-Llinas, P. Enfedaque, J. C. Moure, and V. Sanchez, “Bitplane low-cost high-throughput general-purpose block encoder for JPEG2000,” image coding with parallel coefficient processing,” IEEE Trans. Image IEEE Trans. Circuits Syst. Video Technol., vol. 16, no. 7, pp. 843–858, Process., vol. 25, no. 1, pp. 209–219, Jan. 2016. Jul. 2006. [25] P. Enfedaque, F. Auli-Llinas, and J. C. Moure, “GPU implementation of [10] K. Mei, N. Zheng, C. Huang, Y. Liu, and Q. Zeng, “VLSI design of a bitplane coding with parallel coefficient processing for high performance high-speed and area-efficient JPEG2000 encoder,” IEEE Trans. Circuits image compression,” IEEE Trans. Parallel Distrib. Syst., vol. 28, no. 8, Syst. Video Technol., vol. 17, no. 8, pp. 1065–1078, Aug. 2007. pp. 2272–2284, Aug. 2017. [11] M. Dyer, S. Nooshabadi, and D. Taubman, “Design and analysis of [26] C. de Cea-Dominguez, J. C. Moure, J. Bartrina-Rapesta, and F. Auli- system on a chip encoder for JPEG2000,” IEEE Trans. Circuits Syst. Llinas, “GPU architecture for wavelet-based video coding acceleration,” Video Technol., vol. 19, no. 2, pp. 215–225, Feb. 2009. in Parallel Computing: Technology Trends, vol. 36, Apr. 2020, pp. 83– [12] S. Kim, D. Lee, J.-S. Kim, , and H.-J. Lee, “A high-throughput 92, IOSPress Series in Advances in Parallel Computing. hardware design of a one-dimensional SPIHT algorithm,” IEEE Trans. Multimedia, vol. 18, no. 3, pp. 392–404, Mar. 2016. [27] F. Auli-Llinas, “Stationary probability model for bitplane image coding [13] H.-C. Fang, Y.-W. Chang, T.-C. Wang, C.-J. Lian, and L.-G. Chen, through local average of wavelet coefficients,” IEEE Trans. Image “Parallel embedded block coding architecture for JPEG 2000,” IEEE Process., vol. 20, no. 8, pp. 2153–2165, Aug. 2011. Trans. Circuits Syst. Video Technol., vol. 15, no. 9, pp. 1086–1097, Sep. [28] F. Auli-Llinas and J. Serra-Sagrista, “JPEG2000 quality scalability 2005. without quality layers,” IEEE Trans. Circuits Syst. Video Technol., [14] Y. Li and M. Bayoumi, “A three-level parallel high-speed low-power vol. 18, no. 7, pp. 923–936, Jul. 2008. architecture for EBCOT of JPEG 2000,” IEEE Trans. Circuits Syst. Video [29] F. Auli-Llinas. (2019, Nov.) BOI codec. [Online]. Available: http: Technol., vol. 16, no. 9, pp. 1153–1163, Sep. 2006. //www.deic.uab.cat/∼francesc/software/boi