С непрерывным развитием цифровых технологий очень быстро появилась необходимость часто использовать алгоритмы, позволяющие сжимать большие массивы данные, то есть перекодировать их для уменьшения объема. Эта процедура применяется для более рационального использования устройств хранения и передачи данных.
Методы сжатия информации можно разделить на две принципиально разные группы: сжатие информации без потерь и сжатие с потерями. Под потерями подразумевается необратимая утрата части данных, которая практически не заметна при качественном архивировании или не оказывает существенного влияния на восприятие информации. Сжатие без потерь подразумевает под собой информационную целостность объекта, то есть файл после упаковки в архив и распаковки не изменится ни на один бит.
Рассмотрим эти методы по отдельности, не вникая глубоко в математические алгоритмы.
При архивировании файлов с программами, текстами и другими важными данными, требующими полной неизменности, необходимы методы сжатия информации, которые позволят из файла-архива воссоздать абсолютно точную копию сжимаемого файла. Этот принцип сжатия получил очень широкое распространение в современной вычислительной технике. Существуют свои алгоритмы сжатия для каждого из типов цифровой информации, будь то текст, изображение или видео – разным будет лишь коэффициент сжатия (то есть отношение размера файла до упаковки в архив к размеру самого архива). Несложно понять, что чем больше файл и чем сложнее его структура, тем сложнее с ним работать и тем ниже коэффициент сжатия.
В принципе любой многоцелевой алгоритм сжатия данных без потерь может использоваться для любого типа данных, однако большинство из них эффективны для своего типа. Это значит, что, например, звуковые данные не получится хорошо сжать методом сжатия текста и наоборот.
Попробуем расписать отдельно типы данных, перечислить используемые для них алгоритмы сжатия и разобрать основные принципы их работы.
Сжатие текста и текстовых бинарных данных
Здесь нужно понимать, что не существует архиваторов, которые перед началом процесса проводят анализ, что перед ними – осмысленный текст или хаотичный набор символов. В этом случае используются универсальные методы сжатия, и поэтому под текстом понимается любая последовательность бинарных данных.
Пожалуй, все пользователи компьютера знают о популярных архиваторах ZIP, RAR, ARJ, ACE, JAR и других – это как раз и есть программы, использующие универсальные алгоритмы. Универсальных архиваторов достаточно много, все они имеют схожую функциональность (например, во многих реализована возможность создания непрерывных, многотомных и самораспаковывающихся архивов, часто предусмотрена дополнительная информация для восстановления поврежденных архивов), различается лишь степень сжатия.
Самый распространенный из перечисленных стандартов – ZIP. Этот алгоритм уже давно стал своего рода стандартом де-факто в Интернете. Причины его повсеместного распространения в том, что он, во-первых, бесплатный, а во-вторых, обладает высокой скоростью работы и удобством использования. Но, несмотря на эти плюсы, у ZIP-архиваторов есть один большой минус – низкая степень сжатия по сравнению с другими программами. В этом случае вперед вырываются RAR, ARJ и ACE. Кстати, немногие знают, что разработчики архиватора RAR – наши с вами соотечественники Евгений и Александр Рошал.
Сжатие изображений
Сжатие графических файлов без потерь – более сложная задача, нежели сжатие тестовых массивов, так как размеры исходных данных больше, а диапазон возможных значений для сжатия зачастую шире, чем у текста.
Однако и здесь есть свои установленные стандарты. Самые распространенные из них: ABO, GIF (без потерь, но для очень небольшого количества цветов), JBIG2, JPEG-LS (стандарт сжатия без потерь/почти без потерь), JPEG 2000 (включает сжатие без потерь), PGF – Progressive Graphics File (сжатие с/без потерь), PNG – Portable Network Graphics, WMPhoto – (включая метод сжатия без потерь).
В любом случае на выходе получаются достаточно большие файлы, поэтому эти алгоритмы используются только для профессиональной работы с изображениями в фотостудиях и на телевидении.
Сжатие звуковых файлов
В ряде случаев возникает необходимость сжать звуковые данные так, чтобы их было удобнее перенести на том или ином носителе или передать через Интернет, но при этом качество их сохранилось бы таким же. С этой целью используются алгоритмы (кодеки) сжатия без потерь или lossless-кодеки, обеспечивающие уменьшение объема данных на 20-35 процентов.
Аудиокодеков достаточно много, однако их используют только профессионалы в студиях звукозаписи и настоящие меломаны-ценители.
Самым известным кодеком такого типа является FLAC (Free Lossless Audio Codec). Также распространены форматы WMA Lossless (Windows Media Lossless), Monkey’s Audio, Audio Lossless Coding (известен как MPEG-4 ALS) и другие.
Сжатие видео
Сжимать видео без потерь для бытового использования – за гранью здравого смысла, поэтому алгоритмы сжатия видео без потерь плотно используют только на телевизионных студиях, в остальном – очень редко. В качестве примеров таких кодеков можно назвать CamStudio Video Codec, MSU Lossless Video Codec, Qbit Lossless Codec и другие.
Сжатие данных с потерями
В этом случае распакованный файл отличается от оригинального, но, как правило, эти отличия практически незаметны для человеческого уха или глаза. Этот тип компрессии часто используется в Интернете, особенно в потоковой передаче данных и телефонии.
Преимущество методов сжатия с потерями над методами сжатия без потерь состоит в том, что первые существенно превосходят по степени сжатия, продолжая удовлетворять поставленным требованиям.
Большинство методов фокусируются на особенностях строения органов чувств человека. Психоакустическая модель определяет то, как сильно звук может быть сжат без ухудшения воспринимаемого качества звука. Заметные же недостатки, причиненные сжатием с потерями, известны как артефакты сжатия.
Перечислим основные типы файлов и обозначим методы, используемые для каждого из методов.
Тут все просто: поскольку сжимать текст с потерями не имеет никакого смысла, подобных программ-архиваторов просто не существует.
Абсолютное большинство файлов изображений кодируется с помощью стандарта сжатия JPEG. К недостаткам этого формата следует отнести то, что при сильных степенях сжатия дает знать о себе блочная структура данных, изображение «дробится на квадратики». Этот эффект особенно заметен на областях с низкой пространственной частотой (плавные переходы изображения, например, чистое небо). В областях с высокой пространственной частотой (например, контрастные границы изображения) возникают характерные «артефакты» – иррегулярная структура пикселей искаженного цвета и/или яркости. Кроме того, из изображения пропадают мелкие цветные детали.
Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за высокой степени сжатия относительно существующих во время его появления альтернатив.
Сейчас, я думаю, уже не найти человека, который не слышал бы уже привычной аббревиатуры MP3. Как можно догадаться, это третий стандарт кодирования MPEG. Пока что MP3 – это самый известный и популярный из распространенных форматов цифрового кодирования звуковой информации с потерями. Он широко используется в файлообменных сетях для передачи музыкальных произведений. Формат может проигрываться в любой современной операционной системе, на практически любом портативном аудиоплейере, а также поддерживается всеми современными моделями музыкальных центров и DVD-плейеров.
В этом формате звуки кодируются частотным образом (то есть без дискретных партий); есть поддержка стерео. Поскольку MP3 – это все-таки формат сжатия с потерями, часть звуковой информации, которую (согласно психоакустической модели) ухо человека воспринять не может или она воспринимается не всеми людьми, из записи удаляется безвозвратно. Степень сжатия можно варьировать, в том числе в пределах одного файла. Интервал возможных значений битрейта составляет 8 – 320 кбит/c. Для сравнения, поток данных с обычного компакт-диска формата Audio-CD равен 1411,2 кбит/c при частоте дискретизации 44100 Гц.
Считается, что неотличимое от оригинала звучание (при правильно выбранном и настроенном кодеке) обычно достижимо при битрейте от 160 кбит/c и выше – в зависимости от исходного аудиофайла, слушателя и его аудиосистемы. Некоторые аудиофилы предпочитают сжимать музыку с «максимальным качеством» – 320 кбит/c. На самом деле известны семплы (фрагменты аудиозаписи), не поддающиеся качественному сжатию с потерями: на всех возможных битрейтах не составляет особого труда отличить сжатое аудио от оригинала.
Если говорить о качестве сжатия, то для подавляющего большинства пользователей оно более чем достаточное. Однако существует большое количество стандартов сжатия аудио с куда более хорошим качеством. Эксперты оставляют лидерство по этим позициям алгоритмам AAC, Ogg Vorbis и WMA.
Для сжатия видеофайлов используются специальные видеокодеки. Как правило, в них включены алгоритмы сжатия видеопотока, одной или нескольких звуковых дорожек, а также дополнительных данных – субтитров, векторных эффектов и различных метаданных.
Кодек отслеживает похожие или одинаковые массивы точек, из которых состоит картинка одного кадра (например, синее небо на фоне), и вместо того чтобы отдельно заносить информацию о каждой точке, записывается лишь первая, ключевая точка, а также фраза с количеством повторений этой точки. То есть, например, вместо описи 1000 точек описывается всего 1точка+фраза повторения. Это самый примитивный уровень, но он применяется в самых качественных вариантах сжатия. Качеством здесь можно управлять, задавая степень различимости одинаковых элементов. Более продвинутые форматы сжатия кроме вышеупомянутой технологии учитывают еще и принципы движения массивов точек в изображении, сегментирование картинки на «квадратики» с различным качеством сжатия, применение последовательности кадров, кодированных по-разному и показанных в определенной последовательности. Самые новые кодеки учитывают психофизические свойства восприятия видео человеческим глазом/мозгом, что позволяет сильно уменьшать размер файла/потока без, как принято говорить, «видимой потери качества».
Самый распространенный видеокодек – это, несомненно, MPEG, который считается международным стандартом, используемым преимущественно для сжатия цифрового аудио и видео. Он появился в 1998 году и включает в себя группу стандартов сжатия аудио и видео и некоторые смежные технологии, одобренные ISO – Международной организацией по стандартизации/IEC Moving Picture Experts Group (MPEG). Стандарт MPEG-4 в основном используется для вещания (потоковое видео), записи дисков с фильмами CD, видеотелефонии (видеотелефон) и широковещания, в которых активно применяют сжатие цифровых видео и аудио.
Подводим итоги
Сжатие данных используется повсеместно. Алгоритмов и стандартов архивирования файлов существует очень много. Наряду с универсальными архиваторами создано большое количество специализированных кодеков.
Для кодирования документов и различных текстовых данных используются алгоритмы сжатия без потерь. Медиафайлы (изображения, звук, видео) чаще всего кодируются алгоритмами, подразумевающими потерю качества.
Андрей ПОЧУЕВ, инженер ОАО «Уралпромпроект»
Комментарии