Как преобразовать значения RGB в интенсивность

Я сделал цветовой датчик arduino с tcs3200 и arduino uno. Я закодировал arduino так, чтобы он находил значения RGB, когда помещал цветную бумагу под датчик. Как я могу получить интенсивность, используя значения RGB.

, 👍2

Обсуждение

Как вы определяете "интенсивность"?, @Majenko


2 ответа


1

Нет простого способа получить формулу от значений RGB до интенсивности. Кроме того, существует интенсивность, которую можно измерить с помощью измерителя интенсивности/датчика, но то, что люди (люди или каждый человек) считают большей интенсивностью (воспринимаемой интенсивностью), не полностью связано.

Тем не менее, некоторые вещи, которые я обнаружил, когда у меня возникла аналогичная проблема:

  • Обычно значение светодиода 0 выключено, 1 светит немного и 255 много. Однако разница в (воспринимаемой) интенсивности между значениями 1 и 10 намного выше, чем, например, между 100 и 255.
  • Кроме того, каждый цвет светодиода имеет разную интенсивность, например, красный кажется более ярким, чем синий или зеленый, с тем же значением R, G или B для светодиодов DMX, которые у меня есть, как видно из приведенных ниже замечаний Данкана С и Мадженко, красный менее яркий, чем другие.
  • Кроме того, это, вероятно, зависит от физического устройства (у него может быть внутренний алгоритм для преобразования значения RGB в некоторую мощность, подаваемую на светодиоды).

Что вы можете сделать, так это измерить каждое значение и окрасить интенсивность с помощью измерителя интенсивности или датчика. Или, в случае, если вас больше интересует воспринимаемая интенсивность, вручную проверьте два светодиода со значениями и создайте свой собственный алгоритм интенсивности.

В итоге у меня получилось 3 массива (для R, G, B), для каждого значения от 0 до 255 значение "интенсивность". Я сделал это частично путем измерения, частично путем проверки вручную.

,

Красный кажется более ярким?!? Это звучит неправильно. Зрительная система человека наиболее чувствительна к зеленому свету. Красные и синие длины волн гораздо менее заметны при одинаковой интенсивности., @Duncan C

Красный цвет используется для ночного освещения, так как глаза менее чувствительны к нему и не вызывает сужения радужной оболочки, что ухудшает ваше ночное зрение. Зеленый цвет используется для ночного видения, потому что глаза более чувствительны к нему., @Majenko

Возможно, в "моем" китайском DMX-светильнике уже есть какой-то алгоритм внутри, потому что красный цвет более яркий, чем другие, но в целом это не так. Я изменю свой ответ, @Michel Keijzers

@Majenko: красный цвет используется для ночного освещения, потому что клетки L-конуса сетчатки чувствительны к нему, в то время как палочки-нет. Стержни отвечают за ночное зрение, и, поскольку они не могут видеть красный свет, этот свет им не мешает., @Edgar Bonet

@MichelKeijzers, Это, вероятно, больше связано с линзами, чем с яркостью., @Majenko

@EdgarBonet слишком техничен..., @Majenko

@Majenko Может быть правдой ... в любом случае, я сделал эти таблицы RGB, чтобы улучшить яркость (по моему мнению)., @Michel Keijzers


2

Я помню формулу, которая вычисляла яркость (воспринимаемую яркость), используя простые веса, применяемые к значениям красного, зеленого и синего в источнике света.

Эта формула учитывает тот факт, что человеческий глаз наиболее чувствителен к зеленому свету и наименее чувствителен к голубому свету.

В Вики-статье,посвященной ВПГ/ВПГ, приводятся эти различные взвешивания для R, G и B. (Во всех следующих случаях Y' - это вычисленное значение яркости).

Y' = 0.2989 • R + 0.5870 • G + 0.1140 • B
Y' = 0.2120 • R + 0.7010 • G + 0.0870 • B
Y' = 0.2126 • R + 0.7152 • G + 0.0722 • B
Y' = 0.2627 • R + 0.6780 • G + 0.0593 • B

Все они весят зеленого цвета больше, чем остальные 2. Я недостаточно внимательно прочитал статью, чтобы понять различные веса различных формул. Возможно, они преобразуют цвета, используя различные цветовые модели, такие как Adobe RGB и sRGB.

Смотрите ссылку по адресу https://en.wikipedia.org/wiki/HSL_and_HSV для получения дополнительной информации.

,