我目前正在尝试使用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);
答案 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%。这也让我失望了。