Pull to refresh

Алгоритмы LZW, LZ77 и LZ78

Algorithms *

Хочется продолжить свою предыдущую тему об алгоритмах сжатия. В этот раз я расскажу об алгоритме LZW и немного об его родственниках алгоритмах LZ77 и LZ78.

Алгоритм LZW


Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь.
Читать дальше →
Total votes 72: ↑65 and ↓7 +58
Views 127K
Comments 15

LZW-сжатие строк на javascript и распаковка средствами PHP

PHP *JavaScript *
Буквально вчера столкнулся с ситуацией, что не смог найти рабочих классов/модулей по сжатию/распаковке строк алгоритмом LZW. Точнее сказать: jsCompress-jsDecompress — работает. PhpCompress-PhpDecompress — работает. А вот jsCompress-PhpDecompress либо возвращает вообще что-то неведомое, либо пустую строку. Честно сказать не знаю, может такой проблемы с ANSI и нет, но вот с utf-8 она очень явно проявляется. Потратив несколько часов на решение проблемы я решил опубликовать готовые к работе функции на хабре.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views 12K
Comments 9

Изображения: форматы и сжатие (2/3)

TradingView corporate blog Algorithms *Image processing *


И снова здравствуйте! После перерыва в месяц продолжаем экскурсию по форматам изображений и алгоритмам сжатия. Где мы остановились? Ах, да, восьмидесятые годы.
Читать дальше →
Total votes 144: ↑144 and ↓0 +144
Views 45K
Comments 33

Сжатие данных при передаче от браузера к серверу

Ajax *JavaScript *
Tutorial
Обрабатываете много данных в браузере?
Хотите отправлять их обратно на сервер?
Да так, чтобы отправлялось побыстрее и помещалось в один http запрос?

В статье я покажу как мы решили эту задачу в новом проекте, используя сжатие и современные возможности javascript.

Читать дальше →
Total votes 68: ↑64 and ↓4 +60
Views 36K
Comments 37

Алгоритмы сжатия данных без потерь, часть 2

Algorithms *
Часть 1

Техники сжатия данных


Для сжатия данных придумано множество техник. Большинство из них комбинируют несколько принципов сжатия для создания полноценного алгоритма. Даже хорошие принципы, будучи скомбинированы вместе, дают лучший результат. Большинство техник используют принцип энтропийного кодирования, но часто встречаются и другие – кодирование длин серий (Run-Length Encoding) и преобразование Барроуза-Уилера (Burrows-Wheeler Transform).
Читать дальше →
Total votes 47: ↑45 and ↓2 +43
Views 89K
Comments 10

Методы сжатия данных

Algorithms *
Мы с моим научным руководителем готовим небольшую монографию по обработке изображений. Решил представить на суд хабрасообщества главу, посвящённую алгоритмам сжатия изображений. Так как в рамках одного поста целую главу уместить тяжело, решил разбить её на три поста:
1. Методы сжатия данных;
2. Сжатие изображений без потерь;
3. Сжатие изображений с потерями.
Ниже вы можете ознакомиться с первым постом серии.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 87K
Comments 19

GIF изнутри

Algorithms *Image processing *
Sandbox

Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

Структура GIF


Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.


Читать дальше →
Total votes 80: ↑74 and ↓6 +68
Views 49K
Comments 17

Дайджест от Omegicus: антиалиасинг шрифтов и библиотека шифрования и сжатия

Cryptography *Assembler *Algorithms *
Добрый день! В данный момент завершаю альфа-версию моей ОС (тыц), что будет — то будет, дальше пока нет возможности и времени ее делать, но до какого-то состояния ее доведу, о чем сообщу отдельным постом.

В принципе, в моем кодописании так или иначе всё вертится именно вокруг оси, т.е. ОСи. Иногда это выплевывается в отдельные микро-проекты, о которых сейчас и расскажу.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 1.6K
Comments 1

Как взломать дорогую камеру, чтобы вас не убила жена

Reverse engineering *Data compression *Photographic equipment CPU
Translation
Дисклеймер: исследование началось в 2013 году, так что если считаете некоторые методы глупыми и опасными — вы правы, так и было. Тем не менее, я многому научился в процессе.

Вступление
Всё началось за несколько месяцев до рождения моего первого ребёнка. Мы с женой всегда хотели купить крутой фотоаппарат Leica и вдруг поняли, что если не купим сейчас, то уже долго не сможем это сделать. Поэтому мы заказали камеру M240 и… бум, нас поставили в очередь на полгода. Вскоре мне надоело ждать, и я начал изучать их сайт. Моё внимание сразу привлёк раздел с файлами. Ну, вы можете догадаться, почему… Прошивки!

Я увидел незашифрованный и несжатый файл (m8-2_005.upd), который начинается с магии PWAD. Узнаёте? Да, всё правильно, это формат Doom Patch WAD. Кажется, ребята любят классику. Формат очень хорошо документирован, так что распарсить его оказалось совсем несложно.
Читать дальше →
Total votes 225: ↑222 and ↓3 +219
Views 69K
Comments 135

Сжатие данных LZW

OTUS corporate blog Algorithms *
Translation

Если бы вы взглянули почти на любой файл данных в компьютере, просматривая символ за символом, то наверняка обратили бы внимание на множество повторяющихся элементов. LZW — это метод сжатия данных, который воспользовался этим повторением. Оригинальная версия метода была создана Лемпелем и Зивом в 1978 году (LZ78) и доработана Уэлчем в 1984 году, отсюда и аббревиатура LZW (Lempel, Ziv and Welch). Как и в любом адаптивном/динамическом методе сжатия, идея заключается в том, чтобы (1) начать с исходной модели, (2) читать данные по частям, (3) обновлять модель и кодировать данные по мере продвижения. LZW — алгоритм сжатия на основе "словаря".

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

Читать далее
Total votes 16: ↑16 and ↓0 +16
Views 6.5K
Comments 5