Data compression

In, data compression, source coding, or bit-rate reduction involves encoding using fewer s than the original representation. Compression can be either or. Lossless compression reduces bits by identifying and eliminating. No information is lost in lossless compression. Lossy compression reduces bits by removing unnecessary or less important information.

The process of reducing the size of a is often referred to as data compression. In the context of, it is called source coding; encoding done at the source of the data before it is stored or transmitted. Source coding should not be confused with, for error detection and correction or , the means for mapping data onto a signal.

Compression is useful because it reduces resources required to store and transmit data. s are consumed in the compression process and, usually, in the reversal of the process (decompression). Data compression is subject to a. For instance, may require expensive  for the video to be decompressed fast enough to be viewed as it is being decompressed, and the option to decompress the video in full before watching it may be inconvenient or require additional storage. The design of data compression schemes involves trade-offs among various factors, including the degree of compression, the amount of distortion introduced (when using ), and the computational resources required to compress and decompress the data.

Lossless
s usually exploit to represent data without losing any, so that the process is reversible. Lossless compression is possible because most real-world data exhibits statistical redundancy. For example, an image may have areas of color that do not change over several pixels; instead of coding "red pixel, red pixel, ..." the data may be encoded as "279 red pixels". This is a basic example of ; there are many schemes to reduce file size by eliminating redundancy.

The (LZ) compression methods are among the most popular algorithms for lossless storage. is a variation on LZ optimized for decompression speed and compression ratio, but compression can be slow. In the mid-1980s, following work by, the (LZW) algorithm rapidly became the method of choice for most general-purpose compression systems. LZW is used in images, programs such as PKZIP, and hardware devices such as modems. LZ methods use a table-based compression model where table entries are substituted for repeated strings of data. For most LZ methods, this table is generated dynamically from earlier data in the input. The table itself is often. like this can compress highly repetitive input extremely effectively, for instance, a biological data collection of the same or closely related species, a huge versioned document collection, internet archival, etc. The basic task of grammar-based codes is constructing a context-free grammar deriving a single string. Other practical grammar compression algorithms include and Re-Pair.

The strongest modern lossless compressors use models, such as. The can also be viewed as an indirect form of statistical modelling. In a further refinement of the direct use of ling, statistical estimates can be coupled to an algorithm called. Arithmetic coding is a more modern coding technique that uses the mathematical calculations of a to produce a string of encoded bits from a series of input data symbols. It can achieve superior compression compared to other techniques such as the better-known Huffman algorithm. It uses an internal memory state to avoid the need to perform a one-to-one mapping of individual input symbols to distinct representations that use an integer number of bits, and it clears out the internal memory only after encoding the entire string of data symbols. Arithmetic coding applies especially well to adaptive data compression tasks where the statistics vary and are context-dependent, as it can be easily coupled with an adaptive model of the of the input data. An early example of the use of arithmetic coding was in an optional (but not widely used) feature of the image coding standard. It has since been applied in various other designs including, and  for video coding.

Lossy
In the late 1980s, digital images became more common, and standards for lossless emerged. In the early 1990s, lossy compression methods began to be widely used. In these schemes, some loss of information is accepted as dropping nonessential detail can save storage space. There is a corresponding between preserving information and reducing size. Lossy data compression schemes are designed by research on how people perceive the data in question. For example, the human eye is more sensitive to subtle variations in than it is to the variations in color. image compression works in part by rounding off nonessential bits of information. A number of popular compression formats exploit these perceptual differences, including for sound, and s for images and video.

Most forms of lossy compression are based on, especially the (DCT). It was first proposed in 1972 by, who then developed a working algorithm with T. Natarajan and in 1973, before introducing it in January 1974. DCT is the most widely used lossy compression method, and is used in multimedia formats for (such as  and ),  (such as,  and ) and audio (such as ,  and ).

Lossy is used in s, to increase storage capacities. Similarly, s, and  use the lossy.

In lossy audio compression, methods of psychoacoustics are used to remove non-audible (or less audible) components of the. Compression of human speech is often performed with even more specialized techniques; is distinguished as a separate discipline from general-purpose audio compression. Speech coding is used in, for example, audio compression is used for CD ripping and is decoded by the audio players.

Theory
The theoretical basis for compression is provided by and, more specifically,  for lossless compression and  for lossy compression. These areas of study were essentially created by, who published fundamental papers on the topic in the late 1940s and early 1950s. Other topics associated with compression include and.

Machine learning
There is a close connection between and compression. A system that predicts the of a sequence given its entire history can be used for optimal data compression (by using  on the output distribution). An optimal compressor can be used for prediction (by finding the symbol that compresses best, given the previous history). This equivalence has been used as a justification for using data compression as a benchmark for "general intelligence".

An alternative view can show compression algorithms implicitly map strings into implicit s, and compression-based similarity measures compute similarity within these feature spaces. For each compressor C(.) we define an associated vector space ℵ, such that C(.) maps an input string x, corresponds to the vector norm ||~x||. An exhaustive examination of the feature spaces underlying all compression algorithms is precluded by space; instead, feature vectors chooses to examine three representative lossless compression methods, LZW, LZ77, and PPM.

Data differencing
Data compression can be viewed as a special case of : Data differencing consists of producing a difference given a source and a target, with patching producing a target given a source and a difference, while data compression consists of producing a compressed file given a target, and decompression consists of producing a target given only a compressed file. Thus, one can consider data compression as data differencing with empty source data, the compressed file corresponding to a "difference from nothing." This is the same as considering absolute (corresponding to data compression) as a special case of  (corresponding to data differencing) with no initial data.

When one wishes to emphasize the connection, one may use the term differential compression to refer to data differencing.

Image
started in the 1940s with the introduction of, the basis for which was developed in 1950. dates back to the late 1960s, with the introduction of (FFT) coding in 1968 and the  in 1969.

An important technique is the  (DCT), a  technique developed in the early 1970s. DCT compression is the basis for, which was introduced by the (JPEG) in 1992. JPEG compresses images down to much smaller file sizes, and has become the most widely used. Its highly efficient DCT compression algorithm was largely responsible for the wide proliferation of and s.

(LZW) is a algorithm developed in 1984. It is used in the format, introduced in 1987. , a lossless compression algorithm specified in 1996, is used in the (PNG) format.

, the use of in image compression, began after the development of DCT coding. The standard was introduced in 2000. In contrast to the DCT algorithm used by the original JPEG format, JPEG 2000 instead uses (DWT) algorithms. JPEG 2000 technology, which includes the extension, was selected as the  for  in 2004.

Audio
Audio data compression, not to be confused with, has the potential to reduce the transmission and storage requirements of audio data. are implemented in as audio s. Lossy audio compression algorithms provide higher compression at the cost of fidelity and are used in numerous audio applications. These algorithms almost all rely on to eliminate or reduce fidelity of less audible sounds, thereby reducing the space required to store or transmit them.

In both lossy and lossless compression, is reduced, using methods such as, , and  to reduce the amount of information used to represent the uncompressed data.

The acceptable trade-off between loss of audio quality and transmission or storage size depends upon the application. For example, one 640 MB (CD) holds approximately one hour of uncompressed  music, less than 2 hours of music compressed losslessly, or 7 hours of music compressed in the  format at a medium. A digital sound recorder can typically store around 200 hours of clearly intelligible speech in 640 MB.

Lossless audio compression produces a representation of digital data that decompress to an exact digital duplicate of the original audio stream, unlike playback from lossy compression techniques such as and. Compression ratios are around 50–60% of original size, which is similar to those for generic lossless data compression. Lossless compression is unable to attain high compression ratios due to the complexity of s and the rapid changes in sound forms. Codecs like, , and use  to estimate the spectrum of the signal. Many of these algorithms use with the filter [-1 1] to slightly  or  the spectrum, thereby allowing traditional lossless compression to work more efficiently. The process is reversed upon decompression.

When audio files are to be processed, either by further compression or for, it is desirable to work from an unchanged original (uncompressed or losslessly compressed). Processing of a lossily compressed file for some purpose usually produces a final result inferior to the creation of the same compressed file from an uncompressed original. In addition to sound editing or mixing, lossless audio compression is often used for archival storage, or as master copies.

A number of lossless audio compression formats exist. was an early lossless format. Newer ones include (FLAC), Apple's  (ALAC),, Microsoft's  (WMA Lossless), , , and. See for a complete listing.

Some feature a combination of a lossy format and a lossless correction; this allows stripping the correction to easily obtain a lossy file. Such formats include (Scalable to Lossless),, and.

Other formats are associated with a distinct system, such as:
 * , used in
 * , used in, , and

Lossy audio compression
Lossy audio compression is used in a wide range of applications. In addition to the direct applications (MP3 players or computers), digitally compressed audio streams are used in most video DVDs, digital television, streaming media on the, satellite and cable radio, and increasingly in terrestrial radio broadcasts. Lossy compression typically achieves far greater compression than lossless compression (5–20% of the original size, rather than 50–60%), by discarding less-critical data.

The innovation of lossy audio compression was to use to recognize that not all data in an audio stream can be perceived by the human. Most lossy compression reduces perceptual redundancy by first identifying perceptually irrelevant sounds, that is, sounds that are very hard to hear. Typical examples include high frequencies or sounds that occur at the same time as louder sounds. Those sounds are coded with decreased accuracy or not at all.

Due to the nature of lossy algorithms, suffers when a file is decompressed and recompressed. This makes lossy compression unsuitable for storing the intermediate results in professional audio engineering applications, such as sound editing and multitrack recording. However, they are very popular with end users (particularly ) as a megabyte can store about a minute's worth of music at adequate quality.

Coding methods
To determine what information in an audio signal is perceptually irrelevant, most lossy compression algorithms use transforms such as the (MDCT) to convert  sampled waveforms into a transform domain. Once transformed, typically into the, component frequencies can be allocated bits according to how audible they are. Audibility of spectral components calculated using the and the principles of —the phenomenon wherein a signal is masked by another signal separated by frequency—and, in some cases, —where a signal is masked by another signal separated by time. s may also be used to weight the perceptual importance of components. Models of the human ear-brain combination incorporating such effects are often called s.

Other types of lossy compressors, such as the (LPC) used with speech, are source-based coders. These coders use a model of the sound's generator (such as the human vocal tract with LPC) to whiten the audio signal (i.e., flatten its spectrum) before. LPC may be thought of as a basic perceptual coding technique: reconstruction of an audio signal using a linear predictor shapes the coder's quantization noise into the spectrum of the target signal, partially masking it.

Lossy formats are often used for the distribution of streaming audio or interactive applications (such as the coding of speech for digital transmission in cell phone networks). In such applications, the data must be decompressed as the data flows, rather than after the entire data stream has been transmitted. Not all audio codecs can be used for streaming applications, and for such applications a codec designed to stream data effectively will usually be chosen.

Latency results from the methods used to encode and decode the data. Some codecs will analyze a longer segment of the data to optimize efficiency, and then code it in a manner that requires a larger segment of data at one time to decode. (Often codecs create segments called a "frame" to create discrete data segments for encoding and decoding.) The inherent of the coding algorithm can be critical; for example, when there is a two-way transmission of data, such as with a telephone conversation, significant delays may seriously degrade the perceived quality.

In contrast to the speed of compression, which is proportional to the number of operations required by the algorithm, here latency refers to the number of samples that must be analysed before a block of audio is processed. In the minimum case, latency is zero samples (e.g., if the coder/decoder simply reduces the number of bits used to quantize the signal). Time domain algorithms such as LPC also often have low latencies, hence their popularity in speech coding for telephony. In algorithms such as MP3, however, a large number of samples have to be analyzed to implement a psychoacoustic model in the frequency domain, and latency is on the order of 23 ms (46 ms for two-way communication).

Speech encoding
is an important category of audio data compression. The perceptual models used to estimate what a human ear can hear are generally somewhat different from those used for music. The range of frequencies needed to convey the sounds of a human voice are normally far narrower than that needed for music, and the sound is normally less complex. As a result, speech can be encoded at high quality using a relatively low bit rate.

If the data to be compressed is analog (such as a voltage that varies with time), quantization is employed to digitize it into numbers (normally integers). This is referred to as analog-to-digital (A/D) conversion. If the integers generated by quantization are 8 bits each, then the entire range of the analog signal is divided into 256 intervals and all the signal values within an interval are quantized to the same number. If 16-bit integers are generated, then the range of the analog signal is divided into 65,536 intervals.

This relation illustrates the compromise between high resolution (a large number of analog intervals) and high compression (small integers generated). This application of quantization is used by several speech compression methods. This is accomplished, in general, by some combination of two approaches:
 * Only encoding sounds that could be made by a single human voice.
 * Throwing away more of the data in the signal—keeping just enough to reconstruct an "intelligible" voice rather than the full frequency range of human.

Perhaps the earliest algorithms used in speech encoding (and audio data compression in general) were the and the.

History
In 1950, filed the patent on  (DPCM). (ADPCM) was introduced by P. Cummiskey, and  at  in 1973.

was first used for compression, with  (LPC). Initial concepts for LPC date back to the work of  and Shuzo Saito  in 1966. During the 1970s, and  at  developed a form of LPC called  (APC), a perceptual coding algorithm that exploited the masking properties of the human ear, followed in the early 1980s with the  (CELP) algorithm which achieved a significant  for its time. Perceptual coding is used by modern audio compression formats such as and.

(DCT), developed by, T. Natarajan and in 1974, provided the basis for the  (MDCT) used by modern audio compression formats such as MP3 and AAC. MDCT was proposed by J. P. Princen, A. W. Johnson and A. B. Bradley in 1987, following earlier work by Princen and Bradley in 1986. The MDCT is used by modern audio compression formats such as, , and (AAC).

The world's first commercial audio compression system was developed by Oscar Bonello, an engineering professor at the. In 1983, using the psychoacoustic principle of the masking of critical bands first published in 1967, he started developing a practical application based on the recently developed computer, and the broadcast automation system was launched in 1987 under the name. Twenty years later, almost all the radio stations in the world were using similar technology manufactured by a number of companies.

A literature compendium for a large variety of audio coding systems was published in the IEEE's Journal on Selected Areas in Communications (JSAC), in February 1988. While there were some papers from before that time, this collection documented an entire variety of finished, working audio coders, nearly all of them using perceptual (i.e. masking) techniques and some kind of frequency analysis and back-end noiseless coding. Several of these papers remarked on the difficulty of obtaining good, clean digital audio for research purposes. Most, if not all, of the authors in the JSAC edition were also active in the Audio committee, which created the MP3 format.

Video
Video compression is a practical implementation of source coding in information theory. In practice, most video codecs are used alongside audio compression techniques to store the separate but complementary data streams as one combined package using so-called s.

requires a very high. Although codecs perform at a compression factor of 5 to 12, a typical  lossy compression video has a compression factor between 20 and 200.

The two key video compression techniques used in are the  (DCT) and  (MC). Most video coding standards, such as the and  formats, typically use motion-compensated DCT video coding (block motion compensation).

Encoding theory
Video data may be represented as a series of still image frames. Such data usually contains abundant amounts of spatial and temporal. Video compression algorithms attempt to reduce redundancy and store information more compactly.

Most and  exploit both spatial and temporal redundancy (e.g. through difference coding with ). Similarities can be encoded by only storing differences between e.g. temporally adjacent frames (inter-frame coding) or spatially adjacent pixels (intra-frame coding). compression (a temporal ) is one of the most powerful compression techniques. It (re)uses data from one or more earlier or later frames in a sequence to describe the current frame. , on the other hand, uses only data from within the current frame, effectively being still-.

A used in camcorders and video editing use less complex compression schemes that restrict their prediction techniques to intra-frame prediction.

Usually video compression additionally employs techniques like  that reduce aspects of the source data that are (more or less) irrelevant to the human visual perception by exploiting perceptual features of human vision. For example, small differences in color are more difficult to perceive than are changes in brightness. Compression algorithms can average a color across these similar areas to reduce space, in a manner similar to those used in image compression. As in all lossy compression, there is a between  and, cost of processing the compression and decompression, and system requirements. Highly compressed video may present visible or distracting.

Other methods than the prevalent DCT-based transform formats, such as, and the use of a  (DWT), have been the subject of some research, but are typically not used in practical products (except for the use of  as still-image coders without motion compensation). Interest in fractal compression seems to be waning, due to recent theoretical analysis showing a comparative lack of effectiveness of such methods.

Inter-frame coding
Inter-frame coding works by comparing each frame in the video with the previous one. Individual frames of a video sequence are compared from one frame to the next, and the sends only the  to the reference frame. If the frame contains areas where nothing has moved, the system can simply issue a short command that copies that part of the previous frame into the next one. If sections of the frame move in a simple manner, the compressor can emit a (slightly longer) command that tells the decompressor to shift, rotate, lighten, or darken the copy. This longer command still remains much shorter than intraframe compression. Usually the encoder will also transmit a residue signal which describes the remaining more subtle differences to the reference imagery. Using entropy coding, these residue signals have a more compact representation than the full signal. In areas of video with more motion, the compression must encode more data to keep up with the larger number of pixels that are changing. Commonly during explosions, flames, flocks of animals, and in some panning shots, the high-frequency detail leads to quality decreases or to increases in the.

Hybrid block-based transform formats
Today, nearly all commonly used video compression methods (e.g., those in standards approved by the or ) share the same basic architecture that dates back to  which was standardized in 1988 by the ITU-T. They mostly rely on the DCT, applied to rectangular blocks of neighboring pixels, and temporal prediction using s, as well as nowadays also an in-loop filtering step.

In the prediction stage, various and difference-coding techniques are applied that help decorrelate data and describe new data based on already transmitted data.

Then rectangular blocks of (residue) data are transformed to the frequency domain to ease targeting irrelevant information in quantization and for some spatial redundancy reduction. The (DCT) that is widely used in this regard was introduced by, T. Natarajan and  in 1974.

In the main lossy processing stage that data gets quantized in order to reduce information that is irrelevant to human visual perception.

In the last stage statistical redundancy gets largely eliminated by an which often applies some form of arithmetic coding.

In an additional in-loop filtering stage various filters can be applied to the reconstructed image signal. By computing these filters also inside the encoding loop they can help compression because they can be applied to reference material before it gets used in the prediction process and they can be guided using the original signal. The most popular example are s that blur out blocking artefacts from quantization discontinuities at transform block boundaries.

History
In 1967, A.H. Robinson and C. Cherry proposed a bandwidth compression scheme for the transmission of analog television signals. (DCT), which is fundamental to modern video compression, was introduced by, T. Natarajan and in 1974.

, which debuted in 1988, commercially introduced the prevalent basic architecture of video compression technology. It was the first based on DCT compression, which would subsequently become the standard for all of the major video coding formats that followed. H.261 was developed by a number of companies, including, , , and.

The most popular s used for codecs have been the standards. was developed by the (MPEG) in 1991, and it was designed to compress -quality video. It was succeeded in 1994 by /, which was developed by a number of companies, primarily, and. MPEG-2 became the standard video format for and. In 1999, it was followed by /, which was a major leap forward for video compression technology. It was developed by a number of companies, primarily Mitsubishi Electric, and.

The most widely used video coding format is. It was developed in 2003 by a number of organizations, primarily Panasonic, and. AVC commercially introduced the modern (CABAC) and  (CAVLC) algorithms. AVC is the main video encoding standard for s, and is widely used by streaming internet services such as, , , and , web software such as and , and various  broadcasts over terrestrial and satellite television.

Genetics
are the latest generation of lossless algorithms that compress data (typically sequences of nucleotides) using both conventional compression algorithms and genetic algorithms adapted to the specific datatype. In 2012, a team of scientists from Johns Hopkins University published a genetic compression algorithm that does not use a reference genome for compression. HAPZIPPER was tailored for data and achieves over 20-fold compression (95% reduction in file size), providing 2- to 4-fold better compression and in much faster time than the leading general-purpose compression utilities. For this, Chanda, Elhaik, and Bader introduced MAF based encoding (MAFE), which reduces the heterogeneity of the dataset by sorting SNPs by their minor allele frequency, thus homogenizing the dataset. Other algorithms in 2009 and 2013 (DNAZip and GenomeZip) have compression ratios of up to 1200-fold—allowing 6 billion basepair diploid human genomes to be stored in 2.5 megabytes (relative to a reference genome or averaged over many genomes). For a benchmark in genetics/genomics data compressors, see

Outlook and currently unused potential
It is estimated that the total amount of data that is stored on the world's storage devices could be further compressed with existing compression algorithms by a remaining average factor of 4.5:1. It is estimated that the combined technological capacity of the world to store information provides 1,300 of hardware digits in 2007, but when the corresponding content is optimally compressed, this only represents 295 exabytes of.