色相(H)饱和度(S)明度(L)与RGB的转换以及在android上的试验
最近突然想在android的SurfaceView上实现一个类似windows上画图颜色选择面板那种颜色和彩虹差不多排列的效果,以下是尝试。
HSL的H(hue)分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色。色相值的意义在于,我们可以在不改变光感的情况下,通过旋转色相环来改变颜色。在实际应用中,我们需要记住色相环上的六大主色,用作基本参照:360°/0°红、60°黄、120°绿、180°青、240°蓝、300°洋红,它们在色相环上按照60°圆心角的间隔排列。
HSL的S(saturation)分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、明度下色彩纯度的变化。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从理性(灰度)到感性(纯色)的变化。
HSL的L(lightness)分量,指的是色彩的明度,作用是控制色彩的明暗变化。它同样使用了0%至100%的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。
2,由步骤5的式子可以看出 S(饱和度)与图像的最多颜色成分和最少的颜色成分的差量有关。 S(饱和度)越小,图像越趋于灰度图像。 S(饱和度)越大,图像越鲜艳,给人的感觉是彩色的,而不是黑白灰的图像。
3, H( 色调 )决定了人对图像的不同的颜色感受。
4,从第6步的计算看, H( 色调 )分成0~6区域。RGB颜色空间是一个立方体而HSL颜色空间是两个六角形锥体,其中的 H( 色调 )是RGB立方体的主对角线。因此,RGB立方体的顶点:红、黄、绿、青、蓝和 品红就成为HSL六角形的顶点,而数值0~6就告诉我们 H( 色调 )在哪个部分。
private void HSL2RGB(double H, double S, double L){//此处HSL均转化到(0, 1)
double var1, var2;
if(S == 0){
R = (int)(L * 255.0);
G = (int)(L * 255.0);
B = (int)(L * 255.0);
}else{
if(L < 0.5)
var2 = L * (1 + S);
else
var2 = (L + S) - (S * L);
var1 = 2.0 * L - var2;
R = (int)(255.0 * Hue2RGB(var1, var2, H + (1.0/3.0)));
G = (int)(255.0 * Hue2RGB(var1, var2, H));
B = (int)(255.0 * Hue2RGB(var1, var2, H - (1.0/3.0)));
}
}
private double Hue2RGB(double v1, double v2, double vH){
if (vH < 0)
vH += 1;
if (vH > 1)
vH -= 1;
if (6.0 * vH < 1)
return v1 + (v2 - v1) * 6.0 * vH;
if (2.0 * vH < 1)
return v2;
if (3.0 * vH < 2)
return v1 + (v2 - v1) * ((2.0 / 3.0) - vH) * 6.0;
return (v1);
}
色相(H)饱和度(S)明度(L)与RGB的转换以及在android上的试验相关推荐
- 1 色相、饱和度、明度定义
色彩三要素(Elements of color)色彩可用的色调(色相).饱和度(纯度)和明度来描述.人眼看到的任一彩色光都是这三个特性的综合效果,这三个特性即是色彩的三要素,其中色调与光波的波长有直接 ...
- PS的一些基础概念(分辨率,色相,饱和度,明度,RGB)
分辨率:每单位大小所包含的像素点 像素点不一定是正方形的,有各种各样的形状 像素图VS矢量图 像素图 :图片的成像效果更好 矢量图:将分辨率改变,而不影响成像效果 像素图可以通过(图层 - 智能对象 ...
- 讲一点色相、饱和度、明度
色相.色轮.饱和度.明度 知道色轮吗? 哈哈其实就是很多种颜色的一个组成表示方法,不同的色彩原理对于三原色的认知也不同,有的说RGB,有的是CMYK,还有的不同.色轮里没白色,那是RGB三种颜色勾搭出 ...
- PS 色相、饱和度和明度
https://www.toutiao.com/i6648045074137481735/?group_id=6648045074137481735&wid=1626089325192 色相: ...
- 通俗解释色相和饱和度和明度
走在大街上,看了一个女生穿着 "红色" 的衣服,这个 红色 就是色相, 上午看这个女生,阳光充足打在她的衣服上 反射到了眼睛里面 感觉好亮,这个就是明度,傍晚觉得没有那么 ...
- 图像处理术语解释:灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA以及Premultiplied Alpha(Alpha预乘)等基础概念详解
☞ ░ 前往老猿Python博文目录 ░ 一.引言 由于老猿以前没接触过图像处理,在阅读moviepy代码时,对类的有些处理方法代码看不懂是什么含义,为此花了4天时间查阅了大量资料,并加以自己的理解和 ...
- 【计算视觉】理解图像中基本概念:色调、色相、饱和度、对比度、亮度
理解图像中基本概念:色调.色相.饱和度.对比度.亮度 对比度: 对比度指不同颜色之间的差别.对比度越大,不同颜色之间的反差越大,即所谓黑白分明,对比度过大,图像就会显得很刺眼.对比度越小,不同颜色之间 ...
- 基本概念:色调、色相、饱和度、对比度、亮度
对比度: 对比度指不同颜色之间的差别.对比度越大,不同颜色之间的反差越大,即所谓黑白分明,对比度过大,图像就会显得很刺眼.对比度越小,不同颜色之间的反差就越小. 亮度: 亮度指照射在景物或图像上光线的 ...
- 在QT框架下进行仿照PS图像调整功能设计(亮度对比度,色相饱和度及明度)
原文链接:https://blog.csdn.net/maozefa/article/details/4778934 图像亮度调整分为非线性和线性两种方法. 非线性图像亮度是将图像像素的R.G.B分别 ...
最新文章
- Replace函数语法
- 华为vrrp默认优先级_华为eNSP配置VRRP协议实验
- PPT 下载 | 神策数据刘乐:智能推荐驱动业务增长应用与实践
- iOS再现安全漏洞 “1970变砖”问题仍未解决
- python制作饼状图
- JeecgBoot版本4月份新版即将发布,抢先体验。。
- c语言除法在全局区,深入C语言内存区域分配(进程的各个段)详解
- mysql 针对table的查看命令行
- (传播智客)刘意Java基础班精华版
- eclipse中文版
- c语言程序调试时无法启动程序,编译没有异常,调试时报错: 无法启动程序“C:Projects\Driver\mydriver_check\HelloDDk.sys...
- 硬盘读写性能iozone测试方法及下载
- POI 合并单元格后设置列宽自适应的问题
- python练习-华氏转摄氏
- 【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
- VJ第一周算法题(A - Mud Puddles)
- I 帧和 IDR 帧的区别
- 69、Android获取每日运动步数
- c语言plc库,PLC编程-C语言.ppt
- vue-cli cdn方式引入Vue模块