Matlab rgb2hsv改变了图像

时间:2014-06-20 20:09:58

标签: image matlab rgb hsv

我正在尝试将一组RGB值转换为Matlab中的HSV值数组。我正在运行以下代码:

pic = imread('ColoradoMountains.jpg');

pic = rgb2hsv(pic);

imwrite(pic,'pic.jpg')

但是写的图像有完全不同的颜色。我一直试图将颜色贴图设置为hsv,但我不确定这是否有意义。互联网上没有任何内容可以提供我的关键字,有人可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

您可以指定imwrite应该使用的色彩映射表。试试这个:

imwrite(pic,colormap('HSV'),'pic.png');

以下是imwrite的文档:http://www.mathworks.com/help/matlab/ref/imwrite.html

答案 1 :(得分:0)

在Matlab中,您必须区分索引图像和3通道图像。索引图像是n * m * 1图像,其中[0,1]范围的每个值与颜色相关联。该关联称为颜色映射,其可以是例如HSV或RGB中的单位圆。这可以使用imwrite和map参数一起编写,但这不是你想要的。

你显然想要的是HSV编码的图像,这意味着三个rgb通道被转换为三个hsv通道。这是(据我所知)不可能的。如果您查看imwrite的文档,您可以看到如何编写CMYK编码的图像,这是通过隐式传递n * m * 4图像完成的。是否有支持HSV的标准文件格式?如果是这样,我会仔细研究这种格式。