|
|
Line 1: |
Line 1: |
| '''Block Truncation Coding''', or '''BTC''', is a type of [[lossy compression|lossy image compression]] technique for [[greyscale]] images. It divides the original images into blocks and then uses a quantiser to reduce the number of [[grey levels]] in each block whilst maintaining the same [[mean]] and [[standard deviation]]. It is an early predecessor of the popular hardware [[S3 Texture Compression|DXTC]] technique, although BTC compression method was first adapted to colour long before DXTC using a very similar approach called [[Color Cell Compression]].<ref>[http://ieeexplore.ieee.org/iel5/498/3989/00152671.pdf 1990 IEEE Colour Cell Compression Paper]</ref> BTC has also been adapted to video compression <ref>1981 IEEE Paper "Digital Video Bandwidth Compression Using Block Truncation Coding" [http://ieeexplore.ieee.org/iel5/8159/23934/01094938.pdf]</ref>
| | The name of the writer is Numbers but it's not the most [http://Www.Mayoclinic.org/diseases-conditions/sexually-transmitted-diseases-stds/in-depth/std-testing/art-20046019 masucline title] out there. He is truly fond of performing ceramics but he is having [http://www.Nichd.nih.gov/health/topics/stds/conditioninfo/Pages/specific.aspx difficulties] to find time [http://dateplate.com/dayzfe home std test kit] for it. For many years he's been working at home std test as over the counter std test a meter reader and it's something he really appreciate. South Dakota is where me and my [http://www.xn--80aeerfhjjg1bv8c.xn--p1ai/%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5/cures-yeast-infection-tips-use-now home std test kit] husband live.<br><br>my website std home test ([http://spermdonorinfo.co.uk/groups/eliminate-a-yeast-infection-with-one-of-these-tips/ read the article]) |
| | |
| BTC was first proposed by Robert Mitshell at Purdue University. Another variation of BTC is '''Absolute Moment Block Truncation Coding''' or '''AMBTC''', in which instead of using the standard deviation the first absolute moment is preserved along with the mean. AMBTC is computationally simpler than BTC. AMBTC was proposed by Maximo Lema and Robert Mitchell.<ref>{{cite doi|10.1109/TCOM.1984.1095973}}</ref>
| |
| | |
| Using sub-blocks of 4x4 pixels gives a compression ratio of 4:1 assuming 8-bit integer values are used during transmission or storage. Larger blocks allow greater compression ("a" and "b" values spread over more pixels) however quality also reduces with the increase in block size due to the nature of the algorithm.
| |
| | |
| The BTC algorithm was used for compressing [[Mars Pathfinder]]'s rover images.<ref>{{cite web|url=http://pdsimg.jpl.nasa.gov/data/mpfr-m-rvrcam-2-edr-v1.0/mprv_0001/document/rcinst.htm|title=Rover Camera Instrument Description|publisher=NASA|accessdate=2011-11-09}}</ref>
| |
| | |
| ==Compression procedure==
| |
| A 256x256 [[pixel]] image is divided into blocks of typically 4x4 pixels. For each block the Mean and Standard Deviation are calculated, these values change from block to block. These two values define what values the reconstructed or new block will have, in other words the blocks of the BTC compressed image will all have the same mean and standard deviation of the original image. A two level quantization on the block is where we gain the compression, it is performed as follows:
| |
| | |
| <math>y(i,j) =
| |
| \begin{cases}
| |
| 1, & x(i,j) > \bar x \\
| |
| 0, & x(i,j) \le \bar x
| |
| \end{cases}</math>
| |
| | |
| Where <math>x(i,j)</math> are pixel elements of the original block and <math>y(i,j)</math> are elements of the compressed block. In words this can be explained as: If a pixel value is greater than the mean it is assigned the value "1", otherwise "0". Values equal to the mean can have either a "1" or a "0" depending on the preference of the person or organisation implementing the algorithm.
| |
| | |
| This 16 bit block is stored or transmitted along with the values of Mean and Standard Deviation. Reconstruction is made with two values "a" and "b" which preserve the mean and the standard deviation.
| |
| The values of "a" and "b" can be computed as follows:
| |
| | |
| <math>a=\bar x - \sigma \sqrt{\cfrac {q}{m-q}}</math>
| |
| | |
| <math>b=\bar x + \sigma \sqrt{\cfrac {m-q}{q}}</math>
| |
| | |
| Where <math>\sigma</math> is the standard deviation, m is the total number of pixels in the block and q is the number of pixels greater than the mean (<math>\bar x</math>)
| |
| | |
| To reconstruct the image, or create its approximation, elements assigned a 0 are replaced with the "a" value and elements assigned a 1 are replaced with the "b" value.
| |
| | |
| <math>x(i,j) =
| |
| \begin{cases}
| |
| a, & y(i,j) = 0 \\
| |
| b, & y(i,j) = 1
| |
| \end{cases}</math>
| |
| | |
| This demonstrates that the algorithm is asymmetric in that the encoder has much more work to do than the decoder. This is because the decoder is simply replacing 1's and 0's with the estimated value whereas the encoder is also required to calculate the mean, standard deviation and the two values to use.<ref>Leis, J 2008, ELE4607 Advance Digital Communications, Module 3: Image & Video Coding. Lecture Slides, University of Southern Queensland, 2008.</ref>
| |
| | |
| == Example ==
| |
| | |
| ===Encoder===
| |
| Take a 4x4 block from an image, in this case the mountain test image:<ref>[http://www.math.uwaterloo.ca/WatFract/Repository.html Waterloo Fractal Coding and Analysis Group]</ref>
| |
| | |
| <math>\begin{matrix}
| |
| 245 & 239 & 249 & 239 \\
| |
| 245 & 245 & 239 & 235 \\
| |
| 245 & 245 & 245 & 245 \\
| |
| 245 & 235 & 235 & 239
| |
| \end{matrix}</math>
| |
| | |
| Like any small block from an image this appears rather boring to work with as the numbers are all quite similar, this is the nature of lossy compression and how it can work so well for images. Now we need to calculate two values from this data, that is the mean and standard deviation. The mean can be computed to 241.875, this is a simple calculation which should require no further explanation. The standard deviation is easily calculated at 4.36. From this the values of "a" and "b" can be calculated using the previous equations. They come out to be 236.935 and 245.718 respectively. The last calculation that needs to be done on the encoding side is to set the matrix to transmit to 1's and 0's so that each pixel can be transmitted as a single bit.
| |
| | |
| <math>\begin{matrix}
| |
| 1 & 0 & 1 & 0 \\
| |
| 1 & 1 & 0 & 0 \\
| |
| 1 & 1 & 1 & 1 \\
| |
| 1 & 0 & 0 & 0
| |
| \end{matrix}</math>
| |
| | |
| ===Decoder===
| |
| Now at the decoder side all we need to do is reassign the "a" and "b" values to the 1 and 0 pixels. This will give us the following block:
| |
| | |
| <math>\begin{matrix}
| |
| 245 & 236 & 245 & 236 \\
| |
| 245 & 245 & 236 & 236 \\
| |
| 245 & 245 & 245 & 245 \\
| |
| 245 & 236 & 236 & 236
| |
| \end{matrix}</math>
| |
| | |
| As can be seen, the block has been reconstructed with the two values of "a" and "b" as integers (because images aren't defined to store floating point numbers). When working through the theory, this is a good point to calculate the mean and standard deviation of the reconstructed block. They should equal the original mean and standard deviation. Remember to use integers, otherwise much quantization error will become involved, as we previously quantised everything to integers in the encoder.
| |
| | |
| == References ==
| |
| {{reflist}}
| |
| | |
| [[Category:Image compression]]
| |
| [[Category:Lossy compression algorithms]]
| |
The name of the writer is Numbers but it's not the most masucline title out there. He is truly fond of performing ceramics but he is having difficulties to find time home std test kit for it. For many years he's been working at home std test as over the counter std test a meter reader and it's something he really appreciate. South Dakota is where me and my home std test kit husband live.
my website std home test (read the article)