Ответ 1
В HSV оттенок определяется как
H = atan2( sqrt(3)*(G-B), 2R-G-B )
(ссылка). В каждом из шести секторов (R-Y, Y-G...) имеется одинаковое количество оттенков. Кроме того, на границе между регионами есть шесть оттенков. Итак, 6 + 6 * huesRY
.
В красно-желтом секторе R > G > B, поэтому оба аргумента в atan2 положительны.
count sqrt(3) * (G-B) / (2R-G-B)
=count (G-B) / (2R-G-B)
=count (G-B) / ((G-B) + (2R-2G))
так как мы можем применить любое линейное преобразование к множеству [x, y] и не изменять счетчик его отношений, x / (x+2y) == x / y
=count (G-B) / (R-G)
если мы вычтем одно и то же значение из всех R, G, B, отношение не изменится, поэтому предположим, что B = 0
=count G / (R-G)
=count G / R
Таким образом, в шесть раз больше оттенков, так как существуют отношения между двумя положительными целыми числами, которые ниже 2 ^ 8 (предполагая 8 бит на канал) и еще шесть. Существует так много коэффициентов, как пара взаимно простых положительных чисел. Число положительных целых чисел ниже n
, которые взаимно просты с n
, называется функцией толеатора Эйлера. OEIS списки частичные суммы. Существует ровно 19948 пар взаимно простых целых чисел ниже 256.
6 * 19948 + 6 = 119 694
В модели HSV имеется ровно 119 694 разных оттенка, соответствующих цвету в 8-битной модели RGB. Обратите внимание, что они не равномерно распределены.
Если в модели HSV используется 8 бит на канал, тогда меньше цветов, чем в модели RGB с 8 бит на канал, просто потому, что некоторые тройки HSV отображаются на один и тот же цвет, в то время как каждая тройка RGB определяет другой цвет.