- Run-length encoding
Run-length encoding (RLE) is a very simple form of
data compression in which "runs" of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. This is most useful on data that contains many such runs: for example, relatively simple graphic images such as icons, line drawings, and animations. It is not recommended for use with files that don't have many runs as it could potentially double the file size.For example, consider a screen containing plain black text on a solid white background. There will be many long runs of white
pixel s in the blank space, and many short runs of black pixels within the text. Let us take a hypothetical singlescan line , with B representing a black pixel and W representing white::
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
If we apply the run-length encoding (RLE) datacompression algorithm to the above hypothetical scan line, we get the following:
:
12W1B12W3B24W1B14W
Interpret this as twelve W's, one B, twelve W's, three B's, etc.
While:
:
WBWBWBWBWBWBWB
would be:
:
1W1B1W1B1W1B1W1B1W1B1W1B1W1B
The encoding data is quite longer.
The run-length code represents the original 67 characters in only 18. Of course, the actual format used for the storage of images is generally binary rather than
ASCII characters like this, but the principle remains the same. Even binary data files can be compressed with this method; file format specifications often dictate repeated bytes in files as padding space. However, newer compression methods such asDEFLATE often useLZ77 -based algorithms, a generalization of run-length encoding that can take advantage of runs of strings of characters (such as BWWBWWBWWBWW).Common formats for run-length encoded data include
TGA ,PackBits ,PCX andILBM .Run-length encoding performs
lossless data compression and is well suited to palette-based iconic images. It does not work well at all on continuous-tone images such as photographs, althoughJPEG uses it quite effectively on the coefficients that remain after transforming andquantizing image blocks.Run-length encoding is used in
fax machines (combined with other techniques intoModified Huffman coding ). It is relatively efficient because most faxed documents are mostly white space, with occasional interruptions of black.Data that have long sequential runs of bytes (such as lower-quality sound samples) can be RLE compressed after applying a predictive filter such as
delta encoding .Example code
Note: this basic code assumes that the input valid alphabet string only
See also
*
Look-and-say sequence
*Golomb coding
*Modified Huffman coding
*Burrows-Wheeler transform
*Run Length Limited
*Bitmap index External links
* [http://www.binaryessence.com/dct/en000045.htm Run Length Encoding (RLE) and other encoding]
Wikimedia Foundation. 2010.