我想创建一个HSV图像(或者可能是坐标图),准确地显示坐标。
我正在使用以下代码,并获得这样的图像,以下代码的结果不是我想要的。
img = rand(200,200);
[ind_x, ind_y] = ind2sub(size(img),find(isfinite(img)));
ind_x = reshape(ind_x,size(img));
ind_y = reshape(ind_y,size(img));
ind = ind_x.*ind_y;
figure, imagesc(ind); axis equal tight xy
答案 0 :(得分:0)
假设您将HSV空间(0-1)量化为256个bin。将有256 * 256 * 256种可能的颜色。我们可以修复一个维度(比如饱和度)并生成矩阵。然后会有256 * 256种颜色。
[x1,x2]=meshgrid(linspace(0,1,256),linspace(0,1,256));
img(:,:,1)=x1;
img(:,:,2)=1; %fully saturated colors
img(:,:,3)=x2;
imgRGB=hsv2rgb(img); %for display purposes
imshow(imgRGB,[])
它在RGB中看起来会有所不同(这是你想象的地方)。如果您可视化HSV矩阵(即不将其转换为RGB,但MATLAB不知道其HSV),它看起来与您的图像相似
imshow(img,[]);
您发布的第二张图片可以通过以下方式获得:
[x1,x2]=meshgrid(linspace(0,1,256),linspace(0,1,256));
img(:,:,1)=x1;
img(:,:,2)=0;
img(:,:,3)=x2;
imshow(img,[]) %visualizing HSV