/* * Copyright (c) 2012-2015 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the * "Materials"), to deal in the Materials without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Materials, and to * permit persons to whom the Materials are furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Materials. * * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. */ #ifndef _OPENVX_UTILITY_H_ #define _OPENVX_UTILITY_H_ /*! * \file * \brief The OpenVX Utility Library. */ #ifdef __cplusplus extern "C" { #endif /*! \brief [Immediate] Invokes an immediate Color Conversion. * \param [in] context The reference to the overall context. * \param [in] input The input image. * \param [out] output The output image. * \ingroup group_vision_function_colorconvert * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuColorConvert(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Invokes an immediate Channel Extract. * \param [in] context The reference to the overall context. * \param [in] input The input image. Must be one of the defined \ref vx_df_image_e multiplanar formats. * \param [in] channel The \ref vx_channel_e enumeration to extract. * \param [out] output The output image. Must be \ref VX_DF_IMAGE_U8. * \ingroup group_vision_function_channelextract * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuChannelExtract(vx_context context, vx_image input, vx_enum channel, vx_image output); /*! \brief [Immediate] Invokes an immediate Channel Combine. * \param [in] context The reference to the overall context. * \param [in] plane0 The plane that forms channel 0. Must be \ref VX_DF_IMAGE_U8. * \param [in] plane1 The plane that forms channel 1. Must be \ref VX_DF_IMAGE_U8. * \param [in] plane2 [optional] The plane that forms channel 2. Must be \ref VX_DF_IMAGE_U8. * \param [in] plane3 [optional] The plane that forms channel 3. Must be \ref VX_DF_IMAGE_U8. * \param [out] output The output image. * \ingroup group_vision_function_channelcombine * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuChannelCombine(vx_context context, vx_image plane0, vx_image plane1, vx_image plane2, vx_image plane3, vx_image output); /*! \brief [Immediate] Invokes an immediate Sobel 3x3. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output_x [optional] The output gradient in the x direction in \ref VX_DF_IMAGE_S16. * \param [out] output_y [optional] The output gradient in the y direction in \ref VX_DF_IMAGE_S16. * \ingroup group_vision_function_sobel3x3 * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuSobel3x3(vx_context context, vx_image input, vx_image output_x, vx_image output_y); /*! \brief [Immediate] Invokes an immediate Magnitude. * \param [in] context The reference to the overall context. * \param [in] grad_x The input x image. This must be in \ref VX_DF_IMAGE_S16 format. * \param [in] grad_y The input y image. This must be in \ref VX_DF_IMAGE_S16 format. * \param [out] output The magnitude image. This will be in \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_magnitude * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuMagnitude(vx_context context, vx_image grad_x, vx_image grad_y, vx_image output); /*! \brief [Immediate] Invokes an immediate Phase. * \param [in] context The reference to the overall context. * \param [in] grad_x The input x image. This must be in \ref VX_DF_IMAGE_S16 format. * \param [in] grad_y The input y image. This must be in \ref VX_DF_IMAGE_S16 format. * \param [out] output The phase image. This will be in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_phase * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuPhase(vx_context context, vx_image grad_x, vx_image grad_y, vx_image output); /*! \brief [Immediate] Scales an input image to an output image. * \param [in] context The reference to the overall context. * \param [in] src The source image of type \ref VX_DF_IMAGE_U8. * \param [out] dst The destintation image of type \ref VX_DF_IMAGE_U8. * \param [in] type The interpolation type. \see vx_interpolation_type_e. * \ingroup group_vision_function_scale_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuScaleImage(vx_context context, vx_image src, vx_image dst, vx_enum type); /*! \brief [Immediate] Processes the image through the LUT. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 * \param [in] lut The LUT which is of type VX_TYPE_UINT8 * \param [out] output The output image of type \ref VX_DF_IMAGE_U8 * \ingroup group_vision_function_lut * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuTableLookup(vx_context context, vx_image input, vx_lut lut, vx_image output); /*! \brief [Immediate] Generates a distribution from an image. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 * \param [out] distribution The output distribution. * \ingroup group_vision_function_histogram * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuHistogram(vx_context context, vx_image input, vx_distribution distribution); /*! \brief [Immediate] Equalizes the Histogram of a grayscale image. * \param [in] context The reference to the overall context. * \param [in] input The grayscale input image in \ref VX_DF_IMAGE_U8 * \param [out] output The grayscale output image of type \ref VX_DF_IMAGE_U8 with equalized brightness and contrast. * \ingroup group_vision_function_equalize_hist * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuEqualizeHist(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Computes the absolute difference between two images. * \param [in] context The reference to the overall context. * \param [in] in1 An input image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \param [in] in2 An input image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \param [out] out The output image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_absdiff * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAbsDiff(vx_context context, vx_image in1, vx_image in2, vx_image out); /*! \brief [Immediate] Computes the mean value and standard deviation. * \param [in] context The reference to the overall context. * \param [in] input The input image. \ref VX_DF_IMAGE_U8 is supported. * \param [out] mean The average pixel value. * \param [out] stddev The standard deviation of the pixel values. * \ingroup group_vision_function_meanstddev * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuMeanStdDev(vx_context context, vx_image input, vx_float32 *mean, vx_float32 *stddev); /*! \brief [Immediate] Threshold's an input image and produces a \ref VX_DF_IMAGE_U8 * boolean image. * \param [in] context The reference to the overall context. * \param [in] input The input image. \ref VX_DF_IMAGE_U8 is supported. * \param [in] thresh The thresholding object that defines the parameters of * the operation. * \param [out] output The output Boolean image. Values are either 0 or 255. * \ingroup group_vision_function_threshold * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuThreshold(vx_context context, vx_image input, vx_threshold thresh, vx_image output); /*! \brief [Immediate] Computes the integral image of the input. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U32 format. * \ingroup group_vision_function_integral_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuIntegralImage(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Erodes an image by a 3x3 window. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_erode_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuErode3x3(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Dilates an image by a 3x3 window. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_dilate_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuDilate3x3(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Computes a median filter on the image by a 3x3 window. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_median_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuMedian3x3(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Computes a box filter on the image by a 3x3 window. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_box_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuBox3x3(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Computes a gaussian filter on the image by a 3x3 window. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_gaussian_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuGaussian3x3(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Computes a convolution on the input image with the supplied * matrix. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 format. * \param [in] matrix The convolution matrix. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_custom_convolution * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuConvolve(vx_context context, vx_image input, vx_convolution matrix, vx_image output); /*! \brief [Immediate] Computes a Gaussian pyramid from an input image. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 * \param [out] gaussian The Gaussian pyramid with \ref VX_DF_IMAGE_U8 to construct. * \ingroup group_vision_function_gaussian_pyramid * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuGaussianPyramid(vx_context context, vx_image input, vx_pyramid gaussian); /*! \brief [Immediate] Computes an accumulation. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in,out] accum The accumulation image in \ref VX_DF_IMAGE_S16 * \ingroup group_vision_function_accumulate * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAccumulateImage(vx_context context, vx_image input, vx_image accum); /*! \brief [Immediate] Computes a weighted accumulation. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] scale A \ref VX_TYPE_FLOAT32 type, the input value with the range \f$ 0.0 \le \alpha \le 1.0 \f$. * \param [in,out] accum The \ref VX_DF_IMAGE_U8 accumulation image. * \ingroup group_vision_function_accumulate_weighted * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAccumulateWeightedImage(vx_context context, vx_image input, vx_scalar scale, vx_image accum); /*! \brief [Immediate] Computes a squared accumulation. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] shift A \ref VX_TYPE_UINT32 type, the input value with the range \f$ 0 \le shift \le 15 \f$. * \param [in,out] accum The accumulation image in \ref VX_DF_IMAGE_S16 * \ingroup group_vision_function_accumulate_square * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAccumulateSquareImage(vx_context context, vx_image input, vx_scalar shift, vx_image accum); /*! \brief [Immediate] Computes the minimum and maximum values of the image. * \param [in] context The reference to the overall context. * \param [in] input The input image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \param [out] minVal The minimum value in the image. * \param [out] maxVal The maximum value in the image. * \param [out] minLoc The minimum locations (optional). If the input image has several minimums, the kernel will return all of them). * \param [out] maxLoc The maximum locations (optional). If the input image has several maximums, the kernel will return all of them). * \param [out] minCount The total number of detected minimums in image (optional). * \param [out] maxCount The total number of detected maximums in image (optional). * \ingroup group_vision_function_minmaxloc * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuMinMaxLoc(vx_context context, vx_image input, vx_scalar minVal, vx_scalar maxVal, vx_array minLoc, vx_array maxLoc, vx_scalar minCount, vx_scalar maxCount); /*! \brief [Immediate] Converts the input images bit-depth into the output image. * \param [in] context The reference to the overall context. * \param [in] input The input image. * \param [out] output The output image. * \param [in] policy A \ref vx_convert_policy_e enumeration. * \param [in] shift The shift value. * \ingroup group_vision_function_convertdepth * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e.. */ VX_API_ENTRY vx_status VX_API_CALL vxuConvertDepth(vx_context context, vx_image input, vx_image output, vx_enum policy, vx_int32 shift); /*! \brief [Immediate] Computes Canny Edges on the input image into the output image. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] hyst The double threshold for hysteresis. * \param [in] gradient_size The size of the Sobel filter window, must support at least 3, 5 and 7. * \param [in] norm_type A flag indicating the norm used to compute the gradient, VX_NORM_L1 or VX_NORM_L2. * \param [out] output The output image in \ref VX_DF_IMAGE_U8 format. * \ingroup group_vision_function_canny * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuCannyEdgeDetector(vx_context context, vx_image input, vx_threshold hyst, vx_int32 gradient_size, vx_enum norm_type, vx_image output); /*! \brief [Immediate] Performs a Gaussian Blur on an image then half-scales it. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [out] output The output \ref VX_DF_IMAGE_U8 image. * \param [in] kernel_size The input size of the Gaussian filter. Supported values are 3 and 5. * \ingroup group_vision_function_scale_image * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuHalfScaleGaussian(vx_context context, vx_image input, vx_image output, vx_int32 kernel_size); /*! \brief [Immediate] Computes the bitwise and between two images. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 input image * \param [in] in2 A \ref VX_DF_IMAGE_U8 input image * \param [out] out The \ref VX_DF_IMAGE_U8 output image. * \ingroup group_vision_function_and * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAnd(vx_context context, vx_image in1, vx_image in2, vx_image out); /*! \brief [Immediate] Computes the bitwise inclusive-or between two images. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 input image * \param [in] in2 A \ref VX_DF_IMAGE_U8 input image * \param [out] out The \ref VX_DF_IMAGE_U8 output image. * \ingroup group_vision_function_or * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuOr(vx_context context, vx_image in1, vx_image in2, vx_image out); /*! \brief [Immediate] Computes the bitwise exclusive-or between two images. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 input image * \param [in] in2 A \ref VX_DF_IMAGE_U8 input image * \param [out] out The \ref VX_DF_IMAGE_U8 output image. * \ingroup group_vision_function_xor * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuXor(vx_context context, vx_image in1, vx_image in2, vx_image out); /*! \brief [Immediate] Computes the bitwise not of an image. * \param [in] context The reference to the overall context. * \param [in] input The \ref VX_DF_IMAGE_U8 input image * \param [out] output The \ref VX_DF_IMAGE_U8 output image. * \ingroup group_vision_function_not * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuNot(vx_context context, vx_image input, vx_image output); /*! \brief [Immediate] Performs elementwise multiplications on pixel values in the input images and a scale. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image. * \param [in] in2 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image. * \param [in] scale The scale value. * \param [in] overflow_policy A \ref vx_convert_policy_e enumeration. * \param [in] rounding_policy A \ref vx_round_policy_e enumeration. * \param [out] out The output image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_mult * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuMultiply(vx_context context, vx_image in1, vx_image in2, vx_float32 scale, vx_enum overflow_policy, vx_enum rounding_policy, vx_image out); /*! \brief [Immediate] Performs arithmetic addition on pixel values in the input images. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image. * \param [in] in2 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image. * \param [in] policy A \ref vx_convert_policy_e enumeration. * \param [out] out The output image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_add * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuAdd(vx_context context, vx_image in1, vx_image in2, vx_enum policy, vx_image out); /*! \brief [Immediate] Performs arithmetic subtraction on pixel values in the input images. * \param [in] context The reference to the overall context. * \param [in] in1 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image, the minuend. * \param [in] in2 A \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 input image, the subtrahend. * \param [in] policy A \ref vx_convert_policy_e enumeration. * \param [out] out The output image in \ref VX_DF_IMAGE_U8 or \ref VX_DF_IMAGE_S16 format. * \ingroup group_vision_function_sub * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuSubtract(vx_context context, vx_image in1, vx_image in2, vx_enum policy, vx_image out); /*! \brief [Immediate] Performs an Affine warp on an image. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] matrix The affine matrix. Must be 2x3 of type \ref VX_TYPE_FLOAT32. * \param [in] type The interpolation type from \ref vx_interpolation_type_e. * \ref VX_INTERPOLATION_TYPE_AREA is not supported. * \param [out] output The output \ref VX_DF_IMAGE_U8 image. * \ingroup group_vision_function_warp_affine * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuWarpAffine(vx_context context, vx_image input, vx_matrix matrix, vx_enum type, vx_image output); /*! \brief [Immediate] Performs an Perspective warp on an image. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] matrix The perspective matrix. Must be 3x3 of type \ref VX_TYPE_FLOAT32. * \param [in] type The interpolation type from \ref vx_interpolation_type_e. * \ref VX_INTERPOLATION_TYPE_AREA is not supported. * \param [out] output The output \ref VX_DF_IMAGE_U8 image. * \ingroup group_vision_function_warp_perspective * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuWarpPerspective(vx_context context, vx_image input, vx_matrix matrix, vx_enum type, vx_image output); /*! \brief [Immediate] Computes the Harris Corners over an image and produces the array of scored points. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] strength_thresh The \ref VX_TYPE_FLOAT32 minimum threshold which to eliminate Harris Corner scores (computed using the normalized Sobel kernel). * \param [in] min_distance The \ref VX_TYPE_FLOAT32 radial Euclidean distance for non-maximum suppression. * \param [in] sensitivity The \ref VX_TYPE_FLOAT32 scalar sensitivity threshold \f$ k \f$ from the Harris-Stephens equation. * \param [in] gradient_size The gradient window size to use on the input. The * implementation must support at least 3, 5, and 7. * \param [in] block_size The block window size used to compute the harris corner score. * The implementation must support at least 3, 5, and 7. * \param [out] corners The array of \ref VX_TYPE_KEYPOINT structs. * \param [out] num_corners The total number of detected corners in image (optional). Use a \ref VX_TYPE_SIZE scalar * \ingroup group_vision_function_harris * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuHarrisCorners(vx_context context, vx_image input, vx_scalar strength_thresh, vx_scalar min_distance, vx_scalar sensitivity, vx_int32 gradient_size, vx_int32 block_size, vx_array corners, vx_scalar num_corners); /*! \brief [Immediate] Computes corners on an image using FAST algorithm and produces the array of feature points. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] strength_thresh Threshold on difference between intensity of the central pixel and pixels on Bresenham's circle of radius 3 (\ref VX_TYPE_FLOAT32 scalar) * \param [in] nonmax_suppression If true, non-maximum suppression is applied to * detected corners before being places in the \ref vx_array of \ref VX_TYPE_KEYPOINT structs. * \param [out] corners Output corner \ref vx_array of \ref VX_TYPE_KEYPOINT. * \param [out] num_corners The total number of detected corners in image (optional). Use a \ref VX_TYPE_SIZE scalar. * \ingroup group_vision_function_fast * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuFastCorners(vx_context context, vx_image input, vx_scalar strength_thresh, vx_bool nonmax_suppression, vx_array corners, vx_scalar num_corners); /*! \brief [Immediate] Computes an optical flow on two images. * \param [in] context The reference to the overall context. * \param [in] old_images Input of first (old) image pyramid * \param [in] new_images Input of destination (new) image pyramid * \param [in] old_points an array of key points in a vx_array of \ref VX_TYPE_KEYPOINT those key points are defined at * the old_images high resolution pyramid * \param [in] new_points_estimates an array of estimation on what is the output key points in a \ref vx_array of * \ref VX_TYPE_KEYPOINT those keypoints are defined at the new_images high resolution pyramid * \param [out] new_points an output array of key points in a \ref vx_array of \ref VX_TYPE_KEYPOINT those key points are * defined at the new_images high resolution pyramid * \param [in] termination termination can be \ref VX_TERM_CRITERIA_ITERATIONS or \ref VX_TERM_CRITERIA_EPSILON or * \ref VX_TERM_CRITERIA_BOTH * \param [in] epsilon is the \ref vx_float32 error for terminating the algorithm * \param [in] num_iterations is the number of iterations. Use a \ref VX_TYPE_UINT32 scalar. * \param [in] use_initial_estimate Can be set to either \ref vx_false_e or \ref vx_true_e. * \param [in] window_dimension The size of the window on which to perform the algorithm. See * \ref VX_CONTEXT_ATTRIBUTE_OPTICAL_FLOW_WINDOW_MAXIMUM_DIMENSION * * \ingroup group_vision_function_opticalflowpyrlk * \return A \ref vx_status_e enumeration. * \retval VX_SUCCESS Success * \retval * An error occurred. See \ref vx_status_e. */ VX_API_ENTRY vx_status VX_API_CALL vxuOpticalFlowPyrLK(vx_context context, vx_pyramid old_images, vx_pyramid new_images, vx_array old_points, vx_array new_points_estimates, vx_array new_points, vx_enum termination, vx_scalar epsilon, vx_scalar num_iterations, vx_scalar use_initial_estimate, vx_size window_dimension); /*! \brief [Immediate] Remaps an output image from an input image. * \param [in] context The reference to the overall context. * \param [in] input The input \ref VX_DF_IMAGE_U8 image. * \param [in] table The remap table object. * \param [in] policy The interpolation policy from \ref vx_interpolation_type_e. * \ref VX_INTERPOLATION_TYPE_AREA is not supported. * \param [out] output The output \ref VX_DF_IMAGE_U8 image. * \return A \ref vx_status_e enumeration. * \ingroup group_vision_function_remap */ VX_API_ENTRY vx_status VX_API_CALL vxuRemap(vx_context context, vx_image input, vx_remap table, vx_enum policy, vx_image output); #ifdef __cplusplus } #endif #endif