IDS peak IPL v1.17.0
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
25
26namespace peak
27{
28namespace ipl
29{
34{
59 constexpr ColorCorrectionFactors(float facRR, float facGR, float facBR, float facRG, float facGG, float facBG,
60 float facRB, float facGB, float facBB)
61 : factorRR(facRR)
62 , factorGR(facGR)
63 , factorBR(facBR)
64 , factorRG(facRG)
65 , factorGG(facGG)
66 , factorBG(facBG)
67 , factorRB(facRB)
68 , factorGB(facGB)
69 , factorBB(facBB)
70 {}
71
89 constexpr explicit ColorCorrectionFactors(const std::array<float, 9>& factors)
90 : factorRR(factors[0])
91 , factorGR(factors[1])
92 , factorBR(factors[2])
93 , factorRG(factors[3])
94 , factorGG(factors[4])
95 , factorBG(factors[5])
96 , factorRB(factors[6])
97 , factorGB(factors[7])
98 , factorBB(factors[8])
99 {}
100
107 constexpr ColorCorrectionFactors() = default;
108
116
126
136
146
156
167 PEAK_IPL_NO_DISCARD constexpr bool operator==(const ColorCorrectionFactors& other) const
168 {
169 return (isEqual(factorRR, other.factorRR) && isEqual(factorGR, other.factorGR)
170 && isEqual(factorBR, other.factorBR) && isEqual(factorRG, other.factorRG)
171 && isEqual(factorGG, other.factorGG) && isEqual(factorBG, other.factorBG)
172 && isEqual(factorRB, other.factorRB) && isEqual(factorGB, other.factorGB)
173 && isEqual(factorBB, other.factorBB));
174 }
175
185 {
186 return { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
187 }
188
195 PEAK_IPL_NO_DISCARD constexpr std::array<float,9> AsArray() const
196 {
198 }
199
200 float factorRR{};
201 float factorGR{};
202 float factorBR{};
203 float factorRG{};
204 float factorGG{};
205 float factorBG{};
206 float factorRB{};
207 float factorGB{};
208 float factorBB{};
209
210private:
211 template <class T>
212 static constexpr T Absolute(const T& x) noexcept
213 {
214 return x < 0 ? -x : x;
215 }
216
217 template <class T>
218 static constexpr typename std::enable_if<std::numeric_limits<T>::is_iec559, bool>::type isEqual(T x, T y)
219 {
220 return Absolute(x - y) <= std::numeric_limits<T>::epsilon();
221 }
222
223 template <class T>
224 static constexpr typename std::enable_if<std::is_integral<T>::value, bool>::type isEqual(T x, T y)
225 {
226 return x == y;
227 }
228};
229
230} /* namespace ipl */
231} /* namespace peak */
The "peak::ipl" namespace contains the whole image processing library.
#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:208
float factorGB
Green-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:207
float factorGR
Green-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:201
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:203
float factorGG
Green-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:204
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:184
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:167
float factorBG
Blue-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:205
constexpr std::array< float, 9 > AsArray() const
Returns the ColorCorrectionFactors as an array.
Definition peak_ipl_color_correction_factors.hpp:195
constexpr ColorCorrectionFactors(const std::array< float, 9 > &factors)
Constructor for a new ColorCorrectionFactors instance.
Definition peak_ipl_color_correction_factors.hpp:89
float factorBR
Blue-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:202
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:59
float factorRB
Red-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:206
float factorRR
Red-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:200