Что-то меня потянуло пораскапывать старые архивы, и нашел свой перевод очень бородатого прикола про сжатие изображений.
С тех пор вышла вторая и третья версии (тут), надо бы воскресить запись на русском.
LenPEG
Введение
LenPEG является новейшим алгоритмом сжатия изображений, оставляющим далеко позади все существующие и даже еще не изобретенные алгоритмы сжатия изображений.
Цели алгоритма
- Достижение максимального коэффициента сжатия без потерь для тестовых изображений.
- Сохранение поддержки предыдущих и будущих версий реализации алгоритмов сжатия изображений.
Основа алгоритма
Описание алгоритма
Магическое число
Файлы LenPEG идентифицируются особой «магической» последовательностью битов в начале, что является стандартным для файлов с изображениями сжатыми при помощи различных алгоритмов. В данном случае возможны такие варианты числовой последовательности:
- 0
Данный файл является файлом LenPEG, при условии, что это единственный бит в файловом потоке. - 1<последовательность, идентифицирующая иной алгоритм сжатия>
Данный файл является файлом, сжатым алгоритмом LenPEG , далее идет поток данных, кодирующий изображение другим способом.
Алгоритм компрессии
С целью достижения максимального коэффициента сжатия для изображений, LenPEG может использовать различные вспомогательные алгоритмы. Рассмотрим работу алгоритма LenPEG более подробно, используя блок схему.
Алгоритм декомпрессии
Для декомпрессии изображения, сжатого при помощи LenPEG, используется следующий алгоритм.
Анализ алгоритма
При использовании стандартного теста эффективности алгоритмов сжатия изображений (тестовое изображение Lenna) метод LenPEGпоказывает наивысшую степень сжатия среди существующих алгоритмов, поскольку результирующий файл имеет размер в 1 бит. Следовательно, коэффициент сжатия равен 6’291’456 к одному. Заметим также, что сжатие тестового изображения происходит без потерь.
На иных изображениях, как ясно видно из блок-схем, результат сжатия при помощи LenPEG будет всего на один бит больше, чем для самого лучшего из известных алгоритмов сжатия. Эта ничтожная разница в один бит, при современных размерах графических файлов в несколько мегабайт, не заслуживает никакого внимания.
Выводы
Итак, выводы очевидны. Алгоритм LenPEG является наиболее эффективным алгоритмом сжатия изображений и результат не может быть превзойден никакими иными методами. Характеристики алгоритма позволяют судить о его полном превосходстве над всеми прочими существующими и даже еще не придуманными алгоритмами сжатия изображений.
LenPEG v2
Трудно поверить, но Туомас Хиено усовершенствовал алгоритм LenPEG. Вот модифицированный алгоритм, предоставим слово автору.
Внимательно изучив алгоритм сжатия LenPEG, я могу сказать только, что он весьма далек от самого эффективного алгоритма сжатия изображений. В самом деле, он тратит целый бит на то, что могло бы быть представлено в куда более краткой форме, без такой чрезмерной расточительности трафика. Поэтому я предлагаю следующий, в бесконечное число раз более эффективный алгоритм.
Алгоритм сжатия изображений LenPEG 2 включает в себя следующие шаги:
1. Проверка, является ли это изображение тестовым изображением Lenna? Если да – записать пустой файл и выйти. Если нет – переход к следующему шагу.
2. Запросить у пользователя, каким методом сжимать изображение (GIF, JPEG, PNG) и т.д.
3. Использовать указанный алгоритм и сжать искомое изображение при помощи него.
Вывод на экран сжатого изображения может быть произведен при помощи следующего скрипта:
(grep "`./smr`" < input || cat lenna) | xv -
Другими словами, если магическая последовательность не найдена – то это изображение Lenna. Если нет – определяем магическую последовательность, затем алгоритм компрессии и используем соответствующий декомпрессор.
Легко видеть, что для стандартного тестового изображения новый алгоритм LenPEG 2 обладает бесконечно большей степенью сжатия, а конкретно 6’291’456 к нулю,вместо 6’291’456 к одному в предыдущей версии. К тому же получаемые сжатые изображения будут на один бит короче, чем в предыдущей версии.
LenPEG v3
(примечание переводчика: А за этот алгоритм сжатия изображений у нас в стране, разработчика могут и посадить, по статьям 273 и 274. Но в идее заложен глубокий потенциал, так что его можно и нужно переработать)
Автор первоначального алгоритма разработал Версию 3, которая предоставляет еще большую степень сжатия, отрицательную. Это воистину непобедимый алгоритм.
При получении на входе изображения, алгоритм LenPEG 3 выполняет следующие шаги
1. Это тестовое изображение Lenna? Если да, то удаляем все данные на компьютере. Если нет – переходим к следующему шагу.
2. Запросить у пользователя, каким методом сжимать изображение (GIF, JPEG, PNG) и т.д.
3. Использовать указанный алгоритм и сжать искомое изображение при помощи него. Затем удалить остальную информацию с компьютера.
Чтобы показать изображение декомпрессор использует следующие шаги
1. Если на компьютере нет никаких данных – показываем изображение Lenna.
2. Если на компьютере есть файл с магической последовательностью, применяем к нему соответствующий декодер и показываем результат.
Для стандартного тестового изображения LenPEG 3 сжимает его настолько эффективно, что место на носителе даже освобождается. Точную степень сжатия невозможно посчитать, ибо она зависит от аппаратных характеристик машины, на которой выполняется LenPEG 3. Но, естественно она всегда будет превосходить LenPEG 2, поскольку освобождается место занимаемое и операционной системой, и самой реализацией алгоритма LenPEG 3.
Ссылки
- IEEE Professional Communication Society Newsletter Volume 45 №3, May/June 2001//ISSN 0143-433X http://www.ieeepcs.org
- Playboy Magazine. November 1972
- www.lenna.org
© http://www.dangermouse.net/esoteric/lenpeg.html, вольный перевод – Назаровский Александр.
------<Постовой [Как попасть?]>------
Lego Augmented Reality - http://www.youtube.com/watch?v=PGu0N3eL2D0
Техника “помидора” для управления временем - The Pomodoro Technique - http://www.pomodorotechnique.com/
Лауреаты Шнобелевской премии http://lenta.ru/articles/2009/10/02/ignobel/ – особенно впечатлил бюстгальтер - противогаз
------</Постовой>------
0 коммент.:
Отправить комментарий