-
Notifications
You must be signed in to change notification settings - Fork 107
Operation Reference Table
Paula Rudy edited this page Nov 22, 2015
·
23 revisions
Here you can find a table containing all the step types currently included in GRIP, including the file location within the project where they are defined, and a link to any relevant OpenCV documentation. A "y" in the "Generated?" column indicates the defining java file was automatically generated from the relevant OpenCV function.
In case of a transformation to or from RGB color space, the order of the channels should be specified explicitly (RGB or BGR). Note that the default color format in OpenCV is often referred to as RGB but it is actually BGR (the bytes are reversed). So the first byte in a standard (24-bit) color image will be an 8-bit Blue component, the second byte will be Green, and the third byte will be Red. The fourth, fifth, and sixth bytes would then be the second pixel (Blue, then Green, then Red), and so on.Step Name | Relevant OpenCV (if any) | Description: |
---|---|---|
Blur | cv::blur | Replaces each pixel with an average of its neighborhood (reduces fine image detail) |
Desaturate | cv::cvtColor | Converts a color image into grayscale. |
RGB Threshold | cv::inRange | Converts a color image into black and white based on given threshold ranges for each channel (red, green and blue). |
HSV Threshold | cv::inRange | Uses cv::inRange to threshold an image using the provided inclusive ranges of hue, saturation, and value (does not include white/pale colors- as opposed to HSL Threshold, which does) |
HSL Threshold | cv::inRange | Uses cv::inRange to threshold an image using the provided inclusive ranges of hue, saturation, and lightness (includes white/pale colors, as opposed to HSV Threshold, which does not) |
Find Blobs | Finds places in the supplied image (an opencv "mat" object that satisfy certain characteristics. Outputs a "blobsReport" object (a list of the blobs detected). | |
Find Lines | cv::LineSegmentDetector | Find line segments in a color or grayscale image. Outputs a list of lines (“LinesReport” object). |
Filter Lines | cv::LineSegmentDetector | Given a "LinesReport" object (the output of the "Find Lines" step- a list of lines), filter only the lines that meet certain criteria. This can be used to narrow down detected lines to only relevant ones. Outputs a "LinesReport" object (a list of lines). |
Mask | "Mask operations on matrices" (an opencv 2.4.12.0 tutorial) | Masks off the specified area in an image (an opencv "mat" object). You must pass in a mask image of the same size as the image to be masked off. Any area of the input image where the mask is white is kept the same. Any area where the mask is black is changed to black. |
Find Min and Max | cv::minMaxLoc | Find the minimum and maximum value points and their locations. This operation can only work with a single channel, so the input image must be in grayscale. |
New Point | (none) | Create a point by x,y value. Use with the "rectangle" step. |
New Size | cv "Size" type | Create a new cv “size” value. Use with the "resize" step. |
Get Mat Info | cv "Mat" class | Provides access to the "size", "is empty"(t or f), "channels", "columns", "rows", and "high value" attributes of an opencv_core.Mat object (IE an image). |
absdiff | cv::absdiff | Calculates the per-element absolute difference of two images (opencv "mat" objects). In the case of multi-channel images, each channel is processed independently. Images must be the same size. This step is a good way to find differences between two images (they will be non-black). |
adaptiveThreshold | cv::adaptiveThreshold | This step converts a grayscale image to a black and white ("binary") image. |
add | cv::add | Calculates the per-pixel addition of two images. Images must be the same size. In multi-channel images, each channel is processed separately. |
addWeighted | cv::addWeighted | Calculates the weighted sum of two images. Images must be the same size. Alpha is the weight of the first image, beta is the weight of the second image, and gamma is a constant. In multi-channel images, each channel is processed separately. |
applyColorMap | cv::applyColorMap | Applies a colormap selected from a given list of color maps (which contains a list of GNU Octave/MATLAB- equivalent colormaps) to the source image (an opencv "mat" object). Colormaps map color values in the source image to a color value given in the colormap. |
bitwise_and | cv::bitwise_and | Calculates the per-element bit-wise AND of two images (opencv "mat" objects). In the case of multi-channel images, each channel is processed independently. Images must be the same size. |
bitwise_not | cv::bitwise_not | Calculates the per-element bit-wise inversion of the input image. In the case of multi-channel images, each channel is processed independently. |
bitwise_or | cv::bitwise_or | Calculates the per-element bit-wise or of two images (opencv "mat" objects). In the case of multi-channel images, each channel is processed independently. Images must be the same size. |
bitwise_xor | cv::bitwise_xor | Calculates the per-element bit-wise xor of two images (opencv "mat" objects). In the case of multi-channel images, each channel is processed independently. Images must be the same size. |
Canny | cv::Canny | This step applies a "canny edge detection" algorithm to an input image. |
compare | cv::compare | Performs the per-element comparison of two images or an image and scalar value. When the comparison result is true, the corresponding element of output image is set to 255. |
cvtColor | cv::cvtColor | This step is used to convert an input image from one color space to another (for example, a grayscale image to an RGB image). See also: color conversions in opencv |
dilate | cv::dilate | Applies a dilation to the given source image. In dilation, the value of an output pixel is the maximum value of all the pixels in the input pixel's "neighborhood". For example, in a binary image (black and white), if any of the pixels is set to the value 1 (white), the output pixel is set to 1. Pixels near the edge of an image have the same size and shape "neighborhood", but all the pixels in that neighborhood that would lie outside the boundaries of the input image are assumed to be the minimum value for that type of image. For example, in a black and white image, this would be "0" (black). |
divide | cv::divide | Performs a per-element division of two images, using a scalar applied to the second image (IE result = input1 * scalar / input2). |
erode | cv::erode | Applies an erosion to the given source image. In erosion, the value of an output pixel is the minimum value of all the pixels in the input pixel's "neighborhood". For example, in a binary image (black and white), if any of the pixels is set to the value 0 (black), the output pixel is set to 0. Pixels near the edge of an image have the same size and shape "neighborhood", but all the pixels in that neighborhood that would lie outside the boundaries of the input image are assumed to be the maximum value for that type of image. For example, in a black and white image, this would be "1" (white). |
extractChannel | cv::extractChannel | Extracts a single channel from the source image. Channel to remove is indicated by an integer representing an index (starting at 0) of an array of the channels in the image. |
flip | cv::flip | Does what it says on the tin. Flips an image vertically, horizontally, or both vertically AND horizontally. |
GaussianBlur | cv::GaussianBlur | A Gaussian blur is a blur operation that gives more weight to central pixels and less weight to it's neighbors (the farther away a pixel is from the current center- ie the pixel whose result is currently being calculated- the less weight it is given. The size of the "neighborhood" and the difference in weights each pixel is given is determined using a 2D Gaussian function, where the stadard derivation in both the x and y direction (sigmaX and sigmaY) gives the distance from the center pixel, and the kernel size (ksize) gives the magnitude of the Gaussian (how quickly the weights change from the outside to the center of the neighborhood). |
Laplacian | cv::Laplacian | |
max | cv::max | Computes the per-element maximum of two images (opencv mat objects). The two images must be the same size. This outputs an image (opencv mat object) where each element represents the maximum value between the two input images. |
medianBlur | cv::medianBlur | Replaces each pixel with the median value of its neighbors (reduces fine image detail). The size of the "window" within which to determine the median is given by the "ksize" parameter (and so "ksize" must be odd and greater than one). |
min | cv::min | Computes the per-element minimum of two images (opencv mat objects). The two images must be the same size. This outputs an image (opencv mat object) where each element represents the minimum value between the two input images. |
multiply | cv::multiply | Performs a per-element multiplication of two images, using a scalar (IE result = scalar * input1 * input2). |
rectangle | cv::rectangle | This step draws a rectangle outline or a filled rectangle whose two opposite corners are pt1 and pt2. |
resize | cv::resize | Resizes the input image. To use an openCV size to define the desired output image size, use the "dsize" parameter. If "dsize" is not used, the output size will be computed using fx and fy as percentages of the original size in the x and y direction respectively. |
scaleAdd | cv::scaleAdd | Calculates the per-pixel addition of two images, where one image is multiplied by a scalar. Images must be the same size. In multi-channel images, each channel is processed seperately. |
Sobel | cv::Sobel | |
subtract | cv::subtract | Calculates the per-element difference between two images (opencv mat objects). Output is an image where each element represents the value resulting when that element of the second image is subtracted from the first. In the case of multi-channel images, each channel is processed independently. |
threshold | cv::threshold | This step provides a single method for accessing a variety of threshold functions. |
************************* | More to come! | ******************************************* |