Перейти к основному содержимому

Пространственная и временная избыточность

Одной из ключевых причин, по которой медиаданные — такие как изображения и видео — можно эффективно сжимать, является наличие избыточности. Под избыточностью понимают повторяющуюся или предсказуемую информацию, которая не добавляет новой смысловой нагрузки. Современные кодеки активно используют два вида избыточности: пространственную и временную. Понимание этих понятий помогает интуитивно осознать, как работает сжатие без необходимости углубляться в сложные математические преобразования.


Что такое избыточность?

В контексте цифрового изображения или видео избыточность — это дублирование данных, которое можно устранить без потери важной информации. Если каждый пиксель в кадре или каждый кадр в видео хранился бы полностью независимо, объём данных был бы чрезмерно большим. Но на практике большинство соседних пикселей и кадров очень похожи друг на друга. Именно на этом и строится идея сжатия: вместо хранения полных данных — хранить только различия.


Пространственная избыточность

Пространственная избыточность — это схожесть значений пикселей в пределах одного кадра. Другими словами, соседние пиксели в изображении часто имеют близкие цвет и яркость.

Почему это происходит?

В реальном мире поверхности редко меняются резко. Например:

  • Стена в комнате — это большая область одного цвета.
  • Небо — плавный градиент от синего к белому.
  • Даже на текстурированных поверхностях, таких как асфальт или трава, изменения цвета носят локальный характер.

Визуальный пример

Представьте, что у вас есть изображение сплошного синего неба размером 1920×1080 пикселей. Если хранить каждый пиксель отдельно, потребуется:

1920 × 1080 × 24 бит = 62 208 000 бит ≈ 7.78 МБ

Но если знать, что весь кадр — однородный синий цвет, достаточно записать одно значение цвета и указать, что оно применяется ко всему изображению. Это и есть использование пространственной избыточности.

Как кодеки это используют?

Видеокодеки (например, H.264, H.265, AV1) разбивают изображение на блоки (например, 16×16 или 8×8 пикселей) и анализируют каждый блок. В однородных областях:

  • Можно хранить только среднее значение яркости и цвета.
  • Или использовать предсказание: предположить, что соседние пиксели похожи, и закодировать только отклонения.

Такой подход позволяет значительно снизить объём данных без заметной потери качества.


Временная избыточность

Временная избыточность — это схожесть последовательных кадров в видео. Большинство видео — это плавная смена кадров, где большая часть сцены остаётся неизменной.

Почему это важно?

Рассмотрим типичную сцену: человек говорит перед камерой. В течение нескольких секунд:

  • Фон не меняется.
  • Лицо остаётся на месте.
  • Изменяются только губы, глаза, возможно, руки.

При этом видеопоток снимается, например, с частотой 30 кадров в секунду. Значит, 30 раз в секунду передаётся почти идентичная картинка. Хранить каждый кадр полностью — крайне неэффективно.

Пример из практики

Допустим, у нас есть видео с человеком, сидящим за столом. Каждый кадр почти идентичен предыдущему. Вместо того чтобы отправлять полный кадр 30 раз в секунду, кодек может:

  1. Передать полный кадр (I-кадр) один раз.
  2. Для следующих кадров передавать только изменения — например, движение губ или руки.

Это и есть использование временной избыточности.

Механизм компенсации движения

Кодеки используют специальную технику — компенсацию движения (motion compensation). Она работает так:

  • Анализируется, какие блоки изображения сдвинулись между кадрами.
  • Вместо передачи нового блока отправляется вектор движения — указание, на сколько пикселей и в каком направлении сместился блок.
  • Если блок не изменился — он вообще не передаётся.

Например, если человек поворачивает голову, кодек определит, что весь блок лица сдвинулся на 5 пикселей вправо и 2 вниз, и передаст только этот вектор, а не весь блок заново.


Сравнение пространственной и временной избыточности

ХарактеристикаПространственная избыточностьВременная избыточность
Уровень анализаВ пределах одного кадраМежду кадрами
ПримерОднородный фон, градиентыНеподвижный фон, плавные движения
Как используется в кодекахПредсказание внутри кадра (Intra)Предсказание между кадрами (Inter)
Тип кадраI-кадрыP- и B-кадры
Эффективность сжатияВысокая в статичных сценахВысокая в динамичных, но с малыми изменениями

⚠️ Важно: временная избыточность даёт наибольший выигрыш в сжатии, но она чувствительна к потерям пакетов. Если один из опорных кадров потерян, последующие кадры, зависящие от него, могут не восстановиться.


Интуитивное понимание: как это выглядит «внутри» видео

Представьте, что вы снимаете видео на телефон. На экране — вы и фон: книжная полка, окно, шторы. Вы говорите, но почти не двигаетесь.

Кодек «видит»:

  • Фон — почти не меняется → можно использовать временные ссылки.
  • Лицо — меняется локально → используются векторы движения для губ и глаз.
  • Шум, мелкие изменения — игнорируются или кодируются с низкой точностью.

В итоге большая часть данных не передаётся вообще. Вместо 30 полных кадров в секунду передаётся:

  • 1 полный кадр (I-кадр),
  • 2–4 предсказанных кадра с векторами (P-кадры),
  • и несколько кадров, интерполированных между ними (B-кадры).

Итог

Пространственная и временная избыточность — это два столпа эффективного сжатия видео. Они позволяют кодекам:

  • Уменьшать объём данных в десятки и сотни раз,
  • Сохранять приемлемое качество,
  • Адаптироваться к типу контента (статичные сцены vs динамичные действия).

Понимание этих принципов помогает не только разобраться в работе кодеков, но и правильно настраивать параметры сжатия — например, выбирать длину GOP (группы кадров) или баланс между качеством и задержкой. Об этих параметрах — в следующих разделах.