Вернуться в блог
Технологии

Сжатие изображений 2026: от JPEG до ИИ, 5 поколений алгоритмов

Опубликовано9 min read
Поделиться

Цифры говорят сами: от 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 использует совсем другой пайплайн:

  1. Цветовое преобразование (ARGB → более сжимаемая форма)
  2. LZ77 с forward reference
  3. Кэш цветов (часто повторяющиеся цвета — минимум битов)
  4. 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-ах:

  1. Encoder network: оригинал → низкоразмерное latent
  2. Quantization: дискретизация latent
  3. Entropy model: выучивает распределение latents для арифметического кодирования
  4. Decoder network: latent → восстановленное изображение

Современные исследования

Модель Организация Особенность Относительно VTM (H.266 ref)
Hyperprior (Ballé 2018) Google Базовая работа, 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) Google 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#DCT#WebP#AVIF#нейросетевое сжатие
B

Автор

Brian Lee

Технический аналитик

Фокусируется на форматах изображений, технологиях сжатия и интеграции API — на основе данных.