В полномасштабной реализации JPEG могут предоставляться опции выбора режима и параметров сжатия, таких как число членов, используемых в вычислении сумм при нахождении обратного ДКП. Кроме того, определения сжатия JPEG задают, что либо кодирование Хаффмана, либо арифметическое кодирование можно объ единять с дискретным косинус-преобразованием. Отметим однако, что реализации JPEG никогда не используют алгоритмы арифметического кодирования, поскольку эти алгоритмы запатентованы и требуют платы за использование.

Хотя спецификация JPEG не определяет конкретной структуры сжатого файла изображения, существующие реализации используют формат для обмена файлами JPEG (JPEG File Interchange Format - JFIF), предложенный Эриком Гамильтоном (Eric Hamilton) из C-Cube Microsystems и основанный на предложениях множества пользователей JPEG. В этом формате заголовок файла содержит уникальный идентификатор JFIF (называемый подписью файла), версию JFIF, использованную для создания файла, размер изображения (либо в пикселях на сантиметр, либо в пикселях на дюйм), высоту и ширину исходного изображения предварительного просмотра RGB (называется эскизом (thumbnail) изображения) и RGB-значения необязательного изображения предварительного просмотра. Значения пикселей в сжатом файле хранятся с использованием модели цвета YCrCi>, и цветовые компоненты расположены в таком порядке: вначале У, затем Сь, третьим идет Сг. Для полутонового (gray-scale) изображения используется только компонент У. Другая информация в файле включает таблицы, требуемые алгоритмами сжатия. Целые числа в файлах JPEG хранятся с использованием обратного порядка битов.

Кодирование файла изображения JPEG/JFIF (кодирование базовой линии или последовательное) обычно состоит из следующих операций.

1. Преобразование цвета. Пиксельные RGB-коды в файле изображения преобразуются в цветовые компоненты YCrCb.

2. Коммутация цветов. Число кодов цвета в файле можно уменьшить, используя только значения из выбранных пикселей или усреднив цветовые компоненты соседствующих групп пикселей. При простой реализации этой дискретизации (коммутация) используются коды цвета каждого второго, каждого третьего или каждого четвертого пикселя. Обычно коммутация цветовых компонентов выполняется с различными частотами, так что выбираются более яркие У -компоненты. Это позволяет достичь большего сжатия, поскольку записывается меньше различных значений цветности, Сг и Сь3. Дискретное косинус-преобразование. Используя уравнение (15.3), группы кодов пикселей 8 на 8 преобразуются в коды дискретного косинус-преобразования.

4. Сокращение преобразованных значений. Для дальнейшего сжатия кодированного файла изображения записывается сокращенный набор преобразованных значений (раздел 15.3). Число значений в сокращенном наборе может быть фиксированным или рассчитываться с использованием алгоритма, определяющего вклад различных членов преобразования.

5. Кодирование Хаффмана. Завершающая операция сжатия выполняется путем преобразования значений ДКП в коды Хаффмана, как обсуждалось в разделе 15.3.


⇐ вернуться назад | | далее ⇒