2015-02-25 3 views
1

Я ищу только идею/концепцию для решения моей проблемы.Обнаружить серый уровень поверхности

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

Проблема в том, что colors, как этот #BCB0F5, даст мне приемлемый уровень серого, однако цвет поверхности не должен выглядеть синим для человеческого глаза. Он должен выглядеть (для глаз человека) точно так же, как определенный серый уровень (черно-белый).

Как я могу решить эту проблему? Спасибо за любые подсказки.

+0

конвертировать BC, B0 и F5 в десятичные значения, что даст вам уровни красного, зеленого и синего. то для того, чтобы иметь серый цвет, вам нужно было бы сделать их одинаковыми, так что вы могли бы найти их в среднем и получить свой серый цвет ... – Ubica

+0

# BCB0F5 - это шестнадцатеричное значение цвета ... это RGB, что означает, что у него есть компоненты Red, Green и Blue. В этом порядке у вас есть # RED-GREEN-BLUE как шестнадцатеричные значения. каждый из двух шестнадцатеричных чисел представляет собой целое значение цвета, поэтому красный будет BC, зеленый будет B0, а F5 будет синим ... – Ubica

+0

@Ubica Спасибо, я удалил свой комментарий, потому что понял, прежде чем вы ответили, извините. Но я не хочу преобразовывать цвет выше на уровень серого. Я просто ищу метод, чтобы сказать мне, если он имеет серый уровень для глаз человека, а не синий, как этот –

ответ

0

В перцептивной модели цвета мы можем говорить о яркости и цвете определенного цвета (это «яркость» и «качество»). Преобразуя образцы из RGB в CIELAB (через), вы можете отфильтровывать цвета, которые ярче, чем ваш желаемый серый (>L_grey), а расстояние от белой точки больше JND (например, sqrt(a_sample**2 + b_sample**2) > 2.3)

+0

Спасибо, что упомянул ColorPy. Я никогда не слышал об этом раньше. –

+0

Нет проблем, я надеюсь, что вы сможете разобраться во всем. – nelfin

Смежные вопросы