hsv颜色空间

hsv颜色空间,第1张

HSV模式中的H、S、V分别表示色调、饱和度、亮度~~如果你是说ps里面的话,那里面是没有这种模式的,这是一种从视觉的角度定义的颜色模式。只要一打开电脑就浮现在你面前就是vsb颜色模式~~
RGB-->HSV色彩模式值的转换方式如下:
var_R = ( R / 255 ) //RGB from 0 to 255
var_G = ( G / 255 )
var_B = ( B / 255 )
var_Min = min( var_R, var_G, var_B ) //Min value of RGB
var_Max = max( var_R, var_G, var_B ) //Max value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max
if ( del_Max == 0 ) //This is a gray, no chroma
{
H = 0 //HSV results from 0 to 1
S = 0
}
else //Chromatic data
{
S = del_Max / var_Max
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max
if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R
if ( H < 0 ) ; H += 1
if ( H > 1 ) ; H -= 1
}

rgb2hsv
功能:
转化RGB值为HSV颜色空间。
语法:
hsvmap = rgb2hsv(rgbmap)
HSV = rgb2hsv(RGB)
相关命令:
hsv2rgb, rgbplot
HSV解释
HSV色彩模型从CIE三维颜色空间演变而来,它采用的是用户直观的色彩描述方法
,它跟孟塞尔显色系统的 HVC 球型色立体较接近。(如图HSV 色彩六棱锥)只不
过HSV色彩模型是一个倒立的六菱锥,只相当于孟塞尔球型色立体的一半(南半
球),所以不含黑色的纯净颜色都处于六菱锥顶面的一个色平面上。在HSV六菱
锥色彩模型中,色相(H)处于平行于六菱锥顶面的色平面上,它们围绕中心轴V
旋转和变化,红、黄、绿、青、蓝、品红六个标准色分别相隔60度。色彩明度
B)沿六菱锥中心轴V从上至下变化,中心轴顶端呈白色(V = 1),底端呈黑色
(V = 0),它们表示无彩色系的灰度颜色。色彩饱和度(S)沿水平方向变化,
越接近六菱锥中心轴的色彩,其饱和度越低,六边形正中心的色彩饱和度为零(
S = 0),与最高明度的V = 1相重合,最高饱和度的颜色则处于六边形外框的边
缘线上(S = 1)。
(1) 色相、饱和度与六棱锥色平面(H和 S)
色平面(H、S)的基础是CIE色度图的x、y色平面
(2) 明度与六棱锥中轴色(v)
色明度(V)的基础是 CIE三维颜色空间的亮度因素Y。

HSV (色相hue, 饱和度saturation, 明度value), 也称HSB
(B指brightness) 是艺术家们常用的,因为与加法减法混色的术语相比,使用色相,饱和度等概念描述色彩更自然直观。HSV
是RGB色彩空间的一种变形,它的内容与色彩尺度与其出处——RGB色彩空间有密切联系。
HSL (色相hue, 饱和度saturation, 亮度lightness/luminance),
也称HLS 或 HSI (I指intensity) 与
HSV非常相似,仅用亮度(lightness)替代了明度(brightness)。二者区别在于,一种纯色的明度等于白色的明度,而纯色的亮度等于中度灰的亮度。
HSV颜色空间
HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于 角度0° ,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180° 。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个 模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。
HSI颜色空间
HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析 和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。

颜色格式
1RGB模式
RRGGBB-偏色RR偏色GG偏色BB适用于颜色偏差较大的场合
2HSV模式
HSV-偏色H偏色S偏色V 适用于颜色接近的场合
例如,RGB模式: 9f2e3f-000000 表示颜色为9f2e3f,RGB的偏色都为0
9f2e3f-020202 表示颜色为9f2e3f,RGB的偏色都为02
HSV模式: 203020-000 表示颜色为203020,HSV的偏色都为0
203020-0020 表示颜色为203020,HSV的偏色为0 0 20

应该是视频在前面,处理图像在后面吧?
你后面的那个是每隔5帧截取一张储存并以i命名。
想要连接起来其实比较简单的,就是在处理处加一个大的for循环就可以了。
把视频程序放前面。截图储存后再读取处理,这里要注意的是你每隔5帧截一个,是不是有点太频了?还有弄个短点的视频,5秒左右。这样不会太浪费计算机资源,如果太大了可能会蓝屏或者死机哦。
其实,连在一起很简单的。就这样;(我在我机子上运行了一次,储存地址改了,你自己改回来吧)
clc;clear all;close all;
mov = VideoReader('C:\Users\epwqe_000\Desktop\MatlabAsa\sssssavi');%改地址
fnum = movNumberOfFrames;%
for i = 1:5:fnum
frame = read(mov, i);
imshow(frame);
imwrite(frame,strcat('C:\Users\epwqe_000\Desktop\MatlabAsa\New Folder\',num2str(i),'jpg'),'jpg');%改地址
img=strcat(num2str(i),'jpg');
I = imread(img);

[Ix,Iy,Iz]=size(I);
if Ix>400&Iy>300
I=imresize(I,[400,Iy400/Ix],'nearest');
end
figure
imshow(I)%输出图像
title('normal image')
I=double(I); %将I转换成double类型
[hue,s,v]=rgb2hsv(I); %将RGB格式转换成HSV格式
cb=0148I(:,:,1)-0291I(:,:,2)+0439I(:,:,3)+128;%将RGB转换为YCrCb格式
cr=0439I(:,:,1)-0368I(:,:,2)-0071I(:,:,3)+128;
[w h]=size(I(:,:,1));%获取转化后的I图像
for i=1:w
for j=1:h
if 145<=cr(i,j)&cr(i,j)<=165&145<=cb(i,j)&cb(i,j)<=180&001<=hue(i,j)&hue(i,j)<=015
segment(i,j)=1;
else
segment(i,j)=0;
end
end
end
figure
imshow(segment);
skin=segment;
% 去除小像素联通区域
skin=bwareaopen(skin,round(wh/900));
%dilating
se=strel('square',5);%创建结构区域
skin=imdilate(skin,se); %膨胀作用
im(:,:,1)=I(:,:,1)skin;
im(:,:,2)=I(:,:,2)skin;
im(:,:,3)=I(:,:,3)skin;
figure
imshow(uint8(im));
title('skin areas')
BW = skin;
L = bwlabel(BW,8);%
BB = regionprops(L, 'BoundingBox');%L等于几对应几
BB1=struct2cell(BB);%转换结构bb到bb1里
BB2=cell2mat(BB1);
figure,imshow(uint8(I));
title('result image');
[s1 s2]=size(BB2);
for k=3:4:s2-1
if (BB2(1,k)/BB2(1,k+1)) < 18 &&
(BB2(1,k)/BB2(1,k+1)) > 04 &&
(BB2(1,k)BB2(1,k+1)) > 1000
hold on;
rectangle('Position',[BB2(1,k-2),BB2(1,k-1),BB2(1,k),BB2(1,k+1)],'EdgeColor','r' )%指定位置添加矩形
end
end
end

RGB 是对机器很友好的色彩模式,但并不够人性化,因为我们对色彩的认识往往是”什么颜色?鲜艳不鲜艳?亮还是暗?”。HSL 模式和 HSV(HSB) 都是基于 RGB 的,是作为一个更方便友好的方法创建出来的。
HSB 为 色相,饱和度,明度,
HSL 为 色相,饱和度,亮度,
HSV 为色相,饱和度,明度。
HSB 和 HSV 是是一样的,只是叫法不同,HSL 则还有一些细微的区别:
在所有的情况下,H(Hue) 代表色相,S(Saturation) 代表饱和度。Hue(色相)是指取值范围在0-360°的圆心角,每个角度可以代表一种颜色。B 在 HSB 模式中是 Brightness 的意思, V 在 HSV 中是值,但是所表述的是一个东西:对光的量或光源的功率的感知。色相和明度(值)可以在0 - 1或者0% - 100%间取值。
HSL 稍微有一些不同,Hue(色相)和 HSB/HSV 模式中一样用数值表示,但是, S,同样代表“饱和度”,定义不一样,且需要转换。 L 代表亮度,和 Brightness/Value 不一样。Brightness(明度)是被认为是”光的量“,可以是任何颜色。
而 Lightness(亮度)是作为”白的量“来理解的。Saturation(饱和度)不一样,因为在两个模型中,饱和度都按比例缩放以适应明度或亮度的定义。
两者的区别,和他们之间对于饱和度的定义的不同。咱们拿案例看吧,先选同一个色 #f200ff
放入 HSL Color Picker,显示 HSL 数值为:H(297), S(100), L(50)
<img src=">

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12711779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存