- •6. Сжатие информации
- •6.1. Основные понятия
- •6.2. Сжатие по Хаффмену
- •6.3. Арифметическое кодирование
- •6.4. Словарные методы
- •6.5. Методы кодирования длин серий
- •Процесс восстановления данных при помощи декодера rle вполне очевиден.
- •6.6. Методы контекстного моделирования
- •6.7. Методы сжатия с потерями
- •6.8. Сжатие непрерывной информации
6.7. Методы сжатия с потерями
Все методы сжатия, описанные до этого, являются методами без потерь. Методы сжатия с потерями применяются, как правило, для хранения графических, звуковых и видеоданных. Рассмотрим принципы работы данных методов на примере сжатия графики с использованием дискретного косинусного преобразования (ДКП).
Пусть имеется непрерывный периодический сигнал a(t) с периодом T. Его можно представить в виде:
.
Можно
подобрать систему функций
,
s
= 0, 1, …, N
– 1, так, чтобы:
- ни одна из них не могла быть получена линейной комбинацией других:
;
- за скалярное произведение принимается
;
- они попарно ортогональны и нормированы:
.
Такой
выбор системы функций
,
s
= 0, 1, …, N
– 1, позволяет представить сигнал a(t)
в виде точки
N-мерного
функционального пространства с
координатами s.
Систему функций
,
s
= 0, 1, …, N
– 1, называют базисом пространства
сигналов, каждую из функций – базисной,
представление сигнала в форме композиции
базисных функций – разложением по
заданному базису. Координаты точки,
соответствующие сигналу a(t),
можно найти по формуле
.
Существует множество систем функций, обладающих свойствами базиса. В частности базис образует система функций вида:
.
Разложение сигнала по этому базису называют разложением Фурье, а нахождение коэффициентов разложения – преобразованием Фурье. Преобразование Фурье выполняется по формуле:
.
В дальнейшем будем рассматривать периодический сигнал, который принимает значения в дискретные моменты времени
,
где
,
N
– количество разбиений интервала T.
Тогда, непрерывный сигнал a(t)
заменяется на
последовательность отсчетов
a((k + 0.5)t) = ak, k = 0, 1, …, N – 1,
взятых посредине отрезков разбиения t, а формулы преобразования Фурье приобретают вид
.
(6.1)
Формула (7.1) задает прямое ДКП, которое выполняется по базису
,
где cs – нормировочный множитель, определяемый как
Данное преобразование обратимо, т.е. существует обратное ДКП. Оно задается формулой
.
(6.2)
В выражении (7.2) элементы
есть дискретные отсчеты базисных
функций, где s – номер
базисной функции, k –
номер отсчета дискретизации базисной
функции. Их значения образуют матрицу
N
N, которую обозначим
.
Тогда прямое и обратное ДКП можно
записать в матричной форме:
(6.3)
где = (0, 1, …, N – 1)T, a = (a0, a1, …, aN – 1)T.
Описанные прямое и обратное ДКП являются одномерными преобразованиями. Однако их можно обобщить для двумерного сигнала, представленного в виде матрицы размера N N. В результате ДКП над двумерным сигналом получается также матрица размера N N коэффициентов разложения по базисным функциям:
,
s
= 0, 1, …, N
– 1, r
= 0, 1, …, N
– 1.
Формулы в матричной форме для выполнения прямого и обратного двумерного ДКП имеют вид
(6.4)
Матрица FN зависит только от N и может быть просчитана заранее. Например, при N = 8 она будет иметь вид.
При сжатии графических данных файл представляет собой последовательность пикселей – значений цвета точек изображения. Можно считать, что значение пикселя представляет собой вектор-функцию вида
f(x, y) = (r, g, b),
где x, y – координаты пикселя, r, g, b – яркости красной, зеленой и синей компонент цвета (считается, что любой цвет можно разложить на три указанные компоненты). При использовании методов сжатия, основанных на ДКП, последовательность пикселей разбивают на блоки размером 8 8 и обрабатывают эти блоки по отдельности. При этом из каждого блока выделяют матрицы яркостей красной, зеленой и синей компонент.
Предположим, что матрица яркостей одной из компонент какого-либо блока имеет вид
Теперь последовательно выполним следующие шаги.
1. Все данные смещаются на 128. Новое значение матрицы данных
aСМ = a – 128:
.
2.
Выполняются ДКП над смещенными данными:
;
результаты округляются до целых значений:
.
3. Выполняется загрубение коэффициентов разложения. Этот шаг требует подробного объяснения, так как именно он является основным для сжатия изображения. Дело в том, что каждый коэффициент разложения характеризует вклад соответствующей базисной функции (гармоники) в формирование сигнала. Чем больше сумма значений индексов у коэффициента, тем выше частота соответствующей ему гармоники (гармоника представляет собой косинусоиду). Гармонические составляющие с большими частотами переносят более мелкие подробности изображения, неразличимые зрением. Поэтому некоторые коэффициенты могут быть отброшены и за счет этого уменьшен объем данных, если их хранить или передавать не как отсчеты сигнала, а как результаты ДКП. Для этого коэффициентам с большими индексами необходимо установить больший порог значимости, например следующим образом:
где Q – параметр, задающий степень сжатия. Для рассматриваемого примера при Q = 4 получим
.
4. Кодирование данных. На этом шаге сначала полученные коэффициенты матрицы 1 представляют в виде линейной последовательности
,
т.е. в зигзагообразном порядке. Для нашего примера будет получена следующая последовательность:
18, 0, –4, –7, –4, –1, 0, 1, 4, –3, –4, –2, 0, 1, 0, 0, 0, –1, 0, –2, –3, –1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, –2, 1, –1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.
Затем серии нулей кодируют методом RLE, что дает существенное сжатие (например, в приведенной последовательности имеется одна серия из 3 нулей, одна серия из 11 нулей и одна серия из 26 нулей). Кроме того, для улучшения сжатия дополнительно можно применить метод Хаффмена или арифметического кодирования.
Для восстановления данных выполняются обратные действия:
1. восстанавливается матрица 1;
2. восстанавливается матрица :
;
3. восстанавливается матрица aСМ:
;
4. восстанавливается матрица a:
a = aСМ + 128.
Восстановленная матрица будет отличаться от исходной матрицы. Однако при правильном подборе параметра, задающего степень сжатия, отличия не будет восприниматься человеком, рассматривающим изображение.
Подчеркнем, что шаги компрессии и декомпрессии выполняются для всех компонент всех блоков графического файла.
Изложенный метод служит основой сжатия данных по известному стандарту JPEG. Он также является основой метода сжатия, применяемого при представлении видеоданных в стандарте MPEG. Аналогичные методы применяются также и для сжатия звуковых данных.
