Самков Иван Юрьевич : другие произведения.

Стандарт Jpeg

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:
  • Аннотация:
    Более ранний формат GIF позволял сохранять только изображения с максимальной глубиной цвета 8 бит/пиксел, т.е. не более 256 цветов, форматы TIFF и BMP позволяли хранить данные глубиной 24-бит/пиксел но их версии, существовавшие до JPEG, плохо сжимали картинку.

  

Представлен обзор алгоритма и основных методов JPEG-сжатия неподвижных изображений.

  

  Полная иллюстрированная версия статьи про JPEG на dlrm.ru

    
  
   Более ранний формат GIF позволял сохранять только изображения с максимальной глубиной цвета 8 бит/пиксел, т.е. не более 256 цветов, форматы TIFF и BMP позволяли хранить данные глубиной 24-бит/пиксел но их версии, существовавшие до JPEG, плохо сжимали картинку.
  
   Аббревиатура JPEG - от Joint Photographic Experts Group, входящей в состав ISO. Метод сжатия JPEG позволяет сжимать данные полноцветных многоградационных изображений с глубиной от 6 до 24 бит/пиксель с достаточно высокой скоростью и эффективностью. позволяет достичь очень высоких коэффициентов сжатия (но получаемое после восстановления изображение будет отличаться от исходного). JPEG используется для работы с полноцветными изображениями высокого фотографического качества
  
   Спецификация JPEG определяет минимальные требования стандарта, которые должны поддерживаться всеми программами, использующими этот метод. JPEG основан на схеме кодирования, базирующейся на дискретных косинус-преобразованиях (ДКП, DCT). Процесс сжатия по схеме JPEG включает ряд этапов (см. рис. 1):
  
  Структура сжатия в JPEG
  Рис.1 Структура сжатия в JPEG
  
   Декодирование JPEG осуществляется в обратном порядке (рис.2).
  
  Структура восстановления из JPEG
  Рис.2 Структура восстановления из JPEG
  
  
  Преобразование в цветовое пространство.
  Перевод из цветового пространства, например RGB, в цветовое пространство YCrCb (YUV) можно осуществить с помощью матрицы перехода. Обратно - с помощью обратной матрицы. Y - яркостная составляющая, а Cr, Cb - компоненты хроматический красный и хроматический синий. Т.к. глаз меньше реагирует на цветность, чем на яркость, Cr и Cb сжимают сильнее (аналогично ТВ-кодированию).
  Субдискретизация компонентов цветности.
  JPEG предлагает несколько вариантов определения коэффициентов дискретизации, или относительных размеров каналов субдискретизации. Канал яркости -всегда дискретизация 1:1. Для каналов цветности обычно субдискретизация 2 - в горизонтальном направлении и 1:1 или 2:1 - в вертикальном. Сегментация изображения облегчает буферизацию данных изображения в памяти ЭВМ. JPEG поддерживает три типа сегментации изображений: простую (изображение делится на два или более сегментов фиксированного размера), пирамидальную (изображение также делится на сегменты, а они - на еще более мелкие сегменты с разл. уровнями разрешения) и комбинированную (допускает наличие перекрывающихся сегментов разных размеров, с разными коэффициентами масштабирования и параметрами сжатия).
  
   Например, в случае использования сегментов размером 8х8 пикселов, для каждого блока формируется набор чисел. Первые несколько чисел представляют цвет блока в целом, последующие - более тонкие детали. Спектр деталей базируется на зрительном восприятии человека, поэтому крупные детали более заметны. На следующем этапе, в зависимости от выбранного уровня качества, отбрасывается определенная часть чисел, представляющих тонкие детали.
  Дискретное косинусное преобразование
  позволяет определить, какую часть информации можно безболезненно выбросить, не внося серьезных искажений в картинку. Практически невозможно выполнить ДКП для всего изображения сразу. Для решения этой проблемы разработчики JPEG предложили разбивать изображение на блоки размером 8x8 точек.
  
   Увеличивая размеры блока ДКП, можно добиться некоторого увеличения результатов сжатия. Ограничения в коэффициенте сжатия объясняются малой вероятностью того, что удаленные на значительное расстояние точки изображения имеют одинаковые атрибуты.
  
   Обычное ДКП:
  
  Обычное ДКП
  
  
   Более эффективный вариант вычисления коэффициентов ДКП реализован через перемножение матриц. При таком подходе формула ДКП может быть записана в следующем виде:
  
   ДКП = КП x Точки x (КП)т,
  
  где КП - матрица косинусного преобразования размером NxN:
  
  матрица косинусного преобразования размером NxN:;
  Точки - матрица NxN из пикселов изображения;
  (КП)т - транспонированная матрица КП.
  
   Т.к. ДКП - разновидность преобразования Фурье, то все методы ускорения преобразования Фурье применены и в данном случае. Округление коэффициентов - процесс уменьшения количества битов для хранения коэффициентов матрицы ДКП за счет потери точности. Результирующая матрица получается делением каждого элемента матрицы дискретного косинусного преобразования на соответствующий элемент матрицы округления и последующим округлением результата до ближайшего целого числа. JPEG позволяет использовать любую матрицу округления, однако ISO разработала набор матриц округления. Для определения шага роста значений в матрице округления, задается одно значение в диапазоне [1, 25], называемое фактором качества. Затем матрица заполняется следующим образом:
  
  for (i = 0; i < N; i++)
   {
   for (j = 0; j < N; j++)
   {
   Matrix[i][j] = 1 + (1 + i + j) * QualityFactor;
   }
   }
  
   QualityFactor - интервал между соседними уровнями матрицы округления на ее диагоналях. Пример матрицы округления c QualityFactor = 2:
  
  3 5 7 9 11 13 15 17
  5 7 11 13 15 17 19 21
  7 11 13 15 17 19 21 23
  9 11 13 15 17 19 21 23
  11 13 15 17 19 21 23 25
  13 15 17 19 21 23 25 27
  15 17 19 21 23 25 27 29
  17 19 21 23 25 27 29 31
  
   Различные реализации данного метода имеют разные диапазоны Q-фактора, но типичным считается 1 до 100. При значении фактора, равном 1, создается сжатое изображение самого маленького размера, но плохого качества; при значении фактора, равном 100, можно получить сжатое изображение большего размера, но и лучшего качества
  
  Операция округления является единственной фазой работы JPEG, где происходит потеря информации.
  
  Сам по себе этап ДКП не предусматривает потерь, за исключением ошибок округления.
  Квантование.
   После ДКП можно отбросить высокочастотные данные без потери низкочастотных. Прежде чем отбросить определенный объем информации, компрессор делит каждое выходное значение ДКП на "коэффициент квантования", округляя результат до целого:
  
  После ДКП можно отбросить высокочастотные данные без потери низкочастотных.;
  Y - данные после ДКП, Q - матрица квантования.
  
   Чем больше коэффициент квантования, тем больше данных теряется, поскольку реальное ДКП-значение представляется все менее и менее точно. Каждая из 64 позиций выходного блока ДКП имеет собственный коэффициент квантования. Причем термы большего порядка квантуются с большим коэффициентом, чем термы меньшего порядка. Кроме того, данные цветности квантуются с большими коэффициентами, чем данные яркости. Искусство программиста - найти оптимальную матрицу квантования. Применяемые компрессором таблицы квантования записываются в сжатый файл, чтобы декомпрессор знал, как восстановить коэффициенты ДКП (приблизительно).
  Кодирование
   Кодирование - заключительная стадия работы кодера. Первое действие - это замена абсолютного значения коэффициента, расположенного в ячейке (0,0) матрицы ДКП, на относительное. Так как соседние блоки изображения в значительной степени "похожи" друг на друга, то кодирование очередного (0,0) элемента как разницы с предыдущим дает меньшее значение. Коэффициенты матрицы ДКП обходятся зигзагом (см. рис.3). После чего - второе действие - нулевые значения кодируются с использованием алгоритма кодирования повторов (RLE).
  
  зигзаг-сканирование;
   Рис.3 Перевод матрицы 8x8 в 64-элементный вектор при помощи зигзаг-сканирования.
  
  Таким образом, в начале вектора мы получаем коэффициенты матрицы, соответствующие низким частотам, а в конце - высоким.
   Третье действие - результат обрабатывается с помощью "кодирования энтропии", т.е. алгоритмов Хаффмана или арифметического кодирования, в зависимости от реализации. После завершения этого этапа поток данных JPEG готов к передаче по коммуникационным каналам или инкапсуляции в формат файла изображения.
  Требования к сжимаемым изображениям.
   Схема JPEG эффективна только при сжатии многоградационных изображений, в которых различия между соседними пикселями, как правило, весьма незначительны. Практически JPEG хорошо работает только с изображениями, имеющими глубину хотя бы 4 или 5 битов/пиксел на цветовой канал. Основы стандарта определяют глубину входного образца в 8 бит/пиксел. Данные с меньшей битовой глубиной могут быть обработаны посредством масштабирования до 8 бит/пиксел, но результат для исходных данных с низкой глубиной цвета может быть неудовлетворительным, поскольку между атрибутами соседних пикселов будут существенные различия.
  
   Наряду с вышесказанным необходимо отметить, что графическая анимация, черно-белые иллюстрации, документы, а также типичная векторная графика, как правило, JPEG сжимаются плохо.
  Формат JFIF
   Строго говоря, JPEG обозначает рассмотренный выше алгоритм сжатия, а не конкретный формат представления графической информации. Практически любую графическую информацию можно сжать по такому алгоритму. Формат файлов, использующих алгоритм JPEG, формально называют JFIF (JPEG File Interchange Format). На практике, очень часто файлы, использующие JPEG - сжатие, называют JPEG - файлами.
  
   На основе JPEG - метода сжатия построены многочисленные форматы, например, формат TIFF/JPEG, известный как TIFF 6.0, TIFF, QuickTime и др.
  
   Файлы с графикой в формате JPEG имеют расширение *.jpg.
  
   Формат JPEG является TrueColor-форматом, то есть может хранить изображения с глубиной цвета 24 бит/пиксел. Такой глубины цвета достаточно для практически точного воспроизведения изображений любой сложности на экране монитора и при печати. JPEG обладает более высокой степенью сжатия изображений, нежели GIF, но не обладает возможностью хранить несколько изображений в одном файле. Правда, известна модификация формата JPEG, получившая название Progressive JPEG, который предназначен для тех же задач, что и чересстрочное отображение GIF-изображений. Это сделало формат JPEG более привлекательным в качестве сетевого стандарта. Формат JPEG получил большое распространение в Web - публикациях для представления графических элементов Web - страницы, в тех случаях, когда требуется многоцветное качественное изображение.
  Этикетка
  Алгоритм JPEG и построенные на его основе форматы предусматривают реализацию функциональной возможности, получившей название этикетка. Фактически, это уменьшенная копия изображения. Этикетки могут быть закодированы методом JPEG; сохранены в формате 1 байт/пиксел (т.е. в виде полутонового изображения) или представлены в виде полноцветного изображения с 16,7 млн.цветов(24 бит/пиксел).
  JPEG 2000
   Одним из основных отличий JPEG2000 от JPEG является изменение основной процедуры преобразования изображения. В то время как в JPEG использовалось ДКП -в JPEG2000 используется вейвлет-преобразование, что позволило не только улучшить визуальное качество изображения, что демонстрирует рис.4, но и добавить некоторую интересную функциональность, принципиально не достижимую в JPEG.
  
  JPEG: 3 Мегабайта
  JPEG2000: 19 КилобайтJPEG: 19 Килобайт;
  Рис.4 - Сравнение визуального качества изображений сжатых по алгоритмам JPEG и JPEG 2000
  
   Основная идея при сжатии сигналов с помощью вейвлет преобразования -отбрасывать детализирующие коэффициенты, значения которых близки к нулю. Стандарт JPEG2000 превосходит по эффективности стандарт JPEG примерно в 2 раза при сжатии с потерями и на 5-20% при сжатии без потерь. Конечно, эффективность при сжатии без потерь в данном случае оказывается не такой высокой, как у стандарта JPEG-LS (где используется схема предсказания значения пикселя, используя три ближайших соседа: верхний, левый и верхний левый пиксели), однако она вполне приемлема. Что же касается эффективности сжатия с потерями, здесь стандарт позволяет получать результаты, близкие к наилучшим на сегодняшний день результатам для подобного рода методов.
  
   Список литературы
  
   1. Аксёнов А.А. Методы и средства подготовки электронных изданий, http://el-izdanie.narod.ru, 2002
   2. Петров А. Вейвлеты и их приложения, http://gmdidro.googlepages.com/Wavelets_and_Its_application.html, РГАТА, 2007
   3. Семенюк В.В. Обзор стандарта JPEG2000, http://compression.ru, СПб, 2002
   4. Ватолин Д., Ратушняк А., и др. Методы сжатия данных: Сжатие изображений. Алгоритмы архивации с потерями, http://compression.ru, 2002
   2007 Иван Самков

  Полная иллюстрированная версия статьи про JPEG на dlrm.ru

    

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"