Шрифт:
Интервал:
Закладка:
Применение этих методов позволяет достичь высокой степени сжатия и значительно уменьшить объем файлов, содержащих изображение. Грамотное использование алгоритма позволяет получить настолько высокое качество воспроизведения картинки, что различить сжатое изображение и оригинал практически невозможно.
При сохранении изображения в формате JPEG над ним производятся следующие операции:
1. Изображение преобразуется из исходной цветовой модели (например, RGB, где каждая точка описывается тремя цветовыми составляющими) в модель, содержащую яркостный компонент и два компонента, определяющих цвет точки. Это необходимо для раздельной обработки яркостной и цветовой составляющих изображения. Если изображение уже находится в подходящем цветовом режиме, преобразование не требуется. В дальнейшем все компоненты обрабатываются независимо друг от друга.
2. Цветовые компоненты усредняются между соседними пикселами, что позволяет уменьшить объем данных, требуемых для их передачи. Обычно усреднение производится так, что поле цветовых компонентов уменьшается в два раза по вертикали и по горизонтали. Например, для изображения 400 х 400 пикселов будут получены поля цветовых компонентов размером 200 х 200. Возможны и другие сочетания коэффициентов пропорциональности сторон, например 2:1, но они дают меньшую степень сжатия. Яркостный компонент на этом этапе не изменяется. Благодаря этому яркость изображения подвергается меньшим искажениям.
3. Применение дискретного преобразования Фурье. Изображение (точнее, каждый из его компонентов) разбивается на блоки 8x8 пикселов, к которым применяется дискретное преобразование Фурье. При этом информация о значении того или иного компонента представляется в виде соответствующих колебаний. По аналогии с радиотехническими сигналами можно выделить в преобразованных компонентах некоторое среднее значение (некоторый аналог постоянного тока), а также переменную составляющую (аналог переменного тока). Высокочастотные (быстрые) изменения параметров менее заметны, чем изменения низкочастотные (плавные). Поэтому верхние частоты могут быть отброшены.
4. Квантование значений параметров. Для отбрасывания ненужных компонентов значения, полученные в ходе преобразования Фурье, делятся на весовые коэффициенты и округляются. Для каждой точки внутри блока преобразования (8x8 пикселов) используется свой коэффициент, который выбирается из специальной таблицы. Для яркости и цветовых составляющих используются отдельные таблицы. Составлять такие таблицы довольно сложно, поэтому большинство кодировщиков JPEG используют стандартную таблицу ISO.
5. Именно на этом этапе производится регулировка качества изображения. Изменяя весовые коэффициенты, можно определить, какая часть информации будет отброшена. При этом качество изображения и размер файла изменяются обратно пропорционально друг другу.
6. Сжатие полученных значений без потерь. Для устранения повторов в полученных значениях параметров изображения данные дополнительно сжимаются по методу Хаффмана. Этот метод основывается на замене всех кодов, встречающихся в исходных данных, на новые, причем наиболее часто встречающиеся комбинации получают самые короткие обозначения. Этот метод позволяет достичь высокой степени сжатия без потери информации.
Для раскодирования данных необходимо выполнить эти операции в обратном порядке:
1. Данные разархивируются в соответствии с методом Хаффмана. В результате получаются отсчеты параметров изображения.
2. Из файла считывается таблица весовых коэффициентов. С ее помощью восстанавливаются результаты преобразования Фурье, выполненного при сжатии. В зависимости от степени сжатия, заданной кодировщиком, эти данные в той или иной степени соответствуют исходным.
3. Над отсчетами частотных составляющих производится обратное преобразование Фурье. Это позволяет восстановить значения компонентов изображения.
4. Полученные значения цветовых компонентов распределяются между соседними пикселами. Это необходимо из-за того, что при сжатии поле цветовых компонентов было уменьшено. Яркостный компонент сразу готов для последующей обработки.
5. Для удобства вывода на экран или выполнения обработки изображение преобразуется в одну из цветовых моделей (к примеру, в RGB для вывода на экран или в CMYK для печати).
Рассмотрев принцип работы алгоритма JPEG, мы можем подробнее остановиться на сферах его применения.
Основная проблема, ограничивающая применение этого формата, – снижение качества изображения при увеличении степени сжатия. Причем для каждого изображения приемлемая степень сжатия будет разной. Определить ее проще всего подбором.
Посмотрим, как сказывается сжатие на качестве изображения. Для этого сохраним фотографию в формате JPEG. На рис. 4.1, а приведен увеличенный фрагмент исходного изображения и этот жефрагмент после сжатия в различных режимах. Все изображения сохранялись при помощи Adobe Photoshop. Для них приведено значение показателя качества, используемого в этой программе. Размеры файлов (рис. 4.1): а – 299 Кбайт, 6 – 41 Кбайт, в – 25 Кбайт, г – 20 Кбайт. Из рис. 4.1. г видно, что при степени сжатия близкой к максимальной на изображении возникают шумы и искажения, в то время как при сжатии с максимальным (или близким к максимальному) показателем качества (см. рис. 4.1, б) изображение практически не отличается от оригинала.
Рис.4.1. Увеличенные фрагменты изображения после сохранения в формате JPEG с различными значениями показателя качества: а – оригинал (формат TIFF без сжатия), б – показатель качества 10, в – показатель качества 4, г – показатель качества 1
ПРИМЕЧАНИЕ. Искажения, вносимые в изображение кодировщиком JPEG, часто называют артефактами JPEG.
Результаты этого небольшого эксперимента позволяют сделать вывод о том, что формат JPEG хорошо подходит для хранения фотографий и других изображений, содержащих много различных оттенков с плавными переходами между ними. А вот изображения, содержащие четкие линии (например, чертежи), в нем сохранять не следует – линии могут смазаться (см. рис. 4.1, в и г). Также не следует сохранять в этом формате изображения, содержащие большие однотонные плоскости, – на них может возникнуть шум.
Тестирование также показало нам, что при помощи JPEG можно достичь значительной степени сжатия. Например, для изображения, показанного на рис. 4.1, г, она составила 14,95. Однако качество изображения при таких режимах сохранения может стать неприемлемым. Разумно выбирая режим сжатия, можно добиться высокого качества изображения и при этом значительно уменьшить размер файлов на диске или в памяти камеры. Так, для фото, представленного на рис. 4.1, б, степень сжатия равна 7,29, а качество вполне подходит для оформления веб-страниц, цифровой фотопечати и даже для некоторых видов полиграфических работ. Для изображения, показанного на рис. 4.1, в, степень сжатия еще больше, но качество еще вполне приемлемо для многих целей, включая печать в любительской фотолаборатории.
Итак, мы рассмотрели принципы работы и основные свойства алгоритма JPEG. Но это только основной (базовый) вариант стандарта. У этого формата есть несколько дополнений, каждое из которых позволяет существенно расширить его возможности.
ПРИМЕЧАНИЕ. В англоязычной литературе базовый вариант JPEG часто называется baseline (базовый) или standard (стандартный). Некоторые производители могут не поддерживать расширения формата.
Среди таких расширений можно назвать прогрессивное построение изображений, разбиение изображений на зоны с разными показателями качества, сохранение нескольких рисунков с разной разрешающей способностью в одном файле и т. д. Для веб-дизайна наиболее полезным является прогрессивное построение изображений. При использовании этой функции файл сохраняется за несколько проходов. После загрузки на компьютер пользователя данных об одном проходе изображение сразу выводится на экран, но с низким качеством. По мере загрузки оставшихся данных качество изображения повышается.
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Windows Vista - Сергей Вавилов - Программное обеспечение
- Основы программирования в Linux - Нейл Мэтью - Программное обеспечение