
- •Сжатие данных
- •Терминология
- •Физическое и логическое сжатие
- •Симметричное и асимметричное сжатие
- •Адаптивное, полуадаптивное и неадаптивное кодирование
- •Сжатие с потерями и минимизация потерь
- •Варианты группового кодирования
- •Пакеты вертикального повторения
- •Удаление шума и дифференцирование
- •Варианты алгоритма lzw
- •Юридические вопросы использования lzw
- •Историческая справка
- •Одномерное кодирование Group 3 (g31d)
- •Сжатие tiff Type 2
- •Двухмерное кодирование Group 3 (g32d)
- •Двухмерное кодирование Group 4 (g42d)
- •Советы по разработке кодировщиков и декодеров ccitt
- •Jpeg в перспективе
- •Основы jpeg
- •Преобразование изображения
- •Субдискретизация компонентов цветности
- •Применение дискретного косинус-преобразования
- •Квантование каждого блока
- •Арифметическое кодирование
- •Сжатие jpeg без потерь
- •Селективное улучшение
- •Фрагментация изображения
- •Принцип работы jbig
- •Принципы работы art
- •Основы фрактальной графики
- •Мультимедиа
- •Анимация
- •Цифровая видеоинформация
- •Цифровая аудиоинформация
- •Стандарт midi
Jpeg в перспективе
В отличие от других методов сжатия, описанных в данной главе, JPEG не является одним алгоритмом. Напротив, он может рассматриваться как набор методов сжатия изображений, пригодных для удовлетворения нужд пользователя. JPEG может настраиваться на воспроизведение очень маленьких, сжатых изображений относительно плохого качества, но тем не менее подходящих для большинства программ, и в то же время позволяет производить сжатые изображения очень высокого качества, объем данных которых намного меньше, чем у оригинальных несжатых данных.
JPEG, как правило, сопровождается потерями, что также является его отличительной чертой. Большинство популярных схем сжатия, таких, например, как RLE, LZW или СС1ТТ, считаются методами сжатия без потерь, т.е. в процессе кодирования никакие данные не отбрасываются. Изображение, сжатое с применением метода без потерь, идентично оригинальному несжатому изображению.
Схемы сжатия, сопровождающиеся потерями, как известно, отбрасывают в процессе кодирования бесполезные данные, что позволяет достичь намного большей степени сжатия. Схема JPEG основана на отбрасывании информации, которую трудно заметить визуально. Небольшие изменения цвета плохо распознаются глазом человека, а вот незначительные изменения интенсивности (светлее или темнее) — лучше. Исходя из этого, кодирование с потерями JPEG стремится к бережному обращению с полутоновой частью изображения, но более свободно обращается с цветом.
Схема JPEG была специально разработана для сжатия цветных и полутоновых многоградационных изображений — фотографий, телевизионных заставок, другой сложной графики. При этом анимация, черно-белые иллюстрации и документы, а также типичная векторная графика, как правило, сжимаются плохо. В настоящее время JPEG стали использовать для сжатия "живого" видео, однако стандарт не содержит никаких положений относительно такого применения.
Тот факт, что JPEG сжимает с потерями и работает только с данными определенного типа, может вызвать у вас вопрос: "Стоит ли его применять?". Все зависит от ваших потребностей. JPEG является великолепным способом хранения 24-битовых фотографических изображений, используемых в программах визуализации и мультимедиа. 24-битовые (16 миллионов цветов) изображения, сжатые JPEG, значительно более эффектны, чем 8-битовые (256 цветов) изображения на VGA-дисплеях, а применение 24-битовых дисплеев (стоимость которых сейчас относительно невелика) производит потрясающее впечатление.
Объем сжатых данных зависит от содержимого изображения. Степень сжатия изображения с фотографическим качеством может составить от 20:1 до 25:1 без заметной потери качества. Конечно же, столь высокий показатель сжатия сопровождается отличием от оригинала, но оно столь незначительно, что качество изображения все же остается достаточно высоким. Степень сжатия 20:1 и более во многих случаях не только сохраняет дисковое пространство, но и уменьшает время передачи данных по сетям и телефонным каналам.
Конечный пользователь может "отрегулировать" качество кодировщика JPEG, использовав параметр, который иногда называют установкой качества или Q-фактором. Различные реализации данного метода имеют разные диапазоны Q-фактора, но типичным считается 1—100. При значении фактора, равном 1, создается сжатое изображение самого маленького размера, но плохого качества; при значении фактора, равном 100, можно получить сжатое изображение большего размера, но и лучшего качества. Оптимальное значение Q-фактора зависит от содержимого изображения и, следовательно, подбирается индивидуально. Особым искусством при сжатии JPEG является выбор минимального значения Q-фактора, позволяющего создать изображение приемлемого качества и наиболее близкое к оригиналу.
Библиотека JPEG, поставляемая Independent JPEG Group (включена в компакт-диск, прилагаемый к данной книге), поддерживает диапазон качества от 1 до 100. Чтобы подобрать оптимальные значения Q при сжатии изображения с помощью этой библиотеки, выполните следующие действия:
1. Закодируйте изображение, установив параметр качества Q=75.
2. Если вы получили изображение с недопустимыми дефектами, то закодируйте данное изображение повторно, увеличив значение Q.
3. Если качество изображения приемлемо, то уменьшайте Q до тех пор, пока это не приведет к недопустимым дефектам. В этом случае оптимальным значением будет предыдущее.
4. Повторите этот процесс для каждого изображения (или просто закодируйте все изображения с установкой качества 75). JPEG не всегда является лучшей схемой сжатия. Ниже приведены возможные причины тому:
• Как мы уже говорили, GPEG не удовлетворяет всем возможным потребностям в сжатии. Изображения, содержащие большие области одного цвета, сжимаются весьма плохо. JPEG вводит в такие изображения артефакты, особенно заметные на сплошном фоне. Это значительно ухудшает качество изображений по сравнению с традиционным методом сжатия без потерь. Изображения с более сложными композициями содержат еще худшие артефакты, правда, они значительно менее заметны на сложном фоне.
• При реализации JPEG только в виде программного продукта данный метод выглядит весьма медленным. Для более быстрой распаковки вам понадобятся аппаратные реализации JPEG, если только вы не хотите ждать появления быстрой программной реализации или не купите более быстрый компьютер.
• Реализовать JPEG весьма не просто. Маловероятно, что вам удастся создать собственный кодировщик/декодер JPEG за несколько вечеров. Мы рекомендуем вам рассмотреть готовую библиотеку JPEG, а не писать свою.
• В ряде форматов данный метод сжатия применяться не может. Те же форматы, которые поддерживают JPEG, являются слишком новыми и, по-видимому, будут часто модифицироваться.