在MATLAB中建模HSV颜色空间

6
我能在MATLAB中创建一个三维圆锥,但是:有没有人知道如何涂上颜色,使其再现HSV颜色空间?我知道有这个命令:
colormap hsv;
但我该如何使用它?
先谢谢了。
1个回答

12

我猜你想创建类似于以下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

你应该能够得到以下图像:

在此输入图片描述


2
+1 已测试并且非常好用(你可能需要在SURF选项中添加 'EdgeColor','none' - Amro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接