HSV色彩空间的理解
一、介绍
在图像处理中,通常情况下我们不会直接对RGB图像做处理,这主要是因为RGB与人类的视觉感知相差较远,而HSV就是常用的色彩空间。
HSV分别指的是色相/饱和度/明度(Hue, Saturation, Value),对于不同的问题我们通常采用不同的通道来处理。当然最为通用的方法是使图像变为灰度图,直接对灰度图做处理。在早期图像质量评价领域等多个领域,都是这样来做。但是对于某些特定问题,需要具体问题具体分析。
比如,某些由于光照不同造成的视觉感知不同的场景下,我们通常用Value这个通道进行计算,通过计算梯度,可以较好的提取物体边缘。
再比如某些场景下,前景饱和度较高,背景采用饱和度较低的颜色来衬托前景,这时Saturation这个通道的信息就非常有用了。
再比如,在某些室内场景下,风格较为单一,一般一个物体只有一种颜色,这时候Hue这个通道就显得尤为重要了。
总之,HSV色彩空间在图像处理领域应用非常广泛,一般通过采用合适的通道就能完成大多数图像预处理工作
二、说明
HSV的模型空间:
注:在模型2中:
H是色彩点在对应圆形切面上与红色半径(对于H=0度)所形成的圆心角。
V是色彩点所在圆形切面到圆锥顶点的距离。在顶面上V=1 顶点V=0
S是色彩点到所在圆形切面圆心的距离与该圆半径的比例值,在圆锥表面上S=1,在圆心处S=0
关键点:
当S=1 V=1时,H所代表的任何颜色被称为纯色;
当S=0时,颜色最浅,最浅被描述为灰色(灰色也有亮度,黑色和白色也属于灰色),灰色的亮度由V决定,此时H无意义;
当V=0时,颜色最暗,最暗被描述为黑色,因此此时H(无论什么颜色最暗都为黑色)和S(无论什么深浅的颜色最暗都为黑色)均无意义。
在这张图中,S沿横轴从左到右0-1增长 V沿纵轴由下到上0-1增长
可以看到,当S=0,即矩形左边的竖线边缘处,呈不同深浅的灰色
当V=0,即矩形下班的横线边缘处,呈黑色
当S=0 V=1时,此时颜色最亮,但也最浅。也就是矩形的左上角,呈白色。
当S=1(S=0) V=0时,颜色最深(最浅),但最暗,均体现为黑色
当S=1 V=1时,在矩形的右上角,就是纯色的红色,也就是我们常用的RGB(255, 0, 0)
HSV色彩空间的理解相关推荐
- RGB色彩空间和HSV色彩空间的理解
RGB色彩空间和HSV色彩空间的理解 本文的结构如下: 1.RGB色彩空间 2.HSV色彩空间(附HSV颜色分量范围表) 3.RGB到HSV的转换的Demo 使用OpenCV实现RGB转HSV,并 ...
- 颜色的前世今生9·HSV色彩空间之父——匠白光
当你打开PS,准备开始一天的工作,空白的工作区域像盘古开天辟地之前的世界,一片宁静,等待你大笔一挥,给这个新世界赋予生命. 这个时候,你盯着拾色器想要选一个想要的颜色,可是这些H啊L啊C啊M啊都是什么 ...
- 通过HSV色彩空间对图像进行特定部分提取的简单实例的matlab实现
最近在自学Matlab图像处理, 这里就将自己对通过HSV色彩空间提出颜色的一点理解写出来. HSV色彩空间对于光照强度的敏感性很小, 因此, 我们往往会将RGB色彩空间转换成HSV色彩空间, 然后根 ...
- HSV色彩空间表和cv2.inRange()的用法
HSV色彩空间表和cv2.inRange()的用法 结合cv2.inRange()可以清晰看到某个颜色区域影象位于影象的什么地方. 用法cv2.inRange(img,low,high),函式会将位于 ...
- [Python图像处理] 使用 HSV 色彩空间检测病毒对象
使用 HSV 色彩空间检测病毒对象 前言 检测病毒对象 相关链接 前言 在本节中,我们将学习如何使用 OpenCV 在 HSV 色彩空间中使用特定颜色检测感兴趣对象.我们需要通过指定颜色值范围识别和提 ...
- 什么是HSV色彩空间
BGR色彩空间是基于三基色而言,即红色.绿色.蓝色.而HSV色彩空间则是基于色调.饱和度和亮度而言的. 色调(H)是指光的颜色,例如,彩虹中的赤,橙,黄,绿,青,蓝,紫分别表示不同的色调.在OpenC ...
- Wiki: HSL和HSV色彩空间
HSL 和 HSV(也叫做 HSB)是对RGB 色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系,并仍保持在计算上简单.HSL 表示 hue(色相).saturation( ...
- RGB到HSV色彩空间转换表
RGB到HSV色彩空间转换表
- HSL和HSV色彩空间
HSL和HSV都是一种将RGB色彩模型中的点在圆柱坐标系中的表示法.这两种表示法试图做到比基于笛卡尔坐标系的几何结构RGB更加直观. HSL即色相.饱和度.亮度(英语:Hue, Saturation, ...
最新文章
- VMware助青年时报构建安全高效应用平台
- spring 依赖注入
- listen()与accept()函数的区别
- 九、深入Java字符串(上篇)
- 疫苗事件发生后,阿里工程师连夜做了一件小事
- MySql 中锁的定义
- 十款最常见的Linux发行版及目标用户
- Adboost、GBDT、Xgboost 详解
- Node.js API 全栈 开发框架
- Atitit 分布式之道 attilax著 第4章 通信 第7章 一致性和复制 第8章 容错性 第9章 安全性 第10章 基于对象的分布式系统 第11章 分布式文件系统 第12章 基于Web的分
- 2021第三届长安杯检材一wp
- Windows socket之IO完成端口(IOCP)模型开发
- 创建线程的三种方法c语言,创建线程 - Python教程 - C语言网
- m2增长率曲线_中国通胀率(中国m2历年数据曲线图)
- U盘(移动硬盘)介质写入保护解决办法
- 【第008问 Unity中什么是UV?】
- Java第二次实训课堂
- EasyNVR摄像头网页无插件直播H5、谷歌Chrome直播方案中如何降低播放延迟问题
- 企业CDN缓存系统varnish——搭建一个最基本的varnish系统
- Window下kafka 单机SASL_SCRAM加密及身份认证