WPILibC++
unspecified
|
Image Management functions. More...
#include <stdlib.h>
#include <stdarg.h>
#include "Vision/BaeUtilities.h"
#include "Vision/FrcError.h"
#include "Vision/VisionAPI.h"
Macros | |
#define | DPRINTF if (VisionAPI_debugFlag) dprintf |
Functions | |
Image * | frcCreateImage (ImageType type) |
Create an image object Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64 The border size is defaulted to 3 so that convolutional algorithms work at the edges. More... | |
int | frcDispose (void *object) |
Dispose of one object. More... | |
int | frcDispose (const char *functionName,...) |
Dispose of a list of objects. More... | |
int | frcCopyImage (Image *dest, const Image *source) |
Copy an image object. More... | |
int | frcCrop (Image *dest, const Image *source, Rect rect) |
Crop image without changing the scale. More... | |
int | frcScale (Image *dest, const Image *source, int xScale, int yScale, ScalingMode scaleMode) |
Scales the entire image larger or smaller. More... | |
int | frcReadImage (Image *image, const char *fileName) |
Creates image object from the information in a file. More... | |
int | frcWriteImage (const Image *image, const char *fileName) |
Write image to a file. More... | |
HistogramReport * | frcHistogram (const Image *image, int numClasses, float min, float max) |
Measures the pixel intensities in a rectangle of an image. More... | |
HistogramReport * | frcHistogram (const Image *image, int numClasses, float min, float max, Rect rect) |
ColorHistogramReport * | frcColorHistogram (const Image *image, int numClasses, ColorMode mode) |
Calculates the histogram, or pixel distribution, of a color image. More... | |
ColorHistogramReport * | frcColorHistogram (const Image *image, int numClasses, ColorMode mode, Image *mask) |
int | frcGetPixelValue (const Image *image, Point pixel, PixelValue *value) |
Measures the pixel intensities in a rectangle of an image. More... | |
int | frcParticleFilter (Image *dest, Image *source, const ParticleFilterCriteria2 *criteria, int criteriaCount, const ParticleFilterOptions *options, int *numParticles) |
Filters particles out of an image based on their measurements. More... | |
int | frcParticleFilter (Image *dest, Image *source, const ParticleFilterCriteria2 *criteria, int criteriaCount, const ParticleFilterOptions *options, Rect rect, int *numParticles) |
int | frcMorphology (Image *dest, Image *source, MorphologyMethod method) |
Performs morphological transformations on binary images. More... | |
int | frcMorphology (Image *dest, Image *source, MorphologyMethod method, const StructuringElement *structuringElement) |
int | frcRejectBorder (Image *dest, Image *source) |
Eliminates particles that touch the border of the image. More... | |
int | frcRejectBorder (Image *dest, Image *source, int connectivity8) |
int | frcCountParticles (Image *image, int *numParticles) |
Counts the number of particles in a binary image. More... | |
int | frcParticleAnalysis (Image *image, int particleNumber, ParticleAnalysisReport *par) |
Conduct measurements for a single particle in an images. More... | |
int | frcEqualize (Image *dest, const Image *source, float min, float max) |
Improves contrast on a grayscale image. More... | |
int | frcEqualize (Image *dest, const Image *source, float min, float max, const Image *mask) |
int | frcColorEqualize (Image *dest, const Image *source) |
Improves contrast on a color image. More... | |
int | frcColorEqualize (Image *dest, const Image *source, int colorEqualization) |
int | frcSmartThreshold (Image *dest, const Image *source, unsigned int windowWidth, unsigned int windowHeight, LocalThresholdMethod method, double deviationWeight, ObjectType type) |
Automatically thresholds a grayscale image into a binary image for Particle Analysis based on a smart threshold. More... | |
int | frcSmartThreshold (Image *dest, const Image *source, unsigned int windowWidth, unsigned int windowHeight, LocalThresholdMethod method, double deviationWeight, ObjectType type, float replaceValue) |
int | frcSimpleThreshold (Image *dest, const Image *source, float rangeMin, float rangeMax) |
Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold. More... | |
int | frcSimpleThreshold (Image *dest, const Image *source, float rangeMin, float rangeMax, float newValue) |
Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold. More... | |
int | frcColorThreshold (Image *dest, const Image *source, ColorMode mode, const Range *plane1Range, const Range *plane2Range, const Range *plane3Range) |
Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue, Saturation, Luminance values for a HSL image. More... | |
int | frcColorThreshold (Image *dest, const Image *source, int replaceValue, ColorMode mode, const Range *plane1Range, const Range *plane2Range, const Range *plane3Range) |
Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue, Saturation, Luminance values for a HSL image. More... | |
int | frcHueThreshold (Image *dest, const Image *source, const Range *hueRange) |
A simpler version of ColorThreshold that thresholds hue range in the HSL mode. More... | |
int | frcHueThreshold (Image *dest, const Image *source, const Range *hueRange, int minSaturation) |
int | frcExtractColorPlanes (const Image *image, ColorMode mode, Image *plane1, Image *plane2, Image *plane3) |
Extracts the Red, Green, Blue, or Hue, Saturation or Luminance information from a color image. More... | |
int | frcExtractHuePlane (const Image *image, Image *huePlane) |
Extracts the Hue information from a color image. More... | |
int | frcExtractHuePlane (const Image *image, Image *huePlane, int minSaturation) |
Variables | |
int | VisionAPI_debugFlag = 1 |
Image Management functions.
int frcColorEqualize | ( | Image * | dest, |
const Image * | source | ||
) |
Improves contrast on a color image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL
option defaults: colorEqualization = TRUE to equalize all three planes of the image
dest | The destination image. |
source | The image to equalize |
colorEqualization | Set this parameter to TRUE to equalize all three planes of the image (the default). Set this parameter to FALSE to equalize only the luminance plane. |
ColorHistogramReport* frcColorHistogram | ( | const Image * | image, |
int | numClasses, | ||
ColorMode | mode | ||
) |
Calculates the histogram, or pixel distribution, of a color image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
image | Image whose histogram the function calculates. |
numClasses | The number of classes into which the function separates the pixels. Determines the number of elements in the histogram array returned |
mode | The color space in which to perform the histogram. Possible values include IMAQ_RGB and IMAQ_HSL. |
mask | An optional mask image. This image must be an IMAQ_IMAGE_U8 image. The function calculates the histogram using only those pixels in the image whose corresponding pixels in the mask are non-zero. Set this parameter to nullptr to calculate the histogram of the entire image, or use the simplified call. |
int frcColorThreshold | ( | Image * | dest, |
const Image * | source, | ||
ColorMode | mode, | ||
const Range * | plane1Range, | ||
const Range * | plane2Range, | ||
const Range * | plane3Range | ||
) |
Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue, Saturation, Luminance values for a HSL image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL. This simpler version filters based on a hue range in the HSL mode.
dest | The destination image. This must be a IMAQ_IMAGE_U8 image. |
source | The image to threshold |
mode | The color space to perform the threshold in. valid values are: IMAQ_RGB, IMAQ_HSL. |
plane1Range | The selection range for the first plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
plane2Range | The selection range for the second plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
plane3Range | The selection range for the third plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
int frcColorThreshold | ( | Image * | dest, |
const Image * | source, | ||
int | replaceValue, | ||
ColorMode | mode, | ||
const Range * | plane1Range, | ||
const Range * | plane2Range, | ||
const Range * | plane3Range | ||
) |
Applies a threshold to the Red, Green, and Blue values of a RGB image or the Hue, Saturation, Luminance values for a HSL image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL. The simpler version filters based on a hue range in the HSL mode.
dest | The destination image. This must be a IMAQ_IMAGE_U8 image. |
source | The image to threshold |
replaceValue | Value to assign to selected pixels. Defaults to 1 if simplified call is used. |
mode | The color space to perform the threshold in. valid values are: IMAQ_RGB, IMAQ_HSL. |
plane1Range | The selection range for the first plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
plane2Range | The selection range for the second plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
plane3Range | The selection range for the third plane of the image. Set this parameter to nullptr to use a selection range from 0 to 255. |
int frcCopyImage | ( | Image * | dest, |
const Image * | source | ||
) |
Copy an image object.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
dest | Copy of image. On failure, dest is nullptr. Must have already been created using frcCreateImage(). When you are finished with the created image, dispose of it by calling frcDispose(). |
source | Image to copy |
int frcCountParticles | ( | Image * | image, |
int * | numParticles | ||
) |
Counts the number of particles in a binary image.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
image | binary (thresholded) image |
numParticles | On return, the number of particles. |
Image* frcCreateImage | ( | ImageType | type | ) |
Create an image object Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64 The border size is defaulted to 3 so that convolutional algorithms work at the edges.
When you are finished with the created image, dispose of it by calling frcDispose(). To get extended error information, call GetLastError().
type | Type of image to create |
int frcCrop | ( | Image * | dest, |
const Image * | source, | ||
Rect | rect | ||
) |
Crop image without changing the scale.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
dest | Modified image |
source | Image to crop |
rect | region to process, or IMAQ_NO_RECT |
int frcDispose | ( | void * | object | ) |
Dispose of one object.
Supports any object created on the heap.
object | object to dispose of |
int frcDispose | ( | const char * | functionName, |
... | |||
) |
Dispose of a list of objects.
Supports any object created on the heap.
functionName | The name of the function |
... | A list of pointers to structures that need to be disposed of. The last pointer in the list should always be set to nullptr. |
int frcEqualize | ( | Image * | dest, |
const Image * | source, | ||
float | min, | ||
float | max | ||
) |
Improves contrast on a grayscale image.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16.
dest | The destination image. |
source | The image to equalize |
min | the smallest value used for processing. After processing, all pixel values that are less than or equal to the Minimum in the original image are set to 0 for an 8-bit image. In 16-bit and floating-point images, these pixel values are set to the smallest pixel value found in the original image. |
max | the largest value used for processing. After processing, all pixel values that are greater than or equal to the Maximum in the original image are set to 255 for an 8-bit image. In 16-bit and floating-point images, these pixel values are set to the largest pixel value found in the original image. |
mask | an 8-bit image that specifies the region of the small image that will be copied. Only those pixels in the Image Src (Small) image that correspond to an equivalent non-zero pixel in the mask image are copied. All other pixels keep their original values. The entire image is processed if Image Mask is nullptr or this parameter is omitted. |
option defaults: searchRect = IMAQ_NO_RECT minMatchScore = DEFAULT_MINMAX_SCORE (800)
int frcExtractColorPlanes | ( | const Image * | image, |
ColorMode | mode, | ||
Image * | plane1, | ||
Image * | plane2, | ||
Image * | plane3 | ||
) |
Extracts the Red, Green, Blue, or Hue, Saturation or Luminance information from a color image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
image | The source image that the function extracts the planes from. |
mode | The color space that the function extracts the planes from. Valid values are IMAQ_RGB, IMAQ_HSL, IMAQ_HSV, IMAQ_HSI. |
plane1 | On return, the first extracted plane. Set this parameter to nullptr if you do not need this information. RGB-Red, HSL/HSV/HSI-Hue. |
plane2 | On return, the second extracted plane. Set this parameter to nullptr if you do not need this information. RGB-Green, HSL/HSV/HSI-Saturation. |
plane3 | On return, the third extracted plane. Set this parameter to nullptr if you do not need this information. RGB-Blue, HSL-Luminance, HSV-Value, HSI-Intensity. |
int frcExtractHuePlane | ( | const Image * | image, |
Image * | huePlane | ||
) |
Extracts the Hue information from a color image.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64
image | The source image that the function extracts the plane from. |
huePlane | On return, the extracted hue plane. |
minSaturation | the minimum saturation level required 0-255 (try 50) |
int frcGetPixelValue | ( | const Image * | image, |
Point | pixel, | ||
PixelValue * | value | ||
) |
Measures the pixel intensities in a rectangle of an image.
Outputs intensity based statistics about an image such as Max, Min, Mean and Std Dev of pixel value. Supports IMAQ_IMAGE_U8 (grayscale) IMAQ_IMAGE_RGB (color) IMAQ_IMAGE_HSL (color-HSL).
image | The image whose pixel value the function queries |
pixel | The coordinates of the pixel that the function queries |
value | On return, the value of the specified image pixel. This parameter cannot be nullptr. This data structure contains either grayscale, RGB, HSL, Complex or RGBU64Value depending on the type of image. |
HistogramReport* frcHistogram | ( | const Image * | image, |
int | numClasses, | ||
float | min, | ||
float | max | ||
) |
Measures the pixel intensities in a rectangle of an image.
Outputs intensity based statistics about an image such as Max, Min, Mean and Std Dev of pixel value. Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
Parameter Discussion : Relevant parameters of the HistogramReport include: min, max, mean and stdDev min/max —Setting both min and max to 0 causes the function to set min to 0 and the max to 255 for 8-bit images and to the actual minimum value and maximum value of the image for all other image types. max—Setting both min and max to 0 causes the function to set max to 255 for 8-bit images and to the actual maximum value of the image for all other image types.
image | Image whose histogram the function calculates. |
numClasses | The number of classes into which the function separates the pixels. Determines the number of elements in the histogram array returned |
min | The minimum pixel value to consider for the histogram. The function does not count pixels with values less than min. |
max | The maximum pixel value to consider for the histogram. The function does not count pixels with values greater than max. |
rect | Region of interest in the image. If not included, the entire image is used. |
int frcHueThreshold | ( | Image * | dest, |
const Image * | source, | ||
const Range * | hueRange | ||
) |
A simpler version of ColorThreshold that thresholds hue range in the HSL mode.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
dest | The destination image. |
source | The image to threshold |
hueRange | The selection range for the hue (color). |
minSaturation | The minimum saturation value (1-255). If not used, DEFAULT_SATURATION_THRESHOLD is the default. |
int frcMorphology | ( | Image * | dest, |
Image * | source, | ||
MorphologyMethod | method | ||
) |
Performs morphological transformations on binary images.
Supports IMAQ_IMAGE_U8.
dest | The destination image. The border size of the destination image is not important. |
source | The image on which the function performs the morphological operations. The calculation modifies the border of the source image. The border must be at least half as large as the larger dimension of the structuring element. The connected source image for a morphological transformation must have been created with a border capable of supporting the size of the structuring element. A 3 by 3 structuring element requires a minimal border of 1, a 5 by 5 structuring element requires a minimal border of 2, and so on. |
method | The morphological transform to apply. |
structuringElement | The structuring element used in the operation. Omit this parameter if you do not want a custom structuring element. |
int frcParticleAnalysis | ( | Image * | image, |
int | particleNumber, | ||
ParticleAnalysisReport * | par | ||
) |
Conduct measurements for a single particle in an images.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
image | image with the particle to analyze. This function modifies the source image. If you need the original image, create a copy of the image using frcCopy() before using this function. |
particleNumber | The number of the particle to get information on |
par | on return, a particle analysis report containing information about the particle. This structure must be created by the caller. |
int frcParticleFilter | ( | Image * | dest, |
Image * | source, | ||
const ParticleFilterCriteria2 * | criteria, | ||
int | criteriaCount, | ||
const ParticleFilterOptions * | options, | ||
int * | numParticles | ||
) |
Filters particles out of an image based on their measurements.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL.
dest | The destination image. If dest is used, it must be the same size as the Source image. It will contain only the filtered particles. |
source | The image containing the particles to filter. |
criteria | An array of criteria to apply to the particles in the source image. This array cannot be nullptr. See the NIVisionCVI.chm help file for definitions of criteria. |
criteriaCount | The number of elements in the criteria array. |
options | Binary filter options, including rejectMatches, rejectBorder, and connectivity8. |
rect | Area of image to filter. If omitted, the default is entire image. |
numParticles | On return, the number of particles left in the image |
int frcReadImage | ( | Image * | image, |
const char * | fileName | ||
) |
Creates image object from the information in a file.
The file can be in one of the following formats: PNG, JPEG, JPEG2000, TIFF, AIPD, or BMP. Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
image | Image read in |
fileName | File to read. Cannot be nullptr |
int frcRejectBorder | ( | Image * | dest, |
Image * | source | ||
) |
Eliminates particles that touch the border of the image.
Supports IMAQ_IMAGE_U8.
dest | The destination image. |
source | The source image. If the image has a border, the function sets all border pixel values to 0. |
connectivity8 | specifies the type of connectivity used by the algorithm for particle detection. The connectivity mode directly determines whether an adjacent pixel belongs to the same particle or a different particle. Set to TRUE to use connectivity-8 to determine whether particles are touching Set to FALSE to use connectivity-4 to determine whether particles are touching. The default setting for the simplified call is TRUE |
int frcScale | ( | Image * | dest, |
const Image * | source, | ||
int | xScale, | ||
int | yScale, | ||
ScalingMode | scaleMode | ||
) |
Scales the entire image larger or smaller.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL.
dest | Modified image |
source | Image to scale |
xScale | the horizontal reduction ratio |
yScale | the vertical reduction ratio |
scaleMode | IMAQ_SCALE_LARGER or IMAQ_SCALE_SMALLER |
int frcSimpleThreshold | ( | Image * | dest, |
const Image * | source, | ||
float | rangeMin, | ||
float | rangeMax | ||
) |
Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold.
The function sets pixels values outside of the given range to 0. The function sets pixel values within the range to a given value or leaves the values unchanged. Use the simplified call to leave pixel values unchanged. Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16.
dest | The destination image. |
source | The image to threshold |
rangeMin | The lower boundary of the range of pixel values to keep |
rangeMax | The upper boundary of the range of pixel values to keep. |
int frcSimpleThreshold | ( | Image * | dest, |
const Image * | source, | ||
float | rangeMin, | ||
float | rangeMax, | ||
float | newValue | ||
) |
Converts a grayscale image to a binary image for Particle Analysis based on a fixed threshold.
The function sets pixels values outside of the given range to 0. The function sets pixel values within the range to the given value. Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16.
dest | The destination image. |
source | The image to threshold |
rangeMin | The lower boundary of the range of pixel values to keep |
rangeMax | The upper boundary of the range of pixel values to keep. |
newValue | The replacement value for pixels within the range. Use the simplified call to leave the pixel values unchanged |
int frcSmartThreshold | ( | Image * | dest, |
const Image * | source, | ||
unsigned int | windowWidth, | ||
unsigned int | windowHeight, | ||
LocalThresholdMethod | method, | ||
double | deviationWeight, | ||
ObjectType | type | ||
) |
Automatically thresholds a grayscale image into a binary image for Particle Analysis based on a smart threshold.
Supports IMAQ_IMAGE_RGB, IMAQ_IMAGE_I16
dest | The destination image. |
source | The image to threshold |
windowWidth | The width of the rectangular window around the pixel on which the function performs the local threshold. This number must be at least 3 and cannot be larger than the width of source |
windowHeight | The height of the rectangular window around the pixel on which the function performs the local threshold. This number must be at least 3 and cannot be larger than the height of source |
method | Specifies the local thresholding method the function uses. Value can be IMAQ_NIBLACK (which computes thresholds for each pixel based on its local statistics using the Niblack local thresholding algorithm.), or IMAQ_BACKGROUND_CORRECTION (which does background correction first to eliminate non-uniform lighting effects, then performs thresholding using the Otsu thresholding algorithm) |
deviationWeight | Specifies the k constant used in the Niblack local thresholding algorithm, which determines the weight applied to the variance calculation. Valid k constants range from 0 to 1. Setting this value to 0 will increase the performance of the function because the function will not calculate the variance for any of the pixels. The function ignores this value if method is not set to IMAQ_NIBLACK |
type | Specifies the type of objects for which you want to look. Values can be IMAQ_BRIGHT_OBJECTS or IMAQ_DARK_OBJECTS. |
replaceValue | Specifies the replacement value the function uses for the pixels of the kept objects in the destination image. |
int frcWriteImage | ( | const Image * | image, |
const char * | fileName | ||
) |
Write image to a file.
Supports IMAQ_IMAGE_U8, IMAQ_IMAGE_I16, IMAQ_IMAGE_SGL, IMAQ_IMAGE_COMPLEX, IMAQ_IMAGE_RGB, IMAQ_IMAGE_HSL, IMAQ_IMAGE_RGB_U64.
The file type is determined by the extension, as follows:
Extension File Type aipd or .apd AIPD .bmp BMP .jpg or .jpeg JPEG .jp2 JPEG2000 .png PNG .tif or .tiff TIFF
The following are the supported image types for each file type:
File Types Image Types AIPD all image types BMP, JPEG 8-bit, RGB PNG, TIFF, JPEG2000 8-bit, 16-bit, RGB, RGBU64
image | Image to write |
fileName | File to read. Cannot be nullptr. The extension determines the file format that is written. |