rgb和Lab,rgb和hsl的色彩空间转换

博主欢迎转载,但请一定要给出原文链接,标注出处!!!谢谢~
http://blog.csdn.net/sunny_xsc1994/article/details/78541079
特别不喜欢那些随便转载别人的原创文章又不给出链接的
所以不准偷偷复制博主的博客噢~~

色彩空间转换

最近因为一直在涉及图形处理方面的东西,所以免不了要涉及到色彩的转化,网上找了合适的rgb2lab以及rgb2hsl的代码。

但是在用的时候,一般对于一张图来说,至少几十万的像素点,一个个的像素点转化太费时间了。因此,索性重写了转化代码,可以对n个色彩同时进行转化,采用矩阵运算,速度飞快。

代码是python的,需要有numpy环境,代码下载地址见文章最后。

RGB:0…255
LAB:

L:Lightness 0...100  
A:  -128...127 
B:  -128...127

HSL:

h(float): hue 0...1 
s(float): Saturation 0...1  (0=toward grey, 1=pure color)
l(float): Lightness 0...1  (0=black 0.5=pure color 1=white)

rgb2lab,lab2rgb

单个色彩转换

import LAB
rgb=[123,245,211]
lab=LAB.rgb2lab(rgb)
rgb=LAB.lab2rgb(lab)

多个色彩转换

import LAB
import numpy as np
colors=np.random.randint(0,255,size=(900*600,3))
labs=LAB.rgb2lab_matrix(colors)
rgbs=LAB.lab2rgb_matrix(labs)

rgb2hsl,hsl2rgb

单个色彩转换

import HSL
rgb=[123,245,211]
hsl=HSL.rgb2hsl(rgb)
rgb=HSL.hsl2rgb(hsl)

多个色彩转换

import LAB
import numpy as np
colors=np.random.randint(0,255,size=(900*600,3))
hsls=LAB.rgb2hsl_matrix(colors)
rgbs=LAB.hsl2rgb_matrix(hsls)

时间比较

n为600*900大小的数据,可以发现,矩阵运算速度是真的快。

|   time   | single for n times | matrix |
| -------- |:------------------:|:------:|
| rgb2lab  |      5.923s        | 0.234s |
| lab2rgb  |      7.313s        | 0.235s |
|          |                    |        |
| rgb2hsl  |      4.782s        | 0.156s |
| hsl2rgb  |      3.249s        | 0.140s |

代码地址

请戳github

猜你喜欢

转载自blog.csdn.net/sunny_xsc1994/article/details/78541079