![]() |
|
![]() ![]() ![]() |
|
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Нужно конвертировать точечный рисунок из 16 миллионов цветов в 256 с наименьшими потерями качества рисунка. Такая же задача из 256 цветов в 16. Есть ли какой-нибудь алгоритм?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
Что обозначает
как можно здесь сделать меньше или больше качество? ты все равно режешь цветность ! а алгоритм очень прост цвет 16 млн это 24 бита цветности, 8 бит красный , 8 бит зеленый , 8 бит синий, 256 цветов это 8 бит, и там делается через палитры цветов http://forum.vingrad.ru/index.php?showtopic=94227&hl= прочитай много интересного -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
от выбора цветов палитры качество очень даже зависит если, например, рисунок серый с вкраплениями красного, то и палитра должна состоять из градаций серого и красного а если отводить ещё цвета и на зелёный с синим, то количество уветов для серого и красного уменьшится и они будут переданы хуже, хотя ни синий, ни зелёный не используются думаю, для начала нужно построить диаграмму распределения цвета - кубик 256х256х256, заполненный действительными (ну или целыми) числами, а потом в нём расставлять 256 (или 16) точек кроме того нужно выбрать функцию определения степени различия двух цветов и собственн критерий оптимальности (либо минимум средней разницы, либо минимакс какой-нибудь) а дальше - самое интересное - алгоритм расстановки точек тут мыслей пока немного: перебор будет слишком долго возможно, удастся приспособить динамическое программирование но тут лучше сначала с критерием определиться, а потом уже дальше думать... -------------------- qqq |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Одним из лучших (и несложных в реализации) является алгоритм квантования цветов методом построения октанового дерева. Вкратце: на первом проходе все встреченные цвета помещаются в октановое дерево: корень - все RGB - пространство, имеет 8 потомков, где каждой представляет 1/8 RGB-пространства корня. Деление осуществляется разбиением корневого диапазона на 2 половины по каждой цветовой компоненте, т.е. решение принимается на основании очередного бита компоненты. Т.е. дерево теоретически имеет 9 уровней. Дерево (а не массив) используется потому, что позволяет боле просто ограничить размер дерева по мере его роста (т.к. полное RGB-дерево занимает безбну памяти): по дороге в каждом узле накапливается информация о числе "прошедших" через него пикселов. Когда дерево слишком разрастается, малозначительные ветви просто обрубаются (но огрубленная информация остается в их корнях). На втором проходе число листьев дерева сокращается до требуемого (256) тем же путем огрубления малозначительных ветвей. По оставшимся строится цветовая таблица.
Более подробное описание алгоритма есть в книгах по графике, например, у Фень Юаня. А может, и в Интернете найти можно. -------------------- ... |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Тут посмотри
http://forum.vingrad.ru/index.php?act=Sear...er&skipped= (короче по ключевому слову dither ищи)... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Да, у меня - 726,
Глава 13 Палитра, Квантование цветов -------------------- ... |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Помогите довести до ума.
Главный вопрос в том, как использовать эти классы (взял из книги). // строка 298 - работа с классом
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |