Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
chromatic_adaptation.h File Reference
+ Include dependency graph for chromatic_adaptation.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum dt_adaptation_t dt_adaptation_t
 

Enumerations

enum  dt_adaptation_t {
  DT_ADAPTATION_LINEAR_BRADFORD = 0 ,
  DT_ADAPTATION_CAT16 = 1 ,
  DT_ADAPTATION_FULL_BRADFORD = 2 ,
  DT_ADAPTATION_XYZ = 3 ,
  DT_ADAPTATION_RGB = 4 ,
  DT_ADAPTATION_LAST
}
 

Functions

static void convert_XYZ_to_bradford_LMS (const dt_aligned_pixel_t XYZ, dt_aligned_pixel_t LMS)
 
static void convert_bradford_LMS_to_XYZ (const dt_aligned_pixel_t LMS, dt_aligned_pixel_t XYZ)
 
static void convert_XYZ_to_CAT16_LMS (const dt_aligned_pixel_t XYZ, dt_aligned_pixel_t LMS)
 
static void convert_CAT16_LMS_to_XYZ (const dt_aligned_pixel_t LMS, dt_aligned_pixel_t XYZ)
 
static void convert_any_LMS_to_XYZ (const dt_aligned_pixel_t LMS, dt_aligned_pixel_t XYZ, const dt_adaptation_t kind)
 
static void convert_any_XYZ_to_LMS (const dt_aligned_pixel_t XYZ, dt_aligned_pixel_t LMS, dt_adaptation_t kind)
 
static void convert_any_LMS_to_RGB (const dt_aligned_pixel_t LMS, dt_aligned_pixel_t RGB, dt_adaptation_t kind)
 
static void bradford_adapt_D65 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, const float p, const int full, dt_aligned_pixel_t lms_out)
 
static void bradford_adapt_D50 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, const float p, const int full, dt_aligned_pixel_t lms_out)
 
static void CAT16_adapt_D65 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, const float D, const int full, dt_aligned_pixel_t lms_out)
 
static void CAT16_adapt_D50 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, const float D, const int full, dt_aligned_pixel_t lms_out)
 
static void XYZ_adapt_D65 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, dt_aligned_pixel_t lms_out)
 
static void XYZ_adapt_D50 (const dt_aligned_pixel_t lms_in, const dt_aligned_pixel_t origin_illuminant, dt_aligned_pixel_t lms_out)
 
static void XYZ_D50_to_D65 (const dt_aligned_pixel_t XYZ_in, dt_aligned_pixel_t XYZ_out)
 
static void XYZ_D65_to_D50 (const dt_aligned_pixel_t XYZ_in, dt_aligned_pixel_t XYZ_out)
 
static void chroma_adapt_pixel (const dt_aligned_pixel_t in, dt_aligned_pixel_t out, const dt_aligned_pixel_t illuminant, const dt_adaptation_t adaptation, const float p)
 
static void convert_D50_to_LMS (const dt_adaptation_t adaptation, dt_aligned_pixel_t D50)
 

Variables

const dt_colormatrix_t XYZ_to_Bradford_LMS
 
const dt_colormatrix_t Bradford_LMS_to_XYZ
 
const dt_colormatrix_t XYZ_to_CAT16_LMS
 
const dt_colormatrix_t CAT16_LMS_to_XYZ
 
const dt_colormatrix_t XYZ_D50_to_D65_CAT16
 
const dt_colormatrix_t XYZ_D50_to_D65_Bradford
 
const dt_colormatrix_t XYZ_D65_to_D50_CAT16
 
const dt_colormatrix_t XYZ_D65_to_D50_Bradford
 

Typedef Documentation

◆ dt_adaptation_t

Enumeration Type Documentation

◆ dt_adaptation_t

Enumerator
DT_ADAPTATION_LINEAR_BRADFORD 
DT_ADAPTATION_CAT16 
DT_ADAPTATION_FULL_BRADFORD 
DT_ADAPTATION_XYZ 
DT_ADAPTATION_RGB 
DT_ADAPTATION_LAST 

Function Documentation

◆ bradford_adapt_D50()

static void bradford_adapt_D50 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
const float  p,
const int  full,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

Referenced by chroma_adapt_pixel().

◆ bradford_adapt_D65()

static void bradford_adapt_D65 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
const float  p,
const int  full,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

◆ CAT16_adapt_D50()

static void CAT16_adapt_D50 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
const float  D,
const int  full,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

Referenced by chroma_adapt_pixel().

◆ CAT16_adapt_D65()

static void CAT16_adapt_D65 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
const float  D,
const int  full,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

◆ chroma_adapt_pixel()

◆ convert_any_LMS_to_RGB()

static void convert_any_LMS_to_RGB ( const dt_aligned_pixel_t  LMS,
dt_aligned_pixel_t  RGB,
dt_adaptation_t  kind 
)
inlinestatic

◆ convert_any_LMS_to_XYZ()

◆ convert_any_XYZ_to_LMS()

◆ convert_bradford_LMS_to_XYZ()

static void convert_bradford_LMS_to_XYZ ( const dt_aligned_pixel_t  LMS,
dt_aligned_pixel_t  XYZ 
)
inlinestatic

◆ convert_CAT16_LMS_to_XYZ()

static void convert_CAT16_LMS_to_XYZ ( const dt_aligned_pixel_t  LMS,
dt_aligned_pixel_t  XYZ 
)
inlinestatic

◆ convert_D50_to_LMS()

static void convert_D50_to_LMS ( const dt_adaptation_t  adaptation,
dt_aligned_pixel_t  D50 
)
inlinestatic

◆ convert_XYZ_to_bradford_LMS()

static void convert_XYZ_to_bradford_LMS ( const dt_aligned_pixel_t  XYZ,
dt_aligned_pixel_t  LMS 
)
inlinestatic

◆ convert_XYZ_to_CAT16_LMS()

static void convert_XYZ_to_CAT16_LMS ( const dt_aligned_pixel_t  XYZ,
dt_aligned_pixel_t  LMS 
)
inlinestatic

◆ XYZ_adapt_D50()

static void XYZ_adapt_D50 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

Referenced by chroma_adapt_pixel().

◆ XYZ_adapt_D65()

static void XYZ_adapt_D65 ( const dt_aligned_pixel_t  lms_in,
const dt_aligned_pixel_t  origin_illuminant,
dt_aligned_pixel_t  lms_out 
)
inlinestatic

◆ XYZ_D50_to_D65()

static void XYZ_D50_to_D65 ( const dt_aligned_pixel_t  XYZ_in,
dt_aligned_pixel_t  XYZ_out 
)
inlinestatic

References dot_product(), and XYZ_D50_to_D65_CAT16.

Referenced by pipe_RGB_to_Ych().

◆ XYZ_D65_to_D50()

static void XYZ_D65_to_D50 ( const dt_aligned_pixel_t  XYZ_in,
dt_aligned_pixel_t  XYZ_out 
)
inlinestatic

Variable Documentation

◆ Bradford_LMS_to_XYZ

const dt_colormatrix_t Bradford_LMS_to_XYZ
Initial value:
= { { 0.9870f, -0.1471f, 0.1600f, 0.f },
{ 0.4323f, 0.5184f, 0.0493f, 0.f },
{ -0.0085f, 0.0400f, 0.9685f, 0.f } }

Referenced by convert_bradford_LMS_to_XYZ(), and convert_bradford_LMS_to_XYZ().

◆ CAT16_LMS_to_XYZ

const dt_colormatrix_t CAT16_LMS_to_XYZ
Initial value:
= { { 1.862068f, -1.011255f, 0.149187f, 0.f },
{ 0.38752f , 0.621447f, -0.008974f, 0.f },
{ -0.015841f, -0.034123f, 1.049964f, 0.f } }

Referenced by convert_CAT16_LMS_to_XYZ(), and convert_CAT16_LMS_to_XYZ().

◆ XYZ_D50_to_D65_Bradford

const dt_colormatrix_t XYZ_D50_to_D65_Bradford
Initial value:
= { { 0.95547342f, -0.02309845f, 0.06325924f, 0.f },
{ -0.02836971f, 1.00999540f, 0.02104144f, 0.f },
{ 0.01231401f, -0.02050765f, 1.33036593f, 0.f } }

◆ XYZ_D50_to_D65_CAT16

const dt_colormatrix_t XYZ_D50_to_D65_CAT16
Initial value:
= { { 9.89466254e-01f, -4.00304626e-02f, 4.40530317e-02f, 0.f },
{ -5.40518733e-03f, 1.00666069e+00f, -1.75551955e-03f, 0.f },
{ -4.03920992e-04f, 1.50768030e-02f, 1.30210211e+00f, 0.f } }

Referenced by commit_params(), filmic_v4_prepare_matrices(), process(), and XYZ_D50_to_D65().

◆ XYZ_D65_to_D50_Bradford

const dt_colormatrix_t XYZ_D65_to_D50_Bradford
Initial value:
= { { 1.04792979f, 0.02294687f, -0.05019227f, 0.f },
{ 0.02962781f, 0.99043443f, -0.0170738f, 0.f },
{ -0.00924304f, 0.01505519f, 0.75187428f, 0.f } }

◆ XYZ_D65_to_D50_CAT16

const dt_colormatrix_t XYZ_D65_to_D50_CAT16
Initial value:
= { { 1.01085433e+00f, 4.07086103e-02f, -3.41445825e-02f, 0.f },
{ 5.42814201e-03f, 9.93581926e-01f, 1.15592039e-03f, 0.f },
{ 2.50722468e-04f, -1.14918759e-02f, 7.67964947e-01f, 0.f } }

Referenced by filmic_v4_prepare_matrices(), process(), and XYZ_D65_to_D50().

◆ XYZ_to_Bradford_LMS

const dt_colormatrix_t XYZ_to_Bradford_LMS
Initial value:
= { { 0.8951f, 0.2664f, -0.1614f, 0.f },
{ -0.7502f, 1.7135f, 0.0367f, 0.f },
{ 0.0389f, -0.0685f, 1.0296f, 0.f } }

Referenced by convert_XYZ_to_bradford_LMS(), and convert_XYZ_to_bradford_LMS().

◆ XYZ_to_CAT16_LMS

const dt_colormatrix_t XYZ_to_CAT16_LMS
Initial value:
= { { 0.401288f, 0.650173f, -0.051461f, 0.f },
{ -0.250268f, 1.204414f, 0.045854f, 0.f },
{ -0.002079f, 0.048952f, 0.953127f, 0.f } }

Referenced by convert_XYZ_to_CAT16_LMS(), and convert_XYZ_to_CAT16_LMS().