我要比较从不同设备/位置拍摄的同一场景的几个图像。为此,我想量化颜色以消除由于设备和照明引起的一些颜色表示差异。 如果我在RGB工作我知道matlab代表范围[0 255]中的每个通道,如果我在YCbCr工作,我知道这三个范围是[16 235]和[16 240],但如果我想在HSV工作色彩空间我只知道用rgb2hsv转换我得到一个图像,每个通道都是一个双...但我不知道0和1之间的所有范围是否都用于所有三个通道....所以没有这些信息,我无法进行量化。
答案 0 :(得分:2)
Parag基本上回答了你的问题,但是如果你想要身体证明,你可以做chappjc建议的事情,并且......自己试试吧!读入图像,使用rgb2hsv
将其转换为HSV,并查看值的分布。例如,使用属于MATLAB系统路径的onion.png
,尝试类似:
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]
之间。玩得开心!