Simd Library Documentation.

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

Getting of statistic related with Sobel filters. More...

Functions

SIMD_API void SimdSobelDxAbsSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *sum)
 Calculates the sum of absolute horizontal Sobel derivatives. More...
 
SIMD_API void SimdSobelDyAbsSum (const uint8_t *src, size_t stride, size_t width, size_t height, uint64_t *sum)
 Calculates the sum of absolute vertical Sobel derivatives. More...
 
template<template< class > class A>
SIMD_INLINE void SobelDxAbsSum (const View< A > &src, uint64_t &sum)
 Calculates the sum of absolute horizontal Sobel derivatives. More...
 
template<template< class > class A>
SIMD_INLINE void SobelDyAbsSum (const View< A > &src, uint64_t &sum)
 Calculates the sum of absolute vertical Sobel derivatives. More...
 

Detailed Description

Getting of statistic related with Sobel filters.

Function Documentation

◆ SimdSobelDxAbsSum()

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

Calculates the sum of absolute horizontal Sobel derivatives.

Input image must have 8-bit gray format, and width must be greater than 1. At image borders the nearest valid source row or column is reused. The output sum is initialized to zero inside the function before accumulation.

For every point:

x0 = Max(x - 1, 0); x2 = Min(x + 1, width - 1);
y0 = Max(y - 1, 0); y2 = Min(y + 1, height - 1);
sum += Abs((src[x2, y0] + 2*src[x2, y] + src[x2, y2]) -
           (src[x0, y0] + 2*src[x0, y] + src[x0, y2]));
Note
This function has a C++ wrappers: Simd::SobelDxAbsSum(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 bytes.
[in]width- an image width.
[in]height- an image height.
[out]sum- a pointer to unsigned 64-bit integer value with result sum.

◆ SimdSobelDyAbsSum()

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

Calculates the sum of absolute vertical Sobel derivatives.

Input image must have 8-bit gray format, and width must be greater than 1. At image borders the nearest valid source row or column is reused. The output sum is initialized to zero inside the function before accumulation.

For every point:

x0 = Max(x - 1, 0); x2 = Min(x + 1, width - 1);
y0 = Max(y - 1, 0); y2 = Min(y + 1, height - 1);
sum += Abs((src[x0, y2] + 2*src[x, y2] + src[x2, y2]) -
           (src[x0, y0] + 2*src[x, y0] + src[x2, y0]));
Note
This function has a C++ wrappers: Simd::SobelDyAbsSum(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 bytes.
[in]width- an image width.
[in]height- an image height.
[out]sum- a pointer to unsigned 64-bit integer value with result sum.

◆ SobelDxAbsSum()

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

Calculates the sum of absolute horizontal Sobel derivatives.

Input image must have 8-bit gray format, and width must be greater than 1. At image borders the nearest valid source row or column is reused. The output sum is initialized to zero inside the function before accumulation.

For every point:

x0 = Max(x - 1, 0); x2 = Min(x + 1, width - 1);
y0 = Max(y - 1, 0); y2 = Min(y + 1, height - 1);
sum += Abs((src[x2, y0] + 2*src[x2, y] + src[x2, y2]) -
           (src[x0, y0] + 2*src[x0, y] + src[x0, y2]));
Note
This function is a C++ wrapper for function SimdSobelDxAbsSum.
Parameters
[in]src- an input 8-bit gray image.
[out]sum- an unsigned 64-bit integer value with result sum.

◆ SobelDyAbsSum()

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

Calculates the sum of absolute vertical Sobel derivatives.

Input image must have 8-bit gray format, and width must be greater than 1. At image borders the nearest valid source row or column is reused. The output sum is initialized to zero inside the function before accumulation.

For every point:

x0 = Max(x - 1, 0); x2 = Min(x + 1, width - 1);
y0 = Max(y - 1, 0); y2 = Min(y + 1, height - 1);
sum += Abs((src[x0, y2] + 2*src[x, y2] + src[x2, y2]) -
           (src[x0, y0] + 2*src[x, y0] + src[x2, y0]));
Note
This function is a C++ wrapper for function SimdSobelDyAbsSum.
Parameters
[in]src- an input 8-bit gray image.
[out]sum- an unsigned 64-bit integer value with result sum.