Среднее количество пикселей в цветовом пространстве HSV против RGB
Мой вопрос немного более концептуален, чем все остальное. Я представляю пространственную карту (скажем, карту столичной области) в полярной системе координат. Я записал данные о людях в пригородном районе 10х10, спрашивающих, где они хотели бы жить в этом мегаполисе. (r,theta)
- r
расстояние от центра, theta
угол вокруг оси х, поэтому я использую полярную систему координат и HSV, чтобы раскрасить его, сохраняя V=1=constant
, После получения цвета HSV для каждого дома я преобразовал эту матрицу HSV 10x10x3 в RGB и использовал image() для отображения следующего графика.
Фиг.1: [10x10 сетка, представляющая окрестности. Цвета показывают, где эти семьи хотят жить в столичном регионе. Легенда показывает столичную область в полярных координатах, цветовое пространство HSV, где V=1 всегда.]
Теперь я пытаюсь создать более наглядное представление об этом пригородном районе, чтобы увидеть, группируются ли люди в соответствии с их предпочтениями относительно того, где они хотели бы жить в столичном регионе. С помощью
Img2=imresize(Img,1000,'bilinear','colormap','original');
Это увеличивает размер матрицы RGB 10x10x3 до матрицы RGB 10000x10000x3 при использовании билинейной интерполяции между пикселями, таким образом сглаживая изображение, показанное здесь:
Fig2: [Большая сглаженная матрица с использованием билинейной интерполяции между пикселями]
Мой вопрос: допустимо ли использовать этот метод интерполяции в пространстве RGB, если мои основные интересы лежат в пространстве HSV, то есть в столичной области с полярными координатами? Другими словами, когда эта функция принимает средний цвет многих пикселей в RGB, будет ли она представлять правильный радиус и угол в столичном регионе?
Большое спасибо заранее. Я прошу прощения за долгое сложное построение до потенциально простого вопроса.
1 ответ
V определяется как максимум (R,G,B).
Если вы интерполируете из RGB(255,0,0)
в RGB(0,0,255)
то на полпути вы в конечном итоге RGB(128,0,128)
,
Вы видите, что максимум составляет 128. Таким образом, вы не можете использовать rgb
интерполяция, если вы не увеличите V обратно до 1 (или 255
, если вы используете 8 бит)
Кстати. Я не буду интерполировать, так как вы не можете предполагать, что базовые значения являются линейными.
Смотрите здесь для получения дополнительной информации: /questions/11070153/kak-interpolirovat-znacheniya-ottenkov-v-tsvetovom-prostranstve-hsv/11070169#11070169