Modeling HSV Color Space in MATLAB

Deadly 提交于 2019-11-29 20:18:50

问题


I am able to create a 3D cone in MATLAB, but: does anyone know how to paint the cone so that it recreates the HSV color space? I know there is the command:

colormap hsv;

but how do I use it?

Thanks in advance.


回答1:


I'm guessing you want to create a plot similar to the cone in the following Wikipedia image:

One way to do this is to plot your cone and texture map the surface with an image of the HSV color space. Here's how you could do this:

% 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 

And you should get the following figure:



来源:https://stackoverflow.com/questions/3339692/modeling-hsv-color-space-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!