IDS peak IPL  v1.6.0
peak_ipl_decimation.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 
16 namespace peak
17 {
18 namespace ipl
19 {
20 
21 class Image;
22 
23 class Decimation final
24 {
25 public:
26  Decimation();
27  ~Decimation();
28  Decimation(const Decimation& other) = delete;
29  Decimation& operator=(const Decimation& other) = delete;
30  Decimation(Decimation&& other) noexcept;
31  Decimation& operator=(Decimation&& other) noexcept;
32 
42  void SetDecimationX(uint8_t value);
43 
51  uint8_t DecimationX() const;
52 
62  void SetDecimationY(uint8_t value);
63 
71  uint8_t DecimationY() const;
72 
80  uint8_t DecimationMin() const;
88  uint8_t DecimationMax() const;
89 
102  Size2D ExpectedOutputSize(Size2D inputSize, PixelFormatName pixelFormat) const;
103 
113  bool IsPixelFormatSupported(PixelFormatName pixelFormatName) const;
114 
126  Image Process(const Image& inputImage) const;
127 
128 private:
129  PEAK_IPL_DECIMATION_HANDLE m_backendHandle{};
130 };
132 {
134 }
136 {
138 }
139 inline Decimation::Decimation(Decimation&& other) noexcept
140 {
141  *this = std::move(other);
142 }
143 inline Decimation& Decimation::operator=(Decimation&& other) noexcept
144 {
145  if (this != &other)
146  {
148  m_backendHandle = other.m_backendHandle;
149  other.m_backendHandle = nullptr;
150  }
151 
152  return *this;
153 }
154 inline void Decimation::SetDecimationX(uint8_t value)
155 {
157  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_SetDecimationX(m_backendHandle, &value); });
158 }
159 inline void Decimation::SetDecimationY(uint8_t value)
160 {
162  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_SetDecimationY(m_backendHandle, &value); });
163 }
164 inline uint8_t Decimation::DecimationX() const
165 {
166  uint8_t value;
167 
169  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_GetDecimationX(m_backendHandle, &value); });
170 
171  return value;
172 }
173 inline uint8_t Decimation::DecimationY() const
174 {
175  uint8_t value;
176 
178  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_GetDecimationY(m_backendHandle, &value); });
179 
180  return value;
181 }
182 inline uint8_t Decimation::DecimationMin() const
183 {
184  uint8_t value;
185 
187  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_GetDecimationMin(m_backendHandle, &value); });
188 
189  return value;
190 }
191 inline uint8_t Decimation::DecimationMax() const
192 {
193  uint8_t value;
194 
196  [&] { return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_GetDecimationMax(m_backendHandle, &value); });
197 
198  return value;
199 }
200 inline Size2D Decimation::ExpectedOutputSize(Size2D inputSize, PixelFormatName pixelFormat) const
201 {
202  Size2D size{};
204  return PEAK_IPL_C_ABI_PREFIX PEAK_IPL_Decimation_ExpectedOutputSize(m_backendHandle, &size.width, &size.height,
205  inputSize.width, inputSize.height, static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormat));
206  });
207 
208  return size;
209 }
210 inline bool Decimation::IsPixelFormatSupported(PixelFormatName pixelFormatName) const
211 {
212  PEAK_IPL_BOOL8 isPixelFormatSupported = 0;
213 
216  static_cast<PEAK_IPL_PIXEL_FORMAT>(pixelFormatName),
217  reinterpret_cast<PEAK_IPL_BOOL8*>(&isPixelFormatSupported));
218  });
219 
220  return isPixelFormatSupported > 0;
221 }
222 inline Image Decimation::Process(const Image& inputImage) const
223 {
224  PEAK_IPL_IMAGE_HANDLE outputImageHandle = nullptr;
227  m_backendHandle, ImageBackendAccessor::BackendHandle(inputImage), &outputImageHandle);
228  });
229 
230  return ImageBackendAccessor::CreateImage(outputImageHandle);
231 }
232 
233 } /* namespace ipl */
234 } /* namespace peak */
PEAK_IPL_C_API PEAK_IPL_Decimation_GetDecimationMax(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationMax)
Returns the maximum decimation value which can be set.
PEAK_IPL_C_API PEAK_IPL_Decimation_GetDecimationX(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationXValue)
Returns the value of decimation in horizontal direction.
Decimation & operator=(const Decimation &other)=delete
PEAK_IPL_C_API PEAK_IPL_Decimation_Destruct(PEAK_IPL_DECIMATION_HANDLE decimationHandle)
Destroys the decimation associated with the given handle.
#define PEAK_IPL_C_ABI_PREFIX
Definition: peak_ipl_dll_defines.h:16
uint8_t DecimationY() const
Returns the value of the decimation in vertical direction.
Definition: peak_ipl_decimation.hpp:173
size_t height
Definition: peak_ipl_simple_types.hpp:166
PixelFormatName
Enum holding the possible pixel format names.
Definition: peak_ipl_simple_types.hpp:38
~Decimation()
Definition: peak_ipl_decimation.hpp:135
PEAK_IPL_C_API PEAK_IPL_Decimation_IsPixelformatSupported(PEAK_IPL_DECIMATION_HANDLE decimationHandle, PEAK_IPL_PIXEL_FORMAT pixelFormat, PEAK_IPL_BOOL8 *isPixelFormatSupported)
Asks the given decimation whether it supports the given pixel format.
Decimation()
Definition: peak_ipl_decimation.hpp:131
The "peak::ipl" namespace contains the whole image processing library.
Definition: peak_ipl_binning.hpp:16
PEAK_IPL_C_API PEAK_IPL_Decimation_SetDecimationY(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationYValue)
Sets the value of decimation in vertical direction.
PEAK_IPL_C_API PEAK_IPL_Decimation_SetDecimationX(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationXValue)
Sets the value of decimation in horizontal direction.
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
Definition: peak_ipl_exception.hpp:182
PEAK_IPL_C_API PEAK_IPL_Decimation_GetDecimationMin(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationMin)
Returns the minimum decimation value which can be set.
2D size of an image.
Definition: peak_ipl_simple_types.hpp:163
Stores the pixel format, width and height of an image and the pointer to the image buffer...
Definition: peak_ipl_image.hpp:37
void SetDecimationY(uint8_t value)
Sets the values of the decimation in vertical direction.
Definition: peak_ipl_decimation.hpp:159
struct PEAK_IPL_IMAGE * PEAK_IPL_IMAGE_HANDLE
Definition: peak_ipl_backend.h:307
PEAK_IPL_C_API PEAK_IPL_Decimation_GetDecimationY(PEAK_IPL_DECIMATION_HANDLE decimationHandle, uint8_t *decimationYValue)
Returns the value of decimation in vertical direction.
uint8_t DecimationMin() const
Returns the minimum value for the decimation.
Definition: peak_ipl_decimation.hpp:182
PEAK_IPL_C_API PEAK_IPL_Decimation_Process(PEAK_IPL_DECIMATION_HANDLE decimationHandle, PEAK_IPL_IMAGE_HANDLE imageHandle, PEAK_IPL_IMAGE_HANDLE *outputImageHandle)
Apply the decimation on the given image.
PEAK_IPL_C_API PEAK_IPL_Decimation_Construct(PEAK_IPL_DECIMATION_HANDLE *decimationHandle)
Creates a decimation.
Definition: peak_ipl_decimation.hpp:23
bool IsPixelFormatSupported(PixelFormatName pixelFormatName) const
Returns whether the decimation supports the given pixel format.
Definition: peak_ipl_decimation.hpp:210
int8_t PEAK_IPL_BOOL8
Definition: peak_ipl_backend.h:25
PEAK_IPL_C_API PEAK_IPL_Decimation_ExpectedOutputSize(PEAK_IPL_DECIMATION_HANDLE decimationHandle, size_t *outputWidth, size_t *outputHeight, size_t inputWidth, size_t inputHeight, PEAK_IPL_PIXEL_FORMAT pixelFormat)
Returns the size of a binned image given the input size and pixelformat.
Size2D ExpectedOutputSize(Size2D inputSize, PixelFormatName pixelFormat) const
Returns the size of a decimated image given the input size and pixelformat.
Definition: peak_ipl_decimation.hpp:200
void SetDecimationX(uint8_t value)
Sets the values of the decimation in horizontal direction.
Definition: peak_ipl_decimation.hpp:154
size_t width
Definition: peak_ipl_simple_types.hpp:165
Image Process(const Image &inputImage) const
Applies the decimation on the given image.
Definition: peak_ipl_decimation.hpp:222
uint8_t DecimationX() const
Returns the value of the decimation in horizontal direction.
Definition: peak_ipl_decimation.hpp:164
uint8_t DecimationMax() const
Returns the maximum value for the decimation.
Definition: peak_ipl_decimation.hpp:191
struct PEAK_IPL_DECIMATION * PEAK_IPL_DECIMATION_HANDLE
Definition: peak_ipl_backend.h:291