Как преобразовать значения RGB в интенсивность
Я сделал цветовой датчик arduino с tcs3200 и arduino uno. Я закодировал arduino так, чтобы он находил значения RGB, когда помещал цветную бумагу под датчик. Как я могу получить интенсивность, используя значения RGB.
@Ash, 👍2
Обсуждение2 ответа
Нет простого способа получить формулу от значений 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
Я помню формулу, которая вычисляла яркость (воспринимаемую яркость), используя простые веса, применяемые к значениям красного, зеленого и синего в источнике света.
Эта формула учитывает тот факт, что человеческий глаз наиболее чувствителен к зеленому свету и наименее чувствителен к голубому свету.
В Вики-статье,посвященной ВПГ/ВПГ, приводятся эти различные взвешивания для 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 для получения дополнительной информации.
- Использование YS-IRTM с Arduino Uno
- Как считать показания датчика звука и включить датчик с датчиком воды, если показания выше порогового значения и при обнаружении воды в течение 2 минут?
- Датчики TFmini с Arduino
- Как отправить сообщение на мой телефон, что моя система Arduino включена при включении моего Arduino
- (Код ультразвукового датчика: такого файла или каталога нет)
- Несколько неблокирующих таймеров обратного отсчета?
- Датчик HC-SR505 PIR выдает только HIGH уровень
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
Как вы определяете "интенсивность"?, @Majenko