前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >由RGB到HSV的转换详解

由RGB到HSV的转换详解

作者头像
FPGA开源工作室
发布2020-02-25 14:00:33
2.7K0
发布2020-02-25 14:00:33
举报
文章被收录于专栏:FPGA开源工作室FPGA开源工作室

由RGB到HSV的转换详解

1RGB色彩空间

在图像处理中,最常见的就是RGB色彩模型。在RGB模型中,每种颜色出现在红、绿、蓝的原色光谱分量中。该模型基于笛卡尔坐标系。如图1所示,RGB原色值位于3个角上;二次色青色,深红色和黄色位于另外三个角上,黑色位于原点处,白色位于里原点最远的角上。

图1 RGB色彩模型

图1左 RGB彩色立方体示意图。图1右,RGB 24bit彩色立方体。原点到白色顶点的中轴线是灰度线,r、g、b三分量相等,强度可以由三分量的向量表示。

用RGB来理解色彩、深浅、明暗变化:

色彩变化:三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线

深浅变化:RGB顶点和CMY顶点到原点和白色顶点的中轴线的距离

明暗变化:中轴线的点的位置,到原点,就偏暗,到白色顶点就偏亮

光学的分析

三原色RGB混合能形成其他的颜色,并不是说物理上其他颜色的光是由三原色的光混合形成的,每种单色光都有自己独特的光谱,如黄光是一种单色光,但红色与绿色混合能形成黄色,原因是人的感官系统所致,与人的生理系统有关。

只能说将三原色光以不同的比例复合后,对人的眼睛可以形成与各种频率的可见光等效的色觉。

2 HSV色彩空间

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

这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。

色调H

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

饱和度S

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

明度V

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

图2 HSV色彩模型

3 RGB色彩空间转HSV

4 HSV在图像处理应用

HSV在用于指定颜色分割时,有比较大的作用。

H和S分量代表了色彩信息。

分割应用:

用H和S分量来表示颜色距离,颜色距离指代表两种颜色之间的数值差异。

Androutsos等人通过实验对HSV颜色空间进行了大致划分,亮度大于75%并且饱和度大于20%为亮彩色区域,亮度小于25%为黑色区域,亮度大于75%并且饱和度小于20%为白色区域,其他为彩色区域。

对于不同的彩色区域,混合H与S变量,划定阈值,即可进行简单的分割。

5 matlab实现RGB转HSV

代码语言:javascript
复制
clear
clc
close all
img = imread('1.bmp');
figure, imshow(img), title('RGB image')
img = im2double(img);
R = img(:,:,1);
G = img(:,:,2);
B = img(:,:,3);
imgsize = size(img);
row = imgsize(1);
column = imgsize(2);
%%Calculation Of V
for i=1:1:row
 for j=1:1:column
        maxMatrix(i,j) =max(max(R(i,j),G(i,j)),B(i,j));
        minMatrix(i,j) =min(min(R(i,j),G(i,j)),B(i,j));
 end
end
V = maxMatrix;
figure, imshow(V), title('V image without using rbg2hsv ')
%% Calculation Of S
for i=1:1:row
 for j=1:1:column
 if V(i,j) == 0
            S(i,j) = 0;
 else
            S(i,j) = (maxMatrix(i,j)-minMatrix(i,j)) / maxMatrix(i,j);
 end
 end
end
figure, imshow(S), title('S image without using rgb2hsv ')
%% Calculation Of H
for i=1:1:row
 for j=1:1:column
 if    maxMatrix(i,j) == R(i,j)
            H(i,j) = (1/6)*(0 + ((G(i,j) -B(i,j))  / (maxMatrix(i,j)-minMatrix(i,j))));
 elseif maxMatrix(i,j) == G(i,j)
            H(i,j) = (1/6)*(2 + ((B(i,j) -R(i,j))  / (maxMatrix(i,j)-minMatrix(i,j))));
 elseif maxMatrix(i,j) == B(i,j)
            H(i,j) = (1/6)*(4 + ((R(i,j) -G(i,j))  / (maxMatrix(i,j)-minMatrix(i,j))));
 end
 if H(i,j) < 0
            H(i,j) = H(i,j) + 360;
 end 
 end
end
figure, imshow(H), title('H image without using rgb2hsv ')
HSV = cat(3,H,S,V);
figure, imshow(HSV), title('HSV image without using rgb2hsv ')

实验原图

V分量

S分量

H分量

HSV图像(RGB转换后)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档