IDS peak IPL v1.18.0
Loading...
Searching...
No Matches
peak_ipl_color_correction_factors.hpp
Go to the documentation of this file.
1
5
6#pragma once
7
10
11#include <array>
12#include <type_traits>
13#include <limits>
14#include <cmath>
15
20
21namespace peak
22{
23namespace ipl
24{
30{
55 constexpr ColorCorrectionFactors(float facRR, float facGR, float facBR, float facRG, float facGG, float facBG,
56 float facRB, float facGB, float facBB)
57 : factorRR(facRR)
58 , factorGR(facGR)
59 , factorBR(facBR)
60 , factorRG(facRG)
61 , factorGG(facGG)
62 , factorBG(facBG)
63 , factorRB(facRB)
64 , factorGB(facGB)
65 , factorBB(facBB)
66 {}
67
85 constexpr explicit ColorCorrectionFactors(const std::array<float, 9>& factors)
86 : factorRR(factors[0])
87 , factorGR(factors[1])
88 , factorBR(factors[2])
89 , factorRG(factors[3])
90 , factorGG(factors[4])
91 , factorBG(factors[5])
92 , factorRB(factors[6])
93 , factorGB(factors[7])
94 , factorBB(factors[8])
95 {}
96
103 constexpr ColorCorrectionFactors() = default;
104
112
122
132
142
152
163 PEAK_IPL_NO_DISCARD constexpr bool operator==(const ColorCorrectionFactors& other) const
164 {
165 return (isEqual(factorRR, other.factorRR) && isEqual(factorGR, other.factorGR)
166 && isEqual(factorBR, other.factorBR) && isEqual(factorRG, other.factorRG)
167 && isEqual(factorGG, other.factorGG) && isEqual(factorBG, other.factorBG)
168 && isEqual(factorRB, other.factorRB) && isEqual(factorGB, other.factorGB)
169 && isEqual(factorBB, other.factorBB));
170 }
171
181 {
182 return { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
183 }
184
191 PEAK_IPL_NO_DISCARD constexpr std::array<float,9> AsArray() const
192 {
194 }
195
196 float factorRR{};
197 float factorGR{};
198 float factorBR{};
199 float factorRG{};
200 float factorGG{};
201 float factorBG{};
202 float factorRB{};
203 float factorGB{};
204 float factorBB{};
205
206private:
207 template <class T>
208 static constexpr T Absolute(const T& x) noexcept
209 {
210 return x < 0 ? -x : x;
211 }
212
213 template <class T>
214 static constexpr typename std::enable_if<std::numeric_limits<T>::is_iec559, bool>::type isEqual(T x, T y)
215 {
216 return Absolute(x - y) <= std::numeric_limits<T>::epsilon();
217 }
218
219 template <class T>
220 static constexpr typename std::enable_if<std::is_integral<T>::value, bool>::type isEqual(T x, T y)
221 {
222 return x == y;
223 }
224};
225
226} /* namespace ipl */
227} /* namespace peak */
The "peak::ipl" namespace contains the whole image processing library.
#define PEAK_IPL_NO_DISCARD
Definition peak_ipl_attribute_defines.h:20
~ColorCorrectionFactors()=default
Destructor for the ColorCorrectionFactors instance.
float factorBB
Blue-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:204
float factorGB
Green-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:203
float factorGR
Green-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:197
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:199
float factorGG
Green-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:200
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:180
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:163
float factorBG
Blue-Green Factor.
Definition peak_ipl_color_correction_factors.hpp:201
constexpr std::array< float, 9 > AsArray() const
Returns the ColorCorrectionFactors as an array.
Definition peak_ipl_color_correction_factors.hpp:191
constexpr ColorCorrectionFactors(const std::array< float, 9 > &factors)
Constructor for a new ColorCorrectionFactors instance.
Definition peak_ipl_color_correction_factors.hpp:85
float factorBR
Blue-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:198
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:55
float factorRB
Red-Blue Factor.
Definition peak_ipl_color_correction_factors.hpp:202
float factorRR
Red-Red Factor.
Definition peak_ipl_color_correction_factors.hpp:196