matlab rgb2hsv()给uint8s?

时间:2016-02-25 18:52:49

标签: image matlab image-processing rgb hsv

我是Matlab的新手,我正在尝试获取图像的HSV值,但我需要将结果作为uint8。目前,当我读入图像时,我收到了以下矩阵:

whos im
Name        Size               Bytes  Class    Attributes

im        120x100x3            36000  uint8    

当我使用函数rgb2hsv()时,我得到:

hsv = rgb2hsv(im);
whos hsv
Name        Size                Bytes  Class     Attributes

hsv       120x100x3            288000  double

有没有办法将其转换为uint8s的矩阵而不是双打?

1 个答案:

答案 0 :(得分:2)

要将结果转换回uint8,只需使用hsv = im2uint8(rgb2hsv(im))即可。它不仅可以进行数据类型转换,还可以将图像缩放到uint8的0 ... 255范围。

以双重格式存储图像时,仅使用范围0 ... 1,同时以任何整数(或固定点)格式存储图像,intminintmax之间的整个范围用来。要将图像转换回原始范围,您必须使用im2uint8或手动执行,首先乘以255然后转换数据类型。我更喜欢im2uint8因为它更强大,例如im2uint8(im2uint8(I))会返回有效图片。除了HDR图像之外,我所知道的所有色彩空间都适用。

我知道文档说它只适用于灰度和rgb图像,但它基本上是一种带有自动重新缩放的数据类型转换。