RGB和HSV空间之间的转换

时间:2014-02-28 01:20:42

标签: matlab image-processing matrix

我目前正在尝试使用rgb2hsv函数将两个对象从RGB空间转换为HSV空间,一个是图像,另一个是RGB值的矩阵,但我的结果是矩阵的值部分不一致。

矩阵I中的值的结果在1到255之间,但在第二个矩阵D中,它们在0到1之间。有人知道为什么会这样吗?

I = imread('00000001.jpg');
I = rgb2hsv(I);

D = [221 12 26; 30 68 76; 40 47 27; 165 87 25; 37 59 26; 148 125 91];
D = rgb2hsv(D);

2 个答案:

答案 0 :(得分:1)

当您使用N-by-3矩阵调用rgb2hsv时,会将解释为色彩图,而不是图像甚至图像强度。色图在[0,1]上具有值,而uint8图像在[0,255]上具有值。这是rgb2hsv所期望的。

rgb2hsv的帮助页面解释的colormap语法:

  

H = rgb2hsv(M)将RGB颜色贴图转换为HSV颜色贴图。       每个地图都是一个矩阵,包含任意数量的行,正好是三列,       和0到1之间的元素。

运行D = rgb2hsv(D);时,它使用上述语法运行它,而不是将输入视为图像。

也就是说,您可以将输出D的第三列除以255,因为生成的奇异色图似乎只是具有缩放值元素。

答案 1 :(得分:0)

我在图像上运行rgb2hsv时在结果矩阵上乘以255。我验证了色调,饱和度和值是正确的值,它是。这解决了我的问题。一定要验证。另一个奇怪的是,这些值是百分比,因此1表示100%,0.5表示50%。这也让我失望了。