US 20030059096 A1 Abstract Disclosed is a lossless image streaming system for the transmission of images over a communication network. The system eliminates the necessity to store a compressed version of the original image, by losslessly streaming ROI data using the original stored image. The imaging system of the present invention also avoids the computationally intensive task of compression of the full image. When a user wishes to interact with a remote image, the imaging server performs a fast preprocessing step in near real time after which it can respond to any ROI requests also in near real time. When a ROI request arrives at the server, a sophisticated progressive image encoding algorithm is performed, but not for the full image. Instead, the encoding algorithm is performed only for the ROI. Since the size of the ROI is bounded by the size and resolution of the viewing device at the client and not by the size of the image, only a small portion of the full progressive coding computation is performed for a local area of the original image.
Claims(34) 1. A method for transmitting visual data over a communication network, comprising:
(a) performing a wavelet transform upon the visual data to produce wavelet coefficients, each wavelet coefficient having an associated spatial location, resolution and quality; (b) grouping wavelet coefficients into data blocks, each data block described by a two-dimensional spatial coordinate pair, a resolution coordinate and an accuracy coordinate; (c) selecting a region of interest of the visual data and a quality at which the visual data is to be rendered; and (d) transmitting over the communication network only those data blocks corresponding to the selected region of interest and quality. 2. The method claimed in 3. The method claimed in 4. The method claimed in 5. The method claimed in 6. The method claimed in 7. The method claimed in 8. The method claimed in 9. The method claimed in the step of selecting a quality at which the visual data is to be rendered comprises a client computer coupled to the communication network generating at least one request for interaction with the visual data and at least one subsequent request for data blocks identifying a region of interest at a selected quality and a selected resolution within the visual data; and the transmitting step comprises a server computer coupled to the communication network receiving the requests and progressively transmitting data blocks corresponding to the region of interest to the client computer via the communication network. 10. The method claimed in 11. The method claimed in the step of selecting a quality at which the visual data is to be rendered comprises a client computer coupled to the communication network generating at least one request for interaction with the visual data and at least one subsequent request identifying a region of interest at a selected quality and a selected resolution within the visual data; and the transmitting step comprises a server computer coupled to the communication network receiving the request identifying the region of interest and selecting and progressively transmitting data blocks corresponding to the region of interest to the client computer via the communication network 12. The method claimed in 13. The method claimed in decompressing compressed data blocks corresponding to the region of interest received from the server computer; and rendering the region of interest. 14. The method claimed in 15. The method claimed in 16. The method claimed in 17. The method claimed in the step of selecting a quality at which the visual data is to be rendered comprises a client computer coupled to the communication network generating at least one request for interaction with the visual data and at least one subsequent request for data blocks identifying a region of interest; and the transmitting step comprises a server computer coupled to the communication network receiving the requests and progressively transmitting data blocks corresponding to the region of interest to the client computer via the communication network, and wherein the client computer only requests the data blocks associated with a portion of a region of interest that was not previously stored in the cache. 18. A system for transmitting visual data over a communication network, comprising:
(a) an image storage device for digitally storing visual data; (b) a client computer coupled to the communication network; and (c) a server computer, coupled to the communication network and the image storage device, wherein the server computer performs the steps of:
(i) performing a wavelet transform upon the visual data to produce wavelet coefficients, each wavelet coefficient having an associated spatial location, resolution and quality;
(ii) grouping wavelet coefficients into data blocks, each data block described by a two-dimensional spatial coordinate pair, a resolution coordinate and an accuracy coordinate;
(iii) selecting a region of interest of the visual data and a quality at which the visual data is to be rendered; and
(iv) transmitting over the communication network only those data blocks corresponding to the selected region of interest and quality.
19. The system claimed in 20. The system claimed in 21. The system claimed in 22. The system claimed in the client computer generates at least one request for interaction with the visual data and at least one subsequent request for data blocks identifying a region of interest at a selected quality and a selected resolution within the visual data; and the server computer receives the requests and progressively transmits data blocks corresponding to the region of interest to the client computer via the communication network. 23. The system claimed in 24. The system claimed in the client computer generates at least one request for interaction with the visual data and at least one subsequent request identifying a region of interest at a selected quality and a selected resolution within the visual data; and the server computer receives the request identifying the region of interest and selects and progressively transmits data blocks corresponding to the region of interest to the client computer via the communication network. 25. The system claimed in 26. The system claimed in decompressing compressed data blocks corresponding to the region of interest received from the server computer; and rendering the region of interest. 27. The system claimed in 28. The system claimed in the client computer generates at least one request for interaction with the visual data and at least one subsequent request for data blocks identifying a region of interest; and the server computer receives the requests and progressively transmits data blocks corresponding to the region of interest to the client computer via the communication network, and wherein the client computer only requests the data blocks associated with a portion of a region of interest that was not previously stored in the cache. 29. A server computer for transmitting visual data over a communication network to a client computer, comprising:
(a) an image storage device for digitally storing visual data; and (b) a processing system, coupled to the communication network and the image storage device, wherein the processing system effects the steps of:
(i) performing a wavelet transform upon the visual data to produce wavelet coefficients, each wavelet coefficient having an associated spatial location, resolution and quality;
(ii) grouping wavelet coefficients into data blocks, each data block described by a two-dimensional spatial coordinate pair, a resolution coordinate and an accuracy coordinate;
(iii) selecting a region of interest of the visual data and a quality at which the visual data is to be rendered; and
(iv) transmitting over the communication network only those data blocks corresponding to the selected region of interest and quality.
30. The server computer claimed in 31. The server computer claimed in 32. The server computer claimed in 33. The server computer claimed in 34. The server computer claimed in Description [0001] This is a continuation of U.S. patent application Ser. No. 09/837,862, filed Apr. 17, 2001, entitled “SYSTEM AND METHOD FOR THE LOSSLESS PROGRESSIVE STREAMING OF IMAGES OVER A COMMUNICATION NETWORK,” and further claims priority to U.S. patent application Ser. No. 09/837,862, filed Apr. 7, 2001, entitled “SYSTEM AND METHOD FOR THE LOSSLESS PROGRESSIVE STREAMING OF IMAGES OVER A COMMUNICATION NETWORK,” U.S. patent application Ser. No. 09/386,264, filed Aug. 31, 1999, entitled “SYSTEM AND METHOD FOR TRANSMITTING A DIGITAL IMAGE OVER A COMMUNICATION NETWORK,” and U.S. Provisional Patent Application No. 60/198,017, filed Apr. 18, 2000, entitled “LOSSLESS PROGRESSIVE STREAMING OF IMAGES OVER THE INTERNET,” and the specifications thereof are incorporated herein in their entireties by this reference. [0002] 1. Field of the Invention [0003] This invention relates to systems and methods for transmission of still images over relatively low-speed communication channels. More specifically the invention relates to progressive image streaming over low speed communication lines, and may be applied to a variety of fields and disciplines, including commercial printing and medical imaging, among others. [0004] 2. Brief Description of the Prior Art [0005] In a narrow bandwidth environment, a simple transfer to the client computer of any original image stored in the server's storage is obviously time consuming. In many cases the user only wishes to view a low resolution of the image and perhaps a few more high-resolution details, in these instances it would be inefficient to transfer the full image. This problem can be overcome by storing images in some compressed formats. Examples for such formats are standards such as Progressive JPEG (W. Pennebaker and J. Mitchel, “JPEG, still image data compression standard”, VNR, 1993) or the upcoming JPEG2000 (D. Taubman, “High performance scalable image compression with EBCOT”, preprint, 1999). These formats allow progressive transmission of an image such that the quality of the image displayed at the client computer improves during the transmission. [0006] In some application such as medical imaging, it is also necessary that whenever the user at the client computer is viewing a portion of the highest resolution of the image, the progressive streaming will terminate at lossless quality. This means that at the end of progressive transmission the pixels rendered on the screen are exactly the pixels of the original image. The current known “state-of-the-art” wavelet algorithms for progressive lossless streaming all have a major drawback: their rate-distortion behavior is very inferior to the “lossy” algorithms. The implications are serious: [0007] 1. Whenever the user is viewing any low resolution of the image (at low resolutions the term “lossless” is not well defined) more data needs to be sent for the same visual quality. [0008] 2. During the progressive transmission of the highest resolution, before lossless quality is achieved, more data needs to be sent for the same visual quality. [0009] Researchers working in this field are troubled by these phenomena. As F. Sheng, A. Bilgin, J. Sementilli and M. W. Marcellin say in [SBSM]: “. . . . Improved lossy performance when using integer transforms is a pursuit of our on-going work.” Here is an example:
[0010] As one can see from Table 1, state of the art progressive lossless coding is inferior to lossy coding by more than 1 dB at the high bit-rate. [0011] Indeed, intuitively, the requirement for lossless progressive image transmission should not effect the rendering of lower resolutions or the progressive “lossy” rendering of the highest resolution before lossless quality is obtained. The final lossless quality should be a layer that in some sense is added to a lossy algorithm with minor (if any) effect on its performance. [0012] The main problem with known lossless wavelet algorithms, such as SPIHT [SP1] and CREW [ZASB], is that they use special “integer To Integer” transforms (see “Wavelet transforms that map integers to integers”, A. Calderbank, I. Daubechies, W. Sweldens, B. L. Yeo, J. Fourlier Anal. Appl., 1998). These transforms mimic “mathematically proven” transforms that work well in lossy compression using floating-point arithmetic implementations. But because they are constraint to be lossless, they do not approximate their floating-point ancestors sufficiently well. Although in all previous work there have been attempts to correct this approximation in the progressive coding stage of the algorithm, the bad starting point, an inefficient transform, prevented previous authors to obtain decent rate-distortion behavior. [0013] Our algorithm solves the rate-distortion behavior problem. Using the fact that images are two-dimensional signals, we introduce new 2D lossless Wavelet transforms that approximate much better their lossy counterparts. As an immediate consequence our lossless progressive coding algorithm has the same rate-distortion of a lossy algorithm during the lossy part of the progressive transmission. [0014] The imaging system that is described below is directed to a lossless image streaming system that is different from traditional compression systems and overcomes the above problems. By utilizing a lossless means of progressive transmission means the pixels rendered on the screen at the end of transmission are exactly the pixels of the original image that was transmitted. The imaging system disclosed herein eliminates the necessity to store a compressed version of the original image, by streaming ROI data using the original stored image. The imaging system of the present invention also avoids the computationally intensive task of compression of the full image. Instead, once a user wishes to interact with a remote image, the imaging server performs a fast preprocessing step in near real time after which it can respond to any ROI requests also in near real time. When a ROI request arrives at the server, a sophisticated progressive image-encoding algorithm is performed, but not for the full image. Instead, the encoding algorithm is performed only for the ROI. Since the size of the ROI is bounded by the size and resolution of the viewing device at the client and not by the size of the image, only a small portion of the full progressive coding computation is performed for a local area of the original image. This local property is also true for the client. The client computer performs decoding and rendering only for ROT and not the full image. This real time streaming or Pixels-On-Demand™ architecture requires different approaches even to old ideas. For example, similarly to some prior art, the present imaging system is based on wavelets. But while in other systems wavelet bases are selected according to their coding abilities, the choice of wavelet bases in the present imaging system depends more on their ability to perform well in the real time framework. The system of the present invention supports several modes of progressive transmission: by resolution, by accuracy and by spatial order. [0015]FIG. 1 is a system architecture block diagram. [0016]FIG. 2 is an imaging system workflow diagram. [0017]FIG. 3 is a flow diagram representing a “lossless progressive by accuracy” request list for a ROI. [0018]FIG. 4 is a diagram depicting the client “progressive by accuracy” workflow. [0019]FIG. 5 is a diagram depicting the server workflow. [0020]FIG. 6 is a diagram describing the server-preprocessing step. [0021]FIG. 7 is a diagram describing the low resolution encoding process. [0022]FIG. 8 is a diagram describing the ROI high resolution processing. [0023]FIG. 9 is a diagram depicting the local forward lossless wavelet transform. [0024]FIG. 10 is a diagram depicting the local inverse lossless wavelet transform. [0025]FIG. 11 is a diagram depicting the progressive rendering steps. [0026]FIG. 12 is a diagram depicting a lossless subband tile wherein the spatial grouping of subband coefficients are at a given resolution and the halfbit matrix is associated with the hh, subband. [0027]FIG. 13 a diagram depicting the RGB<->YUV reversible conversion. [0028]FIG. 14 a diagram depicting a lossless last bit plane data block in which only hl and hh subband coefficients are scanned. [0029]FIG. 15 is a sample pseudo-code of the encoding algorithm represented by: (a) Least significant bit plane scan pseudo-code (b) Half bit plane scan pseudo-code. [0030]FIG. 16 is a sample pseudo-code of the decoding algorithm represented by: (a) Least significant bit plane scan pseudo-code (b) Half bit plane scan pseudo-code. [0031]FIG. 17 is a diagram depicting the curve defining the mapping from Original_Image_Depth-bit image to Screen_Depth-bit. [0032]FIG. 18 is a diagram depicting the decomposition of one-dimensional signal x to the Low-subband s and the High-subband d and the separable decomposition of two-dimensional signal X into 4 matrices (subbands): LL, HL, LH and HH. [0033]FIG. 19 is a diagram depicting the first stage of the 2D separable transform step in the X-direction. [0034]FIG. 20 is a diagram depicting the second stage of the 2D separable transform step in the Y-direction. [0035]FIG. 21 is a diagram depicting the application of the full 2D Wavelet transform. [0036]FIG. 22 is a flow diagram representing the least significant bit plane scan of the encoding algorithm. [0037]FIG. 23 is a flow diagram representing the least significant bit plane scan of the decoding algorithm. [0038]FIG. 24 is a flow diagram describing a bit plane significance scan of the server-encoding algorithm. [0039]FIG. 25 is a flow diagram describing the subband tile extraction of the client progressive rendering process. [0040]FIG. 26 is a diagram depicting the preprocessing multi-resolution structure. [0041] 1. Notation and Terminology [0042] The following notation is used throughout this document.
[0043] The following terminology and definitions apply throughout this document.
[0044] 2. Overview of the Invention [0045] Referring to FIG. 1, a block diagram is provided depicting the various components of the imaging system in one embodiment. A client computer [0046] In one embodiment, the client computer [0047] The client computer [0048] With reference to FIG. 2, the system workflow is described. Using any browser type application, the user of the client computer [0049] 3. New Reversible Wavelet Transform [0050] We will now explain in detail why the rate-distortion behavior of our progressive lossless algorithm is better than other known algorithms. Lossless wavelet transform, must be integer-to-integer-transform, such that round-off errors are avoided. In order to demonstrate the difference between lossy and lossless transforms, let us look at the simplest wavelet, the Haar wavelet. Let x(k) be the k-th component of the one-dimensional discrete signal x. The first forward Haar transform step, in its accurate “mathematical” form, is defined by:
[0051] where s is a low-resolution version of x, and d is the “difference” between s and x. In the case of lossless transform, applying the above transform results in round-off error. One possibility is to apply the transform step suggested by [CDSI]:
[0052] The symbol └∘┘ is the floor function meaning “greatest integer less than or equal to ∘”, e.g. └0.5┘=0, └−1.5┘=−1, └2┘=2, └−1┘=−1. [0053] The one-dimensional transform step is generalized to 2D separable transform step, by applying the 1D transform step twice, first in the X-direction and than (on the first stage output) in the Y-direction as described in FIG. 18, 19 and [0054] In (3.2) two properties are kept: [0055] 1. Reversibility, i.e., one can restore x(2n) and x(2n+1), by knowing s(n)and d(n), as follows:
[0056] 2. De-correlation, i.e., s(n) and d(n) contains the minimal number of bits required in order to follow property [0057] then the least significant bit of s(n) and d(n) would have been the same and saved twice. In other words, there is a correlation between s(n) and d(n) in (3.4). From the view point of coding this should be avoided since there is a redundancy of transmitting this bit. [0058] On the other hand, the scaling property, that is a very important one, is not kept in (3.2). Observe that the value of s(n) computed by (3.2), is smaller than its “real mathematical value” as computed in (3.1), by factor of {square root}{square root over (2)}. Since s(n) should be rounded to an integer number, the fact that s(n) is smaller than what it should be, increases the round-off error. In low resolutions, the error is accumulated through the wavelet steps. [0059] If we take the error as a model of “white noise” added to the i-th resolution in a multi-resolution representation of the image, i.e. X, in FIG. 21, it can be proved that the variance of this noise exponentially increases as a function of i. This “contamination” to the multi-resolution image damages the coding efficiency at low bit-rates. Let us describe this in detail for the case of the Haar wavelet. We have two assumptions in our analysis: [0060] 1. The parity (least significant bit) of an arbitrary coefficient c, in any of the wavelet steps is a uniformly distributed random variable, i.e.
[0061] 2. This parity is independent of other coefficient's parity (Identically independent distributed). [0062] Our referenced computation, i.e. the accurate computation, is the Haar transform step defined in (3.1). We concentrate on the LL-subband coefficients, because the low-resolution subbands are computed from them. LL-subband coefficients are the result of a 2D-transform step (FIG. 18)
[0063] where m and n are the indices of the row and column of the coefficient respectively. [0064] As described in FIG. 18, 19 and [0065] for each input row x(k,·). [0066] Under assumption 1 mentioned above, we can write s(k,n) as
[0067] where e is a random variable with a probability distribution function (P.D.F.) p (·)defined by
[0068] We then apply the Y-direction transform by
[0069] As in (3.5) we can represent s(2m+1,n) and s(2m,n) by:
[0070] Now we can write:
[0071] where e [0072] e represents the approximation error of the LL-subband coefficients, results from one 2D transform step. The error relates to the accurate floating-point computation. [0073] This was a description of a single 2D-transform step assuming that the input coefficients are without any error. Now we wish to evaluate the error accumulated after several steps. [0074] At an arbitrary step i≧0, we can assume that an input coefficient can be written as: [0075] where x [0076] instead of the integer-to-integer computation in (3.2). Observe that if x [0077] where ll [0078] (see (3.12)). 0. [0079] Using (3.11), we get:
[0080] where e [0081] and corresponds to LL, subband. [0082] Consequently
[0083] Observe that
[0084] As a result, we can write recursive formulas for the error expectation and variance after i steps.
[0085] The explicit solutions to these formulas are
[0086] By replacing
[0087] we get
[0088] Thus, the approximation to ll 2 [0089] The approximation error expectation is
[0090] The approximation error variance and standard deviation are
[0091] Let us now evaluate the approximation error of the 3 other subbands:
[0092] where [0093] e [0094] e′ and e″ are identical to the random variable whose expectation and variance are given in (3.7). [0095] Thus, E(e [0096] [0097] The approximation to lh 2′ [0098] The approximation error variance and standard deviation are:
[0099] A similar approximation error estimation, it can be done with the HL-subband and the HH-subband. [0100] The approximation error evaluation results are summarized in the following table where the error is the difference between the normalized (in L
[0101] Assuming a low-bit rate transmission where only the coefficients whose absolute value belongs to the range └2 [0102] Instead, we propose a new family of reversible transforms. The proposed family of integer wavelet transforms has all three properties: [0103] 1. Reversibility [0104] 2. De-correlatioin [0105] 3. Scaling—i.e. improved approximation of the “mathematical” transform. [0106] Our 2D transform step is separable also, but the one-dimensional transform step, which the 2D transform is based on, is different for the X-direction (step [0107] The full 2D Wavelet transform is applied by using the 2D Wavelet transform step iteratively in the classic Mallat decomposition of the image (FIG. 21) ([M] 7.7). As mentioned before, the Wavelet coefficients in our proposed transform are all scaled, i.e. normalized in L [0108] In order to achieve the third property (improved approximation of the “mathematical” transform), we define an extra matrix we call the “Half bit-matrix” which enables the reversibility of the High Y-transform step (step [0109] Supposing [0110] are a coefficient pair results from a reversible de-correlated 1D-wavelet step
[0111] Now, d [0112] in order to be scaled. [0113] The binary form of d [0114] If we now divide d [0115] Let us call the bit, which located on the write-side of the floating point the “Half Bit”. Observe that the Half Bit of d [0116] HalfBit(n)=d [0117] By saving d (n) and HalfBit (n) we can restore back d [0118] In the proposed transform, this Half-bit is needed in the HH-subband coefficient computation. Therefore in our wavelet decomposition for every HH-subband coefficient (in all scales) there is a corresponding bit, which is the coefficient's Half-bit. [0119] The Half bit matrix is hidden in the HH-subband in the description of FIGS. 18, 19 and [0120] We now present our integer-to-integer versions of the Haar transform and the CDF (1,3) transform for the 2-dimensional case. [0121] 3.1 Reversible Haar and (CDF) (1,3) Transforms [0122] 3.1.1Haar Transform [0123] With respect to FIG. 19: [0124] 3.1.1.1 Step [0125] Forward Step
[0126] Inverse Step [0127] With respect to FIG. 20: [0128] 3.1.1.2 Step [0129] Remarks: [0130] 1. s(n) is a scaled LL-subband coefficient. [0131] 2. s(n) and d [0132] Inverse Step
[0133] With respect to FIG. 20: [0134] 3.1.1.3 Step [0135] Remark: d [0136] in the “real mathematical scale”, and it is the [0137] least significant (from the approximation point of view). [0138] Inverse Step
[0139] 3.1.2 CDF (1,3) Transform [0140] 3.1.2.1 Step [0141] With respect to FIG. 19: [0142] Forward Step
[0143] Inverse Step [0144] With respect to FIG. 20: [0145] 3.1.2.2 Step 2001: Y-direction-Low Forward Step
[0146] Remark: See remarks for (3.22). [0147] Inverse Step
[0148] With respect to FIG. 20: [0149] 3.1.2.3 Step [0150] Inverse Step
[0151] We now compute the approximation error probabilities of our method, and show that it is significantly smaller. We start with the LL-subband error. Assuming e [0152] where [0153] ll [0154] e [0155] e′ and e″ are random variables with P.D.F. defined in (3.6). [0156] x [0157] ll [0158] Consequently
[0159] By knowing that e [0160] Now we can easily evaluate the approximation error of the 3 other subbands:
[0161] where [0162] lh [0163] lh [0164] e′″ is a random variable with P.D.F. defined in (3.6).
[0165] all other symbols are defined like in (3.32). [0166] Hence
[0167] Similar estimation can be done for the HL and the HH subbands. [0168] The error estimation (for all subbands) are summarized in the following table where the error is the difference between the normalized (in L
[0169] The meaning of this result is that in a low bit-rate, where only large coefficients are encoded, this error is negligible. [0170] 4. Imaging Protocol and Distributed Database [0171] Dividing the Data into Tiles and Bit-Planes [0172] For the purpose of efficient rendering the coefficients may be sub-divided into tiles. The tiles of this invention differ from previous art as shown in FIG. 12. As in the lossy algorithm, here also the subband tiles are further decomposed to subband data blocks. Each data block of lossless subband tile (FIG. 12) will have a 4D coordinate (t_x, t_y, t_resolution,t_bitPlane) [0173] where 0≦t_bitPlane≦maxBitPlane(t_resolution). [0174] Each data block contains the following data in encoded format: [0175] 1. Fort_bitPlane ≧2: [0176] a. A list of the indices of all subband coefficients whose absolute value is in the range [2 [0177] b. The sign of all the coefficients of a. [0178] c. For t_bitPlane>2, an additional precision bit for any coefficient that belongs to the current bit plane or any higher bit plane. [0179] 2. For t_bitPlane=1, which we call the “least significant bit plane”: [0180] a. A list of the indices of HL-subband and HH-subband coefficients whose absolute value belongs to the set {−1, 0,1}. [0181] b. A “zero flag” for each coefficient of a, which indicates if the coefficient is equal to zero or not. [0182] c. The sign of all the coefficients of a, whose “zero flag” is false. [0183] d. The LSB of the HL-subband and HH-subband coefficients that belong to higher bit plane. [0184] Remark: [0185] Since the LH-subband contains only even coefficients, their LSB must be zero and is not coded. [0186] 3. For t_bitPlane=0, which we call the “half bit plane”, a matrix of
[0187] bits associated with HH-subband coefficients as their last “half bit” (See (3.24) or (3.30)). [0188] [0189] 5.1 The Encoding Algorithm [0190] The encoding algorithm of the present invention is performed at the server [0191] The lossless algorithm receive as input the following parameters:
[0192] The coding strategy is similar in some sense to that described in A. Said and W. Pearlman, “A new, fast and efficient image codec based on set partitioning”, IEEE Trans. Circuits and Systems for video Tech., Vol. 6, No. 3, pp. 243-250, 1996, but the preferred embodiment uses no “Zero Tree” data. For all the data blocks with t_bitPlane ≧2, we use the lossy encoding algorithm described in previous art with the parameters: [0193] coef :=coef (The lossy parameter coef initialized with the lossless parameter coef) [0194] equalBinSize :=True ε [0195] Remark: The lossy algorithm encodes all the bit-plane information for t_bitPlane≧2. [0196] For t_bitPlane≦1, i.e. the least significant bit plane (of the lossless algorithm) and the half bit plane, we use a different algorithm described in 5.1.3. [0197] [0198] The lossless encoding algorithm initialization is the same as the lossy algorithm of §4.1.1 in the above-cited Ser. No. 09/386,264, which disclosure is incorporated herein by reference. In order to initialize the encoding algorithm, the following procedure is performed: [0199] 1. Assign to each coefficient coef (x,y) its bit plane b(x,y) such that: |coef ( [0200] 2. Compute the maximum bit plane over all such coefficients:
[0201] 3. Write the value of maxBitPlane(tile) using one byte as the header of the data block: [0202] (t_x,t_y,t_resolution, maxBitPlane (t_resolution)) [0203] 4. Initialize all the coefficients as members of their corresponding Type16 group. [0204] 5. Initialize a list of significant coefficients to be empty. [0205] 6. Initialize a coefficient approximation matrix coef as zero. [0206] 5.1.2 The Outer Loop [0207] The outer loop of the encoding algorithm scans the bit planes from b=maxBitPlane (tile) to b=0. The output of each such bit plane scan is the subband data block. Since the last stage of the encoding algorithm is arithmetic encoding of given symbols, at the beginning of each scan the arithmetic encoding output module is redirected to the storage area allocated for the particular data block. Once the bit plane scan is finished and the data block has been encoded, the output stream is closed and the bit plane b is decremented. After the outer loop is finished the following stages are performed: [0208] 1. Least significant bit plane is encoded (t_bitPlane=1). [0209] 2. Half bit plane is encoded (t_bitPlane=0). [0210] The output of the least significant bit plane scan is the data block (FIG. 14): [0211] (t_x,t_y, t_resolution, t_bitPlane=1). [0212] The half bit plane data block is: [0213] (t_x, t_y, t_resolution, t_bitPlane=0). [0214] 5.1.3 Bit-Plane Scan [0215] For t_bitPlane≧2, the framework of the bit plane scan is described in FIG. 24, while the pseudo code is given in the above-cited Ser. No. 09/386,264, which disclosure is incorporated herein by reference. The scan, for a given level b (b ≧2), encodes all of the coefficients data corresponding to the absolute value interval [2 [0216] Remark: The encoder method is LastBitPlane ( ) is associated to the t_bitPlane=2. [0217] For the least significant bit plane, a pseudo code is described in FIG. 15, while a flow chart is described in FIG. 22. [0218] Explanations to the least significant bit encoding algorithm: [0219] 1. The coefficients scanning procedure, i.e. moreCoef ( ) procedure in FIG. 15 or “More coefficients?” in FIG. 22 includes all the coefficients belong to the HH and the HL-subband (FIG. 14). The LH-subband is skipped, since the least significant bit of each coefficient in it is zero (see remark 2 for (3.22)). [0220] 2. The procedure is CoefReporeted ( ) (“Is coefficient reported?” in the flow chart) returns false if the coefficient is one of {−0,1,1}, i.e. in all higher bit plane scans it was insignificant, otherwise it returns true. [0221] 3. The procedure is CoetExactZero ( ) (“Coefficient is zero?” in the flow chart) returns true iff the coefficient is zero. [0222] 4. The procedure getCoefSign ( ) returns the coefficient's sign. [0223] For the half bit plane, a pseudo code is described in FIG. 16. [0224] 5.2 The Decoding Algorithm [0225] Obviously, this algorithm is a reversed step of the encoding algorithm of section 5. 1, performed in the server
[0226] For all the data blocks with t_bitPlane≧2, a “lossy” decoding algorithm is utilized. The input parameters for the lossy algorithm are: [0227] coef:=coef [0228] equalBinSize:=True [0229] ε [0230] 5.2.1 Decoding Algorithm Initialization [0231] 1. Assign to each coefficient Coef (x, y) the value zero. [0232] 2. Assign to each bit belongs to the HalfBit matrix the value zero. [0233] 3. Initialize all the coefficients as members of their corresponding Type16 group. [0234] 4. Initialize the list of significant coefficients to be empty. [0235] 5. If the “first” data block [0236] (t_x,t_y, t_resolution, maxBitPlane (t_resolution)) [0237] is available at the client, read the first byte, which is the value of maxBitPlane (tile). [0238] 5.2.2 The Outer Loop [0239] Upon the completion of the outer loop in 5.1.2the following stages are preformed: [0240] 1. The decoding algorithm scans the least significant bit plane. The input to this stage is encoded data block (t_x, t_y, t_resolution, LeastSiginificant_bitPlane). [0241] 2. The decoding algorithm scans the half bit plane. The input to this stage is encoded data block (t_x, t_y, t_resolution, Half_bitPlane). [0242] 5.2.3 Bit Plane Scan [0243] The preferred embodiment follows the lossy prior art of the above-cited Ser. No. 09/386,264, which disclosure is incorporated herein by reference, for t_bitPlane≧2. The scan, for a given level b, decodes all of the coefficients' data corresponding to the absolute value interval [ε2 [0244] Explanations to the Pseudo Code: [0245] 1. The decoder's method moreCoef ( ) scans all the coefficients in the HH, HL and LH subband. But, since the LH-subband is skipped in the encoding algorithm, we don't call to decodeSymbol ( ) for its coefficients. Instead of this, we update their least significant bit as zero. [0246] 2. Recall that LH-subband coefficients that have not been reported until the least significant bit-plane must be zero since they are known to be even. [0247] 6. Client Workflow [0248] With reference to FIG. 4, we describe the workflow at the client unit [0249] 6.1 Step [0250] The imaging module on the client computer
[0251] The basic parameters of a ROI are worldPolygon and scale which determine uniquely the ROI view. If the ROI is to be rendered onto a viewing device with limited resolution, then a worldPolygon containing a large portion of the image will be coupled by a small scale. In the case where the rendering is done by a printer, the ROI could be a strip of a proof resolution of the original image that has arrived from the server computer [0252] The parameter luminanceMap is typically used in medical imaging for grayscale images that are of higher resolution than the viewing device. Typically, screens display grayscale images using 8 bits, while medical images sometimes represent each pixel using 16 bits. Thus, it is necessary to map the bigger pixel range to the smaller range of [0,2559]. [0253] Lastly, the parameter progressiveMode determines the order in which data blocks should be transmitted from the server [0254] The “Progressive by Spatial Order” mode is designed, for example, for a “print on demand” feature where the ROI is actually a low resolution “proof print” of a high resolution graphic art work. In this mode the image data is ordered and received in a top to bottom order, such that printing can be done in parallel to the transmission. [0255] However, since lossless compression is mostly required in medical images transmission, where typically more than 8 bits images are used, we amplify our discussion on the curve (luminanceMap hereinabove) which defines the mapping from the original image gray scale range (typically 10,12,16 bits) to an 8-bit screen. Further more, in medical images viewing, regardless of the original image depth, mapping is required in order to control the brightness and contrast of the image. [0256] 6.1.1 Luminance Mapping [0257] Mapping from original image depth (e.g. 10,12,16 bits ) to screen depth (typically 8-bits), is defined by a monotonic function (FIG. 17): f:[0,2 [0258] The curve influences not only the mapping, i.e. the drawing to the screen, but also the request from the server. To understand that, let us concentrate in the maximal gradient of the curve (FIG. 17). In a lossy mode, the request is created such that the image approximation in the client side is close enough to the original image, i.e., the RMS (Root Mean Square Error) is visually negligible. When a curve (mapping function) is applied, the RMS can be increased or reduced. The maximal RMS increasing factor depends on the maximal gradient of the curve as follows:
[0259] where [0260] I is the original image [0261] Î is the approximated image [0262] f is the mapping function
[0263] max (f′) is the maximal gradient of the curve. [0264] We consider the worst case of the RMS increasing factor i.e.: [0265] RMS_increasing_factor=Maximal_gradient=max (f′) [0266] If the RMS increasing factor is greater than 1, it means that the “new RMS” may be greater than we consider as visually negligible error. Thus, the request list should be increase (more bit-planes should be requested from the server) in order to improve the approximation accuracy. Conversely, if the RMS increasing factor is smaller than 1, the request listing can be reduced. The exact specification of this is given in the following section. [0267] 6.2 Step [0268] In step
[0269] Once it has been determined which subband tiles participate in the rendering of the ROI, it is necessary to find which of their data blocks are visually significant and in what order they should be requested. Using well known rate/distortion rules from the field of image coding (such as is described in S. Mallat and F. Falzon, “Understanding image transform codes”, Proc. SPIE Aerospace Conf., 1997), it is not too difficult to determine an optimal order in which the data blocks should be ordered by the client imaging module (and thus delivered by the server [0270] First, the subband coefficients with largest absolute values are requested since they represent the most visually significant data such as strong edges in the image. Notice that high resolution coefficients with large absolute value are requested before low resolution coefficients with smaller absolute value. Within each given layer of precision (bit plane) the order of request is according to resolution; low resolution coefficients are requested first and the coefficients of highestSubbandResolution are requested last. [0271] The main difficulty of this step is this: Assume a subband tile is required for the rendering of the ROI. This means that t_resolution≦dyadicResoltition(ROI) and the tile is required in the IWT procedure that reconstructs the ROI. It must be understood which of the data blocks associated with the subband tile represent visually insignificant data and thus should not be requested. Sending all of the associated data blocks will not affect the quality of the progressive rendering. However, in many cases transmitting the “tail” of data blocks associated with high precision is unnecessary since it will be visually insignificant. In such a case, the user will see that the transmission of the ROI from the server [0272] Additionally, the influence of the luminance mapping on the accuracy level of the requested data block as described below. Supposing for some t_x,t_y and t_resolution, the set [0273] {(t_x,t_y,t_resolution,t_bitPlane)|T≦t_bitPlane≦maxPlaneBit(t_resolution)} is requested where T is the minimal bit plane required to the current view. Here, where the luminance mapping is taken in account, the value of T might be increased or decreased. [0274] The number of bit planes reduced (added) from the request list is
[0275] I.e., for those t_x,t_y and t_resolution mentioned before, the following set is requested: [0276] {(t_x,t_y,t_resolution, t_bitPlane) T′≦t_bitPlane≦maxPlaneBit (t_resolution)} [0277] where
[0278] 1. Given [0279] Image depth of 12-bit [0280] Screen depth of 8-bit [0281] Linear luminance mapping, I.e.,
[0282] The number of bit planes reduced from the request list is:
[0283] 2. Given a luminance mapping with Maximal gradient=2 [0284] The number of bit planes reduced from the request list is:
[0285] Thus one bit plane is added to the original set. [0286] 6.3 Step [0287] The client imaging module in the client computer {(t_x,t_y,t_resolution,t_bitPlane), n [0288] Each such structure represents the n {( [0289] The encoding algorithm attempts to create the shortest possible list of structures, collecting the data blocks to the largest possible rectangles can do this. It is important to note that the algorithm ensures the order of data blocks in the request list is not changed, since the server (t_resolution, t_bitPlane). [0290] 6.4 Step [0291] The client computer [0292] Recall that the subband tile associated with each data block is denoted by the first three coordinates of the four coordinates of a data block (t_x,t _y,t_resolution). From the subband tile's coordinates the dimensions are calculated of the area of visual significance; that is, the portion of the ROI that is affected by the subband tile. Assume that each subband tile is of length tileLength and that the wavelet basis used has a maximal filter size maxFilterSize, then defining hFilterSize:=[maxFilterSize/2] and factor :=numberOfResolutions-t_resolution+1,we have that the dimensions of the affected region of the ROI (in the original image's coordinate system) are [t [t [0293] These dimensions are merged into the next rendering operation's region. The rendering region is used to efficiently render only the updated portion of the ROI. [0294] 6.5 Progressive Rendering [0295] During the transmission of ROI data from the server to the client, the client performs rendering operations of the ROI. To ensure that these rendering tasks do not interrupt the transfer, the client runs two program threads: communications and rendering. The rendering thread runs in the background and draws into a pre-allocated “off-screen” buffer. Only then does the client use device and system dependant tools to output the visual information from the “off-screen” to the rendering device such as the screen or printer. [0296] The rendering algorithm performs reconstruction of the ROI at the highest possible quality based on the available data at the client. That is, data that was previously cached or data that “just” arrived from the server. For efficiency, the progressive rendering is performed only for the portion of the ROI that is affected by newly arrived data. Specifically, data that arrived after the previous rendering task began. This “updated region” is obtained using the method of step [0297] The parameters of the rendering algorithm are composed of two sets: [0298] 1. The ROI parameters described in Table 3. [0299] 2. The parameters transmitted from the server explained in Table 5, with the exception of the jumpSize parameter, which is a “server only” parameter. [0300] The rendering algorithm computes pixels at the dyadic resolution dyadicRresoliltion(ROI). Recall that this is the lowest possible dyadic resolution that is higher than the resolution of the ROI. The obtained image is then resized to the correct resolution. Using a tiling of the multiresolution representation of the ROI, the steps of the algorithm are performed on a tile by tile basis as described in FIG. 11. Since the tiles' length are tileLength, which is typically chosen as 64, the rendering algorithm is memory efficient. [0301] 6.5.1 The Rendering Rate [0302] As ROI data is transmitted to the client [0303] 6.5.2 Memory Constraint Subband Data Structure [0304] This data-structure is required to efficiently store subband coefficients, in memory, during the rendering algorithm. This is required since the coefficients are represented in long integer (lossless coding mode) or floating-point (lossy coding mode) precision which typically require more memory than pixel representation (1 byte). In lossy mode, the coefficients at the client side [0305] At the beginning of the rendering algorithm, coefficient and pixel memory strips are initialized. dyadicWidth(ROI) may be denoted as the width of the projection of the ROI onto the resolution dyadicResolution(ROI). For each component and resolution 1<j≦dyadic Re solution (ROI), four subband strips are allocated for the four types of subband coefficients: hl,lh,hh and HalfBit. The coefficient strips are allocated with dimensions
[0306] For each component and resolution 1≦j<dyadicResolittion a pixel strip is allocated with dimensions
[0307] Beginning with the lowest resolution 1, the algorithm proceeds with a recursive multiresolution march from the top of the ROI to bottom (y direction. Referring to FIGS. 10 and 11, in step [0308] [0309] The subband coefficients data structure described previously in section 6.5.2 is filled on a tile basis. Each such subband tile is obtained by decoding the corresponding data blocks stored in the database or reading from the memory cache. The memory cache is used to store coefficients in a simple encoded format. The motivation is this: the decoding algorithm described previously in section 5.2 is computationally intensive and thus should be avoided whenever possible. To this end the rendering module uses a memory cache [0310] 6.5.4 Step [0311] This is an inverse step to step [0312] Remark: Recall from 5.1.1 that the “half bits” are initialized as zeros, therefore the inverse step is well defined even if their “real” value is not available in the client yet. [0313] 6.5.5 Step 1103: Inverse Color Transform [0314] This is an inverse step to step [0315] 6.5.6 Step [0316] In case the resolution of the ROI is not an exact dyadic resolution, the image obtained by the previous step must be re-sized to this resolution. This can be accomplished using operating system imaging functionality. In most cases the operating system's implementation is sub-sampling which produces in many cases an aliasing effect which is visually not pleasing. To provide higher visual quality, the imaging system of the present invention may use the method of linear interpolation, for example described in J. Proakis and D. Manolakis, “Digital signal processing”, Prentice Hall, 1996. The output of the interpolation is written to the off-screen buffer. From there it is displayed on the screen using system device dependant methods. [0317] 6.5.7 Step [0318] When luminanceMap is active mapping to 8-bit screen is performed using the mapping function described in 6.1.1. [0319] 7. Server Workflow [0320] With reference to [0321]FIG. 5, the operation of the server computer [0322] Once the client computer [0323] In step [0324] In step [0325] If the ROI is a high-resolution portion of the image, the server, in step [0326] 7.1 Step [0327] The preprocessing step is now described with respect to [0328]FIG. 6. The preprocessing algorithm's goal is to provide the fastest response to the user's request to interact with the image. Once this fast computational step is performed, the server is able to provide efficient “pixel-on-demand” transmission of any client ROI requests that will follow. In most cases the first ROI is a view of the full image at the highest resolution that “fits” the viewing device. The preprocessing algorithm begins with a request for an uncompressed image that has not been processed before or has been processed but the result of this previous computation has been deleted from the cache. As explained, this unique algorithm replaces the possibly simpler procedure of encoding the full image into some progressive format. This latter technique will provide a much slower response to the user's initial request then the technique described below. At the end of the algorithm a “ready to serve ROI of the image” message is sent to the client containing basic information on the image. While some of this information, image dimensions, original color space, resolution etc., is available to the user of the client computer, most of this information is “internal” and required by the client to formulate ROI request lists (§6.2) and progressively render (§6.5). Next we describe in detail the preprocessing algorithm. [0329]
[0330] Given an input image, the parameters described in Table 7 are computed or chosen. These parameters are also written into a header sent to the client [0331] 1. losslessMode: In this mode, progressive transmission of images takes place until lossless quality is obtained. Choosing this mode requires the preprocessing algorithm to use certain reversible wavelet transforms, and can slow down the algorithm. [0332] 2. subbandtransformType(j): The (dynamic) selection of wavelet basis (as described, for example, in 1. Daubechies, “Ten lectures on wavelets”, Siam, 1992) is crucial to the performance of the imaging system. The selection can be non-stationary, meaning a different transform for each resolution j. The selection is derived from the following considerations: [0333] a. Coding performance (in a rate/distortion sense): This is obviously required from any decent subband/wavelet transform. [0334] b. Approximation of ideal low pass: It is favorable to choose a transform such that low resolutions of the image will be of high visual quality (some filters produce poor quality low resolutions even before any compression takes place). [0335] c. Fast transform implementation: Can the associated fast transform be implemented using lifting steps (as described, for example, by I. Daubechies and W. Sweldens, “Factoring wavelet transforms into lifting steps”, J. Fourier Anal. Appl., Vol. 4, No. 3, pp. 247-269, 1998), using only integer shifts and additions, etc. Some good examples are the Haar and CDF transforms (1,3), (2,2)*** described in 1. Daubechies, “Ten lectures on wavelets”, Siam, 1992. [0336] d. Fast low pass implementation: A very important parameter, since together with the parameter jumpSize, it determines almost all of the complexity of the algorithm. For example, the CDF (1,3) is in this respect the “optimal” transform with three vanishing moments. Since the dual scaling function is the simple B-spline of order 1, its low pass is simple averaging. Thus, the sequence of CDF transforms, using the B-spline of order 1 as the dual scaling function, but with wavelets with increasing number of vanishing moments are in some sense optimal in the present system. They provide a framework for both real time response and good coding efficiency. [0337] e. Lossless mode: If losslessMode is true we must choose the filters from a subclass of reversible transforms (see, for example, “Wavelet transforms that map integers to integers”, A. Calderbank, I. Daubechies, W. Sweldens, B. L. Yeo, J. Fourier Anal. Appl., 1998). [0338] f. Low system I/O: If the network [0339] g. Image type: If the type of the image is known in advance, an appropriate transform can be chosen to increase coding efficiency. For example: Haar wavelet for graphic images, smoother wavelet for real-life images, etc. In the graphic arts field, there are numerous cases of documents composed of low resolution real-life images and high resolution graphic content. In such a case, a non-stationary sequence of transforms may be chosen: Haar for the high resolutions and a smoother basis starting at the highest resolution of a real-life image part. In case of low system I/O (f), a non-stationary choice of interpolating transforms of different orders is required. [0340] 3. jumpSize: This parameter controls the tradeoff between fast response to the user's initial request to interact with the image and response times to subsequent ROI requests. When jumpSize is large, the initial response is faster, but each computation of a region of interest with higher resolution than the jump might require processing of a large portion of the original image. [0341] 4. InputColorSpace: The input color spaces supported in lossless mode are: [0342] a. Grayscale: For grayscale images [0343] b. RGB [0344] 5. outputColorSpace: The following are color spaces which perform well in coding: [0345] a. Grayscale: For grayscale images [0346] b. YUV: for viewing color images [0347] Referring to Table 7 [LP], losslessMode is set to true. Threshold (c,j) is not in use, since in lossless mode, there is no thresholding. The rest of the variables have the same meaning as in the lossy algorithm. [0348] 7.1.2 Memory Constraint Multiresolution Scan Data Structure [0349] Most wavelet coding algorithms have not addressed the problem of memory complexity. Usually the authors have assumed there is sufficient memory such that the image can be transformed in memory from the time domain to a wavelet frequency domain representation. It seems the upcoming JPEG2000 will address this issue, as did its predecessor JPEG. The preprocessing algorithm also requires performing subband transforms on large images, although not always on the full image, and thus requires careful memory management. This means that the memory usage of the algorithm is not of the order of magnitude of the original image, as described in J. M. Shapiro, “An embedded hierarchical image coder using zero-trees of wavelet coefficients”, IEEE Trans. Sig. Proc., Vol. 41, No. 12, pp. 3445-3462, 1993. [0350] Given an uncompressed image we allocate the following number of memory strips numberOfComponents×(numberOfResolutions−jumpSize) [0351] of sizes [2 [0352] for 1≦j≦numberOfResolutions−jumpSize−1 and [imageWidth, tileLength+2×maxFilterSize] [0353] for j=numberOfResolutions−jumpSize [0354] That is, the memory usage is proportional to 2 [0355] Referring to FIG. 6, during the preprocessing stage, the resolutions are scanned simultaneously from start to end in the y direction. For each color component and resolution, the corresponding strip stores low-pass coefficients or pixels at that resolution. The core of the preprocessing algorithm are steps [0356] 7.1.3 Step [0357] This step is uses the conversion formula described in FIG. 13. This step must be performed before step [0358] 7.1.4 Step [0359] The motivation for the low pass step is explained in §6.1.4 in the above-cited Ser. No. 09/386,264, which disclosure is incorporated herein by reference. In a lossless mode there are a few emphasis that are represented here. [0360] In step [0361] numberOfResolutions−jumpSize<j≦numberOfResolutions, are used to obtain a low resolution strip at the resolution numberOfResolutions−jumpSize (as can be seen in FIG. 26). Typically, it is required to low pass about 2 [0362] In the lossless mode of operation, the jumpSize parameter defines the number of lossless wavelet low pass steps should be done. A single low pass step is the same for Haar and CDF (1,3) and defined by the following two stages (taken from (3.20) and (3.22):
[0363] Y-direction: s(n)=X(2n)+X(2n+1). [0364] Namely, in a 2D representation, the low pass step is defined by
[0365] ForjumpSize=1 and jumpSize=2 (other sizes practically are not needed), the server performs these steps efficiently (almost like the lossy algorithm) by a single operation that simulates exactly jumpSize low pass steps defined in (7.1). As noticed from (7.1), the simplicity of the formula makes filters such as Haar and CDF (1,3) “optimal” in the respect of low pass efficiency. [0366] 7.1.5 Step [0367] In Step [0368] The subband transform of step [0369] Remark: Tiles of pixels which are located on the boundaries sometimes need to be padded by extra rows and/or columns of pixels, such that they will formulate a “full” tile of length tileLength. [0370] 7.1.6 Step [0371] 7.1.7 Step [0372] In step [0373] A tile of an image component c at the resolution j is quantized using the given threshold threshold(c,j): for each coefficients x, the quantized value is └x/threshold (c,j)┘. It is advantageous to choose the parameters threshold (c,j) to be dyadic such that the quantization can be implemented using integer shifts. The quantization procedure performed on a subband tile is as follows: [0374] 1. Initialize maxBitPlane(tile)=0. [0375] 2. Loop over each group of four coefficients {coef (2×i+x, 2×j+y)} [0376] 3. Quantize each coefficient in the group coef (2×i+x, 2×j+y) using the appropriate threshold. [0377] 4. For each coefficient, update length(i,j) by the bit plane b of the coefficient, where the bit plane is defined by |coef (2×i+x,2×j+y)|ε└2 [0378] 5. After processing the group of four coefficients, use the final value of length (i,j) to update maxBitPlane (tile) by maxBitPlane(tile)=max(maxBitPlane(tile),length (i,j)) [0379] 6. At the end of the quantization step, store the value maxBitPlane(tile) in the cache [0380] Note that for subband tiles located at the boundaries we can set to zero subband coefficients that are not associated with the actual image, but only with a padded portion. To do this we take into account the amount of padding and the parameter maxFilterSize. The motivation for the “removal” of these coefficients is coding efficiency. [0381] 7.2 Step [0382] This is the inverse step of section 6.3. Once the request stream arrives at the server [0383] 7.3 Step [0384] Step [0385]FIG. 7. It is only performed whenever the data blocks associated with low-resolution subband tile are not available in the server cache [0386] Step [0387] 1. If maxBitPlane(tile)=0, then all the coefficients are set to zero including the HalfBit subband. [0388] 2. If maxBitPlane(tile)=1, then all the coefficients are set to zero, and the HalfBit subband coefficient are read bit by bit from cache. [0389] 3. Else, as performed in 2, the HalfBit subband coefficient are read bit by bit from cache, and we perform the following simple decoding algorithm: [0390] For each group of four coefficients {coef(2×i+x, 2×j+y)} [0391] Assume the variable length is length(i,j). For each of the four coefficients we then read length(i,j)+1 bits. The least significant bit represents the sign. The reconstructed coefficient takes the value:
[0392] In step [0393] 7.4 Step [0394] Step [0395] 7.5 Step [0396] In the final step, the encoded data tiles are sent from the server [0397] The present invention has been described in only a few embodiments, and with respect to only a few applications (e.g., commercial printing and medical imaging). Those of ordinary skill in the art will recognize that the teachings of the present invention may be used in a variety of other applications where images are to be transmitted over a communication media Referenced by
Classifications
Legal Events
Rotate |