RGB和HSV颜色模型

 RGB颜色空间
    RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器都使用R、G、B数值来驱动R、G、B电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉发出不同亮度的光线,并通过相加混合产生各种颜色;扫描仪也是通过吸收原稿经反射或透射而发送来的光线中的R、G、B成分,并用它来表示原稿的颜色。RGB色彩空间称为与设备相关的色彩空间,因为不同的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同的色彩显示结果。显示器和扫描仪使用的RGB空间与CIE 1931 RGB真实三原色表色系统空间是不同的,后者是与设备无关的颜色空间。btw:Photoshop的色彩选取器(Color Picker)。可以显示HSB、RGB、LAB和CMYK色彩空间的每一种颜色的色彩值。

根据三基色原理,用基色光单位来表示光的量,则在RGB颜色空间,任意色光F都可以用RGB三色不同分量的相加混合而成:

   Fr[R]+g[G]+b[B]

RGB颜色空间还可以用一个三维的立方体来描述

                                                

                                                                                      

                                                

我们可知自然界中任何一种色光都可由RGB三基色按不同的比例相加混合而成,当三基色分量都为0(最弱)时混合为黑色光;当三基色分量都为k(最强)时混合为白色光。任一颜色F是这个立方体坐标中的一点,调整三色系数rgb中的任一系数都会改变F的坐标值,也即改变了F的色值。RGB颜色空间采用物理三基色表示,因而物理意义很清楚,适合彩色显像管工作。然而这一体制并不适应人的视觉特点。因而,产生了其他不同的颜色空间表示法。

 

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模型对应于画家配色的方法。画家用改变色浓和色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时加入不同比例的白色,黑色即可获得各种不同的色调。

HSV颜色空间可以用一个圆锥空间模型来描述



本文转自:http://blog.sina.com.cn/s/blog_474fc3c901009g7q.html

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是将RGB模型转换为HSV模型,并使用HSV模型定位灰度图中车牌的Matlab代码: ```matlab % 读取灰度图像 grayImg = imread('car_plate_gray.jpg'); % 将灰度图像转为RGB图像 rgbImg = cat(3, grayImg, grayImg, grayImg); % 将RGB图像转为HSV图像 hsvImg = rgb2hsv(rgbImg); % 提取亮度通道 value = hsvImg(:,:,3); % 对亮度通道进行二值化 threshold = graythresh(value); binaryImg = imbinarize(value, threshold); % 对二值化图像进行形态学处理 se = strel('rectangle', [4, 16]); binaryImg = imclose(binaryImg, se); % 找到所有连通区域 cc = bwconncomp(binaryImg); % 计算每个连通区域的宽高比 stats = regionprops(cc, 'BoundingBox'); ratios = zeros(cc.NumObjects, 1); for i = 1:cc.NumObjects bb = stats(i).BoundingBox; ratios(i) = bb(3) / bb(4); end % 找到宽高比最接近车牌的连通区域 [~, idx] = min(abs(ratios - 3)); plate = false(size(binaryImg)); plate(cc.PixelIdxList{idx}) = true; % 在原图像中显示车牌位置 figure; imshow(grayImg); hold on; bb = stats(idx).BoundingBox; rectangle('Position', [bb(1), bb(2), bb(3), bb(4)], 'EdgeColor', 'r', 'LineWidth', 2); ``` 这段代码将灰度图像转换为RGB图像,再将RGB图像转换为HSV图像。然后,提取HSV图像中的亮度通道,并对其进行二值化和形态学处理。接着,找到所有连通区域,并计算每个连通区域的宽高比。最后,找到宽高比最接近车牌的连通区域,并在原图像中显示车牌位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值