M5Unit-COLOR 0.1.0 git rev:ba99933
Loading...
Searching...
No Matches
unit_color_utility.hpp File Reference

Utilities for UnitColor. More...

#include "../unit/unit_TCS3472x.hpp"
#include <cmath>
#include <tuple>
#include <cassert>

Go to the source code of this file.

Classes

struct  m5::unit::tcs3472x::Calibration
 Raw value to determine black and white. More...
 

Namespaces

namespace  m5
 Top level namespace of M5stack.
 

Functions

float m5::unit::tcs3472x::atime_to_ms (const uint8_t a)
 ATIME to ms.
 
float m5::unit::tcs3472x::wtime_to_ms (const uint8_t w, const bool wlong)
 WTIME and WLONG to ms.
 
uint8_t m5::unit::tcs3472x::ms_to_atime (const float ms)
 ms to ATIME
 
std::tuple< uint8_t, bool > m5::unit::tcs3472x::ms_to_wtime (const float ms)
 ms to WTIME and WLONG
 
float m5::unit::tcs3472x::calculateLux (const uint16_t rawR, const uint16_t rawG, const uint16_t rawB, const uint16_t rawC, const float atime_ms, const Gain gc, const float dgf=DGF, const float coefR=R_Coef, const float coefG=G_Coef, const float coefB=B_Coef)
 Calculate Lux.
 
float m5::unit::tcs3472x::calculateColorTemperature (const uint16_t rawR, const uint16_t rawG, const uint16_t rawB, const uint16_t rawC, const float coefCT=CT_Coef, const float offsetCT=CT_Offset)
 Calculate color temperature(degrees Kelvin)
 
uint16_t m5::unit::tcs3472x::calculateSaturation (const uint8_t atime)
 Calculate Saturation.
 
uint16_t m5::unit::tcs3472x::calculateSaturation (const float atime_ms)
 Calculate Saturation.
 
float m5::unit::tcs3472x::calculateCRATIO (const uint16_t rawR, const uint16_t rawG, const uint16_t rawB, const uint16_t rawC)
 Calculate CRATIO.
 
float m5::unit::tcs3472x::calculateCPL (const float atime_ms, const Gain gc, const float dgf=DGF)
 Calculate Counts per Lux (CPL)
 
float m5::unit::tcs3472x::calculateMaxLux (const float atime_ms, const Gain gc, const float dgf=DGF)
 Calculate maximum Lux.
 
template<size_t Size = 256>
M5_UNIT_COLOR_UTILITY_UNIT_COLOR_UTILITY_CONSTEXPR std::array< uint8_t, Size > m5::unit::tcs3472x::make_gamma_table (const float gamma=2.2f)
 Make gamma table.
 

Variables

Coefficients for Lux and CT Equations
constexpr float m5::unit::tcs3472x::GA {1.0f}
 
constexpr float m5::unit::tcs3472x::DF {310.f}
 
constexpr float m5::unit::tcs3472x::DGF {GA * DF}
 
constexpr float m5::unit::tcs3472x::R_Coef {0.136f}
 
constexpr float m5::unit::tcs3472x::G_Coef {1.0f}
 
constexpr float m5::unit::tcs3472x::B_Coef {-0.444f}
 
constexpr float m5::unit::tcs3472x::CT_Coef {3810.f}
 
constexpr float m5::unit::tcs3472x::CT_Offset {1391.f}
 
constexpr float m5::unit::tcs3472x::AT_NORMAL_FACTOR = 2.4f
 
constexpr float m5::unit::tcs3472x::AT_NORMAL_MIN = AT_NORMAL_FACTOR
 
constexpr float m5::unit::tcs3472x::AT_NORMAL_MAX = 256 * AT_NORMAL_FACTOR
 
constexpr float m5::unit::tcs3472x::WT_NORMAL_FACTOR = AT_NORMAL_FACTOR
 
constexpr float m5::unit::tcs3472x::WT_NORMAL_MIN = WT_NORMAL_FACTOR
 
constexpr float m5::unit::tcs3472x::WT_NORMAL_MAX = 256 * WT_NORMAL_FACTOR
 
constexpr float m5::unit::tcs3472x::WT_LONG_FACTOR = 2.4f * 12.f
 
constexpr float m5::unit::tcs3472x::WT_LONG_MIN = WT_LONG_FACTOR
 
constexpr float m5::unit::tcs3472x::WT_LONG_MAX = 256 * WT_LONG_FACTOR
 

Detailed Description

Utilities for UnitColor.

Function Documentation

◆ calculateColorTemperature()

float m5::unit::tcs3472x::calculateColorTemperature ( const uint16_t rawR,
const uint16_t rawG,
const uint16_t rawB,
const uint16_t rawC,
const float coefCT = CT_Coef,
const float offsetCT = CT_Offset )

Calculate color temperature(degrees Kelvin)

Parameters
rawRRaw red value
rawGRaw green value
rawBRaw blue value
rawCRaw clear value
coefCTCoefficient for the color temperature
offsetCTOffset for the the color temperature
Returns
Color temperature(degrees Kelvin)

◆ calculateCPL()

float m5::unit::tcs3472x::calculateCPL ( const float atime_ms,
const Gain gc,
const float dgf = DGF )

Calculate Counts per Lux (CPL)

Parameters
atime_msintegtation time(ms)
gcGain
dgfDevice and Glass Factor
Returns
CPL

◆ calculateCRATIO()

float m5::unit::tcs3472x::calculateCRATIO ( const uint16_t rawR,
const uint16_t rawG,
const uint16_t rawB,
const uint16_t rawC )

Calculate CRATIO.

Parameters
rawRraw red value
rawGraw green value
rawBraw blue value
rawCraw clear value
Returns
CRATIO (0.0f - 1.0f) Guidelines for CRATIO and Light Source Correspondence
Compare Description
CRATIO < 0.1 LED or fluorescent light
0.1 <= CRATIO < 0.25 Sunlight
0.25 <0 CRATIO Incandescent light

◆ calculateLux()

float m5::unit::tcs3472x::calculateLux ( const uint16_t rawR,
const uint16_t rawG,
const uint16_t rawB,
const uint16_t rawC,
const float atime_ms,
const Gain gc,
const float dgf = DGF,
const float coefR = R_Coef,
const float coefG = G_Coef,
const float coefB = B_Coef )

Calculate Lux.

Parameters
rawRRaw red value
rawGRaw green value
rawBRaw blue value
rawCRaw clear value
atime_msIntegtation time(ms)
gcGain
dgfDevice and Glass Factor
coefRCoefficient for the R channel
coefGCoefficient for the G channel
coefBCoefficient for the B channel
Returns
Lux (lx)

◆ calculateMaxLux()

float m5::unit::tcs3472x::calculateMaxLux ( const float atime_ms,
const Gain gc,
const float dgf = DGF )
inline

Calculate maximum Lux.

Parameters
atime_msintegtation time(ms)
gcGain
dgfDevice and Glass Factor
Returns
Lux(lx)

◆ calculateSaturation() [1/2]

uint16_t m5::unit::tcs3472x::calculateSaturation ( const float atime_ms)
inline

Calculate Saturation.

Parameters
atime_msATIME ms value
Returns
Saturation value
Note
Ripple saturation is also considered (in Analog)

◆ calculateSaturation() [2/2]

uint16_t m5::unit::tcs3472x::calculateSaturation ( const uint8_t atime)

Calculate Saturation.

Parameters
atimeATIME raw value
Returns
Saturation value
Note
Ripple saturation is also considered (in Analog)

◆ make_gamma_table()

template<size_t Size = 256>
M5_UNIT_COLOR_UTILITY_UNIT_COLOR_UTILITY_CONSTEXPR std::array< uint8_t, Size > m5::unit::tcs3472x::make_gamma_table ( const float gamma = 2.2f)

Make gamma table.

Template Parameters
SizeTable size
Parameters
gammaGamma value
Returns
std::array<uint8_t, Size> gamma table
Note
Make on compile time if it can