IDS peak ICV v1.1.0
Loading...
Searching...
No Matches
peak_icv_distortion_coefficients.hpp
Go to the documentation of this file.
1
11#pragma once
12
15#include <peak_icv_c/algorithms/calibration/peak_icv_intrinsic_parameters.h>
16#include <algorithm>
17#include <array>
18#include <vector>
19
20namespace peak
21{
22namespace icv
23{
24
36using RadialDistortion = std::array<double, 6>;
37
50using TangentialDistortion = std::array<double, 2>;
51
63using PrismDistortion = std::array<double, 4>;
64
76using TiltDistortion = std::array<double, 2>;
77
116{
117public:
123 DistortionCoefficients(const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion);
124
131 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion);
132
138 DistortionCoefficients(const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion,
139 const PrismDistortion& prismDistortion, const TiltDistortion& tiltDistortion);
140
146 PEAK_COMMON_NO_DISCARD RadialDistortion GetRadialDistortion() const;
147
153 PEAK_COMMON_NO_DISCARD TangentialDistortion GetTangentialDistortion() const;
154
160 PEAK_COMMON_NO_DISCARD PrismDistortion GetPrismDistortion() const;
161
167 PEAK_COMMON_NO_DISCARD TiltDistortion GetTiltDistortion() const;
168
169 bool operator==(const DistortionCoefficients& rhs) const;
170
171private:
172 friend peak::common::detail::BackendAccessor<DistortionCoefficients>;
173
174 explicit DistortionCoefficients(const peak_icv_distortion_coefficients& distortionConditions);
175
176 RadialDistortion m_radialDistortion{};
177 TangentialDistortion m_tangentialDistortion{};
178 PrismDistortion m_prismDistortion{};
179 TiltDistortion m_tiltDistortion{};
180};
181
183 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion)
184 : DistortionCoefficients(radialDistortion, tangentialDistortion, {})
185{}
186
188 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion)
189 : DistortionCoefficients(radialDistortion, tangentialDistortion, prismDistortion, {})
190{}
191
193 const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion, const TiltDistortion& tiltDistortion)
194 : m_radialDistortion{ radialDistortion }
195 , m_tangentialDistortion{ tangentialDistortion }
196 , m_prismDistortion{ prismDistortion }
197 , m_tiltDistortion{ tiltDistortion }
198{}
199
200inline DistortionCoefficients::DistortionCoefficients(const peak_icv_distortion_coefficients& distortionConditions)
201{
202 std::copy_n(distortionConditions.radial_distortion.coefficients, m_radialDistortion.size(), m_radialDistortion.data());
203 std::copy_n(distortionConditions.tangential_distortion.coefficients, m_tangentialDistortion.size(), m_tangentialDistortion.data());
204 std::copy_n(distortionConditions.prism_distortion.coefficients, m_prismDistortion.size(), m_prismDistortion.data());
205 std::copy_n(distortionConditions.tilt_distortion.coefficients, m_tiltDistortion.size(), m_tiltDistortion.data());
206}
207
209{
210 return m_radialDistortion;
211}
212
214{
215 return m_tangentialDistortion;
216}
217
219{
220 return m_prismDistortion;
221}
222
224{
225 return m_tiltDistortion;
226}
227
229{
230 return m_radialDistortion == rhs.m_radialDistortion && m_tangentialDistortion == rhs.m_tangentialDistortion
231 && m_prismDistortion == rhs.m_prismDistortion && m_tiltDistortion == rhs.m_tiltDistortion;
232}
233
234} /* namespace icv */
235} /* namespace peak */
bool operator==(const DistortionCoefficients &rhs) const
DistortionCoefficients(const RadialDistortion &radialDistortion, const TangentialDistortion &tangentialDistortion)
Creates distortion coefficients from radial and tangential distortion coefficients.
std::array< double, 6 > RadialDistortion
Radial distortion coefficients.
std::array< double, 2 > TangentialDistortion
Tangential distortion coefficients.
std::array< double, 4 > PrismDistortion
Prism distortion coefficients.
std::array< double, 2 > TiltDistortion
Tilt distortion coefficients.