先来了解一些概念:

1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为:

2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色.

H(Hue):表示颜色的类型(例如红色,绿色或者黄色).取值范围为0—360.其中每一个值代表一种颜色.

S(Saturation):颜色的饱和度.从0到1.有时候也称为纯度.(0表示灰度图,1表示纯的颜色)

B(Brightness or Value):颜色的明亮程度.从0到1.(0表示黑色,1表示特定饱和度的颜色)

后面地址是一个在线的观察RGB到HSB转换的工具:http://web.bentley.edu/empl/c/ncarter/MA307/color-converter.html

用RGB来表示颜色虽然方便,但是两个相近的颜色的RGB值却可能相差十万八千里。用HSV(Hue色相、Saturation饱和度、Value(Brightness)明度,也叫HSB)来表示颜色就比较符合人们的习惯。

RGB到HSV(HSB)的转换:

HSV(HSB)到RGB的转换:


根据以上说明,有以下转换公式(Java代码)

 public static float[] rgb2hsb(int rgbR, int rgbG, int rgbB) {assert 0 <= rgbR && rgbR <= 255;assert 0 <= rgbG && rgbG <= 255;assert 0 <= rgbB && rgbB <= 255;int[] rgb = new int[] { rgbR, rgbG, rgbB };Arrays.sort(rgb);int max = rgb[2];int min = rgb[0];float hsbB = max / 255.0f;float hsbS = max == 0 ? 0 : (max - min) / (float) max;float hsbH = 0;if (max == rgbR && rgbG >= rgbB) {hsbH = (rgbG - rgbB) * 60f / (max - min) + 0;} else if (max == rgbR && rgbG < rgbB) {hsbH = (rgbG - rgbB) * 60f / (max - min) + 360;} else if (max == rgbG) {hsbH = (rgbB - rgbR) * 60f / (max - min) + 120;} else if (max == rgbB) {hsbH = (rgbR - rgbG) * 60f / (max - min) + 240;}return new float[] { hsbH, hsbS, hsbB };}public static int[] hsb2rgb(float h, float s, float v) {assert Float.compare(h, 0.0f) >= 0 && Float.compare(h, 360.0f) <= 0;assert Float.compare(s, 0.0f) >= 0 && Float.compare(s, 1.0f) <= 0;assert Float.compare(v, 0.0f) >= 0 && Float.compare(v, 1.0f) <= 0;float r = 0, g = 0, b = 0;int i = (int) ((h / 60) % 6);float f = (h / 60) - i;float p = v * (1 - s);float q = v * (1 - f * s);float t = v * (1 - (1 - f) * s);switch (i) {case 0:r = v;g = t;b = p;break;case 1:r = q;g = v;b = p;break;case 2:r = p;g = v;b = t;break;case 3:r = p;g = q;b = v;break;case 4:r = t;g = p;b = v;break;case 5:r = v;g = p;b = q;break;default:break;}return new int[] { (int) (r * 255.0), (int) (g * 255.0),(int) (b * 255.0) };}

RGB与HSB之间的转换公式相关推荐

  1. RGB与HSB之间转换

    先来了解一些概念: 1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为: 2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色 ...

  2. java hsv_RGB与HSV之间的转换公式及颜色表

    RGB & HSV 英文全称 RGB - Red, Green, Blue HSV - Hue, Saturation, Value HSV --> RGB 转换公式 HSV --> ...

  3. RGB,CMYK,HSB各种颜色表示的转换

    一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合成不同的颜色,例如,100%红+100%绿混合可以得到黄 ...

  4. JS实现RGB,HSL,HSB相互转换

    前言 最近呢,在写色彩选择器小插件的时候需要用到RGB,HSL,HSB相互转换的一些东西,就想着好好整理一下这方面的内容,顺便用js实现一下三者之间的转换,通过对色彩转换的学习,对平时整整ps,摄影也 ...

  5. 使用C++实现YUV格式图像与RGB格式图像之间相互转换

    使用C++实现YUV格式图像与RGB格式图像之间相互转换 一.RGB与YUV转换公式 1.RGB转YUV 1)RGB转换亮度与色差信号公试: 2)归一化为YUV的转化公试为: 2.YUV转RGB 二. ...

  6. php: RGB 转 HSB(HSV)

    前言 最近因为涉及到一个算色规则,其中需要把RGB转HSB的要求,所以自己研究了下,故此记录下. 什么是RGB? RGB表示红色(R).绿色(G).蓝色(B),又称为三原色光.它是通过对三个颜色通道的 ...

  7. 在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换

    RGB转换为HSL的算法一般需要自己编写,但是在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换. 下面是利用FireMonkey的RGBtoHSL和HSLtoRG ...

  8. Java 提示用户输入温度以及C或F_已知华氏温度与摄氏度之间的转换公式是C=519X(F—32)编写一个程序将用户输入华氏温度转换成摄氏温度并给予输出...

    点击查看已知华氏温度与摄氏度之间的转换公式是C=519X(F-32)编写一个程序将用户输入华氏温度转换成摄氏温度并给予输出具体信息 答:-- {int f=-10; float c; while(f ...

  9. RGB彩色空间的不同转换公式

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在做图像 ...

  10. RGB彩色空间的不同转换公式 1

    在做图像处理时,我们一般采用的是RGB空间,但是在某些特殊情况下,我们也会用到其他的颜色空间.本文主要介绍一些常见的颜色空间的概念和转换公式. 颜色的实质是一种光波.它的存在是因为有三个实体:光线.被 ...

最新文章

  1. Nginx学习4:负载均衡实例
  2. jxl解析excel
  3. 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
  4. tcp假连接_总结的23 个 TCP高频面试问题
  5. Qt文档阅读笔记-构造WebSocket服务端
  6. python语法学习—实现猜拳游戏
  7. 【C++】C++类的学习(二)——构造函数、析构函数、拷贝构造函数以及this指针
  8. 【华为云技术分享】Linux软件安装的几种方法 (一)—— apt-get
  9. Java执行系统命令策略
  10. 编程语言对比 执行文件
  11. python文件命名 数字,当文件存在时,文件名中的数字递增
  12. 19.Virtual Type
  13. gdb 的使用 problem solution
  14. ML~线性代数~python
  15. python取出字典重复值_从字典中提取重复值
  16. C语言星号塔作业,c语言星号打印矩形、三角形、菱形等图案及参考答案
  17. TestCenter测试管理工具环境配置(C)
  18. office2016与visio2016冲突的解决方法
  19. [1061]青蛙的约会
  20. STL和泛型编程_学习笔记01

热门文章

  1. C语言编程常用知识点概论——第一章基本数据类型、运算符
  2. 计算机的声卡怎么安装教程,图文详解如何安装声卡驱动_给电脑安装声卡驱动的详细教程...
  3. sam卡和sim卡区别_PSAM卡、SAM卡与SIM卡
  4. FTP工具,5款常用的FTP工具
  5. 计算机开机桌面文件丢失怎么办,电脑重启桌面文件丢失怎么办
  6. 阿里p7架构师:三年经验应该具备什么样的技能?
  7. 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 3]
  8. html5怎么给标题居中,html5标题居中 Html5如何使div里面文字在水平垂直居中对齐...
  9. Sublime Text编辑器设置中文
  10. 澳洲java5年的评价薪水有多少,刚刚,澳洲平均薪资出炉,感受一下世界第一的最低薪资标准!...