开云-BPO行业整合方案提供者
专业化、科技化、国际化;高标准、广覆盖、全流程
了解更多由RGB到HSV的转换详解 时候:2024-12-13 15:29:13 手机看文章
扫描二维码随时随地手机看文章
由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
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转换后)
欲知详情,请下载word文档 下载文档