# CUVI Features

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page provides a list of all the functionality available in the latest release of CUVI Library.

## Modules

CUVI comes in following image processing modules.

• Arithmetic & Logical
• Color Operations
• Computer Vision
• Data Exchange
• Geometry Transforms
• Image Filtering
• Image Statistics
• Image Transforms
• Video Stabilization

## Function List

### Arithmetic & Logical

• abs - Computes absolute value of each image pixel
• absDiff - Computes absolute difference between 2 images.
• AND - Bitwise AND operation between two images.
• cbrt - Computes cube root of each image pixel
• ceil - Applies ceil function to each image pixel
• divide - Divides pixel values of two images
• exp - Computes exponential of each image pixel
• floor - Applies floor function to each image pixel
• invert - Computes matrix inverse using LU factorization
• matMul - Performs matrix multiplication
• matMulTrans - Performs matrix multiplication with its transpose
• multiply - Multiplies pixel values of two images
• NOT - Inverts the bits of each pixel.
• OR - Bitwise OR operation between two images.
• pow - Raise each pixel to a specified power.
• round - Rounds each pixel to nearest integer value.
• SHL - Left shift each pixel of an image
• SHR - Right shift each pixel of an image
• sqrt - Takes square root of each pixel of an image.
• subtract - Subtracts pixel values of two images.
• XOR - Logical bitwise XOR operation between two images.

### Color Operations

• autoColor - Fixes false colors at pixel level using a propriety approach
• channelMix - Applies a color twist matrix to an image
• channelMerge - Merges R, G and B Channel to form a color image
• channelSplit - Splits a three channel image into R, G and B channels
• colorPick - Performs color segmentation of image by selecting a single color
• dehaze - Makes sense of images taken in a blizzard
• demosaic - Restores an RGB image from a CFA Bayer image
• demosaicDFPD - Restores an RGB image from a CFA Bayer image using DFPD algorithm
• gammaCorrect - Performs gamma correction of an image
• gray2rgb - Copy a grayscale image to each channel of an RGB image.
• histEq - Performs histogram equalization
• hsv2rgb - Converts image from HSV color space to RGB.
• imageBinary - Converts input image into a binary image based on threshold
• Lab2rgb - Converts image from CIE Lab color space to RGB.
• logTransform - Applies log transformation for contrast enhancement of an image
• lowlight - enhances the low intensity colors in a dark photo
• LUT - Remaps image values according to look up table
• rgb2gray - Converts an RGB image to gray scale
• rgb2hsv - Converts an RGB image to HSV color space
• rgb2Lab - Converts an RGB image to CIE Lab color space
• rgb2ycbcr - Converts an RGB image to YCbCr color space
• rgb2yuv - Converts RGB image to YUV color space
• ycbcr2rgb - Converts YCbCr image to an RGB image
• yuv2rgb - Converts YUV image to an RGB image.

### Computer Vision

• eigenValsVecs - Calculates eigen values and eigen vectors at each pixel in an image
• goodFeaturesToTrack - selects N best points on a image using KLT or Harris
• minEigenVal - Calculates the minimum eigen value at each pixel in an image
• opticalFlowHS - Calculates flow of each image pixel in two frames using Horn–Schunck method
• opticalFlowPyrLKDense - Calculates flow of each image pixel in two frames using pyramidal Lucas–Kanade method
• trackFeatures - Tracks input features from frame 1 onto frame 2 using KLT method

### Data Exchange

• bitConversion - Converts image pixel values from one data type to another.
• convertScale - Converts image data type with optional scaling.
• generateRandomImage - Creates a new random image.
• getChannel - Extracts a channel of an image.
• padImage - Pads any side of the image with the value specified.
• rectangle - Draws a rectangle on the specified region of an image.
• threshold - Clamps image pixel values between specified thresholds.

### Geometry Transforms

• crop - Crops the desired portion of an image
• flipImage - Mirrors an image about a horizontal or vertical axis, or both
• resize - Resizes input image using specified interpolation
• rotate - Rotates an image about origin (0,0) or center
• transpose - Takes Transpose of the image
• warpAffine - Applies an affine transformation to an image.
• warpAffineBack - Applies an inverse affine transformation to an image.

### Image Statistics

• calcHist - Computes the histogram of an 8 bit image.
• countInRange - Counts the number of pixels within the given intensity range
• max - Computes the maximum of image pixel values
• mean - Computes the mean of image pixel values
• meanStdDev - Computes the mean and standard deviation of image pixel values
• min - Computes the minimum of image pixel values
• minMax - Computes the minimum and maximum of image pixel values
• sum - Computes the sum of image pixel values

### Image Transforms

• fft2 - Computes the 2D Fast Fourier Transform of an image.
• fftGetProperty - Gets magnitude, phase, real and imaginary part of an FFT image with optional scaling.
• fftShift - Moves low frequency components to the center of an FFT image.
• haarFwd - Performs one-level wavelet decomposition of an image using haar basis
• haarInv - Performs one-level haar wavelet reconstruction of an image

## CUVI Core

CUVI Core includes the following helper functionality:

### CuviImage

A C++ class to hold image data on the device. It has the following methods

• CuviImage(); - default constructor
• CuviImage(CuviSize size, Cuvi32s depth, Cuvi32s channels) - Main Constructor. throws exception in case of failure
• CuviImage(const CuviImage&) - copy constructor
• upload(const void* pSrcHost, const Cuvi32s srcPitch) - Copy image data from host to device.
• upload(const void* pSrcHost, const Cuvi32s srcPitch, const CuviStream& stream) - Asynchronously copy image data from host to device.
• download(void* pDstHost, const Cuvi32s dstPitch) - Copy image data from device to host
• download(void* pDstHost, const Cuvi32s dstPitch, const CuviStream& stream) - Asynchronously copy image data from device to host
• show(const std::string& title = "CUVI Image", Cuvi32s milliseconds = 0) - Render device image directly on the screen
• ~CuviImage() - Destructor. Frees Device Memory. throws exception in case of failure

### Timer

CUVI provides a C++ Timer class that accurately profiles your application timing

• Start() - Starts the timer.
• Stop() - Stops the timer
• Reset() - Resets the timer
• GetElapsedTime() - Returns the elapsed time between Start and Stop calls in seconds

### DeviceProperties

CuviDeviceProperties holds all the important properties of underlying CUDA device. Device management functions are present inside the namespace cuvi::device.

• Cuvi32s getDeviceCount() - Gives the count of devices installed in the machine
• Cuvi32s getCurentDevice() - Returns the ID of selected graphics card
• CuviStatus setCurrentDevice(const Cuvi32s ID) - Makes any device an active device
• CuviStatus getDeviceProperties(const Cuvi32s deviceID, CuviDeviceProperties& props) - Returns all the important properties of desired GPU