Announcements Homework 7 online (due Monday) TA Applications due today Lab 9 online today (implementation plan required) Sam Blackshear '10, of Facebook, Friday, 2:30, TCL 202, "Moving Fast With Static Program Analysis." Today’s Plan Image Transformation for Compression Computing Huffman Code Efficiency Extends Explained 340 x 256 = 87,040 87,040 x 3 = 261,120 69,130 ≈ 25% 261,120 Original Pixel Values 160 160 176 192 192 192 192 224 224 224 144 160 160 176 192 192 192 208 224 224 96 96 112 128 144 192 192 176 208 224 112 96 128 112 112 144 176 176 208 224 112 128 208 176 96 80 128 160 160 208 192 192 208 192 176 128 112 144 144 192 Pixels Encoded in Binary 10100000 10100000 10110000 11000000 11000000 11000000 11000000 11100000 11100000 11100000 10010000 10100000 10100000 10110000 11000000 11000000 11000000 11010000 11100000 11100000 01100000 01100000 01110000 10000000 10010000 11000000 11000000 10110000 11010000 11100000 01110000 01100000 10000000 01110000 01110000 10010000 10110000 10110000 11010000 11100000 01110000 10000000 11010000 10110000 01100000 01010000 10000000 10100000 10100000 11010000 11000000 11000000 11010000 11000000 10110000 10000000 01110000 10010000 10010000 11000000 Paint by Number? Paint by Letter? 160 160 176 192 192 192 192 224 224 224 F F G H H H H J J J 144 160 160 176 192 192 192 208 224 224 E F F G H H H I J J 96 96 112 128 144 192 192 176 208 224 B B C D E H H G I J 112 96 128 112 112 144 176 176 208 224 C B D C C E G G I J 112 128 208 176 96 80 128 160 160 208 C D I G B A D F F I 192 192 208 192 176 128 112 144 144 192 H H I H G D C E E H Letter-to-number Correspondence + Occurrence Counts 80 96 112 128 144 160 176 192 208 224 A B C D E F G H I J 1 4 6 5 5 6 7 13 6 7 Occurrence counts A B C D E F G H I J 1 4 6 5 5 6 7 13 6 7 Huffman Code A 00110 B 00111 C 0000 D 0010 E 0001 F 110 G 010 H 10 I 111 J 011 Huffman Tree H G J F C E D A B I 80 96 112 128 144 160 176 192 208 224 00110 00111 0000 0010 0001 110 010 10 111 011 80 96 112 128 144 160 176 192 208 224 A B C D E F G H I J 1 4 6 5 5 6 7 13 6 7 Original Pixel Values 160 160 176 192 192 192 192 224 224 224 144 160 160 176 192 192 192 208 224 224 96 96 112 128 144 192 192 176 208 224 112 96 128 112 112 144 176 176 208 224 112 128 208 176 96 80 128 160 160 208 192 192 208 192 176 128 112 144 144 192 80 96 112 128 144 160 176 192 208 224 00110 00111 0000 0010 0001 110 010 10 111 011 80 96 112 128 144 160 176 192 208 224 A B C D E F G H I J 1 4 6 5 5 6 7 13 6 7 Pixels Represented using Huffman Code 110 110 010 10 10 10 10 011 011 011 0001 110 110 010 10 10 10 111 011 011 00111 00111 0000 0010 0001 10 10 010 111 011 0000 00111 0010 0000 0000 0001 010 010 111 011 0000 0010 111 010 00111 00110 0010 110 110 111 10 10 111 10 0001 0001 10 010 0010 0000 if X- Y=D then D+ Y=X if X- Y=D D+ Y=X X- Y=D D+ Y=X - A B C D E F G H I J K L M N O P Q R B C D E F A H I J K L G N O P Q R M A-B B-C C-D D-E E-F F-A G-H H-I I-J J-K K-L L-G M-N N-O O-P P-Q Q-R R-M A + G M - A B C D E F G H I J K L M N O P Q R B C D E F A H I J K L G N O P Q R M A-B B-C C-D D-E E-F F G-H H-I I-J J-K K-L L M-N N-O O-P P-Q Q-R G A + G M - A B C D E F G H I J K L M N O P Q R B C D E F A H I J K L G N O P Q R M A-B B-C C-D D-E E F G-H H-I I-J J-K K L M-N N-O O-P P-Q Q G A + G M - A B C D E F G H I J K L M N O P Q R B C D E F A H I J K L G N O P Q R M A-B B-C C-D D E F G-H H-I I-J J K L M-N N-O O-P P Q G A + G M 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 _ 0 i 1 g 1 n Symbol occurrences n o i g e space 3 3 2 5 1 2 Symbol occurrences n o i g e space 3 3 2 5 1 2 Symbol occurrences n o i g e space 3 3 2 5 1 2 Symbol n o i g occurrences 3 3 2 5 1 0 e _ 3 Symbol occurrences n o i g e space 3 3 2 5 1 2 Symbol n o i g occurrences 3 3 2 5 1 0 e _ 3 Symbol n o i g occurrences 3 3 2 5 0 1 e _ 3 Symbol n o i g occurrences 3 3 2 5 Symbol occurrences 0 1 i n 5 o g 3 5 0 1 e _ 3 0 1 e _ 3 0 Symbol occurrences Symbol 0 g 1 i n 0 0 0 _ o 1 _ 6 0 1 1 0 o 1 1 e 10 e occurrences 0 1 i 16 0 1 g 1 n 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 0 _ 1 g 1 i n Symbol n o i g e space occurrences 3 3 2 5 1 2 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 0 _ 1 g 1 i n Symbol n o i g e space occurrences 3 3 2 5 1 2 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 0 _ 1 g 1 i n Symbol n o i g e space occurrences 3 3 2 5 1 2 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 0 _ 1 g 1 i n Symbol n o i g e space occurrences 3 3 2 5 1 2 16 0 1 6 10 0 3 0 0 3 _ 1 1 5 o 1 e 0 1 1 i 2 g 5 n 3 2 3 + 5 + 6 + 10 + 16 = 40 Symbol n o i g e space occurrences 3 3 2 5 1 2 Symbol occurrences n o i g e space 3 3 2 5 1 2 Bits used = 0 Symbol occurrences n o i g e space 3 3 2 5 1 2 Bits used = 0 Symbol occurrences n o i g e space 3 3 2 5 1 2 Bits used = 0 Symbol n o i g occurrences 3 3 2 5 0 1 _ e 3 Symbol occurrences n o i g e space 3 3 2 5 1 2 Bits used = 0 Symbol n o i g occurrences 3 3 2 5 0 1 _ e 3 Bits used = 3 Bits used = 0 Symbol n o i g occurrences 3 3 2 5 0 1 _ e 3 Bits used = 3 Bits used = 0 Symbol n o i g occurrences 3 3 2 5 0 1 _ e 3 Bits used = 3 Symbol occurrences 0 1 i n 5 o g 3 5 0 1 _ e 3 Bits used = 0 Symbol n o i g occurrences 3 3 2 5 0 1 _ e 3 Bits used = 3 Symbol occurrences 0 1 i n 5 o g 3 5 0 1 _ e 3 Bits used = 3 + 5 = 8 Symbol occurrences 0 1 i n 5 o g 3 5 0 1 _ e 3 Bits used = 3 + 5 = 8 Symbol occurrences 1 0 i n 5 o g 3 5 0 1 _ e 3 Bits used = 3 + 5 = 8 Symbol occurrences 0 1 0 i n 5 0 1 o 1 e g _ 6 5 Bits used = 3 + 5 + 6 = 14 Symbol occurrences 0 1 0 i n 5 0 1 o 1 e g _ 6 5 Bits used = 3 + 5 + 6 = 14 Symbol i occurrences 0 1 0 n 0 1 o 1 e g _ 5 6 5 Bits used = 3 + 5 + 6 = 14 0 Symbol 0 occurrences 0 1 1 i g n 10 0 1 o 1 _ e 6 Bits used = 3 + 5 + 6 + 10 = 24 0 Symbol 0 occurrences 0 1 1 0 g i n 1 _ e 10 o 1 6 Bits used = 3 + 5 + 6 + 10 = 24 Symbol 0 0 e occurrences 0 1 1 0 o 1 _ i 16 0 1 g 1 n Bits used = 3 + 5 + 6 + 10 + 16 = 40 1101100101110011101100101110011101101000 1111111111222222222233333333334 1234567890123456789012345678901234567890 going going gone • • • • • • e = 000 _ = 001 o = 01 i = 100 n = 101 g = 11 0 0 e 0 1 1 0 o 1 _ 0 i 1 g 1 n occurrences 3 3 2 5 1 2 Bits used = 0 occurrences 3 3 2 5 1 2 Bits used = 0 occurrences 3 3 2 5 3 Bits used = 3 occurrences 3 3 2 5 3 Bits used = 3 occurrences 5 3 5 3 Bits used = 3 + 5 = 8 occurrences 5 3 5 3 Bits used = 3 + 5 = 8 occurrences 5 6 5 Bits used = 3 + 5 + 6 = 14 occurrences 5 6 5 Bits used = 3 + 5 + 6 = 14 occurrences 10 6 Bits used = 3 + 5 + 6 + 10 = 24 occurrences 10 6 Bits used = 3 + 5 + 6 + 10 = 24 occurrences 16 Bits used = 3 + 5 + 6 + 10 + 16 = 40 AN ARRAY? occurrences = 3 3 2 5 1 2 ARRAYS DON’T SHRINK!!! occurrences = occurrences = 3 3 5 2 3 5 2 1 3 2 3 Bits used = 3 occurrences = 3 3 2 5 1 2 occurrences = 3 3 2 5 1 3 Bits used = 3 occurrences = 3 3 2 5 1 2 occurrences = 3 3 2 5 3 2 Symbols left = 5 Bits used = 3 Holey Cow! occurrences = 3 3 2 5 3 1 occurrences = 5 3 2 5 3 1 Bits used = 3 + 5 = 8 AVOIDING HOLEY ARRAYS occurrences = 3 3 Symbols left = 6 2 5 1 2 Bits used = 0 occurrences = 3 3 2 Symbols left = 6 occurrences = 3 3 Symbols left = 5 5 1 2 Bits used = 0 2 5 3 2 Bits used = 3 SWAP THE SMALLEST WITH THE LAST REMAINING occurrences = 3 3 2 Symbols left = 5 occurrences = 3 3 Symbols left = 4 5 3 2 Bits used = 3 3 5 2 2 Bits used = 3 occurrences = 3 3 2 Symbols left = 5 occurrences = 3 3 Symbols left = 4 5 3 2 Bits used = 3 3 5 2 2 Bits used = 3 COMBINE 1 OF THE 2ND SMALLEST WITH SMALLEST occurrences = 3 3 3 5 2 2 occurrences = 5 3 3 5 2 2 Symbols left = 4 Bits used = 3+5 = 8 occurrences = 3 3 3 5 2 2 occurrences = 5 3 3 5 2 2 Symbols left = 4 Bits used = 3+5 = 8 SWAP THE SMALLEST WITH THE LAST REMAINING occurrences = 5 3 3 5 2 2 occurrences = 5 5 3 3 2 2 Symbols left = 3 Bits used = 8 occurrences = 5 3 3 5 2 2 occurrences = 5 5 3 3 2 2 Symbols left = 3 Bits used = 8 COMBINE 1 OF THE 2ND SMALLEST WITH SMALLEST occurrences = 5 5 3 3 2 2 occurrences = 5 5 6 3 2 2 Symbols left = 3 Bits used = 8+6 = 14 occurrences = 5 5 3 3 2 2 occurrences = 5 5 6 3 2 2 Symbols left = 3 Bits used = 8+6 = 14 SWAP THE SMALLEST WITH THE LAST REMAINING occurrences = 5 5 6 3 2 2 occurrences = 6 5 5 3 2 2 Symbols left = 2 Bits used = 14 occurrences = 5 5 6 3 2 2 occurrences = 6 5 5 3 2 2 Symbols left = 2 Bits used = 14 COMBINE 1 OF THE 2ND SMALLEST WITH SMALLEST occurrences = 6 5 5 3 2 2 occurrences = 6 10 5 3 2 2 Symbols left = 2 Bits used = 14+10 = 24 occurrences = 6 5 5 3 2 2 occurrences = 6 10 5 3 2 2 Symbols left = 2 Bits used = 14+10 = 24 SWAP THE SMALLEST WITH THE LAST REMAINING occurrences = 6 10 5 3 2 2 occurrences = 10 6 5 3 2 2 Symbols left = 1 Bits used = 24 COMBINE 1 OF THE 2ND SMALLEST WITH SMALLEST occurrences = 10 6 5 3 2 2 occurrences = 16 6 5 3 2 2 Symbols left = 1 Bits used = 24+16 = 40
© Copyright 2025 Paperzz