【Matlab 图像】HSV 色彩空间分析

本文详细介绍了HSV色彩空间,包括色调、饱和度和明度的概念,并阐述了RGB到HSV的转换方法。通过Matlab代码示例,展示了如何提取图像中的黄色和黄瓜,以及基于RGB空间的颜色提取。这些技术在图像分析和颜色识别领域具有广泛应用。
摘要由CSDN通过智能技术生成

1. HSV 色彩空间

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。

RGB和CMY颜色模型都是面向硬件的,而 HSV(Hue Saturation Value)颜色模型是面向用户的。

1.1 色调(Hue)

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;

1.2 饱和度(Saturation)

饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。

1.3 明度(Value)

明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。

在这里插入图片描述
From: HSV (HSV颜色模型)-百度百科

2. 色彩空间转换

RGB 色彩空间模型如下:
在这里插入图片描述
HSV 色彩空间模型如下:
在这里插入图片描述

2.1 Matlab 指令

ImgHSV = rgb2hsv(ImgRGB);
ImgRGB = hsv2rgb(ImgHSV);

2.2 对应转换公式

在这里插入图片描述
From: RGB模型转换到hsv原理及其opencv实现代码

在这里插入图片描述
From: Python3 识别判断图片主要颜色,提取指定颜色的方法

3. 示例:提取图片中的黄色

3.1 示例代码:

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空间,进行展示

3.2 代码效果:

From: 使用MATLAB提取图片中特定颜色

4. 示例:根据颜色提取黄瓜

From: matlab-对图像进行特定部分提取并得到rgb三原色(matlab实现)

5. 示例:基于RGB空间的颜色提取

From: RGB图像中特定颜色的提取

2020-11-21 更新程序 (Matlab版)

% 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)


Matlab中的HSV颜色空间是一种将颜色表示为色调(Hue),饱和度(Saturation)和明度(Value)三个分量的模型。HSV表示的颜色空间与RGB颜色空间不同,HSV颜色空间更符合人类对颜色的感知。在Matlab中,可以使用rgb2hsv函数将RGB图像转换为HSV图像,使用hsv2rgb函数将HSV图像转换回RGB图像HSV颜色空间的三个分量具体含义如下: - 色调(Hue):表示颜色的种类,取值范围为0到360度,对应不同的颜色。 - 饱和度(Saturation):表示颜色的纯度或饱和度,取值范围为0到1,0表示灰度色,1表示完全饱和的颜色。 - 明度(Value):表示颜色的明亮程度,取值范围为0到1,0表示黑色,1表示最大亮度。 通过在HSV颜色空间中调整色调、饱和度和明度的值,可以实现颜色的调整和提取。例如,在提取图片中的黄色时,可以根据色调的取值范围选择黄色的范围,然后根据饱和度和明度的取值范围进一步筛选。 综上所述,MatlabHSV颜色空间提供了一种更直观和方便的方式来表示和处理颜色信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Matlab 图像HSV 色彩空间分析](https://blog.csdn.net/weixin_36815313/article/details/109727719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值