Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

rgb2hsv

将 RGB 颜色转换为 HSV

说明

示例

HSV = rgb2hsv(RGB) 将 RGB 图像的红色、绿色和蓝色值转换为 HSV 图像的色调、饱和度和明度 (HSV) 值。

示例

hsvmap = rgb2hsv(rgbmap) 将 RGB 颜色图转换为 HSV 颜色图。

示例

全部折叠

获取下采样 prism 颜色图。

rgb = prism(6)
rgb = 6×3

    1.0000         0         0
    1.0000    0.5000         0
    1.0000    1.0000         0
         0    1.0000         0
         0         0    1.0000
    0.6667         0    1.0000

将颜色图中的 RGB 值转换为 HSV。

hsv = rgb2hsv(rgb)
hsv = 6×3

         0    1.0000    1.0000
    0.0833    1.0000    1.0000
    0.1667    1.0000    1.0000
    0.3333    1.0000    1.0000
    0.6667    1.0000    1.0000
    0.7778    1.0000    1.0000

创建一个 2×2 真彩色图像。

rgb(:,:,1) = [1 1; 0 .5];
rgb(:,:,2) = [0 1; 0 .5];
rgb(:,:,3) = [0 0; 1 .5];
image(rgb);

Figure contains an axes. The axes contains an object of type image.

将该图像转换为 HSV 数组。

hsv = rgb2hsv(rgb)
hsv = 
hsv(:,:,1) =

         0    0.1667
    0.6667         0


hsv(:,:,2) =

     1     1
     1     0


hsv(:,:,3) =

    1.0000    1.0000
    1.0000    0.5000

输入参数

全部折叠

要转换的 RGB 图像,指定为 m×n×3 数值数组。RGB 的第三个维度为每个像素分别定义红色、绿色和蓝色强度。

数据类型: single | double | uint8 | uint16

RGB 颜色图,指定为由范围 [0, 1] 内的值组成的 c×3 数值矩阵。rgbmap 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。

数据类型: double

输出参数

全部折叠

HSV 图像,返回为由范围 [0, 1] 内的值组成的 m×n×3 数值数组。HSV 的第三个维度为每个像素分别定义色调、饱和度和明度,如下表所述。

属性说明
色调值从 01,对应于颜色在颜色圈上的位置。随着色调从 0 增加到 1,颜色从红色过渡到橙色、黄色、绿色、青色、蓝色、品红色,最后又回到红色。
饱和度色调的量或距离中性色的量。0 表示中性色,1 表示最大饱和度。

特定颜色的红色、绿色和蓝色分量的最大明度。

HSV 的数据类型取决于 RGB 的类型:

  • 如果 RGB 的类型为 single,则 HSV 的类型也是 single

  • 否则,HSV 的类型为 double

数据类型: double | single

HSV 颜色图,返回为由范围 [0, 1] 内的值组成的 c×3 数值矩阵。hsvmap 的每行都是一个三元素 HSV 三元组,指定颜色图的单种颜色的色调、饱和度和明度分量。

数据类型取决于 rgbmap 的类型:

  • 如果 rgbmap 的类型为 single,则 hsvmap 的类型也是 single

  • 否则,hsvmap 的类型为 double

数据类型: single | double

参考

[1] Smith, A. R. “Color Gamut Transform Pairs”. SIGGRAPH 78 Conference Proceedings. 1978, pp. 12–19.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

另请参阅

|

在 R2006a 之前推出