Оцените, является ли значение HEX темным или светлым

Пользователь веб-приложения ASP.NET, которое я создаю, может выбирать цвета для использования на некоторых элементах (например, кнопках / заголовках), чтобы облегчить некоторую степень персонализации.

Проблема в том, что по умолчанию текст на этих слоях чёрный ... я пытаюсь оценить значение HEX, выбранное пользователем с помощью средства выбора, и программно переключаться между чёрным и белым текстом - это может быть JavaScript или в коде позади.

Суть проблемы в том, что я просто не уверен, как оценить HEX, чтобы принять решение, слишком ли близка выбранный цвет к черному, чтобы использовать черный текст.

Есть идеи?