Моделирование цветового пространства HSV в MATLAB

Я могу создать 3D конус в MATLAB, но: кто-либо знает, как нарисовать конус так, чтобы он воссоздал цветовое пространство HSV? Я знаю, что существует команда:

карта цветов hsv;

но как я использую его?

Заранее спасибо.

6
задан bjou 6 July 2013 в 02:55
поделиться

1 ответ

Я предполагаю, что вы хотите создать график, подобный конусу на следующем изображении Wikipedia:

Один из способов сделать это - построить график конуса и текстурную карту поверхности с изображением цветового пространства HSV. Вот как это можно сделать:

% First, create a 100-by-100 image to texture the cone with:

H = repmat(linspace(0, 1, 100), 100, 1);     % 100-by-100 hues
S = repmat([linspace(0, 1, 50) ...           % 100-by-100 saturations
            linspace(1, 0, 50)].', 1, 100);  %'
V = repmat([ones(1, 50) ...                  % 100-by-100 values
            linspace(1, 0, 50)].', 1, 100);  %'
hsvImage = cat(3, H, S, V);                  % Create an HSV image
C = hsv2rgb(hsvImage);                       % Convert it to an RGB image

% Next, create the conical surface coordinates:

theta = linspace(0, 2*pi, 100);  % Angular points
X = [zeros(1, 100); ...          % X coordinates
     cos(theta); ...
     zeros(1, 100)];
Y = [zeros(1, 100); ...          % Y coordinates
     sin(theta); ...
     zeros(1, 100)];
Z = [2.*ones(2, 100); ...        % Z coordinates
     zeros(1, 100)];

% Finally, plot the texture-mapped surface:

surf(X, Y, Z, C, 'FaceColor', 'texturemap', 'EdgeColor', 'none');
axis equal

И вы должны получить следующий рисунок:

enter image description here

12
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: