HSV HSI

本文介绍了RGB、HSV和HSI三种颜色空间的定义、数学模型及其在图像处理中的应用。RGB常用于显示器系统,但不符合人眼视觉特性,而HSV和HSI更符合视觉感知,常用于颜色处理后再转回RGB显示。HSV和HSI的主要区别在于亮度和明度的定义,HSV用明度,HSI用亮度。在HSV中,纯色的明度等于白色,而在HSI中,纯色的亮度等于中度灰。

转载:https://blog.youkuaiyun.com/wxb1553725576/article/details/45827923
https://www.cnblogs.com/wxl845235800/p/7692542.html

RGB颜色空间
定义
RGB颜色空间通常用于显示器系统,例如:电脑、电视机的显示器使用的都是RGB颜色空间。利用物理学中的三原色叠加原理,可以产生各种颜色。在RGB颜色空间中,R、G、B各颜色分量彼此独立。
RGB颜色空间的缺点在于不符合人眼的视觉特性,直接处理多有不便,因此通常需要转换到其他颜色空间进行处理,最后再转换到RGB颜色空间,用于显示器显示。

数学模型
RGB颜色空间中,R、G、B三个分量彼此独立,所能表示的范围也相同,例如:用8比特来表示每个分量,则所能表示的范围为[0,255]。在数学上,RGB颜色空间可以用一个正方体来表示,如下图所示:
在这里插入图片描述

HSV颜色空间
定义
HSV颜色空间中,H是Hue(色度)的缩写,S是Saturation(饱和度)的缩写,V是Value(亮度)的缩写。色度通常用来从宏观上区分某一种颜色,例如:白、黄、青、绿、品红、红、蓝、黑等就是色度;饱和度指的是颜色的纯度,通常情况下,颜色越鲜艳,饱和度越高,颜色越暗淡,饱和度越低;亮度指的是颜色的明暗程度,亮度越高,颜色越亮,亮度越低,颜色越暗。
HSV颜色空间不适合显示器系统,但是更符合人眼的视觉特性,因此通常会将颜色从RGB空间域转换到HSV颜色空间进行处理,然后在换回RGB域进行显示。
数学模型
HSV颜色空间可以用一个圆锥来表示,如下图所示:
在这里插入图片描述

如图所示,某一像素的H可以由该点与白色基准线所形成的圆心角表示,H的取值范围为[0,360];某一点的S可以由该点与所在圆面的圆心之间的距离表示,距离越大,饱和度越高,反之越低;某一点的V可以由该点所在圆面与圆锥顶部之间的距离表示,距离越大,亮度越高,反之则越低。

HSI颜色空间
HSI颜色空间中,H和S与HSV颜色空间中的含义相同,I是Intensity(强度)的缩写。HSI颜色空间与HSV颜色空间很相近,但彼此之家并不相同。

数学模型
与HSV颜色空间不同的是,HSI颜色空间可以用以双锥体表示,数学模型如下图:
在这里插入图片描述

如图所示,与HSV颜色空间相比,HSI颜色空间中,H和S仍旧用相同的表示方法,不同的地方在于I的表示不同于V。
RGB到HSV的转换公式
分段函数法

RGB到HSI的转换公式
几何推导法

其他转换方法
RGB到HSI还有其他的转换方法,详情请参考博文RGB到HSI转换.


HSV和HSI区别
HSV (色相hue, 饱和度saturation, 明度value), 也称HSB
(B指brightness) 是艺术家们常用的,因为与加法减法混色的术语相比,使用色相,饱和度等概念描述色彩更自然直观。HSV
是RGB色彩空间的一种变形,它的内容与色彩尺度与其出处——RGB色彩空间有密切联系。

HSL (色相hue, 饱和度saturation, 亮度lightness/luminance),
也称HLS 或 HSI (I指intensity) 与
HSV非常相似,仅用亮度(lightness)替代了明度(brightness)。

二者区别在于,一种纯色的明度等于白色的明度,而纯色的亮度等于中度灰的亮度。

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

HSI颜色空间

在这里插入图片描述

HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析 和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。

HSV(Hue, Saturation, Value)HSI(Hue, Saturation, Intensity)是两种常用的色彩空间模型,它们在结构应用上具有一定的相似性差异性。HSVHSI都试图以更接近人类视觉感知的方式来描述颜色,但在某些关键参数的定义数学模型上有所不同。 ### 色调(Hue)的定义 在HSVHSI颜色空间中,色调(Hue)的定义是相同的。它表示颜色的基本属性,如红色、绿色或蓝色,通常用角度表示,范围是0°到360°,其中0°(或360°)表示红色,120°表示绿色,240°表示蓝色。这一参数反映了人眼对不同波长光的感知[^1]。 ### 饱度(Saturation)的定义 虽然HSVHSI都使用饱度(Saturation)来表示颜色的纯度或强度,但它们的定义方式有所不同。在HSV中,饱度是指颜色相对于纯白的纯度程度,即颜色越接近白色,其饱度越低。而在HSI中,饱度是对纯中值灰度而言的,意味着颜色越接近中值灰度(灰色),其饱度越低[^3]。 ### 明度/亮度(Value/Intensity)的定义 HSVHSI的主要区别在于第三个分量。HSV使用的是明度(Value),表示颜色的亮度,范围是0%(黑)到100%(白)。明度的计算基于RGB三通道中的最大值,即 $ V = \max(R, G, B) $。相比之下,HSI使用的是强度(Intensity),它表示的是颜色的平均亮度,计算方式为 $ I = \frac{R + G + B}{3} $。因此,HSV的明度强调的是颜色的最大亮度,而HSI的强度更接近于人眼感知的平均亮度[^2]。 ### 数学模型几何表示 HSV颜色空间的几何模型是一个圆锥体,其底面代表最大亮度的颜色,顶点代表黑色。HSI颜色空间则可以用一个双锥体模型来描述,两个圆锥的顶点分别代表黑色白色,中间部分代表灰色调。这种结构使得HSI在某些图像处理任务中更符合人类视觉系统的感知特性[^2]。 ### 应用场景 由于HSVHSI都以色调、饱亮度/明度为基础,它们在图像处理计算机视觉中都有广泛应用。HSV在图像分割颜色调整中较为常见,尤其是在需要强调颜色明暗变化的场景下。HSI则在需要更符合人类视觉感知的任务中表现出色,例如图像增强模式识别。HSI的双锥模型能够更清晰地表现色调、亮度度的变化[^1]。 ### 转换关系 HSV与RGB之间的转换可以通过以下公式实现: - 归一化RGB值到[0, 1]范围。 - 计算最大值 $ C_{max} = \max(R, G, B) $ 最小值 $ C_{min} = \min(R, G, B) $。 - 计算差值 $ \Delta = C_{max} - C_{min} $。 - 根据最大值计算色相 $ H $,饱度 $ S = \Delta / C_{max} $,明度 $ V = C_{max} $。 HSI与RGB之间的转换则需要考虑强度 $ I = \frac{R + G + B}{3} $ 度的定义差异。具体转换方法涉及更复杂的数学运算,通常需要借助图像处理库来实现。 ### 示例代码:HSV与RGB转换 ```python import cv2 import numpy as np # 将RGB转换为HSV rgb = np.uint8([[[255, 0, 0]]]) hsv = cv2.cvtColor(rgb, cv2.COLOR_RGB2HSV) print("HSV值:", hsv) # 将HSV转换为RGB hsv = np.uint8([[[0, 255, 255]]]) rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB) print("RGB值:", rgb) ``` ### 示例代码:HSI与RGB转换(需自定义函数) 由于OpenCV等库不直接支持HSI转换,通常需要自定义函数来实现HSI与RGB之间的转换。以下是一个简单的HSI到RGB的转换函数: ```python def hsi_to_rgb(h, s, i): import math h = h * 360 if h >= 360: h = h - 360 h = math.radians(h) if h >= 0 and h < 120: b = i * (1 - s) r = i * (1 + (s * math.cos(h)) / math.cos(math.radians(60) - h)) g = 3 * i - (r + b) elif h >= 120 and h < 240: h = h - 120 r = i * (1 - s) g = i * (1 + (s * math.cos(h)) / math.cos(math.radians(60) - h)) b = 3 * i - (r + g) elif h >= 240 and h < 360: h = h - 240 g = i * (1 - s) b = i * (1 + (s * math.cos(h)) / math.cos(math.radians(60) - h)) r = 3 * i - (g + b) return [r, g, b] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值