
- •Сжатие данных
- •Терминология
- •Физическое и логическое сжатие
- •Симметричное и асимметричное сжатие
- •Адаптивное, полуадаптивное и неадаптивное кодирование
- •Сжатие с потерями и минимизация потерь
- •Варианты группового кодирования
- •Пакеты вертикального повторения
- •Удаление шума и дифференцирование
- •Варианты алгоритма lzw
- •Юридические вопросы использования lzw
- •Историческая справка
- •Одномерное кодирование Group 3 (g31d)
- •Сжатие tiff Type 2
- •Двухмерное кодирование Group 3 (g32d)
- •Двухмерное кодирование Group 4 (g42d)
- •Советы по разработке кодировщиков и декодеров ccitt
- •Jpeg в перспективе
- •Основы jpeg
- •Преобразование изображения
- •Субдискретизация компонентов цветности
- •Применение дискретного косинус-преобразования
- •Квантование каждого блока
- •Арифметическое кодирование
- •Сжатие jpeg без потерь
- •Селективное улучшение
- •Фрагментация изображения
- •Принцип работы jbig
- •Принципы работы art
- •Основы фрактальной графики
- •Мультимедиа
- •Анимация
- •Цифровая видеоинформация
- •Цифровая аудиоинформация
- •Стандарт midi
Арифметическое кодирование
Основы стандарта JPEG определяют сжатие Хаффмена как финальный этап процесса кодирования. Расширение JPEG заменяет кодирование по алгоритму Хаффмена двоичным арифметическим статистическим кодированием. Применение арифметического кодировщика позволяет уменьшить результирующий объем данных JPEG по сравнению с кодировщиком Хаффмена на 10—15%, причем без изменения качества результирующего изображения, что весьма важно в реализациях, архивирующих огромное количество изображений JPEG.
Арифметическое кодирование имеет ряд недостатков:
• Не все декодеры JPEG поддерживают арифметическое декодирование. В частности, декодеры, базирующиеся на основном стандарте JPEG, поддерживают только алгоритм Хаффмена.
• Арифметический алгоритм медленнее алгоритма Хаффмена и при кодировании, и при декодировании.
• Арифметический кодировщик, используемый JPEG (так называемый Q-кодировщик), является собственностью компаний IBM и AT&T (патент на него имеет и фирма Mitsubishi), поэтому на применение данного кодировщика в какой-либо реализации JPEG необходимо получить лицензию у соответствующего производителя.
Сжатие jpeg без потерь
Очень часто возникает вопрос: "Может ли Q-фактор превратить JPEG в сжатие без потерь?". Никогда. Метод JPEG, изложенный в основах стандарта, является методом сжатия с потерями, зависящими от заданных параметров. Кодировщик на базе DCT фактически всегда работает с потерями (хотя бы потому, что в процессе преобразования цвета и на этапе дискретных косинус-преобразований ошибки происходят при округлении). Можно подавить потери информации на этапах субдискретизации и квантования, но это все равно не позволит точно воссоздать оригинальные битовые значения. Кроме того, установка минимального значения Q-фактора в случае применения JPEG (метода сжатия с потерями) очень неэффективна.
Стандарт JPEG предлагает специальный режим сжатия без потерь. Он не имеет ничего общего с алгоритмами на базе DCT и в настоящее время применяется лишь в нескольких коммерческих приложениях. JPEG-сжатие без потерь является одной из форм кодирования с предсказанием, используемого схему двухмерной дифференциальной импульсно-кодовой модуляции (DPCM). Основан он на том, что значение каждого пикселя объединяется со значениями соседних (до 3) пикселей для формирования значения прогнозирующего параметра. Затем величина последнего вычитается из оригинального пиксельного значения. После обработки всего растра результирующие значения сжимаются либо с помощью алгоритма Хаффмена, либо методом двоичного арифметического статистического кодирования, описанными в стандарте JPEG.
Сжатие по схеме JPEG без потерь применяется для обработки изображений, пиксельная глубина которых составляет от 2 до 16 битов, но более эффективно обрабатывает изображения, пиксельная глубина которых превышает 6 битов. Степень сжатия таких изображений обычно равна 2:1. Для обработки данных изображения меньшей пиксельной глубины целесообразнее применять другие схемы сжатия.
Расширения JPEG (Часть 3)
В части 3 спецификации JPEG описаны следующие типы расширения.
Переменное квантование
Переменное квантование является расширенным вариантом процесса квантования DCT, которое можно использовать в любых DCT-процессах, определенных алгоритмом JPEG (за исключением базового JPEG).
JPEG-квантование предусматривает квантование каждого из 64 коэффициентов DCT с помощью соответствующего значения из таблицы квантования. Коэффициенты квантования могут устанавливаться перед началом сканирования, но в дальнейшем изменяться не должны.
При использовании переменного квантования коэффициенты квантования в сжатом потоке данных могут быть масштабированы. В начале каждого блока размером 8х8 пикселей стоит коэффициент, применяемый для масштабирования значений таблицы квантования в компоненте изображения и постановки в соответствие этим значениям АС-коэффициентов, записанных в сжатых данных. Таким образом обеспечивается возможность поиска и изменения коэффициентов квантования.
Метод переменного квантования позволяет изменять характеристики изображения в процессе контроля качества изображения на основании заданной модели. Переменный квантователь во время декодирования может постоянно самонастраиваться, обеспечивая оптимальное качество.
Путем изменения масштабирующего коэффициента квантователя можно уменьшать или увеличивать объем выходных данных. Постоянная адаптивная регулировка, осуществляемая с помощью переменного квантователя, позволяет установить оптимальный размер получаемого JPEG-файла или потока данных.
Метод переменного квантования, кроме того, дает возможность алгоритму JPEG записывать данные изображения, изначально закодированные по какой-либо другой схеме переменного квантования, например с использованием MPEG. Чтобы MPEG-данные были точно перекодированы в другой формат, последний должен поддерживать переменное квантование, обеспечивающее высокую степень сжатия. Это расширение позволяет JPEG поддерживать поток данных, изначально полученный из переменного квантованного источника, например из 1-фрейма MPEG