GB2435728A - A method for choosing a compression algorithm - Google Patents

A method for choosing a compression algorithm Download PDF

Info

Publication number
GB2435728A
GB2435728A GB0704010A GB0704010A GB2435728A GB 2435728 A GB2435728 A GB 2435728A GB 0704010 A GB0704010 A GB 0704010A GB 0704010 A GB0704010 A GB 0704010A GB 2435728 A GB2435728 A GB 2435728A
Authority
GB
United Kingdom
Prior art keywords
data
record
compression
image
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB0704010A
Other versions
GB0704010D0 (en
Inventor
John Roe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Symbian Software Ltd
Original Assignee
Symbian Software Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB0604136A external-priority patent/GB0604136D0/en
Application filed by Symbian Software Ltd filed Critical Symbian Software Ltd
Publication of GB0704010D0 publication Critical patent/GB0704010D0/en
Publication of GB2435728A publication Critical patent/GB2435728A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/06Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed using colour palettes, e.g. look-up tables
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A method for choosing a compression algorithm for the set of data e.g. images or videos, the method comprising: processing the data; deriving from the processing step details one or more attributes of the data; generating a record on the basis of the details; and using the record set to select a suitable compression algorithm from a series of compression algorithms for compressing the data. An alternative method to using the above mentioned method can comprise: Compress the data with two compression algorithms, record the most efficient compression algorithm giving the smallest size and make the record available for future use e.g. selecting a suitable compression algorithm. An operating system and computing device for selecting a compression algorithm is also disclosed.

Description

<p>1 2435728</p>
<p>DATA COMPRESSION</p>
<p>The present invention relates to improving data compression processes.</p>
<p>In the present discussion the term computing device' is intended to include, without being limited to, Desktop and Laptop computers, Personal Digital Assistants (PDAs), Mobile Telephones, Smartphones, Digital Cameras and Digital Music Players. It also includes converged devices incorporating the functionality of one or more of the classes of device already mentioned, together with many other industrial and domestic electronic appliances.</p>
<p>In the field of computing, data compression is commonly used to reduce the size of files, which may represent data or instructions to a computer.</p>
<p>Compression is used to reduce the corresponding requirement for computing resources such as hard drive space, RAM or ROM, or bandwidth or transfer time in the case of data transfer.</p>
<p>In the following discussion, the specific case of computer graphics will be explained by way of example, but it will be clear to a person skilled in the art that the principles discussed are equally applicable to other fields of computing.</p>
<p>In the field of graphics it is commonly desirable to compress bitmap files. A bitmap is a representation of an image in terms of the grid of pixels that define it, such that the colour of each pixel is individually defined. A bitmap is characterised by the width and height of the image in pixels, and the number of bits used per pixel to represent the colour of the pixel. In the example of a bitmap that is made up of red, green and blue (RGB), each pixel is typically defined by one byte of data, with that byte representing one of red, green and blue. Images with low colour requirements have less information per pixel; for example a bitmap with only black and white pixels requires only a single bit to define each pixel.</p>
<p>There are a number of techniques available for compressing bitmaps, such as those based on palette encoding or Run Length Encoding (RLE), which are each described below. These techniques, together with other techniques intended for the same purpose, are specifically aimed at reducing the size of a bitmap while allowing the compressed data to be quickly decompressed so that it can be drawn to a screen when desired without a significant delay. This is in contrast to some other techniques for compressing bitmaps, such as the JPEG standard, since it takes a relatively long time to decompress a JPEG file.</p>
<p>Palette encoding and RLE techniques will now be described by way of</p>
<p>background to this invention.</p>
<p>A palette, in the field of computer graphics, is a range of colours supported by a computer graphics system. Each colour in the palette is assigned a number, and one of these numbers may be assigned to each pixel of an image to define its colour.</p>
<p>A number of implementations of palette encoding are known, some of which are lossy, meaning that from the compressed version of data it cannot be guaranteed that the original version can be exactly reproduced, and some of which are lossless, meaning that exact reproduction of the original data is possible.</p>
<p>One type of lossy palette encoding involves approximating a precise colour from a large palette to a similar colour in a reduced palette. Fewer colours may thus be used to define a bitmap, so some detail may be lost in the compression.</p>
<p>A lossless type of palette encoding involves counting the number of colours appearing in a given image, or group of images, and defining a reduced palette such that each colour can be uniquely identified by an appropriate number of bits: in a simple example where three colours are used, 2 bits can be used to uniquely define each of the colours. Similarly, if 16 colours were used, then 4 bits would be needed to represent each one. It can be seen that the fewer colours that are used in the source image, the more compression can be achieved.</p>
<p>Graphics applications with low colour depths (say, from 4 to 8 bits per pixel) are usually associated with a modifiable reduced palette of colours, also referred to as a pseudocolour palette. This modifiable palette contains variable indices to the full palette of associated display hardware, such that for a given image a suitable subset of colours may be selected from the full palette. For instance, in the 256-colour mode of the video graphics array (VGA) standard, 256 colours can be chosen from a total palette of 262,144 colours to define a given image. Pseudocolour thus allows images to be stored using a relatively modest amount of graphics memory.</p>
<p>RLE is a lossless data compression technique that involves identifying sequences of the same data value and replacing them with a representation of the sequence. Specifically, a count number is used to identify the number of instances of the data value in a given sequence, and a control character is used to indicate that the character is part of a representation of a replaced sequence. A single instance of the relevant data value is also retained in the replacement sequence.</p>
<p>For example, consider the following set of data containing 16 bytes:</p>
<p>ABBBBBBBBCDEEEEF</p>
<p>This contains a single instance of the data value "A", followed by 8 instances of the data value "B", single instances of "C" and "D" 4 instances of "E" and finally a single instance of "F".</p>
<p>By replacing multiple instances of the same data value occurring in sequence, with a representation of those multiple instances, a saving in the length of the set of data can be achieved. Using RLE encoding, the string BBBBBBBB can be represented by (i) a control character (e.g. *) indicating that a data string has been replaced by a representation of the string; (ii) a number indicating the number of instances of a given data value in the string; and (iii) a single instance of the data value itself. Thus, using RLE encoding, the 16 bytes can be compressed to 10 bytes of data: A *88 CD *4E F The above example of RLE involves a trivial set of data provided merely for the purpose of illustration. In general, RLE can be adapted for its intended application, for example by specifying particular sequences of patterns that are known to exist in certain sets of data.</p>
<p>Various encoding methods have wildly different performance and compression impacts according to characteristics of the source data. For example, RLE encoding works well with large colour blocks but is does not work very well in continuous colour tone images like photographs, since there tend not to be significant instances of repeated sequences of data values.</p>
<p>With reference to the above RLE example, it will be appreciated that this technique is really only appropriate where strings of four or more instances of the same data value occur: three bytes are used to represent a data string in RLE compression, so no saving can be made by encoding strings of three or less characters.</p>
<p>Palette encoding works well with low colour counts, but is less effective for images with high colour counts.</p>
<p>It is generally impractical to try all available compression techniques when selecting an appropriate technique for a given set of data. This would take large amounts of time and computing resources, and therefore it is often not feasible in practice to find the optimum compressor for a particular bitmap. In particular, requiring a computer program to choose the most appropriate compression technique for a set of data at runtime would be computationally prohibitive. In practice this leads to inappropriate compression techniques being selected for some applications. It should be noted that this general problem applies not just to image data but to many different types of data.</p>
<p>According to a first aspect of the present invention there is provided a method for enabling improvements in data compression, the method comprising: processing the set of data; deriving from the processing step details of one or more attributes of the set of data; generating a record on the basis of the said details; and making the record available to a subsequent compression process for use in selecting a suitable one from a series of compression algorithms for compressing the set of data.</p>
<p>The step of making the record available could comprise identifying the record with the set of data such that a computer program can take the record as an item of input during the subsequent compression process.</p>
<p>The processing step may be a step of converting the set of data from a first format into a second format. In the second format the data can be output to a user via output means of a computing device.</p>
<p>The set of data could represent one or more images, and the processing step could be a step of rasterising the set of data.</p>
<p>The second format may be digital image data. The first format may be one of: MBM; JPG; GIF; PNG; or SVG.</p>
<p>The step of generating a record could involve determining a suitable compression algorithm and specifying the determined algorithm in the record.</p>
<p>The step of generating a record could involve specifying details of the one or more attributes in the record.</p>
<p>The record could include details of one or more of the following attributes: image type; the number of different colours in the image; the level of complexity of the image; the number of distinct shapes in the image; the presence of large areas of an individual colour.</p>
<p>Te step of making the record available may comprise embedding the record into the set of data, and/or it may comprise associating the record with the set of data in the form of metadata.</p>
<p>The step of making the record available preferably comprises making an entry in a data structure identifying (i) the set of data, and (ii) the associated record.</p>
<p>The method could further comprise the step of selecting a suitable one from the series of compression algorithms, taking the said record as input in the selection step.</p>
<p>It could also comprise applying the selected compression algorithm to the set of data to generate a compressed set of data.</p>
<p>The method could further comprise storing the compressed set of data in randomly accessible memory.</p>
<p>According to a second aspect of the present invention there is provided a method of selecting a compression algorithm for compressing a set of data, the method comprising accessing a record associated with the set of data, and using the record to select a suitable one from a series of compression algorithms, wherein the record contains information indicating a suitable compression algorithm for compressing the set of data.</p>
<p>There is further provided a method for handling a set of data comprising: loading a set of data into randomly accessible memory; converting the set of data from a first format into a second format; and performing the method set out above.</p>
<p>The method could further comprise the step of applying the selected compression algorithm to the set of data to generate a compressed set of data.</p>
<p>It could also comprise storing the compressed set of data in randomly accessible memory.</p>
<p>According to a second aspect of the invention there is provided an operating system arranged to cause a computing device to perform the method defined above.</p>
<p>According to a third aspect of the invention there is provided a computing device configured to perform the method defined above.</p>
<p>The computing device could further comprise a processor, wherein the said steps of processing the set of data, deriving details, and generating a record, are performed by the processor during idle periods.</p>
<p>According to a fourth aspect of the present invention there is provided a computing device arranged to: compress a set of data by means of a first compression algorithm; compress a set of data by means of a second compression algorithm; generate a record indicating which of the first and second compression algorithms resulted in a smaller compressed set of data; and make the record available to a subsequent compression process for use in selecting a suitable one of the first and second compression algorithms for compressing the set of data.</p>
<p>The computing device could further comprise a processor, wherein the steps of compressing the set of data by means of first and second algorithms are performed during idle periods of the processor.</p>
<p>A preferred embodiment of the invention involves the introduction of a compression "hint" into a bitmap. This can allow a compression process to select a highly appropriate compression technique for a given set of data, and can thus provide improvements in memory usage and overall computing device performance.</p>
<p>The invention will now be described by way of example with reference to the accompanying drawings, in which: Figure 1 is a schematic illustration of the generation of a record according to the invention; Figure 2 shows the selection of a compression algorithm using a record; and Figure 3 illustrates steps involved in loading and displaying an image.</p>
<p>A preferred embodiment of the present invention involves the production of a compression hint in the form of metadata attached to a bitmap. The hint is generated from information derived when an image file is converted from scalable vector graphics (SVG) format into digital image data (i.e. a bitmap), as explained below.</p>
<p>SVG is a format for representing an image in which the image is defined by its constituent vectors -shapes, lines or regions of colour. With the image in this format, a data processor can relatively easily determine attributes of the image that may cause it to be suitable for one type of compression but not another.</p>
<p>Let us consider three example images, in order to illustrate the possible uses of the two compression techniques described above: i) The first image has a low colour count, but very high complexity -perhaps a digital photograph of a crowd scene. Here, palette encoding would be suitable, since only two colours are required on the palette.</p>
<p>ii) The second image has a high colour count but low complexity. Here, RLE iii) The third image has both a low colour count and a low complexity. Here, RLE and palette encoding could both be applied if desired, one after the other, to achieve a high level of compression.</p>
<p>In a practical computing device, before being displayed on a screen an image may first need to be rasterised, or converted from its initial format into a bitmap. The requirement for this conversion step will depend on the initial format, which may be any format recognised by the operating system of a computing device, for instance: My Bitmap (.mbm); bitmap (.bmp); JPEG (.jpg); Graphics Interchange Format (.gif); Portable Network Graphics (.png); scalable vector graphics (.svg). The rasterised file is placed in RAM so that it can be accessed for drawing to the display or for manipulation.</p>
<p>In conventional computing devices the bitmap in RAM may be compressed so that it requires less space in RAM. This step is especially likely if the computing device is a portable device having limited memory resources. Due to the constraints of time and computing resources, as discussed above, and the impracticality of selecting a compression technique on a bitmap-by-bitmap basis, such compression will usually be carried out according to a single, pre-determined compression algorithm, which may be unsuitable for the content of the bitmap.</p>
<p>It is an aim of the present invention to improve the quality of compression of this bitmap. In particular, it is an aim of the invention to enable fast and intelligent selection of an appropriate scheme for use in compressing the bitmap. It has been shown above that the contents of a bitmap file can make a significant difference to whether a particular compression algorithm will be effective.</p>
<p>In the preferred embodiment of the invention, the phase of rasterising an image into bitmap format is utilised to provide relevant information suitable for subsequent use in selecting a compression algorithm with which to compress the resulting bitmap. However, a separate analysis stage could alternatively be used for reviewing the original image in any format in order to generate a compression hint.</p>
<p>The preferred embodiment is iflustrated in Figure 1 for the case of an image resident in the ROM of a computing device as an SVG file.</p>
<p>In step 1, the SVG is loaded from ROM into RAM. This may be on request from a user wishing to view the image, or it could occur automatically, for example when an application is being launched.</p>
<p>Once in RAM, the SVG file is rasterised to produce a bitmap in step 2.</p>
<p>In step 3, information derived from the rasterising step is collected and placed in a record, shown in Figure 1 as a hint. This hint may include details of the content of the image -referring again to the example above of a white background with a blue circle and red square, the information could be "THREE COLOURS"; or "THREE COLOURS; iWO SHAPES" -or alternatively it could provide an instruction to use a particular compression technique that is deemed suitable to the content of the bitmap, for example "ALGORITHM 3".</p>
<p>Step 4 illustrates storing the rasterised image data in RAM, and associating the image with its hint.</p>
<p>After step 4, the bitmap is ready to be drawn to a display.</p>
<p>Considering step 3 in more detail, it was noted above that SVG is a format in which certain information regarding the content of an image can relatively easily be assessed. The process of rasterising the image from SVG into a bitmap involves some analysis of the content of the data: specifically, it requires each element of the SVG file to be translated into a corresponding set of pixels. For example, the blue circle will be identified in the SVG file, in order that it can be mapped by the rasterisation process onto pixels in the corresponding positions, and the pixels will then be defined in a bitmap as "blue".</p>
<p>In carrying out the analysis of the SVG file to convert it to a bitmap, the rasterisation process therefore encounters information that is relevant to the selection of a good compressor. This information -a byproduct of the processing step -is captured and utilised in the preferred embodiment of the invention. For example, a simple counter could be incremented each time a different colour is encountered during rasterisation to provide a total number of colours in the image.</p>
<p>As indicated above, the information from the rasterising step could be collected and used to populate a record giving relevant features of the image, or alternatively the information could be processed further and used directly to determine a suitable compressor for the image. For example, step 3 could involve a selection algorithm being run on the information derived from the rasteriser, the selection algorithm taking as its input one or more properties of the image, and comparing these against threshold values of those properties defined for each of a number of available compression techniques so as to provide output representing the most suitable of the available compression techniques. This output could then be stored as a hint against the bitmap.</p>
<p>Suitable attributes of the image for inclusion in the record, or for analysis in order to provide an indication of a compression technique, could be: type of content (e.g. photo), colour count, presence of a large area of a single colour, complexity of content, or any other property that could influence the suitability of one type of compression compared with another.</p>
<p>Considering now Figure 2, further steps in the processing of the bitmap of Figure 1 will be discussed.</p>
<p>Step 5 follows immediately from step 4: a selection process takes places, involving accessing the hint produced in step 3. This hint is used to determine which of a set of compression algorithms available in the computing device would be suitable for compressing the bitmap. In this example, RLE is determined to be suitable.</p>
<p>Subsequently, the bitmap held in RAM is processed according to the RLE algorithm available on the computing device, resulting in a file of reduced size which is then placed in RAM. The compressed image is available at any time to be decompressed and drawn to the device's display. In the meantime, it is consuming less RAM space than the uncompressed version, thus making additional RAM available to other processes running on the device.</p>
<p>In the preferred embodiment, the hint is stored in a data structure in the computing device, together with an identifier of the image. In this way, the next time the image is loaded from ROM the data structure can be accessed and RLE can be immediately identified as an appropriate compression technique. Thus, on subsequently loading the SVG image from ROM, the SVG can be rasterised and immediately compressed by the RLE algorithm and stored in RAM, without first generating a hint, and, in the case that the hint directly identifies a compression technique, without first selecting a compression technique.</p>
<p>It can therefore be seen that, instead of relying on a default compression algorithm for all bitmaps, and instead of doing lengthy tests to select an appropriate compression algorithm, an efficient mechanism can be used to expedite the selection of a suitable algorithm so that improved compression can be achieved, and in a relatively short time. In the example of bitmap compression, an optimal compression technique can make a significant impact on the requirement for RAM. A typical bitmap compressed by a sub-optimal algorithm may require 100kB of space, while the same bitmap when optimally compressed may require only 20kB -a saving of 80%.</p>
<p>An alternative implementation of the invention could involve producing the record, or hint, prior to the first loading of the image file in RAM. This could be achieved by the device that generated the image, perhaps a digital camera or a PC. This could be done directly from the image in the format in which it was created, or it could involve a conversion from the initial format into a different format (e.g. JPEG to bitmap), with the information contained in the record being derived from the conversion process.</p>
<p>The record so generated could then be embedded in the image file as metadata, or attached to the image in the form of a flag field, or linked to in some way that ensures association between the record and the image. In a specific example, if the original image is in JPEG form, the record could be included as JPEG metadata.</p>
<p>Figure 3 shows the operation of a computing device when it receives an image file pre-tagged with a compression hint. In this example, the image arrives at the device from the internet in JPEG format containing metadata indicating properties of the image.</p>
<p>The JPEG file is placed in RAM and converted to a bitmap. The hint is subsequently read by a compression algorithm selection program, which accordingly chooses an appropriate compression technique for the algorithm.</p>
<p>The compressed bitmap is retained in RAM until the image is to be displayed on the device, at which point it is decompressed and drawn to a screen for viewing. In preferred embodiments, the step of decompressing the bitmap for drawing it to a screen is performed at runtime, i.e. while a process for drawing the image to the screen is running. This is feasible since the selected compression algorithm is such that fast decompression can be achieved.</p>
<p>It will be understood by the skilled person that one potential advantage of using embodiments of the invention is that, as well as requiring less RAM in a computing device, an efficiently compressed bitmap can enable uploading to occur more quickly, for example when sending images to a web server from a mobile device.</p>
<p>Extensions of the concepts described herein can be envisaged by the applicant. For example, a control process could be implemented to apply a less effective compression technique when there is ample space available in RAM, thereby potentially saving processing time in compressing the data, and to apply a more effective, but more time-consuming and processor-consuming, compression technique when RAM availability is low. Additionally, a control process could be implemented on a computing device to use different compression algorithms according to the available power: it could use a less effective but simpler algorithm when the device is running on a battery, say, than when it is running on mains power. Where no hint is currently available for an item of data, and the item is known to be frequently used, various available compressors could be used on different occasions and the results could gradually be collected in order to provide a hint indicating the most effective algorithm available.</p>
<p>It will be clear that the invention is not limited to the specific applications described above. It could be used for other types of data as well as images, for example video or executable code, or for series of related files such as bitmaps. In the case of video data and executable code, the processes described above could be incorporated into codecs or executable code compressors.</p>
<p>As a further embodiment of the invention, it is conceivable that a computer program could be arranged to assess an optimal one of a set of available compression techniques using a trial-and-error procedure. The program could cause a set of data to be sequentially compressed and decompressed by means of each of the available compression techniques. A record could then be created to indicate which of the available techniques provided the smallest compressed file, and this record could subsequently be used by any computing device in selecting a compression algorithm. In one specific embodiment, the record could contain an ordered list indicating the most effective algorithm, the seáond most effective algorithm, the third most effective, and so on so that any computing device providing any one or more of the listed algorithms could make use of the record.</p>
<p>As a further development of this concept, the CPU of a computing device could be utilised for the trial-and-error compression only during idle periods, so that other processes of the computing device would not be affected.</p>
<p>In an alternative embodiment, a human could analyse an image, either by viewing the image itself or by viewing the data defining the image, and make an assessment as to an appropriate compression algorithm for compressing the image. An indication of the chosen algorithm (or algorithms) could then be placed in a record to be embedded in, attached to, or otherwise associated with the image.</p>
<p>It will be understood by the skilled person that many alternative implementations of the general principles of the invention are possible, and that various modifications of the methods and implementations described above may be made within the scope of the invention, as defined by the appended claims.</p>

Claims (1)

  1. <p>CLAIMS</p>
    <p>1. A method for enabling improvements in data compression, the method comprising: processing the set of data; deriving from the processing step details of one or more attributes of the set of data; generating a record on the basis of the said details; and making the record available to a subsequent compression process for use in selecting a suitable one from a series of compression algorithms for compressing the set of data.</p>
    <p>2. A method according to claim 1 wherein the step of making' the record available comprises identifying the record with the set of data such that a computer program can take the record as an item of input during the subsequent compression process.</p>
    <p>3. A method according to claim 1 or claim 2 wherein the processing step is a step of converting the set of data from a first format into a second format.</p>
    <p>4. A method according to claim 3 wherein in the second format the data can be output to a user via output means of a computing device.</p>
    <p>5. A method according to any preceding claim wherein the set of data represents one or more images.</p>
    <p>6. A method according to claim 5 wherein the processing step is a step of rasterising the set of data.</p>
    <p>7. A method according to claim 5 or claim 6 wherein the second format is digital image data.</p>
    <p>8. A method according to any of claims 5 to 7 wherein the first format is one of: MBM; JPG; GIF; PNG; or SVG.</p>
    <p>9. A method according to any preceding claim wherein the step of generating a record involves determining a suitable compression algorithm and specifying the determined algorithm in the record.</p>
    <p>10. A method according to any preceding claim wherein the step of generating a record involves specifying details of the one or more attributes in the record.</p>
    <p>11. A method according to claim 10 as dependent on any of claims 5 to 8 wherein the record includes details of one or more of the following attributes: image type; the number of different colours in the image; the level of complexity of the image; the number of distinct shapes in the image; the presence of large areas of an individual colour.</p>
    <p>12. A method according to any preceding claim wherein the step of making the record available comprises embedding the record into the set of data.</p>
    <p>13. A method according to any preceding claim wherein the step of making the record available comprises associating the record with the set of data in the form of metadata.</p>
    <p>14. A method according to any preceding claim wherein the step of making the record available comprises making an entry in a data structure identifying (i) the set of data, and (ii) the associated record.</p>
    <p>15. A method according to any preceding claim further comprising the step of selecting a suitable one from the series of compression algorithms, taking the said record as input in the selection step.</p>
    <p>16. A method according to claim 15 further comprising applying the selected compression algorithm to the set of data to generate a compressed set of data.</p>
    <p>17. A method according to claim 16 further comprising storing the compressed set of data in randomly accessible memory.</p>
    <p>18. A method of selecting a compression algorithm for compressing a set of data, the method comprising accessing a record associated with the set of data, and using the record to select a suitable one from a series of compression algorithms, wherein the record contains information indicating a suitable compression algorithm for compressing the set of data.</p>
    <p>19. A method according to claim 18 wherein the record contains details of one or more attributes of the set of data.</p>
    <p>20. A method according to claim 18 or claim 19 wherein the record contains an identifier of a compression algorithm.</p>
    <p>21. A method for handling a set of data comprising: loading a set of data into randomly accessible memory; converting the set of data from a first format into a second format; and performing the method of claim 18.</p>
    <p>22. A method according to any of claims 18 to 21 further comprising the step of applying the selected compression algorithm to the set of data to generate a compressed set of data.</p>
    <p>23. A method according to claim 22 further comprising storing the compressed set of data in randomly accessible memory.</p>
    <p>24. An operating system arranged to cause a computing device to perform the method of any preceding claim.</p>
    <p>25. A computing device configured to perform the method of any of claims 1 to 23.</p>
    <p>26. A computing device according to claim 25 and comprising a processor, wherein the said steps of processing the set of data, deriving details, and generating a record, are performed by the processor during idle periods.</p>
    <p>27. A computing device arranged to: compress a set of data by means of a first compression algorithm; compress a set of data by means of a second compression algorithm; generate a record indicating which of the first and second compression algorithms resulted in a smaller compressed set of data; and make the record available to a subsequent compression process for use in selecting a suitable one of the first and second compression algorithms for compressing the set of data.</p>
    <p>28. A computing device according to claim 27 comprising a processor, wherein the steps of compressing the set of data by means of first and second algorithms are performed during idle periods of the processor.</p>
GB0704010A 2006-03-01 2007-03-01 A method for choosing a compression algorithm Withdrawn GB2435728A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0604136A GB0604136D0 (en) 2006-03-01 2006-03-01 Improvements related to the delivery of embedded software and usage of memory in a computing device
PCT/GB2007/000720 WO2007099327A2 (en) 2006-03-01 2007-03-01 Data compression

Publications (2)

Publication Number Publication Date
GB0704010D0 GB0704010D0 (en) 2007-04-11
GB2435728A true GB2435728A (en) 2007-09-05

Family

ID=39020778

Family Applications (1)

Application Number Title Priority Date Filing Date
GB0704010A Withdrawn GB2435728A (en) 2006-03-01 2007-03-01 A method for choosing a compression algorithm

Country Status (2)

Country Link
GB (1) GB2435728A (en)
WO (1) WO2007099327A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105430393B (en) * 2014-09-19 2020-02-11 腾讯科技(深圳)有限公司 Picture processing method, picture processing device, picture processing platform and storage medium
US9858284B2 (en) 2015-04-21 2018-01-02 International Business Machines Corporation Crowd sourced data sampling at the crowd
US9838495B2 (en) 2015-04-21 2017-12-05 International Business Machines Corporation Managing data acquisition

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2291528A (en) * 1994-06-22 1996-01-24 Microsoft Corp Display system with data compression
WO1996002895A1 (en) * 1994-07-14 1996-02-01 Johnson Grace Company Method and apparatus for compressing images
EP0729237A2 (en) * 1995-02-24 1996-08-28 International Business Machines Corporation Adaptive multiple dictionary data compression
WO2001037564A1 (en) * 1999-11-12 2001-05-25 Moonlight Cordless Ltd. Method for enhancing video compression through automatic data analysis and profile selection
US6285458B1 (en) * 1996-07-31 2001-09-04 Fuji Xerox Co., Ltd. Image processing apparatus and method
US20010041014A1 (en) * 1998-01-30 2001-11-15 Kitahiro Kaneda Image processing device and method and memory medium
WO2002031755A1 (en) * 2000-10-10 2002-04-18 Wordwalla, Inc. System, method and computer program product for lossless compression for bitmaps
US20020071663A1 (en) * 2000-12-07 2002-06-13 O'donnel John Setel Digital video recording system having multi-pass video processing
US20020116358A1 (en) * 2001-02-09 2002-08-22 International Business Machines Corporation Method to reduce storage requirements when storing semi-redundant information in a database
WO2003001748A1 (en) * 2001-06-21 2003-01-03 Ziplabs Pte Ltd. Method and apparatus for compression and decompression of data
US6747762B1 (en) * 1999-11-05 2004-06-08 Sharp Laboratories Of America, Inc. Method for optimizing compression of scanned data
US6912317B1 (en) * 1999-11-24 2005-06-28 General Electric Company Medical image data compression employing image descriptive information for optimal compression

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638498A (en) * 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
WO2001069937A2 (en) * 2000-03-13 2001-09-20 Point Cloud, Inc. Two-dimensional image compression method
US6577254B2 (en) * 2001-11-14 2003-06-10 Hewlett-Packard Development Company, L.P. Data compression/decompression system

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2291528A (en) * 1994-06-22 1996-01-24 Microsoft Corp Display system with data compression
WO1996002895A1 (en) * 1994-07-14 1996-02-01 Johnson Grace Company Method and apparatus for compressing images
EP0729237A2 (en) * 1995-02-24 1996-08-28 International Business Machines Corporation Adaptive multiple dictionary data compression
US6285458B1 (en) * 1996-07-31 2001-09-04 Fuji Xerox Co., Ltd. Image processing apparatus and method
US20010041014A1 (en) * 1998-01-30 2001-11-15 Kitahiro Kaneda Image processing device and method and memory medium
US6747762B1 (en) * 1999-11-05 2004-06-08 Sharp Laboratories Of America, Inc. Method for optimizing compression of scanned data
WO2001037564A1 (en) * 1999-11-12 2001-05-25 Moonlight Cordless Ltd. Method for enhancing video compression through automatic data analysis and profile selection
US6912317B1 (en) * 1999-11-24 2005-06-28 General Electric Company Medical image data compression employing image descriptive information for optimal compression
WO2002031755A1 (en) * 2000-10-10 2002-04-18 Wordwalla, Inc. System, method and computer program product for lossless compression for bitmaps
US20020071663A1 (en) * 2000-12-07 2002-06-13 O'donnel John Setel Digital video recording system having multi-pass video processing
US20020116358A1 (en) * 2001-02-09 2002-08-22 International Business Machines Corporation Method to reduce storage requirements when storing semi-redundant information in a database
WO2003001748A1 (en) * 2001-06-21 2003-01-03 Ziplabs Pte Ltd. Method and apparatus for compression and decompression of data

Also Published As

Publication number Publication date
WO2007099327A2 (en) 2007-09-07
WO2007099327A3 (en) 2008-04-10
GB0704010D0 (en) 2007-04-11

Similar Documents

Publication Publication Date Title
KR101146162B1 (en) Adaptive Compression of Multi-Level Images
JP4805924B2 (en) Method, system for multi-mode image processing, and user terminal comprising the system
US8977066B2 (en) Image compression using sub-resolution images
US8005801B2 (en) Aging and compressing multimedia content
JP6703032B2 (en) Backward compatibility extended image format
US20070076971A1 (en) Compression of images for computer graphics
US20060291720A1 (en) Optimized color image encoding and decoding using color space parameter data
US8713456B2 (en) Establishing a graphical user interface (‘GUI’) theme
JP2006085681A (en) File conversion and sharing system and method thereof
CN101449586A (en) Method and system for weighted coding
US8553977B2 (en) Converting continuous tone images
CN109840879B (en) Image rendering method and device, computer storage medium and terminal
JP2014039257A (en) Decoder and decoding method
JP2007082217A (en) Method and device for creating thumbnail of digital image
US8682091B2 (en) Real-time image compression
CN105430393B (en) Picture processing method, picture processing device, picture processing platform and storage medium
JP2019524007A (en) Video compression method and apparatus, and computer program therefor
US8155457B2 (en) Robust encoding of metadata in lossy encoded images
JP2014204175A (en) Image processing apparatus and control method thereof
GB2435728A (en) A method for choosing a compression algorithm
JP4627670B2 (en) Image forming apparatus, image forming method, and computer-readable storage medium storing program for executing the method
US8600181B2 (en) Method for compressing images and a format for compressed images
CN110457264B (en) Conference file processing method, device, equipment and computer readable storage medium
CN111246249A (en) Image encoding method, encoding device, decoding method, decoding device and storage medium
CN102238376A (en) Image processing system and method

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)