some functions

This commit is contained in:
2023-11-10 02:01:47 -05:00
parent 0d92049889
commit 0b0c8624c5
3 changed files with 90 additions and 7 deletions

View File

@@ -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])