Алгоритмы сжатия данных без потерь Антипин Иван 1 Введение Алгоритмы сжатия без потерь Алгоритмы сжатия с потерями Отсеивание информации Сжатие алгоритмом без потерь 2 Алгоритмы сжатия без потерь «Статические» методы «Динамические» методы Алгоритмы словарного сжатия Преобразования данных 3 Алгоритмы сжатия без потерь «Статические» методы По заданным вероятностям символов кодируют символ Для кодирования нужно распределение вероятностей «Динамические» методы Оценивать вероятности во время кодирования 4 Алгоритмы сжатия без потерь Алгоритмы словарного сжатия Не используют вероятности Используют куски уже закодированных (или незакодированных, но известных декодеру ) данных Преобразования данных Особые преобразования над данными для лучшего сжатия каким либо алгоритмом 5 «Статические» методы Алгоритм Хаффмана Код Шенона-Фано Арифметическое кодирование 6 Алгоритм Хаффмана Пусть известны вероятности рi появления каждого символа входного алфавита ai . Выберем два символа с наименьшей вероятностью и выбросим их из алфавита, добавив новый символ {ai ,aj} суммарной вероятностью выброшенных символов. Для каждой из выброшенных символов добавим в начало код 1 и 0 соответственно. Если этот символ вида {ai ,aj} то добавим соответствующий код для обоих символов. 7 Алгоритм Хаффмана В результате алгоритма каждому символу будет приписан некоторый код Этим кодом и кодируется символ сообщения, которое необходимо закодировать 8 Код Шенона-Фано {1234}→(3421) символ вероятно сть 1 0.1 ((4)(21)) 2 0.1 4-01, (21)- 00 3 0.5 4 0.3 (3421)→((3)(421)) 3-1, (421)-0 (421) ((2)(1)) 2-001, 1-000 9 Арифметическое кодирование P(xi) 0 4 1 P(xi) 10 «Динамические» методы Адаптивные Арифметическое кодирование и метод Хафмена Алгоритмы семейства PPM [Prediction by Partial Matching] 11 Адаптивный метод Хаффмана корень 0 2 0 1 0 3 0 1 00 4 1 1 симв вероя код ол тность 1 0.1 001 2 0.1 000 3 0.5 1 4 0.3 01 12 Адаптивный метод Хаффмана Каждому символу ставиться в соответствии вес Вероятности каждого символа вычисляется как отношение веса символа к сумме всех весов 13 Адаптивный метод Хаффмана При адаптивном методе Хафмена первоначально строится некоторое дерево Хафмена. При поступлении очередного символа он кодируется согласно текущему дереву, его вес увеличивается и при необходимости дерево перестраивается. 14 Адаптивное Арифметическое кодирование Частоте каждого из символов вначале присваивается некоторое число ε Символ кодируется по данному вероятностному спектру При поступление очередного символа его частота увеличивается на 1 15 Контекстное моделирование сильная зависимость вероятности появления символа от непосредственно ему предшествующих ( контекста [КМ] ) контекстное моделирование - оценка вероятности появления символа в зависимости от непосредственно ему предшествующих. 16 Контекстное моделирование Оценки вероятностей при контекстном моделировании строятся на основании счетчиков частот, связанных с текущим контекстом Счетчик «A» строка Счетчик «B» … Счетчик «Z» 17 Контекстное моделирование После каждого появления символа s в рассматриваемом контексте КМ производится Кодирование символа Увеличение значения счетчика символа s в соответствующей контексту КМ. Переход к другому контексту 18 Алгоритмы PPM Попытка оценки символа начинается с KM(N). где N является параметром алгоритма и называется порядком РРМ-модели . В случае нулевой частоты символа в КМ текущего порядка осуществляется переход к КМ меньшего порядка за счет использования механизма уходов (escape strategy). 19 Алгоритмы PPM Z «A» - p1 0 windo indo «B» - p2 0 Кодер … «Z» - p26 0 «Esc» - p !=0 20 Алгоритмы PPM Оценка вероятности ухода Априорные(РРМA, PPMB, РРМС, PPMD, РРМX) Адаптивные (PPMZ, PPMd, PPMonstr) Повышение точности оценок в контекстных моделях высоких порядков Обновление счетчиков символов 21 Алгоритмы семейств LZ77 и LZ78 Входную последовательность символов можно рассматривать как последовательность строк, содержащих произвольное количество символов. Идея методов данного семейства состоит в замене строк символов на такие коды, что их можно трактовать как индексы строк некоторого словаря. При декодировании осуществляется обратная замена индекса на соответствующую ему фразу словаря. 22 LZ77 Идея Найти данные, которые необходимо закодировать, в уже закодированных и сослаться на них Если не удаётся то поместить без изменений Словарь – уже закодированные данные, в которых осуществляется поиск 23 LZ77 (смещение,длина)символ 24 LZ77 LZSS добавление к каждому указателю и символу однобитового префикса позволяющего различать эти объекты. LZB Смещение задается переменным количеством битов в зависимости от реального размера словаря (в начале сжатия он мал). Длина совпадения записывается y-кодами Элиаса. 25 LZ77 LZH Аналогична LZB. но для сжатия смещений и длин соответствия используются коды Хаффмана LZFG кодировании фразы не парой (смещение,длина), а индексом соответствующего фразе узла дерева цифрового поиска 26 LZ78 Алгоритмы этой группы не используют скользящего окна и в словарь помещают не все встречаемые при кодировании строки, а лишь «перспективные» с точки зрения вероятности последующего использования. 27 LZ78 На каждом шаге в словарь вставляется новая фраза, которая представляет собой конкатенацию одной из фраз словаря, имеющей самое длинное совпадение со строкой буфера, и символа s. В отличие от семейства LZ77, в словаре не может быть одинаковых фраз. 28 LZ78 LZMV новая фраза создается с помощью конкатенации двух последних использованных фраз, а не конкатенации фразы и символа LZW Предварительное занесение в словарь всех символов алфавита входной последовательности результат работы LZW состоит только из последовательности индексов фраз словаря. 29 LZW {abcdef} abedabec 1,2,5,4,7,5,3 12 5 4 75 3 1 2 3 4 5 6 7 8 9 10 11 12 a b c d e f ab be ed da abe ec 30 Преобразования данных Метод стопки книг Преобразование Барроуза-Уилера [BWT] 31 Метод стопки книг {a,b,c,d,e,f} abbfa a f f b e 6 6 1 3 3 d c b a 32 Преобразование БарроузаУилера Abbfa abbfa aabbf f bbfaa abbfa a bfaab bbfaa a faabb bfaab b aabbf faabb b 2 33 Преобразование БарроузаУилера 2 f a aa aab aabb aabbf a a ab abb abbf abbfa a b bb bbf bbfa faabb b b bf bfa bfaa bbfaa b f fa faa faab bfaab 34 Преобразования данных Преобразование Барроуза-Уилера Метод стопки книг Простой метод сжатия 35 Алгоритмы сжатия без потерь для мультимедиа Изображения Двумерный массив Аудио информация Массив чисел Видео информация Массив изображений 36 Алгоритмы сжатия без потерь для мультимедиа То что есть минус то что предполагали t Данные могут увеличиться! 37 Алгоритмы сжатия без потерь для мультимедиа Линейно-предсказывающее кодирование предположение, что значение текущего является линейной комбинацией значений h предыдущих элементов На выходе по-прежнему разность того, что предсказали и того, что есть на самом деле 38 Алгоритмы сжатия без потерь для мультимедиа При сжатии видео данных как правило, соседние кадры изменяются незначительно. Можно сжимать не текущее изображение, а разность между текущим и предыдущим (или линейной комбинацией предыдущих) 39 Алгоритмы сжатия без потерь для мультимедиа Субполосное кодирование для каждой пары элементов сохранять полусумму и разность. 40 Алгоритмы сжатия без потерь для мультимедиа Для изображений wavelet b1[i][j]=(a[2i,2j]+a[2i+1,2j]+a[2i,2j+1]+a[2i+1,2j+1])/4 b2[i][j]=(a[2i,2j]+a[2i+1,2j]-a[2i,2j+1]-a[2i+1,2j+1])/4 b3[i][j]=(a[2i,2j]-a[2i+1,2j]+a[2i,2j+1]-a[2i+1,2j+1])/4 b4[i][j]=(a[2i,2j]-a[2i+1,2j]-a[2i,2j+1]+a[2i+1,2j+1])/4 b1 – уменьшенная копия b2 – границы по горизонтали b3 – границы по вертикали b4 – границы по диагонали 41 Алгоритмы сжатия без потерь для мультимедиа 42 Алгоритмы сжатия без потерь для мультимедиа Фрактальный алгоритм сжатия изображений Система линз линзы могут проецировать часть изображения произвольной формы в любое другое место нового изображения области, в которые проецируются изображения, не пересекаются линза может зеркально отражать и поворачивать свой фрагмент изображения линза должна уменьшать фрагмент 43 Алгоритмы сжатия без потерь для мультимедиа Системе линз соответствует сжимающее аффинное преобразование Теорема Пусть f: X → X - сжимающее преобразование в полном метрическом пространстве (X, d). Тогда существует в точности одна неподвижная точка y такая, что для любой точки x последовательность {f(n)x} сходится к y 44 Алгоритмы сжатия без потерь для мультимедиа Идея фрактального сжатия Найти такое сжимающее преобразование, чтобы неподвижной точкой являлось входное изображения Нереально долго!!! Поэтому идёт поиск самоподобных частей изображения с учётом поворота, отражения и уменьшения по определённым блокам 45 Заключение WinRar использует LZ алгоритмы и PPM алгоритмы компрессии 7Zip – LZ и PPM Zip – LZ алгоритмы Cab – LZ алгоримы Bzip2 – BWT JPEG – wavelet 46 Заключение Спасибо за внимание 47