-
Notifications
You must be signed in to change notification settings - Fork 0
/
False_Color_LUT.py
86 lines (63 loc) · 2.31 KB
/
False_Color_LUT.py
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import colour
import numpy
import pathlib
output_config_directory = ""
output_LUTs_directory = ""
x_input = numpy.linspace([0.00, 0.00, 0.00], [1.00, 1.00, 1.00], 4096)
# define breaking points, numbers are percentages
white_lower = 97
red_lower = 80
orange_lower = 55
yellow_lower = 35
green_yellow_lower = 22
mid_grey_lower = 16
green_cyan_lower = 5
cyan_lower = 0.5
blue_cyan_lower = 0.05
blue_lower = 0.0001
black_lower = 0
def false_color(col):
col = colour.models.exponent_function_basic(col, 2.5, 'basicFwd')
col = col * 100
original = col
# black zone
col = colour.algebra.lerp(numpy.greater(original, black_lower), col, [0.0, 0.0, 0.0])
# blue zone
col = colour.algebra.lerp(numpy.greater(original, blue_lower), col, [0.0, 0.0, 1.0])
# blue cyan zone
col = colour.algebra.lerp(numpy.greater(original, blue_cyan_lower), col, [0.0, 0.5, 1.0])
# cyan zone
col = colour.algebra.lerp(numpy.greater(original, cyan_lower), col, [0.0, 1.0, 1.0])
# green cyan zone
col = colour.algebra.lerp(numpy.greater(original, green_cyan_lower), col, [0.0, 1.0, 0.5])
# middle grey zone
col = colour.algebra.lerp(numpy.greater(original, mid_grey_lower), col, [0.5, 0.5, 0.5])
# green yellow zone
col = colour.algebra.lerp(numpy.greater(original, green_yellow_lower), col, [0.5, 1, 0.0])
# yellow zone
col = colour.algebra.lerp(numpy.greater(original, yellow_lower), col, [1.0, 1.0, 0.0])
# orange zone
col = colour.algebra.lerp(numpy.greater(original, orange_lower), col, [1.0, 0.5, 0.0])
# red zone
col = colour.algebra.lerp(numpy.greater(original, red_lower), col, [1.0, 0.0, 0.0])
# white zone
col = colour.algebra.lerp(numpy.greater(original, white_lower), col, [1.0, 1.0, 1.0])
return col
y_LUT = false_color(x_input)
LUT_name = "AgX_False_Color"
LUT_safe = LUT_name.replace(" ", "_")
LUT = colour.LUT3x1D(
table=y_LUT,
name="AgX_False_Color"
)
try:
output_directory = pathlib.Path(output_config_directory)
LUTs_directory = output_directory / output_LUTs_directory
LUT_filename = pathlib.Path(
LUTs_directory / "{}.spi1d".format(LUT_safe)
)
LUTs_directory.mkdir(parents=True, exist_ok=True)
colour.io.luts.write_LUT(LUT, LUT_filename, method="Sony SPI1D")
print(LUT)
except Exception as ex:
raise ex