OpenCV: Matrix Reductions

| OpenCV 3.4.2 Open Source Computer Vision

Functions
Matrix Reductions
Core functionality » OpenGL interoperability » CUDA-accelerated Computer Vision » Operations on Matrices

## Functions
Scalar | cv::cuda::absSum (InputArray src, InputArray mask=noArray())
| Returns the sum of absolute values for matrix elements. More...
void | cv::cuda::calcAbsSum (InputArray src, OutputArray dst, InputArray mask=noArray(), Stream &stream=Stream::Null())
void | cv::cuda::calcNorm (InputArray src, OutputArray dst, int normType, InputArray mask=noArray(), Stream &stream=Stream::Null())
void | cv::cuda::calcNormDiff (InputArray src1, InputArray src2, OutputArray dst, int normType=NORM_L2, Stream &stream=Stream::Null())
void | cv::cuda::calcSqrSum (InputArray src, OutputArray dst, InputArray mask=noArray(), Stream &stream=Stream::Null())
void | cv::cuda::calcSum (InputArray src, OutputArray dst, InputArray mask=noArray(), Stream &stream=Stream::Null())
int | cv::cuda::countNonZero (InputArray src)
| Counts non-zero matrix elements. More...
void | cv::cuda::countNonZero (InputArray src, OutputArray dst, Stream &stream=Stream::Null())
void | cv::cuda::findMinMax (InputArray src, OutputArray dst, InputArray mask=noArray(), Stream &stream=Stream::Null())
void | cv::cuda::findMinMaxLoc (InputArray src, OutputArray minMaxVals, OutputArray loc, InputArray mask=noArray(), Stream &stream=Stream::Null())
void | cv::cuda::integral (InputArray src, OutputArray sum, Stream &stream=Stream::Null())
| Computes an integral image. More...
void | cv::cuda::meanStdDev (InputArray mtx, Scalar &mean, Scalar &stddev)
| Computes a mean value and a standard deviation of matrix elements. More...
void | cv::cuda::meanStdDev (InputArray mtx, OutputArray dst, Stream &stream=Stream::Null())
void | cv::cuda::minMax (InputArray src, double *minVal, double *maxVal, InputArray mask=noArray())
| Finds global minimum and maximum matrix elements and returns their values. More...
void | cv::cuda::minMaxLoc (InputArray src, double *minVal, double *maxVal, Point *minLoc, Point *maxLoc, InputArray mask=noArray())
| Finds global minimum and maximum matrix elements and returns their values with locations. More...
double | cv::cuda::norm (InputArray src1, int normType, InputArray mask=noArray())
| Returns the norm of a matrix (or difference of two matrices). More...
double | cv::cuda::norm (InputArray src1, InputArray src2, int normType=NORM_L2)
| Returns the difference of two matrices. More...
void | cv::cuda::normalize (InputArray src, OutputArray dst, double alpha, double beta, int norm_type, int dtype, InputArray mask=noArray(), Stream &stream=Stream::Null())
| Normalizes the norm or value range of an array. More...
void | cv::cuda::rectStdDev (InputArray src, InputArray sqr, OutputArray dst, Rect rect, Stream &stream=Stream::Null())
| Computes a standard deviation of integral images. More...
void | cv::cuda::reduce (InputArray mtx, OutputArray vec, int dim, int reduceOp, int dtype=-1, Stream &stream=Stream::Null())
| Reduces a matrix to a vector. More...
void | cv::cuda::sqrIntegral (InputArray src, OutputArray sqsum, Stream &stream=Stream::Null())
| Computes a squared integral image. More...
Scalar | cv::cuda::sqrSum (InputArray src, InputArray mask=noArray())
| Returns the squared sum of matrix elements. More...
Scalar | cv::cuda::sum (InputArray src, InputArray mask=noArray())
| Returns the sum of matrix elements. More...

## Detailed Description

## Function Documentation

## ◆ absSum()

Scalar cv::cuda::absSum | ( | InputArray | src,
|  | InputArray | mask = `noArray()`
| ) |  |

Returns the sum of absolute values for matrix elements.

Parameters

  src | Source image of any depth except for CV_64F .
  mask | optional operation mask; it must have the same size as src1 and CV_8UC1 type.

## ◆ calcAbsSum()

void cv::cuda::calcAbsSum | ( | InputArray | src,
|  | OutputArray | dst,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ calcNorm()

void cv::cuda::calcNorm | ( | InputArray | src,
|  | OutputArray | dst,
|  | int | normType,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ calcNormDiff()

void cv::cuda::calcNormDiff | ( | InputArray | src1,
|  | InputArray | src2,
|  | OutputArray | dst,
|  | int | normType = `NORM_L2`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ calcSqrSum()

void cv::cuda::calcSqrSum | ( | InputArray | src,
|  | OutputArray | dst,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ calcSum()

void cv::cuda::calcSum | ( | InputArray | src,
|  | OutputArray | dst,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ countNonZero() [1/2]

int cv::cuda::countNonZero | ( | InputArray | src | ) |

Counts non-zero matrix elements.

Parameters

  src | Single-channel source image.

The function does not work with CV_64F images on GPUs with the compute capability < 1.3.

See also
  countNonZero

## ◆ countNonZero() [2/2]

void cv::cuda::countNonZero | ( | InputArray | src,
|  | OutputArray | dst,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ findMinMax()

void cv::cuda::findMinMax | ( | InputArray | src,
|  | OutputArray | dst,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ findMinMaxLoc()

void cv::cuda::findMinMaxLoc | ( | InputArray | src,
|  | OutputArray | minMaxVals,
|  | OutputArray | loc,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ integral()

void cv::cuda::integral | ( | InputArray | src,
|  | OutputArray | sum,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

Computes an integral image.

Parameters

  src | Source image. Only CV_8UC1 images are supported for now.
  sum | Integral image containing 32-bit unsigned integer values packed into CV_32SC1 .
  stream | Stream for the asynchronous version.

See also
  integral

## ◆ meanStdDev() [1/2]

void cv::cuda::meanStdDev | ( | InputArray | mtx,
|  | Scalar & | mean,
|  | Scalar & | stddev
| ) |  |

Computes a mean value and a standard deviation of matrix elements.

Parameters

  mtx | Source matrix. CV_8UC1 matrices are supported for now.
  mean | Mean value.
  stddev | Standard deviation value.

See also
  meanStdDev

## ◆ meanStdDev() [2/2]

void cv::cuda::meanStdDev | ( | InputArray | mtx,
|  | OutputArray | dst,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ minMax()

void cv::cuda::minMax | ( | InputArray | src,
|  | double * | minVal,
|  | double * | maxVal,
|  | InputArray | mask = `noArray()`
| ) |  |

Finds global minimum and maximum matrix elements and returns their values.

Parameters

  src | Single-channel source image.
  minVal | Pointer to the returned minimum value. Use NULL if not required.
  maxVal | Pointer to the returned maximum value. Use NULL if not required.
  mask | Optional mask to select a sub-matrix.

The function does not work with CV_64F images on GPUs with the compute capability < 1.3.

See also
  minMaxLoc

## ◆ minMaxLoc()

void cv::cuda::minMaxLoc | ( | InputArray | src,
|  | double * | minVal,
|  | double * | maxVal,
|  | Point * | minLoc,
|  | Point * | maxLoc,
|  | InputArray | mask = `noArray()`
| ) |  |

Finds global minimum and maximum matrix elements and returns their values with locations.

Parameters

  src | Single-channel source image.
  minVal | Pointer to the returned minimum value. Use NULL if not required.
  maxVal | Pointer to the returned maximum value. Use NULL if not required.
  minLoc | Pointer to the returned minimum location. Use NULL if not required.
  maxLoc | Pointer to the returned maximum location. Use NULL if not required.
  mask | Optional mask to select a sub-matrix.

The function does not work with CV_64F images on GPU with the compute capability < 1.3.

See also
  minMaxLoc

## ◆ norm() [1/2]

double cv::cuda::norm | ( | InputArray | src1,
|  | int | normType,
|  | InputArray | mask = `noArray()`
| ) |  |

Returns the norm of a matrix (or difference of two matrices).

Parameters

  src1 | Source matrix. Any matrices except 64F are supported.
  normType | Norm type. NORM_L1 , NORM_L2 , and NORM_INF are supported for now.
  mask | optional operation mask; it must have the same size as src1 and CV_8UC1 type.

See also
  norm

## ◆ norm() [2/2]

double cv::cuda::norm | ( | InputArray | src1,
|  | InputArray | src2,
|  | int | normType = `NORM_L2`
| ) |  |

Returns the difference of two matrices.

Parameters

  src1 | Source matrix. Any matrices except 64F are supported.
  src2 | Second source matrix (if any) with the same size and type as src1.
  normType | Norm type. NORM_L1 , NORM_L2 , and NORM_INF are supported for now.

See also
  norm

## ◆ normalize()

void cv::cuda::normalize | ( | InputArray | src,
|  | OutputArray | dst,
|  | double | alpha,
|  | double | beta,
|  | int | norm_type,
|  | int | dtype,
|  | InputArray | mask = `noArray()`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

Normalizes the norm or value range of an array.

Parameters

  src | Input array.
  dst | Output array of the same size as src .
  alpha | Norm value to normalize to or the lower range boundary in case of the range normalization.
  beta | Upper range boundary in case of the range normalization; it is not used for the norm normalization.
  norm_type | Normalization type ( NORM_MINMAX , NORM_L2 , NORM_L1 or NORM_INF ).
  dtype | When negative, the output array has the same type as src; otherwise, it has the same number of channels as src and the depth =CV_MAT_DEPTH(dtype).
  mask | Optional operation mask.
  stream | Stream for the asynchronous version.

See also
  normalize

## ◆ rectStdDev()

void cv::cuda::rectStdDev | ( | InputArray | src,
|  | InputArray | sqr,
|  | OutputArray | dst,
|  | Rect | rect,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

Computes a standard deviation of integral images.

Parameters

  src | Source image. Only the CV_32SC1 type is supported.
  sqr | Squared source image. Only the CV_32FC1 type is supported.
  dst | Destination image with the same type and size as src .
  rect | Rectangular window.
  stream | Stream for the asynchronous version.

## ◆ reduce()

void cv::cuda::reduce | ( | InputArray | mtx,
|  | OutputArray | vec,
|  | int | dim,
|  | int | reduceOp,
|  | int | dtype = `-1`,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

Reduces a matrix to a vector.

Parameters

  mtx | Source 2D matrix.
  vec | Destination vector. Its size and type is defined by dim and dtype parameters.
  dim | Dimension index along which the matrix is reduced. 0 means that the matrix is reduced to a single row. 1 means that the matrix is reduced to a single column.
  reduceOp | Reduction operation that could be one of the following: CV_REDUCE_SUM The output is the sum of all rows/columns of the matrix. CV_REDUCE_AVG The output is the mean vector of all rows/columns of the matrix. CV_REDUCE_MAX The output is the maximum (column/row-wise) of all rows/columns of the matrix. CV_REDUCE_MIN The output is the minimum (column/row-wise) of all rows/columns of the matrix.
  dtype | When it is negative, the destination vector will have the same type as the source matrix. Otherwise, its type will be CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), mtx.channels()) .
  stream | Stream for the asynchronous version.

The function reduce reduces the matrix to a vector by treating the matrix rows/columns as a set of 1D vectors and performing the specified operation on the vectors until a single row/column is obtained. For example, the function can be used to compute horizontal and vertical projections of a raster image. In case of CV_REDUCE_SUM and CV_REDUCE_AVG , the output may have a larger element bit-depth to preserve accuracy. And multi-channel arrays are also supported in these two reduction modes.

See also
  reduce

## ◆ sqrIntegral()

void cv::cuda::sqrIntegral | ( | InputArray | src,
|  | OutputArray | sqsum,
|  | Stream & | stream = `Stream::Null()`
| ) |  |

Computes a squared integral image.

Parameters

  src | Source image. Only CV_8UC1 images are supported for now.
  sqsum | Squared integral image containing 64-bit unsigned integer values packed into CV_64FC1 .
  stream | Stream for the asynchronous version.

## ◆ sqrSum()

Scalar cv::cuda::sqrSum | ( | InputArray | src,
|  | InputArray | mask = `noArray()`
| ) |  |

Returns the squared sum of matrix elements.

Parameters

  src | Source image of any depth except for CV_64F .
  mask | optional operation mask; it must have the same size as src1 and CV_8UC1 type.

## ◆ sum()

Scalar cv::cuda::sum | ( | InputArray | src,
|  | InputArray | mask = `noArray()`
| ) |  |

Returns the sum of matrix elements.

Parameters

  src | Source image of any depth except for CV_64F .
  mask | optional operation mask; it must have the same size as src1 and CV_8UC1 type.

See also
  sum