Android Camera 实时滤镜(六)
来源:互联网 发布:红苹果视频矩阵 编辑:程序博客网 时间:2024/05/21 17:24
HSL色彩模式
1、颜色HSL
H: hue 色调
S: saturation 饱和度
L: lum 亮度
2、概述
- HSL色彩模式是工业界的一种颜色标准,是通过对色调(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
- HSL色彩模式使用HSL模型为图像中每一个像素的HSL分量分配一个0~255范围内的强度值。HSL图像只使用三种通道,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。
- 在 HSL 模式下,每种 HSL 成分都可使用从 0到 255的值。(其中L是从黑(0)到白(255)渐变) 。
3、HSL与RGB转换
a) RGB→HSL的算法描述
步骤1:把RGB值转成【0,1】中数值。
步骤2:找出R,G和B中的最大值。
步骤3:设L=(maxcolor + mincolor)/2
步骤4:如果最大和最小的颜色值相同,即表示灰色,那么S定义为0,而H未定义并在程序中通常写成0。
步骤5:否则,测试L:
If L<0.5, S=(maxcolor-mincolor)/(maxcolor + mincolor)
If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)
步骤6: 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)
步骤7:从第6步的计算看,H分成0~6区域。RGB颜色空间是一个立方体而HSL颜色空间是两个六角形锥体,其中的L是RGB立方体的主对角线。因此,RGB立方体的顶点:红、黄、绿、青、蓝和品红就成为HSL六角形的顶点,而数值0~6就告诉我们H在哪个部分。H=H*60.0,如果H为负值,则加360。
b) 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*-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
实例
- Android Camera 实时滤镜(六)
- Android Camera 实时滤镜
- Android Camera 实时滤镜(一)
- Android Camera 实时滤镜(三)
- Android Camera 实时滤镜(四)
- Android Camera 实时滤镜(五)
- Android Camera 实时滤镜(七)
- Android Camera 实时滤镜(八)
- Android Camera 实时滤镜 (二)
- Android平台Camera实时滤镜实现方法探讨(六)--创建帧缓存对象(FBO)加速实时滤镜处理
- 【Camera】Android平台Camera实时滤镜实现方法
- Android平台Camera实时滤镜实现方法探讨(八)--滤镜基本制作方法(二)简单美颜滤镜
- Android平台Camera实时滤镜实现方法探讨(八)--滤镜基本制作方法(二)简单美颜滤镜
- Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜
- Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜
- Android平台Camera实时滤镜实现方法探讨(十)--代码地址以及简介(20160118更新)
- [Android-Camera开发]Android平台Camera实时预览数据处理即实时滤镜实现方法探讨(三)--通过Shader实现YUV转换RBG
- Android平台Camera实时滤镜实现方法探讨(四)--以Hefe滤镜为例
- delegate, notification和kvo模式实现通信的优缺点
- Linux-(4)Linux时间和日期
- adobe reader x增加书签功能
- 3种for循环 使用方法
- openCV学习笔记(8):利用cvSetImageROI截取/裁剪图片
- Android Camera 实时滤镜(六)
- struts2输入校验(附ActionName-validate.xml文件中正则表达式不起作用的解决方案),PS:有点问题希望知道的人指点下
- 欢迎使用CSDN-markdown编辑器
- spring扫描自定义注解并进行操作
- Ruby gem: Mac 系统下的安装与更新
- IOS开发语言Swift入门连载---析构过程
- Android性能优化之运算篇
- hdu1754 I Hate It
- Linux-(5)Linux下查看文件