色彩三要素
其中明度和纯度感官差异上有些区分不开,可以借助如下定义
- 纯度:颜色中灰色含量的多少
- 亮度:颜色中黑白占比的多少

因为明亮和饱和的颜色都会对眼睛有明显的刺激,反正我是分不太清。
RGB
光学三原色:红绿蓝
颜料三原色:红黄蓝
虽然我们最常听说的就是RGB,但我得强调一点,这只是最物理的表达方式,而非人最容易接受的方式。
在电视或液晶显示上面,通常使用这种办法,由于最物理,开发也最适合。
不过这种混杂生色,除了基色,加上黑白灰,其他颜色并不好掌握,至少对我来说是的。

RGB空间中,每个坐标的本身代表一种基色,值的大小代表的是明度。
所以原点是无明的黑,最远点是无暗的白。
可以发现一个关键点:RGB空间是没有纯度的度量的
同样,对于组合色:RGB空间没有色相的度量
其他的颜色就是空间中的坐标点,三原色依据不同亮度进行的组合,总量共有
total=256×256×256=1677216=224
RGB空间当中,比较诟病的是
- 没有准确的色相的表述
- 没有准确的明度的表述
- 色相和明度的混杂组合
对于照片,我只想单独做色相或者纯度,抑或是明度的修改,我得同时对三个通道进行修改。
不可能对单一属性做直接的修改。
正是易实现,难表达,难修改
YUV
看过黑白电视或者素描的都知道,我们就算变成熊猫,就算只有黑白,其实问题也不大。
也就是说,对于色彩表示,明暗的表现力更甚颜色。限于技术,也是需求决定,明暗始终先行。
YUV的出现,也是基于现实因素。
当时正处于彩色电视发展的阶段,如何去兼容黑白电视和彩色电视成了问题。
采用RGB进行传输的话,实现上确实简单,但是存在两个痛点
- 必须同时传输三组分量,带宽占用消耗大
- 黑白电视并不直接支持
如果让人升级网络,还要买彩电,受众就只有土豪了吧。
但是如果维护两种信号线路,不仅成本增加,对于单一产品,还得两种编码,更繁琐了。
基于此,需要一种新的技术来做整合
- 能够单独控制明暗
- 而且能够填充色彩
- 最好可以分开传输
YUV正是这样的技术,它着重于明度的控制,可以后续填充颜色,而且两种信号并非绑定。
降低了带宽消耗,对于黑白电视,只需要Y明度变化就可以做到兼容。
现在来说,明度控制依旧是它的优势,不过缺点仍然存在
YUV中,除了Y是独立的亮度,UV两个一般都是联合使用的,仍然存在一定的交杂,色彩的控制并不单一。
RGB⇒YUV齐次矩阵:⎣⎡YUV⎦⎤YUV=>RGB齐次矩阵:⎣⎡RGB⎦⎤:⎩⎨⎧Y=U=V=0.299R+0.587G+0.144B−0.147R−0.289G+0.436B0.615R−0.515G−0.100B=⎣⎡0.299−0.1470.6150.587−0.2890.5150.1440.436−0.100⎦⎤⎣⎡RGB⎦⎤:⎩⎨⎧R=G=B=YYY+−+00.39U2.03U+−+1.14V0.58V0=⎣⎡1110−0.392.031.14−0.580⎦⎤⎣⎡YUV⎦⎤
如果指向调节明暗度,转换成YUV是最好的选择。
HSV
| field |
words |
name |
H |
Hue |
色相 |
S |
Saturation |
饱和度 |
V |
Value |
明度 |
所以说,这是最贴近人感官体验的颜色表示方法。
当想改变图像变化的时候,这是最能够按照人的习惯进行调整的色彩度量模式。
它的色彩空间是这样的

上色以后

其中三个分量的单位分别是
| attribute |
name |
description |
H |
色度 |
角度表示,h∈[0,360]
|
S |
饱和度 |
百分比表示,s∈[0,100](%)
|
V |
亮度 |
v∈[0,max],最大值取决于计算机存储 |
RGB⇒HSV
conditionhsv={max=max(R,G,B)min=min(R,G,B)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧0∘60∘×max−ming−b+0∘60∘×max−ming−b+360∘60∘×max−minb−r+120∘60∘×max−minr−g+240∘ifififififmax=max=max=max=max=minr&g≥br&g<bgb={0maxmax−min=1−maxminifmaxotherwise=0=max
HSV⇒RGB
hifpqt(R,G,B)≡⌊60h⌋(mod6)=60h−hi=v×(1−s)=v×(1−f×s)=v times(1−(1−f)×s)=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧(v,t,p)(q,v,p)(p,v,t)(p,q,v)(t,p,v)(v,p,q)ififififififhi=0hi=1hi=2hi=3hi=4hi=5