IDS peak IPL v1.16.1
Loading...
Searching...
No Matches
peak_ipl_color_correction_factors.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
15
16#include <array>
17#include <type_traits>
18#include <limits>
19#include <cmath>
20
24namespace peak
25{
26namespace ipl
27{
32{
57 constexpr ColorCorrectionFactors(float facRR, float facGR, float facBR, float facRG, float facGG, float facBG,
58 float facRB, float facGB, float facBB)
59 : factorRR(facRR)
60 , factorGR(facGR)
61 , factorBR(facBR)
62 , factorRG(facRG)
63 , factorGG(facGG)
64 , factorBG(facBG)
65 , factorRB(facRB)
66 , factorGB(facGB)
67 , factorBB(facBB)
68 {}
69
87 constexpr explicit ColorCorrectionFactors(const std::array<float, 9>& factors)
88 : factorRR(factors[0])
89 , factorGR(factors[1])
90 , factorBR(factors[2])
91 , factorRG(factors[3])
92 , factorGG(factors[4])
93 , factorBG(factors[5])
94 , factorRB(factors[6])
95 , factorGB(factors[7])
96 , factorBB(factors[8])
97 {}
98
105 constexpr ColorCorrectionFactors() = default;
106
114
124
134
144
154
165 PEAK_IPL_NO_DISCARD constexpr bool operator==(const ColorCorrectionFactors& other) const
166 {
167 return (isEqual(factorRR, other.factorRR) && isEqual(factorGR, other.factorGR)
168 && isEqual(factorBR, other.factorBR) && isEqual(factorRG, other.factorRG)
169 && isEqual(factorGG, other.factorGG) && isEqual(factorBG, other.factorBG)
170 && isEqual(factorRB, other.factorRB) && isEqual(factorGB, other.factorGB)
171 && isEqual(factorBB, other.factorBB));
172 }
173
183 {
184 return { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
185 }
186
193 PEAK_IPL_NO_DISCARD constexpr std::array<float,9> AsArray() const
194 {
196 }
197
198 float factorRR{};
199 float factorGR{};
200 float factorBR{};
201 float factorRG{};
202 float factorGG{};
203 float factorBG{};
204 float factorRB{};
205 float factorGB{};
206 float factorBB{};
207
208private:
209 template <class T>
210 static constexpr T Absolute(const T& x) noexcept
211 {
212 return x < 0 ? -x : x;
213 }
214
215 template <class T>
216 static constexpr typename std::enable_if<std::numeric_limits<T>::is_iec559, bool>::type isEqual(T x, T y)
217 {
218 return Absolute(x - y) <= std::numeric_limits<T>::epsilon();
219 }
220
221 template <class T>
222 static constexpr typename std::enable_if<std::is_integral<T>::value, bool>::type isEqual(T x, T y)
223 {
224 return x == y;
225 }
226};
227
228} /* namespace ipl */
229} /* namespace peak */
Definition peak_ipl_binning.hpp:25
The "peak::ipl" namespace contains the whole image processing library.
Definition peak_ipl_binning.hpp:23
#define PEAK_IPL_NO_DISCARD
Definition peak_ipl_attribute_defines.h:25
~ColorCorrectionFactors()=default
Destructor for the ColorCorrectionFactors instance.
float factorBB
Blue-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:206
float factorGB
Green-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:205
float factorGR
Green-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:199
constexpr ColorCorrectionFactors()=default
Constructor for a new ColorCorrectionFactors instance.
ColorCorrectionFactors(ColorCorrectionFactors &&o)=default
Copy Constructor for a new ColorCorrectionFactors instance.
ColorCorrectionFactors & operator=(const ColorCorrectionFactors &o)=default
Copy assigment for ColorCorrectionFactors instance.
float factorRG
Red-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:201
float factorGG
Green-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:202
ColorCorrectionFactors(const ColorCorrectionFactors &o)=default
Move constructor for ColorCorrectionFactors instance.
static constexpr ColorCorrectionFactors Identity()
Create an identity matrix.
Definition peak_ipl_color_correction_factors.hpp:182
ColorCorrectionFactors & operator=(ColorCorrectionFactors &&o)=default
Move assignment for ColorCorrectionFactors instance.
constexpr bool operator==(const ColorCorrectionFactors &other) const
Compare ColorCorrectionFactors.
Definition peak_ipl_color_correction_factors.hpp:165
float factorBG
Blue-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:203
constexpr std::array< float, 9 > AsArray() const
Returns the ColorCorrectionFactors as an array.
Definition peak_ipl_color_correction_factors.hpp:193
constexpr ColorCorrectionFactors(const std::array< float, 9 > &factors)
Constructor for a new ColorCorrectionFactors instance.
Definition peak_ipl_color_correction_factors.hpp:87
float factorBR
Blue-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:200
constexpr ColorCorrectionFactors(float facRR, float facGR, float facBR, float facRG, float facGG, float facBG, float facRB, float facGB, float facBB)
Constructor for a new ColorCorrectionFactors instance.
Definition peak_ipl_color_correction_factors.hpp:57
float factorRB
Red-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:204
float factorRR
Red-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:198