【问题标题】:which are the ranges in hsv image representation in matlab?matlab中hsv图像表示的范围是什么?
【发布时间】:2014-12-19 16:06:34
【问题描述】:

我要比较从不同设备/位置拍摄的同一场景的几张图像。为此,我想量化颜色以消除由于设备和照明引起的一些颜色表示差异。 如果我在 RGB 中工作,我知道 matlab 代表 [0 255] 范围内的每个通道,如果我在 YCbCr 中工作,我知道这三个范围是 [16 235] 和 [16 240],但如果我想在 HSV 中工作颜色空间我只知道用 rgb2hsv 转换我得到一个每个通道都是双通道的图像......但我不知道是否所有三个通道都使用了 0 到 1 之间的所有范围......所以我不能在没有这些信息的情况下进行量化。

【问题讨论】:

  • 你的问题我不清楚。来自 MATLAB 文档:cmap = rgb2hsv(M) converts an RGB colormap M to an HSV colormap cmap. Both colormaps are m-by-3 matrices. The elements of both colormaps are in the range 0 to 1.。所以 - RGB 和 HSV - 图像都将在区间 [0,1]
  • 试试看吧。

标签: matlab image-processing colors hsv


【解决方案1】:

Parag 基本上回答了您的问题,但是如果您想要物理证明,您可以按照 chappjc 的建议进行操作,然后……自己尝试一下!读入图像,使用rgb2hsv 将其转换为 HSV,并查看值的分布。例如,使用 onion.png 这是 MATLAB 系统路径的一部分,尝试类似:

im = imread('onion.png');
out = rgb2hsv(im);
str = 'HSV';
for idx = 1 : 3
    disp(['Range of ', str(idx)]);
    disp([min(min(out(:,:,idx))) max(max(out(:,:,idx)))]);
end

上面的代码将读取每个通道并显示每个通道的最小值和最大值(色调、饱和度和值)。这是我得到的:

Range of H
         0    0.9991

Range of S
    0.0791    1.0000

Range of V
    0.0824    1.0000

如您所见,值在[0,1] 之间。玩得开心!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多