Как работает сжатие JPEG
Простое объяснение этапов эффективного сжатия изображений
24. January 2025 автор Bianca Palmer
Вы когда-нибудь задумывались, как телефон или камера делают снимок, и уже через мгновение он сохраняется как JPEG: файл меньше, загружается быстрее и при этом выглядит четко? За кулисами работает мощный процесс, сжимающий большие файлы изображений до небольшой части их исходного размера при сохранении высокого качества. Но как это на самом деле работает? В этом руководстве мы подробно рассматриваем Сжатие JPEGи по шагам разбираем каждый этап простыми словами, чтобы вы понимали, как работает этот процесс сжатия изображений.
Что такое JPEG?
JPEG (аббревиатура от Joint Photographic Experts Group) один из самых распространенных форматов изображений. Это основной выбор для хранения цифровых фотографий. Главное преимущество JPEG в его способности сжимать файлы изображений, делая их намного меньше без заметной потери качества.
Например, высококачественное несжатое изображение может занимать 46 МБ. После сжатия в JPEG тот же файл может уменьшиться до всего 4,1 МБ. Но как это получается при сохранении четкости изображения?
Ответ кроется в compression process, процессе сжатия, который использует особенности зрения человека и удаляет лишние данные.
Что делает JPEG?
Проще говоря, JPEG анализирует изображение и удаляет элементы, которые наш глаз плохо различает. Когда вы сжимаете изображение в JPEG, вы можете управлять степенью сжатия. Регулируя параметр "качество", вы выбираете, сколько места хотите сэкономить. По мере снижения качества со 100% до 0% уменьшается и размер файла файла.
По мере увеличения сжатия разрешение картинки остается тем же, но могут появиться дефекты или "артефакты" они выглядят как маленькие квадраты и часто почти незаметны, пока вы не приблизите изображение. Цель JPEG сделать файл как можно меньше, не ухудшая визуальное восприятие изображения человеком.
Этапы сжатия JPEG
Сжатие JPEG это не один процесс, а серия шагов, разработанных для уменьшения размера изображения. Вот пять ключевых этапов, которые делают JPEG таким эффективным.
Шаг 1: Преобразование цветового пространства
Изображения состоят из пикселей, и у каждого пикселя есть красная, зеленая и синяя (RGB) составляющие, которые вместе образуют цвет. JPEG начинает с преобразования этих значений RGB в другое цветовое пространство:
- Яркость (Luminance): Это яркость пикселя, важная для общего контраста изображения.
- Цветность (Chrominance): Это цветовая информация, включая оттенок и насыщенность.
Это преобразование учитывает, что человеческий глаз чувствительнее к яркости (luminance), чем к цвету (chrominance). Отделив яркость от цвета, JPEG позволяет выборочно уменьшать данные на следующих этапах, сохраняя при этом наиболее важные визуальные детали.
На этом этапе данные не теряются, но изображение подготавливается к эффективному сжатию.
Шаг 2: Уменьшение цветности / Chroma Subsampling
Chroma Subsampling является это метод, который применяется после преобразования цветового пространства. Помните, мы говорили, что наш глаз хуже различает цвета (chrominance), чем яркость (luminance)?
JPEG использует это, уменьшая объем цветовой информации. Он уменьшает синие и красные компоненты цветности, усредняя их по блокам из четырех пикселей. Это делает цветовые данные значительно меньше, при этом яркость (luminance) остается без изменений. Уже на этом этапе изображение заметно сжато.
Шаг 3: Дискретное косинусное преобразование (DCT)
Дискретное косинусное преобразование (DCT) это математический метод, который преобразует данные изображения из пространственной области (где изображение представлено как сетка пикселей) в частотную область. Этот процесс помогает определить, какие части изображения содержат наиболее важную визуальную информацию, а какие можно удаляются.
DCT разбивает изображение на блоки 8x8 и преобразует каждый блок в набор значений частот. Высокие частоты, которые отражают резкие изменения значений пикселей, например границы или шум, обычно менее заметны для человеческого глаза и могут быть упрощены или удалены.
Шаг 4: Квантование
После применения DCT полученные частотные данные проходят квантование. На этом этапе диапазон частотных значений уменьшается путем деления их на набор констант, называемый таблицей квантования. По сути, процесс округляет частотные значения, упрощая их.
Значения высоких частот подвергаются более сильному квантованию, то есть теряют больше точности, поскольку они менее важны для общего качества изображения. Этот четвертый шаг уменьшает объем данных, необходимых для представления изображения, что делает файл меньше. Однако слишком сильное квантование может привести к заметным артефактам, таким как «квадратики» или размытость, особенно при высоких уровнях сжатия.
Шаг 5: Кодирование с помощью RLE и Хаффмана
После квантования данные все еще недостаточно компактны для эффективного хранения. Здесь используются Run Length Encoding (RLE) и кодирование Хаффмана .
Сначала RLE используется для упрощения длинных последовательностей повторяющихся данных (например, нулей) путем сохранения количества повторений вместо каждого отдельного значения. Затем применяется кодирование Хаффмана, техника, которая заменяет часто встречающиеся значения более короткими битовыми кодами, делая файл еще меньше.
These two методы кодирования работают вместе, чтобы значительно уменьшить размер файла, не жертвуя значительной частью качества изображения.
Дополнительная информация
Несмотря на высокую эффективность JPEG, есть несколько важных моментов:
- Уровень сжатия: JPEG позволяет пользователям выбирать уровень сжатия, но более сильное сжатие уменьшает размер файла и может приводить к заметным артефактам, таким как размытые границы или пикселизация. Это происходит, когда значения в таблице квантования слишком высокие, что приводит к добавлению большего числа нулей: файл становится меньше, но за счет качества изображения.
- Потеря высокочастотных данных: квантование снижает точность высокочастотных данных (деталей, таких как резкие границы), поэтому JPEG хорошо подходит для плавных текстур, но может хуже справляться с четкими линиями и векторной графикой.
- Не лучший вариант для векторной графики: JPEG не является оптимальным выбором для сжатия векторной графики, так как может вызывать заметные артефакты на границах фигур или линий.
Несмотря на эти ограничения, JPEG остается самым популярным форматом изображений, отчасти потому, что он старый, хорошо изученный и свободный от роялти. Однако более новые форматы, такие как WebP или HEIF обеспечивают еще более высокую степень сжатия без ухудшения качества, что делает их привлекательной альтернативой в определенных случаях.
Итоги
Алгоритм сжатия JPEG является заметным достижением в управлении графическими данными. Разбивая изображения на небольшие блоки, применяя математические преобразования и используя эффективные методы кодирования, такие как Run Length и кодирование Хаффмана, он позволяет хранить изображения высокого качества в гораздо меньших по размеру файлах.
Хотя у JPEG есть некоторые ограничения, особенно при высоких уровнях сжатия или работе с векторной графикой, его широкое распространение и способность обеспечивать хороший результат для фотографических изображений делают его устойчивым стандартом.