Coverage for colour/models/rgb/datasets/arri.py: 100%

36 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-15 19:01 +1300

1""" 

2ARRI Colourspaces 

3================= 

4 

5Define the *ARRI* colourspaces: 

6 

7- :attr:`colour.models.RGB_COLOURSPACE_ARRI_WIDE_GAMUT_3`. 

8- :attr:`colour.models.RGB_COLOURSPACE_ARRI_WIDE_GAMUT_4`. 

9 

10References 

11---------- 

12- :cite:`ARRI2012a` : ARRI. (2012). ALEXA - Log C Curve - Usage in VFX. 

13 https://drive.google.com/open?id=1t73fAG_QpV7hJxoQPYZDWvOojYkYDgvn 

14- :cite:`Cooper2022` : Cooper, S., & Brendel, H. (2022). ARRI LogC4 

15 Logarithmic Color Space SPECIFICATION. Retrieved October 24, 2022, from 

16 https://www.arri.com/resource/blob/278790/bea879ac0d041a925bed27a096ab3ec2/\ 

172022-05-arri-logc4-specification-data.pdf 

18""" 

19 

20from __future__ import annotations 

21 

22import typing 

23 

24import numpy as np 

25 

26from colour.colorimetry import CCS_ILLUMINANTS 

27 

28if typing.TYPE_CHECKING: 

29 from colour.hints import NDArrayFloat 

30 

31from colour.models.rgb import ( 

32 RGB_Colourspace, 

33 log_decoding_ARRILogC3, 

34 log_decoding_ARRILogC4, 

35 log_encoding_ARRILogC3, 

36 log_encoding_ARRILogC4, 

37) 

38 

39__author__ = "Colour Developers" 

40__copyright__ = "Copyright 2013 Colour Developers" 

41__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause" 

42__maintainer__ = "Colour Developers" 

43__email__ = "colour-developers@colour-science.org" 

44__status__ = "Production" 

45 

46__all__ = [ 

47 "PRIMARIES_ARRI_WIDE_GAMUT_3", 

48 "WHITEPOINT_NAME_ARRI_WIDE_GAMUT_3", 

49 "CCS_WHITEPOINT_ARRI_WIDE_GAMUT_3", 

50 "MATRIX_ARRI_WIDE_GAMUT_3_TO_XYZ", 

51 "MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_3", 

52 "RGB_COLOURSPACE_ARRI_WIDE_GAMUT_3", 

53 "PRIMARIES_ARRI_WIDE_GAMUT_4", 

54 "WHITEPOINT_NAME_ARRI_WIDE_GAMUT_4", 

55 "CCS_WHITEPOINT_ARRI_WIDE_GAMUT_4", 

56 "MATRIX_ARRI_WIDE_GAMUT_4_TO_XYZ", 

57 "MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_4", 

58 "RGB_COLOURSPACE_ARRI_WIDE_GAMUT_4", 

59] 

60 

61PRIMARIES_ARRI_WIDE_GAMUT_3: NDArrayFloat = np.array( 

62 [ 

63 [0.6840, 0.3130], 

64 [0.2210, 0.8480], 

65 [0.0861, -0.1020], 

66 ] 

67) 

68"""*ARRI Wide Gamut 3* colourspace primaries.""" 

69 

70WHITEPOINT_NAME_ARRI_WIDE_GAMUT_3: str = "D65" 

71"""*ARRI Wide Gamut 3* colourspace whitepoint name.""" 

72 

73CCS_WHITEPOINT_ARRI_WIDE_GAMUT_3: NDArrayFloat = CCS_ILLUMINANTS[ 

74 "CIE 1931 2 Degree Standard Observer" 

75][WHITEPOINT_NAME_ARRI_WIDE_GAMUT_3] 

76"""*ARRI Wide Gamut 3* colourspace whitepoint chromaticity coordinates.""" 

77 

78MATRIX_ARRI_WIDE_GAMUT_3_TO_XYZ: NDArrayFloat = np.array( 

79 [ 

80 [0.638008, 0.214704, 0.097744], 

81 [0.291954, 0.823841, -0.115795], 

82 [0.002798, -0.067034, 1.153294], 

83 ] 

84) 

85"""*ARRI Wide Gamut 3* colourspace to *CIE XYZ* tristimulus values matrix.""" 

86 

87MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_3: NDArrayFloat = np.array( 

88 [ 

89 [1.789066, -0.482534, -0.200076], 

90 [-0.639849, 1.396400, 0.194432], 

91 [-0.041532, 0.082335, 0.878868], 

92 ] 

93) 

94"""*CIE XYZ* tristimulus values to *ARRI Wide Gamut 3* colourspace matrix.""" 

95 

96RGB_COLOURSPACE_ARRI_WIDE_GAMUT_3: RGB_Colourspace = RGB_Colourspace( 

97 "ARRI Wide Gamut 3", 

98 PRIMARIES_ARRI_WIDE_GAMUT_3, 

99 CCS_WHITEPOINT_ARRI_WIDE_GAMUT_3, 

100 WHITEPOINT_NAME_ARRI_WIDE_GAMUT_3, 

101 MATRIX_ARRI_WIDE_GAMUT_3_TO_XYZ, 

102 MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_3, 

103 log_encoding_ARRILogC3, 

104 log_decoding_ARRILogC3, 

105) 

106RGB_COLOURSPACE_ARRI_WIDE_GAMUT_3.__doc__ = """ 

107*ARRI Wide Gamut 3* colourspace. 

108 

109References 

110---------- 

111:cite:`ARRI2012a` 

112""" 

113 

114PRIMARIES_ARRI_WIDE_GAMUT_4: NDArrayFloat = np.array( 

115 [ 

116 [0.7347, 0.2653], 

117 [0.1424, 0.8576], 

118 [0.0991, -0.0308], 

119 ] 

120) 

121"""*ARRI Wide Gamut 4* colourspace primaries.""" 

122 

123WHITEPOINT_NAME_ARRI_WIDE_GAMUT_4: str = "D65" 

124"""*ARRI Wide Gamut 4* colourspace whitepoint name.""" 

125 

126CCS_WHITEPOINT_ARRI_WIDE_GAMUT_4: NDArrayFloat = CCS_ILLUMINANTS[ 

127 "CIE 1931 2 Degree Standard Observer" 

128][WHITEPOINT_NAME_ARRI_WIDE_GAMUT_4] 

129"""*ARRI Wide Gamut 4* colourspace whitepoint chromaticity coordinates.""" 

130 

131MATRIX_ARRI_WIDE_GAMUT_4_TO_XYZ: NDArrayFloat = np.array( 

132 [ 

133 [0.704858320407232064, 0.129760295170463003, 0.115837311473976537], 

134 [0.254524176404027025, 0.781477732712002049, -0.036001909116029039], 

135 [0.000000000000000000, 0.000000000000000000, 1.089057750759878429], 

136 ] 

137) 

138"""*ARRI Wide Gamut 4* colourspace to *CIE XYZ* tristimulus values matrix.""" 

139 

140MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_4: NDArrayFloat = np.linalg.inv( 

141 MATRIX_ARRI_WIDE_GAMUT_4_TO_XYZ 

142) 

143"""*CIE XYZ* tristimulus values to *ARRI Wide Gamut 4* colourspace matrix.""" 

144 

145RGB_COLOURSPACE_ARRI_WIDE_GAMUT_4: RGB_Colourspace = RGB_Colourspace( 

146 "ARRI Wide Gamut 4", 

147 PRIMARIES_ARRI_WIDE_GAMUT_4, 

148 CCS_WHITEPOINT_ARRI_WIDE_GAMUT_4, 

149 WHITEPOINT_NAME_ARRI_WIDE_GAMUT_4, 

150 MATRIX_ARRI_WIDE_GAMUT_4_TO_XYZ, 

151 MATRIX_XYZ_TO_ARRI_WIDE_GAMUT_4, 

152 log_encoding_ARRILogC4, 

153 log_decoding_ARRILogC4, 

154) 

155RGB_COLOURSPACE_ARRI_WIDE_GAMUT_4.__doc__ = """ 

156*ARRI Wide Gamut 4* colourspace. 

157 

158References 

159---------- 

160:cite:`Cooper2022` 

161"""