126#if !defined(__cpp_aggregate_nsdmi)
246 if (other.m_backendHandle)
251 m_backendHandle = other.m_backendHandle;
263 if (other.m_backendHandle)
270 m_backendHandle = other.m_backendHandle;
277 *
this = std::move(other);
284 if (m_backendHandle !=
nullptr)
289 m_backendHandle = other.m_backendHandle;
290 other.m_backendHandle =
nullptr;
298 double calculated_value;
302 m_backendHandle, ImageBackendAccessor::BackendHandle(image), &calculated_value);
305 return calculated_value;
318 return isPixelFormatSupported > 0;
326 m_backendHandle,
nullptr, &sizeOfData);
329 std::vector<PixelFormatName> formats(sizeOfData);
365 return Size2D{ size.width, size.height };
371 std::vector<PEAK_IPL_SHARPNESS_ROI> sharpness_rois{};
373 std::transform(std::cbegin(rois), std::cend(rois), std::back_inserter(sharpness_rois), [](
const auto roi) {
375 { roi.rect.size().width, roi.rect.size().height } },
376 roi.xSamplingInterval, roi.ySamplingInterval,
377 static_cast<std::underlying_type_t<SharpnessROIWeight>
>(roi.weight) };
381 m_backendHandle, sharpness_rois.data(), sharpness_rois.size());
399 size_t roiListSize{};
403 std::vector<PEAK_IPL_SHARPNESS_ROI> sharpness_rois(roiListSize);
406 m_backendHandle, sharpness_rois.data(), &roiListSize);
412 std::cbegin(sharpness_rois), std::cend(sharpness_rois), std::back_inserter(rois), [](
const auto roi) {
413 return SharpnessROI{
Rect2D{ roi.rect.position.x, roi.rect.position.y, roi.rect.size.width,
414 roi.rect.size.height },
415 roi.xSamplingInterval, roi.ySamplingInterval,
static_cast<SharpnessROIWeight>(roi.weight) };
429 return !(lhs == rhs);
Stores the pixel format, width and height of an image and the pointer to the image buffer.
Definition peak_ipl_image.hpp:41
Rectangle type.
Definition peak_ipl_rect.hpp:30
Sharpness()
Constructor for a new Sharpness instance.
Definition peak_ipl_sharpness.hpp:231
Sharpness & operator=(const Sharpness &other)
Copy assigment for Sharpness instance.
Definition peak_ipl_sharpness.hpp:254
void SetROIs(const SharpnessROIList &rois)
Sets the region of interests in which the sharpness is measured.
Definition peak_ipl_sharpness.hpp:368
Size2D ROIMinSize() const
Gets the minimum size of a ROI, in which the sharpness is measured.
Definition peak_ipl_sharpness.hpp:358
void SetROI(const SharpnessROI &roi)
Set ROI in which the sharpness is measured.
Definition peak_ipl_sharpness.hpp:385
SharpnessAlgorithm
Measure Algorithms.
Definition peak_ipl_sharpness.hpp:107
@ HistogramVariance
statistics-based sharpness algorithm
Definition peak_ipl_sharpness.hpp:110
@ Tenengrad
contrast-based sharpness algorithm (convolution)
Definition peak_ipl_sharpness.hpp:108
@ Sobel
contrast-based sharpness algorithm (convolution)
Definition peak_ipl_sharpness.hpp:111
@ MeanScore
contrast-based sharpness algorithm (mean value)
Definition peak_ipl_sharpness.hpp:109
SharpnessROIList ROIs() const
Gets ROIs in which the sharpness is measured.
Definition peak_ipl_sharpness.hpp:397
double Measure(const Image &image)
Measures the sharpness of the given image. The higher the value, the better the sharpness.
Definition peak_ipl_sharpness.hpp:296
SharpnessROIWeight
Definition peak_ipl_sharpness.hpp:118
@ Weak
Weak use of roi for the measurement.
Definition peak_ipl_sharpness.hpp:119
@ Medium
Normal use of roi for the measurement.
Definition peak_ipl_sharpness.hpp:120
@ Strong
Strong use of roi for the measurement.
Definition peak_ipl_sharpness.hpp:121
std::vector< SharpnessROI > SharpnessROIList
Definition peak_ipl_sharpness.hpp:137
bool IsPixelFormatSupported(PixelFormatName pixelFormatName) const
Checks if the given pixel format can be used for sharpness measurement.
Definition peak_ipl_sharpness.hpp:308
~Sharpness()
Destructor for the Sharpness instance.
Definition peak_ipl_sharpness.hpp:236
void SetAlgorithm(SharpnessAlgorithm algorithm)
Sets the algorithm used for measurement calculation.
Definition peak_ipl_sharpness.hpp:338
SharpnessAlgorithm Algorithm() const
Returns the used algorithm for the sharpness measurement.
Definition peak_ipl_sharpness.hpp:346
std::vector< PixelFormatName > SupportedPixelFormats() const
Returns a list of supported pixel formats which can be used for sharpness measurement.
Definition peak_ipl_sharpness.hpp:321
Definition peak_ipl_binning.hpp:25
bool operator!=(const Sharpness::SharpnessROI &lhs, const Sharpness::SharpnessROI &rhs)
Definition peak_ipl_sharpness.hpp:427
PixelFormatName
Enum holding the possible pixel format names.
Definition peak_ipl_simple_types.hpp:39
void ExecuteAndMapReturnCodes(const CallableType &callableObject)
Definition peak_ipl_exception.hpp:182
bool operator==(const Sharpness::SharpnessROI &lhs, const Sharpness::SharpnessROI &rhs)
Definition peak_ipl_sharpness.hpp:421
The "peak::ipl" namespace contains the whole image processing library.
Definition peak_ipl_binning.hpp:23
#define PEAK_IPL_NO_DISCARD
Definition peak_ipl_attribute_defines.h:25
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_GetIsPixelFormatSupported(PEAK_IPL_SHARPNESS_HANDLE handle, PEAK_IPL_PIXEL_FORMAT pixelFormat, PEAK_IPL_BOOL8 *isPixelFormatSupported)
Asks the given sharpness measurement whether it supports the given pixel format.
uint16_t PEAK_IPL_SHARPNESS_ALGORITHM
Definition peak_ipl_backend.h:283
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_GetROIMinimumSize(PEAK_IPL_SHARPNESS_HANDLE handle, struct PEAK_IPL_SIZE_2D *min_size)
Returns the minimum size of a ROI to use for measurement calculation.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_GetAlgorithm(PEAK_IPL_SHARPNESS_HANDLE handle, PEAK_IPL_SHARPNESS_ALGORITHM *algorithm)
Returns the algorithm to use for measurement calculation.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_Acquire(PEAK_IPL_SHARPNESS_HANDLE handle)
Increase the reference count of a sharpness measurement object.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_SetAlgorithm(PEAK_IPL_SHARPNESS_HANDLE handle, PEAK_IPL_SHARPNESS_ALGORITHM algorithm)
Sets the algorithm used for measurement calculation.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_Destruct(PEAK_IPL_SHARPNESS_HANDLE handle)
Destroys the sharpness measurement associated with the given handle.
struct PEAK_IPL_SHARPNESS * PEAK_IPL_SHARPNESS_HANDLE
Definition peak_ipl_backend.h:421
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_SetROIs(PEAK_IPL_SHARPNESS_HANDLE handle, struct PEAK_IPL_SHARPNESS_ROI *roiList, size_t roiListSize)
Sets ROIs in which the sharpness is measured.
int8_t PEAK_IPL_BOOL8
Definition peak_ipl_backend.h:26
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_GetROIs(PEAK_IPL_SHARPNESS_HANDLE handle, struct PEAK_IPL_SHARPNESS_ROI *roiList, size_t *roiListSize)
Returns the ROIs in which the sharpness is measured.
int32_t PEAK_IPL_PIXEL_FORMAT
Definition peak_ipl_backend.h:173
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_Measure(PEAK_IPL_SHARPNESS_HANDLE handle, PEAK_IPL_IMAGE_HANDLE imageHandle, double *calculated_value)
Measures the relative sharpness of the given image.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_Construct(PEAK_IPL_SHARPNESS_HANDLE *handle)
Creates a sharpness measurement.
PEAK_IPL_C_API PEAK_IPL_ImageSharpness_GetSupportedPixelFormatList(PEAK_IPL_SHARPNESS_HANDLE handle, PEAK_IPL_PIXEL_FORMAT *pixelFormatList, size_t *pixelFormatListSize)
Queries the supported pixel formats.
#define PEAK_IPL_C_ABI_PREFIX
Definition peak_ipl_dll_defines.h:16
Definition peak_ipl_backend.h:271
Definition peak_ipl_backend.h:306
Definition peak_ipl_backend.h:265
Definition peak_ipl_sharpness.hpp:125
uint8_t ySamplingInterval
vertical sampling interval
Definition peak_ipl_sharpness.hpp:133
SharpnessROIWeight weight
weight for the roi
Definition peak_ipl_sharpness.hpp:134
uint8_t xSamplingInterval
horizontal sampling interval
Definition peak_ipl_sharpness.hpp:132
SharpnessROI(Rect2D rect, uint8_t xSamplingInterval, uint8_t ySamplingInterval, SharpnessROIWeight weight)
Definition peak_ipl_sharpness.hpp:128
Rect2D rect
Sharpness Rect.
Definition peak_ipl_sharpness.hpp:131
2D size of an image.
Definition peak_ipl_simple_types.hpp:216