Алгоритм смешивания цветов @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 36 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Заголовок сообщения: Алгоритм смешивания цветов
Сообщение Добавлено: 2 Май 2007, 10:41:20 
Кто-нибудь сталкивался с программным алгоритмом смешивания цветов? Нужна полная имитация палитры с реальными красками.
Гуглю параллельно, но ничего толкового пока не нашел :insane:

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 11:24:49 
Мсье когда-нибудь смешивал на палитре реальные краски?
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 12:06:09 
Crazy, да, лет 10 подряд смешивал :)

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 12:13:39 
И как, есть разница, какие именно краски (какого производителя) смешивать?
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 14:11:40 
На палитре с красками нет цифровых значений, каким образом можно смешивать цвета с таким же эффектом?

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 14:25:57 
bleep, ты не ответил на вопрос. Но для экономии времени -- кратко: поскольку результат смешивания реальных красок зависит от сочетания конкретных красок конкретных производителей, то никакого алгоритма здесь нет и быть не может. Можно провести серию экспериментов и использовать интерполяцию для промежуточных значений, но ввиду огромного объема работы практической пользы я в этом не вижу.

Так что полного соответствия реальному смешиванию ты не получишь. Можно получить более-менее внятную имитацию, представив каждую краску как набор субтрактивных пигментов и смешивание тупо реализовывать усреднением. Но здесь встанет проблема получения исходных данных.

Соответственно, вопрос: чего ты хочешь на самом деле?
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 14:42:43 
А, вот ты о чем :)
Более-менее внятной имитации мне бы хватило. А смешивать тупо усреднением каких значений?

_________________
С наилучшими,
Алексей.
ziv Муж.
соучастник
16
Сообщения: 862
Зарегистрирован: 16.04.01
Сообщение Добавлено: 2 Май 2007, 14:43:31 
bleep, да программ то полно по колору, я как то раз в магазине устанавливал, так там всякие поправки вводятся по производителям и даже марке краски. Вообщем мудреная прога была, всю краску в магазине перевел пока разобрался :laugh:
Может в этом направлении стоит поискать?
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 14:45:26 

bleep писал(а):
А смешивать тупо усреднением каких значений?



Количества пигментов в смешиваемых красках.
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 14:53:35 

ziv писал(а):
bleep, да программ то полно по колору, я как то раз в магазине устанавливал, так там всякие поправки вводятся по производителям и даже марке краски. Вообщем мудреная прога была, всю краску в магазине перевел пока разобрался :laugh:
Может в этом направлении стоит поискать?


Мне бы найти описание конкретного алгоритма смешивания цветов цифрами... Программу то не расковыряешь, чтобы решение в веб перенести :(


Crazy писал(а):
Количества пигментов в смешиваемых красках.


Так :) А как узнать количество пигментов цветов исходя из его значения в RGB?

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 14:56:05 

bleep писал(а):

Crazy писал(а):
Количества пигментов в смешиваемых красках.


Так :) А как узнать количество пигментов цветов исходя из его значения в RGB?



Никак.

Впрочем, можно по-тупому перевести в CMYK (пользуясь тем фактом, что алгоритм такого перевода известен) и использовать эти коэффициенты. Это будет работать, но совсем грубо. Но не могу исключить того, что эта степень точности тебя устроит.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 14:57:23 

bleep писал(а):
Мне бы найти описание конкретного алгоритма смешивания цветов цифрами... Программу то не расковыряешь, чтобы решение в веб перенести :(



Предположим, есть у тебя этот алгоритм. И каждая краска в нем кодируется 10 коэффициентами a1..a10. Где ты их собираешься получить? :)
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 15:00:27 

Crazy писал(а):
Впрочем, можно по-тупому перевести в CMYK (пользуясь тем фактом, что алгоритм такого перевода известен) и использовать эти коэффициенты. Это будет работать, но совсем грубо. Но не могу исключить того, что эта степень точности тебя устроит.


Если складывать cmyk, то цвет будет стремиться к черному, т.е. желтый в сумме с синим даст почти черный, а не зеленый, как на палитре :) Если брать средние значения, соответственно, будет получаться серый...


Crazy писал(а):
Предположим, есть у тебя этот алгоритм. И каждая краска в нем кодируется 10 коэффициентами a1..a10. Где ты их собираешься получить? :)


Вот, в этом и проблема... Вообще, расчитываю найти готовое решение (формулу). Почему-то думается, что это кому-то было надо до меня :)

_________________
С наилучшими,
Алексей.
ziv Муж.
соучастник
16
Сообщения: 862
Зарегистрирован: 16.04.01
Сообщение Добавлено: 2 Май 2007, 15:06:26 
http://pmg.org.ru/galaxy2d/pallete.htm
Может что поможет
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 15:06:28 
bleep, еще раз: формула тебя не спасет, поскольку у тебя все равно нет исходных данных для этой формулы.
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 15:09:41 

Crazy писал(а):
bleep, еще раз: формула тебя не спасет, поскольку у тебя все равно нет исходных данных для этой формулы.


Каких данных?

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 15:15:38 
bleep, a1..a10.
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 15:17:11 
Crazy, Эээ... я расчитываю, что уже есть формула, которая оперирует значениями цветов в RGB и позволяет их смешивать.

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 15:18:56 
bleep, а вот такой формулы быть не может. Если ты искал именно ее -- можешь поиски на этом закончить.
SG_standard Муж.
постоянный участник
59
Сообщения: 4078
Зарегистрирован: 17.11.06
Откуда: СПб-сити
Сообщение Добавлено: 2 Май 2007, 15:28:21 

Цитата:
Если складывать cmyk, то цвет будет стремиться к черному, т.е. желтый в сумме с синим даст почти черный,


Wow!!! :eek: некисло!

_________________
Пожуй добра!
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 15:34:02 
Crazy, почему? :)

_________________
С наилучшими,
Алексей.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 15:37:03 
Потому, что у нас не 4 компонента CMYK, а сотни различных пигментов. Соответственно, могут существовать тысячи комбинаций, дающие на выходе один и тот же RGB-цвет. При этом с точки зрения смешивания с другими красками эти цвета не эквивалентны друг другу.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 15:50:59 
BTW, если мы говорим о совершенно асбтрактных красках, то можно поиграть так: работать в системе HSB и при смешивании 2 тонов на выходе выдавать тон, лежащий на colorwheel посредине между ними. :) Компоненты S и B имитировать белой и черной краской (при смешивании брать среднее).

Врать будет сильно и не будет иметь отношения к реальным краскам. Но при сложении желтого с синим даст зеленый. :)
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 2 Май 2007, 15:58:44 

Crazy писал(а):
BTW, если мы говорим о совершенно асбтрактных красках, то можно поиграть так: работать в системе HSB и при смешивании 2 тонов на выходе выдавать тон, лежащий на colorwheel посредине между ними. :) Компоненты S и B имитировать белой и черной краской (при смешивании брать среднее).
Врать будет сильно и не будет иметь отношения к реальным краскам. Но при сложении желтого с синим даст зеленый. :)


Пробовал. Остановился, когда понял, что сложение синего с зеленым даст голубой :)

_________________
С наилучшими,
Алексей.
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 2 Май 2007, 18:29:44 
Перейдем таки к цифре.
Какой именно алгоритм нужен - CMYK или RGB?
Проще говоря, субтрактивное или аддитивное смешение?
Что с счем смешивать собрались, если это не коммерческая тайна? :)

З.Ы. Вообще-то тут все довольно просто...

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 2 Май 2007, 19:12:38 
Бaзиль, нужен алгоритм, по которому смешиваются, к примеру, масляные краски. Ты топик читать не пробовал? :)
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 2 Май 2007, 22:37:09 
bleep, А какая конечная цель ? создать полноцветную палитру для выбора цвета фона? :)
Тогда можно и нужно использовать flash8 , там есть средства для реализации такой простой идеи.
Там-же, кстати, можно попробовать ээ.. "смешать" краски по стандартным фотошопским режимам (overlay, multiply и т.д.)
Если же цель посерьёзней то опять без флеша не обойтись :)
Можно взять два цвета: 255.0.0 + 255.255.128 = 255.128.0
(100% красный + 50% жёлтый смешали на белом фоне, получился оранжевый)

_________________
можно на ТЫ.
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 3 Май 2007, 10:55:52 

Бaзиль писал(а):
Перейдем таки к цифре.
Какой именно алгоритм нужен - CMYK или RGB?
Проще говоря, субтрактивное или аддитивное смешение?


Не важно какие исходные данные, нужно просто суметь имитировать палитру. Ткнул два раза в желтый, один раз в синий — получил жетло-зеленый.


Бaзиль писал(а):
З.Ы. Вообще-то тут все довольно просто...


Рад слышать :)

_________________
С наилучшими,
Алексей.
bleep Муж.
соучастник
6
Сообщения: 364
Зарегистрирован: 30.09.04
Откуда: msk
Сообщение Добавлено: 3 Май 2007, 11:01:07 

bE(o0L писал(а):
bleep, А какая конечная цель ? создать полноцветную палитру для выбора цвета фона? :)
Тогда можно и нужно использовать flash8 , там есть средства для реализации такой простой идеи.


А можно поподробнее?


bE(o0L писал(а):
Там-же, кстати, можно попробовать ээ.. "смешать" краски по стандартным фотошопским режимам (overlay, multiply и т.д.)


Ни один фотошоповский режим наложения не имитирует смешивание реальных красок.


bE(o0L писал(а):
Если же цель посерьёзней то опять без флеша не обойтись :)
Можно взять два цвета: 255.0.0 + 255.255.128 = 255.128.0
(100% красный + 50% жёлтый смешали на белом фоне, получился оранжевый)


Но 0.0.255 + 255.255.0 = 255.255.255
(если смешать синий с желтым получится зеленый, а не белый)

_________________
С наилучшими,
Алексей.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 12 Май 2007, 01:07:41 
Припозднился я. :D


Цитата:
0.0.255 + 255.255.0 = 255.255.255

вот это вот ты откуда придумал? =)
--

Цитата:
Ни один фотошоповский режим наложения не имитирует смешивание реальных красок.

ну значит в фотошопе картину нарисовать принципиально не возможно =)
--


Цитата:
А можно поподробнее?

подробнее в соответствующем разделе, в принципе. Если в двух словах то берёшь стандартную палитру (можно print screen c любого графического редактора), создаешь битмап, далее через .getPixel() узнаешь цвет, в который тычешь.

_________________
можно на ТЫ.
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 12 Май 2007, 14:48:50 

Цитата:
0.0.255 + 255.255.0 = 255.255.255



Если смешать синий и желтый, то получится белый. Не путайте понятия цвет и свет.

Если смешивать по CMYK, получится:

255.0.0.0 (синий) + 0.0.255.0 (желтый) = 255.0.255.0 (зеленый)

В модели RGB смешение светов аддитивное (т.е. при увеличении значения итог получается светлее), а в модели CMYK - субтрактивное. При увеличении цвет становится темнее.

bleep, мешай в CMYK. А еще лучше - в CMY.

КАК.

Просто: RGB(a,b,c) = CMY(255-a,255-b,255-c)

Т.е. 255.255.255 - это черный. Кстати, если взять краски Cyan, Magenta и Yellow (в наборах Ferrario они есть), то при смешении получится черный. Проблема в другом - пропорции не 1/1/1, а несколько другие (совсем немножко прибаить к одному, убавить от другого...), но это уже вопрос цветокоррекции и восприятии цвета человеческим глазом. В теории все так, как я описал.

Кстати, есть такое понятие, как нормализация. Если смешиваешь , к примеру, 200,50,0 с 200,100,30 то получится сначала 400,150,30 - нельзя ни в коем случае "обрезать" до 255 - это только для RGB. С модели CMY надо пропорционально уменьшать:

из 400, 150, 30 получится:
255 (максимум), 96 (255*150 / 400), 19 (255*30 / 400)

Просто если к белому свету добавить еще, например, красный луч, то он от этого темнее не станет (станется белым - по нашему восприятию), а если к черной краске добавить синюю, то она 100% станет светлее (синее), отсюда и нормализация.

При работе со смешиванием RGB (аддитивным) нормализация не пройдет, надо "срезать" до 255.

Кстати, если уж пошла об этом речь, то фотошоп при субтрактивном смешении "срезает" цвета. Хотя кто знает, может это в данном случае и првильно. Но для красок - однозначно нормализировать.

Если не хочется терять точности пропорций, советую использовать не один байт для каждого цвета, а, например, два (16 бит). Можно и больше, но надо таки задумываться о системных ресурсах относительно человеческих восприятий ;)

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!


Последний раз редактировалось Бaзиль 13 Май 2007, 00:45:44, всего редактировалось 2 раз(а).
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 12 Май 2007, 15:05:45 
З.Ы. В природе нет абсолютно черного. Так же, как и в красках. Поэтому модель CMY наиболее применима к краскам.

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
asquared
новый человек
0
Сообщения: 1
Зарегистрирован: 09.08.08
Сообщение Добавлено: 10 Август 2008, 00:04:29 
Бaзиль,
Если я все правильно понял, то вернее не нормализовывать CMYK, а брать его изначально в процентах, которые показывают содержание определенной краски в данном цвете, складывать, и при этом понимать, что количество получившейся краски в два раза больше. По материалу: http://www.colorcube.com/articles/math/math.htm
Как считаете?
tentoys Муж.
постоянный участник
121
Сообщения: 2940
Зарегистрирован: 06.08.02
Откуда: МКАДонутряк
Сообщение Добавлено: 10 Август 2008, 21:02:13 
У меня 255.0.0 + 0.255.255 опасити 50% дали на выходе в фотошопе 204.51.51 как-то так :)

_________________
Keep in touch. Andrey Alexeev.
ananas
новый человек
0
Сообщения: 2
Зарегистрирован: 18.01.02
Заголовок сообщения: .
Сообщение Добавлено: 11 Август 2008, 15:26:14 
. :gent:
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 36 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100