Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт ноя 21, 2017 10:15 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 17 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 8:24 pm 
Не в сети
Аватара пользователя

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


Вложения:
Original.png
Original.png [ 27.71 КБ | 2561 просмотр ]
Dither.7z [97.96 КБ]
79 скачиваний
Burkes.png
Burkes.png [ 8.75 КБ | 2561 просмотр ]
Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 8:30 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1069
Более наглядный пример:


Вложения:
Burkes.png
Burkes.png [ 107.42 КБ | 2560 просмотров ]
Original.jpg
Original.jpg [ 50.6 КБ | 2560 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 8:38 pm 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 8:49 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4226
Малополезно, однако выглядит клёво.

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 8:54 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 335
Нужно.

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Вт дек 11, 2012 9:01 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
Интересные алгоритмы, когда разгребусь с работой возможно добавлю эти функции в buf2d.
Скоро можно будет написать графический редактор с разными фильтрами.


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 12:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1069
dunkaist писал(а):
Нужно.

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

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 1:23 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Heavyiron писал(а):
Буду рад, если кому-нибудь код пригодится.
Мне уже пригодился:)
Изображение

Heavyiron, спасибо!

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


Вложения:
dither for imgF(asm + obj).7z [1.85 КБ]
78 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 1:41 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4226
Проверил, отлично работает.

Изображение

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 6:37 pm 
Не в сети

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 8:10 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1600
Heavyiron писал(а):
На SVN мне уже требуется функция восстановления пароля, давно ничего не заливал и уже успел потерять бумажку, на которой его записывал.

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Ср дек 12, 2012 8:20 pm 
Не в сети
Mentor
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Пт дек 14, 2012 8:00 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Heavyiron писал(а):
Почему 7-я функция выводит изображение снизу вверх справа налево, я не в курсе.
Это потому что данные изображения в файле так хранятся. Это можно определить по значению Height в структуре BITMAPINFOHEADER. Если файл с изображением содержит не зеркально отражённые данные, то в этом случае Height в BITMAPINFOHEADER записывается со знаком минус. Например, чтобы получить такое изображение в фотошопе надо при сохранении поставить флажок "flip row order".

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

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

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

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


Вложения:
Archive.7z [71.64 КБ]
68 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Пт дек 14, 2012 12:07 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4226
Значит нужно будет делать подменю, если фильтров станет много. Не раз виде такой пункт "Редкие фильтры" - в любом случае в 100 раз удобнее, чем загружать каждый по отдельности.

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

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


Вернуться к началу
 Заголовок сообщения: Re: Дизеринг на фасме
СообщениеДобавлено: Пт дек 14, 2012 9:19 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
rev 3105
добавил 3 алгоритма в библиотеку buf2d, сделал пример e8_filters, правда дату в заголовке не поменял на новую
0CodErr писал(а):
Я думаю, они больше пригодятся в libimg. Например при конвертировании в монохромное изображение. Полученная картинка будет более информативной.

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


Вложения:
Комментарий к файлу: алгоритмы Sierra lite и Burkes
dither.png
dither.png [ 62.74 КБ | 2354 просмотра ]
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 17 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB