Simd Library Documentation.

Home | Release Notes | Download | Documentation | Issues | GitHub
Other Statistic

Estimation of various image statistic. More...

Functions

SIMD_API void SimdLaplaceAbsSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *sum)
 Calculates sum of absolute value of Laplace's filter. More...
 
SIMD_API void SimdGetStatistic (const uint8_t *src, size_t stride, size_t width, size_t height, uint8_t *min, uint8_t *max, uint8_t *average)
 Finds minimal, maximal and average pixel values for given image. More...
 
SIMD_API void SimdGetMoments (const uint8_t *mask, size_t stride, size_t width, size_t height, uint8_t index, uint64_t *area, uint64_t *x, uint64_t *y, uint64_t *xx, uint64_t *xy, uint64_t *yy)
 Calculate statistical characteristics (moments) of pixels with given index. More...
 
SIMD_API void SimdGetObjectMoments (const uint8_t *src, size_t srcStride, size_t width, size_t height, const uint8_t *mask, size_t maskStride, uint8_t index, uint64_t *n, uint64_t *s, uint64_t *sx, uint64_t *sy, uint64_t *sxx, uint64_t *sxy, uint64_t *syy)
 Calculate statistical characteristics (moments) of given object. More...
 
SIMD_API void SimdValueSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *sum)
 Gets sum of value of pixels for gray 8-bit image. More...
 
SIMD_API void SimdSquareSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *sum)
 Gets sum of squared value of pixels for gray 8-bit image . More...
 
SIMD_API void SimdValueSquareSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *valueSum, uint64_t *squareSum)
 Gets sum and squared sum of value of pixels for gray 8-bit image. More...
 
SIMD_API void SimdValueSquareSums (const uint8_t *src, size_t stride, size_t width, size_t height, size_t channels, uint64_t *valueSums, uint64_t *squareSums)
 Gets image channels value sums and squared value sums for image. The image must have 8-bit depth per channel. More...
 
SIMD_API void SimdCorrelationSum (const uint8_t *a, size_t aStride, const uint8_t *b, size_t bStride, size_t width, size_t height, uint64_t *sum)
 Gets sum of pixel correlation for two gray 8-bit images. More...
 
template<template< class > class A>
SIMD_INLINE void LaplaceAbsSum (const View< A > &src, uint64_t &sum)
 Calculates sum of absolute value of Laplace's filter. More...
 
template<template< class > class A>
SIMD_INLINE void GetStatistic (const View< A > &src, uint8_t &min, uint8_t &max, uint8_t &average)
 Finds minimal, maximal and average pixel values for given image. More...
 
template<template< class > class A>
SIMD_INLINE void GetMoments (const View< A > &mask, uint8_t index, uint64_t &area, uint64_t &x, uint64_t &y, uint64_t &xx, uint64_t &xy, uint64_t &yy)
 Calculate statistical characteristics (moments) of pixels with given index. More...
 
template<template< class > class A>
SIMD_INLINE void GetObjectMoments (const View< A > &src, const View< A > &mask, uint8_t index, uint64_t &n, uint64_t &s, uint64_t &sx, uint64_t &sy, uint64_t &sxx, uint64_t &sxy, uint64_t &syy)
 Calculate statistical characteristics (moments) of given object. More...
 
template<template< class > class A>
SIMD_INLINE void ValueSum (const View< A > &src, uint64_t &sum)
 Gets sum of value of pixels for gray 8-bit image. More...
 
template<template< class > class A>
SIMD_INLINE void SquareSum (const View< A > &src, uint64_t &sum)
 Gets sum of squared value of pixels for gray 8-bit image. More...
 
template<template< class > class A>
SIMD_INLINE void ValueSquareSum (const View< A > &src, uint64_t &valueSum, uint64_t &squareSum)
 Gets sum and sum of squared value of pixels for gray 8-bit image. More...
 
template<template< class > class A>
SIMD_INLINE void ValueSquareSums (const View< A > &src, uint64_t *valueSums, uint64_t *squareSums)
 Gets image channels value sums and squared value sums for image. The image must have 8-bit depth per channel. More...
 
template<template< class > class A>
SIMD_INLINE void CorrelationSum (const View< A > &a, const View< A > &b, uint64_t &sum)
 Gets sum of pixel correlation for two gray 8-bit images. More...
 

Detailed Description

Estimation of various image statistic.

Function Documentation

◆ SimdLaplaceAbsSum()

void SimdLaplaceAbsSum ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
uint64_t *  sum 
)

Calculates sum of absolute value of Laplace's filter.

Input image must has 8-bit gray format.

For every point:

sum += abs(
    - src[x-1, y-1] -   src[x, y-1] - src[x+1, y-1]
    - src[x-1, y]   + 8*src[x, y]   - src[x+1, y]
    - src[x-1, y+1] -   src[x, y+1] - src[x+1, y+1]).
Note
This function has a C++ wrappers: Simd::LaplaceAbsSum(const View<A>& src, uint64_t & sum).
Parameters
[in]src- a pointer to pixels data of the input image.
[in]stride- a row size of the input image.
[in]width- an image width.
[in]height- an image height.
[out]sum- a pointer to result sum.

◆ SimdGetStatistic()

void SimdGetStatistic ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
uint8_t *  min,
uint8_t *  max,
uint8_t *  average 
)

Finds minimal, maximal and average pixel values for given image.

The image must has 8-bit gray format.

Note
This function has a C++ wrappers: Simd::GetStatistic(const View<A>& src, uint8_t & min, uint8_t & max, uint8_t & average).
Parameters
[in]src- a pointer to pixels data of the input image.
[in]stride- a row size of the image.
[in]width- an image width.
[in]height- an image height.
[out]min- a pointer to unsigned 8-bit integer value with found minimal pixel value.
[out]max- a pointer to unsigned 8-bit integer value with found maximal pixel value.
[out]average- a pointer to unsigned 8-bit integer value with found average pixel value.

◆ SimdGetMoments()

void SimdGetMoments ( const uint8_t *  mask,
size_t  stride,
size_t  width,
size_t  height,
uint8_t  index,
uint64_t *  area,
uint64_t *  x,
uint64_t *  y,
uint64_t *  xx,
uint64_t *  xy,
uint64_t *  yy 
)

Calculate statistical characteristics (moments) of pixels with given index.

The image must has 8-bit gray format.

For every point:

if(mask[X, Y] == index)
{
    area += 1.
    x += X.
    y += Y.
    xx += X*X.
    xy += X*Y.
    yy += Y*Y.
}
Note
This function has a C++ wrappers: Simd::GetMoments(const View<A>& mask, uint8_t index, uint64_t & area, uint64_t & x, uint64_t & y, uint64_t & xx, uint64_t & xy, uint64_t & yy).
Parameters
[in]mask- a pointer to pixels data of the mask image.
[in]stride- a row size of the mask image.
[in]width- an image width.
[in]height- an image height.
[in]index- a mask index.
[out]area- a pointer to unsigned 64-bit integer value with found area (number of pixels with given index).
[out]x- a pointer to unsigned 64-bit integer value with found first-order moment x.
[out]y- a pointer to unsigned 64-bit integer value with found first-order moment y.
[out]xx- a pointer to unsigned 64-bit integer value with found second-order moment xx.
[out]xy- a pointer to unsigned 64-bit integer value with found second-order moment xy.
[out]yy- a pointer to unsigned 64-bit integer value with found second-order moment yy.

◆ SimdGetObjectMoments()

void SimdGetObjectMoments ( const uint8_t *  src,
size_t  srcStride,
size_t  width,
size_t  height,
const uint8_t *  mask,
size_t  maskStride,
uint8_t  index,
uint64_t *  n,
uint64_t *  s,
uint64_t *  sx,
uint64_t *  sy,
uint64_t *  sxx,
uint64_t *  sxy,
uint64_t *  syy 
)

Calculate statistical characteristics (moments) of given object.

The images must has 8-bit gray format and equal size. One of them can be empty.

For every point:

if(mask[X, Y] == index || mask == 0)
{
    S = src ? src[X, Y] : 1;
    n += 1.
    s += S;
    sx += S*X.
    sy += S*Y.
    sxx += S*X*X.
    sxy += S*X*Y.
    syy += S*Y*Y.
}
Note
This function has a C++ wrappers: Simd::GetObjectMoments(const View<A> & src, const View<A> & mask, uint8_t index, uint64_t & n, uint64_t & s, uint64_t & sx, uint64_t & sy, uint64_t & sxx, uint64_t & sxy, uint64_t & syy).
Parameters
[in]src- a pointer to pixels data of the input image. Can be NULL (its behaviour is equal to function SimdGetMoments).
[in]srcStride- a row size of the input image.
[in]width- an image width.
[in]height- an image height.
[in]mask- a pointer to pixels data of the mask image. Can be NULL (the moments will be collected over whole image).
[in]maskStride- a row size of the mask image.
[in]index- a mask index.
[out]n- a pointer to unsigned 64-bit integer value with found area of given object.
[out]s- a pointer to unsigned 64-bit integer value with sum of image values of given object.
[out]sx- a pointer to unsigned 64-bit integer value with found first-order moment x of given object.
[out]sy- a pointer to unsigned 64-bit integer value with found first-order moment y of given object.
[out]sxx- a pointer to unsigned 64-bit integer value with found second-order moment xx of given object.
[out]sxy- a pointer to unsigned 64-bit integer value with found second-order moment xy of given object.
[out]syy- a pointer to unsigned 64-bit integer value with found second-order moment yy of given object.

◆ SimdValueSum()

void SimdValueSum ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
uint64_t *  sum 
)

Gets sum of value of pixels for gray 8-bit image.

Note
This function has a C++ wrappers: Simd::ValueSum(const View<A>& src, uint64_t & sum).
Parameters
[in]src- a pointer to pixels data of the image.
[in]stride- a row size of the image.
[in]width- an image width.
[in]height- an image height.
[out]sum- the result sum.

◆ SimdSquareSum()

void SimdSquareSum ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
uint64_t *  sum 
)

Gets sum of squared value of pixels for gray 8-bit image .

Note
This function has a C++ wrappers: Simd::SquareSum(const View<A>& src, uint64_t & sum).
Parameters
[in]src- a pointer to pixels data of the image.
[in]stride- a row size of the image.
[in]width- an image width.
[in]height- an image height.
[out]sum- the result sum.

◆ SimdValueSquareSum()

void SimdValueSquareSum ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
uint64_t *  valueSum,
uint64_t *  squareSum 
)

Gets sum and squared sum of value of pixels for gray 8-bit image.

Note
This function has a C++ wrappers: Simd::ValueSquareSum(const View<A>& src, uint64_t & valueSum, uint64_t & squareSum).
Parameters
[in]src- a pointer to pixels data of the image.
[in]stride- a row size of the image.
[in]width- an image width.
[in]height- an image height.
[out]valueSum- the result value sum.
[out]squareSum- the result square sum.

◆ SimdValueSquareSums()

void SimdValueSquareSums ( const uint8_t *  src,
size_t  stride,
size_t  width,
size_t  height,
size_t  channels,
uint64_t *  valueSums,
uint64_t *  squareSums 
)

Gets image channels value sums and squared value sums for image. The image must have 8-bit depth per channel.

for(c = 0; c < channels; c++)
{
    valueSums[c] = 0;
    squareSums[c] = 0;
}
for(y = 0; y < height; y++) 
    for(x = 0; x < width; x++)
        for(c = 0; c < channels; c++)
        {
            value = src[y * stride + x * channels + c];
            valueSums[c] += value;
            squareSums[c] += value * value;
        }
Note
This function has a C++ wrappers: Simd::ValueSquareSums(const View<A>& src, uint64_t * valueSums, uint64_t * squareSums).
Parameters
[in]src- a pointer to pixels data of the image.
[in]stride- a row size of the image.
[in]width- an image width.
[in]height- an image height.
[in]channels- an image channels count. It my be equal to 1, 2, 3 or 4.
[out]valueSums- the pointer to output buffer with value sums. Size of the buffer must be at least channels count.
[out]squareSums- the pointer to output buffer with square sums. Size of the buffer must be at least channels count.

◆ SimdCorrelationSum()

void SimdCorrelationSum ( const uint8_t *  a,
size_t  aStride,
const uint8_t *  b,
size_t  bStride,
size_t  width,
size_t  height,
uint64_t *  sum 
)

Gets sum of pixel correlation for two gray 8-bit images.

For all points:

sum += a[i]*b[i];

All images must have the same width and height and 8-bit gray pixel format.

Note
This function has a C++ wrappers: Simd::CorrelationSum(const View<A> & a, const View<A> & b, uint64_t & sum).
Parameters
[in]a- a pointer to pixels data of the first image.
[in]aStride- a row size of the first image.
[in]b- a pointer to pixels data of the second image.
[in]bStride- a row size of the second image.
[in]width- an images width.
[in]height- an images height.
[out]sum- a pointer to result sum.

◆ LaplaceAbsSum()

void LaplaceAbsSum ( const View< A > &  src,
uint64_t &  sum 
)

Calculates sum of absolute value of Laplace's filter.

Input image must has 8-bit gray format.

For every point:

sum += abs(
    - src[x-1, y-1] -   src[x, y-1] - src[x+1, y-1]
    - src[x-1, y]   + 8*src[x, y]   - src[x+1, y]
    - src[x-1, y+1] -   src[x, y+1] - src[x+1, y+1]).
Note
This function is a C++ wrapper for function SimdLaplaceAbsSum.
Parameters
[in]src- an input image.
[out]sum- a result sum.

◆ GetStatistic()

void GetStatistic ( const View< A > &  src,
uint8_t &  min,
uint8_t &  max,
uint8_t &  average 
)

Finds minimal, maximal and average pixel values for given image.

The image must has 8-bit gray format.

Note
This function is a C++ wrapper for function SimdGetStatistic.
Parameters
[in]src- an input image.
[out]min- a reference to unsigned 8-bit integer value with found minimal pixel value.
[out]max- a reference to unsigned 8-bit integer value with found maximal pixel value.
[out]average- a reference to unsigned 8-bit integer value with found average pixel value.

◆ GetMoments()

void GetMoments ( const View< A > &  mask,
uint8_t  index,
uint64_t &  area,
uint64_t &  x,
uint64_t &  y,
uint64_t &  xx,
uint64_t &  xy,
uint64_t &  yy 
)

Calculate statistical characteristics (moments) of pixels with given index.

The image must has 8-bit gray format.

For every point:

if(mask[X, Y] == index)
{
    area += 1.
    x += X.
    y += Y.
    xx += X*X.
    xy += X*Y.
    yy += Y*Y.
}
Note
This function is a C++ wrapper for function SimdGetMoments.
Parameters
[in]mask- a mask image.
[in]index- a mask index.
[out]area- a reference to unsigned 64-bit integer value with found area (number of pixels with given index).
[out]x- a reference to unsigned 64-bit integer value with found first-order moment x.
[out]y- a reference to unsigned 64-bit integer value with found first-order moment y.
[out]xx- a reference to unsigned 64-bit integer value with found second-order moment xx.
[out]xy- a reference to unsigned 64-bit integer value with found second-order moment xy.
[out]yy- a reference to unsigned 64-bit integer value with found second-order moment yy.

◆ GetObjectMoments()

void GetObjectMoments ( const View< A > &  src,
const View< A > &  mask,
uint8_t  index,
uint64_t &  n,
uint64_t &  s,
uint64_t &  sx,
uint64_t &  sy,
uint64_t &  sxx,
uint64_t &  sxy,
uint64_t &  syy 
)

Calculate statistical characteristics (moments) of given object.

The images must has 8-bit gray format and equal size. One of them can be empty.

For every point:

if(mask[X, Y] == index || mask == 0)
{
    S = src ? src[X, Y] : 1;
    n += 1.
    s += S;
    sx += S*X.
    sy += S*Y.
    sxx += S*X*X.
    sxy += S*X*Y.
    syy += S*Y*Y.
}
Note
This function is a C++ wrapper for function SimdGetObjectMoments.
Parameters
[in]src- an input image.
[in]mask- a mask image. Can be empty.
[in]index- an object index.
[out]n- a reference to unsigned 64-bit integer value with found are of given object.
[out]s- a reference to unsigned 64-bit integer value with sum of image values of given object.
[out]sx- a reference to unsigned 64-bit integer value with found first-order moment x of given object.
[out]sy- a reference to unsigned 64-bit integer value with found first-order moment y of given object.
[out]sxx- a reference to unsigned 64-bit integer value with found second-order moment xx of given object.
[out]sxy- a reference to unsigned 64-bit integer value with found second-order moment xy of given object.
[out]syy- a reference to unsigned 64-bit integer value with found second-order moment yy of given object.

◆ ValueSum()

void ValueSum ( const View< A > &  src,
uint64_t &  sum 
)

Gets sum of value of pixels for gray 8-bit image.

Note
This function is a C++ wrapper for function SimdValueSum.
Parameters
[in]src- an input image.
[out]sum- a result sum.

◆ SquareSum()

void SquareSum ( const View< A > &  src,
uint64_t &  sum 
)

Gets sum of squared value of pixels for gray 8-bit image.

Note
This function is a C++ wrapper for function SimdSquareSum.
Parameters
[in]src- an input image.
[out]sum- a result sum.

◆ ValueSquareSum()

void ValueSquareSum ( const View< A > &  src,
uint64_t &  valueSum,
uint64_t &  squareSum 
)

Gets sum and sum of squared value of pixels for gray 8-bit image.

Note
This function is a C++ wrapper for function SimdValueSquareSum.
Parameters
[in]src- an input image.
[out]valueSum- a result value sum.
[out]squareSum- a result square sum.

◆ ValueSquareSums()

void ValueSquareSums ( const View< A > &  src,
uint64_t *  valueSums,
uint64_t *  squareSums 
)

Gets image channels value sums and squared value sums for image. The image must have 8-bit depth per channel.

Note
This function is a C++ wrapper for function SimdValueSquareSums.
Parameters
[in]src- an input image.
[out]valueSums- the pointer to output buffer with value sums. Size of the buffer must be equal to count of image channels.
[out]squareSums- the pointer to output buffer with square sums. Size of the buffer must be equal to count of image channels.

◆ CorrelationSum()

void CorrelationSum ( const View< A > &  a,
const View< A > &  b,
uint64_t &  sum 
)

Gets sum of pixel correlation for two gray 8-bit images.

For all points:

sum += a[i]*b[i];

All images must have the same width and height and 8-bit gray pixel format.

Note
This function is a C++ wrapper for function SimdCorrelationSum.
Parameters
[in]a- a first image.
[in]b- a second image.
[out]sum- a result sum.