Информация и информационные процессы
§ 3. Сжатие данных
1
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Что такое сжатие?
2
Алфавит: A, B, C,
Сообщение: АBА CАBАBА
80 битов в 8-битной кодировке!
!
A → 00
B → 01
C → 10
→ 11
АBА CАBАBА → 00 01 00 11 10 00 01 00 01 00
20 битов
Как раскодировать?
?
Словарь:
| 00 | 01 | 10 | 11 | |
000001002 | 010000012 | 010000102 | 010000112 | 001000002 |
|
4 символа | A (код 65) | B (код 66) | C (код 67) | пробел (код 32) | |
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Коэффициент сжатия
3
Сообщение: 10240 символов
Алфавит: A, B, C,
Словарь: 5 байтов
Длина кода:
10240×2 = 20480 битов = 2560 байтов
Длина сжатого сообщения:
5 + 2560 = 2565 байтов
Коэффициент сжатия – это отношение размеров исходного и сжатого файлов.
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие без потерь
4
Сжатие без потерь – это такое уменьшение объема закодированных данных, при котором можно восстановить их исходный вид из кода без искажений.
За счёт чего сжимается сообщение?
?
В данных должна быть избыточность!
!
используются только �4 символа из 256
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм RLE
5
RLE (англ. Run Length Encoding, кодирование цепочек одинаковых символов)
A | A | … | A | B | B | … | B |
100
100
200 байтов
Файл qq.txt
Файл qq.rle (сжатый)
100 | A | 100 | B |
4 байта
В чем состоит избыточность?
?
сжатие в 50 раз!
Сжатие с потерями или без?
?
Что в худшем случае?
?
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм RLE
6
8F16 | C016 | 0216 | C116 | C216 |
100011112 | 110000002 | 000000102 | 110000012 | 110000102 |
повтор 15 | A (код 192) | 2 | Б (код 193) | В (код 194) |
управляющие байты
АААААААААААААААБВ
Распаковка:
15
2
Применение:
8F C0 02 C1 C216
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Неравномерные коды
7
Идея: кодировать часто встречающиеся символы более короткими кодовыми словами.
Азбука Морзе:
А
И
•
•
•
–
–
–
корень
Н
М
Т
Е
Е
•
–
Т
И
•
–
А
•
•
Н
–
М
•
–
–
Проблема: разделить последовательность на кодовые слова!
!
•
•
И
ЕЕ
Можно ли обойтись без разделителя?
?
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Префиксные коды
8
Префиксный код – это код, в котором ни одно кодовое слово не является началом другого кодового слова (условие Фано).
А
И
•
•
•
–
–
–
корень
Н
М
Т
Е
Е
•
–
Т
И
•
–
А
•
•
Н
–
М
•
–
–
Это не префиксный код!
!
Проблема: как построить префиксный код?
!
не все символы в листьях!
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Код Шеннона-Фано
9
Алфавит: О, Е, Н, Т,
Количество символов в сообщении:
140
О
Н
Е
Т
68
68
64
60
На 2 группы с примерно равным числом символов:
140
E
T
H
O
68
64
60
68
208
192
начинаются с 0
начинаются с 1
00
O
01
E
10
T
Н
64
60
начинаются с 11
Т
Н
110
111
в порядке невозрастания
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Код Шеннона-Фано
10
О
Е
Н
Т
0
0
0
0
1
1
1
1
корень
Это префиксный код (все символы в листьях дерева)!
!
Декодирование:
1110111101001011001111
111
01
111
01
00
10
110
01
111
Т
O
Т
O
Е
Н
О
Т
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Код Шеннона-Фано
11
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм Хаффмана
12
Дэвид Хаффман
140
Е
Т
Н
О
68
64
60
68
По увеличению частоты:
140
Е
Т
Н
О
68
68
124
140
Е
О
136
Т
Н
124
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм Хаффмана
13
140
Е
О
Т
Н
260
Т
Н
Е
О
0
1
0
1
1
1
0
0
0
Т
100
Н
101
Код Хаффмана:
Е
110
О
111
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сравнение алгоритмов
14
Количество символов в сообщении:
140
О
Н
Е
Т
68
68
64
60
Равномерное кодирование (8-битный код):
(140 + 68 + 68 + 64 + 60) ⋅ 8 = 3200 битов
Равномерное кодирование (3-битный код):
(140 + 68 + 68 + 64 + 60) ⋅ 3 = 1200 битов
+ словарь!
В чём избыточность?
?
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сравнение алгоритмов
15
Количество символов в сообщении:
140
О
Н
Е
Т
68
68
64
60
Код Шеннона-Фано:
00
О
01
Е
10
Н
Т
110
111
(140 + 68 + 68) ⋅ 2 + (64 + 60) ⋅ 3 = 924 бита
Код Хаффмана:
0
О
111
Е
110
Н
Т
101
100
140 + (68 + 68 + 64 + 60) ⋅ 3 = 920 бит
Оптимален!
!
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм Хаффмана
16
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм LZW
17
1977: А. Лемпел и Я. Зив, 1984: Т. Велч
Идеи:
Применение:
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Алгоритм LZW
18
ввод СТРОКА
пока не конец данных
ввод СИМВОЛ
если Есть_в_словаре( СТРОКА + СИМВОЛ ) то
СТРОКА:= СТРОКА + СИМВОЛ
иначе
вывод Код(СТРОКА)
Добавить_в_словарь( СТРОКА + СИМВОЛ )
СТРОКА:= СИМВОЛ
вывод Код(СТРОКА)
да / нет
получить из словаря
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие с потерями
19
Сжатие с потерями – это такое уменьшение объема закодированных данных, при которых распакованный файл может отличаться от оригинала.
Применение:
Идея: «отбросить» часть данных, которые не влияют на восприятие информации человеком (доп. размытие фотографий, частоты выше 20 кГц, …)
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Снижение глубины цвета
20
8 битов на пиксель (256 цветов)
4 бита на пиксель (16 цветов)
2 бита на пиксель �(4 цвета)
размер ↓
качество ↓
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие JPEG
21
RGB → Y Cb Cr
яркость
«синева»
«краснота»
Y = 0,299⋅R + 0,587⋅G + 0,114⋅B
Cb = 128 – 0,1687⋅R – 0,3313⋅G + 0,5⋅B
Cr = 128 + 0,5⋅R – 0,4187⋅G – 0,0813⋅B
глаз чувствительнее к зелёному!
Что для чёрно-белого (серого)?
?
Cb = Cr = 128
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие JPEG
22
Идея: глаз наиболее чувствителен к яркости
Y1, Cb1, Cr1 | Y2, Cb2, Cr2 |
Y3, Cb3, Cr3 | Y4, Cb4, Cr4 |
12 чисел
например:
Cb =
Cb1 + Cb2 +Cb3 + Cb4
4
Cr =
Cr1 + Cr2 +Cr3 + Cr4
4
⇒ Y1, Y2, Y3, Y4, Cb, Cr
6 чисел
+ дискретное косинусное преобразование, алгоритмы RLE и Хаффмана
потери!
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие JPEG
23
качество 100
(8400 байтов)
качество 50
(3165 байтов)
качество 0
(1757 байтов)
качество 0
(фрагмент)
40
30
20
10
0
BMP
BMP(RLE)
GIF
PNG
JPEG(100)
JPEG(50)
JPEG(0)
V, Кбайт
Плавные переходы!
!
Артефакты – заметные искажения из-за сжатия с потерями
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие рисунков с потерями и без
24
Большие области одного цвета!�Чёткие границы!
!
120
100
80
40
0
BMP
BMP(RLE)
GIF
PNG
JPEG(100)
JPEG(50)
JPEG(0)
60
20
V, Кбайт
Что особенного?
?
с потерями!
без потерь!
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие звука (MP3)
25
MP3 = MPEG-1 Layer 3, кодирование восприятия
Битрейт – это число бит, используемых для кодирования 1 секунды звука.
MP3: от 8 до 320 кбит/c
Без сжатия на CD (1 сек, 44 кГц, 16 бит, стерео):
2×88000 = 176 000 байт = 1 408000 бит = 1408 кбит
Cжатие MP3 (256 кбит/с):
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие видео
26
видео = изображения + звук
Кодек (кодировщик/декодировщик) – это программа для сжатия данных и восстановления сжатых данных.
MJPEG, MPEG-4, DivX, Xvid, H.264, …
Артефакты – заметные искажения из-за сжатия с потерями
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Сжатие: итоги
27
Сжатие уменьшает избыточность данных!
!
Хорошо сжимаются:
Плохо сжимаются:
Нужно ли стремиться к полному удалению избыточности?
?
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Конец фильма
28
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru
Источники иллюстраций
29
Информация и информационные процессы, 11 класс
© К.Ю. Поляков, Е.А. Ерёмин, 2018 http://kpolyakov.spb.ru