64
Data Compression

Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Embed Size (px)

Citation preview

Page 1: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Data Compression

Page 2: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

How Is This Possible?

• Entire King James Bible : 4,834,757 bytes• Zip Archive Containing It: 1,339,843 bytes

Page 3: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

More Questions

• Why does this file:

• Compress different than:

Page 4: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Behind The Scenes

• Compression used for:– ~50% of web traffic– Most audio/video files– Sometimes for every file on a drive

Page 5: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Trick 1:

• Describe the contents of this file in as few words as possible…

Page 6: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Trick 1:

• Run Length Encoding :– Describe repetition as:

(How many times)What to repeat

– 2000000A

Page 7: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

RLE Examples

• ABABABABABAB6AB

• AAABBBBBAAACC3A,5B,3A,2C

• 111110010101010101(5)1,(1)0,(6)01

Page 8: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

RLE Fail

• ABCDEF1A,1B,1C,1D,1E

Page 9: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

RLE Fail 2

• This file doesn't just have A's:

80A,1newline,80A,1newline,80A,1newline…

Page 10: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Trick 2

• Same As Earlier:– Describe patterns with instructions to go back x

and copy y characters

• ABCDEFG-b7c7"Write down ABCDEFG, then go back 7 characters and copy the next 7 characters to the end of what you have"

Page 11: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

Page 12: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFG

Page 13: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFG

Page 14: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGA

Page 15: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGAB

Page 16: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABC

Page 17: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABCD

Page 18: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABCDE

Page 19: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABCDEF

Page 20: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABCDEFG

Page 21: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

ABCDEFG-b7c7

ABCDEFGABCDEFG

Page 22: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

Page 23: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

AB

Page 24: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

AB

Page 25: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABA

Page 26: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABAB

Page 27: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABABA

Page 28: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABABAB

Page 29: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABABABA

Page 30: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABABABAB

Page 31: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c6

ABABABAB

Page 32: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b3c4

Page 33: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

AB

Page 34: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

AB

Page 35: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABAB

Page 36: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABAB

Page 37: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABC

Page 38: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABC

Page 39: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCB

Page 40: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCBC

Page 41: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCBCB

Page 42: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCBCBC

Page 43: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCBCBCB

Page 44: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Same As Earlier

AB-b2c2-C-b2c5

ABABCBCBCB

Page 45: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Shorter Symbol Trick

• Normally text is 8-bit ASCII– 8bits = 256 possibilities

DEC BIN Symbol

65 01000001 A

66 01000010 B

67 01000011 C

68 01000100 D

69 01000101 E

Page 46: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

DEC BIN Symbol

65 01000001 A

66 01000010 B

67 01000011 C

68 01000100 D

69 01000101 E

Shorter Symbol Trick

• If messages is just A's and B's we are wasting space:

A B A B

01000001 01000010 01000001 01000010

Why not:

0 1 0 1

Page 47: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Shorter Symbol Trick

• Shorter Symbol Trick:– Use minimum number of bits to represent

different symbols in message– More common symbols get shorter representation

Page 48: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

More Common

• This message:

AAAABAAC

• Three symbols, need 2 bits– Could do

AAAABAAC

00 00 00 00 01 00 00 11 (16 bits)

Symbol Code

A 00

B 01

C 11

Page 49: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

More Common

• But A is more common:

AAAABAAC

• So maybe we can use a shortercode for it

AAAABAAC

0 0 0 0 10 0 0 11 (10 bits)

Symbol Code

A 0

B 10

C 11

Page 50: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Why Does it Work

• No code is a prefix for another– 0 : it is an A– 1 : keep going

010110010

010110010

ABCAAB

Symbol Code

A 0

B 10

C 11

Page 51: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Why Does it Work

• A BAD code – 0 : is it an A?

is it the start of a D?

010 010

010 010

AB DA

Symbol Code

A 0

B 10

C 11

D 01

Page 52: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Building a Code

• CS160 Reader…– Huffman Code Building

Page 53: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Lossy Compression

• Lossless compression :– Can recreate original perfectly– Algorithms: Run length encoding, same as earlier,

shorter symbol– Examples: zip files, www traffic

Page 54: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Lossy Compression

• Lossy compression– Original can NOT be recreated perfectly

Page 55: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

• My Kids - 1278Kb

Page 56: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

• Every Other Line/Column Removed

Page 57: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

• Remaining pixels packed back down : 320Kb

Page 58: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

• Blown back up vs original

Original Compressed

Page 59: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

• Only keep every 4th line/column : 81 Kb

Page 60: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Real JPEG

• Image broken into blocks of pixels

Page 61: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Real JPEG

• Each block processed seperately

Page 62: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Real JPEG

• Block processed, to look for compressible patterns

Page 63: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

Real JPEG

• Patterns can more or less recreate image

Page 64: Data Compression. How Is This Possible? Entire King James Bible : 4,834,757 bytes Zip Archive Containing It: 1,339,843 bytes

JPEG Samples@ 200%

No compress Low compress Med compress High compress