Открыть сервис

Компрессионная функция

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

Основные характеристики

Компрессионная функция обычно определяется как отображение из пространства входных данных (например, строк битов, последовательностей символов, сигналов) в пространство выходных данных меньшего размера. Ключевыми параметрами являются:

  • Коэффициент сжатия — отношение размера исходных данных к размеру сжатых данных. Выражается в разах или процентах.
  • Скорость сжатия — время, необходимое для обработки единицы данных.
  • Качество восстановления — для сжатия с потерями мера искажения между исходными и восстановленными данными (например, PSNR для изображений).
  • Вычислительная сложность — количество операций, требуемых для выполнения функции.

Классификация

Компрессионные функции делятся на два основных типа в зависимости от возможности точного восстановления исходных данных.

Сжатие без потерь

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

  • Кодирование Хаффмана — построение оптимального префиксного кода на основе частот символов.
  • Арифметическое кодирование — представление последовательности символов как числа в интервале [0, 1).
  • Словарные методыLZ77, LZ78, LZW (используются в форматах ZIP, GIF, PNG).
  • Алгоритм Барроуза — Уилера (BWT) — преобразование, группирующее одинаковые символы, применяется в bzip2.

Сжатие с потерями

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

  • Дискретное косинусное преобразование (DCT) — основа JPEG, MPEG, MP3.
  • Вейвлет-преобразование — используется в JPEG 2000, аудиокодеках.
  • Векторное квантование — разбиение пространства данных на кластеры и замена векторов на их центры.
  • Модели восприятия — например, психоакустическая модель в MP3, удаляющая звуки, не слышимые человеком.

Применение

Архивация данных

Компрессионные функции без потерь используются в программах-архиваторах (ZIP, RAR, 7z, Gzip) для уменьшения размера файлов. В операционных системах семейства Windows и Linux встроенные утилиты сжатия (например, NTFS-сжатие, Btrfs) применяют компрессионные функции на уровне файловой системы.

Мультимедиа

В цифровой фотографии, видео и аудио компрессионные функции с потерями являются стандартом. Форматы JPEG, MPEG-4, H.264, H.265, AV1, MP3, AAC, Opus используют сложные компрессионные функции, адаптированные под особенности восприятия человека. Например, в H.264 применяется внутрикадровое и межкадровое сжатие, включающее DCT, квантование и энтропийное кодирование.

Сетевая передача

Компрессионные функции используются в протоколах передачи данных (например, HTTP-сжатие с помощью Gzip или Brotli), в системах видеоконференцсвязи (Zoom, Skype) и в потоковом вещании (YouTube, Twitch). В спутниковой связи и мобильных сетях (4G, 5G) применяются специализированные компрессионные функции для уменьшения объёма трафика.

Криптография

В криптографии компрессионные функции являются ключевым элементом хеш-функций. Например, в семействе SHA-2 (SHA-256, SHA-512) используется компрессионная функция, которая преобразует блок данных фиксированного размера в выходное значение меньшего размера. Такие функции должны быть однонаправленными и устойчивыми к коллизиям. В алгоритмах шифрования с открытым ключом (например, RSA) компрессионные функции применяются для уменьшения размера подписей.

Научные вычисления

В биоинформатике компрессионные функции используются для сжатия геномных данных (форматы CRAM, FASTQ). В метеорологии и геофизике — для хранения и передачи больших объёмов данных с датчиков и спутников.

Интересные факты

  • Первая широко известная компрессионная функция для текстов — код Морзе (1838 год), где часто встречающимся буквам (например, «E») присваивались короткие коды.
  • Алгоритм LZW, разработанный в 1984 году, был запатентован компанией Unisys, что привело к юридическим спорам и ограничениям на использование в свободном программном обеспечении. Впоследствии патент истёк.
  • В формате FLAC (Free Lossless Audio Codec) используется компрессионная функция на основе линейного предсказания, что позволяет сжимать аудио без потерь в 2–3 раза.
  • Современные видеокодеки, такие как AV1 и H.266/VVC, используют компрессионные функции с машинным обучением для оптимизации выбора параметров квантования и предсказания.
  • В криптовалютах (например, Bitcoin) хеш-функция SHA-256, основанная на компрессионной функции, используется для майнинга и обеспечения целостности блокчейна.

Критика и ограничения

Компрессионные функции с потерями могут приводить к необратимой потере информации, что неприемлемо в некоторых областях (например, в медицине при хранении рентгеновских снимков или в юридических документах). Алгоритмы сжатия без потерь, хотя и сохраняют данные, имеют ограниченный коэффициент сжатия (обычно 2–4 раза для текстов и 1.5–2 раза для изображений). Кроме того, использование запатентованных компрессионных функций (например, в формате GIF до 2004 года) создавало проблемы для свободного распространения программного обеспечения. В последние годы наблюдается тенденция к разработке открытых и свободных от патентов компрессионных функций (Brotli, AV1, Opus).

Источники

  • Сэломон Д. «Сжатие данных, изображений и звука». — М.: Техносфера, 2004.
  • Ватолин Д., Ратушняк А., Смирнов М., Юкин В. «Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео». — М.: ДИАЛОГ-МИФИ, 2002.
  • Sayood K. «Introduction to Data Compression». — 5th ed. — Morgan Kaufmann, 2017.
  • RFC 1951 — DEFLATE Compressed Data Format Specification.
  • ISO/IEC 10918-1:1994 — JPEG Standard.
  • ITU-T H.264 — Advanced Video Coding for Generic Audiovisual Services.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →