RGB 转 HSV

1. RGB 模型

立方体模型

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

  • 色彩变化:三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线
  • 深浅变化:RGB顶点和CMY顶点原点和白色顶点的中轴线距离
  • 明暗变化:中轴线的点的位置,到原点(0,0,0)就偏暗,到白色顶点(1,1,1)就偏亮

原点到白色顶点的中轴线是灰度线,RGB 三分量相等。

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

2. HSV 模型

HSV模型 就是按 色彩、深浅、明暗 来描述的。

倒锥形模型

模型2
  • 色调 H
    用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
  • 饱和度 S
    饱和度S表示 颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
  • 明度 V
    明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

RGB 和 CMYK 颜色模型都是 面向硬件的,而HSV(Hue Saturation Value)颜色模型是 面向用户的,更适合人的观察特点。

艺术家的选择

艺术家有时偏好使用 HSV 颜色模型而不选择 RGB 或 CMYK 模型,因为它类似于人类感觉颜色的方式。RGB 和 CMYK 分别是 加法原色 和 减法原色 模型,以原色组合的方式定义颜色,而 HSV 以人类更熟悉的方式 封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”

3. RGB 转 HSV

  • 设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数
  • 设 max 等于 r, g, b 中的最大者
  • 设 min 等于 r, g, b 中的最小者
转换方程

OpenCV 内置了转换函数

// 将RGB图像转为HSV图像的函数
cvCvtColor(srcImage, hsv, CV_BGR2HSV);

通过输出 RGB 和 HSV 矩阵进行验证

cout << "bgr 矩阵" << endl;
Mat rgbMat(srcImage); // IplImage 转 Mat
scanImageMatrix(rgbMat);

cout <<"hsv 矩阵"<< endl;
Mat hsvMat(hsv);
scanImageMatrix(hsvMat);
bgr 矩阵
[9, 56, 87], [10, 60, 90], [13, 63, 91], [11, 64, 91], [6, 63, 89], 
[19, 73, 104], [22, 76, 107], [24, 79, 110], [22, 80, 109], [19, 79, 108], 
[56, 117, 151], [60, 121, 155], [61, 124, 158], [60, 125, 156], [57, 124, 155], 
[91, 160, 199], [94, 163, 202], [96, 167, 205], [94, 168, 204], [91, 167, 203], 
[96, 173, 219], [99, 176, 222], [100, 179, 222], [97, 179, 221], [93, 178, 218], 
hsv 矩阵
[18, 229, 87], [19, 227, 90], [19, 219, 91], [20, 224, 91], [21, 238, 89], 
[19, 208, 104], [19, 203, 107], [19, 199, 110], [20, 204, 109], [20, 210, 108], 
[19, 160, 151], [19, 156, 155], [19, 157, 158], [20, 157, 156], [21, 161, 155], 
[19, 138, 199], [19, 136, 202], [20, 136, 205], [20, 138, 204], [20, 141, 203], 
[19, 143, 219], [19, 141, 222], [19, 140, 222], [20, 143, 221], [20, 146, 218],

由于矩阵以 uchar 类型输出,hsv的值需要换算。

源代码

  1. 加载原图
  2. 转换颜色空间 cvCvtColor
  3. 分离通道
  4. 显示图像
#include <cv.h>
#include <highgui.h>

using namespace cv;
using namespace std;

int main() {

    IplImage *srcImage = cvLoadImage("../pictures/bear.jpeg", CV_LOAD_IMAGE_COLOR);
    // 原图像
    cvNamedWindow("RGB");
    cvShowImage("RGB", srcImage);

    // 存储HSV图像
    IplImage *hsv = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);

    // 将RGB图像转为HSV图像的函数
    cvCvtColor(srcImage, hsv, CV_BGR2HSV);

    // HSV图像
    cvNamedWindow("HSV");
    cvShowImage("HSV",hsv);

    // 创建3通道
    IplImage* Himg=cvCreateImage(cvGetSize(hsv),IPL_DEPTH_8U,1);
    IplImage* Simg=cvCreateImage(cvGetSize(hsv),IPL_DEPTH_8U,1);
    IplImage* Vimg=cvCreateImage(cvGetSize(hsv),IPL_DEPTH_8U,1);

    // 分离 H S V
    cvSplit(hsv,Vimg,Simg,Himg,0);

    // 显示图像
    cvNamedWindow("V");
    cvShowImage("V",Vimg);
    cvNamedWindow("S");
    cvShowImage("S",Simg);
    cvNamedWindow("H");
    cvShowImage("H",Himg);

    waitKey(0);
    return 0;
}

样例1

RGB -> HSV
H S V

样例2

RGB -> HSV
H S V

样例3

RGB -> HSV
H S V
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容