java rgb转colour_JAVA图像处理系列(六)—— 色彩转换RGB vs HSL

本文介绍了RGB和HSL色彩模式,以及如何在JAVA中进行RGB到HSL的转换算法。同时提供了调整图像亮度、对比度和饱和度的实现代码,展示了色彩处理在图像操作中的应用。
摘要由CSDN通过智能技术生成

RGB色彩

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色。

HSL色彩( HSL color )

HSL色彩模式是工业界的一种颜色标准,是通过对色相(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色相,饱和度,亮度三个通道的颜色。

H: Hue 色相

S:Saturation 饱和度

L :Lightness 亮度

HSL的H(hue)分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色。色相值的意义在于,我们可以在不改变光感的情况下,通过旋转色相环来改变颜色。

HSL的S(saturation)分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、亮度下色彩纯度的变化。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从理性(灰度)到感性(纯色)的变化。

HSL的L(lightness)分量,指的是色彩的亮度,作用是控制色彩的亮暗变化。它同样使用了0%至100%的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。

RGB转HSL算法

(1)把RGB值转成区间[0,1]内的数值。

(2)找出R,G和B中的最大值。

(3)计算亮度:L=(maxcolor + mincolor)/2

(4)如果最大和最小的颜色值相同,即表示灰色,那么S定义为0,而H未定义并在程序中通常写成0。

(5)否则,根据亮度L计算饱和度S:

If L<0.5, S=(maxcolor-mincolor)/(maxcolor + mincolor)

If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)

(6)计算色调H:

If R=maxcolor, H=(G-B)/(maxcolor-mincolor)

If G=maxcolor, H=2.0+(B-R)/(maxcolor-mincolor)

If B=maxcolor, H=4.0+(R-G)/(maxcolor-mincolor)

H=H*60.0,如果H为负值,则加360。

HSL转RGB算法。

(1)If S=0,表示灰色,定义R,G和B都为L.

(2)否则,测试L:

If L<0.5,temp2=L*(1.0+S)

If L>=0.5,temp2=L+S-L*S

(3)temp1=2.0*L-temp2

(4)把H转换到0~1。

(5)对于R,G,B,计算另外的临时值temp3。方法如下:

for R, temp3=H+1.0/3.0

for G, temp3=H

for B, temp3=H-1.0/3.0

if temp3<0, temp3=temp3+1.0

if temp3>1, temp3=temp3-1.0

(6)对于R,G,B做如下测试:

If 6.0*temp3<1,color=temp1+(temp2-temp1)*6.0*temp3

Else if 2.0*temp3<1,color=temp2

Else if 3.0*temp3<2,

color=temp1+(temp2-temp1)*((2.0/3.0)-temp3)*6.0

Else color=temp1

色彩转换JAVA实现代码

public class TransformColor {

public static final double MaxRGB = 255.0;

public void rgbToHsl(

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值