Вопрос: Можно ли получить значение яркости цветов в php?
Что я пытаюсь сделать, это получить наиболее "визуально заметные" цвета из изображения с помощью PHP,Я прошел через все переполнение стека и не смог найти никакого решения.
В настоящее время я построил поиск цветов по изображениям, который проходит через каждый пиксель изображения, сохраняет цвета,вычисляет цветовые различия и значение яркости, а затем сохраняет их в базе данных.
Проблема: Результаты математически правильны, однако они не являются визуально точными по отношению к изображению, из которого ранее были сопоставлены цвета,Я предположил, что какое-то сравнение яркости может решить эту проблему.
Я заметил, что когда я упорядочиваю результаты по возрастанию (сначала низший), результаты на самом деле более точные (хотя в некоторых случаях они не так точны).Это означает, что значения вхождения цвета намного ниже, чем при заказе DESC (сначала самое высокое).
Чтобы вычислить «яркость», я использую это - я не думаю, что оно настолько мощное:
function luminance($pixel){
$pixel = sprintf('%06x',$pixel);
$red = hexdec(substr($pixel,0,2))*0.30;
$green = hexdec(substr($pixel,2,2))*0.59;
$blue = hexdec(substr($pixel,4))*0.11;
return $red+$green+$blue;
}
Вот один сценарий, который показывает проблему: http://twitpic.com/33e23p http://twitpic.com/33e3x0
Я также начинаю задумываться, не находит ли моя функция цветового расстояния наиболее похожий цвет:
function colorDistance(array $color1, array $color2) {
return sqrt(pow($color1[0] - $color2[0], 2) +
pow($color1[1] - $color2[1], 2) +
pow($color1[2] - $color2[2], 2));
}