16#include <peak_icv_c/algorithms/preprocessing/peak_icv_image_converter.h>
122 PEAK_COMMON_NO_DISCARD
bool IsEnabled()
const override;
131 PEAK_COMMON_NO_DISCARD
const char*
GetType()
const override;
244 PEAK_COMMON_NO_DISCARD
size_t GetOutputBitDepth(
size_t inputBitDepth)
const;
252 peak_icv_image_converter_handle m_handle{};
254 size_t m_targetBitDepth{ 8 };
261 return PEAK_ICV_C_ABI_PREFIX peak_icv_Preprocessing_ImageConverter_Create(&m_handle);
267 if (m_handle !=
nullptr)
269 std::ignore = PEAK_ICV_C_ABI_PREFIX peak_icv_Preprocessing_ImageConverter_Destroy(m_handle);
275 std::swap(m_handle, other.m_handle);
282 std::swap(m_handle, other.m_handle);
290 std::ignore = archive;
295 std::ignore = archive;
300 std::ignore = enable;
325 return BayerBGFormat(outputBitDepth);
334 return BayerGBFormat(outputBitDepth);
343 return BayerGRFormat(outputBitDepth);
352 return BayerRGFormat(outputBitDepth);
361 return MonoFormat(outputBitDepth);
440 m_policy = ProcessingPolicy::Fast;
441 m_targetBitDepth = 8;
446 m_targetBitDepth = bitDepth;
451 return m_targetBitDepth;
469inline size_t UnpackModule::GetOutputBitDepth(
const size_t inputBitDepth)
const
471 if (m_policy == ProcessingPolicy::Fast)
473 return (std::min)(inputBitDepth, m_targetBitDepth);
475 if (m_policy == ProcessingPolicy::Enhanced)
477 return (std::max)(inputBitDepth, m_targetBitDepth);
479 return inputBitDepth;
488 const auto outputBitDepth = GetOutputBitDepth(inputBitDepth);
489 const auto outputFormat = GetOutputFormat(inputFormat, outputBitDepth);
491 if (inputFormat == outputFormat)
496 auto*
const inputImageHandle = peak::common::detail::BackendAccessor<peak::icv::Image>::BackendHandle(inputImage);
500 return PEAK_ICV_C_ABI_PREFIX peak_icv_Preprocessing_ImageConverter_Convert(
504 return peak::common::Any(peak::common::detail::BackendAccessor<peak::icv::Image>::CreateInstance(outputHandle));
510 return PEAK_ICV_C_ABI_PREFIX peak_icv_Preprocessing_ImageConverter_ReleaseBuffers(m_handle);
A type-erased container for any copyable value.
T & AnyCast()
Casts the stored value to the specified type.
Interface for a hierarchical key-value archive system.
For detailed information about the use of ids_peak_icv Image refer to the Image Guide.
peak::common::PixelFormat GetPixelFormat() const
Provides the pixel format of the image.
Unpack is an image pipeline module that converts packed pixel formats into corresponding unpacked Bay...
size_t GetTargetBitDepth() const
Get the target bit depth used during image processing.
UnpackModule()
Creates an instance of class UnpackModule.
const char * GetType() const override
Returns the type of the module for serialization purposes.
void SetEnabled(bool enable) override
This property cannot be changed.
void ReleaseBuffers() const
Frees unused internal buffers.
UnpackModule & operator=(const UnpackModule &other)=delete
Copy assignment for class UnpackModule is deleted.
void Serialize(peak::common::serialization::IArchive &archive) const override
This function has no effect on the Unpack module.
peak::icv::Image Process(const peak::icv::Image &input) const
Converts a packed pixel format image into an unpacked Bayer or monochrome format.
ProcessingPolicy GetProcessingPolicy() const
Get the currently configured processing policy.
void Deserialize(const peak::common::serialization::IArchive &archive) override
This function has no effect on the unpack module.
void SetProcessingPolicy(ProcessingPolicy policy)
Set the processing policy.
void ResetToDefault() override
Resets all module settings.
UnpackModule(const UnpackModule &other)=delete
Copy constructor for class UnpackModule is deleted.
void SetTargetBitDepth(size_t bitDepth)
Set the target bit depth for image processing.
bool IsEnabled() const override
Indicates whether the unpack module is enabled.
Interface for a module used within a pipeline.
PixelFormat
Enum listing all supported pixel formats and their internal IDs.
@ BayerRG12g24IDS
BayerRG 12-Bit grouped 24-bit (IDS)
@ RGB8
RGB 8-Bit pixel format.
@ Mono12p
Mono 12-Bit packed format.
@ Mono12
Mono 12-Bit pixel format.
@ BayerGB10
BayerGB 10-Bit pixel format.
@ BayerRG12p
BayerRG 12-Bit packed format.
@ BayerBG10
BayerBG 10-Bit pixel format.
@ Mono10g40IDS
Mono 10-Bit grouped 40-bit (IDS)
@ BayerGR10g40IDS
BayerGR 10-Bit grouped 40-bit (IDS)
@ BayerBG10p
BayerBG 10-Bit packed format.
@ BayerGB12p
BayerGB 12-Bit packed format.
@ BayerGR12
BayerGR 12-Bit pixel format.
@ BayerRG10p
BayerRG 10-Bit packed format.
@ BayerRG12
BayerRG 12-Bit pixel format.
@ BayerGR12p
BayerGR 12-Bit packed format.
@ BayerGR8
BayerGR 8-Bit pixel format.
@ BayerBG12p
BayerBG 12-Bit packed format.
@ BayerBG8
BayerBG 8-Bit pixel format.
@ Mono12g24IDS
Mono 12-Bit grouped 24-bit (IDS)
@ BayerRG10
BayerRG 10-Bit pixel format.
@ BayerGB12
BayerGB 12-Bit pixel format.
@ BayerRG8
BayerRG 8-Bit pixel format.
@ BayerGR10p
BayerGR 10-Bit packed format.
@ YUV422_8_UYVY
UYVY 4:2:2 8-Bit format.
@ YUV420_8_YY_VU_SemiplanarIDS
YUV4:2:0 8-Bit YY/VU semiplanar (IDS)
@ BayerGB8
BayerGB 8-Bit pixel format.
@ BayerGR12g24IDS
BayerGR 12-Bit grouped 24-bit (IDS)
@ YUV420_8_YY_UV_SemiplanarIDS
YUV4:2:0 8-Bit YY/UV semiplanar (IDS)
@ BayerGR10
BayerGR 10-Bit pixel format.
@ Mono10
Mono 10-Bit pixel format.
@ Mono8
Mono 8-Bit pixel format.
@ BayerBG12
BayerBG 12-Bit pixel format.
@ BayerBG10g40IDS
BayerBG 10-Bit grouped 40-bit (IDS)
@ BayerGB10p
BayerGB 10-Bit packed format.
@ BayerBG12g24IDS
BayerBG 12-Bit grouped 24-bit (IDS)
@ Mono10p
Mono 10-Bit packed format.
@ BayerRG10g40IDS
BayerRG 10-Bit grouped 40-bit (IDS)
@ BayerGB10g40IDS
BayerGB 10-Bit grouped 40-bit (IDS)
@ BayerGB12g24IDS
BayerGB 12-Bit grouped 24-bit (IDS)
ProcessingPolicy
Specifies the processing policy.
constexpr peak_common_pixel_format CppPixelFormatToCPixelFormat(PixelFormat pixelFormat) noexcept
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
peak_icv_image * peak_icv_image_handle