Научный юмор –> Алгоритм сжатия изображений LenPEG

Что-то меня потянуло пораскапывать старые архивы, и нашел свой перевод очень бородатого прикола про сжатие изображений.

С тех пор вышла вторая и третья версии (тут), надо бы воскресить запись на русском.

LenPEG


Введение                          

LenPEG является новейшим алгоритмом сжатия изображений, оставляющим далеко позади все существующие и даже еще не изобретенные алгоритмы сжатия изображений.

Цели алгоритма

  • Достижение максимального коэффициента сжатия без потерь для тестовых изображений.
  • Сохранение поддержки предыдущих и будущих версий реализации алгоритмов сжатия изображений.

Основа алгоритма

Алгоритмы сжатия изображений традиционно апробируются и сравниваются на основе известного тестового изображения. Как известно, общепринятым стандартом в области цифровой обработки изображений является изображение «Lenna»

Классическое изображение Лены имеет размер 512x512 пикселей с тремя цветовыми каналами, каждый из которых содержит 8 бит данных на пиксель. Таким образом, изображение занимает  512*512*3*8 = 6’291’456 бит.

image001

 Описание алгоритма

Магическое число

Файлы LenPEG идентифицируются особой «магической» последовательностью битов в начале, что является стандартным для файлов с изображениями сжатыми при помощи различных алгоритмов. В данном случае возможны такие варианты числовой последовательности:

  • 0
    Данный файл является файлом LenPEG, при условии, что это единственный бит в файловом потоке.
  • 1<последовательность, идентифицирующая иной алгоритм сжатия>
    Данный файл является файлом, сжатым алгоритмом LenPEG , далее идет поток данных, кодирующий изображение другим способом.

Алгоритм компрессии

С целью достижения максимального коэффициента сжатия для изображений, LenPEG может использовать различные вспомогательные алгоритмы. Рассмотрим работу алгоритма LenPEG более подробно, используя блок схему.

 image002


Алгоритм декомпрессии

Для декомпрессии изображения, сжатого при помощи LenPEG, используется следующий алгоритм.

image003 

Анализ алгоритма

При использовании стандартного теста эффективности алгоритмов сжатия изображений (тестовое изображение 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.

Ссылки

  1. IEEE Professional Communication Society Newsletter Volume 45 №3, May/June 2001//ISSN 0143-433X   http://www.ieeepcs.org
  2. Playboy Magazine. November 1972
  3. 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/ – особенно впечатлил бюстгальтер - противогаз

------</Постовой>------

Видеопост –> IGUDESMAN & JOO

Про этих парней можно сказать: русский с китайцем – братья навек. Но для начала – анекдот, как мне кажется очень сильно “в тему”.0_3bf9c_ecf8a3b6_XLДа, извините, не русский, а еврей. Извините, не с китайцем, а с корейцем. Но, как говорится whats the difference. Все равно они – гении.

Они выступали в классических консерваториях и на стадионах. Они – звезды телевидения, а количество просмотров их Youtube-клипов зашкаливает за миллион. Они хотят сделать классическую музыку доступной любым аудиториям. И это у них получается.

Безумно смешно и очень профессионально. Я не могу описать это словами, это надо видеть. Встречайте Iguidesman and Joo:

------<Постовой [Как попасть?]>------

Андроид – лучший друг человека, и прочий вынос мозга здесь: http://institutrobotov.ru/

О пользе риталина - http://jana-djukova.livejournal.com/26014.html

Некто экранизировал на Processing  “Улитку на склоне” Стругацких. http://www.wired.com/beyond_the_beyond/2009/09/the-snail-on-the-slope-a-generative-science-fiction-movie/. Скорее конечно это постмодернистский прикол, но все равно примечательно.

------</Постовой>------