Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

новый компрессор изображений


Страницы:   1 2

miek ©   (2004-10-12 21:50:00) 

Сваял сабж, работающий на новом (я о таком не слышал) принципе сжатия. Предназначен для картинок с малым количеством цветов и большими прямоугольными областями, заполненными одним цветом. Достоинство: пустые области любого (!) размера сжимает в 2 бита, компрессирует довольно быстро, а результат компрессии сам по себе является сжимаемым. Недостатки: не любит шумы (пикселы и диагональные линии). Сейчас погоняю его и выложу с исходниками.
Демо:   http://www.miek.narod.ru/bis.zip   [26 KB]

.баг-репорты принимаются.


miek   (2004-10-16 16:00:00) [1]

>И вобще пора бы расскрыть алгорим и идею сжатия.

Это не проблема.
http://www.miek.narod.ru/bis-source.zip

Исходники модуля, компресора и декомпрессора (сойдут за демки).


VMcL   (2004-10-16 13:54:00) [2]

> miek  (13.10.04 22:01) [16]

> Схемы, чертежи, диаграммы - придет в голову.

"Схемы, чертежи, диаграммы" обычно хранят в векторном формате.


Pavia   (2004-10-16 00:10:00) [3]

miek
Сделай возможность задание картики, как  24 бит 8бит грей 8бит словарь.Как и в других форматах.При таком раскладе обычные кодаки могут сжимать определенные картинки с удвоенным качеством сжатия.
И вобще пора бы расскрыть алгорим и идею сжатия.
> с максимальным сжатием
Насколько помню, когда пробовал сжимати архиватором,выходило примерно одно и тоже по размеру, а время сжатия возрастало сильно.


miek   (2004-10-15 22:00:00) [4]

А она и так как зип сжимает, там же выходноы поток ZLIB-ом пакуется, с максимальным сжатием. Увы, за неограниченный коэффициент сжатия надо платить. Пока не вижу способа улучшить сжатие дальше.


Ландграф Павел   (2004-10-15 20:35:00) [5]

Потестировал с полноцветными 24b картинками, ну что сказать... опережает tga (без RLE сжатия) на пару тройку килобайт... Но вот только... А реальное применение твоей проги разве что для хранения маски... да и то где много прямоугольников=) Давай усовершенствуй ее, чтобы она как zip хотябы сжимала... иначе смысла ее использования нету...


Pavia   (2004-10-15 20:17:00) [6]


> Схемы, чертежи, диаграммы - придет в голову.
Извени но пока твоя программа сжатия показывает во всех трех случаях не удовлетворительный результат относительно PNG.
В качестве теста бролась часть Электронной схемы телевизора.И чертеж макета кораблика.Порядка 5-10 тыс пикселей в кводрате.
И простого графика взятого из экселя f=cos(x);
А вот зачем мне хранить картинки из одного-двух квадратов ума не приложу.Разве что коллекцию картин абстракционистов. (Черный квадрат Малевича)
Вывод: возможно надо пересмотреть формат хронения данных и сам алгоритм.


miek   (2004-10-15 18:11:00) [7]

Исправил ошибки, улучшил сжатие. Для тех, кто еще не осознал, проведем эксперимент:
создадим в Paint-е и пустых картинки размером 500х500, 1000х1000, 2000х2000. Сожмем BIS-ом и видим три одинаковых результата: 28 байт, 28 байт, 28 байт. Это и есть то, что я назвал неограниченным коэффициентом сжатия. Хоть 10000 давай ему, а результат будет один. Между прочим, PNG достигает насыщения (предельного сжатия) уже на 100х100, после чего его файл сам становится большим и рыхлым, сжимаемым.
Судя по моим замерам, больше всего времени занимает не собственно сжатие, а разбиение картинки на битовые плоскости и последующая склейка. Есть над чем работать.

p.s. Пустая картинка 5000х5000 ( 75 мегабайт) - только что проверил - сжимается в 30 байт.


Mihey_temporary   (2004-10-13 22:44:00) [8]


> Позор всем критикам!


Что ж, порадовал, действительно - твой формат лучше в данном случае. Респект.


miek   (2004-10-13 22:01:00) [9]

>Хранить изображение красного прямоугольника на белом фоне в файле наверное никому не придет в голову

Схемы, чертежи, диаграммы - придет в голову. Не только 24-битные картинки с фотокачеством есть в мире. GIF пока никто на помойку не выкидывает, yes?


Jel   (2004-10-13 20:05:00) [10]


> Позор всем критикам!

Позор так позор. :) Только позволь уточнить область практического применения твоего компрессора? Хранить изображение красного прямоугольника на белом фоне в файле наверное никому не придет в голову - его же можно отрисовать парой команд, а для сложных изображений, как ты сам признаешь, алгоритм пока неэффективен.


miek   (2004-10-13 19:46:00) [11]

Да, качать надо оттуда же:
http://www.miek.narod.ru/bis.zip

Там теперь две проги - компрессор и декомпрессор.


miek   (2004-10-13 19:44:00) [12]

Новая версия, с автоупаковкой. Демонстрирую _нереальную мощь_ BIS-а! Для теста создал 24-битную картинку размером 2048x2048, нарисовал в PAint-e закрашенный треугольник размером где-то 1/4 и такой же прямоугольник.
Результат превосходит все ожидания - сжатая картинка 180 байт (исходно 12 метров)! И PNG и GIF дают результат в 3-4 раза больше! Скорость, правда, не лучшая, сжимал порядка 40 секунд.

Позор всем критикам!

P.s. нет, не RLE. Я же сказал - алгоритм новый, не вейвлет и не фрактал.


Pavia   (2004-10-13 19:36:00) [13]


> 2P{avia: что значит плохо выводится?

Последнии(и не только он) столбец пиксели искожаються в выходном фаиле.И на форме полный. Несколько БМП не сжал, выдал ошибку.Раз говоришь, что поддается сжатию, значи твой алгоритм можно доработать.:).А пока сжатие отстоет от png.


VMcL   (2004-10-13 18:02:00) [14]

Sorry, за повторы - 500-я как всегда  :(


VMcL   (2004-10-13 18:01:00) [15]

>> miek  (12.10.04 21:50)

RLE?


VMcL   (2004-10-13 18:01:00) [16]

>> miek  (12.10.04 21:50)

RLE?


VMcL   (2004-10-13 18:00:00) [17]

>> miek  (12.10.04 21:50)

RLE?


Mihey_temporary   (2004-10-13 15:56:00) [18]


> GIF сжимает линейно, по строчкам, а BIS двумерный. К тому
> же GIF имеет предельно возможный коэфф. сжатия, а у меня
> он бесконечный. Пустую монохромную картинку - в несколько
> байт. Сравнивать надо не с GIF, он толька 256 цветов держит,
> а с PNG.


Не совсем понятно, как это соотносится с:

Предназначен для картинок с малым количеством цветов и большими прямоугольными областями, заполненными одним цветом.

Я в пайнте набросал на форму прямоугольников, где-то восьми цветов и сохранил как 24-bit'ное, естессно. В том то и прикол.


Sapersky   (2004-10-13 12:24:00) [19]

> К тому же выходной файл - он все еще неплохо сжимается.

Это как раз свидетельствует о низкой эффективности алгоритма компрессии.


Вот-вот. К тому же сжимаемость ухудшается, так что просто архиватором (zip) получается лучше.
Единственная картинка, которая у меня сжалась в 1.5 раза - это  спрайт от SpriteUtils... :) остальные получались больше.


Jel   (2004-10-13 11:29:00) [20]


> К тому же выходной файл - он все еще неплохо сжимается.

Это как раз свидетельствует о низкой эффективности алгоритма компрессии.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо