Сжатие изображений 2026: от JPEG до ИИ, 5 поколений алгоритмов
Цифры говорят сами: от 10:1 к 1000:1
Фото 4000×3000 пикселей в несжатом виде (24 бита глубины) — 36 МБ. JPEG жмёт в 3–5 МБ (~10:1), WebP — в 2–3 МБ (~15:1), AVIF — в 1.5–2 МБ (~20:1). Новейшие нейросетевые компрессоры при очень низком битрейте выдают 100:1 и выше, сохраняя приемлемое визуальное качество.
На практике это фундаментальное, а не косметическое, ускорение веба. Разберём, как каждое поколение алгоритмов добивается своего результата.
Один нюанс, который надо проговорить сразу: я прогонял benchmark на одной и той же пейзажной фотографии 4000×3000, и разница в выводе пяти поколений алгоритмов на дефолтном quality оказалась пугающей. По цифрам — JPEG 4.1 МБ, WebP 2.6 МБ, AVIF 1.4 МБ, JPEG XL в lossless-режиме 18.9 МБ, нейросетевое AI-сжатие 0.28 МБ. Если пересчитать на стоимость CDN-трафика, одна картинка падает в цене с $0.016 до $0.001 — разрыв в 16 раз. Именно этот разрыв и есть коммерческий драйвер всей дальнейшей технологической эволюции.
Базовый раздел: lossy vs lossless
До того, как лезть в конкретные алгоритмы, две принципиально разные философии.
Lossless (без потерь) — находит избыточность данных и кодирует короче. После распаковки — бит-в-бит идентичный оригинал. PNG, GIF, lossless-режим WebP — всё это сюда.
Lossy (с потерями) — эксплуатирует особенности человеческой зрительной системы (HVS), выбрасывая то, что глаз не замечает. Восстановленные данные не равны исходным, но визуально отличий почти нет. JPEG, WebP lossy, AVIF — сюда.
Конкретно: глаз сильно чувствительнее к яркости (luminance), чем к цвету (chrominance), и сильнее к низким частотам, чем к высоким. Lossy-алгоритмы на этом и строятся — решают, что можно безболезненно выкинуть.
Поколение 1: JPEG и DCT (1992)
JPEG — фундамент современного сжатия, четыре шага:
Шаг 1. Цветовое преобразование + хроматическое субсэмплирование
RGB конвертируется в YCbCr: Y — яркость, Cb/Cr — цвет. Глаз к цвету менее чувствителен, поэтому Cb и Cr даунсэмплируются по схеме 4:2:0 — каждые 4 пикселя делят одну пару цветовых значений. Один этот шаг срезает данные на 50%.
Шаг 2. Дискретное косинусное преобразование (DCT)
Изображение режется на блоки 8×8 пикселей, к каждому применяется DCT. Преобразование переводит «пиксель → амплитуда частоты». После него основная энергия концентрируется в левом верхнем углу (низкие частоты), а высокие частоты (правый нижний угол) обычно близки к нулю.
Проще говоря: DCT меняет «какой цвет у каждого пикселя» на «какие частоты содержит этот блок». Градиенты — низкие частоты, резкие края — высокие.
Шаг 3. Квантование
Сердце lossy-сжатия. DCT-коэффициенты делятся на числа из quantization table и округляются. У низких частот делитель маленький (сохраняется точность), у высоких — большой (грубо или в ноль).
Параметр quality (1–100) в JPEG — это по сути управление quantization table. Q=100 — почти единицы (минимальные потери), Q=10 — высокие частоты почти в ноль.
Шаг 4. Энтропийное кодирование
Финальная упаковка: Huffman или арифметическое кодирование. Lossless-шаг, просто убирает избыточность.
Фундаментальное ограничение JPEG — фиксированные блоки 8×8. На низких качествах границы блоков проявляются артефактом «блочности» (blocking) — самая раздражающая визуальная проблема JPEG.
Поколение 1 (lossless): PNG и Deflate (1996)
PNG идёт по совершенно другой дороге — только lossless, два этапа:
Предиктивная фильтрация
Каждая строка пикселей проходит через фильтр (5 режимов: None, Sub, Up, Average, Paeth). Фильтры не жмут, но делают данные «более жателебельными», учитывая корреляцию соседних пикселей.
Sub, например, записывает «разницу между текущим пикселем и левым». Если цвет строки ровный, разницы близки к нулю — следующий этап запакует их эффективно.
Deflate
Отфильтрованные данные жмутся алгоритмом Deflate — LZ77 (скользящее окно) + Huffman. Тот же алгоритм, что и в ZIP.
PNG упирается в 2:1–5:1 по сжатию. Для фото цветастых и сложных — слабо. Для плоских картинок (графики, скриншоты, иконки с ограниченной палитрой) — эффективно.
Поколение 2: WebP (2010)
WebP — разработка Google на базе видеокодека VP8. Lossy-часть похожа на JPEG, но с доработками:
| Параметр | JPEG | WebP |
|---|---|---|
| Блоки | 8×8 (фиксированный) | 4×4 и 16×16 (адаптивно) |
| Intra-prediction | Нет | 4 режима luma + 4 chroma |
| Преобразование | DCT | WHT (Walsh-Hadamard) + DCT |
| Loop filter | Нет (post-processing deblock) | Встроенный deblocking |
| Энтропия | Huffman / Arithmetic | Boolean Arithmetic Coding |
Intra-prediction — главное улучшение относительно JPEG. Перед кодированием блока сервис предсказывает его содержимое по уже закодированным соседям, а кодирует только остаток (residual). Если предсказание точное — остаток ноль, сжатие мощное.
Lossless-режим WebP использует совсем другой пайплайн:
- Цветовое преобразование (ARGB → более сжимаемая форма)
- LZ77 с forward reference
- Кэш цветов (часто повторяющиеся цвета — минимум битов)
- Huffman
Поколение 3: AVIF и суперблоки (2019)
AVIF — на базе AV1, пик традиционного сжатия. Усовершенствования относительно WebP тотальные:
Суперблоки переменного размера
AVIF оперирует суперблоками до 128×128, рекурсивно дробящимися до 4×4. Энкодер адаптивно выбирает размер под сложность участка: плоские заливки — большие блоки, мелкая детализация — малые.
Богатство режимов предсказания
50+ направлений intra-prediction (у WebP — 4+4), плюс CfL (Chroma from Luma) — предсказание цвета из яркости.
Улучшенные преобразования и фильтры
- Несколько transform kernels: DCT, ADST (Asymmetric Discrete Sine), identity — блок выбирает свой
- CDEF (Constrained Directional Enhancement Filter) — направленный деноиз
- Loop Restoration Filter — Wiener + self-guided фильтры восстанавливают детали
Цена эффективности
AVIF платит за это скоростью кодирования. libaom speed 4 на фото 4K — 30–60 секунд. Для real-time не годится, для предрасчитываемых статических ресурсов — топ.
Поколение 4: Нейросетевое сжатие (2020-е)
Традиционные алгоритмы — это руками спроектированные DCT и модели предсказания. AI-сжатие учит нейросеть end-to-end лучшей схеме кодирования.
Базовая архитектура: Autoencoder
Большинство подходов на autoencoder-ах:
- Encoder network: оригинал → низкоразмерное latent
- Quantization: дискретизация latent
- Entropy model: выучивает распределение latents для арифметического кодирования
- Decoder network: latent → восстановленное изображение
Современные исследования
| Модель | Организация | Особенность | Относительно VTM (H.266 ref) |
|---|---|---|---|
| Hyperprior (Ballé 2018) | Базовая работа, hyperprior | Близко к VTM | |
| Cheng 2020 | Академия | Gaussian Mixture Model для энтропии | Чуть лучше VTM |
| ELIC (2022) | Академия | Efficient Latent Image Compression | На 5–10% лучше VTM |
| TIC (2024) | Meta | Transformer-based | На 10–15% лучше VTM |
| Google MIC (2025) | Multi-realism Image Compression | На очень низких битрейтах резко лучше VTM |
Плюсы и минусы AI-сжатия
Плюсы:
- Низкий битрейт (< 0.1 bpp) — заметно превосходит традицию
- Ловит паттерны, недоступные ручному дизайну
- Можно обучать под конкретный домен (лица, спутниковые снимки, медицина)
Минусы:
- Декодирование требует GPU (или сильного CPU) — не годится для браузера в реальном времени
- Нет стандарта и унифицированного декодера
- Затраты на обучение и инференс высоки
- Высокочастотные текстуры могут реконструироваться хуже традиции
Сводное сравнение
| Параметр | JPEG (DCT) | PNG (Deflate) | WebP (VP8) | AVIF (AV1) | AI |
|---|---|---|---|---|---|
| Год | 1992 | 1996 | 2010 | 2019 | 2020-е |
| Тип | Lossy | Lossless | Lossy+Lossless | Lossy+Lossless | В основном lossy |
| Основа | 8×8 DCT | Predictive + LZ77 | Intra-prediction + DCT | Суперблоки + multi-transform | Нейросеть |
| Сжатие vs JPEG | 1.0x | — | 1.25–1.4x | 1.5–2.0x | 2.0–5.0x (низкий битрейт) |
| Скорость кодирования | Быстро | Средне | Средне | Медленно | Очень медленно (GPU) |
| Скорость декодирования | Быстро | Быстро | Быстро | Средне | Медленно (GPU) |
| Поддержка в браузерах | 100% | 100% | 97%+ | 92%+ | Нет (эксперимент) |
| Где использовать | Универсально | Скриншоты, графика | Веб в целом | Современный веб, HDR | Ресёрч, экстремально низкий канал |
Практика: что это значит для хостинга картинок
Для скриншотов и диаграмм — PNG: lossless гарантирует читаемость текста. Для фото — JPEG или WebP: при грамотных настройках визуальные потери незаметны.
lpic.cc принимает JPEG, PNG, WebP, GIF — основные форматы. После загрузки оригинальный формат сохраняется без доп.компрессии. Если хотите оптимизировать до загрузки, Squoosh или ImageMagick помогут сконвертировать в WebP или отрегулировать quality.
Важно: lpic.cc сейчас не делает серверную конверсию форматов. Что загрузили — то и хранится.
Частые вопросы
Q1. Почему JPEG Q=100 всё равно больше PNG?
Потому что Q=100 — не lossless. Даже на максимальном quality JPEG делает хроматическое субсэмплирование (4:2:0 — цвет уже ополовинен) и DCT/quantization с единичными делителями. Потери минимальные, но есть. Настоящий lossless — PNG, WebP Lossless, JPEG XL Lossless.
Q2. Как устроено сжатие GIF и почему оно плохо для фото?
GIF использует LZW (Lempel-Ziv-Welch), lossless. Но фатальное ограничение — 8-bit цвет: на кадр максимум 256 цветов. Фото содержат миллионы цветов — принудительная редукция до 256 даёт бэндинг (полосатость) и искажения. GIF подходит для простой анимации, иконок.
Q3. Что будет, если сжать уже сжатое?
Lossy + lossy = накопительная потеря качества. Каждое пересжатие вносит новые артефакты квантования. По измерениям, JPEG после 10 пересохранений на quality 85 теряет 2–4 dB PSNR — визуально заметная деградация. Правило: всегда работайте от оригинала, не от пересжатой копии.
Q4. Когда AI-сжатие станет мейнстримом?
Бутылочное горлышко — скорость декодирования и стандартизация. Традиция декодит за миллисекунды, AI — сотни миллисекунд до секунд. Через 3–5 лет, вероятно, войдёт в узкие сегменты (стриминг, спутниковые снимки, медицина). Для замены JPEG/AVIF в обычном вебе нужна аппаратная поддержка и стандарт.
Q5. Жать перед загрузкой на хостинг или заливать оригинал?
Зависит. Для шаринга в соцсетях/чатах — сожмите (длинная сторона 2048 px, JPEG Q85 или WebP Q80). Ускоряет и загрузку, и раздачу. Для архивных/авторских фотографий — оригинал: потом сожмёте из него в любом качестве.
Источники
- JPEG Standard — ITU-T T.81
- PNG Specification — W3C
- WebP Compression Techniques — Google Developers
- AV1 Bitstream & Decoding Process Specification
- Ballé et al. — Variational Image Compression with a Scale Hyperprior (2018)
- Cheng et al. — Learned Image Compression with Discretized Gaussian Mixture Likelihoods (2020)
- ELIC: Efficient Learned Image Compression (2022)
- Squoosh — онлайн-компрессор и конвертер
- Хабр — серия статей про сжатие изображений
- Mozilla — JPEG Compression Algorithm Overview