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