Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
miek   (2004-10-12 21:50) [0]

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

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


 
Mihey_temporary ©   (2004-10-12 23:45) [1]


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


Почти GIF. Кстати, GIF сжимает сильнее. И быстрее.


 
Mihey_temporary ©   (2004-10-12 23:48) [2]

Не, действительно GIF сильнее. Попробуй: 300х300 красный прямоугольник на белом фоне - 10 Kb BIS и 1,7 Kb GIF.


 
Pavia   (2004-10-13 00:34) [3]

Формат Bmp-поддерживает несколько видов записи картинки в зависемости от глубены цвета.Плюс в bmp есть сжатие, но такие фаилы встречаються редка.Принцип сжатия, подрят идущии символы записываються, как один символ и числа повторений, если нет подрят идущих символов, то записываеться N число символов без сжатия.Плюс упровляющии символы.

Формат GIF.Использует LWZ сжатие.Принцип есть словарь.В словарарь заноситься элементы часто встричющиеся.Тоесть одним символом из словоря можно кодировать один элемент, причем элемент содержит несколько символов.

Замечание по праграмме. Выходные данные могут получиться, больше исходных.И картинка плохо ваводится. И так дале..


 
miek   (2004-10-13 08:17) [4]

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

Ты какую картинку сжимал, какая глубина цвета? Попробуй монохром. К тому же выходной файл - он все еще неплохо сжимается.

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


 
Jel ©   (2004-10-13 11:29) [5]


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

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


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

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

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


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


 
Mihey_temporary ©   (2004-10-13 15:56) [7]


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


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

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

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


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

>>miek  (12.10.04 21:50)

RLE?


 
VMcL ©   (2004-10-13 18:01) [9]

>>miek  (12.10.04 21:50)

RLE?


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

>>miek  (12.10.04 21:50)

RLE?


 
VMcL ©   (2004-10-13 18:02) [11]

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


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


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

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


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

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

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

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


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

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

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


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


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

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


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

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

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


 
Mihey_temporary ©   (2004-10-13 22:44) [17]


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


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


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

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

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


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


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


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

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


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

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


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

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


 
VMcL ©   (2004-10-16 13:54) [23]

>miek  (13.10.04 22:01) [16]

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

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


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

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

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

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



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.039 c
9-1095732632
Jus
2004-09-21 06:10
2005.01.23
Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX


1-1105599774
Zhekson
2005-01-13 10:02
2005.01.23
Как синхрониховать полосы прокрутки в двух StringGrid_ах?


1-1104992538
lightix
2005-01-06 09:22
2005.01.23
C++ Builder и Pascal


3-1103550189
/glokk
2004-12-20 16:43
2005.01.23
FIBPlus (backup/restore)


3-1103479113
SergP
2004-12-19 20:58
2005.01.23
SQL. Можно ли использ. знач. поля одной табл. как имя другой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский