some functions
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import numpy as np
|
||||
|
||||
XYZ2RGB_matrix = np.array([[0.49000,0.17697, 0],[0.31000, 0.81240, 0.01000],[0.20000, 0.01063, 0.99000]])
|
||||
XYZ2RGB_matrix = np.array([[3.2404542, -1.5371385, -0.4985314],
|
||||
[-0.9692660, 1.8760108, 0.0415560],
|
||||
[ 0.0556434, -0.2040259, 1.0572252]])
|
||||
RGB2XYZ_matrix = np.linalg.inv(XYZ2RGB_matrix)
|
||||
|
||||
_CIEXYZ_1931_table = [
|
||||
@@ -482,12 +484,21 @@ data_x = np.array(_CIEXYZ_1931_table)[:,1]
|
||||
data_y = np.array(_CIEXYZ_1931_table)[:,2]
|
||||
data_z = np.array(_CIEXYZ_1931_table)[:,3]
|
||||
|
||||
def XYZ2RGB(XYZ:list)->list:
|
||||
def XYZ2RGB(XYZ):
|
||||
return np.dot(XYZ2RGB_matrix, XYZ)
|
||||
|
||||
def RGB2XYZ(RGB:list)->list:
|
||||
def RGB2XYZ(RGB):
|
||||
return np.dot(RGB2XYZ_matrix, RGB)
|
||||
|
||||
def gamma_correct(c):
|
||||
if c <= 0.0031308:
|
||||
return 12.92 * c
|
||||
else:
|
||||
return 1.055 * (c ** (1 / 2.4)) - 0.055
|
||||
|
||||
def vectorized_gamma_correct(array):
|
||||
return np.where(array <= 0.0031308, 12.92*array, 1.055*np.power(array, 1/2.4)-0.055)
|
||||
|
||||
def wavelength2XYZ(wavelength, intensity):
|
||||
X = np.interp(wavelength, data_wavelength, data_x, 0, 0)
|
||||
Y = np.interp(wavelength, data_wavelength, data_y, 0, 0)
|
||||
@@ -498,3 +509,4 @@ def spectral2XYZ(spectral):
|
||||
X = np.dot(spectral, data_x)
|
||||
Y = np.dot(spectral, data_y)
|
||||
Z = np.dot(spectral, data_z)
|
||||
return np.array([X,Y,Z])
|
||||
|
||||
Reference in New Issue
Block a user