IDS peak ICV v1.0.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{
24namespace experimental
25{
26using RadialDistortion = std::array<double, 6>;
27using TangentialDistortion = std::array<double, 2>;
28using PrismDistortion = std::array<double, 4>;
29using TiltDistortion = std::array<double, 2>;
30
38{
39public:
44 DistortionCoefficients(const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion);
45
51 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion);
52
57 DistortionCoefficients(const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion,
58 const PrismDistortion& prismDistortion, const TiltDistortion& tiltDistortion);
59
60
65 PEAK_ICV_NO_DISCARD RadialDistortion GetRadialDistortion() const;
66
71 PEAK_ICV_NO_DISCARD TangentialDistortion GetTangentialDistortion() const;
72
77 PEAK_ICV_NO_DISCARD PrismDistortion GetPrismDistortion() const;
78
83 PEAK_ICV_NO_DISCARD TiltDistortion GetTiltDistortion() const;
84
85 bool operator==(const DistortionCoefficients& rhs) const;
86
87private:
88 friend peak::common::detail::BackendAccessor<DistortionCoefficients>;
89
90 explicit DistortionCoefficients(const peak_icv_distortion_coefficients& distortionConditions);
91
92 RadialDistortion m_radialDistortion{};
93 TangentialDistortion m_tangentialDistortion{};
94 PrismDistortion m_prismDistortion{};
95 TiltDistortion m_tiltDistortion{};
96};
97
99 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion)
100 : DistortionCoefficients(radialDistortion, tangentialDistortion, {})
101{}
102
104 const RadialDistortion& radialDistortion, const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion)
105 : DistortionCoefficients(radialDistortion, tangentialDistortion, prismDistortion, {})
106{}
107
109 const TangentialDistortion& tangentialDistortion, const PrismDistortion& prismDistortion, const TiltDistortion& tiltDistortion)
110 : m_radialDistortion{ radialDistortion }
111 , m_tangentialDistortion{ tangentialDistortion }
112 , m_prismDistortion{ prismDistortion }
113 , m_tiltDistortion{ tiltDistortion }
114{}
115
116inline DistortionCoefficients::DistortionCoefficients(const peak_icv_distortion_coefficients& distortionConditions)
117{
118 std::copy_n(distortionConditions.radial_distortion.coefficients, m_radialDistortion.size(), m_radialDistortion.data());
119 std::copy_n(distortionConditions.tangential_distortion.coefficients, m_tangentialDistortion.size(), m_tangentialDistortion.data());
120 std::copy_n(distortionConditions.prism_distortion.coefficients, m_prismDistortion.size(), m_prismDistortion.data());
121 std::copy_n(distortionConditions.tilt_distortion.coefficients, m_tiltDistortion.size(), m_tiltDistortion.data());
122}
123
125{
126 return m_radialDistortion;
127}
128
130{
131 return m_tangentialDistortion;
132}
133
135{
136 return m_prismDistortion;
137}
138
140{
141 return m_tiltDistortion;
142}
143
145{
146 return m_radialDistortion == rhs.m_radialDistortion && m_tangentialDistortion == rhs.m_tangentialDistortion
147 && m_prismDistortion == rhs.m_prismDistortion && m_tiltDistortion == rhs.m_tiltDistortion;
148}
149
150} /* namespace experimental */
151} /* namespace icv */
152} /* namespace peak */
PrismDistortion GetPrismDistortion() const
Provides the prism distortion.
bool operator==(const DistortionCoefficients &rhs) const
TiltDistortion GetTiltDistortion() const
Provides the tilt distortion.
DistortionCoefficients(const RadialDistortion &radialDistortion, const TangentialDistortion &tangentialDistortion)
create distortion coefficients from radial and tangential distortion coefficients
RadialDistortion GetRadialDistortion() const
Provides the radial distortion.
TangentialDistortion GetTangentialDistortion() const
Provides the tangential distortion.