Теория и практика компьютерной графики. Урок 6. Цветовая модель HSV |
Автор megabax | |||
10.05.2023 г. | |||
Теория и практика компьютерной графики. Урок 6. Цветовая модель HSVЧтобы смотреть урок полностью, подпишитесь на платный раздел. В платном разделе статья находится здесь. На уроке Теория и практика компьютерной графики. Урок 1. Растровые модели изображений мы с вами познакомились с различными моделями цветового представления, в частности, с RGB, CMYK, XYZ, YCbCr. Сегодня я расскажу о цветовой модели HSV, и мы ее даже запрограммируем. Но прежде всего, я расскажу о том, для чего нужна данная модель. Дело в том, что RGB не всегда хорошо подходит для анализа информации. Эксперименты показывают, что геометрическая близость цветов достаточно далека от того, как человек воспринимает близость тех или иных цветов друг к другу.... ... ... Цветовое пространство HSV удобнее всего представлять в виде конуса, цвет задается положением на окружности, насыщенность - расстоянием от центральной оси конуса, а яркость - высотой относительно вершины конуса*: Таким образом, сама черная точка - это вершина конуса, самая белая - центр основания, а самая "цветная" - лежит на окружность основания конуса.... ... ...Теперь перейдем к программе на C#:
В данном листинге представлен класс, который реализует точку изображения, цвет которой храниться в формате HSV. Класс позволяет перевести из данного цветового пространства в RGB, а также, если у нас есть значение RGB, то класс позволяет перевести ее в HSV. Для того, чтобы провести ряд экспериментов, в исходниках предусмотрена простенькая обертка для данной модели ... ...
Суть теста в том, что сначала я перевожу из RGB в HSV, потом обратно. После этого значения RGB не должны измениться. Если изменили - в программе ошибка. Обращаю ваше внимание на то, что если вы захотите запрограммировать какую то другую цветовую модель, предусмотрев конвертацию туда и обратно, тестируйте именно так, покрывая тестами все цветовое пространство - примерно 16 млн. итераций - это не так уж и много для компьютера, тест будет идти несколько секунд. Но зато вы будете уверены, что ваш алгоритм всегда работает правильно. Потом его надо будет тестировать только в том случае, если вы внесли в него изменения. Кром юнит теста, полезно сделать и функциональный текс - конвертируйте картинку туда и обратно:
Результат наглядно показывает, что все работает правильно:
Теперь попробуем провести ряд экспериментов. ...
... ...
...Вот что получиться в результате:
Аналогично оставим только канал яркости (монохромное изображениеt):
Канал насыщенности:
Довольно интересный эффект получим, присвоив всем точкам максимальную насыщенность:
* «HSV cone». Под лицензией CC BY-SA 3.0 с сайта Викисклада - https://commons.wikimedia.org/wiki/File:HSV_cone.png#/media/File:HSV_cone.png |
|||
Последнее обновление ( 10.08.2023 г. ) |
« След. | Пред. » |
---|