在matlab中制作具有代表性的HSV图像

时间:2014-10-25 18:28:44

标签: image matlab image-processing computer-vision

我想创建一个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

1 个答案:

答案 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