Московский государственный университет имени М.В.Ломоносова
Опубликован: 23.04.2007 | Доступ: свободный | Студентов: 3285 / 447 | Оценка: 4.18 / 3.71 | Длительность: 17:54:00
ISBN: 978-5-9556-0098-7
Специальности: Программист
Лекция 14:

Сжатие изображений с потерями

< Лекция 13 || Лекция 14: 12345

14.4. Алгоритм сжатия изображений JPEG

Алгоритм сжатия, используемый в формате хранения изображений JPEG1Joint Photographic Experts Group организация, занимающаяся разработкой и стандартизацией алгоритмов и форматов сжатия изображений. [49], построен на использовании дискретного косинусного преобразования. Схема сжатия в алгоритме представляет собой конвейер, где данное преобразование - лишь одна из стадий (хотя, возможно, и важнейшая). Опишем алгоритм, предполагая, что на вход дано 24 -битное изображение, значения атрибутов пикселей которого являются элементами цветового пространства RGB ( "Основные понятия. Представление цвета в машинной графике" ).

  1. Перевод в цветовое пространство YCbCr (подробнее "Основные понятия. Представление цвета в машинной графике" ). Здесь Y - компонента яркости, Cb и Cr - компоненты цветности. Человеческий глаз более чувствителен к яркости, чем к цвету. Поэтому важнее сохранить большую точность при передаче Y, чем при передаче Cb и Cr. Перевод осуществляется по следующей формуле:
    \left( \begin{array}{c} 
Y & Cb & Cr 
\end{array} \right) ={\left( \begin{array}{ccc} 
0,299 & 0,587 & 0,114 \\ 
-0,1687 & -0,3313 & 0,5 \\ 
0,5 & -0,4187 & -0,0813  
\end{array} \right)} {\left( \begin{array}{c} 
R & G & B  
\end{array} \right)} + {\left( \begin{array}{c} 
0 & 128 & 128   
\end{array} \right)} ;

    обратный перевод:

    \left( \begin{array}{c} 
R & G & B  
\end{array} \right)={\left( \begin{array}{ccc} 
1 & 0 & 1,402 \\ 
1 & -0,34415 & -0,71414 \\ 
1 & 1,772  & 0 
\end{array} \right)}{\left( \begin{array}{c} 
Y & Cb-128 & Cr-128  
\end{array} \right)}.
  2. Субдискретизация компонент цветности. После перевода в цветовое пространство YCbCr осуществляется субдискретизация по следующим соотношениям: 4:4:4 (отсутствие передискретизации), 4:2:2 (компоненты цветности меняются через одну по горизонтали), 4:2:0 (компоненты цветности меняются через одну по горизонтали; при этом по вертикали они меняются через строку). Проиллюстрируем подробнее данные соотношения на примерах. Будем преобразовывать блок 4 x 4 пикселя изображения:
    Y00Cb00Cr00 Y01Cb01Cr01 Y02Cb02Cr02 Y03Cb03Cr03
    Y10Cb10Cr10 Y11Cb11Cr11 Y12Cb12Cr12 Y13Cb13Cr13
    Y20Cb20Cr20 Y21Cb21Cr21 Y22Cb22Cr22 Y23Cb23Cr23
    Y30Cb30Cr30 Y31Cb31Cr31 Y32Cb32Cr32 Y33Cb33Cr33

    тогда:

    • 4:4:4. Cубдискретизированный блок будет таким же.
    • 4:2:2. Cубдискретизированный блок будет таким:
      Y00Cb00Cr00 Y01Cb00Cr00 Y02Cb02Cr02 Y03Cb02Cr02
      Y10Cb10Cr10 Y11Cb10Cr10 Y12Cb12Cr12 Y13Cb12Cr12
      Y20Cb20Cr20 Y21Cb20Cr20 Y22Cb22Cr22 Y23Cb22Cr22
      Y30Cb30Cr30 Y31Cb30Cr30 Y32Cb32Cr32 Y33Cb32Cr32
    • 4:2:0. Cубдискретизированный блок будет таким:
      Y00Cb00Cr00 Y01Cb00Cr00 Y02Cb02Cr02 Y03Cb02Cr02
      Y10Cb00Cr00 Y11Cb00Cr00 Y12Cb02Cr02 Y13Cb02Cr02
      Y20Cb20Cr20 Y21Cb20Cr20 Y22Cb22Cr22 Y23Cb22Cr22
      Y30Cb20Cr20 Y31Cb20Cr20 Y32Cb22Cr22 Y33Cb22Cr22
    В дальнейшем компоненты обрабатываются и хранятся отдельно друг от друга. Таким образом, в последних двух случаях мы сразу убрали \frac{1}{3} и \frac{1}{2} информации соответственно. Выбор того или иного способа передискретизации влияет на изменение степени сжатия. Очевидно, что при отсутствии передискретизации степень сжатия ухудшится, а при схеме 4:2:0 будет наибольшей. Если изображение не делится нацело на блоки 4 x 4, то оно дополняется по непрерывности, т.е. в случае, если размер по вертикали не делится на 4, то добавляется еще от одной до трех строк, совпадающих с последней снизу. Аналогично делается, если размер по горизонтали не делится на 4 - добавляются столбцы, совпадающие с самым правым.
  3. Применение дискретного косинус-преобразования. Изображение (точнее, полученные после субдискретизации компоненты) разбивается на блоки 8 x 8 ; к каждому блоку применяется дискретное косинус-преобразование (отдельно для компонент Y, Cb и Сr ). Если изображение не делится нацело на блоки 8 x 8, то добавляется соответствующее количество строк и столбцов по непрерывности.
  4. Квантование. Человеческий глаз практически не замечает изменения в высокочастотных составляющих, следовательно, коэффициенты, отвечающие за высокие частоты, можно хранить с меньшей точностью. Квантование осуществляется с помощью умножения матрицы коэффициентов ДКП на так называемую матрицу квантования:
    \left( \begin{array}{ccc} 
t11 & \ldots & t18 \\ 
\vdots & \ddots  & \vdots \\ 
t81 & \ldots & t88 
\end{array} \right) \otimes \left( \begin{array}{ccc} 
q11 & \ldots & q18 \\ 
\vdots & \ddots  & \vdots \\ 
q81 & \ldots & q88 
\end{array} \right) = \left( \begin{array}{ccc} 
T11 & \ldots & T18 \\ 
\vdots & \ddots  & \vdots \\ 
T81 & \ldots & T88 
\end{array} \right),

    где \otimes означает покомпонентное умножение и взятие целой части, т.е. Tij = [tijqij ], где tij - исходные коэффициенты ДКП, qij - компоненты матрицы квантования, [] - операция взятия целой части. Таким образом, происходит квантование области определения коэффициентов исходной матрицы. Матрицы квантования разные для компонент цветности и яркости.

    На данной стадии можно задавать степень сжатия путем изменения матриц квантования. Чем ближе к нулю элементы матрицы квантования, тем меньше будет диапазон значений элементов матрицы Tij, а значит, их можно закодировать, затратив меньшее количество информации. Например, если элементы qij достаточно близки к нулю, то большинство элементов Tij будет нулями.

    Матрицы квантования оговорены в стандарте, а для изменения степени сжатия их умножают на определенный коэффициент. Очевидно, что потери на этой стадии самые большие; если убрать слишком много информации из низкочастотных компонент (т.е. слишком сильно огрубить компоненты), то появятся артефакты: распадение на квадраты 8 x 8, эффект Гиббса (возникновение ореола рядом с местами резких цветовых переходов) (см. рис. 14.3 и "Дискретизация. Антиалиасинг. Геометрические преобразования растровых изображений" ).

  5. Зигзаг-упорядочивание. К каждой квантованной матрице применяется так называемое зигзаг-упорядочивание. Это особый проход матрицы для получения последовательности (см. рис. 14.4). Сначала идет элемент T00, затем T01, T10, T11 . .. Причем для типичных фотореалистических изображений сначала будут идти ненулевые коэффициенты, соответствующие низкочастотным компонентам, а затем - множество нулей.
  6. Сжатие методом RLE. Полученная последовательность кодируется с помощью модифицированного алгоритма группового кодирования. Выводятся пары чисел: первое - число нулей, второе - значение после подпоследовательности нулей. Например, закодируем такую последовательность:
    122 0 125 0 0 44 0 0 0 0 -1.
    Получим: (0, 122) (1, 125) (2, 44) (4, -1). Также существует специальный код для обозначения того факта, что оставшиеся значения в последовательности суть нули.
  7. Сжатие методом Хаффмена. Проводится кодированием методом Хаффмена со специальной фиксированной таблицей. Подробно этот метод описан "Алгоритмы сжатия изображений без потерь" .
Артефакты JPEG. Вверху - исходное изображение, внизу - изображение, сжатое в 30 раз алгоритмом JPEG

Рис. 14.3. Артефакты JPEG. Вверху - исходное изображение, внизу - изображение, сжатое в 30 раз алгоритмом JPEG
Зигзаг-упорядочивание

Рис. 14.4. Зигзаг-упорядочивание

Алгоритм восстановления изображения суть инверсия вышеприведенных действий. Степень сжатия от 5 до 100 и более раз (варьируется с помощью матриц квантования и задания метода субдискретизации). При этом визуальное качество для большинства фотореалистичных изображений остается на хорошем уровне при сжатии до 15 раз.

Данный алгоритм и формат являются самыми распространенными для передачи и хранения полноцветных изображений. Столь широкое распространение объясняется несколькими причинами: относительно невысокой вычислительной сложностью (что было очень актуально до 1996 года), достаточной степенью стандартизованности формата и алгоритма, а также отсутствием необходимости платить какие-либо лицензионные отчисления (т.к. отсутствуют патентованные алгоритмы). К недостаткам алгоритма относят возникновение упоминавшихся выше артефактов, которые слишком заметны для человеческого глаза.

Описанная выше схема сжатия является типичной для алгоритмов сжатия изображений с потерями (за исключением фрактального). Отличие в основном состоит в типе преобразования на шаге 3. Далее мы рассмотрим другой вид преобразования.

< Лекция 13 || Лекция 14: 12345