![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
новый компрессор изображений
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]
> К тому же выходной файл - он все еще неплохо сжимается.
Это как раз свидетельствует о низкой эффективности алгоритма компрессии.