17#include <peak_icv_c/algorithms/transformations/peak_icv_undistortion.h>
174 friend peak::common::detail::BackendAccessor<Undistortion>;
178 peak_icv_undistortion_handle m_handle{};
179 peak_icv_intrinsic_parameters m_newintrinsicParameters{};
185 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create(&m_handle,
186 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(intrinsicParameters),
187 sizeof(peak_icv_intrinsic_parameters), &m_newintrinsicParameters);
196 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(&m_handle,
197 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(intrinsicParameters),
198 sizeof(peak_icv_intrinsic_parameters), captureInformation,
sizeof(peak_icv_capture_information), &m_newintrinsicParameters);
205 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create(&m_handle,
206 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(calibrationParameters.
GetIntrinsicParameters()),
207 sizeof(peak_icv_intrinsic_parameters), &m_newintrinsicParameters);
216 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(&m_handle,
217 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(calibrationParameters.
GetIntrinsicParameters()),
218 sizeof(peak_icv_intrinsic_parameters), captureInformation,
sizeof(peak_icv_capture_information), &m_newintrinsicParameters);
225 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create(&m_handle,
226 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(
228 sizeof(peak_icv_intrinsic_parameters), &m_newintrinsicParameters);
237 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Create_With_Image_CaptureInformation(&m_handle,
238 peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateCType(
240 sizeof(peak_icv_intrinsic_parameters), captureInformation,
sizeof(peak_icv_capture_information), &m_newintrinsicParameters);
246 if (m_handle != other.m_handle)
249 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_IncreaseUseCount(other.m_handle);
251 m_handle = other.m_handle;
252 m_newintrinsicParameters = other.m_newintrinsicParameters;
258 if (m_handle != other.m_handle)
260 m_handle = other.m_handle;
261 other.m_handle =
nullptr;
263 m_newintrinsicParameters = other.m_newintrinsicParameters;
269 if (m_handle !=
nullptr)
271 std::ignore = PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Destroy(m_handle);
277 if (m_handle != other.m_handle)
279 if (m_handle !=
nullptr)
282 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Destroy(m_handle);
287 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_IncreaseUseCount(other.m_handle);
289 m_handle = other.m_handle;
290 m_newintrinsicParameters = other.m_newintrinsicParameters;
298 if (m_handle != other.m_handle)
300 if (m_handle !=
nullptr)
303 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Destroy(m_handle);
307 m_handle = other.m_handle;
308 other.m_handle =
nullptr;
310 m_newintrinsicParameters = other.m_newintrinsicParameters;
318 auto*
const inputImageHandle = peak::common::detail::BackendAccessor<Image>::BackendHandle(image);
321 auto*
const outputImageHandle = peak::common::detail::BackendAccessor<Image>::BackendHandle(outputImage);
324 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_Process(m_handle, inputImageHandle, outputImageHandle);
327 return { outputImage, peak::common::detail::BackendAccessor<IntrinsicParameters>::CreateInstance(m_newintrinsicParameters) };
332 peak_icv_interpolation interpolation;
335 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_GetInterpolation(m_handle, &interpolation);
344 return PEAK_ICV_C_ABI_PREFIX peak_icv_Transform_Undistortion_SetInterpolation(
345 m_handle,
static_cast<peak_icv_interpolation
>(interpolation));
Holds a complete set of camera calibration parameters, including both intrinsic and extrinsic data.
IntrinsicParameters GetIntrinsicParameters() const
Retrieves the intrinsic camera parameters.
Holds the results of a camera calibration.
CalibrationParameters GetCalibrationParameters() const
Extracts the calibration parameters from a calibration result.
For detailed information about the use of ids_peak_icv Image refer to the Image Guide.
peak::common::Size GetSize() const
Provides the size of the image in pixels.
peak::common::PixelFormat GetPixelFormat() const
Provides the pixel format of the image.
The intrinsic parameters contain the necessary information to use the camera calibration.
Represents an image that has undergone undistortion.
Represents an undistortion transformation for images.
void SetInterpolation(Interpolation interpolation)
Sets the Interpolation method used for undistortion.
Undistortion & operator=(const Undistortion &other)
UndistortedImage Process(const Image &image) const
Applies undistortion to the specified image.
Undistortion(const IntrinsicParameters &intrinsicParameters)
Constructs an undistortion using intrinsic parameters.
Interpolation GetInterpolation() const
peak_icv_capture_information CreateCCaptureInformationFromMetadata(const peak::common::Metadata &metadata)
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
peak::common::detail::c_type_of_t< Type > * handle_of_t