Сжатие с потерей качества в стандарте JPEG

Ниже приведено краткое описание стандарта JPEG для черно-белых изображений. Для цветных изображений в формате YUV (4:1:1) один и тот же процесс кодирования используется для яркостной и двух цветоразностных компонент.

Изображение делится на непересекающиеся блоки, каждый размером 8×8 точек. Если размеры изображения не кратны 8, то точки последней строки или, соответственно, последнего столбца повторяются. Каждый блок подвергается двумерному ДКП. Коэффициенты ДКП квантуются и кодируются неравномерным кодом. Кодирование неравномерным кодом выполняется в две ступени. На первой ступени выполняется дифференциальное кодирование для коэффициентов постоянного тока и кодирование длин серий для остальных коэффициентов. На второй ступени производится кодирование кодом Хаффмана.

Пусть DCi и DCi -1 обозначают коэффициенты постоянного тока в блоках i и i -1. Из-за высокой корреляции значений коэффициентов постоянного тока в соседних блоках, JPEG использует для них дифференциальное кодирование. Для черно-белых изображений (или компонент Y, U или V цветного изображения) точка изображения соответствует 8 битам и разность DCi -DCi -1 принимает значение в диапазоне -2047 до 2047. Этот диапазон подразделяется на 12 категорий, где i -я категория включает все разности, которые могут быть представлены в двоичной форме последовательностью длины i бит. Это первые 12 категорий из таблицы 1. После просмотра таблицы каждый коэффициент постоянного тока может быть описан парой (категория, амплитуда). Если значение DCi - DCi -1 ≥0, то амплитуда – это просто двоичное представление этой разности с числом бит, задаваемым категорией. Если же DCi - DCi -1 <0, то амплитуда кодируется обратным кодом абсолютного значения разности. Из указанной пары: (категория, амплитуда) только категория кодируется кодом Хаффмана.

Для 8-битовых изображений остальные коэффициенты, называемые коэффициентами переменного тока, могут принимать значения в диапазоне -1023 до 1023. Как и для коэффициентов постоянного тока, этот диапазон делится на 10 категорий, и каждый коэффициент может быть описан парой: (категория, амплитуда). После квантования большинство коэффициентов переменного тока оказывается равными 0, так что кодировать необходимо только небольшое число ненулевых коэффициентов. Коэффициенты переменного тока обрабатываются в зигзагообразном порядке. На рис. 4 показано, каким образом производится считывание элементов матрицы размера 8×8. Этот порядок позволяет обеспечить более эффективное кодирование длин серий.

Рисунок 4 – Зигзагообразный порядок считывания коэффициентов преобразования

Кодер длин серий выдает ненулевое значение следующего за данным ненулевого коэффициента и длину серии нулей, т.е. число нулевых коэффициентов, предшествующих этому ненулевому коэффициенту. Таким образом, каждый ненулевой коэффициент может быть записан парой: (длина серии/категория, амплитуда). Значение длина серии/категория кодируется кодом Хаффмана, а значение амплитуды вычисляется, как и в случае кодирования разностей коэффициентов постоянного тока и добавляется к коду. Например, пусть коэффициенту предшествует 6 нулей и он принимает значение -18. Из таблицы 1 следует, что -18 принадлежит к категории 5. Обратный код 18 равен 01101. Таким образом, коэффициент представляется парой (6/5,01101). Пара (6/5) кодируется кодом Хаффмана и 5-битовое значение для -18 добавляется к коду. Если слово кода Хаффмана для (6/5) есть 1101, то кодовое слово для -18 – это 110101101.

В кодировании коэффициентов переменного тока имеются два специальных случая.

1. После некоторого ненулевого коэффициента все остальные символы равны 0. В этом случае передается специальный символ (0/0), который означает конец блока (EOB).

2. Встретилась комбинация длина серии/категория, отсутствующая в таблице кода Хаффмана. В этом случае передается специальное кодовое слово, называемое escape-код, за которым равномерным кодом передается значение длины серии, далее следует равномерный код ненулевого значения.

Для завершения описания стандарта необходимы таблицы кодов и матрицы квантования. Эти данные мы не приводим, поскольку они заняли бы слишком много места и не существенны для понимания сути алгоритмов. Кроме того, стандарт допускает использование произвольных матриц квантования и неравномерных кодов для кодирования битовых категорий коэффициентов постоянного и переменного тока. В этом случае матрицы и кодовые таблицы должны быть переданы в составе битового потока в оговоренном стандартом формате.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: