Интенсивность цвета с использованием средних значений RGB - PullRequest
0 голосов
/ 04 апреля 2019

Я работаю над проектом, в котором мне нужно рассчитать градиент цвета на разных полосках бумаги.Я использовал приложение RGB Color Detector (доступно в Google PlayStore) для получения значений RGB.Теперь, чтобы построить это, я просто усредняю ​​значения RGB: (R + G + B) / 3 и получу единичные значения в виде интенсивности.Можно ли его использовать или я должен использовать другие методы для получения одного значения интенсивности.

Получаемый мной градиент цвета варьируется от темно-желтого до белого.Изменение цвета бумаги происходит с увеличением концентрации используемого химического вещества.[Химикаты не могут быть раскрыты, извините]

1 Ответ

0 голосов
/ 26 мая 2019

(R + G + B) / 3 ПЛОХО, СПЕКТРАЛЬНЫЙ ВЕС ХОРОШО

(R + G + B) / 3 - неправильная математика почти для каждого использования. Он используется как часть элемента управления «HSI» для установки цветов, но этот элемент управления далек от однородности восприятия.

Правильная математика довольно проста - но так как вы не четко определили, что вам нужно или пытаетесь сделать, трудно угадать лучший подход для вас.

Я сделаю некоторые предположения. Похоже, вы сканируете какие-то лакмусовые полоски и пытаетесь перевести данные в какую-то полезную форму с точки зрения того, насколько темными они становятся от определенной химической концентрации.

Также звучит так, как будто вы ищете какие-то абсолютные значения, в отличие от различий между полосами А и полосой B. Математическая разница в цвете немного отличается от некоторой более абсолютной меры.

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

CAPTURE

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

КОМНАТНЫЙ ЦВЕТ В идеале это означает, что комната окрашена в плоский или матово-нейтральный серый цвет около 20 LRV, например, это Glidden:

GREY CHIP

ПОСТОЯННОЕ ОСВЕЩЕНИЕ Тогда вы хотите, чтобы рассеянный свет блокировался из комнаты или, по крайней мере, в области измерения. НЕТ ЕСТЕСТВЕННОГО СВЕТА !! В идеале у вас будет откалиброванный источник света, но, по крайней мере, что-то будет соответствовать высокому CRI.

ПОСЛЕДОВАТЕЛЬНАЯ ОБРАЗЦЫ ОБРАЗЦОВ Свет должен находиться на одинаковом расстоянии от поверхности образца, а условия окружающего освещения должны контролироваться таким образом, чтобы образцы всегда получали одинаковое количество света.

ПОСТОЯННОЕ ИЗМЕРЕНИЕ И УСТРОЙСТВО Если вы используете телефон для съемки изображений, вы, вероятно, находитесь во власти автоэкспозиции. Если приложение Google, которое вы используете, вступает во владение и обеспечивает постоянную экспозицию, это важно. В противном случае, вам лучше получить Nikon dSLR и использовать его в режиме ручной экспозиции (всегда!) И всегда устанавливать один и тот же срок годности.

ЗАПУСК ОБРАЗЦА И ССЫЛКА В ТО ЖЕ ВРЕМЯ другими словами, имейте эталонную выборку, которая в идеале находится где-то около LRV вашей средней выборки. 18% greycard, вероятно, отлично подходит для этого, если только по какой-то причине они недороги и их легко заменить приличной последовательностью.

Если задействованы цвета, то вам нужна диаграмма XRite colorChecker.

enter image description here 5)

КОГДА ВЫ ЗАХВАТАЕТЕ ОБРАЗЦЫ Если вы фотографируете, то вам нужен эталонный образец (то есть серая карта или диаграмма проверки цвета) в кадре изображения в том же месте и с тем же освещением каждый раз.

Конверсия

Если вы делаете это с помощью фотографии, то вы хотите быть максимально последовательными, использовать одинаковую экспозицию и использовать в камере профиль sRGB (не используйте Adobe98, так как это более широкий охват и, следовательно, МЕНЬШЕ ТОЧНО с более высокими ошибками дельты E.)

перенесите изображения в приложение для обработки изображений и сэмплируйте цвета. установите палитру цветов для выборки среднего значения области около 10 x 10 пикселей (всего 100 пикселей), снова используя профиль sRGB.

Цветовые данные sRGB кодируются гаммой - они вам нужны либо в линейной яркости (Y), либо, возможно, в пространстве восприятия, например, CIELAB.

IF ...

Если вы просто хотите получить абсолютное измерение яркости каждого образца, вы можете преобразовать данные sRGB в яркость (Y в CIEXYZ), а затем использовать эту цифру для сравнения.Однако обратите внимание, что яркость линейна по отношению к свету, поэтому она не является равномерно воспринимаемой.

Для однородности восприятия вам понадобится CIELAB, а в CIELAB вы можете делать точные вычисления для разницы между двумя цветами.

ШАГИ И МАТЕМАТА ПРЕОБРАЗОВАНИЯ (в указанном порядке)

1) Преобразовать

Преобразовать шестнадцатеричные или целочисленные значения цвета в плавающее с 0 для черного и 1,0 для белого.

2) Линеаризация

Линеаризация цветовых данных sRGB (то есть удаление гамма-кривой)

3) Применение спектральных весовых коэффициентов

Применение спектральных весовых коэффициентов к каждомуканал, а затем сложите их вместе для Y (яркость).

Я подробно опишу эти три шага в этом посте.

4) Преобразовать в L * a *b *

Если вы хотите использовать высококачественное уравнение цветовых разностей, вам необходимо преобразовать CIEXYZ в CIELAB.

5) Использовать CIEDE2000 для разности

Один раз вLAB, затем используйте уравнения CIEDE2000 для разницы в цвете.

Математика для шагов 4 и 5 доступна здесь как фрагменты кода.

...