Можем ли мы выяснить разницу между двумя цветами RGb, чтобы определить третий цвет?

Смешиваются 2 цвета. Если у меня есть RGB для результирующего цвета и RGB для одного из смешанных цветов, то каким-то образом я мог бы вычислить второй цвет?

Я постараюсь наглядно объяснить то, что я пытаюсь сказать. Вот ссылка на flickr

http://www.flickr.com/photos/48150615@N08/4407414157

Я знаю, что средний круг имеет непрозрачность 20%.

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


person AK.    schedule 05.03.2010    source источник
comment
См. Также: stackoverflow.com/questions/2049230/convert- rgba-color-to-rgb   -  person amit    schedule 04.03.2010
comment
О чем ты говоришь? JPEG не делают прозрачности. Учитывая всего лишь пиксель в формате JPEG, невозможно вернуться назад и сказать, как он был составлен.   -  person nobody    schedule 04.03.2010
comment
Это правда. Однако, если я вижу изображение за прозрачным, то должен быть какой-то способ получить исходный цвет.   -  person AK.    schedule 05.03.2010
comment
Мы не сможем вам помочь, пока вы не разберетесь, как смешиваются цвета. Или, может быть, мы можем помочь вам выяснить, как смешиваются цвета, но тогда вам придется предоставить гораздо больше информации и пару примеров.   -  person AVB    schedule 05.03.2010
comment
хорошо, я добавил описание   -  person AK.    schedule 05.03.2010


Ответы (4)


если я правильно понял задачу ...

давай займемся школьной математикой

c - цвет исходного изображения, t - цвет прозрачного цвета, a (для альфа-канала) - прозрачность, c '- цвет результата.

c' = (1 - a) * t + a * c

вы хотите найти c.

c = (c' - (1 - a) * t) / a

вам нужно знать а, т и с '

person Andrey    schedule 04.03.2010
comment
Итак, допустим, что это значения: RGB прозрачного цвета: 153 153 153; Альфа для прозрачного цвета: 20% (нормальный); Цветовой результат RGB: 159 78 57; тогда какой был бы первоначальный цвет? - person AK.; 04.03.2010
comment
рассчитайте его для R, G и B независимо: для красного: c = (159 - (1 - 0,2) * 153) / 0,2 = 183 - person Andrey; 04.03.2010
comment
Я просто применил то же самое для изображения, созданного в фотошопе, но это не дает мне нужного цвета. Я делаю что-то неправильно? - person AK.; 04.03.2010

Во-первых, это зависит от того, как вы собираетесь их смешивать. То есть вы можете усреднить компоненты RGB (это означает синий (0,0,255) + желтый (255,255,0) == серый (128,128,128)), или вы можете работать с оттенками, насыщенностью и значением, что часто дает гораздо больше "ожидаемый" результат.

В любом случае, это простая математика:

  • если способ получить среднее значение C3 = (C1 + C2) / 2
  • тогда способ найти C2 - C2 = (C3 * 2) - C1
person nickf    schedule 05.03.2010

Цветовое пространство CIELAB специально разработано для вычисления различий между цветами, но в вашем случае это может оказаться излишним. Наверное, HSV - легкое решение для вас.

person Ross    schedule 15.03.2010

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

person David Pfeffer    schedule 05.03.2010
comment
Компоненты из результата минус компоненты из первого оригинала. - person David Pfeffer; 05.03.2010
comment
вы можете привести мне пример? Я имею в виду, что я уже пробовал это, но это не работает. - person AK.; 05.03.2010