HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
RGB和CMY颜色模型都是面向硬件的,而 HSV(Hue Saturation Value)颜色模型是面向用户的。
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
ImgHSV = rgb2hsv(ImgRGB);
ImgRGB = hsv2rgb(ImgHSV);
From: RGB模型转换到hsv原理及其opencv实现代码
From: Python3 识别判断图片主要颜色,提取指定颜色的方法
flag_hsv = rgb2hsv(frame); % 将图像的 rgb 色彩空间转化至 hsv 色彩空间
flag_new = 255*ones(size(frame)); % 创建一个白色图像,将特定颜色提取到此处
flag_new_hsv = rgb2hsv(flag_new); % 将白色图像也转换至hsv色彩空间
% 找出图像中黄色的像素
[row, col] = ind2sub( size(flag_hsv),...
find( flag_hsv(:,:,1)>(16/180) & flag_hsv(:,:,1)< (34/180)...
& flag_hsv(:,:,2)>0.16 & flag_hsv(:,:,3)>0.48 ) );
% 将图像中的黄色像素复制到刚才新建的白色图像中
for i = 1 : length(row)
flag_new_hsv(row(i),col(i),:) = flag_hsv(row(i),col(i),:);
end
flag_yellow = hsv2rgb(flag_new_hsv); % 将提取出来的黄色,转化至rgb空间,进行展示
From: 使用MATLAB提取图片中特定颜色
From: matlab-对图像进行特定部分提取并得到rgb三原色(matlab实现)
From: RGB图像中特定颜色的提取
% Function : 提取图像中的黄色
% ParamsIn : ImgIn
% ParamsOut: ImgOut
% Date : 2020-11-21
% Author : JC
% 可以更改 HSV 通道的取值范围,达到检测其他颜色的目的
function ImgOut = ExtractYello(ImgIn)
ImgRGB = ImgIn;
ImgHSV = rgb2hsv(ImgRGB);
% 提取图像中黄色部分,得到只有黄色部分的图
ImgNewRGB = 255*ones(size(ImgRGB)); % 创建一个白色图像,将特定颜色提取到此处
ImgNewHSV = rgb2hsv(ImgNewRGB); % 将白色图像也转换至hsv色彩空间
[row, col] = ind2sub( size(ImgHSV),... % 找出图像中黄色的像素
find( ImgHSV(:,:,1)>(35/360) & ImgHSV(:,:,1)< (61/360)...
& ImgHSV(:,:,2)>0.16 & ImgHSV(:,:,3)>0.48 ) );
for i = 1 : length(row) % 将图像中的黄色像素复制到刚才新建的白色图像中
ImgNewHSV(row(i),col(i),:) = ImgHSV(row(i),col(i),:);
end
ImgNewRGB = hsv2rgb(ImgNewHSV); % 将提取出来的黄色,转化至rgb空间,进行展示
ImgOut = ImgNewRGB;
Ref: 色彩空間(RGB, HSV, LAB, YUV)