HSV-цветовое пространство (Оттенок, Насыщение, Значение) часто используется людьми, которые выбирают цвета (например, красок или чернил) от цветового диска или палитры, потому что это соответствует лучше тому, как люди испытывают цвет, чем цветовое пространство RGB. Функции rgb2hsv
и hsv2rgb
преобразуйте изображения между HSV-цветовыми пространствами и RGB.
MATLAB® и программное обеспечение Image Processing Toolbox™ не поддерживают цветовое пространство HSI (Оттенок, Насыщение, Интенсивность). Однако, если вы хотите работать с цветными данными в терминах оттенка, насыщения и интенсивности, HSV-цветовое пространство очень похоже. Другая опция должна использовать цветовое пространство LCH (Яркость, Цветность и Оттенок), который является полярным преобразованием CIE, цветовое пространство L*a*b* — видит Независящие от устройств Цветовые пространства.
Когда оттенок варьируется от 0 до 1,0, соответствующие цвета варьируются от красного до желтого, зеленого, голубого цвета, синего, пурпурного цвета, и назад к красному, так, чтобы были на самом деле красные значения и в 0 и 1.0. Когда насыщение варьируется от 0 до 1,0, соответствующие цвета (оттенки) варьируются от ненасыщенного (оттенки серого) к полностью влажному (никакой белый компонент). Когда значение или яркость, варьируется от 0 до 1,0, соответствующие цвета становятся все больше более яркими.
Следующая фигура иллюстрирует HSV-цветовое пространство.
Рисунок HSV-цветового пространства
В этом примере показано, как преобразовать изображение RGB в HSV-цветовое пространство с помощью rgb2hsv
функция. Пример затем отображает отдельные HSV-плоскости цвета (оттенок, насыщение и значение) синтетического изображения.
Преобразуйте изображение RGB в HSV-изображение
Считайте изображение RGB в рабочую область.
RGB = imread('peppers.png');
Преобразуйте его в HSV-цветовое пространство.
HSV = rgb2hsv(RGB);
Более внимательное рассмотрение в HSV-цветовом пространстве
Для более близкого контроля HSV-цветового пространства создайте синтетическое изображение RGB.
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);
Преобразуйте синтетическое изображение RGB в HSV-цветовое пространство.
HSV=rgb2hsv(RGB);
Разделите HSV-версию синтетического изображения в его плоскости компонента: оттенок, насыщение и значение.
[h s v] = imsplit(HSV);
Отобразите отдельные HSV-плоскости цвета с оригинальным изображением.
montage({h, s, v, RGB}, 'BorderSize', 10);
Когда изображение плоскости оттенка в предыдущей фигуре иллюстрирует, значения оттенка делают линейный переход от высоко до низко. Если вы сравниваете изображение плоскости оттенка с оригинальным изображением, вы видите, что оттенки темно-синего цвета имеют самые высокие значения, и оттенки темно-красного цвета имеют самые низкие значения. (Как утверждено ранее, существуют значения красного цвета на обоих концах шкалы оттенка. Чтобы избежать беспорядка, демонстрационное изображение использует только красные значения с начала области значений оттенка.)
Насыщение может считаться чистотой цвета. Когда изображение плоскости насыщения показывает, цвета с самым высоким насыщением имеют самые высокие значения и представлены как белые. В центре изображения насыщения заметьте различные оттенки серого. Они соответствуют смеси цветов; голубые цвета, зеленые и желтые оттенки являются смесями истинных цветов. Значение примерно эквивалентно яркости, и вы заметите, что самые яркие области плоскости значения соответствуют самым ярким цветам в оригинальном изображении.