HSV RGB颜色空间互转
写了一段有关颜色的文章,回顾过去几篇文章,做一个阶段性总结。利用前几篇文章的心得,推导出快速转换RGB模式与HSV模式的公式。
RGB模式:用R、G、B三个颜色的分量来表示颜色,分量的取值范围为[0,255],整数型
HSV模式:用H、S、V三个分量来表示颜色。
分量H:表示颜色的色相,取值[0,360),整数型
分量S:表示颜色的纯度,取值[0,1),浮点数型
分量V:表示颜色的亮度,取值[0,1),浮点数型
以上内容,详细请参看“计算机中的颜色III——HSV表示方法”
1、RGB到HSV
颜色(R,G,B)如何快速转化到(H,S,V)
参看文章“计算机中的颜色IV——纯色、色相色”,“计算机中的颜色V——快速计算颜色的色相值”
令MAX为R、G、B三个分量的最大值;MIN为三个分量的最小值
若MAX=MIN,则
H=0
S=0
V=MAX/255
若MAX≠MIN
当G≥B时
H=(Max-R’+G’-Min+B’-Min)/(Max-Min)×60
S=1-MIN/MAX
V=MAX/255
当G<B时
H=360-(Max-R’+G’-Min+B’-Min)/(Max-Min)×60
S=1-MIN/MAX
V=MAX/255
2、HSV到RGB
颜色(H,S,V)如何快速转化到(R,G,B)
参看文章“计算机中的颜色VIII——快速计算颜色的偏转”
颜色(H,S,V)可以看成颜色(0,S,V)顺时针偏转H后得到颜色,其实,就是获得该颜色MAX与MIN分量
MAX=V×255=255V
若S=0,说明MAX=MIN,此时表示灰度色
R=MAX
G=MAX
B=MAX
若S>0,则令ρ=MAX-MIN=255SV,MIN=MAX-ρ
若H>180,令H’=360-H;反之,令H’=H
令λ=H’/60×ρ
R=2ρ-λ;若R<0,则R=0;若R>ρ,则R=ρ;
G=λ;若G>ρ,则G=ρ;
B=λ-2ρ;若B<0;则B=0;
若H>180,则交换G和B分量的值;反之,不交换。最后
R=R+MIN
G=G+MIN
B=B+MIN
总述,以上是我推导的HSV和RGB的互相转化公式,比许多网上介绍的原来的公式来的简单。参看“计算机中的颜色III——HSV表示方法”。
HSV RGB颜色空间互转相关推荐
- RGB颜色空间、色调、饱和度、亮度、HSV颜色空间详解
一.概述 本文章会详细的介绍RGB颜色空间与RGB三色中色调.饱和度.亮度之间的关系,最后会介绍HSV颜色空间! 一.RGB颜色空间 1. 起源 RGB三原色起源于上世纪初1809年Thomas Yo ...
- Python实现RGB和Lab颜色空间互转
Python实现RGB和Lab颜色空间互转 https://github.com/rubund/debian-home-assistant/blob/1a3e8f7e4b9ddec60a4380e14 ...
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...
- HSV颜色空间和RGB颜色空间相互转换C语言实现
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model).这个模型中颜色的参数 ...
- RGB、Lab、YUV、HSI、HSV等颜色空间的区别
文章主要来源于百度文库:http://wenku.baidu.com/view/f38c04e69b89680203d82513.html RGB颜色空间 RGB(red,green,blue)颜色空 ...
- 【主色提取】HSV 颜色空间与 RGB 颜色空间互相转化的公式和代码
系列文章目录 第二章 主色提取之颜色空间转化 目录 系列文章目录 文章目录 前言 一.HSV 和 RGB 颜色空间 二.颜色转化 1. RGB to HSV 2. HSV to RGB 三. 完整代码 ...
- RGB颜色空间转换HSV颜色空间 RGB2HSV算法
这是最常用的RGB到HSV例程,还有一个额外的小优化(向除数添加1e-20f以避免需要将除法除以零): 讲解:--------------action---------------- 直接看这段代码很 ...
- 数字图像处理与Python实现-颜色空间转换-RGB颜色空间与HSV颜色空间转换
RGB颜色空间与HSV颜色空间转换 RGB颜色空间与HSV颜色空间转换 1. 前言 2. RGB颜色空间与HSV颜色空间转换描述 3. 代码实现 1. 前言 HSV(Hue, Saturation, ...
- HSV(HSL)颜色空间及其应用
from:http://nkwavelet.blog.163.com/blog/static/22775603820147851726816/ [摘要] 本文首先阐述HSV 和 HSL颜色模式的基本特 ...
最新文章
- matlab中gui关闭图像直方图,07年写的,直方图 matlab gui
- mybatis中mysql流式读取_MyBatis读取大量数据(流式读取)
- 实现canvas连线
- linux mail命令查看邮件/mail控制台
- 智伴机器人广西团队_实力加冕 | 柳工喜获全国机器人焊接竞赛三连冠
- “奔三”了,程序员,你该怎么选择未来的路?
- html写个用户协议,五分钟学会HTML5的WebSocket协议
- 方法的重载 c# 1613699221
- Java实现创建二维码操作
- 迅雷发布了自主研发的TCFS协议,有意转型区块链开发的必看
- 大数据究竟是什么?一句话让你认识并读懂大数据
- android studio module build,踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中...
- 11计算机专业vb试题答案,西华师范大学计算机VB试题及答案11
- 一文掌握Java基础知识点(思维导图)
- qq邮箱收件服务器用户名密码,iphone6/6s+设置QQ邮箱时显示用户名或密码错误的解决方法介绍...
- Cisco-win10安装ezv_p_n客户端过程介绍与常见问题汇总
- serial.serialutil.SerialException: could not open port 'COM1': PermissionError(13, '拒绝访问。', None, 5)
- 数仓 元数据管理 Atlas 的使用
- Mac OS X Mavericks 迅雷下载地址 ( mac os x 10.9 )
- AIDE-Libgdx导入Box2d
热门文章
- leetcode算法题--最长等差数列★
- 统计学习基础:数据挖掘、推理和预测_数据挖掘——智能财务进阶之梯(含视频、PPT)...
- 开源Web应用中最常见漏洞是XSS和SQLI漏洞
- 新的 FreeBSD 核心团队选举结果出炉
- Storybord切换
- 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)
- NFS挂载失败(Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0))
- 伽卡他卡电子教室 百度百科_创建百度百科的好处
- 廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
- hibernate主配置文件中指定session与当前线程绑定