Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Aug 24, 2019 2:39 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Tue Dec 11, 2012 8:24 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
Как-то давным давно наткнулся на интересые картинки, которые выглядят как полноцветные, а состоят всего из 8 цветов. Начал копать и наваял простенькую процедуру на fasm-е, которая умеет делать из 24-бит картинок 8-цветные. Плюс немного поэкспериментировал с алгоритмами. Во вложении 3 програмки, которые демонстрируют 3 алгоритма: Sierra lite, Floyd-Steinberg и Burkes. Первый самый быстрый, третий - самый качественный, но вдвое медленней, чем Sierra. Floyd-Steinberg где-то посередине между ними по скорости и качеству.
Не без помощи diamond-a процедура была оптимизирована. В принципе код писался для возможного улучшения качества картинки на ega/vga разрешениях. Но теперь такое оборудование уже разве что в музеях. Потому может сгодится для чего другого (графические редакторы, например).
Для примера взял файл из википедии, но bmp может быть любым 24-битным (правда его надо отразить по диагонали - такая уж особенность у функции вывода картинки в колибри). Программы простенькие, потому выделение памяти идет вручную и если будет желание потестировать на больших bmp, значение памяти для программы надо будет увеличить.


Attachments:
Original.png
Original.png [ 27.71 KiB | Viewed 4074 times ]
Dither.7z [97.96 KiB]
Downloaded 146 times
Burkes.png
Burkes.png [ 8.75 KiB | Viewed 4074 times ]
Top
   
PostPosted: Tue Dec 11, 2012 8:30 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
Более наглядный пример:


Attachments:
Burkes.png
Burkes.png [ 107.42 KiB | Viewed 4073 times ]
Original.jpg
Original.jpg [ 50.6 KiB | Viewed 4073 times ]
Top
   
PostPosted: Tue Dec 11, 2012 8:38 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Ох, видимо, программы не очень новые?:)
В любом случае, очень полезные модули для редактора могут быть.


Top
   
PostPosted: Tue Dec 11, 2012 8:49 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Малополезно, однако выглядит клёво.

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Dec 11, 2012 8:54 pm 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 421
Нужно.

Требование отразить картинку, правда, доставляет неудобства.

Залей код на svn, пожалуйста. И так уже часто приходится бродить по форуму в поисках нужной картинки или кода.


Top
   
PostPosted: Tue Dec 11, 2012 9:01 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Интересные алгоритмы, когда разгребусь с работой возможно добавлю эти функции в buf2d.
Скоро можно будет написать графический редактор с разными фильтрами.


Top
   
PostPosted: Wed Dec 12, 2012 12:57 pm 
Offline
User avatar

Joined: Fri Jan 27, 2006 3:06 pm
Posts: 1071
dunkaist wrote:
Нужно.

Требование отразить картинку, правда, доставляет неудобства.

Залей код на svn, пожалуйста. И так уже часто приходится бродить по форуму в поисках нужной картинки или кода.

На SVN мне уже требуется функция восстановления пароля, давно ничего не заливал и уже успел потерять бумажку, на которой его записывал.
Насчет отражения - даже не знаю. Просто пошел пока самым простым путем - зашиваю в программу уже подготовленный BMP, процедура его обрабатывает и тут же выводится выводится 7-й функцией. Исходное изображение затирается, дополнительный буфер не используется. Почему 7-я функция выводит изображение снизу вверх справа налево, я не в курсе.
IgorA wrote:
Интересные алгоритмы, когда разгребусь с работой возможно добавлю эти функции в buf2d.
Скоро можно будет написать графический редактор с разными фильтрами.

Буду рад, если кому-нибудь код пригодится.


Top
   
PostPosted: Wed Dec 12, 2012 1:23 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Heavyiron wrote:
Буду рад, если кому-нибудь код пригодится.
Мне уже пригодился:)
Image

Heavyiron, спасибо!

В архиве фильтр, который я попытался прикрутить к своей imgF — вроде работает.


Attachments:
dither for imgF(asm + obj).7z [1.85 KiB]
Downloaded 144 times
Top
   
PostPosted: Wed Dec 12, 2012 1:41 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Проверил, отлично работает.

Image

0CodErr
Можешь выложить последнюю версию ImgF с этим встроенным фильтром, неудобно каждый раз Browse нажимать, да и мало кто будет знать, что он там есть.
Я хочу добавить программу в автосборку.

_________________
Через тернии к звездам


Top
   
PostPosted: Wed Dec 12, 2012 6:37 pm 
Offline

Joined: Sat Dec 08, 2012 8:45 pm
Posts: 62
Heavyiron wrote:
Насчет отражения - даже не знаю. Просто пошел пока самым простым путем - зашиваю в программу уже подготовленный BMP, процедура его обрабатывает и тут же выводится выводится 7-й функцией. Исходное изображение затирается, дополнительный буфер не используется. Почему 7-я функция выводит изображение снизу вверх справа налево, я не в курсе.

Если я правильно понимаю - особенность bmp'шек. там вроде где-то в заголовке записанно в каком порядке идут значения, каждый редактор ставит по-своему. К примеру я тут недавно выводил через эту же функцию bmp созданный в пэинте на семёрке, у меня отображалось перевёрнуто по вертикали, а не по диагонали.

_________________
Муравьиным спиртом советую натереть!


Top
   
PostPosted: Wed Dec 12, 2012 8:10 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
Heavyiron wrote:
На SVN мне уже требуется функция восстановления пароля, давно ничего не заливал и уже успел потерять бумажку, на которой его записывал.

Загляни в личку.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Wed Dec 12, 2012 8:20 pm 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 421
Heavyiron wrote:
Насчет отражения - даже не знаю. Просто пошел пока самым простым путем - зашиваю в программу уже подготовленный BMP, процедура его обрабатывает и тут же выводится выводится 7-й функцией.
Я наивно предположил, что используется libimg. А в твоём случае, похоже, srx прав: в bmp изображение зачастую хранится снизу вверх. Использовать bmp в качестве raw не лучшая идея, я сам на это напарывался.

Вообще, если встречаетесь с изображениями, которые неправильно отображаются (или не открываются совсем) в kiv -- не поленитесь прикрепить их в соответствующую тему. Спасибо.


Top
   
PostPosted: Fri Dec 14, 2012 8:00 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Heavyiron wrote:
Почему 7-я функция выводит изображение снизу вверх справа налево, я не в курсе.
Это потому что данные изображения в файле так хранятся. Это можно определить по значению Height в структуре BITMAPINFOHEADER. Если файл с изображением содержит не зеркально отражённые данные, то в этом случае Height в BITMAPINFOHEADER записывается со знаком минус. Например, чтобы получить такое изображение в фотошопе надо при сохранении поставить флажок "flip row order".

На некоторых изображениях тот фильтр вылетает. Пример такого изображения в архиве.

IgorA wrote:
...возможно добавлю эти функции в buf2d.
Я думаю, они больше пригодятся в libimg. Например при конвертировании в монохромное изображение. Полученная картинка будет более информативной.

Leency wrote:
Можешь выложить последнюю версию ImgF с этим встроенным фильтром, неудобно каждый раз Browse нажимать, да и мало кто будет знать, что он там есть.

Я же наоборот хотел оставить в меню только часто используемые. Если со временем фильтров будет много, то они просто не поместятся все в меню. Неудобно — это да, ну можно, например, их загружать в меню при запуске, только будет не рационально грузить их все.
Можно временно добавить дизеринг непосредственно в саму программу. Там в архиве было 3 алгоритма — все три добавить?


Attachments:
Archive.7z [71.64 KiB]
Downloaded 135 times
Top
   
PostPosted: Fri Dec 14, 2012 12:07 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5054
Значит нужно будет делать подменю, если фильтров станет много. Не раз виде такой пункт "Редкие фильтры" - в любом случае в 100 раз удобнее, чем загружать каждый по отдельности.

>Там в архиве было 3 алгоритма — все три добавить?
Если они делают одно и то же, то лучше выбрать оптимальный. Или опять же подменю.

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Dec 14, 2012 9:19 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
rev 3105
добавил 3 алгоритма в библиотеку buf2d, сделал пример e8_filters, правда дату в заголовке не поменял на новую
0CodErr wrote:
Я думаю, они больше пригодятся в libimg. Например при конвертировании в монохромное изображение. Полученная картинка будет более информативной.

может быть там они и нужнее, но в случае чего убрать всегда легче чем добавить


Attachments:
File comment: алгоритмы Sierra lite и Burkes
dither.png
dither.png [ 62.74 KiB | Viewed 3867 times ]
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited