summaryrefslogtreecommitdiff
path: root/color/chromaticity.py
blob: fbd812ac9620f4e02964f59fb8dfd5ff7232836d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
import os

dir = os.path.split(os.path.realpath(__file__))[0]

f = open(dir + '/sbrgb10w.csv')

color_map = []
for line in f:
    color_map.append([float(s) for s in line.split(',')])

f.close()

color_map = np.array(color_map)

# zero negative coefficients
color_map[color_map < 0] = 0

# normalize coefficients
for i in range(len(color_map)):
    color_map[i,1:] /= np.sum(color_map[i,1:])

def map_wavelength(wavelength):
    r = np.interp(wavelength, color_map[:,0], color_map[:,1])
    g = np.interp(wavelength, color_map[:,0], color_map[:,2])
    b = np.interp(wavelength, color_map[:,0], color_map[:,3])

    if np.iterable(wavelength):
        rgb = np.empty((len(wavelength),3))

        rgb[:,0] = r
        rgb[:,1] = g
        rgb[:,2] = b

        return rgb
    else:
        return np.array([r,g,b])