我正在尝试将一组RGB值转换为Matlab中的HSV值数组。我正在运行以下代码:
pic = imread('ColoradoMountains.jpg');
pic = rgb2hsv(pic);
imwrite(pic,'pic.jpg')
但是写的图像有完全不同的颜色。我一直试图将颜色贴图设置为hsv,但我不确定这是否有意义。互联网上没有任何内容可以提供我的关键字,有人可以指出我正确的方向吗?
答案 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的标准文件格式?如果是这样,我会仔细研究这种格式。