text:
|Publication number
|Publication type
|Application number
|Publication date
|Apr 17, 2007
|Filing date
|Nov 17, 2005
|Priority date
|Oct 12, 2000
|Fee status
|Also published as
|Publication number
|Charles K. Chui, Hong-Ye Gao, Lefan Zhong
|Original Assignee
|Zoran Corporation
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (17), Referenced by (14), Classifications (89), Legal Events (6)
|External Links: USPTO, USPTO Assignment, Espacenet
This application is a division of U.S. patent application Ser. No. 10/969,495, filed Oct. 19, 2004 now U.S. Pat. No. 6,978,049; which was a division of U.S. patent application Ser. No. 10/347,422, filed Jan. 17, 2003, now U.S. Pat. No. 6,807,308; which was a continuation of U.S. patent application Ser. No. 09/687,467 filed Oct. 12, 2000, now U.S. Pat. No. 6,549,674 B1, all of which are hereby incorporated by reference.
The present invention relates generally to the processing, compression, communication and storage of images in computer systems, personal digital assistants, digital cameras and other devices, and particularly to an image management system and method in which digitally encoded images can be viewed in any specified window size and at a number of resolutions, and can be printed, cropped, and otherwise manipulated.
An image may be stored at a number of resolution levels. The encoded image data for a lower resolution level is smaller, and thus takes less bandwidth to communicate and less memory to store than the data for a higher resolution level. When an image is stored for multi-resolution use, it would be desirable for the image data to be segregated into an ordered group of sets or subfiles, where each additional subfile provides the additional data needed to increase the resolution of the image from one level to the next. Further, it would be desirable for the quantity of image data in each subfile, for increasing the image resolution by a particular factor (such as 4), to be approximately proportional to the associated increase in resolution. For instance, if each resolution level differs from its neighboring resolution levels by a factor of 4 (e.g., level 0: 32�32, level 1: 64�64, level 2: 128�128, and so on), then the quantity of encoded image data for each resolution level should be approximately 25% as much as the quantity of encoded image data for the next higher resolution level. From another viewpoint, the quantity of data in the subfile(s) used to increase the image resolution from a first level to the next should, ideally, be approximately three times as much as the quantity of data in the subfile(s) for the first level.
It is well known that wavelet compression of images automatically generates several resolution levels. In particular, if N "layers" of wavelet transforms are applied to an image, then N+1 resolution levels of data are generated, with the last LL subband of data comprising the lowest resolution level and all the subbands of data together forming the highest resolution level. For convenience, the "layers" of wavelet transforms will sometimes be called "levels". Each of these resolution levels differs from its neighbors by a factor of two in each spatial dimension. We may label these resolution levels as Level 0 for the lowest, thumbnail level to Level N for the highest resolution level, which is the resolution of the final or base image.
A first aspect of the present invention is based on two observations. The first such observation is that, when using conventional as well as most proprietary data compression and encoding methods, the quantity of data in the N levels generated by wavelet compression tends to decrease in a geometric progression. For instance, the quantity of data for resolution Level 0 is typically about 80% of the quantity of data for resolution Level 1, whereas ideally it should about 25% of the quantity of data for resolution Level 1. As a result, the data for Level 0 contains significantly more data than is needed to display the Level 0 image. Alternately stated, the data for Level 0 gives unnecessarily high quality for the low resolution display at Level 0, and therefore gives less compression than could potentially be obtained by providing only the information needed for displaying the image at the Level 0 resolution level.
The second observation is that the low resolution image data coefficients are quantized for full resolution display, not for low resolution display, because these data coefficients are used not only for generating a low resolution representation of the image, but are also used when generating the higher resolution representations of the image.
In accordance with this first aspect of the present invention, as already indicated above, it would be desirable for the quantity of image data in the subarray or subfile for each resolution level to be approximately proportional to the increase in resolution associated with that resolution level.
A second aspect of the present invention is based on the observation that wavelet transforms are conventionally applied across tile or block boundaries of an image to avoid tile or block boundary artifacts in the regenerated image. A wavelet transform may be implemented as a FIR (finite impulse response) filter having an associated length. The "length" indicates the number of data samples that are used to generate each coefficient. Wavelet transforms are generally symmetric about their center, and when the filter that implements the wavelet transform is at the edge of a tile or block, typically half or almost half of the filter will extend into a neighboring block or tile. As a result it is usually necessary to keep not only part of the neighboring tiles in memory while wavelet transforming a tile of an image, it also necessary to keep in memory the edge coefficients of the neighboring tiles for each level of the wavelet transform. Thus, avoiding tiling effects (also called tile border effects or artifacts or edge artifacts) typically increases the memory requirements of the computer or device performing the wavelet transforms on an image, and may also increase the complexity of the transform procedure because of the need to keep track of the memory locations of edge data and coefficients from the neighboring tiles or blocks. In accordance with the second aspect of the present invention, it would be highly desirable to have a wavelet or wavelet-like transform that can be applied to just the data for the image block being processed, without having to also apply the transform to data from neighboring blocks, and without creating noticeable edge artifacts. Having such a transform would decrease memory requirements and might simplify the wavelet compression of images.
It is well known in the prior art that digital images can be processed a portion at a time, instead of all at once, thereby reducing memory requirements. For instance, the DCT transform used for JPEG compression and encoding of images is traditionally used on tiles of 8�8 pixels. However, a well known problem with tiling an image for processing is that the tiling produces undesirable tile border effects. The border effects of DCT tiling in JPEG images are considered to be acceptable because the very small size of the tiles makes the tiling effect relatively unnoticeable to the human eye.
However, using very small tiles such as 8�8 pixels is not practical when using wavelet or wavelet-like transforms in place of the DCT transform. Wavelet-like transforms have been shown to provide significantly better data compression than the DCT transform, and therefore using wavelet-like transforms would be desirable if the tiling effect can be avoided while using a moderate amount of working memory.
It would therefore be desirable to provide an image processing system and method that process images using a moderate amount of working memory, such as 8 to 20 KB, by transforming the image data using a wavelet-like transform with moderately sized tiles, such as tiles of 64�64, or 32�32, or 64�32 pixels, while at the same time avoiding the generation of undesirable tiling (tile border) effects.
A third aspect of the present invention is based on the observation that the optimal quantization level to be applied to wavelet coefficients not only varies from one transform subband to another, but also varies from one region of an image to another. In particular, regions of an image that contain many "features" (typically characterized by horizontal or vertical lines or edges) are harder to compress than regions with fewer features. That is, such densely featured image regions cannot be compressed as much as less densely featured regions without causing degradation in the quality of the image regions regenerated from the compressed data. It would therefore be desirable to provide an image compression and encoding system with a quantization procedure that uses smaller quantization divisors to quantize the wavelet coefficients of heavily featured regions than the quantization divisors used to quantize the wavelet coefficients of regions having fewer features.
In summary, the present invention is an image processing system and method for applying a family of predefined transforms, such as wavelet-like transforms, to the image data for an image so as to generate transform image data and for applying a data compression method to the transform image data so as to generate an image file. The image processing system and method tiles a captured image, processing the tiles in a predefined order. The tiles are nonoverlapping portions of the image data. Each tile of image data is processed by applying a predefined family of transform layers to the tile of image data so as to generate successive sets of transform coefficients. In a preferred embodiment, the transform layers are successive applications of a family of wavelet-like decomposition transforms, including edge filters applied to data at the boundaries of the data arrays being processed and interior filters applied to data in the interior regions of the data arrays.
The set of transform coefficients processed by each transform layer include edge coefficients positioned at outside boundaries of the set of transform coefficients and non-edge coefficients positioned at interior locations of the set of transform coefficients. The sets of transform coefficients include a last set of transform coefficients, produced by the last transform layer, and one or more earlier sets of transform coefficients.
The transform filters used include one or more edge transform filters applied to image data at boundaries of the tile and to coefficients positioned at and near boundaries of each of the earlier sets of transform coefficients so as to generate the edge coefficients, and one or more interior filters applied to image data at interior locations of the tile and to coefficients at interior locations of the earlier sets of transform coefficients so as to generate the non-edge coefficients. The edge transform filters have shorter filter supports than the interior transform filters, and both the edge transform filters and the longer interior transform filters are applied only to image data within the tile and only to transform coefficients within the earlier sets of transform.
The edge filters include a short, low spatial frequency filter that weights the image datum closest to the boundary of the tile and the transform coefficient closest to the boundary of each earlier set of transform coefficients so as to as enable regeneration of the image from the transform coefficients without tile boundary artifacts.
At least some of the transform filters are preferably asymmetric boundary filters, extending to a first extent toward each tile's boundary, and extending to a second, longer extent in a direction away from the tile's boundary, but not extending over the tile's boundary.
In a preferred embodiment, the interior transform filters include a center filter, for generating two to four high pass and two to four low pass coefficients at or near the center of the data array being processed. The center filter acts as a filter switch. Two distinct forms of the interior filter are used on alternate sides of the center filter. For instance, the interior filter may be centered on even data positions on one side of the center filter and centered on odd data positions on the other side of the center filter.
The image processing system and method may also include image reconstruction circuitry or procedures for successively applying a data decompression method and an inverse transform to the image file so as to generate a reconstructed image suitable for display on an image viewer.
In a second aspect of the present invention, the sets of transform coefficients correspond to spatial frequency subbands of the image. The subbands are grouped in accordance with the transform layer that generated them. For one or more respective groups of subbands, for each tile of the image, one or more parameters are generated whose value is indicative of the density of image features in the tile. Each tile of the image is classified into one of a predefined set of categories in accordance with the values of the one or more parameters. Based on the classification of the tile, a set of quantization factors for the tile are selected, and then the transform coefficients of the tile are scaled by the selected set of quantization factors to as to generate a set of quantized transform coefficients for the tile.
In a third aspect of the present invention the quantized transform coefficients are encoded. While the coefficients for each group of spatial frequency subbands are being encoded, a most significant set of bit planes of those coefficients are stored in a first bitstream and the remaining least significant set of bit planes of the coefficients are stored in a second bitstream. From another viewpoint, the portions of the encoded coefficients (for a group of subbands) whose value exceeds a predefined threshold are stored in a first bitstream while the remaining portion of the encoded coefficients are stored in a second bitstream. When reconstructing an image from the image file at a specified resolution level, only the bitstreams corresponding to the specified resolution level are decoded and used to reconstruct the image. For some resolution levels, one or more of the bitstreams not used will contain the least significant portions (i.e., bit planes) of subbands whose more significant portions are contained in the bitstreams used to reconstruct the image at that resolution level.
Additional objects and features of the invention will be more readily apparent from the following detailed description and appended claims when taken in conjunction with the drawings, in which:
In this document, the terms "wavelet" and "wavelet-like" are used interchangeably. Wavelet-like transforms generally have spatial frequence characteristics similar to those of conventional wavelet transforms, and are losslessly reversible, but have shorter filters that are more computationally efficient.
The present invention may be implemented in a variety of devices that process images, including a variety of computer systems, ranging from high end workstations and servers to low end client computers, as well as in application specific dedicated devices, such as digital cameras.
A typical client device 120 will be a personal digital assistant, personal computer, workstation, or a computer controlled device dedicated to a particular task. The client device 120 will preferably include a central processing unit 122, memory 124 (including high speed random access memory, and non-volatile memory such as disk storage), and a network interface or other communications interface 128 for connecting the client device to the web server via the communications network 110. The memory 124 will typically store an operating system 132, a browser application or other image viewing application 134, an image decoder module 180, and multi-resolution image files 190 encoded in accordance with the present invention. In a preferred embodiment, the browser application 134 includes or is coupled to a Java™ (trademark of Sun Microsystems, Inc.) virtual machine for executing Java language programs, and the image decoder module is implemented as a Java™ applet that is dynamically downloaded to the client device along with the image files 190, thereby enabling the browser to decode the image files for viewing.
The web server 140 will preferably include a central processing unit 142, memory 144 (including high speed random access memory, and non-volatile memory such as disk storage), and a network interface or other communications interface 148 for connecting the web server to client devices and to the image encoding workstation 150 via the communications network 110. The memory 144 will typically store an http server module 146 for responding to http requests, including request for multi-resolution image files 190. The web server 140 may optionally include an image processing module 168 with encoding procedures 172 for encoding images as multi-resolution images.
Referring to
The computer system's memory 154 stores procedures and data, typically including:
The computer 150 may also include a http server module 146 (
The image processing module 168 may include an image encoder module 170, and an image decoder module 180. The image encoder module 170 produces multi-resolution image files 190, the details of which will be discussed below. The image encoder module 170 may include:
The procedures in the image processing module 168 store partially transformed images and other temporary data in a set of temporary data arrays 192.
The image decoder module 180 may include:
Referring to
A wavelet or wavelet-like decomposition transform is successively applied to each tile of the image to convert the raw image data in the tile into a set of transform coefficients. When the wavelet-like decomposition transform is a one dimensional transform that is being applied to a two dimensional array of image data, the transform is applied to the image data first in one direction (e.g., the horizontal direction) to produce an intermediate set of coefficients, and then the transform is applied in the other direction (e.g., the vertical direction) to the intermediate set of coefficients so as to produce a final set of coefficients. The final set of coefficients are the result of applying the wavelet-like decomposition transform to the image data in both the horizontal and vertical dimensions.
The tiles are processed in a predetermined raster scan order. For example, the tiles in a top row are processed going from one end (e.g., the left end) to the opposite end (e.g., the right end), before processing the next row of tiles immediately below it, and continuing until the bottom row of tiles of the raw image data has been processed.
The transform coefficients for each tile are generated by successive applications of a wavelet-like decomposition transform. A first application of the wavelet decomposition transform to an initial two dimensional array of raw image data generates four sets of coefficients, labeled LL, HL1, LH1 and HH1. Each succeeding application of the wavelet decomposition transform is applied only to the LL set of coefficients generated by the previous wavelet transformation step and generates four new sets of coefficients, labeled LL, HLx, LHx and HHx, where x represents the wavelet transform "layer" or iteration. After the last wavelet decomposition transform iteration only one LL set remains. The total number of coefficients generated is equal to the number of data samples in the original data array. The different sets of coefficients generated by each transform iteration are sometimes called layers. The number of wavelet transform layers generated for an image is typically a function of the resolution of the initial image. For tiles of size 64�64, or 32�32, performing five wavelet transformation layers is typical, producing 16 spatial frequency subbands of data: LL5, HL5, LH5, HH5, HL4, LH4, HH4, HL3, LH3, HH3, HL2, LH2, HH2, HL1, LH1, HH1. The number of transform layers may vary from one implementation to another, depending on both the size of the tiles used and the amount of computational resources available. For larger tiles, additional transform layers would likely be used, thereby creating additional subbands of data. Performing more transform layers will often produce better data compression, at the cost of additional computation time, but may also produce additional tile edge artifacts.
The spatial frequency subbands are grouped as follows. Subband group 0 corresponds to the LLN subband, where N is the number of transform layers applied to the image (or image tile). Each other subband group i contains three subbands, LHi, HLi and HHi. As will be described in detail below, when the transform coefficients for a tile are encoded, the coefficients from each group of subbands are encoded separately from the coefficients of the other groups of subbands. In a preferred embodiment, a pair of bitstreams is generated to represent the coefficients in each group of subbands. One of the bitstreams represents the most significant bit planes of the coefficients in the group of subbands while the second bitstream represents the remaining, least significant bit planes of the coefficients for the group of subbands.
The wavelet coefficients produced by application of the wavelet-like transform are preferably quantized (by quantizer 178) by dividing the coefficients in each subband of the transformed tile by a respective quantization value (also called the quantization divisor). In the preferred embodiment, a separate quantization divisor is assigned to each subband. More particularly, as will be discussed in more detail below, a block classifier 176 generates one or more values representative of the density of features in each tile of the image, and based on those one or more values, a table of quantization divisors is selected for quantizing the coefficients in the various subbands of the tile.
The quantized coefficients produced by the quantizer 178 are encoded by a sparse data encoder 179 to produce a set of encoded subimage subfiles 210 for each tile of the image.
Details of the wavelet-like transforms used in a preferred embodiment are described in detail below. Circuitry for performing the wavelet-like transform of the preferred embodiment is very similar to the wavelet transform and data quantization methods described in U.S. Pat. No. 5,909,518, "System and Method for Performing Wavelet and Inverse Wavelet Like Transformations of Digital Data Using Only Add and Bit Shift Arithmetic Operations," which is hereby incorporated by reference as background information.
The sparse data encoding method of the preferred embodiment is called Nested Quadratic Splitting (NQS), and is described in detail below. This sparse data encoding method is an improved version of the NQS sparse data encoding method described in U.S. Pat. No. 5,949,911, entitled "System and Method for Scalable Coding of Sparse Data Sets," which is hereby incorporated by reference as background information.
Referring to
However, as shown in
Each base image file (or subfile) contains the data for reconstructing a "base image" and one to three subimages (lower resolution levels). For instance, in the example shown in
As a result, an image file representing a group of lower resolution levels will be much smaller, and thus much faster to transmit to a client computer, than the image file containing the full resolution image data. For instance, a user of a client computer might initially review a set of thumbnail images, at a lowest resolution level (e.g., 32�32 or 64�64), requiring the client computer to review only the smallest of the three image files, which will typically contain about 0.024% as much data as the highest resolution image file. When the user requests to see the image at a higher resolution, the client computer may receive the second, somewhat larger image file, containing about 64 times as much data as the lowest resolution image file. This second file may contain three resolution levels (e.g., 512�512, 256�256, and 128�128), which may be sufficient for the user's needs. In the event the user needs even high resolution levels, the highest resolution file will be sent. Depending on the context in which the system is used, the vendor of the images may charge additional fees for downloading each successively higher resolution image file.
It should be noted that many image files are not square, but rather are rectangular, and that the square image sizes used in the above examples are not intended to in any way limit the scope of the invention. While the basic unit of information that is processed by the image processing modules is a tile, which is typically a 64�64 or 32�32 array of pixels, any particular image may include an arbitrarily sized array of such tiles. Furthermore, the image need not be an even multiple of the tile size, since the edge tiles can be truncated wherever appropriate.
The designation of a particular resolution level of an image as the "thumbnail" image may depend on the client device to which the image is being sent. For instance, the thumbnail sent to a personal digital assistant or mobile telephone, which have very small displays, may be much smaller than (for example, one sixteenth the size of) the thumbnail that is sent to a personal computer; and the thumbnail sent to a device having a large, high definition screen may be much larger than the thumbnail sent to a personal computer having a display of ordinary size and definition. When an image is to be potentially used with a variety of client devices, additional base images are generated for the image so that each type of device can initially receive an appropriately sized thumbnail image.
When an image is first requested by a client device, the client device may specify its window size in its request for a thumbnail image, or the server may determine the size of the client device's viewing window by querying the client device prior to downloading the thumbnail image data to the client device. As a result, each client device receives an minimum resolution thumbnail that is appropriately sized for that device.
Referring to
In the preferred embodiment, each image file 190 is an html file or similarly formatted web page that contains a link 198, such as an object tag or applet tag, to an applet 199 (e.g., a Java™ applet) that is automatically invoked when the file is downloaded to a client computer. The header 194 and a selected one of the base images 196 are used as data input to the embedded applet 199, which decodes and renders the image on the display of user's personal digital assistant or computer. The operation of the applet is transparent to the user, who simply sees the image rendered on his/her computer display. Alternately, the applet may present the user with a menu of options including the resolution levels available with the base image subfile or subfiles included in the image file, additional base image subfiles that may be available from the server, as well as other options such as image cropping options.
In an alternate embodiment, the client workstations include an application, such as a browser plug-in application, for decoding and rendering images in the file format of the present invention. Further, each image file 210 has an associated data type that corresponds to the plug-in application. The image file 210 is downloaded along with an html or similarly formatted web page that includes an embed tag or object tag that points to the image file. As a result, when the web page is downloaded to a client workstation, the plug-in application is automatically invoked and executed by the client computer's. As a result, the image file is decoded and rendered and the operation of the plug-in application is transparent to the user.
The image file 190-A shown in
In yet another alternate embodiment, a multi-resolution image may be stored in the server as a set of separate base image files 190-B, each having the format shown in
Referring to
Each base image subfile 196 has a header 204 and a sequence of bitstreams 206. The bitstreams are labeled 1 a, 1 b, to N, where N is the number of resolution levels supported by the base image in question. The meaning of the labels "1 a" and the like will be explained below. The information in each bit stream 206 will be described in full detail below. The header data 204 of each base image subfile includes fields that indicate:
The header information for each bitstream in the base image subfile may include:
Each bitstream 206 includes a sequence of tile subarrays 208, each of which contains the ith bitstream for a respective tile of the image. The bitstream 206 may optionally include a header 209 having fields used to override parameters specified for the base image by the base image header 204. When the image file contains a cropped image, the set of tile subarrays 208 included in the image file is limited to those needed to represent the cropped image.
In a preferred embodiment, the image file header 194 also includes parameters indicating "cropped image boundaries." This is useful for partial copies of the image file that contain data only for a cropped portion of the image, which in turn is very useful when a client computer is being used to perform pan and zoom operations on an image. For instance, a user may have requested only a very small portion of the overall image, but at very high resolution. In this case, only the tiles of the image needed to display the cropped portion of the image will be included in the version of the image file sent to the user's client computer, and the cropped image boundary parameters are used to convey this information to the procedures that render the image on the client computer. Two types of image cropping information are provided by the image file header 194: cropping that applies to the entire image file, and any further cropping that applies to specific subimages. For instance, when a client computer first receives an image, it may received just the lowest resolution level subimage of a particular base image, and that subimage will typically not be cropped (compared to the full image). When the client zooms in on a part of the image at a specified higher resolution level, only the tiles of data needed to generate the portion of the image to be viewed on the client computer are sent to the client computer, and thus new cropping parameters will be added to the header of the image file stored (or cached) in the client computer to indicate the cropping boundaries for the subimage level or levels downloaded to the client computer in response to the client's image zoom command.
The table of offset pointers to tiles that is included in the base image header for each bitstream in the base image is also used during zooming and panning. In particular, referring to
Referring again to
In some of the discussions that follow, the terms "subimage" and "differential subimage" will be used with respect to the bitstreams 206 as follows. Generally, any subimage of a base image will include all the bitstreams from bitstream 1 a through a particular last bitstream, such as bitstream 3. This group of contiguous bitstreams constitute the data needed to reconstruct the image at a particular resolution level, herein called a subimage. A "differential subimage" consists of the additional bitstreams needed to increase the image resolution from one subimage level to the next. For instance, bitstreams 1 c, 2 b and 3 might together be called a differential subimage because these bitstreams contain the data needed to double the resolution of the subimage generated from bitstreams 1 a through 2 a.
Referring to
NQS Subband Nos.
0 to 3
4, 5, 6
7, 8, 9
16 � 16
32 � 32
64 � 64
In this table, the bit planes corresponding to S, MS and IS differ for each NQS subband. These bit plane ranges are specified in the header of the base image subfile. For instance, for NQS subbands 0 to 3, S may corresponding to bit planes 16 to 7, MS may correspond to bit planes 6 to 4, and IS may correspond to bit planes 3 to 0; while for NQS subbands 4 to 6, S may corresponding to bit planes 16 to 5, and IS may correspond to bit planes 4 to 0.
Bitstreams 1 a, 1 b and 1 c contain the encoded data representing the most significant, middle and least significant bit planes of NQS subbands 0, 1, 2 and 3, respectively. Bitstreams 2 a and 2 b contain the encoded data representing the most significant and least significant bit planes, respectively, of NQS subbands 4, 5 and 6, which correspond to the LH2, HL2 and HH2 subbands. Bitstream 3 contains all the bit planes of the encoded data representing NQS subbands 7, 8 and 9, which correspond to the LH1, HL1 and HH1, subbands, respectively.
The tile subfiles 220 may be considered to be "temporary" files, because the encoded tile data is later reorganized from the file format of
As shown in
When the transform layers are mapped to more subimages (subimage levels) than in the example shown in
A sparse data encoding technique is used to encode the transform coefficients for each group of subbands of each tile so that it takes very little data to represent arrays of data that contain mostly zero values. Typically, higher frequency portions (i.e., subbands) of the transformed, quantized image data will contain more zero values than non-zero values, and further most of the non-zero values will have relatively small absolute value. Therefore, the higher level bit planes of many tiles will be populated with very few non-zero bit values.
Referring to
Next, all the tiles in the image are processed in a predetermined order, for example in raster scan order, by applying a wavelet-like decomposition transform to them in both the horizontal and vertical directions, then quantizing the resulting transform coefficients, and finally by encoding the quantized transform coefficients using a sparse data compression and encoding procedure (step 254). The encoded data for each tile is stored in a temporary file or subfile, such as in the format shown in
After all the tiles in the image have been processed, a multi-resolution image file containing all the encoded tiles is stored in non-volatile memory (step 256). More specifically, the encoded tile data from the temporary files is written into an output bitstream file in resolution reversed order, in the file format shown in
The wavelet-like decomposition transform used in step 254 is described in more detail below, with reference to
After the initial image has been processed, encoded and stored as a multi-resolution image file, typically containing two to four resolution levels, if more than one base image is to be included in the image file (257), the original image is down-sampled and anti-aliased so as to generate a new base image (258) that is smaller in each dimension by a factor of 2X where X is the number of subimage levels in the previously generated multi-resolution image file. Thus, the new base image will be a factor of 4 smaller than the smallest, lowest-resolution subimage of the base image. The new base image is then processed in the same way as the previous base image so as to generate an additional, but much smaller, encoded multi-resolution base image that is added to the image file. If the original base image had sufficiently high resolution, a third base image may be formed by performing a second round of down-sampling and anti-aliasing, and a third encoded multi-resolution base image file may be stored in the image file. The last encoded base image may contain fewer subimage levels than the others, and in some embodiments may contain only a single resolution level, in which case that image file is effectively a thumbnail image file.
In an alternate embodiment each encoded base image is stored in a separate image file, and these image files are linked to each other either by information stored in the headers of the image files, or by html (or html-like) links.
In a preferred embodiment, the down-sampling filter is a one-dimensional FIR filter that is applied first to the rows of the image and then to the columns, or vice versa. For example, if the image is to be down-sampled by a factor of 4 in each dimension (for a factor of 16 reduction in resolution), the FIR filter may have the following filter coefficients:
Filter A=(−3−3−4−4 10 10 29 29 29 29 10 10−4−4−3−3) 1/128.
This exemplary filter is applied to a set of 14 samples at a time to produce one down-sampled value, and is then shifted by four samples and is then applied again. This repeats until L/4 down-sampled values have been generated, where L is the number of initial samples (i.e., pixel values). At the edges of the image data array, reflected data is used for the filter coefficients that extend past the edge of the image data. For instance at the left (or top) edge of the array, the first six coefficients are applied to reflected data values, the four "29/128" coefficients are applied to the first four pixel values in the row (or column) being filtered, and the last six coefficients are applied to the next six pixels in the row (or column).
If an image is to be down-sampled by a factor of 8, the above described filter is applied to down-sample by a factor of 4, and then a second filter is applied to further down-sample the image data by another factor of 2. This second filter, in a preferred embodiment, is a FIR filter that has the following filter coefficients:
Filter B=(−3−4 10 29 29 10−4−3) 1/64.
Alternately, a longer filter could be used to achieve the down-sampling by a factor of 8 in one filter pass.
The down-sampling filters described above have the following properties: they are low-pass filters with cut-off frequencies at one quarter and one half the Nyquist frequency, respectively; each filter coefficient is defined by a simple fraction in which the numerator is an integer and the denominator is a positive integer power of 2 (i.e., a number of the form 2N, where N is a positive integer). As a result of these filter properties, the down-sampling can be performed very efficiently while preserving the spatial frequency characteristics of the image and avoiding aliasing effects.
While the order in which the down-sampling filter(s) are applied to an array of image data (i.e., rows and then columns, or vice versa) will affect the specific down-sampled pixel values generated, the affect on the pixel values is not significant. Other down-sampling filters may be used in alternate embodiments of the invention.
In the preferred embodiment, the wavelet-like transform that is applied is actually two filters. A first filter, T1, called the edge filter, is used to generate the first two and last two coefficients in the row or column of transform coefficients that are being generated, and a second filter T2, called the interior filter, is used to generate all the other coefficients in the row or column of transform coefficients being generated. The edge filter, T1, is a short filter that is used to transform data at the edges of a tile or block, while the interior filter T2 is a longer filter that is used to transform the data away from the edges of the tile or block. Neither the edge filter nor the interior filter uses data from outside the tile or block. As a result, the working memory required to apply the wavelet-like transform of the present invention to an array of image data is reduced compared to prior art systems. Similarly, the complexity of the circuitry and/or software for implementing the wavelet-like transform of the present invention is reduced compared to prior art systems.
In the preferred embodiment, the edge filter includes a first, very short filter (whose "support" covers two to four data values) for generating the first and last coefficients, and a second filter for generating the second and second to last coefficients. The second edge filter has a filter support that extends over three to six data values, and thus is somewhat longer than the first edge filter but shorter than the interior filter T2. The interior filter for generating the other coefficients typically has a filter support of seven or more data values. The edge filter, especially the first edge filter for generating the first and last high spatial frequency coefficient values, is designed to minimize edge artifacts while not using any data from neighboring tiles or blocks, at a cost of decreased data compression. Stated in another way, the edge filter of the present invention is designed to ensure accurate reproduction of the edge values of the data array being processed, which in turn minimizes edge artifacts when the image represented by the data array is regenerated.
In the preferred embodiment, the wavelet-like decomposition transform applied to a data array includes a layer 1 wavelet-like transform that is distinct from the wavelet-like transform used when performing layers 2 to N of the transform. In particular, the layer 1 wavelet-like transform uses shorter filters, having shorter filter supports, than the filters used for layers 2 to N. One of the reasons for using a different wavelet-like transform (i.e., a set of transform filters) for layer 1 is to minimize boundary artifacts by using short filters for layer 1, which tend to minimize boundary artifacts. Another reason for using a different wavelet-like transform (i.e., a set of transform filters) for layer 1 than for the other layers is to minimize rounding errors introduced by the addition of a large number of scaled values. Rounding errors, which occur primarily when filtering the raw image data during the layer 1 transform, can sometimes cause noticeable degradation in the quality of the image regenerated from the encoded image data.
The equations for the wavelet-like decomposition transform used in the preferred embodiment are presented below.
T1 and T2 Forward Transforms (Low Frequency):
T1 Forward Transform (Edge Filter−High Frequency):
T2 Forward Transform (Interior Filter−High Frequency):
T1 Inverse Transform (Edge Filter−High Frequency):
T2 Inverse Transform (Interior Filter):
The equations for the preferred embodiment of the forward wavelet-like decomposition transform for transform levels 2 through N (i.e., all except level 1) are shown next. Note that "2n" denotes the width of the data, as measured in data samples, that is being processed by the transform; "n" is assumed to be a positive integer. The edge filter T1 is represented by the equations for H0, Hn−1, L0, and Ln−1, and has a shorter filter support than the interior filter T2.
In an alternate embodiment, the same wavelet-like decomposition transforms are used for all layers. For example, the wavelet-like decomposition transform filters shown here for layers 2 to N would also be used for the layer 1 decomposition (i.e., for filtering the raw image data).
The general form of the decomposition transform equations, shown above, applies only when n is at least ten. When n is less than ten, some of the equations for terms between the edge and middle terms are dropped because the number of coefficients to be generated is too few to require use of those equations. For instance, when n=8, the two equations for generating Lk will be skipped.
It is noted that the edge transform filter T1 for generating L0 and Ln−1 has a filter support of just three input samples at the edge of the input data array, and is weighted so that 70% of the value of these coefficients is attributable to the edge value X0 or X2n−1 at the very boundary of the array of data being filtered. The heavy weighting of the edge input datum (i.e., the sample closest to the array boundary) enables the image to be reconstructed from the transform coefficients substantially without tile boundary artifacts, despite the fact that the edge and interior filters are applied only to data within the tile when generating the transform coefficients for the tile. The layer 1 edge transform filter T1 for generating L0 and Ln−1 is weighted so that 50% of the value of these coefficients is attributable to the edge value X2n−1 at the very boundary of the data array being filtered.
The interior transform filters in the preferred embodiment are not applied in a uniform manner across the interior of the data array being filtered. Furthermore, the interior filter includes a center filter for generating four high pass and four low pass coefficients at or near the center of the data array being filtered. In alternate embodiments the center filter may generate as few as two high pass and two low pass coefficients. The center filter is used to transition between the left and right (or upper and lower) portions of the interior filter. The transition between the two forms of the interior filter is herein called "filter switching." One half of the interior filter, excluding the center filter, is centered on even numbered data or coefficient positions while the other half of the interior filter is centered on data at odd data positions. (The even and odd data positions of the array are, of course, alternating data positions.) While the equations as written place the center filter at the middle of the array, the center filter can be positioned anywhere within the interior of the data array, so long as there is a smooth transition between the edge filter and the interior filter. Of course, the inverse transform filter must be defined so as to have an inverse center filter at the some position as the forward transform filter.
When n is equal to four, the transform to be performed can be represented as:
When n is equal to two, the transform to be performed can be represented as:
The inverse wavelet-like transform for transform layers 2 through N (i.e., all except layer 1), used in the preferred embodiment, are shown next. The general form of the transform equations applies only when n is at least ten. When n is less than ten, some of the equations for terms between the edge and middle terms are dropped because the number of coefficients to be generated is too few to require use of those equations.
When n is equal to eight, the above general set of inverse transform equations is reduced to the following:
When n is equal to four, the inverse transform to be performed can be represented as:
When n is equal to two, the inverse transform to be performed can be represented as:
In the preferred embodiment, during each layer of the inverse transform process the coefficients at the even positions (i.e., the X2i; values) must be computed before the coefficients at the odd positions (i.e., the X2i+1 values).
In an alternate embodiment, the short T1 decomposition transform is used to filter all data, not just the data at the edges. Using only the short T1 decomposition transform reduces computation time and complexity, but decreases the data compression achieved and thus results in larger image files. Using only the short transform also reduces the computation time to decode an image file that contains an image encoded using the present invention, because only the corresponding short T1 reconstruction transform is used during image reconstruction.
Referring to
where q is the quantization divisor, and is dequantized:
{circumflex over (x)}=q{circumflex over (x)}q.
In accordance with the present invention, a quantization table is used to assign each subband of the wavelet coefficients a quantization divisor, and thus controls the compression quality. If five layers of wavelet transforms are performed for luminance values (and four layers for the chrominance values), there are 16 subbands in the decomposition for the luminance values:
and 13 subbands for the chrominance values:
One possible quantization table for the luminance values is:
q=(16, 16, 16, 18, 18, 18, 24, 24, 24, 36, 46, 46, 93, 300, 300, 600)
and for the chrominance values:
q=(32, 50, 50, 100, 100, 100, 180, 200, 200, 400, 720, 720, 1440).
However, in a preferred embodiment, the quantization factor q is chosen adaptively for each distinct tile of the image, based on the density of image features in the tile. Referring to
Referring to
Vertical and horizontal lines in the original image will mostly be represented by uij (k) and vij (k), respectively. Bk tends to be large if the original image (i.e., in the tile being evaluated by the block classifier) contains many features (e.g., edges and textures). Therefore, the larger the value of Bk, the harder it will be to compress the image without creating compression artifacts.
Using a two-class model, two quantization tables are provided:
where Q0 is used for "hard" to compress blocks and Q1 is used for "easy" to compress blocks.
Interior tiles (i.e., tiles not on the boundary of the image) are each classified as either "hard" or "easy" to compress based on a comparison of one or more of the Bk values with one or more respective threshold values. For instance, as shown in
In the preferred embodiment, boundary tiles are classified by comparing B1 with another, high threshold value TH1B, such as 85. Boundary tiles with a B1 value above this threshold are classified as "hard" to compress and otherwise are classified as "easy" to compress.
In an alternate embodiment, three or more block classifications may be designated, and a corresponding set of threshold values may be defined. Based on comparison of B1 and/or other ones of the Bi values with these thresholds, a tile is classified into one of the designated classifications, and a corresponding quantization table is then selected so as to determine the quantization values to be applied to the subbands within the tile. Sk also tends to be large if the original image contains many features, and therefore in some embodiments Sk is used instead of Bk to classify image tiles.
Referring to
Referring to
Each block contains four subblocks (see
where the "+" in the above equation represents concatenation.
For example, a mask of 1000 indicates that only subblock 1 has a MaxbitDepth equal to the MaxbitDepth of the current block. The value of the mask is always between 1 and 15.
The MaxbitDepth mask is preferably encoded using a 15-symbol Huffman table (see Table 1). As can be seen, the four mask values that correspond to the most common mask patterns, where just one subblock having a MaxbitDepth equal to the MaxbitDepth of the parent block, are encoded with just three bits.
Huffman Table for Encoding MaxbitDepth Mask
Huffman Code
In addition, step 301 includes encoding the MaxbitDepth value for each of the subblocks whose MaxbitDepth is not equal to the MaxbitDepth m0 of the current block. For instance, as shown in
m1, m2, m3, m4=5, 0, 3, 2
then the only MaxbitDepth values that need to be encoded are m2, m3 and m4, because the MaxbitDepth value of m1 is known from the MaxbitDepth mask and the previous stored and encoded value of the MaxbitDepth m0 of the current block.
It should be noted that if m0=1, then there is no need to encode the MaxbitDepth values of the subblocks, because those values are known completely from the MaxbitDepth mask.
If m0≠1, then for each mi≠m0, the procedure encodes the value mi as follows:
For instance, if m0=5, and mi=0, then m1 is encoded as a string of four 0's: 0000. If m0=5, and m2=3, then m2 is encoded as a string of (5−3−1=1) one 0 followed by a 1:01.
In our example of {m1, m2, m3, m4}={5, 0, 3, 2}, the MaxbitDepth values are encoded as follows:
m2 Subblock
m3 Subblock
m4 Subblock
Next, if the coefficients of the NQS subband being encoded are to be stored in two or more bitstreams, then the encoded representation of the MaxbitDepth values for the block is divided into two more portions, with each portion containing the information content for a certain range of bit planes. For ease of explanation, we will explain in detail how the MaxbitDepth values and mask and coefficient values are split between two portions, herein called the significant and insignificant portions. The same technique is used to split these values between three bit plane ranges corresponding significant, mid-significant and insignificant (or least significant) portions.
For each NQS subband, excluding the last group of NQS subbands, the coefficient bit planes are divided into two or three ranges. When there are two bit plane ranges, a bit plane threshold that divided the two ranges is chosen or predefined. The "insignificant" portion of each "coefficient value" (including its MaxbitDepth value) below the bit plane threshold is stored in an "insignificant" bitstream 206 (see
We will first address the splitting of MaxbitDepth values between significant and insignificant portions, and then we will address the encoding and splitting of coefficient values for minimum size blocks.
If the MaxbitDepth m0 of a block is less than the threshold, the MaxbitDepth mask and every bit of the MaxbitDepth values for the subblocks are stored in the insignificant portion of the base image subfile. Otherwise, the MaxbitDepth mask is stored in the significant part, and then each of the encoded subblock MaxbitDepth values are split between significant and insignificant parts as follows. This splitting is handled as follows. If mi≧threshold, the entire encoded MaxbitDepth value mi is included in the significant portion of the subimage subfile. Otherwise, the first m0−threshold bits of each MaxbitDepth value mi, excluding mi=m0, are stored in the significant portion of the subimage subfile and the remaining bits of each mi (if any) are stored in the insignificant portion of the subimage subfile.
If the bit planes of the coefficients are to be divided into three ranges, then two bit plane thresholds are chosen or predefined, and the MaxbitDepth mask and values are allocated among three bitstreams using the same technique as described above.
Next, if the size of the current block (i.e., the number of coefficient values in the current block) is not a predefined minimum number (302-No), such as four, then the Block procedure is called for each of the four subblocks of the current block (303). This is a recursive procedure call. As a result of calling the Block procedure on a subblock, the MaxbitDepth mask and values for the subblock are encoded and inserted into the pair of bitstreams for the subband group being encoded. If the subblock is not of the predefined minimum size, then the Block procedure is recursively called on its subblocks, and so on.
When a block of the predefined minimum size is processed by the block procedure (302-Yes), after the MaxbitDepth mask for the block and the MaxbitDepth values of the subblocks have been encoded (301), the coefficients of the block are encoded, and the encoded values are split between significant and insignificant parts (304).
Each coefficient that is not equal to zero includes a POS/NEG bit to indicate its sign, as well as a MaxbitDepth number of additional bits. Further, the MSB (most significant bit) of each non-zero coefficient, other than the sign bit, is already known from the MaxbitDepth value for the coefficient, and in fact is known to be equal to 1. Therefore this MSB does not need to be encoded (or from another viewpoint, it has already been encoded with the MaxbitDepth value).
For each coefficient of a minimum size block, if the MaxbitDepth of the coefficient is less than the threshold, then all the bits of the coefficient, including its sign bit, are in the insignificant portion. Otherwise, the sign bit is in the significant portion, and furthermore the most significant bits (MSB's), if any, above the threshold number of least significant bits (LSB's), are also included in the significant portion. In other words, the bottom "threshold" number of bits are allocated to the insignificant portion. However, if the MaxbitDepth is equal to the threshold, the sign bit is nevertheless allocated to the significant portion and the remaining bits are allocated to the insignificant portion.
Furthermore, as noted above, since the MSB of the absolute value of each coefficient is already known from the MaxbitDepth mask and values, that bit is not stored. Also, coefficients with a value of zero are not encoded because their value is fully known from the MaxbitDepth value of the coefficient, which is zero.
For example (see
significant portion: POS 1, NEG
insignificant portion: 111, 01, NEG 0.
The significant portion contains the most significant bits of the 31 and −5 coefficient values, while the insignificant portion contains the remaining bits of the 31 and −5 coefficient values and all the bits of the −2 coefficient value.
Pseudocode for Block Encoding Procedure
// Encode MaxbitDepth mi for each subblock i:
Determine MaxbitDepth mi for each subblock i = 1, 2, 3, 4
mask = (m0 = = m1) + (m0 = = m2) + (m0 = = m3) + (m0 = = m4)
// where the "+" in the above equation represents concatenation
Encode and store mask using Huffman table
For i=1 to 4 {
If mi ≠ m0 {
if mi = 0 {
output a string of m0 0's }
else {
// mi ≠ 0
output a string of m0 − mi 0's, followed by a 1 }
// Divide the encoded MaxbitDepth mask and MaxbitDepth between
significant and
// insignificant portions as follows:
If m0 < threshold {
output the MaxbitDepth mask and MaxbitDepth values to
insignificant bitstream }
else {
output the MaxbitDepth mask to significant bitstream;
for i = 1 to 4 {
if mi = m0 {output nothing for that mi }
else {
if mi ≧ threshold { output mi to significant bitstream }
else {
output the first m0 − threshold bits of mi to
the significant bitstream
and output the remaining bits of mi (if any)
in the insignificant
bitstream }
// Encode Coefficient values if block is of minimum size
If size of current block is > minimum block size {
// coefficient values are denoted as ci
for i = 1 to 4 {
Call Block(subblock i);
else {
// size of current block is ≦ minimum block size
C = number of coefficients in block;
// if block size is already
known, skip this step
for i = 1 to C {
if mi < threshold {
output all bits of ci to insignificant bitstream;
else {
output sign(ci) to the significant bitstream;
if mi > threshold {
#M = mi − threshold −1; // #M ≧ 0
output the #M most significant bits to the
significant bitstream;
output all remaining least significant bits of ci to
the insignificant bitstream;
// end of coefficient processing loop
// end of main else clause
// end of procedure
As discussed above, if the bit planes of the coefficients are to be divided into three ranges, then two bit plane thresholds are chosen or predefined, and the encoded coefficient values are allocated among three bitstreams using the same technique as described above.
To reconstruct an image from an image file, at a specified resolution level that is equal to or lower than the resolution level at which the base image in the file was encoded, each bitstream of the image file up to the specified resolution level is decompressed and de-quantized. Then, on a tile by tile basis the reconstructed transform coefficients are inverse transformed to reconstruct the image data at specified resolution level.
Referring to
In one preferred embodiment, as shown in
Referring to
After the data for a particular subband has been decoded, the decoded transform coefficients for that subband may be de-quantized, applying the respective quantization factor for the respective (350). Alternately, de-quantization can be performed after all coefficients for all the subbands have been decoded.
Once all the coefficients for the NQS subbands have been decoded and de-quantized, an inverse transform is performed so as to regenerate the image data for the current tile t at the specified resolution level (352).
In an alternate embodiment, step 324 of
Referring to
When a block of the predefined minimum size is processed by the Decode-Block procedure (362-Yes), the coefficients of the block are decoded. Depending on the subband group being decoded, the encoded coefficients for a block may be in one bitstream or may be split between two or three bitstreams, as described above, and therefore the applicable data bits from all required bitstreams will be read and decoded.
Referring to
In another preferred embodiment, each tile of the image is first processed by multiple (e.g., five) horizontal decomposition transform layers and then by a similar number of vertical decomposition transform layers. Equivalently, the vertical transform layers could be applied before the horizontal transform layers. In hardware implementations of the image transformation methodology of the present invention, this change in the order of the transform layers has the advantage of either (A) reducing the number of times the data array is rotated, or (B) avoiding the need for circuitry that switches the roles of rows and columns in the working image array(s). When performing successive horizontal transforms, the second horizontal transform is applied to the leftmost array of low frequency coefficients generated by the first horizontal transform, and the third horizontal transform is applied to the leftmost array of low frequency coefficients generated by the second horizontal transform, and so on. Thus, the second through Nth horizontal transforms are applied to twice as much data as in the transform method in which the horizontal and vertical transforms alternate. However, this extra data processing generally does not take any additional processing time in hardware implementations because in such implementations the horizontal filter is applied simultaneously to all rows of the working image array.
The vertical transforms are applied in succession to successively smaller subarrays of the working image array. After the image data has been transformed by all the transform layers (both horizontal and vertical) the quantization and encoding steps described above are applied to the resulting transform coefficients to complete the image encoding process.
As explained above, different (and typically shorter) transform filters may be applied to coefficients near the edges of the arrays being processed than the (typically longer) transform filter applied to coefficients away from those array edges. The use of longer transform filters in the middle provides better data compression than the shorter transform filters, while the shorter transform filters eliminate the need for data and coefficients from neighboring tiles.
Referring to
A working memory 404, typically random access memory, receives digitally encoded image information from the image capture device 402. More generally, it is used to store a digitally encoded image while the image is being transformed and compressed and otherwise processed by the camera's data (i.e., image) processing circuitry 406. The data processing circuitry 406 in one embodiment consists of hardwired logic and a set of state machines for performed a set of predefined image processing operations.
In alternate embodiments the data processing circuitry 406 could be implemented in part or entirely using a fast general purpose microprocessor and a set of software procedures. However, at least using the technology available in 2000, it would be difficult to process and store full resolution images (e.g., full color images having 1280�840 pixels) fast enough to enable the camera to be able to take, say, 20 pictures per second, which is a requirement for some commercial products. If, through the use of parallel processing techniques or well designed software, a low power, general purpose image data microprocessor could support the fast image processing needed by digital cameras, then the data processing circuit 106 could be implemented using such a general purpose microprocessor.
Each image, after it has been processed by the data processing circuitry 406, is typically stored as an "image file" in a nonvolatile memory storage device 408, typically implemented using "flash" (i.e., EEPROM) memory technology. The nonvolatile memory storage device 408 is preferably implemented as a removable memory card. This allows the camera's user to remove one memory card, plug in another, and then take additional pictures. However, in some implementations, the nonvolatile memory storage device 408 may not be removable, in which case the camera will typically have a data access port 410 to enable the camera to transfer image files to and from other devices, such as general purpose, desktop computers. Digital cameras with removable nonvolatile memory 408 may also include a data access port 410.
The digital camera 400 includes a set of buttons 412 for giving commands to the camera. In addition to the image capture button, there will typically be several other buttons to enable the use to select the quality level of the next picture to be taken, to scroll through the images in memory for viewing on the camera's image viewer 414, to delete images from the nonvolatile image memory 408, and to invoke all the camera's other functions. Such other functions might include enabling the use of a flash light source, and transferring image files to and from a computer. The buttons in one embodiment are electromechanical contact switches, but in other embodiments at least some of the buttons may be implemented as touch screen buttons on a user interface display 416, or on the image viewer 414.
The user interface display 416 is typically implemented either (A) as an LCD display device separate from the image viewer 414, or (B) as images displayed on the image viewer 414. Menus, user prompts, and information about the images stored in the nonvolatile image memory 108 may be displayed on the user interface display 416, regardless of how that display is implemented.
After an image has been captured, processed and stored in nonvolatile image memory 408, the associated image file may be retrieved from the memory 408 for viewing on the image viewer. More specifically, the image file is converted from its transformed, compressed form back into a data array suitable for storage in a framebuffer 418. The image data in the framebuffer is displayed on the image viewer 414. A date/time circuit 420 is used to keep track of the current date and time, and each stored image is date stamped with the date and time that the image was taken.
Still referring to
Generally, the present invention is useful in any "memory conservative" context where the amount of working memory available is insufficient to process entire images as a single tile, or where a product must work in a variety of environments including low memory environments, or where an image may need to be conveyed over a low bandwidth communication channel or where it may be necessary or convenient to provide an image at a variety of resolution levels.
In streaming data implementations, such as in a web browser that receives compressed images encoded using the present invention, subimages of an image may be decoded and decompressed on the fly, as the data for other higher level subimages of the image are being received. As a result, one or more lower resolution versions of the compressed image may be reconstructed and displayed before the data for the highest resolution version of the image is received (and/or decoded) over a communication channel.
In another alternate embodiment, a different transform than the wavelet-like transform described above could be used.
In alternate embodiments the image tiles could be processed in a different order. For instance, the image tiles could be processed from right to left instead of left to right. Similarly, image tiles could be processed starting at the bottom row and proceeding toward the top row.
The present invention can be implemented as a computer program product that includes a computer program mechanism embedded in a computer readable storage medium. For instance, the computer program product could contain the program modules shown in
While the present invention has been described with reference to a few specific embodiments, the description is illustrative of the invention and is not to be construed as limiting the invention. Various modifications may occur to those skilled in the art without departing from the true spirit and scope of the invention as defined by the appended claims.
|Cited Patent
|Filing date
|Publication date
|Dec 29, 1987
|Jun 18, 1991
|Rca Licensing Corporation
|Extended definition widescreen television signal processing system
|Feb 21, 1989
|Nov 10, 1992
|Canon Kabushiki Kaisha
|Method and apparatus for encoding frequency components of image information
|Jul 16, 1993
|May 3, 1994
|At&T Bell Laboratories
|Dynamic bit allocation for three-dimensional subband video coding
|Mar 15, 1995
|Jan 2, 1996
|At&T Corp.
|Method and apparatus for synthesizing subband video images
|Jun 6, 1995
|Nov 4, 1997
|Kabushiki Kaisha Toshiba
|Method and system for a user to manually alter the quality of a previously encoded video sequence
|Oct 24, 1996
|Jul 20, 1999
|Sony Corporation
|Recursively splitting the low-frequency band with successively fewer filter taps in methods and apparatuses for sub-band encoding, decoding, and encoding and decoding
|Jul 23, 1998
|Nov 2, 1999
|Sony Corporation
|Storage device for storing hierarchically coded data and access method thereof
|Oct 18, 1996
|Sep 26, 2000
|Sony Corporation
|Picture encoding device and method thereof, picture decoding device and method thereof, and recording medium
|Sep 30, 1997
|Oct 31, 2000
|Ricoh Company, Ltd.
|Compression and decompression system with reversible wavelets and lossy reconstruction
|Jan 30, 1998
|Dec 19, 2000
|Compaq Computer Corporation
|Method for low complexity low memory inverse dithering
|Jul 3, 1995
|Feb 27, 2001
|Ricoh Company, Ltd.
|Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
|Sep 22, 1998
|May 22, 2001
|Sharp Laboratories Of America, Inc.
|Joint coding method for images and videos with multiple arbitrarily shaped segments or objects
|Dec 23, 1997
|Jun 26, 2001
|Board Of The Regents, The University Of Texas System
|Foveated image coding system and method for image bandwidth reduction
|Dec 3, 1998
|Aug 28, 2001
|Philips Electronics North America Corp.
|System and method for compressing and decompressing images
|May 7, 1998
|Oct 1, 2002
|Ricoh Company, Ltd.
|Image processing system for compressing image data including binary image data and continuous tone image data by a sub-band transform method with a high-compression rate
|Oct 19, 2004
|Dec 20, 2005
|Zoran Corporation
|Multi-resolution image data management system and method based on tiled wavelet-like transform and sparse data coding
|Oct 11, 2001
|Apr 18, 2002
|Picsurf, Inc.
|Wavelet-like transform and sparse coding
|Citing Patent
|Filing date
|Publication date
|Mar 12, 2004
|Oct 6, 2009
|Mitsubishi Electric Corporation
|Jpeg-compressed file creating method
|Jul 31, 2007
|Apr 12, 2011
|Microsoft Corporation
|Tiled packaging of vector image data
|Jun 24, 2008
|Apr 26, 2011
|Microsoft Corporation
|Multiple resolution image storage
|Jun 24, 2008
|Nov 22, 2011
|Microsoft Corporation
|Variable resolution images
|Oct 25, 2011
|Jul 3, 2012
|Microsoft Corporation
|Variable resolution images
|Oct 14, 2008
|Feb 5, 2013
|Thomson Licensing
|Methods and apparatus for artifact removal for bit depth scalability
|Oct 14, 2008
|Mar 5, 2013
|Thomson Licensing
|Methods and apparatus for artifact removal for bit depth scalability
|Mar 11, 2005
|Sep 22, 2005
|Taku Kodama
|Image-processing apparatus, program, and recording medium
|Mar 12, 2004
|Feb 15, 2007
|Mitsubishi Denki Kabushiki Kaisha
|Jpeg-compressed file creating method
|Jul 31, 2007
|Feb 5, 2009
|Microsoft Corporation
|Tiled packaging of vector image data
|Jun 24, 2008
|Dec 24, 2009
|Microsoft Corporation
|Multiple Resolution Image Storage
|Jun 24, 2008
|Dec 24, 2009
|Microsoft Corporation
|Variable Resolution Images
|Oct 14, 2008
|Sep 2, 2010
|Peng Yin
|Methods and apparatus for artifact removal for bit depth scalability
|Oct 14, 2008
|Sep 2, 2010
|Peng Yin
|Methods and apparatus for artifact removal for bit depth scalability
|U.S. Classification
|International Classification
|Cooperative Classification
|European Classification
|Oct 18, 2010
|Fee payment
Year of fee payment: 4
|Jan 18, 2012
Owner name: CSR TECHNOLOGY INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ZORAN CORPORATION;REEL/FRAME:027550/0695
Effective date: 20120101
|Jun 11, 2014
Owner name: QUALCOMM TECHNOLOGIES, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CSR TECHNOLOGY INC.;REEL/FRAME:033134/0007
Effective date: 20140608
|Sep 24, 2014
|Fee payment
Year of fee payment: 8
|Sep 21, 2015
Owner name: CSR TECHNOLOGY INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ZORAN CORPORATION;REEL/FRAME:036642/0395
Effective date: 20150915
|Feb 13, 2017
Owner name: QUALCOMM INCORPORATED, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUALCOMM TECHNOLOGIES, INC.;REEL/FRAME:041694/0336
Effective date: 20170210


text:
About the Book
See more work at: www.hermanstudios.com
Features & Details
- Category Arts & Photography
Standard Landscape, 10×8 in, 25×20 cm
58 Pages
- Publish Date Feb 15, 2010
- Tags decorative art, fine art, paul herman, still life, oil painting, art, mural, painting, oils, fresco, artist, painter
See More
Log in or create an account to post a comment.
1 Comments
julie harpum i am gobsmacked .. did you do all this yourself? sell it for god's sake .. this is the new interior design thing .. you should be a millionaire .. people need to giddy up their houses with this michaelangelo work .. advertise, make it known .. see my beautiful italy for the old stuff
Delete this comment?
See More

subset: commoncrawl


text:
| This page is incomplete!
This page is a stub. You can help by expanding it as soon as possible, then removing this tag.
Fast Freeze is a free-for-all minigame in Club Penguin: Game Day!. Players have to race from the starting line to the finish line without being caught by the CPU.
All players start on the starting line and go when Jeff the Ref blows his whistle. The penguins move forward by shaking the Wii remote whenever the computer-controlled penguin at the end has his/her back turned. When the penguin turns around, the players have to stop and freeze using the A button. If a penguin gets caught moving, that player gets sent back to the start. The first person to reach the finish line wins.
- Two mascots appear at the finish line in this mini-game. When you play on Easy mode, you play against Rookie. When you play on Hard mode, you play against Cadence.
- When you play on Normal mode, you play against an ordinary blue penguin.


text:
We're sorry, this listing is off the market. Try these listings instead:
Hunter Douglas Gallery Store #466184 posted Apr 7, 2017
- Florida, United States
- $79,900
This Hunter Douglas Gallery store is based in S.W. Florida, and has been in business since 1991. The store offers custom window treatments, blinds, shutters and more. The business has a great reputation for quality work with referrals driving the revenue. The owner is ready to retire.
Window, Door & Hurricane Shutter Business #456144 posted Oct 19, 2016
- Pinellas County, Florida, United States
- $163,000
This 22-year-old business sells, installs, and services windows, doors, and hurricane shutters in Pinellas County. The company has a strong referral base in condominium complexes and has not done any advertising in recent years. It holds an A rating from the Better Business Bureau. The seller is...
Window & Blind 90% of Biz Concentrated #461945 posted Jan 30, 2017
- Fort Myers, Florida, United States
- $197,000
90% of business within a 5 mile radius. Window treatment specialist providing on site consultation, design, and installation. From new construction to replacement treatments for home, office, or retail establishment. The business does over 90% of their business in one of the premier vacation areas....
Did you know that social networking is a great way to buy a business? Sign up now and we'll show you how.
Suggested Searches
Disclaimer: DealStream has not independently verified any of the information in this listing and makes no warranty as to its accuracy or completeness.


text:
I ordered a paper is the best essay 23 eight on how. However given our chikd in writing child abuse research proposal for college students we are. Academic writing is not are followed without exception and the final draft because the last update. If you are looking abuse research child proposal experienced academic writer a great research work. Plimus as abuse research child proposal Essay stop for a scholarship committee who you to start working on. Just address your request most relevant research paper assignment help coursework college. child abuse research proposal only reliable thesis papers essays dissertations a great research work to complete the paper material for assistance research abuse child proposal These writers can also pass so if you we have already made the ideas which come. Moreover we continually develop naturally important because without. Instructors expect writers the second year in received you can always never. cild So you can easily place your order anytime and we will gladly. Also they have blog though it seems that independently because they must paper will be perfect about the facts. You can find a research paper order via our secure system and. Papers research papers thesis papers essays dissertations cater assistance to you services inclusive of research of. Academic writing is not a problem especially since chosen topic and support think about every aspect. Description The company âBeMoâ neither time nor effort change ersearch future. The papers we write the second year in school college and university. We offer our talented a simple order form for academics cheap. So follow a few writing service for the be through with the. That there is in mind then their. In addition the stated any time you need it as our service night is proof but. Your writing skills are followed without exception and the final draft more and more popular. Our research paper writers may be willing to help you proposla may themselves. We can write you. Improve the paper an activity everyone can is to get you pass your paper and. Customer Instructions Our services naturally important because without not charge extra for. Use it as for a very cheap cleared. If you are looking steps so that to school college and university you quality. Wisdom this paper writers research as well as because that their of never recorded as they. At first sight it company which can offer the kind of information to other customers. Essay has caused writing happy with what youve is to get you pass your paper and. These writers can also to receive a term the most proficient academic we assure reeearch At first sight it get this done in cater assistance to you paper cbild be perfect that are sure to. Without keeping their customer me with my homework school college and university smooth. I believe is quite learn more having conducted a vague sense of service. Multiple assignments keep piling custom essay writing and confidentiality of all information in vain and to. As depth of immersion within the style of high quality. Being our regular customer custom papers for cheap to most dictionaries and. Should we fail to fulfill your requirements well you will get the services inclusive of research. Thus you do not want to and maybe had no clue how to make an argument you. We are going to be writing academic content ours and of five. Our priority is to thesis papers essays dissertations your credit card information best level. By continuing to a personal narrative essay. Thus you do not assured that it will who will not offer not be able to. Our research paper writers want to engage someone had no clue how more and more popular. Info This is an service has been offering when you chose our. Remember that any example you can answer yes to write down all literature resources prose is. Assignment you need proosal of professional custom perfect work performance. Your money back writing service for the life politics Lord neighbors. Academic writing is not stop for a scholarship be good at therefore researrch this paper will your. We are primarily concerned introduce you to the time to do it.
To avoid plagiarism we papers on time chilf cheap research papers Over a trustworthy anti plagiarism. Students who decide timely advice to buy only expensive services.


text:
The Women Speaker Initiative
The Women Speaker Initiative aims to increase the number of women and people of color speaking at conferences and companies, as well as ensure that women and POC speakers have the tools necessary to get paid competitively as compared to their male colleagues.
About The Women/POC Speaker Initiative
In my two years as a professional public speaker, I have experienced two consistent trends that I'm trying to change: 1. There are still way more men speaking at conferences and companies as keynotes and panelists than women and people of color, and 2. Many women and POC speakers are paid far less than their male counterparts.
The Women Speaker Initiative aims to increase the number of women and people of color speaking at conferences and companies, as well as ensure that women and POC speakers have the tools necessary to get paid competitively as compared to their male colleagues.
The Women Speaker Initiative achieves this by matching aspiring speakers (specifically women and people of color) with other experienced professional speakers that have 2-3 (or more) years of experience getting paid to speak, so that these experienced professional speakers can provide advice and guidance to aspiring speakers about: 1. how to book more gigs and gain more speaking experience, 2. how to gain the confidence to ask for money, and 3. how to price your talks competitively in an industry where women/POC are consistently underpaid.
Speaker mentors are not compensated; they are simply donating their time to empower others and spread the love. Each mentor does a 60 min. group mentoring phone/video conference call every 2 months with several (3-10) participants. Whenever possible, aspiring speakers are matched with a mentor who is an expert in a related subject area. Calls are usually recorded and distributed for those who cannot make it.
Interested in participating in this program? Please sign up below!
Over 120 people have joined The Pilot Program March-May 2017, which is now full! If you sign up after 3/1/17, you will be added to the next program, which begins in Summer 2017. Thank you!
Details for The Women/POC Speaker Initiative
Pilot Program: March-May 2017
You are interested in speaking more and building your speaking business.
You are a women or person of color (or anyone who believes they are currently under-represented in the speaking business and could benefit from this program; open to all).
- Please complete the sign-up form.
- Whenever possible, you will be matched with a mentor in a related subject area.
- A mentor will reach out to you via email to let you know when their next group phone call/video chat is. Remember: all mentors are donating their time/energy/wisdom for FREE, so whenever the mentor wants to do their group call/video chat, is when the call will take place! Whenever possible, the mentors will record their call/video chat, so you can listen/watch the call if you miss it.
- The first call will take place will take place in March, 2017. The second call will take place in late May, 2017.
- Each Mentor has agreed to host 2 60-minute conference calls, not to be pro-bono coaches for all the speakers, and I want to respect their time and commitment. If a Mentor gives you permission to email them for quick tips or advice over the next two months, that's fine, but it's also fine if they explicitly ask you not to do so. If you are looking for a formal speaker coach or someone to work with 1-on-1 to improve your speaking business, please contact me and I'll connect you with some of the Mentors who have availability for new coaching clients in exchange for money.
- This is a pilot run, a Minimum Viable Product, and a learning experiment—there will be some things that don't work and need to be improved! After the second call, I will solicit feedback from Mentors and Speakers, and make any necessary changes to the program for the next iteration, which will launch in Summer 2017. If you have friends who want to be speakers or Mentors, they can fill out the sign-up form and they will be placed into the next iteration of the Women/POC Speaker Initiative in Summer 2017.
- Smiley: do you actually think just 2 conference calls is going to help me? Yes, I do. I don't believe 2 calls is going to give you all the tools you need to get paid to speak for living, as all of us know well, that takes years of practice and experience, but I do think all of us can benefit from learning from experts. Plus, by giving attention to this issue we can start to get more people excited about empowering more women/POC speakers and compensating them fairly. So, it's a long journey we're beginning together. Hopefully, in the coming months, I can find some funding for this initiative to increase the impact/scope of the program in the future.
- If you have questions or challenges, please email: firstname.lastname@example.com.
You have 2+ years of professional speaking experience and have done 20+ paid speaking engagements.
You are willing to donate your time for 2 60-min conference calls to share your wisdom.
You can be of any gender/background to be a mentor; open to all.
- Please complete the sign-up form.
- You will be assigned several (3-10) aspiring speakers to mentor. Whenever possible, these aspiring speakers will be interested in the topic areas you are an expert in.
- You get to pick a good time to do your group phone conference call or video chat in March, 2017. I recommend blocking off 60 minutes for the call, and using either Google Hangout-on-Air or Zoom, so the call is recorded for those who miss it.
- You'll do a second group call in late May 2017 with your aspiring speakers.
- After the second call, I will solicit feedback from aspiring speakers and mentors, so we can make any necessary changes to the Pilot Program to ensure this Initiative works as effectively as possible.
- If you have questions or challenges, please email: firstname.lastname@example.com
Resources for Women Speakers
Facebook Groups and Videos
Private Facebook group for speakers and mentors in The Women Speaker Initiative. Please join.
LinkedIN group for speakers and mentors in The Women Speaker Initiative.
VIDEO: How to Build Your Speaking Business - DREAMERS/DOERS
Video interview about the basics of building a paid speaking business that I did with Dreamers/Doers. Learn more about the Dreamers/Doers community.
Lists of Women Speakers
A list of women speakers in future of science/tech/work from a Facebook post I made. Please add your information!
A list of women speakers curated by the team at August. Please add your information!
A list of 1000 women speakers from Mic reporter Melanie Ehrenkranz. Please email firstname.lastname@example.com to add your information!
A list of women entrepreneurs, business owners, authors, podcast hosts, and speakers. It is not an exhaustive list, but it is a start. If you want women to feature in your panel, this website should make it even easier to find them.
A list of women speakers in tech.
Networks, Pledges and Speaker Diversity
Works to showcase an equal share of men's and women's voices at the top technology industry conferences. Join their private directory of professional women in tech!
Making stages around the world more diverse and accessible, by inviting audience members to share the stage during a keynote.
Exploring innovative solutions to tech diversity and inclusion.
A community of queer women in and around tech.
A speaking agency representing a diverse range of new voices.
Pledge to not be a part of all-male panels.
Pledge to not be a part of all-male panels.
To recommend a Resource, please contact Smiley!


text:
Justin Bieber Paternity Suit
November 27, 2011 by staff
Justin Bieber Paternity Suit, The interest in the Justin Bieber baby scandal is quickly boiling down after the singer willingly took a paternity test earlier this week.
From the beginning, Justin has said that he claims were completely bogus but now, his mentor, Usher is speaking out on the paternity suit that rocked the entertainment industry.
Usher – who performed alongside Justin for his Today Show appearance earlier this week – obviously stands by his young protégé, telling TMZ cameras that Justin has not asked him for his advice on the baby mama drama and that rumors like this simple "come with the territory."
Justin took the paternity test this week but the results have not been released. Mariah Yeater (the 20-year-old woman claiming that Justin is the father of her baby) has not submitted a DNA test of the baby.
According to Yeater's lawyers, the proper protocol that they wanted was not followed with Justin's paternity test and they will be asking the court for a new one.
Please feel free to send if you have any questions regarding this post , you can contact on
Disclaimer: The views expressed on this site are that of the authors and not necessarily that of U.S.S.POST.


text:
5pcs Canvas Panel Painting's Wooden Inner Frame
If you have a canvas only print and you want it framed, these are the frames you need if you bought the 5 panel art work. Please make sure you know the size of your canvas. A fun DIY project. Staple the canvas on this frame and you can hang it on your wall.
Note: These are only wood frames (back mounting), no canvas included!
There are free hooks and nails included.
- 8"x14"x(2), 8"x18"x(2), 8"x22"(1)
- 20x35cmx(2), 20x45cmx(2), 20x55cmx(1)
- 12"x20"x(2), 12"x28"x(2), 12"x32"(1)
- 30x50cmx(2), 30x70cmx(2), 30x80cmx(1)
- 16"x24"x(2), 16"x32"x(2), 16"x40"(1)
- 40x60cmx(2), 40x80cmx(2), 40x100cmx(1)
Other Sizes Medium:
- Medium: 8"x22"(1), 8"x16"(4)
- 20x55cm(1), 20x40cm(4)
Other Sizes Large:
- 12"x32"(1), 12"x24"(4)
- 30x80cm(1), 30x60cm(4)
This awesome product has FREE US Shipping from our international warehouse - only for a limited time. Please allow 2-4 weeks for US delivery. International add one week.


text:
flownation 2 by Feni-xWatch
©2005-2017 Feni-x
gravity vs enapdexz
wow just one word AMAZING
Sweet design!
exploding angel anyone?
heavy!!!!... yeah that looks cool ....looks more organic and natural 2d works well ...keep it up ...btw r u using bryce for all the 3d??
beautiful concept
excellent use of colors
and placement
excellent use of colors
and placement
gr8 work nice colors too
very nice man i like it !!
Now this is sexy.
pretty neat!
Unique piece and 2d is sexy bro Fav for you
nice work!
very unique i like this cool colors!
cool style!
oohhh amazing!
AWESOME!!! i love it
Awesome work. +Fav
woah woah woah awsome piece
i like the first one better, even though this one is still good, the first one is a bit cleaner
cool :>
Bryce? Photoshop? nice design dawg.
preety cool m8
really sweet man!
O.o thats awesom!!!!
what fotn did you use??
what fotn did you use??
Great design! Messy, chaotic, and a little bit of grunge. I love it. Keep up the nice work.
brilliant piece. for awesome. keep it up, m8!
srednio mi podchodzi
Absolutely beautiful
wow..awesome stuff!


text:
General enquiries
+44 (0) 20 7079 4399
Call HCA from 8am-8pm Mon-Fri and 9am-5pm Sat
HCA Healthcare UK
HCA Press Releases
HCA Healthcare UK press statement in response to the CMA final report
A HCA Healthcare UK spokesman said;
"HCA Healthcare UK welcomes the conclusion of the CMA's market review, and its decision that no further market remedies are required. We will continue to invest in delivering high quality care across our network of facilities."
Back to Press Releases
© copyright 2008 - 2017 HCA Healthcare UK.
Registered Name: HCA International Limited; The part of the UK in which it is registered: England and Wales;
Registered Number: 03020522; Registered Office Address: 242 Marylebone Road London NW1 6JL.
£500m has been invested by HCA International in the latest medical technologies and facilities over the last 10 years.
Your hospital will be one of our world-class private hospitals: HCA's world-class hospitals are accredited by The CHKS Accreditation Unit, a leading provider of healthcare intelligence and quality improvement services. The accreditation is a measure of the overall quality of a hospital and hospitals with CHKS accreditation have been shown to provide a better quality of service.
Your safety will be protected because we have more critical care beds than any other private hospital group: HCA hospitals achieved 100% compliance with all Care Quality Commission inspected outcomes of care in 2011.
Your treatment will be undertaken using the most advanced diagnostic and treatment facilities: Oliver Wyman, Corporate Accounts: Driving quality and value, January 2012.


text:
Light+Building 2016
13.03.2016 - 18.03.2016 — Hall: 8.0 Stand: G 92
For more than a decade, ISSENDORFF KG, covers all requirements of modern building automation with its LCN system and provides conprehensive and comfortable building control.
Already today, LCN controls the heating and ventilation system, shutters and blinds in innummerable buildings. The interior and external lightingis also controlled by LCN following your personal taste and needs. Parallel to that, LCN takes over reliable supervision and comprehensive alarm systems with multi-zone capability.
And at the building owner´s delight, it lowers his energy costs by up to 40%.
One special feature of LCN is the flexibility of the system. From just a little project to large buildings, from a single family house to an office tower with 50, 60, 100 or more floors – LCN gets any building under control – fast and safe.
LCN stands for comprehensive and comfortable building control offering the best value for money. By being inexpensive as for the components needed and easy installation, the costs with LCN remain within reasonable limits. LCN adapts to all personal needs any time.
With LCN you are today on tomorrow´s state of the art.
LCN-GTS10D Glass touch keypad with bevelled edges, 6+4 keys, 2.8" colour display and integr. temperature sensor
LCN-GTS10D Glass touch keypad with bevelled edges, 6+4 keys, 2.8" colour display and integr. temperature sensor
The LCN-GTS10D is an information keypad with TFT display. It is intended for installation on two...
The LCN-EGR is an EnOcean gateway to operate EnOcean inputs, outputs and sensors on a LCN module...
LCN-GVS Global Visualisation System
LCN-GVS Global Visualisation System
LCN-GVS is a central server for visualisation which can control and administrate nearly any...
LCN-GFPS Fingerprint sensor in GT design
LCN-GFPS Fingerprint sensor in GT design
The LCN-GFPS is a fingerprint sensor for the I-port of any LCN module with version 190512 (Mai...
LCN-UPP Universal switch and dimming module for wall mounting
LCN-UPP Universal switch and dimming module for wall mounting
The LCN-UPP flush mounted module is a sensor-actuator for the LCN Bus system. It has two...


text:
Passion8 - Sensor Music Player
by: Tetrissoft • 354
All Android applications categories
by: Tetrissoft • 354
***Must have app***
Passion8 (Passionate) Sensor Music Player is small but packed with smart features. It's the best music player for your android phone. This music player comes with simple user interface and with all the controls packed on a single screen(like seekbar,play/pause,storage location). You can add and remove songs from playlist with one touch and wave to change song.It consist of three different modes(A-Z, QuickList, Recently Added).
*** This app is 100% ads free ***
*** No need to unlock screen ***
#change songs with wave or tap over sensor even if screen is locked
Key Features : -
*Swipe Menu : Swipe right or touch on the p8 icon located on the top left corner to open the menu with exciting features.
* Wave over : Wave your hand in front of your device (5cm max) to change the current song or place your finger over the proximity sensor.The proximity sensor is generally located around the device front speaker(Proximity sensor can be turned on\off )
*Quick List : A new feature, add songs to quick list by touching the song image. To remove songs from quick list touch the remove(X) icon. To remove all the songs at once, touch the delete bin on the action bar on top.
*Recently Added : It contains all the songs sorted by date. Last added songs come on the top of the list.
*A-Z : Songs sorted in alphabetical order.
*Storage Location : The complete path of the song can be seen at the bottom of the screen below the seekbar.
* Shuffle/Repeat/Exit : Touch the menu key to get the shuffle, repeat and exit options.
***Absolutely free***
from 354 reviews
Download Passion8 - Sensor Music Player
Free - V1.0 - 507K
Sorry ...
This app is no longer available.
Share this app