Сжатие с потерями и сжатие без потерь — что лучше из двух
Сжатие данных — это процедура, при которой размер данных в вашем видео уменьшается без потери информации внутри вашего видео/файла. Сжимая данные вашего файла, размер вашего файла уменьшится и будет иметь небольшой размер. Многие люди используют сжатие данных, когда хотят сэкономить место на своих устройствах или имеют проблемы с загрузкой файлов большого размера на платформу. Существует два типа сжатия данных: сжатие с потерями и сжатие без потерь. Если вы хотите узнать больше об этих двух типах сжатия, читайте этот пост дальше. Ниже вы узнаете сравнение между с потерями против без потерь сжатия.
- Часть 1: Что такое сжатие видео/файлов
- Часть 2: Что такое сжатие с потерями
- Часть 3: Что такое сжатие без потерь
- Часть 4: Разница между сжатием с потерями и сжатием без потерь
- Часть 5: Бонус: как сжимать видео
- Часть 6: Часто задаваемые вопросы о сжатии с потерями и без потерь
Часть 1. Что такое сжатие видео/файлов
Видео состоит из разных данных для воспроизведения. Видео содержит визуальные данные, аудиоданные, формат аудиокодирования, набор изображений, битрейт, разрешение видео и многое другое. И все это хранится в вашем видео, составляя его размер файла. Существует список недостатков, которые могут повлиять на вас, если у вас есть видеофайл с огромным размером файла. Некоторые недостатки видео большого размера заключаются в том, что оно займет много места на вашем устройстве, вам будет сложно загружать видео на другие платформы (некоторые платформы имеют ограничения на размер файла), а также невозможно отправить видео большого размера по электронной почте.
Есть ли способ сделать большое видео меньше? Ответ на этот вопрос – да. Вы можете использовать процесс сжатия видео, который поможет вам уменьшить размер вашего видео. Сжатие видео — это процесс уменьшения общего количества битов, разрешения или размера вашего видео, чтобы уменьшить его размер. Кроме того, ваш видеофайл иногда теряет некоторые данные при сжатии файла. Тем не менее, как упоминалось выше, существует два типа сжатия: с потерями и без потерь. И в следующей части мы будем постоянно обсуждать сжатие с потерями и без потерь.
Часть 2. Что такое сжатие с потерями?
Сжатие с потерями , данные в вашем видеофайле удаляются и не могут быть восстановлены в исходное состояние после использования этого типа сжатия. Короче говоря, данные в вашем видео удаляются безвозвратно; сжатие с потерями также называется необратимым сжатием. Преимущество сжатия с потерями заключается в том, что потерянные данные незаметны при воспроизведении видео. Но чем больше ваш файл или видео сжато, тем больше будет деградация, в результате чего у вас будет видео низкого качества. И, как следует из названия, сжатие с потерями предполагает потерю информации. Поэтому, когда вы используете этот тип сжатия, ожидайте, что вы потеряете некоторые данные или качество вашего видео. Но преимущество использования метода сжатия с потерями для сжатия ваших файлов заключается в том, что он обеспечивает высокие значения сжатия, что приводит к меньшим размерам файлов. Однако несколько исходных пикселей, звуковых волн или видеокадров вашего видео будут удалены навсегда.
Вы также должны помнить, что чем больше сжатие, тем меньше размер вашего файла; таким образом, он может потерять отличное качество. Кроме того, когда вы используете сжатие с потерями для изображений, вы можете наблюдать потерю качества при их печати. А с точки зрения сжатия аудиофайлов MP3 с использованием методов сжатия с потерями вы услышите огромную разницу в качестве звука.
Вот пример изображения JPEG, сжатого с использованием метода сжатия с потерями.
Сжатие с потерями не является идеальным типом сжатия для бизнес-данных или текста, который требует идеального восстановления данных.
Часть 3. Что такое сжатие без потерь
Сжатие без потерь — это метод сжатия данных, который можно использовать для уменьшения размера видео. В отличие от сжатия с потерями, после распаковки файла вы можете восстановить или перестроить файл в исходное состояние. Например, его качество останется прежним, если вы сожмете изображение с помощью метода сжатия без потерь. Сжатие без потерь также называется обратимым сжатием, потому что вы можете сжать файл без потери качества и вернуть его в исходный формат. Самым значительным преимуществом использования сжатия данных без потерь является то, что качество вашего файла не будет испорчено.
Но как работает сжатие без потерь? Сжатие без потерь удаляет ненужные метаданные, что приводит к сохранению качества вашего файла. Однако недостатком этого типа сжатия является то, что для поддержания качества после сжатия требуется файл большого размера. Многие люди используют этот метод сжатия, потому что он более удобен при передаче файлов. Если вы хотите отправить видео с огромным размером файла по электронной почте, вы можете использовать сжатие без потерь, чтобы разрешить отправку видео большого размера.
Вот пример сжатого изображения JPEG с использованием сжатия без потерь.
Часть 4. Разница между сжатием с потерями и сжатием без потерь
Если вам нужна более простая презентация методов сжатия без потерь и сжатия с потерями, мы представим таблицу ниже для более подробного описания двух типов сжатия. Прочитав эту часть, вы узнаете, что более выгодно при сжатии видео, изображений, текста и многого другого.
Без потерь | С потерями | |
---|---|---|
Сжимает больше размера | Он сжимает размер меньше | Он сжимает больший размер файла |
Применить на | Видео, фотографии, аудио и текст | Изображения, аудио и видео |
Преимущества | Он сохраняет качество вашего видео. | Это значительно уменьшает размер файла Поддерживается многими программами, платформами и плагинами. |
Недостатки бонуса без депозита | Он имеет меньшую емкость хранения данных | Это приводит к потере качества Вы не можете вернуть исходный размер файла |
Степень сжатия | Примерно от 1.5:1 до 3:1 | Он имеет высокую степень сжатия до 50% от исходного размера файла данных. |
Часть 5. Бонус: как сжимать видео
Вы столкнетесь с проблемами загрузки на некоторых платформах, если размер вашего видеофайла. Также практически невозможно отправить видео по электронной почте, если у вас есть видео большого размера. Кроме того, удобнее иметь видео с небольшим размером файла, потому что вы можете сэкономить место в памяти вашего устройства. Но где я могу сжать свои файлы? Вы можете использовать множество приложений для сжатия видео или изображений.
Если вы ищете лучший видеокомпрессор для сжатия ваших видео, мы предоставим его вам.
Tipard Video Converter Ultimate это первоклассное приложение для сжатия видео, доступное бесплатно. Вы можете сжать видео, изменив его размер, разрешение, формат и битрейт. Кроме того, он имеет простой в использовании интерфейс, что делает его удобным инструментом. Он также поддерживает все форматы видео, такие как AVI, MOV, MKV, MP4, VOB, FLV, SWF, WMV, M4V и более 500 форматов. Одним из преимуществ использования этого приложения для сжатия видео является то, что вы можете сжимать любые видео без потерь, а это означает, что при сжатии с помощью Tipard Video Converter Ultimate вам не нужно беспокоиться о качестве вашего видео.
Кроме того, он имеет процесс пакетного сжатия, при котором вы можете сжимать два или более файлов одновременно.
Еще одна замечательная особенность этого инструмента — множество расширенных функций редактирования, включая триммер видео, видео слияние, средство для удаления водяных знаков с видео, реверс видео и многое другое из панели инструментов. Его также можно загрузить на всех мультимедийных платформах, таких как Windows, Mac и Linux. Поэтому, если вы хотите использовать Tipard Video Converter Ultimate для уменьшения размера вашего видео, следуйте приведенным ниже инструкциям.
Шаги по сжатию видео с помощью Tipard Video Converter UItimate:
Шаг 1 Для начала скачайте Tipard Video Converter Ultimate нажав Скачать кнопку ниже для Windows или Mac. Установите приложение на свое устройство, а затем откройте его после установки.
Шаг 2 После открытия приложения перейдите в Ящик для инструментов панель и выберите Видео Компрессор функцию.
Шаг 3 А затем, нажмите плюс (+) кнопку подписи, чтобы загрузить видео, которое вы хотите сжать. Вы также можете перетащить ваше видео из файлов на рабочем столе для загрузки.
Шаг 4 В следующем интерфейсе вы увидите, что можете изменить размер, формат и разрешение видео. Но в этом уроке мы изменим размер вашего видео, чтобы сжать его. Нажмите на стрелка вверх / вниз или переместите ползунок до предпочтительного процента, который вы хотите уменьшить.
Шаг 5 После уменьшение размера вашего видео, Нажмите Сжимать кнопку в правом нижнем углу интерфейса, чтобы сохранить результат на вашем устройстве.
Часть 6. Часто задаваемые вопросы о сжатии с потерями и без потерь
С потерями лучше, чем без потерь?
Лучше использовать процесс сжатия без потерь, потому что вы можете уменьшить размер видео, сохранив при этом качество. Но если вы предпочитаете процесс сжатия, который обеспечивает лучшее сжатие, используйте сжатие с потерями.
JPG без потерь или с потерями?
Изображения JPG используют формат сжатия с потерями. Тем не менее, вы все равно можете использовать процесс сжатия без потерь, если хотите уменьшить размер фотографии.
MP4 без потерь или с потерями?
MP4 — это формат файла с потерями, что означает, что вы потеряете немного данных и качества при сохранении аудио или видео в формате MP4.
Заключение
Сравнение с потерями против без потерь необходим, когда вы сжимаете файлы. Важно, чтобы вам нужен тип сжатия, который вы используете. Итак, если вы готовы сжимать видео, скачайте Tipard Video Converter Ultimate сейчас.
Размещено от Кенни Кевин в Редактировать видео
Сентябрь 26, 2022 14: 40
Вам могут понравиться эти статьи
Нажмите здесь, чтобы присоединиться к обсуждению и поделиться своими комментариями
Главная>Ресурс>Редактировать видео> С потерями против без потерь
Copyright © 2023 Типард Студия. Все права защищены.
Сжатие без потерь
Сжатие без потерь — это класс алгоритмов сжатия данных , который позволяет идеально восстанавливать исходные данные из сжатых данных. Напротив, сжатие с потерями позволяет реконструировать только аппроксимацию исходных данных, хотя обычно со значительно улучшенными степенями сжатия (и, следовательно, уменьшенными размерами носителя).
Благодаря принципу работы с ячейками ни один алгоритм сжатия без потерь не может эффективно сжать все возможные данные. По этой причине существует множество различных алгоритмов, которые разработаны либо с учетом конкретного типа входных данных, либо с конкретными предположениями о том, какие виды избыточности могут содержать несжатые данные.
Сжатие данных без потерь используется во многих приложениях. Например, он используется в формате файла ZIP и в инструменте GNU gzip . Он также часто используется в качестве компонента в технологиях сжатия данных с потерями (например, совместная предварительная обработка стерео среднего и бокового каналов без потерь кодировщиками MP3 и другими аудиокодерами с потерями).
Сжатие без потерь используется в тех случаях, когда важно, чтобы исходные и распакованные данные были идентичными, или когда отклонения от исходных данных были бы нежелательными. Типичными примерами являются исполняемые программы, текстовые документы и исходный код. Некоторые форматы файлов изображений, такие как PNG или GIF , используют только сжатие без потерь, в то время как другие, такие как TIFF и MNG, могут использовать методы без потерь или с потерями. Аудиоформаты без потерь чаще всего используются для архивирования или производства, в то время как аудиофайлы с потерями меньшего размера обычно используются на портативных плеерах и в других случаях, когда пространство для хранения ограничено или точное воспроизведение звука не требуется.
- 1 Методы сжатия без потерь
- 1.1 Мультимедиа
- 1.2 Исторические правовые вопросы
- 2.1 Общее назначение
- 2.2 Аудио
- 2.3 Растровая графика
- 2.4 3D-графика
- 2.5 Видео
- 2.6 Криптография
- 2.7 Генетика и геномика
- 2.8 Исполняемые файлы
- 4.1 Математические основы
- 4.2 Области применения в реальной теории сжатия
- 4.3 Испытание на миллион случайных цифр
Методы сжатия без потерь [ править ]
Большинство программ сжатия без потерь выполняют две операции последовательно: на первом этапе создается статистическая модель для входных данных, а на втором этапе эта модель используется для сопоставления входных данных с последовательностями битов таким образом, чтобы «вероятные» (например, часто встречающиеся) данные даст более короткий результат, чем «невероятные» данные.
Основными алгоритмами кодирования, используемыми для создания битовых последовательностей, являются кодирование Хаффмана (также используемое алгоритмом дефлятирования ) и арифметическое кодирование . Арифметическое кодирование обеспечивает степень сжатия, близкую к наилучшей из возможных для конкретной статистической модели, которая задается информационной энтропией , тогда как сжатие Хаффмана проще и быстрее, но дает плохие результаты для моделей, которые имеют дело с вероятностями символа, близкими к 1.
Существует два основных способа построения статистических моделей: в статической модели данные анализируются и строится модель, затем эта модель сохраняется со сжатыми данными. Этот подход прост и модулен, но имеет недостаток, заключающийся в том, что сама модель может быть дорогостоящей в хранении, а также в том, что он вынуждает использовать единую модель для всех сжимаемых данных и поэтому плохо работает с файлами, содержащими разнородные данные. Адаптивные модели динамически обновляют модель по мере сжатия данных. И кодер, и декодер начинаются с тривиальной модели, что дает плохое сжатие исходных данных, но по мере того, как они узнают больше о данных, производительность улучшается. В наиболее популярных типах сжатия, используемых на практике, сейчас используются адаптивные кодеры.
Методы сжатия без потерь можно разделить на категории в соответствии с типом данных, для сжатия которых они предназначены. Хотя, в принципе, любой алгоритм сжатия без потерь общего назначения ( универсальный означает, что они могут принимать любую строку битов) может использоваться с любым типом данных, многие из них не могут достичь значительного сжатия данных, которые не имеют формы, для которой они были созданы для сжатия. Многие из методов сжатия без потерь, используемых для текста, также достаточно хорошо работают для индексированных изображений .
Мультимедиа [ править ]
Эти методы используют преимущества определенных характеристик изображений, таких как обычное явление непрерывных двухмерных областей схожих тонов. Каждый пиксель, кроме первого, заменяется разницей его левого соседа. Это приводит к тому, что малые значения имеют гораздо большую вероятность, чем большие значения. Это часто также применяется к звуковым файлам и может сжимать файлы, содержащие в основном низкие частоты и небольшую громкость. Для изображений этот шаг можно повторить, взяв разницу в верхний пиксель, а затем в видео можно взять разницу в пикселе в следующем кадре.
Иерархическая версия этого метода берет соседние пары точек данных, сохраняет их разность и сумму, а на более высоком уровне с более низким разрешением продолжает вычисление сумм. Это называется дискретным вейвлет-преобразованием . JPEG2000 дополнительно использует точки данных из других пар и коэффициенты умножения, чтобы смешать их с разницей. Эти множители должны быть целыми числами, чтобы результат был целым при любых обстоятельствах. Значения увеличиваются, увеличивается размер файла, но, надеюсь, распределение значений более пиковое. [ необходима цитата ]
Адаптивное кодирование использует вероятности из предыдущего образца при кодировании звука, от левого и верхнего пикселя при кодировании изображения и дополнительно из предыдущего кадра при кодировании видео. В вейвлет-преобразовании вероятности также проходят через иерархию.
Исторические правовые вопросы [ править ]
Многие из этих методов реализованы в инструментах с открытым исходным кодом и в проприетарных инструментах, особенно в LZW и его вариантах. Некоторые алгоритмы запатентованы в США и других странах, и их законное использование требует лицензирования держателем патента. Из-за патентов на определенные виды сжатия LZW и, в частности, практики лицензирования со стороны патентообладателя Unisys, которую многие разработчики сочли оскорбительной, некоторые сторонники открытого исходного кода призывали людей избегать использования формата обмена графическими данными (GIF) для сжатия файлов неподвижных изображений в пользу Portable. Network Graphics (PNG), который сочетает в себе LZ77 основанное выкачивает алгоритмс выбором фильтров прогнозирования для конкретной предметной области. Однако срок действия патентов на LZW истек 20 июня 2003 г. [1]
Многие из методов сжатия без потерь, используемых для текста, также достаточно хорошо работают для индексированных изображений , но есть другие методы, которые не работают для типичного текста, которые полезны для некоторых изображений (особенно простых растровых изображений), и другие методы, которые используют преимущества определенных характеристики изображений (такие как обычное явление смежных двухмерных областей схожих тонов и тот факт, что цветные изображения обычно имеют преобладание в ограниченном диапазоне цветов из тех, которые представляются в цветовом пространстве).
Как упоминалось ранее, сжатие звука без потерь — это несколько специализированная область. Алгоритмы сжатия звука без потерь могут использовать повторяющиеся шаблоны, показанные волнообразной природой данных — по сути, с использованием авторегрессионных моделей для прогнозирования «следующего» значения и кодирования (надеюсь, небольшой) разницы между ожидаемым значением и фактическими данными. Если разница между предсказанными и фактическими данными (называемая ошибкой ) имеет тенденцию быть небольшой, то определенные значения разницы (например, 0, +1, -1 и т. Д. В выборочных значениях) становятся очень частыми, что можно использовать путем их кодирования. в нескольких выходных битах.
Иногда полезно сжать только различия между двумя версиями файла (или, при сжатии видео , последовательных изображений в последовательности). Это называется дельта-кодированием (от греческой буквы Δ , которая в математике обозначает различие), но этот термин обычно используется только в том случае, если обе версии имеют смысл вне сжатия и распаковки. Например, хотя процесс сжатия ошибки в вышеупомянутой схеме сжатия звука без потерь может быть описан как дельта-кодирование от приближенной звуковой волны до исходной звуковой волны, приближенная версия звуковой волны не имеет смысла ни в каком другом контексте. .
Методы сжатия без потерь [ править ]
См. Также: Категория: Алгоритмы сжатия без потерь
Ни один алгоритм сжатия без потерь не может эффективно сжать все возможные данные (подробности см. В разделе « Ограничения» ниже). По этой причине существует множество различных алгоритмов, которые разработаны либо с учетом конкретного типа входных данных, либо с конкретными предположениями о том, какие виды избыточности могут содержать несжатые данные.
Некоторые из наиболее распространенных алгоритмов сжатия без потерь перечислены ниже.
Общего назначения [ править ]
- bzip2 — объединяет преобразование Барроуза – Уиллера с кодированием RLE и Хаффмана.
- Конечная энтропия состояния — энтропийное кодирование , табличный вариант ANS , используемый LZFSE и Zstandard
- Кодирование Хаффмана — энтропийное кодирование, хорошо сочетающееся с другими алгоритмами, используемыми pack утилитой Unix
- Сжатие Лемпеля-Зива (LZ77 и LZ78) — алгоритм на основе словаря, который лежит в основе многих других алгоритмов
- Алгоритм цепи Лемпеля – Зива – Маркова (LZMA) — очень высокая степень сжатия, используется 7zip и xz
- Lempel – Ziv – Oberhumer (LZO) — рассчитан на скорость за счет степени сжатия
- Lempel – Ziv – Storer – Szymanski (LZSS) — используется WinRAR в тандеме с кодированием Хаффмана.
- Deflate — сжатие Сочетания LZSS с кодированием Хаффмана, используемое ZIP , GZIP и PNG изображений
Аудио [ править ]
- Apple Lossless (ALAC — аудиокодек Apple без потерь)
- Акустическое кодирование с адаптивным преобразованием (ATRAC)
- Кодирование без потерь звука (также известное как MPEG-4 ALS)
- Прямая потоковая передача (DST)
- Dolby TrueHD
- DTS-HD Master Audio
- Бесплатный аудиокодек без потерь (FLAC)
- Упаковка без потерь Meridian (MLP)
- Аудио Обезьяны (Monkey’s Audio APE)
- MPEG-4 SLS (также известный как HD-AAC)
- OptimFROG
- Исходное качество звука (OSQ)
- RealPlayer (RealAudio без потерь)
- Сократить (ШН)
- TTA (True Audio Lossless)
- WavPack (WavPack без потерь)
- WMA без потерь (Windows Media без потерь)
Растровая графика [ править ]
- HEIF — высокоэффективный формат файлов изображений (сжатие без потерь или с потерями, с использованием HEVC )
- ILBM — (сжатие RLE без потерь изображений Amiga IFF )
- LDCT — Дискретное косинусное преобразование без потерь [2] [3]
- JBIG2 — (сжатие без потерь или с потерями черно-белых изображений)
- JPEG 2000 — (включает метод сжатия без потерь через обратимое целочисленное вейвлет-преобразование LeGall-Tabatabai 5/3 [4] [5] [6] )
- JPEG XR — ранее WMPhoto и HD Photo , включает метод сжатия без потерь
- JPEG-LS — (стандарт сжатия без / почти без потерь)
- PCX — Обмен PiCture
- PDF — Portable Document Format (сжатие без потерь или с потерями)
- PNG — переносимая сетевая графика
- TIFF — формат файла изображений с тегами (сжатие без потерь или с потерями)
- TGA — Truevision TGA
- WebP — (сжатие без потерь или с потерями изображений RGB и RGBA)
- FLIF — бесплатный формат изображений без потерь
- AVIF — формат файла изображения AOMedia Video 1
3D-графика [ править ]
- OpenCTM — сжатие без потерь трехмерных треугольных сеток
Видео [ править ]
См. Этот список видеокодеков без потерь.
Криптография [ править ]
Криптосистемы часто сжимают данные («открытый текст») перед шифрованием для дополнительной безопасности. При правильной реализации сжатие значительно увеличивает расстояние единственности за счет удаления шаблонов, которые могут облегчить криптоанализ . [7] Однако многие обычные алгоритмы сжатия без потерь создают заголовки, оболочки, таблицы или другой предсказуемый вывод, который вместо этого может упростить криптоанализ. Таким образом, криптосистемы должны использовать алгоритмы сжатия, выходные данные которых не содержат этих предсказуемых шаблонов.
Генетика и геномика [ править ]
Алгоритмы сжатия генетических данных (не путать с генетическими алгоритмами ) — это последнее поколение алгоритмов сжатия без потерь, которые сжимают данные (обычно последовательности нуклеотидов) с использованием как обычных алгоритмов сжатия, так и специальных алгоритмов, адаптированных к генетическим данным. В 2012 году группа ученых из Университета Джона Хопкинса опубликовала первый алгоритм сжатия генетических данных, который не использует внешние генетические базы данных для сжатия. HAPZIPPER был адаптирован для данных HapMap и обеспечивает более чем 20-кратное сжатие (уменьшение размера файла на 95%), обеспечивая сжатие в 2–4 раза быстрее, чем ведущие универсальные утилиты сжатия. [8]
Алгоритмы сжатия геномных последовательностей, также известные как компрессоры последовательностей ДНК, исследуют тот факт, что последовательности ДНК имеют характерные свойства, такие как инвертированные повторы. Самые удачные компрессоры — XM и GeCo. [9] Для эукариот XM немного лучше по степени сжатия, хотя для последовательностей размером более 100 МБ его вычислительные требования непрактичны.
Исполняемые файлы [ править ]
Основная статья: Исполняемое сжатие
Самораспаковывающиеся исполняемые файлы содержат сжатое приложение и декомпрессор. При запуске декомпрессор прозрачно распаковывает и запускает исходное приложение. Это особенно часто используется в демонстрационном кодировании, где проводятся соревнования для демонстраций со строгими ограничениями по размеру, вплоть до 1k . Этот тип сжатия не ограничивается строго двоичными исполняемыми файлами, но также может применяться к сценариям, таким как JavaScript .
Тесты сжатия без потерь [ править ]
Алгоритмы сжатия без потерь и их реализации регулярно тестируются в прямых тестах . Существует ряд наиболее известных тестов сжатия. Некоторые тесты охватывают только степень сжатия данных , поэтому победители в этих тестах могут оказаться непригодными для повседневного использования из-за низкой скорости лучших тестов. Еще одним недостатком некоторых тестов является то, что их файлы данных известны, поэтому некоторые разработчики программ могут оптимизировать свои программы для достижения максимальной производительности на конкретном наборе данных. Победители в этих тестах часто приходят из класса программного обеспечения для сжатия контекстного микширования .
Мэтт Махони в своем выпуске бесплатного буклета « Объяснение сжатия данных» за февраль 2010 г. дополнительно перечисляет следующее: [10]
- Корпус Калгари, построенный в 1987 году, больше не используется широко из-за своего небольшого размера. Мэтт Махони в настоящее время поддерживает программу Calgary Compression Challenge, созданную и поддерживаемую с 21 мая 1996 г. по 21 мая 2016 г. Леонидом Броухисом.
- Тестирование сжатия большого текста [11] и аналогичный приз Hutter Prize используют обрезанный набор данных Wikipedia XML UTF-8 .
- Generic Compression Benchmark [12], поддерживаемый самим Махони, проверяет сжатие данных, генерируемых случайными машинами Тьюринга .
- Сами Рансас (автор NanoZip) поддерживает рейтинги сжатия, эталонный тест, аналогичный тесту максимального сжатия нескольких файлов, но с минимальными требованиями к скорости. Он также предлагает калькулятор, который позволяет пользователю взвесить важность скорости и степени сжатия. Топ-программы здесь довольно разные из-за требований к скорости. В январе 2010 года лидирующими программами были NanoZip, за которыми следовали FreeArc , CCM , flashzip и 7-Zip .
- Тест Monster of Compression от NF Antonio тестирует сжатие 1 ГБ общедоступных данных с 40-минутным ограничением по времени. По состоянию на 20 декабря 2009 г. лучшим архиватором является NanoZip 0.07a, а лучшим компрессором для одиночных файлов — ccmx 1.30c, оба контекста смешиваются .
Веб-сайт Compression Ratings опубликовал сводную диаграмму «границы» по степени сжатия и времени. [13]
Инструмент анализа сжатия [14] — это приложение для Windows, которое позволяет конечным пользователям оценивать характеристики производительности потоковых реализаций LZF4, Deflate, ZLIB, GZIP, BZIP2 и LZMA, используя свои собственные данные. Он производит измерения и графики, с помощью которых пользователи могут сравнивать скорость сжатия, скорость распаковки и степень сжатия различных методов сжатия и проверять, как уровень сжатия, размер буфера и операции очистки влияют на результаты.
Ограничения [ править ]
Алгоритмы сжатия данных без потерь не могут гарантировать сжатие для всех наборов входных данных. Другими словами, для любого алгоритма сжатия данных без потерь будет входной набор данных, который не станет меньше при обработке алгоритмом, а для любого алгоритма сжатия данных без потерь, который уменьшает хотя бы один файл, будет как минимум один файл, который он увеличивает. Это легко доказать с помощью элементарной математики, используя следующий счетный аргумент :
- Предположим, что каждый файл представлен как строка бит произвольной длины.
- Предположим, что существует алгоритм сжатия, который преобразует каждый файл в выходной файл, длина которого не превышает длину исходного файла, и что по крайней мере один файл будет сжат в выходной файл, который короче исходного файла.
- Пусть M будет наименьшим числом, при котором существует файл F с длиной M бит, который сжимается до чего-то более короткого. Пусть N будет длина (в битах) сжатой версии F .
- Поскольку N< M , каждый файл длины N сохраняет свой размер во время сжатия. Таких файлов может быть 2 N. Вместе с F , это делает 2 N + 1 , что все файлы компресса в одном из 2 N файлов длины N .
- Но 2 N меньше, чем 2 N +1, поэтому по принципу «ящика» должен существовать некоторый файл длины N, который одновременно является выходом функции сжатия на двух разных входах. Этот файл нельзя надежно распаковать (какой из двух оригиналов должен дать?), Что противоречит предположению о том, что алгоритм был без потерь.
- Следовательно, мы должны заключить, что наша первоначальная гипотеза (что функция сжатия больше не делает файл) обязательно неверна.
Любой алгоритм сжатия без потерь, который делает некоторые файлы короче, обязательно должен делать некоторые файлы длиннее, но необязательно, чтобы эти файлы становились намного длиннее. Большинство практических алгоритмов сжатия предоставляют средство «выхода», которое может отключить нормальное кодирование файлов, которые стали бы длиннее из-за кодирования. Теоретически требуется только один дополнительный бит, чтобы сообщить декодеру, что нормальное кодирование отключено для всего ввода; однако в большинстве алгоритмов кодирования для этой цели используется по крайней мере один полный байт (а обычно более одного). Например, сжатые файлы deflate никогда не должны увеличиваться более чем на 5 байтов на 65 535 байтов ввода.
Фактически, если мы рассмотрим файлы длины N, если бы все файлы были равновероятными, то для любого сжатия без потерь, которое уменьшает размер некоторого файла, ожидаемая длина сжатого файла (усредненная по всем возможным файлам длины N) обязательно должна быть больше, чем N. [ необходима цитата ] Так что, если мы ничего не знаем о свойствах данных, которые сжимаем, мы могли бы вообще не сжимать их. Алгоритм сжатия без потерь полезен только тогда, когда мы с большей вероятностью сжимаем одни типы файлов, чем другие; тогда алгоритм может быть разработан для лучшего сжатия этих типов данных.
Таким образом, главный урок из этой аргументации заключается не в том, что человек рискует большими потерями, а просто в том, что нельзя всегда выигрывать. Выбор алгоритма всегда означает неявный выбор подмножества всех файлов, которые станут существенно короче. Это теоретическая причина, по которой нам нужны разные алгоритмы сжатия для разных типов файлов: не может быть никакого алгоритма, подходящего для всех типов данных.
«Уловка», которая позволяет алгоритмам сжатия без потерь, используемым для того типа данных, для которого они были разработаны, последовательно сжимать такие файлы до более короткой формы, заключается в том, что файлы, для которых предназначены алгоритмы, имеют некоторую форму легко моделируемой избыточности, которая алгоритм предназначен для удаления и, следовательно, относится к подмножеству файлов, которые этот алгоритм может сделать короче, тогда как другие файлы не будут сжаты или даже больше. Алгоритмы, как правило, специально настроены для определенного типа файла: например, программы сжатия звука без потерь плохо работают с текстовыми файлами, и наоборот.
В частности, файлы случайных данных не могут быть последовательно сжаты каким-либо мыслимым алгоритмом сжатия данных без потерь: действительно, этот результат используется для определения концепции случайности в теории алгоритмической сложности .
Доказано, что невозможно создать алгоритм, который может без потерь сжать любые данные. [15] Несмотря на то, что на протяжении многих лет было много заявлений о том, что компании достигли «идеального сжатия», когда произвольное количество N случайных битов всегда может быть сжато до N — 1 бит, подобные утверждения можно безопасно отбросить, даже не глядя на них. дополнительные сведения о предполагаемой схеме сжатия. Такой алгоритм противоречит фундаментальным законам математики, потому что, если бы он существовал, его можно было бы многократно применять, чтобы без потерь уменьшить любой файл до длины 0. По этой причине якобы «идеальные» алгоритмы сжатия часто насмешливо называют «волшебными» алгоритмами сжатия.
С другой стороны, также было доказано [ необходима цитата ], что не существует алгоритма для определения того, является ли файл несжимаемым в смысле колмогоровской сложности . Следовательно, возможно, что любой конкретный файл, даже если он выглядит случайным, может быть значительно сжат, даже включая размер декомпрессора. Примером могут служить цифры математической константы « пи» , которые кажутся случайными, но могут быть сгенерированы очень маленькой программой. Однако даже при том, что невозможно определить, является ли конкретный файл несжимаемым, простая теорема о несжимаемых строках показывает, что более 99% файлов любой заданной длины не могут быть сжаты более чем на один байт (включая размер декомпрессора).
Математические основы [ править ]
Абстрактно алгоритм сжатия можно рассматривать как функцию от последовательностей (обычно октетов). Сжатие считается успешным, если результирующая последовательность короче исходной последовательности (и инструкций для карты декомпрессии). Чтобы алгоритм сжатия работал без потерь , карта сжатия должна формировать инъекцию от «простых» до «сжатых» битовых последовательностей.
Принцип голубятни запрещает взаимное соответствие между набором последовательностей длины N и любым подмножеством набора последовательностей длины N -1. Следовательно, невозможно создать алгоритм без потерь, который уменьшал бы размер каждой возможной входной последовательности.
Точки применения в реальной теории сжатия [ править ]
Разработчики реальных алгоритмов сжатия признают, что потоки с высокой энтропией информации не могут быть сжаты, и, соответственно, включают средства для обнаружения и обработки этого условия. Очевидный способ обнаружения — применение алгоритма необработанного сжатия и проверка того, меньше ли его выход, чем вход. Иногда обнаружение осуществляется эвристикой ; например, приложение сжатия может считать файлы, имена которых заканчиваются на «.zip», «.arj» или «.lha», несжимаемыми без какого-либо более сложного обнаружения. Обычный способ справиться с этой ситуацией — цитировать ввод или несжимаемые части ввода в выводе, минимизируя накладные расходы на сжатие. Например, застежка-молнияформат данных определяет «метод сжатия» «Сохраненный» для входных файлов, которые были дословно скопированы в архив. [16]
Испытание на миллион случайных цифр [ править ]
Марк Нельсон, в ответ на заявления о магических алгоритмах сжатия, появляющихся в comp.compression, сконструировал двоичный файл размером 415 241 байт с высокоэнтропийным содержимым и бросил публичный вызов в 100 долларов каждому, кто бы мог написать программу, которая вместе со своими входными данными могла бы быть меньше, чем предоставленные им двоичные данные, но иметь возможность восстановить их без ошибок. [17]
FAQ для comp.compression телеконференции содержит вызов Майка Голдман предлагают $ 5000 за программу , которая может сжимать случайные данные. Патрик Крейг принял вызов, но вместо того, чтобы сжимать данные, он разделил их на отдельные файлы, все из которых оканчивались цифрой 5., который не был сохранен как часть файла. Отсутствие этого символа позволяло результирующим файлам (плюс, в соответствии с правилами, размеру программы, которая их собирала повторно) быть меньше, чем исходный файл. Однако фактического сжатия не было, и информация, хранящаяся в именах файлов, была необходима для их повторной сборки в правильном порядке в исходном файле, и эта информация не была принята во внимание при сравнении размеров файлов. Таким образом, самих файлов недостаточно для восстановления исходного файла; имена файлов также необходимы. Патрик Крейг согласился с тем, что никакого значимого сжатия не произошло, но утверждал, что формулировка запроса на самом деле этого не требует. Полная история мероприятия, включая обсуждение того, была ли проблема решена технически, находится на Патрике Крейге. [18]
См. Также [ править ]
- Сравнение файловых архиваторов
- Сжатие данных
- Дэвид А. Хаффман
- Энтропия (теория информации)
- Код на основе грамматики
- Теория информации
- Колмогоровская сложность
- Список кодеков
- Сжатие звука с преобразованием без потерь (LTAC)
- Сжатие с потерями
- Прекомпрессор
- Универсальный код (сжатие данных)
- Нормальный номер
Ссылки [ править ]
- ^ «Патентная информация LZW» . О Unisys . Unisys. Архивировано из оригинала на 2009-06-02.
- ^ Ахмед, Насир ; Mandyam, Giridhar D .; Маготра, Нирадж (17 апреля 1995 г.). «Схема на основе DCT для сжатия изображений без потерь» . Сжатие цифрового видео: алгоритмы и технологии 1995 . Международное общество оптики и фотоники. 2419 : 474–478. DOI : 10.1117 / 12.206386 . S2CID 13894279 .
- ^ Komatsu, K .; Сезаки, Каору (1998). «Обратимое дискретное косинусное преобразование» . Материалы Международной конференции IEEE 1998 г. по акустике, обработке речи и сигналов, ICASSP ’98 (каталожный номер 98CH36181) . 3 : 1769–1772 т. 3. DOI : 10.1109 / ICASSP.1998.681802 . ISBN
- 0-7803-4428-6. S2CID 17045923 .
- ↑ Салливан, Гэри (8–12 декабря 2003 г.). «Общие характеристики и конструктивные соображения для кодирования видео временного поддиапазона» . ITU-T . Группа экспертов по кодированию видео . Проверено 13 сентября 2019 .
- ^ Unser, M .; Блю Т. (2003). «Математические свойства вейвлет-фильтров JPEG2000» (PDF) . IEEE Transactions по обработке изображений . 12 (9): 1080–1090. DOI : 10.1109 / TIP.2003.812329 . PMID 18237979 . S2CID 2765169 .
- ^ Bovik, Алан С. (2009). Основное руководство по обработке видео . Академическая пресса . п. 355. ISBN
- 9780080922508.
- ^ Альфред Дж. Менезес; Джонатан Кац; Пол К. ван Оршот; Скотт А. Ванстон (16 октября 1996 г.). Справочник по прикладной криптографии . CRC Press. ISBN
- 978-1-4398-2191-6.
- ^ Chanda, P .; Elhaik, E .; Бадер, JS (2012). «HapZipper: делиться популяциями HapMap стало еще проще» . Nucleic Acids Res . 40 (20): 1–7. DOI : 10.1093 / NAR / gks709 . PMC 3488212 . PMID 22844100 .
- ^ Пратас, Д .; Пинхо, AJ; Феррейра, PJSG (2016). «Эффективное сжатие геномных последовательностей». Конференция по сжатию данных (PDF) . Snowbird, Юта.
- ^ Мэтт Махони (2010). «Объяснение сжатия данных» (PDF) . С. 3–5.
- ^ «Тест сжатия большого текста» . mattmahoney.net .
- ^ «Стандартный тест сжатия» . mattmahoney.net .
- ^ Визуализация степени сжатия и времени
- ^ «Инструмент анализа сжатия» . Бесплатные инструменты . Noemax Technologies.
- ^ «comp.compression Часто задаваемые вопросы (часть 1/3) / Раздел — [9] Сжатие случайных данных (WEB, Gilbert и другие)» . faqs.org .
- ^ «Спецификация формата файла .ZIP» . PKWARE, Inc., глава V, раздел J.
- ^ Нельсон, Марк (20.06.2006). «Повторный вызов миллиона случайных цифр» .
- ^ Крейг, Патрик. «Проблема сжатия $ 5000» . Проверено 8 июня 2009 .
Дальнейшее чтение [ править ]
- Сайуд, Халид (2017-10-27). Введение в сжатие данных . Серия Морган Кауфманн в мультимедийной информации и системах (5 — е изд.). Морган Кауфманн . ISBN 978-0-12809474-7. (790 стр.)
- Сайуд, Халид, изд. (2002-12-18). Справочник по сжатию без потерь (связь, сети и мультимедиа) (1-е изд.). Академическая пресса . ISBN 978-0-12390754-7. (488 стр.)
Внешние ссылки [ править ]
- «Формат сжатия LZF» . github . Проверено 17 октября 2017 .
- Фамдо, Нам. «Теория сжатия данных» . Сжатие данных . Проверено 17 октября 2017 .
- «Сравнение без потерь» . База знаний Hydrogenaudio . 2015-01-05 . Проверено 17 октября 2017 .
- «Аудиоформаты без потерь и с потерями для музыки» . Bobulous Central . 2003-11-06 . Проверено 17 октября 2017 .
- «Тест сжатия изображений» . Архивировано 10 февраля 2013 года. обзор
- Патент США № 7,096,360 , «[a] n« Метод частотно-временного сжатия данных », поддерживающий сжатие, шифрование, декомпрессию, дешифрование и сохранение множества двоичных цифр через частоты, где каждая частота представляет множество битов».
- Арифметика
- Асимметричные системы счисления
- Голомб
- Хаффман
- Адаптивная
- Канонический
- Изменено
- Опыт-Голомб
- Фибоначчи
- Гамма
- Левенштейн
- Кодирование пар байтов
- Лемпель-Зив
- Бротли
- ВЫПУСКАТЬ
- LZ4
- LZFSE
- LZJB
- LZMA
- LZO
- LZRW
- LZS
- ЛЗСС
- LZW
- LZWL
- LZX
- Мгновенно
- Zстандарт
Сжатие информации без потерь. Часть первая
Доброго времени суток.
Сегодня я хочу коснуться темы сжатия данных без потерь. Несмотря на то, что на хабре уже были статьи, посвященные некоторым алгоритмам, мне захотелось рассказать об этом чуть более подробно.
Я постараюсь давать как математическое описание, так и описание в обычном виде, для того, чтобы каждый мог найти для себя что-то интересное.В этой статье я коснусь фундаментальных моментов сжатия и основных типов алгоритмов.
Сжатие. Нужно ли оно в наше время?
Разумеется, да. Конечно, все мы понимаем, что сейчас нам доступны и носители информации большого объема, и высокоскоростные каналы передачи данных. Однако, одновременно с этим растут и объемы передаваемой информации. Если несколько лет назад мы смотрели 700-мегабайтные фильмы, умещающиеся на одну болванку, то сегодня фильмы в HD-качестве могут занимать десятки гигабайт.
Конечно, пользы от сжатия всего и вся не так много. Но все же существуют ситуации, в которых сжатие крайне полезно, если не необходимо.- Пересылка документов по электронной почте (особенно больших объемов документов с использованием мобильных устройств)
- При публикации документов на сайтах, потребность в экономии трафика
- Экономия дискового пространства в тех случаях, когда замена или добавление средств хранения затруднительно. Например, подобное бывает в тех случаях, когда выбить бюджет под капитальные расходы непросто, а дискового пространства не хватает
Конечно, можно придумать еще множество различных ситуаций, в которых сжатие окажется полезным, но нам достаточно и этих нескольких примеров.
Все методы сжатия можно разделить на две большие группы: сжатие с потерями и сжатие без потерь. Сжатие без потерь применяется в тех случаях, когда информацию нужно восстановить с точностью до бита. Такой подход является единственно возможным при сжатии, например, текстовых данных.
В некоторых случаях, однако, не требуется точного восстановления информации и допускается использовать алгоритмы, реализующие сжатие с потерями, которое, в отличие от сжатия без потерь, обычно проще реализуется и обеспечивает более высокую степень архивации.Сжатие с потерями Лучшие степени сжатия, при сохранении «достаточно хорошего» качества данных. Применяются в основном для сжатия аналоговых данных — звука, изображений. В таких случаях распакованный файл может очень сильно отличаться от оригинала на уровне сравнения «бит в бит», но практически неотличим для человеческого уха или глаза в большинстве практических применений. Сжатие без потерь Данные восстанавливаются с точностью до бита, что не приводит к каким-либо потерям информации. Однако, сжатие без потерь показывает обычно худшие степени сжатия. Итак, перейдем к рассмотрению алгоритмов сжатия без потерь.
Универсальные методы сжатия без потерь
В общем случае можно выделить три базовых варианта, на которых строятся алгоритмы сжатия.
Первая группа методов – преобразование потока. Это предполагает описание новых поступающих несжатых данных через уже обработанные. При этом не вычисляется никаких вероятностей, кодирование символов осуществляется только на основе тех данных, которые уже были обработаны, как например в LZ – методах (названных по имени Абрахама Лемпеля и Якоба Зива). В этом случае, второе и дальнейшие вхождения некой подстроки, уже известной кодировщику, заменяются ссылками на ее первое вхождение.Вторая группа методов – это статистические методы сжатия. В свою очередь, эти методы делятся на адаптивные (или поточные), и блочные.
В первом (адаптивном) варианте, вычисление вероятностей для новых данных происходит по данным, уже обработанным при кодировании. К этим методам относятся адаптивные варианты алгоритмов Хаффмана и Шеннона-Фано.
Во втором (блочном) случае, статистика каждого блока данных высчитывается отдельно, и добавляется к самому сжатому блоку. Сюда можно отнести статические варианты методов Хаффмана, Шеннона-Фано, и арифметического кодирования.Третья группа методов – это так называемые методы преобразования блока. Входящие данные разбиваются на блоки, которые затем трансформируются целиком. При этом некоторые методы, особенно основанные на перестановке блоков, могут не приводить к существенному (или вообще какому-либо) уменьшению объема данных. Однако после подобной обработки, структура данных значительно улучшается, и последующее сжатие другими алгоритмами проходит более успешно и быстро.
Общие принципы, на которых основано сжатие данных
Все методы сжатия данных основаны на простом логическом принципе. Если представить, что наиболее часто встречающиеся элементы закодированы более короткими кодами, а реже встречающиеся – более длинными, то для хранения всех данных потребуется меньше места, чем если бы все элементы представлялись кодами одинаковой длины.
Точная взаимосвязь между частотами появления элементов, и оптимальными длинами кодов описана в так называемой теореме Шеннона о источнике шифрования(Shannon’s source coding theorem), которая определяет предел максимального сжатия без потерь и энтропию Шеннона.Немного математики
Если вероятность появления элемента si равна p(si), то наиболее выгодно будет представить этот элемент — log2p(si) битами. Если при кодировании удается добиться того, что длина всех элементов будет приведена к log2p(si) битам, то и длина всей кодируемой последовательности будет минимальной для всех возможных методов кодирования. При этом, если распределение вероятностей всех элементов F =
i)> неизменно, и вероятности элементов взаимно независимы, то средняя длина кодов может быть рассчитана как
Это значение называют энтропией распределения вероятностей F, или энтропией источника в заданный момент времени.
Однако обычно вероятность появления элемента не может быть независимой, напротив, она находится в зависимости от каких-то факторов. В этом случае, для каждого нового кодируемого элемента si распределение вероятностей F примет некоторое значение Fk, то есть для каждого элемента F= Fk и H= Hk.Иными словами, можно сказать, что источник находится в состоянии k, которому соответствует некий набор вероятностей pk(si) для всех элементов si.
Поэтому, учитывая эту поправку, можно выразить среднюю длину кодов как
Где Pk — вероятность нахождения источника в состоянии k.
Итак, на данном этапе мы знаем, что сжатие основано на замене часто встречающихся элементов короткими кодами, и наоборот, а так же знаем, как определить среднюю длину кодов. Но что же такое код, кодирование, и как оно происходит?
Кодирование без памяти
Коды без памяти являются простейшими кодами, на основе которых может быть осуществлено сжатие данных. В коде без памяти каждый символ в кодируемом векторе данных заменяется кодовым словом из префиксного множества двоичных последовательностей или слов.
На мой взгляд, не самое понятное определение. Рассмотрим эту тему чуть более подробно.Пусть задан некоторый алфавит , состоящий из некоторого (конечного) числа букв. Назовем каждую конечную последовательность символов из этого алфавита (A=a1, a2,… ,an) словом, а число n — длиной этого слова.
Пусть задан также другой алфавит. Аналогично, обозначим слово в этом алфавите как B.
Введем еще два обозначения для множества всех непустых слов в алфавите. Пусть
— количество непустых слов в первом алфавите, а
— во втором.
Пусть также задано отображение F, которое ставит в соответствие каждому слову A из первого алфавита некоторое слово B=F(A) из второго. Тогда слово B будет называться кодом слова A, а переход от исходного слова к его коду будет называться кодированием.
Поскольку слово может состоять и из одной буквы, то мы можем выявить соответствие букв первого алфавита и соответствующих им слов из второго:
a1 B1
a2 B2
…
an BnЭто соответствие называют схемой, и обозначают ∑.
В этом случае слова B1, B2,…, Bn называют элементарными кодами, а вид кодирования с их помощью — алфавитным кодированием. Конечно, большинство из нас сталкивались с таким видом кодирования, пусть даже и не зная всего того, что я описал выше.Итак, мы определились с понятиями алфавит, слово, код, и кодирование. Теперь введем понятие префикс.
Пусть слово B имеет вид B=B’B». Тогда B’ называют началом, или префиксом слова B, а B» — его концом. Это довольно простое определение, но нужно отметить, что для любого слова B, и некое пустое слово ʌ («пробел»), и само слово B, могут считаться и началами и концами.
Итак, мы подошли вплотную к пониманию определения кодов без памяти. Последнее определение, которое нам осталось понять — это префиксное множество. Схема ∑ обладает свойством префикса, если для любых 1≤i, j≤r, i≠j, слово Bi не является префиксом слова Bj.
Проще говоря, префиксное множество – это такое конечное множество, в котором ни один элемент не является префиксом (или началом) любого другого элемента. Простым примером такого множества является, например, обычный алфавит.- Составляется алфавит Ψ символов исходного сообщения, причем символы алфавита сортируются по убыванию их вероятности появления в сообщении.
- Каждому символу ai из алфавита Ψ ставится в соответствие некое слово Bi из префиксного множества Ω.
- Осуществляется кодирование каждого символа, с последующим объединением кодов в один поток данных, который будет являться результатам сжатия.
Одним из канонических алгоритмов, которые иллюстрируют данный метод, является алгоритм Хаффмана.
Алгоритм Хаффмана
Алгоритм Хаффмана использует частоту появления одинаковых байт во входном блоке данных, и ставит в соответствие часто встречающимся блокам цепочки бит меньшей длины, и наоборот. Этот код является минимально – избыточным кодом. Рассмотрим случай, когда, не зависимо от входного потока, алфавит выходного потока состоит из всего 2 символов – нуля и единицы.
- Все буквы входного алфавита упорядочиваются в порядке убывания вероятностей. Все слова из алфавита выходного потока (то есть то, чем мы будем кодировать) изначально считаются пустыми (напомню, что алфавит выходного потока состоит только из символов ).
- Два символа aj-1 и aj входного потока, имеющие наименьшие вероятности появления, объединяются в один «псевдосимвол» с вероятностью p равной сумме вероятностей входящих в него символов. Затем мы дописываем 0 в начало слова Bj-1, и 1 в начало слова Bj, которые будут впоследствии являться кодами символов aj-1 и aj соответственно.
- Удаляем эти символы из алфавита исходного сообщения, но добавляем в этот алфавит сформированный псевдосимвол (естественно, он должен быть вставлен в алфавит на нужное место, с учетом его вероятности).
Для лучшей иллюстрации, рассмотрим небольшой пример.
Пусть у нас есть алфавит, состоящий из всего четырех символов — < a1, a2, a3, a4>. Предположим также, что вероятности появления этих символов равны соответственно p1=0.5; p2=0.24; p3=0.15; p4=0.11 (сумма всех вероятностей, очевидно, равна единице).Итак, построим схему для данного алфавита.
- Объединяем два символа с наименьшими вероятностями (0.11 и 0.15) в псевдосимвол p’.
- Удаляем объединенные символы, и вставляем получившийся псевдосимвол в алфавит.
- Объединяем два символа с наименьшей вероятностью (0.24 и 0.26) в псевдосимвол p».
- Удаляем объединенные символы, и вставляем получившийся псевдосимвол в алфавит.
- Наконец, объединяем оставшиеся два символа, и получаем вершину дерева.
Если сделать иллюстрацию этого процесса, получится примерно следующее:
Как вы видите, при каждом объединении мы присваиваем объединяемым символам коды 0 и 1.
Таким образом, когда дерево построено, мы можем легко получить код для каждого символа. В нашем случае коды будут выглядить так:Поскольку ни один из данных кодов не является префиксом какого-нибудь другого (то есть, мы получили пресловутое префиксное множество), мы можем однозначно определить каждый код в выходном потоке.
Итак, мы добились того, что самый частый символ кодируется самым коротким кодом, и наоборот.
Если предположить, что изначально для хранения каждого символа использовался один байт, то можно посчитать, насколько нам удалось уменьшить данные.Пусть на входу у нас была строка из 1000 символов, в которой символ a1 встречался 500 раз, a2 — 240, a3 — 150, и a4 — 110 раз.
Изначально данная строка занимала 8000 бит. После кодирования мы получим строку длинной в ∑pili = 500 * 1 + 240 * 2 + 150 * 3 + 110 * 3 = 1760 бит. Итак, нам удалось сжать данные в 4,54 раза, потратив в среднем 1,76 бита на кодирование каждого символа потока.
Напомню, что согласно Шеннону, средняя длина кодов составляет . Подставив в это уравнение наши значения вероятностей, мы получим среднюю длину кодов равную 1.75496602732291, что весьма и весьма близко к полученному нами результату.
Тем не менее, следует учитывать, что помимо самих данных нам необходимо хранить таблицу кодировки, что слегка увеличит итоговый размер закодированных данных. Очевидно, что в разных случаях могут с использоваться разные вариации алгоритма – к примеру, иногда эффективнее использовать заранее заданную таблицу вероятностей, а иногда – необходимо составить ее динамически, путем прохода по сжимаемым данным.Заключение
Итак, в этой статье я постарался рассказать об общих принципах, по которым происходит сжатие без потерь, а также рассмотрел один из канонических алгоритмов — кодирование по Хаффману.
Если статья придется по вкусу хабросообществу, то я с удовольствием напишу продолжение, так как есть еще множество интересных вещей, касающихся сжатия без потерь; это как классические алгоритмы, так и предварительные преобразования данных (например, преобразование Барроуза-Уилира), ну и, конечно, специфические алгоритмы для сжатия звука, видео и изображений (самая, на мой взгляд, интересная тема).Литература
- Ватолин Д., Ратушняк А., Смирнов М. Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео; ISBN 5-86404-170-X; 2003 г.
- Д. Сэломон. Сжатие данных, изображения и звука; ISBN 5-94836-027-Х; 2004г.
- www.wikipedia.org
- сжатие без потерь
- сжатие данных
- теория информации
Сжатие данных Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Дык Буй Минь, Хуи Нгуен Нгок, Линь Лай Тхи, Хю Нгуен Ба, Чыонг Нгуен Динь
Сжатие данных очень полезно применять в коммуникационной связи, потому что оно позволяет устройствам передавать или хранить одно и то же количество информации в меньшем числе битов. Сжатие может быть либо без потери, либо с потерями. Сжатие данных постоянно используется в сохранении данных, передаче информации , утилите резервного копирования, электронных таблицах и системе управления базами данных. Есть различные методы сжатия данных , но лишь немногие из них являются стандартизированными. Эта статья даёт вам знание о сжатии данных и его применении.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Дык Буй Минь, Хуи Нгуен Нгок, Линь Лай Тхи, Хю Нгуен Ба, Чыонг Нгуен Динь
Принцип работы tor-браузера
Дистанционные технологии в образовании. Алгоритмы сжатия информации и форматы данных для передачи текстовой, звуковой и видеоинформации
Метод сжатия изображений без потерь с помощью контекстного кодирования по двоичным уровням
Комбинированные алгоритмы сжатия ключевых кадров экранного видеоСжатие изображений дистанционного зондирования земли на основе вероятностного кодирования длин серий пикселей
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.Текст научной работы на тему «Сжатие данных»
2. Голованов В. Как работает Tor. [Электронный ресурс]. Режим доступа: https://geektimes.ru/post/277578/ (дата обращения: 22.06.2016).
3. Tor. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Tor/ (дата обращения: 22.06.2016).
DATA COMPRESSION Duc B.1, Huy N.2, Linh L.3, Huy N.4, Truong N.5, Lam N.6 СЖАТИЕ ДАННЫХ Дык Б. М.1, Хуи Н. Н.2, Линь Л. Т.3, Хю Н. Б.4, Чыонг Н. Д.5, Лам Н. Ч.6
‘Дык Буй Минь /Duc Bui — магистрант, кафедра программных систем, факультет инфокоммуникационных технологий; 2Хуи Нгуен Нгок / Huy Nguyen — студент;
3Линь Лай Тхи /Linh Lai — студент, кафедра проектирования и безопасности компьютерных систем, факультет информационной безопасности и компьютерных технологий;
4Хю Нгуен Ба /Huy Nguyen — студент;
5Чыонг Нгуен Динь / Truong Nguyen — студент, кафедра систем управления и информатики, факультет систем управления и робототехники; 6Лам Нгуен Чонг /Lam Nguyen — студент, кафедра проектирования и безопасности компьютерных систем, факультет информационной безопасности и компьютерных технологий, Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, г. Санкт-Петербург
Аннотация: сжатие данных очень полезно применять в коммуникационной связи, потому что оно позволяет устройствам передавать или хранить одно и то же количество информации в меньшем числе битов. Сжатие может быть либо без потери, либо с потерями. Сжатие данных постоянно используется в сохранении данных, передаче информации, утилите резервного копирования, электронных таблицах и системе управления базами данных. Есть различные методы сжатия данных, но лишь немногие из них являются стандартизированными. Эта статья даёт вам знание о сжатии данных и его применении. Abstract: data compression is particularly useful in communications because it enables devices to transmit or store the same amount of data in fewer bits. Data compression can be either lossless or lossy. Data compression is widely used in saving data, transmitting informations, backup utilities, spreadsheet applications, and database management systems. There are a variety of data compression techniques, but only a few have been standardized. This article will give you knowledge about data compression and its application.
Ключевые слова: сжатие данных, сжатие без потери, сжатие с потерями, информация, сигнал. Keywords: data compression, lossless, lossy, information, signal.
При обработке сигналов, сжатие данных, кодирования источника, или bit-rate reduction включается информация кодирования с использованием меньшего количества битов, чем в исходной представленной информации. Сжатие данных — это алгоритмические преобразования данных, производимые с целью уменьшения занимаемого ими объёма. Применяется для более рациональных использований устройств передачи и хранения данных. Сжатие — это очень полезный процесс, так как оно уменьшает ресурсы, необходимые для хранения и передачи данных. Сжатие может быть с потерями (Lossy) или без потери (Lossless). При использовании сжатия без потери сжатые данные могут быть восстановлены с точностью до бита. При этом исходные данные восстанавливаются полностью из сжатого состояния. При использовании сжатия с потерей восстановленные данные отличаются от исходных. Для каждого типа цифровой информации существуют свои оптимальные алгоритмы сжатия, зависит от точки зрения их дальнейшего использования [1].
Сжатие без потери (Lossless) уменьшает биты путем выявления и устранения статистической избыточности. Никакая информация не теряется в сжатии без потерь. Сжатие без потери возможно потому, что большинство реальных данных показывает статистическую избыточность. Например, изображение может иметь области цвета, которые не изменяются в нескольких последовательных пикселях; вместо кодирования «красный пиксель, красный
пиксель, . » данные могут быть закодированы как «100 красных пикселей». Основной принцип алгоритмов сжатия базируется на том, что в любом файле, содержащем неслучайные данные, информация частично повторяется. Используя статистические математические модели можно определить вероятность повторения определённой комбинации символов. После этого можно создать коды, обозначающие выбранные фразы, и назначить самым часто повторяющимся фразам самые короткие коды. Для этого используются разные техники, например: энтропийное кодирование, кодирование повторов и сжатие при помощи словаря. С их помощью 8-битный символ, или целая строка, могут быть заменены всего лишь несколькими битами, устраняя таким образом излишнюю информацию [2]. Сжатие без потери используется в тех случаях, когда важно, чтобы оригинальные и распакованные данные были идентичными, или где отклонение от исходных данных может быть вредно. Типичными примерами являются исполняемые программы, текстовые документы и исходный код. Некоторые форматы файлов изображений, как PNG или GIF, используют только сжатие без потерь. Lossless форматы аудио часто используются для архивирования или производственных целей. Есть много методов сжатия без потери, для конкретной цели сжатия существует определенные методы. Например, для сжатия аудио существуют следующие методы: Free Lossless Audio Codec — FLAC, WMA Lossless — Windows Media Lossless, RealPlayer — RealAudio Lossless, Apple Lossless — ALAC (Apple Lossless Audio Codec) и др. Для сжатия графики можно использовать методы: GIF — (без потерь только для изображений содержащих не более 256 цветов), Lossless JPEG — (расширение стандарта сжатия JPEG, обеспечивающее сжатие без потерь), PNG — Portable Network Graphics, PGF — Progressive Graphics File (сжатие с/без потерь) и др.
Сжатие с потерями (Lossy) означает, что после распаковки полученные данные, несколько отличаются от первоначальных. Но в этом случае потери информации является приемлемыми. Опуская незначащие детали из источника данных, можно сэкономить место для хранения. Методы сжатия данных с потерями разработаны исследованиями о том, как люди воспринимают данные. Например, человеческий глаз более чувствителен к тонким изменениям в яркости, чем к изменениям в цвете. Сжатие изображений JPEG работает частично путем округления незначащих битов информации. Существует соответствующий компромисс между сохранением информации и уменьшенным размером. Ряд популярных форматов сжатия используют эти перцептивные различия, в том числе те, которые используются в музыкальных файлах, изображениях и видео [3]. Сжатие с потерями изображений может использоваться в цифровых камерах, для увеличения емкости хранения с минимальной потерей качества. Аналогично в DVD-дисках используют метод MPEG-2 для сжатия видео. В сжатии с потерями звука, методы психоакустики используются для удаления неслышимых (или менее слышимых) компонентов звукового сигнала. Сжатие человеческой речи часто осуществляется с еще более специализированной методикой, кодирование речи или кодирование голоса иногда выделяется как отдельная дисциплина в сжатии аудио. Сжатие голоса используется в Интернет-телефонии, например, аудио-сжатия используется для копирования компакт-дисков, и декодированных аудиопроигрывателей. У методов сжатия с потерями (Lossy) есть несколько недостатков. Один из них состоит в том, что с каждыми повторными сжатием и распоковкой погрешности будут накапливаться все больше и больше [4].
Каждые виды сжатия данных имеют свои достоинства и недостатки, поэтому они используются для различных целей. Сжатие без потери используются для компрессии данных, в случае требуют исходные и распакованные данные должны быть идентичными. Сжатие с потерями применяется, когда небольшое отличие между первоначальными и востановленными приемлемо цели пользования.