图像处理
——
饱和度调整算法(
python
语⾔)
饱和度调整算法说明(完整
python
代码在⽂末):
本算法主要是利⽤HSL颜⾊空间进⾏饱和度S的上下限控制,对RGB空间进⾏补丁式调整。调整过程在RGB空间进⾏,其原理简单地说就是
判断每个像素的R、G、B值是否⼤于或⼩于平均值,⼤于加上调整值,⼩于则减去调整值,如何计算各个像素点的调整系数是关键。本算法
主体思想就是利⽤HSL来计算各点的调整系数。
算法过程如下:
1.
⾸先将
RGB
空间图像转换为
HSL
空间,⽤来对饱和度
S
进⾏上下限控制,这⾥不考虑⾊相
H
差异。
转换公式如下:
其中L表⽰亮度,S表⽰饱和度,min和max代表RGB空间中的R、G、B颜⾊值中的最⼩最⼤值,范围均为0-1的实数。
设置饱和度增量increment,范围为-1⾄1,并由此计算出适⽤于RGB空间的调整系数进⾏饱和度调整。
这⾥分两种情况:
1) 当增量i (increment) >= 0时,此时饱和度采⽤指数型增长⽅式调整。考虑到当前饱和度s与增量i之和可能⼤于1,超出饱和度上限,故
仅仅考虑i作为调整依据不妥。在此选定当i+s⼤于1时,取s补数作为调整依据(s补数越⼤,调整越⼤);当i+s⼩于1,取i作为调整依据(i
越⼤,调整越⼤)。RGB空间的调整系数alpha公式如下:
其中s代表当前饱和度,i代表设置的饱和度增量(increment)。
2) 当增量i (increment) < 0时,此时饱和度采⽤线性减弱⽅式调整。考虑到当i取-1时,R、G、B值会相等,可以直接采⽤线性的⽅式作
调整。RGB空间的调整系数alpha如下: